イベントを追加したい(TTree::Fill)
1#include <TTree.h>
2
3TTree *tree = new TTree("tree", "Event data");
4Int_t value = 0;
5tree->Branch("value", &value, "value/I");
6
7// 単一のイベントを追加
8tree->Fill();
9
10// ループでイベントを追加
11for (int i = 0; i < 100; i++) {
12 value = i;
13 tree->Fill();
14}
TTree::Fillメソッドでブランチに設定した変数の現在値をイベントレコードとして追加します。
ブランチが複数ある場合、すべてのブランチの値が同時に1つのエントリとして記録されます。
1import ROOT
2
3tree = ROOT.TTree("tree", "Event data")
4value = ROOT.std.vector('int')()
5tree.Branch("value", value)
6
7# 単一のイベントを追加
8tree.Fill()
9
10# ループでイベントを追加
11for i in range(100):
12 value.clear()
13 value.push_back(i)
14 tree.Fill()
メソッドのシグネチャ
1Int_t Fill()
引数と戻り値
戻り値:
ツリーに追加されたエントリ数(通常は正の値)
単一のイベントを追加したい(Fill)
1#include <TTree.h>
2
3TTree *tree = new TTree("tree", "simple event");
4Int_t count = 0;
5tree->Branch("count", &count, "count/I");
6
7count = 42;
8tree->Fill();
ブランチに値を設定してからFill()を呼び出します。
1回の呼び出しで1つのイベントレコードが追加されます。
複数のブランチにデータを追加したい(Fill)
1#include <TTree.h>
2
3TTree *tree = new TTree("tree", "multi-branch event");
4Int_t run = 0;
5Float_t energy = 0.0;
6tree->Branch("run", &run, "run/I");
7tree->Branch("energy", &energy, "energy/F");
8
9// イベントループ
10for (int evt = 0; evt < 1000; evt++) {
11 run = 2025;
12 energy = 100.5 + evt * 0.1;
13 tree->Fill();
14}
複数のブランチを定義すると、Fill()は全ブランチの現在値を同時に記録します。
各ブランチのデータが1つのエントリとして関連付けられ、あとでデータ分析時に対応するデータにアクセスできます。
関連メソッド
Branch - ブランチを作成
Write - ツリーをファイルに保存
GetEntries - ツリーのエントリ数を取得