Dear ROOT experts,
I’m trying to use RDataFrame in python to do nTuple processing. Whilst trying the ROOT::RDF::AsRNode helper in Python with the following code
import xgboost as xgb
import ROOT as r
import os
r.gInterpreter.Declare("""
ROOT::RDF::RNode OATransformation(ROOT::RDF::RNode dframe) {
auto openingAngle = [](double px1, double py1, double pz1, double px2, double py2, double pz2){ return acos((px1*px2 + py1*py2 + pz1*pz2)/sqrt((px1*px1 + py1*py1 + pz1*pz1)*(px2*px2 + py2*py2 + pz2*pz2))); };
return dframe.Define("H1H2_OA", openingAngle, {"H1_PX", "H1_PY", "H1_PZ", "H2_PX", "H2_PY", "H2_PZ"})
.Define("H2H3_OA", openingAngle, {"H2_PX", "H2_PY", "H2_PZ", "H3_PX", "H3_PY", "H3_PZ"})
.Define("H3H1_OA", openingAngle, {"H3_PX", "H3_PY", "H3_PZ", "H1_PX", "H1_PY", "H1_PZ"})
.Define("H1muminus_OA", openingAngle, {"H1_PX", "H1_PY", "H1_PZ", "muminus_PX", "muminus_PY", "muminus_PZ"})
.Define("H2muminus_OA", openingAngle, {"H2_PX", "H2_PY", "H2_PZ", "muminus_PX", "muminus_PY", "muminus_PZ"})
.Define("H3muminus_OA", openingAngle, {"H3_PX", "H3_PY", "H3_PZ", "muminus_PX", "muminus_PY", "muminus_PZ"})
.Define("H1muplus_OA", openingAngle, {"H1_PX", "H1_PY", "H1_PZ", "muplus_PX", "muplus_PY", "muplus_PZ"})
.Define("H2muplus_OA", openingAngle, {"H2_PX", "H2_PY", "H2_PZ", "muplus_PX", "muplus_PY", "muplus_PZ"})
.Define("H3muplus_OA", openingAngle, {"H3_PX", "H3_PY", "H3_PZ", "muplus_PX", "muplus_PY", "muplus_PZ"})
.Define("mumu_OA", openingAngle, {"muminus_PX", "muminus_PY", "muminus_PZ", "muplus_PX", "muplus_PY", "muplus_PZ"});
}
""")
I get the following error instead
input_line_35:2:18: error: redefinition of 'OATransformation'
ROOT::RDF::RNode OATransformation(ROOT::RDF::RNode dframe) {
^
input_line_34:2:18: note: previous definition is here
ROOT::RDF::RNode OATransformation(ROOT::RDF::RNode dframe) {
Thanks for your help.
My setup:
ROOT v6.24.00
Ubuntu 20.04
gcc 10.3.0
ROOT built from source on local setup