Process collections in RDataFrame with the help of RVec.
This tutorial shows the potential of the VecOps approach for treating collections stored in datasets, a situation very common in HEP data analysis.
int df016_vecOps()
{
auto unifGen = [](
double) {
return gRandom->Uniform(-1.0, 1.0); };
auto vGen = [&](int len) {
std::transform(
v.begin(),
v.end(),
v.begin(), unifGen);
};
auto d0 =
d.Define(
"len", []() {
return (
int)
gRandom->Uniform(0, 16); })
.Define("x", vGen, {"len"})
.Define("y", vGen, {"len"});
auto d1 = d0.Define("r", "sqrt(x*x + y*y)");
auto ring_h = d1.Define("rInFig", "r > .5 && r < 1 && x*y < 0")
.Define("yFig", "y[rInFig]")
.Define("xFig", "x[rInFig]")
.Histo2D({"fig", "Two quarters of a ring", 64, -1.1, 1.1, 64, -1.1, 1.1}, "xFig", "yFig");
ring_h->DrawCopy("Colz");
return 0;
}
ROOT's RDataFrame offers a modern, high-level interface for analysis of data stored in TTree ,...
ROOT::VecOps::RVec< double > RVecD
- Date
- February 2018
- Author
- Danilo Piparo (CERN)
Definition in file df016_vecOps.C.