Logo ROOT  
Reference Guide
RJittedFilter.hxx
Go to the documentation of this file.
1// Author: Enrico Guiraud, Danilo Piparo CERN 09/2018
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_RJITTEDFILTER
12#define ROOT_RJITTEDFILTER
13
17#include "ROOT/RStringView.hxx"
18#include "RtypesCore.h"
19
20#include <memory>
21#include <string>
22#include <vector>
23
24class TTreeReader;
25
26namespace ROOT {
27namespace RDF {
28class RCutFlowReport;
29}
30
31namespace Detail {
32namespace RDF {
33
35
36/// A wrapper around a concrete RFilter, which forwards all calls to it
37/// RJittedFilter is the type of the node returned by jitted Filter calls: the concrete filter can be created and set
38/// at a later time, from jitted code.
39class RJittedFilter final : public RFilterBase {
40 std::unique_ptr<RFilterBase> fConcreteFilter = nullptr;
41
42public:
43 RJittedFilter(RLoopManager *lm, std::string_view name, const std::vector<std::string> &variations);
45
46 void SetFilter(std::unique_ptr<RFilterBase> f);
47
48 void InitSlot(TTreeReader *r, unsigned int slot) final;
49 bool CheckFilters(unsigned int slot, Long64_t entry) final;
50 void Report(ROOT::RDF::RCutFlowReport &) const final;
51 void PartialReport(ROOT::RDF::RCutFlowReport &) const final;
52 void FillReport(ROOT::RDF::RCutFlowReport &) const final;
53 void IncrChildrenCount() final;
54 void StopProcessing() final;
55 void ResetChildrenCount() final;
56 void TriggerChildrenCount() final;
57 void ResetReportCount() final;
58 void InitNode() final;
59 void AddFilterName(std::vector<std::string> &filters) final;
60 void FinalizeSlot(unsigned int slot) final;
61 std::shared_ptr<RDFGraphDrawing::GraphNode>
62 GetGraph(std::unordered_map<void *, std::shared_ptr<RDFGraphDrawing::GraphNode>> &visitedMap);
63 std::shared_ptr<RNodeBase> GetVariedFilter(const std::string &variationName) final;
64};
65
66} // ns RDF
67} // ns Detail
68} // ns ROOT
69
70#endif // ROOT_RJITTEDFILTER
#define f(i)
Definition: RSha256.hxx:104
long long Long64_t
Definition: RtypesCore.h:80
const char * filters[]
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
char name[80]
Definition: TGX11.cxx:110
A wrapper around a concrete RFilter, which forwards all calls to it RJittedFilter is the type of the ...
void FillReport(ROOT::RDF::RCutFlowReport &) const final
void AddFilterName(std::vector< std::string > &filters) final
void Report(ROOT::RDF::RCutFlowReport &) const final
void FinalizeSlot(unsigned int slot) final
Clean-up operations to be performed at the end of a task.
std::shared_ptr< RDFGraphDrawing::GraphNode > GetGraph(std::unordered_map< void *, std::shared_ptr< RDFGraphDrawing::GraphNode > > &visitedMap)
void InitSlot(TTreeReader *r, unsigned int slot) final
RJittedFilter(RLoopManager *lm, std::string_view name, const std::vector< std::string > &variations)
std::unique_ptr< RFilterBase > fConcreteFilter
void PartialReport(ROOT::RDF::RCutFlowReport &) const final
bool CheckFilters(unsigned int slot, Long64_t entry) final
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 SetFilter(std::unique_ptr< RFilterBase > f)
The head node of a RDF computation graph.
Base class for non-leaf nodes of the computational graph.
Definition: RNodeBase.hxx:43
A simple, robust and fast interface to read values from ROOT columnar datasets such as TTree,...
Definition: TTreeReader.h:44
basic_string_view< char > string_view
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.