Logo ROOT  
Reference Guide
RLoopManager.hxx
Go to the documentation of this file.
1 // Author: Enrico Guiraud, Danilo Piparo CERN 03/2017
2 
3 /*************************************************************************
4  * Copyright (C) 1995-2018, Rene Brun and Fons Rademakers. *
5  * All rights reserved. *
6  * *
7  * For the licensing terms see $ROOTSYS/LICENSE. *
8  * For the list of contributors see $ROOTSYS/README/CREDITS. *
9  *************************************************************************/
10 
11 #ifndef ROOT_RLOOPMANAGER
12 #define ROOT_RLOOPMANAGER
13 
14 #include "ROOT/RDF/RNodeBase.hxx"
16 
17 #include <functional>
18 #include <map>
19 #include <memory>
20 #include <string>
21 #include <vector>
22 
23 // forward declarations
24 class TTree;
25 class TTreeReader;
26 class TDirectory;
27 
28 namespace ROOT {
29 namespace RDF {
30 class RCutFlowReport;
31 class RDataSource;
32 } // ns RDF
33 
34 namespace Internal {
35 namespace RDF {
36 std::vector<std::string> GetBranchNames(TTree &t, bool allowDuplicates = true);
37 
38 class RActionBase;
39 class GraphNode;
40 
41 namespace GraphDrawing {
42 class GraphCreatorHelper;
43 } // ns GraphDrawing
44 } // ns RDF
45 } // ns Internal
46 
47 namespace Detail {
48 namespace RDF {
50 
51 class RFilterBase;
52 class RRangeBase;
54 using ColumnNames_t = std::vector<std::string>;
55 
56 /// The head node of a RDF computation graph.
57 /// This class is responsible of running the event loop.
58 class RLoopManager : public RNodeBase {
60  using Callback_t = std::function<void(unsigned int)>;
61  class TCallback {
64  std::vector<ULong64_t> fCounters;
65 
66  public:
67  TCallback(ULong64_t everyN, Callback_t &&f, unsigned int nSlots)
68  : fFun(std::move(f)), fEveryN(everyN), fCounters(nSlots, 0ull)
69  {
70  }
71 
72  void operator()(unsigned int slot)
73  {
74  auto &c = fCounters[slot];
75  ++c;
76  if (c == fEveryN) {
77  c = 0ull;
78  fFun(slot);
79  }
80  }
81  };
82 
85  std::vector<int> fHasBeenCalled; // std::vector<bool> is thread-unsafe for our purposes (and generally evil)
86 
87  public:
88  TOneTimeCallback(Callback_t &&f, unsigned int nSlots) : fFun(std::move(f)), fHasBeenCalled(nSlots, 0) {}
89 
90  void operator()(unsigned int slot)
91  {
92  if (fHasBeenCalled[slot] == 1)
93  return;
94  fFun(slot);
95  fHasBeenCalled[slot] = 1;
96  }
97  };
98 
99  friend struct RCallCleanUpTask;
100 
101  std::vector<RDFInternal::RActionBase *> fBookedActions; ///< Non-owning pointers to actions to be run
102  std::vector<RDFInternal::RActionBase *> fRunActions; ///< Non-owning pointers to actions already run
103  std::vector<RFilterBase *> fBookedFilters;
104  std::vector<RFilterBase *> fBookedNamedFilters; ///< Contains a subset of fBookedFilters, i.e. only the named filters
105  std::vector<RRangeBase *> fBookedRanges;
106 
107  /// Shared pointer to the input TTree. It does not delete the pointee if the TTree/TChain was passed directly as an
108  /// argument to RDataFrame's ctor (in which case we let users retain ownership).
109  std::shared_ptr<TTree> fTree{nullptr};
112  const unsigned int fNSlots{1};
114  const ELoopType fLoopType; ///< The kind of event loop that is going to be run (e.g. on ROOT files, on no files)
115  const std::unique_ptr<RDataSource> fDataSource; ///< Owning pointer to a data-source object. Null if no data-source
116  std::map<std::string, std::string> fAliasColumnNameMap; ///< ColumnNameAlias-columnName pairs
117  std::vector<TCallback> fCallbacks; ///< Registered callbacks
118  std::vector<TOneTimeCallback> fCallbacksOnce; ///< Registered callbacks to invoke just once before running the loop
119  std::vector<Callback_t> fDataBlockCallbacks; ///< Registered callbacks to call at the beginning of each "data block"
121  unsigned int fNRuns{0}; ///< Number of event loops run
122 
123  /// Registry of per-slot value pointers for booked data-source columns
124  std::map<std::string, std::vector<void *>> fDSValuePtrMap;
125 
126  /// Cache of the tree/chain branch names. Never access directy, always use GetBranchNames().
128 
130  void RunEmptySourceMT();
131  void RunEmptySource();
132  void RunTreeProcessorMT();
133  void RunTreeReader();
134  void RunDataSourceMT();
135  void RunDataSource();
136  void RunAndCheckFilters(unsigned int slot, Long64_t entry);
137  void InitNodeSlots(TTreeReader *r, unsigned int slot);
138  void InitNodes();
139  void CleanUpNodes();
140  void CleanUpTask(TTreeReader *r, unsigned int slot);
141  void EvalChildrenCounts();
142  void SetupDataBlockCallbacks(TTreeReader *r, unsigned int slot);
143 
144 public:
145  RLoopManager(TTree *tree, const ColumnNames_t &defaultBranches);
146  RLoopManager(ULong64_t nEmptyEntries);
147  RLoopManager(std::unique_ptr<RDataSource> ds, const ColumnNames_t &defaultBranches);
148  RLoopManager(const RLoopManager &) = delete;
149  RLoopManager &operator=(const RLoopManager &) = delete;
150 
152  void Jit();
153  RLoopManager *GetLoopManagerUnchecked() final { return this; }
154  void Run();
155  const ColumnNames_t &GetDefaultColumnNames() const;
156  TTree *GetTree() const;
159  RDataSource *GetDataSource() const { return fDataSource.get(); }
160  void Book(RDFInternal::RActionBase *actionPtr);
161  void Deregister(RDFInternal::RActionBase *actionPtr);
162  void Book(RFilterBase *filterPtr);
163  void Deregister(RFilterBase *filterPtr);
164  void Book(RRangeBase *rangePtr);
165  void Deregister(RRangeBase *rangePtr);
166  bool CheckFilters(unsigned int, Long64_t) final;
167  unsigned int GetNSlots() const { return fNSlots; }
168  void Report(ROOT::RDF::RCutFlowReport &rep) const final;
169  /// End of recursive chain of calls, does nothing
171  void SetTree(const std::shared_ptr<TTree> &tree) { fTree = tree; }
172  void IncrChildrenCount() final { ++fNChildren; }
173  void StopProcessing() final { ++fNStopsReceived; }
174  void ToJitExec(const std::string &) const;
175  void AddColumnAlias(const std::string &alias, const std::string &colName) { fAliasColumnNameMap[alias] = colName; }
176  const std::map<std::string, std::string> &GetAliasMap() const { return fAliasColumnNameMap; }
177  void RegisterCallback(ULong64_t everyNEvents, std::function<void(unsigned int)> &&f);
178  unsigned int GetNRuns() const { return fNRuns; }
179  bool HasDSValuePtrs(const std::string &col) const;
180  const std::map<std::string, std::vector<void *>> &GetDSValuePtrs() const { return fDSValuePtrMap; }
181  void AddDSValuePtrs(const std::string &col, const std::vector<void *> ptrs);
182 
183  /// End of recursive chain of calls, does nothing
184  void AddFilterName(std::vector<std::string> &) {}
185  /// For each booked filter, returns either the name or "Unnamed Filter"
186  std::vector<std::string> GetFiltersNames();
187 
188  /// Return all graph edges known to RLoopManager
189  /// This includes Filters and Ranges but not Defines.
190  std::vector<RNodeBase *> GetGraphEdges() const;
191 
192  /// Return all actions, either booked or already run
193  std::vector<RDFInternal::RActionBase *> GetAllActions() const;
194 
195  std::vector<RDFInternal::RActionBase *> GetBookedActions() { return fBookedActions; }
196  std::shared_ptr<ROOT::Internal::RDF::GraphDrawing::GraphNode> GetGraph();
197 
198  const ColumnNames_t &GetBranchNames();
199 
200  void AddDataBlockCallback(std::function<void(unsigned int)> &&callback);
201 };
202 
203 } // ns RDF
204 } // ns Detail
205 } // ns ROOT
206 
207 #endif
ROOT::Detail::RDF::RFilterBase
Definition: RFilterBase.hxx:36
c
#define c(i)
Definition: RSha256.hxx:101
ROOT::Detail::RDF::RLoopManager::Run
void Run()
Start the event loop with a different mechanism depending on IMT/no IMT, data source/no data source.
Definition: RLoopManager.cxx:687
ROOT::Detail::RDF::RLoopManager::PartialReport
void PartialReport(ROOT::RDF::RCutFlowReport &) const final
End of recursive chain of calls, does nothing.
Definition: RLoopManager.hxx:170
GraphCreatorHelper
Helper class that provides the operation graph nodes.
ROOT::Detail::RDF::RLoopManager::JitDeclarations
void JitDeclarations()
ROOT::Detail::RDF::RLoopManager::TCallback::fFun
const Callback_t fFun
Definition: RLoopManager.hxx:62
ROOT::Detail::RDF::RLoopManager::fNSlots
const unsigned int fNSlots
Definition: RLoopManager.hxx:112
ROOT::Detail::RDF::RLoopManager::IncrChildrenCount
void IncrChildrenCount() final
Definition: RLoopManager.hxx:172
ROOT::Internal::RDF::RDataBlockNotifier
Definition: RDataBlockNotifier.hxx:37
ROOT::Detail::RDF::RLoopManager::TCallback
Definition: RLoopManager.hxx:61
f
#define f(i)
Definition: RSha256.hxx:104
ROOT::Detail::RDF::RLoopManager::fDSValuePtrMap
std::map< std::string, std::vector< void * > > fDSValuePtrMap
Registry of per-slot value pointers for booked data-source columns.
Definition: RLoopManager.hxx:124
ROOT::Detail::RDF::RLoopManager::fBookedRanges
std::vector< RRangeBase * > fBookedRanges
Definition: RLoopManager.hxx:105
ROOT::Detail::RDF::RLoopManager::CheckIndexedFriends
void CheckIndexedFriends()
ROOT::Detail::RDF::RLoopManager::fBookedFilters
std::vector< RFilterBase * > fBookedFilters
Definition: RLoopManager.hxx:103
ROOT::Detail::RDF::RLoopManager::AddFilterName
void AddFilterName(std::vector< std::string > &)
End of recursive chain of calls, does nothing.
Definition: RLoopManager.hxx:184
tree
Definition: tree.py:1
ROOT::Detail::RDF::RLoopManager::fMustRunNamedFilters
bool fMustRunNamedFilters
Definition: RLoopManager.hxx:113
r
ROOT::R::TRInterface & r
Definition: Object.C:4
ROOT::Detail::RDF::RLoopManager::CleanUpTask
void CleanUpTask(TTreeReader *r, unsigned int slot)
Perform clean-up operations. To be called at the end of each task execution.
Definition: RLoopManager.cxx:640
ROOT::Detail::RDF::RLoopManager::GetLoopManagerUnchecked
RLoopManager * GetLoopManagerUnchecked() final
Definition: RLoopManager.hxx:153
Long64_t
long long Long64_t
Definition: RtypesCore.h:80
ROOT::Detail::RDF::RLoopManager::EvalChildrenCounts
void EvalChildrenCounts()
Trigger counting of number of children nodes for each node of the functional graph.
Definition: RLoopManager.cxx:677
TTree
A TTree represents a columnar dataset.
Definition: TTree.h:79
ROOT::Detail::RDF::RNodeBase
Base class for non-leaf nodes of the computational graph.
Definition: RNodeBase.hxx:41
ROOT::Detail::RDF::RLoopManager::RunAndCheckFilters
void RunAndCheckFilters(unsigned int slot, Long64_t entry)
Execute actions and make sure named filters are called for each event.
Definition: RLoopManager.cxx:553
ROOT::Detail::RDF::RLoopManager::TOneTimeCallback::TOneTimeCallback
TOneTimeCallback(Callback_t &&f, unsigned int nSlots)
Definition: RLoopManager.hxx:88
ROOT::Detail::RDF::RRangeBase
Definition: RRangeBase.hxx:32
ROOT::Detail::RDF::RLoopManager::InitNodes
void InitNodes()
Initialize all nodes of the functional graph before running the event loop.
Definition: RLoopManager.cxx:603
ROOT::Detail::RDF::RLoopManager::TCallback::fCounters
std::vector< ULong64_t > fCounters
Definition: RLoopManager.hxx:64
GraphNode
Class used to create the operation graph to be printed in the dot representation.
Definition: GraphNode.hxx:26
ROOT::Detail::RDF::RLoopManager::TOneTimeCallback::operator()
void operator()(unsigned int slot)
Definition: RLoopManager.hxx:90
ROOT::Detail::RDF::RLoopManager::fCallbacks
std::vector< TCallback > fCallbacks
Registered callbacks.
Definition: RLoopManager.hxx:117
ROOT::Detail::RDF::RLoopManager::TOneTimeCallback::fFun
const Callback_t fFun
Definition: RLoopManager.hxx:84
ROOT::Detail::RDF::RLoopManager::fRunActions
std::vector< RDFInternal::RActionBase * > fRunActions
Non-owning pointers to actions already run.
Definition: RLoopManager.hxx:102
ROOT::Detail::RDF::RLoopManager::fNRuns
unsigned int fNRuns
Number of event loops run.
Definition: RLoopManager.hxx:121
ROOT::Detail::RDF::RLoopManager::ELoopType::kDataSourceMT
@ kDataSourceMT
ROOT::Detail::RDF::RLoopManager::ELoopType
ELoopType
Definition: RLoopManager.hxx:59
ROOT::Detail::RDF::RLoopManager::GetDataSource
RDataSource * GetDataSource() const
Definition: RLoopManager.hxx:159
ROOT::Detail::RDF::RLoopManager::ToJitExec
void ToJitExec(const std::string &) const
Definition: RLoopManager.cxx:780
ROOT::Detail::RDF::RLoopManager::AddDSValuePtrs
void AddDSValuePtrs(const std::string &col, const std::vector< void * > ptrs)
Definition: RLoopManager.cxx:853
ROOT::Detail::RDF::RLoopManager::fDataSource
const std::unique_ptr< RDataSource > fDataSource
Owning pointer to a data-source object. Null if no data-source.
Definition: RLoopManager.hxx:115
ROOT::Detail::RDF::ColumnNames_t
std::vector< std::string > ColumnNames_t
Definition: RLoopManager.hxx:54
ROOT::RDF::RDataSource
RDataSource defines an API that RDataFrame can use to read arbitrary data formats.
Definition: RDataSource.hxx:106
ROOT::Detail::RDF::RLoopManager::GetDirectory
::TDirectory * GetDirectory() const
ROOT::Detail::RDF::RLoopManager::GetDSValuePtrs
const std::map< std::string, std::vector< void * > > & GetDSValuePtrs() const
Definition: RLoopManager.hxx:180
ROOT::Internal::RDF::RActionBase
Definition: RActionBase.hxx:39
ROOT::Detail::RDF::RLoopManager::GetGraph
std::shared_ptr< ROOT::Internal::RDF::GraphDrawing::GraphNode > GetGraph()
Definition: RLoopManager.cxx:820
ROOT::Detail::RDF::RLoopManager::fDefaultColumns
const ColumnNames_t fDefaultColumns
Definition: RLoopManager.hxx:110
ROOT::Detail::RDF::RLoopManager::TCallback::fEveryN
const ULong64_t fEveryN
Definition: RLoopManager.hxx:63
ROOT::Detail::RDF::RLoopManager::TCallback::TCallback
TCallback(ULong64_t everyN, Callback_t &&f, unsigned int nSlots)
Definition: RLoopManager.hxx:67
ROOT::Detail::RDF::RLoopManager::fCallbacksOnce
std::vector< TOneTimeCallback > fCallbacksOnce
Registered callbacks to invoke just once before running the loop.
Definition: RLoopManager.hxx:118
ROOT::Detail::RDF::RLoopManager::fBookedNamedFilters
std::vector< RFilterBase * > fBookedNamedFilters
Contains a subset of fBookedFilters, i.e. only the named filters.
Definition: RLoopManager.hxx:104
ROOT::Detail::RDF::RLoopManager::fNEmptyEntries
const ULong64_t fNEmptyEntries
Definition: RLoopManager.hxx:111
ROOT::Detail::RDF::RLoopManager::RunEmptySourceMT
void RunEmptySourceMT()
Run event loop with no source files, in parallel.
Definition: RLoopManager.cxx:360
ROOT::Detail::RDF::RLoopManager::GetBranchNames
const ColumnNames_t & GetBranchNames()
Return all valid TTree::Branch names (caching results for subsequent calls).
Definition: RLoopManager.cxx:840
ROOT::Detail::RDF::RLoopManager::fBookedActions
std::vector< RDFInternal::RActionBase * > fBookedActions
Non-owning pointers to actions to be run.
Definition: RLoopManager.hxx:101
ROOT::Detail::RDF::RLoopManager::GetTree
TTree * GetTree() const
Definition: RLoopManager.cxx:726
ROOT::Detail::RDF::RLoopManager::fValidBranchNames
ColumnNames_t fValidBranchNames
Cache of the tree/chain branch names. Never access directy, always use GetBranchNames().
Definition: RLoopManager.hxx:127
ROOT::Detail::RDF::RLoopManager::RLoopManager
RLoopManager(TTree *tree, const ColumnNames_t &defaultBranches)
Definition: RLoopManager.cxx:330
ROOT::Detail::RDF::RLoopManager::RunEmptySource
void RunEmptySource()
Run event loop with no source files, in sequence.
Definition: RLoopManager.cxx:405
ROOT::Detail::RDF::RLoopManager::GetDefaultColumnNames
const ColumnNames_t & GetDefaultColumnNames() const
Return the list of default columns – empty if none was provided when constructing the RDataFrame.
Definition: RLoopManager.cxx:721
ROOT::R::function
void function(const Char_t *name_, T fun, const Char_t *docstring=0)
Definition: RExports.h:151
ROOT::Detail::RDF::RLoopManager::ELoopType::kDataSource
@ kDataSource
ROOT::Detail::RDF::RLoopManager::RunTreeReader
void RunTreeReader()
Run event loop over one or multiple ROOT files, in sequence.
Definition: RLoopManager.cxx:453
RDataBlockNotifier.hxx
TTreeReader
A simple, robust and fast interface to read values from ROOT columnar datasets such as TTree,...
Definition: TTreeReader.h:44
ROOT::Detail::RDF::RLoopManager::TOneTimeCallback
Definition: RLoopManager.hxx:83
ROOT::Detail::RDF::RLoopManager::fDataBlockNotifier
RDFInternal::RDataBlockNotifier fDataBlockNotifier
Definition: RLoopManager.hxx:120
ROOT::Detail::RDF::RLoopManager::Book
void Book(RDFInternal::RActionBase *actionPtr)
Definition: RLoopManager.cxx:731
ROOT::Detail::RDF::RLoopManager::Callback_t
std::function< void(unsigned int)> Callback_t
Definition: RLoopManager.hxx:60
ROOT::Detail::RDF::RLoopManager::GetAllActions
std::vector< RDFInternal::RActionBase * > GetAllActions() const
Return all actions, either booked or already run.
Definition: RLoopManager.cxx:812
ROOT::Detail::RDF::RNodeBase::fNChildren
unsigned int fNChildren
Number of nodes of the functional graph hanging from this object.
Definition: RNodeBase.hxx:44
ROOT::Detail::RDF::RLoopManager::ELoopType::kROOTFiles
@ kROOTFiles
ROOT::Detail::RDF::RLoopManager::RLoopManager
RLoopManager(const RLoopManager &)=delete
ROOT::Detail::RDF::RLoopManager::AddDataBlockCallback
void AddDataBlockCallback(std::function< void(unsigned int)> &&callback)
Definition: RLoopManager.cxx:858
void
typedef void((*Func_t)())
ROOT::Detail::RDF::RLoopManager::GetNEmptyEntries
ULong64_t GetNEmptyEntries() const
Definition: RLoopManager.hxx:158
ROOT::Detail::RDF::RLoopManager::fTree
std::shared_ptr< TTree > fTree
Shared pointer to the input TTree.
Definition: RLoopManager.hxx:109
ROOT::Detail::RDF::RLoopManager::GetBookedActions
std::vector< RDFInternal::RActionBase * > GetBookedActions()
Definition: RLoopManager.hxx:195
ROOT::Detail::RDF::RLoopManager::CheckFilters
bool CheckFilters(unsigned int, Long64_t) final
Definition: RLoopManager.cxx:768
ROOT::Detail::RDF::RLoopManager::SetupDataBlockCallbacks
void SetupDataBlockCallbacks(TTreeReader *r, unsigned int slot)
Definition: RLoopManager.cxx:585
RNodeBase.hxx
ROOT::Detail::RDF::RLoopManager::ELoopType::kNoFilesMT
@ kNoFilesMT
ULong64_t
unsigned long long ULong64_t
Definition: RtypesCore.h:81
ROOT::Detail::RDF::RLoopManager::RunDataSource
void RunDataSource()
Run event loop over data accessed through a DataSource, in sequence.
Definition: RLoopManager.cxx:480
ROOT::Detail::RDF::RLoopManager::CleanUpNodes
void CleanUpNodes()
Perform clean-up operations. To be called at the end of each event loop.
Definition: RLoopManager.cxx:615
ROOT::Detail::RDF::RLoopManager::StopProcessing
void StopProcessing() final
Definition: RLoopManager.hxx:173
ROOT::Detail::RDF::RLoopManager::AddColumnAlias
void AddColumnAlias(const std::string &alias, const std::string &colName)
Definition: RLoopManager.hxx:175
ROOT::Detail::RDF::RCallCleanUpTask
A RAII object that calls RLoopManager::CleanUpTask at destruction.
Definition: RLoopManager.cxx:302
ROOT::RDF::RCutFlowReport
Definition: RCutFlowReport.hxx:47
ROOT::Internal::RDF
Definition: RArrowDS.hxx:23
ROOT::Detail::RDF::RLoopManager::Jit
void Jit()
Add RDF nodes that require just-in-time compilation to the computation graph.
Definition: RLoopManager.cxx:652
ROOT::Detail::RDF::RLoopManager::GetAliasMap
const std::map< std::string, std::string > & GetAliasMap() const
Definition: RLoopManager.hxx:176
ROOT::Detail::RDF::RLoopManager::GetGraphEdges
std::vector< RNodeBase * > GetGraphEdges() const
Return all graph edges known to RLoopManager This includes Filters and Ranges but not Defines.
Definition: RLoopManager.cxx:804
ROOT::Detail::RDF::RLoopManager::fDataBlockCallbacks
std::vector< Callback_t > fDataBlockCallbacks
Registered callbacks to call at the beginning of each "data block".
Definition: RLoopManager.hxx:119
ROOT::Detail::RDF::RLoopManager::RunTreeProcessorMT
void RunTreeProcessorMT()
Run event loop over one or multiple ROOT files, in parallel.
Definition: RLoopManager.cxx:421
ROOT::Detail::RDF::RLoopManager::ELoopType::kROOTFilesMT
@ kROOTFilesMT
ROOT::Detail::RDF::RLoopManager::TOneTimeCallback::fHasBeenCalled
std::vector< int > fHasBeenCalled
Definition: RLoopManager.hxx:85
TDirectory
Describe directory structure in memory.
Definition: TDirectory.h:45
ROOT::Detail::RDF::RLoopManager::GetNRuns
unsigned int GetNRuns() const
Definition: RLoopManager.hxx:178
ROOT::Detail::RDF::RLoopManager::RegisterCallback
void RegisterCallback(ULong64_t everyNEvents, std::function< void(unsigned int)> &&f)
Definition: RLoopManager.cxx:786
ROOT::Detail::RDF::RLoopManager::GetFiltersNames
std::vector< std::string > GetFiltersNames()
For each booked filter, returns either the name or "Unnamed Filter".
Definition: RLoopManager.cxx:794
ROOT::Detail::RDF::RLoopManager::Report
void Report(ROOT::RDF::RCutFlowReport &rep) const final
Call FillReport on all booked filters.
Definition: RLoopManager.cxx:774
ROOT::Detail::RDF::RLoopManager::RunDataSourceMT
void RunDataSourceMT()
Run event loop over data accessed through a DataSource, in parallel.
Definition: RLoopManager.cxx:511
ROOT::Detail::RDF::RLoopManager::fAliasColumnNameMap
std::map< std::string, std::string > fAliasColumnNameMap
ColumnNameAlias-columnName pairs.
Definition: RLoopManager.hxx:116
ROOT::Detail::RDF::RLoopManager::InitNodeSlots
void InitNodeSlots(TTreeReader *r, unsigned int slot)
Build TTreeReaderValues for all nodes This method loops over all filters, actions and other booked ob...
Definition: RLoopManager.cxx:574
ROOT::Detail::RDF::RLoopManager::fLoopType
const ELoopType fLoopType
The kind of event loop that is going to be run (e.g. on ROOT files, on no files)
Definition: RLoopManager.hxx:114
ROOT::Detail::RDF::RLoopManager::operator=
RLoopManager & operator=(const RLoopManager &)=delete
ROOT::Detail::RDF::RLoopManager::Deregister
void Deregister(RDFInternal::RActionBase *actionPtr)
Definition: RLoopManager.cxx:736
ROOT::Detail::RDF::RNodeBase::fNStopsReceived
unsigned int fNStopsReceived
Number of times that a children node signaled to stop processing entries.
Definition: RNodeBase.hxx:45
ROOT::Internal::RDF::GetBranchNames
std::vector< std::string > GetBranchNames(TTree &t, bool allowDuplicates=true)
Get all the branches names, including the ones of the friend trees.
Definition: RLoopManager.cxx:320
ROOT::Detail::RDF::RLoopManager::TCallback::operator()
void operator()(unsigned int slot)
Definition: RLoopManager.hxx:72
ROOT::Detail::RDF::RLoopManager::GetNSlots
unsigned int GetNSlots() const
Definition: RLoopManager.hxx:167
ROOT::Detail::RDF::RLoopManager::SetTree
void SetTree(const std::shared_ptr< TTree > &tree)
Definition: RLoopManager.hxx:171
ROOT
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
Definition: EExecutionPolicy.hxx:4
ROOT::Detail::RDF::RLoopManager
The head node of a RDF computation graph.
Definition: RLoopManager.hxx:58
ROOT::Detail::RDF::RLoopManager::ELoopType::kNoFiles
@ kNoFiles
ROOT::Detail::RDF::RLoopManager::HasDSValuePtrs
bool HasDSValuePtrs(const std::string &col) const
Definition: RLoopManager.cxx:848