11#ifndef ROOT_RLOOPMANAGER 
   12#define ROOT_RLOOPMANAGER 
   26#include <unordered_map> 
   48namespace GraphDrawing {
 
  124   std::shared_ptr<TTree> 
fTree{
nullptr};
 
  129   std::unordered_map<std::string, ROOT::RDF::Experimental::RSample *> 
fSampleMap;
 
  131   std::vector<ROOT::RDF::Experimental::RSample> 
fSamples;
 
  171   void UpdateSampleInfo(
unsigned int slot, 
const std::pair<ULong64_t, ULong64_t> &range);
 
  185   void Run(
bool jit = 
true);
 
  209   void ToJitExec(
const std::string &) 
const;
 
  214                                   const std::type_info &ti);
 
  216                                          std::unique_ptr<RColumnReaderBase> &&reader, 
const std::type_info &ti);
 
  229   std::vector<RDFInternal::RActionBase *> 
GetAllActions() 
const;
 
  231   std::shared_ptr<ROOT::Internal::RDF::GraphDrawing::GraphNode>
 
  232   GetGraph(std::unordered_map<
void *, std::shared_ptr<ROOT::Internal::RDF::GraphDrawing::GraphNode>> &visitedMap) 
final;
 
unsigned long long ULong64_t
 
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 r
 
The head node of a RDF computation graph.
 
void StopProcessing() final
 
void UpdateSampleInfo(unsigned int slot, const std::pair< ULong64_t, ULong64_t > &range)
 
unsigned int fNRuns
Number of event loops run.
 
bool CheckFilters(unsigned int, Long64_t) final
 
void EvalChildrenCounts()
Trigger counting of number of children nodes for each node of the functional graph.
 
void CleanUpNodes()
Perform clean-up operations. To be called at the end of each event loop.
 
void RunEmptySource()
Run event loop with no source files, in sequence.
 
void Report(ROOT::RDF::RCutFlowReport &rep) const final
Call FillReport on all booked filters.
 
void AddSampleCallback(void *nodePtr, ROOT::RDF::SampleCallback_t &&callback)
 
std::vector< RFilterBase * > fBookedNamedFilters
Contains a subset of fBookedFilters, i.e. only the named filters.
 
void RunEmptySourceMT()
Run event loop with no source files, in parallel.
 
ULong64_t GetNEmptyEntries() const
 
std::unordered_map< std::string, ROOT::RDF::Experimental::RSample * > fSampleMap
Keys are fname + "/" + treename as RSampleInfo::fID; Values are pointers to the corresponding sample.
 
std::shared_ptr< ROOT::Internal::RDF::GraphDrawing::GraphNode > GetGraph(std::unordered_map< void *, std::shared_ptr< ROOT::Internal::RDF::GraphDrawing::GraphNode > > &visitedMap) final
 
RLoopManager & operator=(const RLoopManager &)=delete
 
void IncrChildrenCount() final
 
const ColumnNames_t & GetBranchNames()
Return all valid TTree::Branch names (caching results for subsequent calls).
 
void ToJitExec(const std::string &) const
 
unsigned int GetNRuns() const
 
std::vector< RDFInternal::RActionBase * > GetAllActions() const
Return all actions, either booked or already run.
 
std::vector< ROOT::RDF::RSampleInfo > fSampleInfos
 
::TDirectory * GetDirectory() const
 
bool fMustRunNamedFilters
 
void SetTree(std::shared_ptr< TTree > tree)
 
std::shared_ptr< TTree > fTree
Shared pointer to the input TTree.
 
std::vector< std::unique_ptr< TTree > > fFriends
Friends of the fTree. Only used if we constructed fTree ourselves.
 
const ULong64_t fNEmptyEntries
 
std::vector< RDefineBase * > fBookedDefines
 
void RunTreeReader()
Run event loop over one or multiple ROOT files, in sequence.
 
ROOT::Internal::TreeUtils::RNoCleanupNotifier fNoCleanupNotifier
 
std::vector< RDFInternal::RActionBase * > fRunActions
Non-owning pointers to actions already run.
 
RColumnReaderBase * GetDatasetColumnReader(unsigned int slot, const std::string &col, const std::type_info &ti) const
 
void AddFilterName(std::vector< std::string > &) final
End of recursive chain of calls, does nothing.
 
std::vector< RRangeBase * > fBookedRanges
 
std::vector< ROOT::RDF::Experimental::RSample > fSamples
Samples need to survive throughout the whole event loop, hence stored as an attribute.
 
std::vector< std::string > ColumnNames_t
 
void RunAndCheckFilters(unsigned int slot, Long64_t entry)
Execute actions and make sure named filters are called for each event.
 
std::vector< RFilterBase * > fBookedFilters
 
void Run(bool jit=true)
Start the event loop with a different mechanism depending on IMT/no IMT, data source/no data source.
 
std::unordered_map< void *, ROOT::RDF::SampleCallback_t > fSampleCallbacks
Registered callbacks to call at the beginning of each "data block".
 
std::vector< RDFInternal::RActionBase * > fBookedActions
Non-owning pointers to actions to be run.
 
std::vector< RDFInternal::RCallback > fCallbacks
Registered callbacks.
 
RColumnReaderBase * AddTreeColumnReader(unsigned int slot, const std::string &col, std::unique_ptr< RColumnReaderBase > &&reader, const std::type_info &ti)
Register a new RTreeColumnReader with this RLoopManager.
 
const ELoopType fLoopType
The kind of event loop that is going to be run (e.g. on ROOT files, on no files)
 
void AddDataSourceColumnReaders(const std::string &col, std::vector< std::unique_ptr< RColumnReaderBase > > &&readers, const std::type_info &ti)
 
void SetupSampleCallbacks(TTreeReader *r, unsigned int slot)
 
ColumnNames_t fValidBranchNames
Cache of the tree/chain branch names. Never access directy, always use GetBranchNames().
 
void CleanUpTask(TTreeReader *r, unsigned int slot)
Perform clean-up operations. To be called at the end of each task execution.
 
std::vector< std::unordered_map< std::string, std::unique_ptr< RColumnReaderBase > > > fDatasetColumnReaders
Readers for TTree/RDataSource columns (one per slot), shared by all nodes in the computation graph.
 
const unsigned int fNSlots
 
void Register(RDFInternal::RActionBase *actionPtr)
 
const ColumnNames_t & GetDefaultColumnNames() const
Return the list of default columns – empty if none was provided when constructing the RDataFrame.
 
std::vector< RDFInternal::RVariationBase * > fBookedVariations
 
std::vector< RNodeBase * > GetGraphEdges() const
Return all graph edges known to RLoopManager This includes Filters and Ranges but not Defines.
 
RDataSource * GetDataSource() const
 
unsigned int GetNSlots() const
 
void RunDataSourceMT()
Run event loop over data accessed through a DataSource, in parallel.
 
void PartialReport(ROOT::RDF::RCutFlowReport &) const final
End of recursive chain of calls, does nothing.
 
std::vector< std::string > GetFiltersNames()
For each booked filter, returns either the name or "Unnamed Filter".
 
RLoopManager(const RLoopManager &)=delete
 
const std::unique_ptr< RDataSource > fDataSource
Owning pointer to a data-source object. Null if no data-source.
 
RDFInternal::RNewSampleNotifier fNewSampleNotifier
 
const ColumnNames_t fDefaultColumns
 
void InitNodeSlots(TTreeReader *r, unsigned int slot)
Build TTreeReaderValues for all nodes This method loops over all filters, actions and other booked ob...
 
std::vector< RDFInternal::ROneTimeCallback > fCallbacksOnce
Registered callbacks to invoke just once before running the loop.
 
void RegisterCallback(ULong64_t everyNEvents, std::function< void(unsigned int)> &&f)
 
void RunDataSource()
Run event loop over data accessed through a DataSource, in sequence.
 
void Jit()
Add RDF nodes that require just-in-time compilation to the computation graph.
 
void RunTreeProcessorMT()
Run event loop over one or multiple ROOT files, in parallel.
 
void Deregister(RDFInternal::RActionBase *actionPtr)
 
void InitNodes()
Initialize all nodes of the functional graph before running the event loop.
 
RLoopManager * GetLoopManagerUnchecked() final
 
bool HasDataSourceColumnReaders(const std::string &col, const std::type_info &ti) const
Return true if AddDataSourceColumnReaders was called for column name col.
 
Base class for non-leaf nodes of the computational graph.
 
unsigned int fNStopsReceived
Number of times that a children node signaled to stop processing entries.
 
unsigned int fNChildren
Number of nodes of the functional graph hanging from this object.
 
Helper class that provides the operation graph nodes.
 
RCallback(ULong64_t everyN, Callback_t &&f, unsigned int nSlots)
 
std::vector< ULong64_t > fCounters
 
void operator()(unsigned int slot)
 
void operator()(unsigned int slot)
 
std::vector< int > fHasBeenCalled
 
ROneTimeCallback(Callback_t &&f, unsigned int nSlots)
 
This type includes all parts of RVariation that do not depend on the callable signature.
 
A dataset specification for RDataFrame.
 
RDataSource defines an API that RDataFrame can use to read arbitrary data formats.
 
Describe directory structure in memory.
 
A simple, robust and fast interface to read values from ROOT columnar datasets such as TTree,...
 
A TTree represents a columnar dataset.
 
std::vector< std::string > GetBranchNames(TTree &t, bool allowDuplicates=true)
Get all the branches names, including the ones of the friend trees.
 
std::function< void(unsigned int)> Callback_t
 
std::function< void(unsigned int, const ROOT::RDF::RSampleInfo &)> SampleCallback_t
The type of a data-block callback, registered with a RDataFrame computation graph via e....
 
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.
 
A RAII object that calls RLoopManager::CleanUpTask at destruction.