Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
df016_vecOps.C File Reference

Detailed Description

View in nbviewer Open in SWAN
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.

using namespace ROOT;
{
// We re-create a set of points in a square.
// This is a technical detail, just to create a dataset to play with!
auto unifGen = [](double) { return gRandom->Uniform(-1.0, 1.0); };
auto vGen = [&](int len) {
std::transform(v.begin(), v.end(), v.begin(), unifGen);
return v;
};
RDataFrame d(1024);
auto d0 = d.Define("len", []() { return (int)gRandom->Uniform(0, 16); })
.Define("x", vGen, {"len"})
.Define("y", vGen, {"len"});
// Now we have in our hands d, a RDataFrame with two columns, x and y, which
// hold collections of coordinates. The sizes of these collections vary.
// Let's now define radii from the x and y coordinates. We'll do it treating
// the collections stored in the columns without looping on the individual elements.
auto d1 = d0.Define("r", "sqrt(x*x + y*y)");
// Now we want to plot 2 quarters of a ring with radii .5 and 1.
// Note how the cuts are performed on RVecs, comparing them with integers and
// among themselves.
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");
auto cring = new TCanvas();
ring_h->DrawCopy("Colz");
return 0;
}
#define d(i)
Definition RSha256.hxx:102
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 UChar_t len
R__EXTERN TRandom * gRandom
Definition TRandom.h:62
ROOT's RDataFrame offers a modern, high-level interface for analysis of data stored in TTree ,...
The Canvas class.
Definition TCanvas.h:23
virtual Double_t Uniform(Double_t x1=1)
Returns a uniform deviate on the interval (0, x1).
Definition TRandom.cxx:682
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.
Date
February 2018
Author
Danilo Piparo (CERN)

Definition in file df016_vecOps.C.