This tutorial illustrates the basic features of the RDataFrame class, a utility which allows to interact with data stored in TTrees following a functional-chain like approach.
import ROOT
def fill_tree(treeName, fileName):
"""A simple helper function to fill a test tree: this makes the example stand-alone."""
df.Define("b1", "static_cast<double>(rdfentry_)")\
.Define("b2", "static_cast<int>(rdfentry_ * rdfentry_)").Snapshot(treeName, fileName)
fileName = "df001_introduction_py.root"
treeName = "myTree"
fill_tree(treeName, fileName)
cutb1 = 'b1 < 5.'
cutb1b2 = 'b2 % 2 && b1 < 4.'
entries1 = d.Filter(cutb1) \
.Filter(cutb1b2) \
.Count();
print(
'{} entries passed all filters'.
format(entries1.GetValue()))
entries2 = d.Filter("b1 < 5.").Count();
print(
'{} entries passed all filters'.
format(entries2.GetValue()))
b1b2_cut = d.Filter(cutb1b2)
minVal = b1b2_cut.Min('b1')
maxVal = b1b2_cut.Max('b1')
meanVal = b1b2_cut.Mean('b1')
nonDefmeanVal = b1b2_cut.Mean("b2")
print(
'The mean is always included between the min and the max: {0} <= {1} <= {2}'.
format(minVal.GetValue(), meanVal.GetValue(), maxVal.GetValue()))
hist = d.Filter(cutb1).Histo1D('b1')
print(
'Filled h {0} times, mean: {1}'.
format(hist.GetEntries(), hist.GetMean()))
cutb1_result = d.Filter(cutb1);
cutb1b2_result = d.Filter(cutb1b2);
cutb1_cutb1b2_result = cutb1_result.Filter(cutb1b2)
evts_cutb1_result = cutb1_result.Count()
evts_cutb1b2_result = cutb1b2_result.Count()
evts_cutb1_cutb1b2_result = cutb1_cutb1b2_result.Count()
print(
'Events passing cutb1: {}'.
format(evts_cutb1_result.GetValue()))
print(
'Events passing cutb1b2: {}'.
format(evts_cutb1b2_result.GetValue()))
print(
'Events passing both: {}'.
format(evts_cutb1_cutb1b2_result.GetValue()))
entries_sum = d.Define('sum', 'b2 + b1') \
.Filter('sum > 4.2') \
.Count()
print(entries_sum.GetValue())
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t format
ROOT's RDataFrame offers a modern, high-level interface for analysis of data stored in TTree ,...
2 entries passed all filters
5 entries passed all filters
The mean is always included between the min and the max: 1.0 <= 2.0 <= 3.0
Filled h 5.0 times, mean: 2.0
Events passing cutb1: 5
Events passing cutb1b2: 2
Events passing both: 2
8