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"
15 
16 #include <functional>
17 #include <map>
18 #include <memory>
19 #include <string>
20 #include <vector>
21 
22 // forward declarations
23 class TTree;
24 class TTreeReader;
25 class TDirectory;
26 
27 namespace ROOT {
28 namespace RDF {
29 class RCutFlowReport;
30 class RDataSource;
31 } // ns RDF
32 
33 namespace Internal {
34 namespace RDF {
35 std::vector<std::string> GetBranchNames(TTree &t, bool allowDuplicates = true);
36 
37 class RActionBase;
38 class GraphNode;
39 
40 namespace GraphDrawing {
41 class GraphCreatorHelper;
42 } // ns GraphDrawing
43 } // ns RDF
44 } // ns Internal
45 
46 namespace Detail {
47 namespace RDF {
49 
50 class RFilterBase;
51 class RRangeBase;
53 using ColumnNames_t = std::vector<std::string>;
54 
55 /// The head node of a RDF computation graph.
56 /// This class is responsible of running the event loop.
57 class RLoopManager : public RNodeBase {
59  using Callback_t = std::function<void(unsigned int)>;
60  class TCallback {
63  std::vector<ULong64_t> fCounters;
64 
65  public:
66  TCallback(ULong64_t everyN, Callback_t &&f, unsigned int nSlots)
67  : fFun(std::move(f)), fEveryN(everyN), fCounters(nSlots, 0ull)
68  {
69  }
70 
71  void operator()(unsigned int slot)
72  {
73  auto &c = fCounters[slot];
74  ++c;
75  if (c == fEveryN) {
76  c = 0ull;
77  fFun(slot);
78  }
79  }
80  };
81 
84  std::vector<int> fHasBeenCalled; // std::vector<bool> is thread-unsafe for our purposes (and generally evil)
85 
86  public:
87  TOneTimeCallback(Callback_t &&f, unsigned int nSlots) : fFun(std::move(f)), fHasBeenCalled(nSlots, 0) {}
88 
89  void operator()(unsigned int slot)
90  {
91  if (fHasBeenCalled[slot] == 1)
92  return;
93  fFun(slot);
94  fHasBeenCalled[slot] = 1;
95  }
96  };
97 
98  std::vector<RDFInternal::RActionBase *> fBookedActions; ///< Non-owning pointers to actions to be run
99  std::vector<RDFInternal::RActionBase *> fRunActions; ///< Non-owning pointers to actions already run
100  std::vector<RFilterBase *> fBookedFilters;
101  std::vector<RFilterBase *> fBookedNamedFilters; ///< Contains a subset of fBookedFilters, i.e. only the named filters
102  std::vector<RRangeBase *> fBookedRanges;
103 
104  /// Shared pointer to the input TTree. It does not delete the pointee if the TTree/TChain was passed directly as an
105  /// argument to RDataFrame's ctor (in which case we let users retain ownership).
106  std::shared_ptr<TTree> fTree{nullptr};
109  const unsigned int fNSlots{1};
111  const ELoopType fLoopType; ///< The kind of event loop that is going to be run (e.g. on ROOT files, on no files)
112  const std::unique_ptr<RDataSource> fDataSource; ///< Owning pointer to a data-source object. Null if no data-source
113  std::map<std::string, std::string> fAliasColumnNameMap; ///< ColumnNameAlias-columnName pairs
114  std::vector<TCallback> fCallbacks; ///< Registered callbacks
115  std::vector<TOneTimeCallback> fCallbacksOnce; ///< Registered callbacks to invoke just once before running the loop
116  unsigned int fNRuns{0}; ///< Number of event loops run
117 
118  /// Registry of per-slot value pointers for booked data-source columns
119  std::map<std::string, std::vector<void *>> fDSValuePtrMap;
120 
121  /// Cache of the tree/chain branch names. Never access directy, always use GetBranchNames().
123 
124  void CheckIndexedFriends();
125  void RunEmptySourceMT();
126  void RunEmptySource();
127  void RunTreeProcessorMT();
128  void RunTreeReader();
129  void RunDataSourceMT();
130  void RunDataSource();
131  void RunAndCheckFilters(unsigned int slot, Long64_t entry);
132  void InitNodeSlots(TTreeReader *r, unsigned int slot);
133  void InitNodes();
134  void CleanUpNodes();
135  void CleanUpTask(unsigned int slot);
136  void EvalChildrenCounts();
137 
138 public:
139  RLoopManager(TTree *tree, const ColumnNames_t &defaultBranches);
140  RLoopManager(ULong64_t nEmptyEntries);
141  RLoopManager(std::unique_ptr<RDataSource> ds, const ColumnNames_t &defaultBranches);
142  RLoopManager(const RLoopManager &) = delete;
143  RLoopManager &operator=(const RLoopManager &) = delete;
144 
146  void Jit();
147  RLoopManager *GetLoopManagerUnchecked() final { return this; }
148  void Run();
149  const ColumnNames_t &GetDefaultColumnNames() const;
150  TTree *GetTree() const;
153  RDataSource *GetDataSource() const { return fDataSource.get(); }
154  void Book(RDFInternal::RActionBase *actionPtr);
155  void Deregister(RDFInternal::RActionBase *actionPtr);
156  void Book(RFilterBase *filterPtr);
157  void Deregister(RFilterBase *filterPtr);
158  void Book(RRangeBase *rangePtr);
159  void Deregister(RRangeBase *rangePtr);
160  bool CheckFilters(unsigned int, Long64_t) final;
161  unsigned int GetNSlots() const { return fNSlots; }
162  void Report(ROOT::RDF::RCutFlowReport &rep) const final;
163  /// End of recursive chain of calls, does nothing
165  void SetTree(const std::shared_ptr<TTree> &tree) { fTree = tree; }
166  void IncrChildrenCount() final { ++fNChildren; }
167  void StopProcessing() final { ++fNStopsReceived; }
168  void ToJitExec(const std::string &) const;
169  void AddColumnAlias(const std::string &alias, const std::string &colName) { fAliasColumnNameMap[alias] = colName; }
170  const std::map<std::string, std::string> &GetAliasMap() const { return fAliasColumnNameMap; }
171  void RegisterCallback(ULong64_t everyNEvents, std::function<void(unsigned int)> &&f);
172  unsigned int GetNRuns() const { return fNRuns; }
173  bool HasDSValuePtrs(const std::string &col) const;
174  const std::map<std::string, std::vector<void *>> &GetDSValuePtrs() const { return fDSValuePtrMap; }
175  void AddDSValuePtrs(const std::string &col, const std::vector<void *> ptrs);
176 
177  /// End of recursive chain of calls, does nothing
178  void AddFilterName(std::vector<std::string> &) {}
179  /// For each booked filter, returns either the name or "Unnamed Filter"
180  std::vector<std::string> GetFiltersNames();
181 
182  /// For all the actions, either booked or run
183  std::vector<RDFInternal::RActionBase *> GetAllActions();
184 
185  std::vector<RDFInternal::RActionBase *> GetBookedActions() { return fBookedActions; }
186  std::shared_ptr<ROOT::Internal::RDF::GraphDrawing::GraphNode> GetGraph();
187 
188  const ColumnNames_t &GetBranchNames();
189 };
190 
191 } // ns RDF
192 } // ns Detail
193 } // ns ROOT
194 
195 #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:561
ROOT::Detail::RDF::RLoopManager::PartialReport
void PartialReport(ROOT::RDF::RCutFlowReport &) const final
End of recursive chain of calls, does nothing.
Definition: RLoopManager.hxx:164
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:61
ROOT::Detail::RDF::RLoopManager::fNSlots
const unsigned int fNSlots
Definition: RLoopManager.hxx:109
ROOT::Detail::RDF::RLoopManager::CleanUpTask
void CleanUpTask(unsigned int slot)
Perform clean-up operations. To be called at the end of each task execution.
Definition: RLoopManager.cxx:524
ROOT::Detail::RDF::RLoopManager::IncrChildrenCount
void IncrChildrenCount() final
Definition: RLoopManager.hxx:166
ROOT::Detail::RDF::RLoopManager::TCallback
Definition: RLoopManager.hxx:60
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:119
ROOT::Detail::RDF::RLoopManager::fBookedRanges
std::vector< RRangeBase * > fBookedRanges
Definition: RLoopManager.hxx:102
ROOT::Detail::RDF::RLoopManager::fBookedFilters
std::vector< RFilterBase * > fBookedFilters
Definition: RLoopManager.hxx:100
ROOT::Detail::RDF::RLoopManager::AddFilterName
void AddFilterName(std::vector< std::string > &)
End of recursive chain of calls, does nothing.
Definition: RLoopManager.hxx:178
tree
Definition: tree.py:1
ROOT::Detail::RDF::RLoopManager::fMustRunNamedFilters
bool fMustRunNamedFilters
Definition: RLoopManager.hxx:110
r
ROOT::R::TRInterface & r
Definition: Object.C:4
ROOT::Detail::RDF::RLoopManager::GetLoopManagerUnchecked
RLoopManager * GetLoopManagerUnchecked() final
Definition: RLoopManager.hxx:147
Long64_t
long long Long64_t
Definition: RtypesCore.h:73
ROOT::Detail::RDF::RLoopManager::EvalChildrenCounts
void EvalChildrenCounts()
Trigger counting of number of children nodes for each node of the functional graph.
Definition: RLoopManager.cxx:551
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
extract_docstrings.ds
ds
Definition: extract_docstrings.py:40
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:461
ROOT::Detail::RDF::RLoopManager::TOneTimeCallback::TOneTimeCallback
TOneTimeCallback(Callback_t &&f, unsigned int nSlots)
Definition: RLoopManager.hxx:87
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:488
ROOT::Detail::RDF::RLoopManager::TCallback::fCounters
std::vector< ULong64_t > fCounters
Definition: RLoopManager.hxx:63
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:89
ROOT::Detail::RDF::RLoopManager::fCallbacks
std::vector< TCallback > fCallbacks
Registered callbacks.
Definition: RLoopManager.hxx:114
ROOT::Detail::RDF::RLoopManager::TOneTimeCallback::fFun
const Callback_t fFun
Definition: RLoopManager.hxx:83
ROOT::Detail::RDF::RLoopManager::fRunActions
std::vector< RDFInternal::RActionBase * > fRunActions
Non-owning pointers to actions already run.
Definition: RLoopManager.hxx:99
ROOT::Detail::RDF::RLoopManager::fNRuns
unsigned int fNRuns
Number of event loops run.
Definition: RLoopManager.hxx:116
ROOT::Detail::RDF::RLoopManager::ELoopType::kDataSourceMT
@ kDataSourceMT
ROOT::Detail::RDF::RLoopManager::ELoopType
ELoopType
Definition: RLoopManager.hxx:58
ROOT::Detail::RDF::RLoopManager::GetDataSource
RDataSource * GetDataSource() const
Definition: RLoopManager.hxx:153
ROOT::Detail::RDF::RLoopManager::ToJitExec
void ToJitExec(const std::string &) const
Definition: RLoopManager.cxx:643
ROOT::Detail::RDF::RLoopManager::AddDSValuePtrs
void AddDSValuePtrs(const std::string &col, const std::vector< void * > ptrs)
Definition: RLoopManager.cxx:708
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:112
ROOT::Detail::RDF::ColumnNames_t
std::vector< std::string > ColumnNames_t
Definition: RLoopManager.hxx:53
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:174
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:675
ROOT::Detail::RDF::RLoopManager::fDefaultColumns
const ColumnNames_t fDefaultColumns
Definition: RLoopManager.hxx:107
ROOT::Detail::RDF::RLoopManager::TCallback::fEveryN
const ULong64_t fEveryN
Definition: RLoopManager.hxx:62
ROOT::Detail::RDF::RLoopManager::TCallback::TCallback
TCallback(ULong64_t everyN, Callback_t &&f, unsigned int nSlots)
Definition: RLoopManager.hxx:66
ROOT::Detail::RDF::RLoopManager::fCallbacksOnce
std::vector< TOneTimeCallback > fCallbacksOnce
Registered callbacks to invoke just once before running the loop.
Definition: RLoopManager.hxx:115
ROOT::Detail::RDF::RLoopManager::fBookedNamedFilters
std::vector< RFilterBase * > fBookedNamedFilters
Contains a subset of fBookedFilters, i.e. only the named filters.
Definition: RLoopManager.hxx:101
ROOT::Detail::RDF::RLoopManager::fNEmptyEntries
const ULong64_t fNEmptyEntries
Definition: RLoopManager.hxx:108
ROOT::Detail::RDF::RLoopManager::RunEmptySourceMT
void RunEmptySourceMT()
Run event loop with no source files, in parallel.
Definition: RLoopManager.cxx:268
ROOT::Detail::RDF::RLoopManager::GetBranchNames
const ColumnNames_t & GetBranchNames()
Return all valid TTree::Branch names (caching results for subsequent calls).
Definition: RLoopManager.cxx:695
ROOT::Detail::RDF::RLoopManager::fBookedActions
std::vector< RDFInternal::RActionBase * > fBookedActions
Non-owning pointers to actions to be run.
Definition: RLoopManager.hxx:98
ROOT::Detail::RDF::RLoopManager::GetTree
TTree * GetTree() const
Definition: RLoopManager.cxx:589
ROOT::Detail::RDF::RLoopManager::fValidBranchNames
ColumnNames_t fValidBranchNames
Cache of the tree/chain branch names. Never access directy, always use GetBranchNames().
Definition: RLoopManager.hxx:122
ROOT::Detail::RDF::RLoopManager::RLoopManager
RLoopManager(TTree *tree, const ColumnNames_t &defaultBranches)
Definition: RLoopManager.cxx:220
ROOT::Detail::RDF::RLoopManager::RunEmptySource
void RunEmptySource()
Run event loop with no source files, in sequence.
Definition: RLoopManager.cxx:313
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:584
ROOT::R::function
void function(const Char_t *name_, T fun, const Char_t *docstring=0)
Definition: RExports.h:151
ROOT::Detail::RDF::RLoopManager::GetAllActions
std::vector< RDFInternal::RActionBase * > GetAllActions()
For all the actions, either booked or run.
Definition: RLoopManager.cxx:667
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:362
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:82
ROOT::Detail::RDF::RLoopManager::Book
void Book(RDFInternal::RActionBase *actionPtr)
Definition: RLoopManager.cxx:594
ROOT::Detail::RDF::RLoopManager::Callback_t
std::function< void(unsigned int)> Callback_t
Definition: RLoopManager.hxx:59
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
void
typedef void((*Func_t)())
ROOT::Detail::RDF::RLoopManager::GetNEmptyEntries
ULong64_t GetNEmptyEntries() const
Definition: RLoopManager.hxx:152
ROOT::Detail::RDF::RLoopManager::fTree
std::shared_ptr< TTree > fTree
Shared pointer to the input TTree.
Definition: RLoopManager.hxx:106
ROOT::Detail::RDF::RLoopManager::GetBookedActions
std::vector< RDFInternal::RActionBase * > GetBookedActions()
Definition: RLoopManager.hxx:185
ROOT::Detail::RDF::RLoopManager::CheckFilters
bool CheckFilters(unsigned int, Long64_t) final
Definition: RLoopManager.cxx:631
RNodeBase.hxx
ROOT::Detail::RDF::RLoopManager::ELoopType::kNoFilesMT
@ kNoFilesMT
ULong64_t
unsigned long long ULong64_t
Definition: RtypesCore.h:74
ROOT::Detail::RDF::RLoopManager::RunDataSource
void RunDataSource()
Run event loop over data accessed through a DataSource, in sequence.
Definition: RLoopManager.cxx:390
ROOT::Detail::RDF::RLoopManager::CleanUpNodes
void CleanUpNodes()
Perform clean-up operations. To be called at the end of each event loop.
Definition: RLoopManager.cxx:500
ROOT::Detail::RDF::RLoopManager::StopProcessing
void StopProcessing() final
Definition: RLoopManager.hxx:167
ROOT::Detail::RDF::RLoopManager::AddColumnAlias
void AddColumnAlias(const std::string &alias, const std::string &colName)
Definition: RLoopManager.hxx:169
ROOT::RDF::RCutFlowReport
Definition: RCutFlowReport.hxx:47
ROOT::Internal::RDF
Definition: RArrowDS.hxx:15
ROOT::Detail::RDF::RLoopManager::Jit
void Jit()
Add RDF nodes that require just-in-time compilation to the computation graph.
Definition: RLoopManager.cxx:534
ROOT::Detail::RDF::RLoopManager::GetAliasMap
const std::map< std::string, std::string > & GetAliasMap() const
Definition: RLoopManager.hxx:170
ROOT::Detail::RDF::RLoopManager::RunTreeProcessorMT
void RunTreeProcessorMT()
Run event loop over one or multiple ROOT files, in parallel.
Definition: RLoopManager.cxx:329
ROOT::Detail::RDF::RLoopManager::ELoopType::kROOTFilesMT
@ kROOTFilesMT
ROOT::Detail::RDF::RLoopManager::TOneTimeCallback::fHasBeenCalled
std::vector< int > fHasBeenCalled
Definition: RLoopManager.hxx:84
TDirectory
Describe directory structure in memory.
Definition: TDirectory.h:40
ROOT::Detail::RDF::RLoopManager::GetNRuns
unsigned int GetNRuns() const
Definition: RLoopManager.hxx:172
ROOT::Detail::RDF::RLoopManager::RegisterCallback
void RegisterCallback(ULong64_t everyNEvents, std::function< void(unsigned int)> &&f)
Definition: RLoopManager.cxx:649
ROOT::Detail::RDF::RLoopManager::GetFiltersNames
std::vector< std::string > GetFiltersNames()
For each booked filter, returns either the name or "Unnamed Filter".
Definition: RLoopManager.cxx:657
ROOT::Detail::RDF::RLoopManager::Report
void Report(ROOT::RDF::RCutFlowReport &rep) const final
Call FillReport on all booked filters.
Definition: RLoopManager.cxx:637
ROOT::Detail::RDF::RLoopManager::RunDataSourceMT
void RunDataSourceMT()
Run event loop over data accessed through a DataSource, in parallel.
Definition: RLoopManager.cxx:420
ROOT::Detail::RDF::RLoopManager::fAliasColumnNameMap
std::map< std::string, std::string > fAliasColumnNameMap
ColumnNameAlias-columnName pairs.
Definition: RLoopManager.hxx:113
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:474
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:111
ROOT::Detail::RDF::RLoopManager::operator=
RLoopManager & operator=(const RLoopManager &)=delete
ROOT::Detail::RDF::RLoopManager::Deregister
void Deregister(RDFInternal::RActionBase *actionPtr)
Definition: RLoopManager.cxx:599
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:210
ROOT::Detail::RDF::RLoopManager::TCallback::operator()
void operator()(unsigned int slot)
Definition: RLoopManager.hxx:71
ROOT::Detail::RDF::RLoopManager::GetNSlots
unsigned int GetNSlots() const
Definition: RLoopManager.hxx:161
ROOT::Detail::RDF::RLoopManager::SetTree
void SetTree(const std::shared_ptr< TTree > &tree)
Definition: RLoopManager.hxx:165
ROOT
VSD Structures.
Definition: StringConv.hxx:21
ROOT::Detail::RDF::RLoopManager
The head node of a RDF computation graph.
Definition: RLoopManager.hxx:57
ROOT::Detail::RDF::RLoopManager::ELoopType::kNoFiles
@ kNoFiles
ROOT::Detail::RDF::RLoopManager::HasDSValuePtrs
bool HasDSValuePtrs(const std::string &col) const
Definition: RLoopManager.cxx:703
ROOT::Detail::RDF::RLoopManager::CheckIndexedFriends
void CheckIndexedFriends()
Definition: RLoopManager.cxx:242