イベントを取得したい(TTree::GetEntry

1// 100番目のイベント情報を取得
2tree->GetEntry(100);

TTree::GetEntryメソッドで \(i\) 番目のイベントを取得できます。 イベントはブランチに設定されたアドレスの変数に格納されます。

 1void macro() {
 2    TFile *file = TFile::Open("data.root");
 3    TTree *tree = (TTree *)file->Get("tree");
 4
 5    Int_t event_id;
 6    Float_t energy;
 7    tree->SetBranchAddress("event_id", &event_id);
 8    tree->SetBranchAddress("energy", &energy);
 9
10    long long n_entries = tree->GetEntries();
11    std::cout << "エントリー数: " << n_entries << std::endl;
12
13    for (long long i = 0; i < n_entries; ++i) {
14        tree->GetEntry(i);
15        // エントリーiのデータにアクセス
16        std::cout << "Entry " << i << ": event_id=" << event_id << ", energy=" << energy << std::endl;
17    }
18    file->Close();
19}

\(i\) 番目のイベントを単一で取得することもできますが、 通常は全イベント数(TTree::GetEntries)に対するループの中で、イベント情報を取得・選択して利用します。

参考リンク