Logo ROOT  
Reference Guide
No Matches
df023_aggregate.C File Reference

Detailed Description

View in nbviewer Open in SWAN
Use the Aggregate action to specify arbitrary data aggregations.

This tutorial shows how to use the Aggregate action to evaluate the product of all the elements of a column. This operation may be performed using a Reduce action, however aggregate is used for the sake of the tutorial

void df023_aggregate()
// Column to be aggregated
const std::string columnName = "x";
auto rdf = ROOT::RDataFrame(5);
auto d = rdf.Define(columnName, "rdfentry_ + 1.");
// Aggregator function. It receives an accumulator (acc) and a column value (x). The variable acc is shared among the
// calls, so the function has to specify how the value has to be aggregated in the accumulator.
auto aggregator = [](double acc, double x) { return acc * x; };
// If multithread is enabled, the aggregator function will be called by more threads and will produce a vector of
// partial accumulators. The merger function performs the final aggregation of these partial results.
auto merger = [](std::vector<double> &accumulators) {
auto size = accumulators.size();
for (int i = 1; i < size; ++i) {
accumulators[0] *= accumulators[i];
// The accumulator is initialized at this value by every thread.
double initValue = 1.;
// Multiplies all elements of the column "x"
auto result = d.Aggregate(aggregator, merger, columnName, initValue);
std::cout << *result << std::endl;
#define d(i)
Definition RSha256.hxx:102
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
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 result
ROOT's RDataFrame offers a modern, high-level interface for analysis of data stored in TTree ,...
Double_t x[n]
Definition legend1.C:17
void EnableImplicitMT(UInt_t numthreads=0)
Enable ROOT's implicit multi-threading for all objects and methods that provide an internal paralleli...
Definition TROOT.cxx:538
July 2018
Enrico Guiraud, Danilo Piparo (CERN), Massimo Tumolo (Politecnico di Torino)

Definition in file df023_aggregate.C.