0

ROOTファイルからブランチを抽出し、ヒストグラムなどをプロットできるROOTファイルにロードするコードがいくつかあります。コードは次のようになります。

void MakePlots(string filename) {
    TChain Data("clusters");
    Data.Add(filename.c_str());

    Double_t rr, rx, ry, rz, rrho, rtheta, rphi;

    Data.SetBranchAddress("laben.recon.r", &rr);
    Data.SetBranchAddress("laben.recon.rho", &rrho);
    Data.SetBranchAddress("laben.recon.latitude", &rtheta);
    Data.SetBranchAddress("laben.recon.longitude", &rphi);
    Data.SetBranchAddress("laben.recon.z", &rz);
    Data.SetBranchAddress("laben.recon.y", &ry);
    Data.SetBranchAddress("laben.recon.x", &rx);

    int NumEvents = Data.GetEntries();

    for(int event = 0; event < NumEvents; event++) {
        if(event % 1000 == 0) cout << "Processing Event " << event << endl;
        Data.GetEvent(event);
    }
}

これは、1 つのファイルを読み込んでそのファイルからプロットを作成するだけでうまく機能します。ただし、n個のファイルをロードして同じ操作を行いたいです。より具体的には、ロードしたいすべての ROOT ファイルで満たされたディレクトリがある場合、そのディレクトリから各ファイルをロードするプログラムを作成できますか。どんな助けでも大歓迎です。

4

1 に答える 1

0

Data.Add(...) を繰り返し呼び出して、複数のファイルをロードします。

Data.Add("file1.root");
Data.Add("file2.root");
...

Data.Add("fileN.root");

次に、次のように呼び出します。

Data.GetEntries();

TChain を初期化します。その後、支店の住所などを設定します。 注: 電話をかける場合:

TChain Data("clusters");

パラメータ「clusters」は TTree 名であり、追加するすべてのファイルで同じでなければなりません。

于 2014-07-30T07:48:13.250 に答える