ファイルを読み込みたい(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のような機能に相当します。