イベントを記録したい(TTree::Fill)
1void macro() {
2 TFile *file = TFile::Open("output.root", "recreate");
3 TTree *tree = new TTree("events", "Event data");
4
5 // ブランチ変数を定義する
6 int run{0}; // イベント番号
7 double energy{0.0}; // エネルギー
8 int n_hits{0}; // ヒット数
9
10 // ブランチを作成する
11 tree->Branch("run", &run, "run/I");
12 tree->Branch("energy", &energy, "energy/D");
13 tree->Branch("n_hits", &n_hits, "n_hits/I");
14
15 // イベントループ
16 for (int i = 0; i < 1000; i++) {
17 run = i;
18 energy = 1.0 + i * 0.01;
19 n_hits = i % 10;
20 // エントリーを記録する
21 tree->Fill();
22 }
23 // ファイルに書き込む
24 tree->Write();
25 file->Close();
26}
TTree::Fillは、イベント(エントリー)をTTreeに追加するメソッドです。
イベントループの中で、ブランチ変数に値を設定した後にFill()を呼び出すことで、その値を1つのエントリーとして記録できます。
複数のブランチがある場合、すべてのブランチの値が同時に1つのエントリーとして記録されます。