Usage of RResultPtr.
This tutorial illustrates what is the difference between lazy and immediate results and how to use either of them in RDataFrame. "Lazy" or deferred results are only produced once they are accessed. This allows for declaring multiple desired results, and producing them in a single run of the event loop.
#include <iostream>
return rdf.
Histo1D({
"Histo2",
"Histogram running later", 10, 0, 20}, {
"x"});
}
auto histo = rdf.
Histo1D({
"Histo2",
"Histogram running later", 10, 0, 20}, {
"x"});
return histo.GetSharedPtr();
}
void df039_RResultPtr_basics()
{
auto rdf = bare_rdf.
Define(
"x", [&](
unsigned long long entry) ->
unsigned int {
if (entry == 0) std::cout << "Event loop is running\n";
return entry;
}, {"rdfentry_"});
std::cout << "Declared histo1\n";
std::cout << "Declared histo2\n";
std::shared_ptr<TH1D> histo3 = histoNow(rNode);
std::cout << "Declared histo3\n";
}
RResultPtr<::TH1D > Histo1D(const TH1DModel &model={"", "", 128u, 0., 0.}, std::string_view vName="")
Fill and return a one-dimensional histogram with the values of a column (lazy action).
RInterface< Proxied > Define(std::string_view name, F expression, const ColumnNames_t &columns={})
Define a new column.
Smart pointer for the return type of actions.
ROOT's RDataFrame offers a modern, high-level interface for analysis of data stored in TTree ,...
RInterface<::ROOT::Detail::RDF::RNodeBase > RNode
RNode AsRNode(NodeType node)
Cast a RDataFrame node to the common type ROOT::RDF::RNode.
Declared histo1
Declared histo2
Event loop is running
Declared histo3
- Date
- 2025
- Author
- Stephan Hageboeck (CERN)
Definition in file df039_RResultPtr_basics.C.