ファイルを読み込みたい(RNTupleReader::Open)
1auto reader = ROOT::RNTupleReader::Open("events", "output.root");
RNTupleReader::Open()でNTupleを読み込みます。
第一引数はRNTupleの名前、第二引数は入力ファイル名です。
データを読み込みたい(RNTupleReader::GetView)
1void macro() {
2 // Open RNTupleReader
3 auto reader = ROOT::RNTupleReader::Open("output.root");
4
5 // Get field views
6 auto view_event_id = reader->GetView<int>("event_id");
7 auto view_energy = reader->GetView<float>("energy");
8
9 // Loop over entries
10 for (auto entryIndex : *reader) {
11 int event_id = view_event_id[entryIndex];
12 float energy = view_energy[entryIndex];
13
14 // Process data...
15 std::cout << "Event ID: " << event_id << ", Energy: " << energy << std::endl;
16 }
17}
RNTupleReader::GetView<T>()はカラム単位の遅延ロードをするためのメソッドです。
Tにフィールドのデータ型を指定し、引数にフィールド名を文字列で指定します。
戻り値は、指定したフィールドのビュー(RNTupleView<T>)です。
イベントループは、RNTupleReader自体をイテレーターとして呼び出します。
ループ内で、view_event_id[entryIndex]のように、ビューからエントリーごとに値を取得できます。
注釈
GetViewしなかったカラムは、アクセスの対象外となります。
これはTTree::SetBranchStatusのような機能に相当します。