27#include <unordered_map> 
   38namespace GraphDrawing {
 
   39std::shared_ptr<GraphNode>
 
   44                                             std::unordered_map<
void *, std::shared_ptr<GraphNode>> &
visitedMap);
 
   56template <
typename FilterF, 
typename PrevNodeRaw>
 
   59   using TypeInd_t = std::make_index_sequence<ColumnTypes_t::list_size>;
 
   67   std::vector<std::array<RColumnReaderBase *, ColumnTypes_t::list_size>> 
fValues;
 
   77        fFilter(std::
move(
f)), fValues(
pd->GetLoopManagerUnchecked()->GetNSlots()), fPrevNodePtr(std::
move(
pd)),
 
   78        fPrevNode(*fPrevNodePtr)
 
   80      fLoopManager->Register(
this);
 
 
   93      fLoopManager->Deregister(
this);
 
 
   98      if (
entry != fLastCheckedEntry[
slot * RDFInternal::CacheLineStep<Long64_t>()]) {
 
   99         if (!fPrevNode.CheckFilters(
slot, 
entry)) {
 
  101            fLastResult[
slot * RDFInternal::CacheLineStep<int>()] = 
false;
 
  105            passed ? ++fAccepted[
slot * RDFInternal::CacheLineStep<ULong64_t>()]
 
  106                   : ++fRejected[
slot * RDFInternal::CacheLineStep<ULong64_t>()];
 
  107            fLastResult[
slot * RDFInternal::CacheLineStep<int>()] = 
passed;
 
  109         fLastCheckedEntry[
slot * RDFInternal::CacheLineStep<Long64_t>()] = 
entry;
 
  111      return fLastResult[
slot * RDFInternal::CacheLineStep<int>()];
 
 
  114   template <
typename ColType>
 
  120      throw std::out_of_range{
"RDataFrame: Filter could not retrieve value for column '" + fColumnNames[
readerIdx] +
 
  121                              "' for entry " + std::to_string(
entry) +
 
  122                              ". You can use the DefaultValueFor operation to provide a default value, or " 
  123                              "FilterAvailable/FilterMissing to discard/keep entries with missing values instead."};
 
 
  126   template <
typename... 
ColTypes, std::size_t... S>
 
  139      fLastCheckedEntry[
slot * RDFInternal::CacheLineStep<Long64_t>()] = -1;
 
 
  147      fPrevNode.PartialReport(
rep);
 
 
  154      if (fNStopsReceived == fNChildren)
 
  155         fPrevNode.StopProcessing();
 
 
  162      if (fNChildren == 1 && fName.empty())
 
  163         fPrevNode.IncrChildrenCount();
 
 
  169      fPrevNode.IncrChildrenCount();
 
 
  174      fPrevNode.AddFilterName(
filters);
 
  175      auto name = (HasName() ? fName : 
"Unnamed Filter");
 
 
  182   std::shared_ptr<RDFGraphDrawing::GraphNode>
 
  186      auto prevNode = fPrevNode.GetGraph(
visitedMap);
 
  187      const auto &
prevColumns = prevNode->GetDefinedColumns();
 
  201      thisNode->AddDefinedColumns(fColRegister.GenerateColumnNames());
 
 
  211      assert(fVariation == 
"nominal");
 
  220      if (it != fVariedFilters.end())
 
  223      auto prevNode = fPrevNodePtr;
 
  224      if (
static_cast<RNodeBase *
>(fPrevNodePtr.get()) != 
static_cast<RNodeBase *
>(fLoopManager) &&
 
  226         prevNode = std::static_pointer_cast<PrevNode_t>(prevNode->GetVariedFilter(
variationName));
 
  233      return e.first->second;
 
 
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
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
 
void InitSlot(TTreeReader *r, unsigned int slot) final
 
auto GetValueChecked(unsigned int slot, std::size_t readerIdx, Long64_t entry) -> ColType &
 
bool CheckFilterHelper(unsigned int slot, Long64_t entry, TypeList< ColTypes... >, std::index_sequence< S... >)
 
void FinalizeSlot(unsigned int slot) final
Clean-up operations to be performed at the end of a task.
 
void Report(ROOT::RDF::RCutFlowReport &rep) const final
 
RFilter(FilterF f, const ROOT::RDF::ColumnNames_t &columns, std::shared_ptr< PrevNode_t > pd, const RDFInternal::RColumnRegister &colRegister, std::string_view name="", const std::string &variationName="nominal")
 
bool CheckFilters(unsigned int slot, Long64_t entry) final
 
RFilter & operator=(const RFilter &)=delete
 
void IncrChildrenCount() final
 
RFilter & operator=(RFilter &&)=delete
 
const std::shared_ptr< PrevNode_t > fPrevNodePtr
 
RFilter(RFilter &&)=delete
 
std::conditional_t< std::is_same< PrevNodeRaw, RJittedFilter >::value, RFilterBase, PrevNodeRaw > PrevNode_t
 
RFilter(const RFilter &)=delete
 
std::make_index_sequence< ColumnTypes_t::list_size > TypeInd_t
 
void StopProcessing() final
 
void AddFilterName(std::vector< std::string > &filters) final
 
std::shared_ptr< RNodeBase > GetVariedFilter(const std::string &variationName) final
Return a clone of this Filter that works with values in the variationName "universe".
 
std::shared_ptr< RDFGraphDrawing::GraphNode > GetGraph(std::unordered_map< void *, std::shared_ptr< RDFGraphDrawing::GraphNode > > &visitedMap) final
 
typename CallableTraits< FilterF >::arg_types ColumnTypes_t
 
void TriggerChildrenCount() final
 
std::vector< std::array< RColumnReaderBase *, ColumnTypes_t::list_size > > fValues
Column readers per slot and per input column.
 
void PartialReport(ROOT::RDF::RCutFlowReport &rep) const final
 
A wrapper around a concrete RFilter, which forwards all calls to it RJittedFilter is the type of the ...
 
Base class for non-leaf nodes of the computational graph.
 
A binder for user-defined columns, variations and aliases.
 
A simple, robust and fast interface to read values from ROOT columnar datasets such as TTree,...
 
std::shared_ptr< GraphNode > CreateFilterNode(const ROOT::Detail::RDF::RFilterBase *filterPtr, std::unordered_map< void *, std::shared_ptr< GraphNode > > &visitedMap)
 
std::shared_ptr< GraphNode > AddDefinesToGraph(std::shared_ptr< GraphNode > node, const RColumnRegister &colRegister, const std::vector< std::string > &prevNodeDefines, std::unordered_map< void *, std::shared_ptr< GraphNode > > &visitedMap)
 
bool IsStrInVec(const std::string &str, const std::vector< std::string > &vec)
 
std::array< RDFDetail::RColumnReaderBase *, sizeof...(ColTypes)> GetColumnReaders(unsigned int slot, TTreeReader *treeReader, TypeList< ColTypes... >, const RColumnReadersInfo &colInfo, const std::string &variationName="nominal")
Create a group of column readers, one per type in the parameter pack.
 
std::vector< std::string > ColumnNames_t
 
ROOT type_traits extensions.
 
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
 
Extract types from the signature of a callable object. See CallableTraits.
 
This type aggregates some of the arguments passed to GetColumnReaders.