Logo ROOT  
Reference Guide
No Matches
df025_RNode.C File Reference

Detailed Description

View in nbviewer Open in SWAN Manipulate RDF objects in functions, loops and conditional branches.

Each RDataFrame object has its own type. It helps with performance, but sometimes it gets in the way of writing simple code that manages RDF objects. Luckily, every RDF object can be converted to the generic RNode type. This tutorial shows how to take advantage of RNode to easily manipulate RDataFrames.

/// A generic function that takes an RDF object and applies a string filter
ROOT::RDF::RNode AddFilter(ROOT::RDF::RNode node, string_view filterStr)
return node.Filter(filterStr);
void df025_RNode()
// Using the generic AddFilter helper function defined above: RNode in, RNode out
auto f1 = AddFilter(df, "rdfentry_ > 0");
auto f2 = f1.Filter([](ULong64_t e) { return e > 1; }, {"rdfentry_"});
// Conditionally applying a filter is simple with ROOT::RDF::RNode
bool someCondition = true;
auto maybe_filtered = ROOT::RDF::RNode(f2);
if (someCondition)
maybe_filtered = maybe_filtered.Filter("rdfentry_ > 3");
// Adding new columns with Define in a loop is simple thanks to ROOT::RDF::RNode
auto with_columns = ROOT::RDF::RNode(maybe_filtered);
for (auto i = 0; i < 3; ++i)
with_columns = with_columns.Define("x" + std::to_string(i), "42");
// RNodes can be used exactly like any other RDF object
std::cout << "Entries passing the selection: " << with_columns.Count().GetValue() << std::endl;
#define e(i)
Definition RSha256.hxx:103
unsigned long long ULong64_t
Definition RtypesCore.h:74
The public interface to the RDataFrame federation of classes.
RInterface< RDFDetail::RFilter< F, Proxied >, DS_t > Filter(F f, const ColumnNames_t &columns={}, std::string_view name="")
Append a filter to the call graph.
ROOT's RDataFrame offers a high level interface for analyses of data stored in TTrees,...
TF1 * f1
Definition legend1.C:11
RInterface<::ROOT::Detail::RDF::RNodeBase, void > RNode
Entries passing the selection: 4
June 2020
Danilo Piparo, Enrico Guiraud (CERN)

Definition in file df025_RNode.C.