質問

私は、私が前記ルートファイルから分岐とプロットヒストグラムなどを抽出することができるルートファイルにロードするコードを持っています。コードは次のようになります:

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つのファイルにロードしてそのファイルからプロットを作るだけで、ファインでDANDYが機能します。ただし、nファイルに読み込んでも同じ操作をしたいと思います。より具体的には、ロードしたいすべてのルートファイルで埋められたディレクトリがある場合は、そのディレクトリから各ファイルをロードするプログラムを作成できます。どんな助けにも感謝されます。

役に立ちましたか?

解決

DATA.ADD(...)の繰り返し呼び出しを使用して複数のファイルをロードします。

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

Data.Add("fileN.root");
.

それからあなたは電話するべきです:

Data.GetEntries();
. TCHAINを初期化する

。その後、ブランチアドレスなどを設定します。 あなたが電話するとき:

TChain Data("clusters");
.

パラメータ「クラスタ」はTツリー名で、追加するすべてのファイルで同じである必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top