RDFAnalysis  0.1.1
Physics analysis with ROOT::RDataFrame
DefaultBranchNamer.h
Go to the documentation of this file.
1 #ifndef RDFAnalysis_BranchNamer_H
2 #define RDFAnalysis_BranchNamer_H
3 
4 // STL includes
5 #include <map>
6 
7 // package includes
9 
15 namespace RDFAnalysis {
25  public:
36  const std::vector<std::string>& systematics,
37  bool systNameFirst = true,
38  bool inputFromFriends = false,
39  const std::string& nominalName = "NOSYS") :
40  m_systematics(systematics),
41  m_systNameFirst(systNameFirst),
42  m_inputFromFriendTrees(inputFromFriends),
43  m_nominalName(nominalName) {}
44 
54  std::string nameBranch(
55  const std::string& branch,
56  const std::string& systName = "") const override;
57 
66  std::string createBranch(
67  const std::string& branch,
68  const std::string& systName = "") override;
69 
75  bool exists(
76  const std::string& branch,
77  const std::string& systName = "") const override;
78 
84  std::string newBranchName(
85  const std::string& branch,
86  const std::string& systName = "") const;
87 
89  const std::string& nominalName() const override { return m_nominalName; }
90 
94  std::vector<std::string> systematics() const override
95  { return m_systematics; }
96 
101  std::set<std::string> systematicsAffecting(
102  const std::string& branch) const override;
103 
107  std::vector<std::string> branches() const override;
108 
113  void readBranchList( const std::map<std::string, ROOT::RDF::RNode>& rnodes ) override;
114 
115  std::unique_ptr<IBranchNamer> copy() const override
116  { return std::make_unique<DefaultBranchNamer>(*this); }
117  private:
118 
120  std::map<std::string, std::map<std::string, std::string>> m_branches;
121 
123  std::vector<std::string> m_systematics;
124 
127  bool m_systNameFirst{true};
128 
130  bool m_inputFromFriendTrees{true};
131 
133  std::string m_nominalName{"NOSYS"};
134 
135  }; //> end class DefaultBranchNamer
136 } //> end namespace RDFAnalysis
137 #endif //gb> !RDFAnalysis_BranchNamer_H
std::string createBranch(const std::string &branch, const std::string &systName="") override
Get the full name of a branch.
Definition: DefaultBranchNamer.cxx:34
Abstract base class that describes how a Node should name its branches internally.
Definition: IBranchNamer.h:33
Default implementation of the IBranchNamer interface.
Definition: DefaultBranchNamer.h:24
void readBranchList(const std::map< std::string, ROOT::RDF::RNode > &rnodes) override
Set the node that this namer is looking at.
Definition: DefaultBranchNamer.cxx:107
const std::string & nominalName() const override
Print the name of the nominal variation.
Definition: DefaultBranchNamer.h:89
std::unique_ptr< IBranchNamer > copy() const override
Make a copy of this class.
Definition: DefaultBranchNamer.h:115
std::vector< std::string > branches() const override
Get all branch base names.
Definition: DefaultBranchNamer.cxx:99
Definition: CutflowDetail.h:11
std::vector< std::string > systematics() const override
Get all systematics.
Definition: DefaultBranchNamer.h:94
std::string newBranchName(const std::string &branch, const std::string &systName="") const
Get the full name of a branch.
Definition: DefaultBranchNamer.cxx:74
DefaultBranchNamer(const std::vector< std::string > &systematics, bool systNameFirst=true, bool inputFromFriends=false, const std::string &nominalName="NOSYS")
Construct the namer.
Definition: DefaultBranchNamer.h:35
The branch naming interface.
std::string nameBranch(const std::string &branch, const std::string &systName="") const override
Get the full name of a branch.
Definition: DefaultBranchNamer.cxx:9
std::set< std::string > systematicsAffecting(const std::string &branch) const override
Get all systematics affecting a base branch name.
Definition: DefaultBranchNamer.cxx:85
bool exists(const std::string &branch, const std::string &systName="") const override
Test if a specific variation of a specific branch exists.
Definition: DefaultBranchNamer.cxx:62