27namespace GraphDrawing {
38template <
typename PrevNodeRaw>
43 using PrevNode_t = std::conditional_t<std::is_same<PrevNodeRaw, RJittedFilter>::value,
RFilterBase, PrevNodeRaw>;
48 RRange(
unsigned int start,
unsigned int stop,
unsigned int stride, std::shared_ptr<PrevNode_t> pd)
68 if (!
fPrevNode.CheckFilters(slot, entry)) {
112 std::shared_ptr<RDFGraphDrawing::GraphNode>
GetGraph()
117 auto prevColumns = prevNode->GetDefinedColumns();
124 if (!thisNode->GetIsNew()) {
127 thisNode->SetPrevNode(prevNode);
133 thisNode->AddDefinedColumns(prevColumns);
142 assert(variationName !=
"nominal");
154 prevNode = std::static_pointer_cast<PrevNode_t>(prevNode->GetVariedFilter(variationName));
157 auto e =
fVariedRanges.insert({variationName, std::move(variedRange)});
158 return e.first->second;
void Book(RDFInternal::RActionBase *actionPtr)
void Deregister(RDFInternal::RActionBase *actionPtr)
Base class for non-leaf nodes of the computational graph.
const std::vector< std::string > & GetVariations() const
virtual RLoopManager * GetLoopManagerUnchecked()
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.
RLoopManager * fLoopManager
std::vector< std::string > fVariations
List of systematic variations that affect this node.
ULong64_t fNProcessedEntries
Long64_t fLastCheckedEntry
std::unordered_map< std::string, std::shared_ptr< RRangeBase > > fVariedRanges
bool fHasStopped
True if the end of the range has been reached.
bool CheckFilters(unsigned int slot, Long64_t entry) final
Ranges act as filters when it comes to selecting entries that downstream nodes should process.
const std::shared_ptr< PrevNode_t > fPrevNodePtr
RRange & operator=(const RRange &)=delete
std::conditional_t< std::is_same< PrevNodeRaw, RJittedFilter >::value, RFilterBase, PrevNodeRaw > PrevNode_t
void StopProcessing() final
void IncrChildrenCount() final
void AddFilterName(std::vector< std::string > &filters)
This function must be defined by all nodes, but only the filters will add their name.
std::shared_ptr< RDFGraphDrawing::GraphNode > GetGraph()
void Report(ROOT::RDF::RCutFlowReport &rep) const final
RRange(const RRange &)=delete
RRange(unsigned int start, unsigned int stop, unsigned int stride, std::shared_ptr< PrevNode_t > pd)
std::shared_ptr< RNodeBase > GetVariedFilter(const std::string &variationName) final
Return a clone of this node that acts as a Filter working with values in the variationName "universe"...
void PartialReport(ROOT::RDF::RCutFlowReport &rep) const final
std::shared_ptr< GraphNode > CreateRangeNode(const ROOT::Detail::RDF::RRangeBase *rangePtr)
bool IsStrInVec(const std::string &str, const std::vector< std::string > &vec)
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...