データフレームしたい(RDataFrame

 1#include "ROOT/RDataFrame.hxx"
 2
 3ROOT::RDataFrame df("treeName", "file.root");
 4
 5// 条件でフィルタリング
 6auto filtered_df = df.Filter("x > 0 && y < 100");
 7
 8// ヒストグラムを作成
 9auto hist = filtered_df.Histo1D(
10    {"hist", "Distribution", 100, 0, 10},
11    "x"
12);

RDataFrameは、ROOTにおいてpandasのような使い勝手を目指した高レベルAPIです。 2017年ころに導入され、最新のROOTで推奨されているデータ分析フレームワークです。

 1import ROOT
 2
 3df = ROOT.RDataFrame("treeName", "file.root")
 4
 5# 条件でフィルタリング
 6filtered_df = df.Filter("x > 0 && y < 100")
 7
 8# ヒストグラムを作成
 9hist = filtered_df.Histo1D(
10    ("hist", "Distribution", 100, 0, 10),
11    "x"
12)

ROOTファイルを読み込みたい(単一ファイル)

1#include "ROOT/RDataFrame.hxx"
2
3ROOT::RDataFrame df("treeName", "file.root");

ROOTファイルのTTreeをRDataFrameで読み込みます。

複数のROOTファイルを読み込みたい

1#include "ROOT/RDataFrame.hxx"
2
3ROOT::RDataFrame df(
4    "treeName",
5    {"file1.root", "file2.root", "file3.root"}
6);

複数のROOTファイルを同時に処理できます。 内部的にはTChainが使用されています。

1import ROOT
2
3df = ROOT.RDataFrame(
4    "treeName",
5    ["file1.root", "file2.root", "file3.root"]
6)

複数ファイルの処理も同じインターフェイスで対応できます。

背景情報

注釈

ROOTは1995年にリリースされたときからTTreeというデータ構造を軸にしていました。 しかし、LHC Run4の開始に合わせて、RDataFrameRNTupleといった よりモダンなフレームワークへと置き換えるというロードマップを描いています。

RDataFrameは従来のTTreeに比べて:

  • 直感的なAPI設計

  • より効率的なメモリ管理

  • 並列処理の容易さ

を特徴としています。

リファレンス