RDFAnalysis  0.1.1
Physics analysis with ROOT::RDataFrame
IBranchNamer.h
Go to the documentation of this file.
1 #ifndef RDFAnalysis_IBranchNamer_H
2 #define RDFAnalysis_IBranchNamer_H
3 
4 #include <string>
5 #include <vector>
6 #include <set>
7 #include <memory>
8 #include <map>
9 
10 #include <ROOT/RDataFrame.hxx>
11 
17 namespace RDFAnalysis {
33  class IBranchNamer {
34  public:
35  virtual ~IBranchNamer() {}
36 
46  virtual std::string nameBranch(
47  const std::string& branch,
48  const std::string& systName = "") const = 0;
49 
59  virtual std::vector<std::string> nameBranches(
60  const std::vector<std::string>& branches,
61  const std::string& systName = "") const;
62 
72  virtual std::string createBranch(
73  const std::string& branch,
74  const std::string& systName = "") = 0;
75 
81  virtual bool exists(
82  const std::string& branch,
83  const std::string& systName = "") const = 0;
84 
86  virtual const std::string& nominalName() const = 0;
87 
91  virtual std::vector<std::string> systematics() const = 0;
92 
97  virtual std::set<std::string> systematicsAffecting(
98  const std::string& branch) const = 0;
99 
104  virtual std::set<std::string> systematicsAffecting(
105  const std::vector<std::string>& branches) const;
106 
110  virtual std::vector<std::string> branches() const = 0;
111 
116  virtual void readBranchList(
117  const std::map<std::string, ROOT::RDF::RNode>& rnodes) = 0;
118 
120  virtual std::unique_ptr<IBranchNamer> copy() const = 0;
121 
135  virtual std::pair<std::string, std::vector<std::string>> expandExpression(
136  const std::string& expression) const;
137 
153  virtual std::string interpretExpression(
154  const std::string& expression,
155  const std::vector<std::string>& branches,
156  const std::string& systematic);
157 
158  }; //> end class IBranchNamer
159 } //> end namespace RDFAnalysis
160 
161 #endif //> !RDFAnalysis_IBranchNamer_H
Abstract base class that describes how a Node should name its branches internally.
Definition: IBranchNamer.h:33
virtual void readBranchList(const std::map< std::string, ROOT::RDF::RNode > &rnodes)=0
Read branch lists from a set of rnodes.
virtual ~IBranchNamer()
Definition: IBranchNamer.h:35
virtual bool exists(const std::string &branch, const std::string &systName="") const =0
Test if a specific variation of a specific branch exists.
virtual const std::string & nominalName() const =0
Get the name of the nominal variation.
virtual std::pair< std::string, std::vector< std::string > > expandExpression(const std::string &expression) const
Expand a C++ expression into a pseudo-functional form.
Definition: IBranchNamer.cxx:30
virtual std::vector< std::string > branches() const =0
Get all branch base names.
Definition: CutflowDetail.h:11
virtual std::unique_ptr< IBranchNamer > copy() const =0
Make a copy of this class.
virtual std::vector< std::string > systematics() const =0
Get all systematics.
virtual std::set< std::string > systematicsAffecting(const std::string &branch) const =0
Get all systematics affecting a base branch name.
virtual std::string nameBranch(const std::string &branch, const std::string &systName="") const =0
Get the full name of a branch.
virtual std::string interpretExpression(const std::string &expression, const std::vector< std::string > &branches, const std::string &systematic)
Interpret an expression for a given systematic variation.
Definition: IBranchNamer.cxx:58
virtual std::vector< std::string > nameBranches(const std::vector< std::string > &branches, const std::string &systName="") const
Get the full names of a list of branches.
Definition: IBranchNamer.cxx:8
virtual std::string createBranch(const std::string &branch, const std::string &systName="")=0
Create a new branch.