11 #ifndef ROOT_RFILTERBASE
12 #define ROOT_RFILTERBASE
32 namespace RDFInternal = ROOT::Internal::RDF;
36 class RFilterBase :
public RNodeBase {
38 std::vector<Long64_t> fLastCheckedEntry;
39 std::vector<int> fLastResult = {
true};
40 std::vector<ULong64_t> fAccepted = {0};
41 std::vector<ULong64_t> fRejected = {0};
42 const std::string fName;
43 const unsigned int fNSlots;
45 RDFInternal::RBookedCustomColumns fCustomColumns;
48 RFilterBase(RLoopManager *df, std::string_view name,
const unsigned int nSlots,
49 const RDFInternal::RBookedCustomColumns &customColumns);
50 RFilterBase &operator=(
const RFilterBase &) =
delete;
52 virtual ~RFilterBase();
54 virtual void InitSlot(TTreeReader *r,
unsigned int slot) = 0;
56 std::string GetName()
const;
57 virtual void FillReport(ROOT::RDF::RCutFlowReport &)
const;
58 virtual void TriggerChildrenCount() = 0;
59 virtual void ResetReportCount()
61 R__ASSERT(!fName.empty());
63 std::fill(fAccepted.begin(), fAccepted.end(), 0);
64 std::fill(fRejected.begin(), fRejected.end(), 0);
66 virtual void ClearValueReaders(
unsigned int slot) = 0;
67 virtual void ClearTask(
unsigned int slot) = 0;
68 virtual void InitNode();
69 virtual void AddFilterName(std::vector<std::string> &filters) = 0;
76 #endif // ROOT_RFILTERBASE