1

データ分析ソフトウェア Root (CERN) 用のかなり大きなコードがあり、不正な実行を調べたい一連のデータがあります。私はそれらをすべて1つのディレクトリに持っていますが、このフォルダから一度に1つのファイルを取り出し、コードを実行し、結果のグラフを出力してから次のファイルを取り出すコードのセグメントを書きたい..など.マクロを使用して、このコードをそのまま実行します。そのマクロに何かを追加したいと思っています。私はプログラミングにやや初心者です。

gSystem->Load("AlgoCompSelector_C.so");
// make the chains
std::string filekey;
TChain tree1 = new TChain("tree");
filekey = std::string("data/run715604.EEmcTree_Part1.root");
tree1->Add( filekey.data() );
4

1 に答える 1

1

単一のルート マクロでこれを行うには、以下のコード スニペットのようなものを試すことができます。ここでは、ファイルを TChain に追加しますが、もちろん、必要TChain::Addなものに置き換えることができます。

int addfiles(TChain *ch, const char *dirname=".", const char *ext=".root")
{
   int added = 0;
   TSystemDirectory dir(dirname, dirname);
   TList *files = dir.GetListOfFiles();
   if (files) {
      TSystemFile *file;
      TString fname;
      TIter next(files);
      while ((file=(TSystemFile*)next())) {
         fname = file->GetName();
         if (!file->IsDirectory() && fname.EndsWith(ext)) {
         ch->Add(fname); // or call your function on this one file
         ++added;
         }
     }
   }
   return added;
}

(この root-talk 投稿から改作: http://root.cern.ch/phpBB3/viewtopic.php?f=3&t=13666 )

とは言っても、@ m0skit0 による、毎回小さなスクリプトを起動するという提案は、上記で提案したことを実行するよりも優れていると思います。ルートは気難しいので、小さいジョブの方が優れています。

于 2012-07-17T19:30:10.500 に答える