This tutorial shows how VecOps can be used to slim down the programming model typically adopted in HEP for analysis.
import ROOT
filename = ROOT.gROOT.GetTutorialDir().Data() + "/dataframe/df017_vecOpsHEP.root"
treename = "myDataset"
def WithPyROOT(filename):
from math import sqrt
f = ROOT.TFile(filename)
h = ROOT.TH1F("pt", "pt", 16, 0, 4)
for event in f.myDataset:
for E, px, py in zip(event.E, event.px, event.py):
if (E > 100):
h.Fill(
sqrt(px*px + py*py))
h.DrawCopy()
def WithRDataFrameVecOpsJit(treename, filename):
h = f.Define("good_pt", "sqrt(px*px + py*py)[E>100]")\
.Histo1D(("pt", "pt", 16, 0, 4), "good_pt")
h.DrawCopy()
c = ROOT.TCanvas()
c.Divide(2,1)
c.cd(1)
WithPyROOT(filename)
c.cd(2)
WithRDataFrameVecOpsJit(treename, filename)
ROOT's RDataFrame offers a high level interface for analyses of data stored in TTrees,...
- Date
- March 2018
- Author
- Danilo Piparo, Andre Vieira Silva
Definition in file df017_vecOpsHEP.py.