1 #ifndef RDFAnalysis_SysVar_H 2 #define RDFAnalysis_SysVar_H 46 template <
typename T,
typename=
void>
61 struct sysvar_traits<T, std::enable_if_t<std::decay_t<T>::is_rdf_sysvar, void>>
79 return std::forward<typename sysvar_traits<T>::value_type>(t.translate(namer, syst) );
91 return std::forward<T>(t);
100 static constexpr
bool is_rdf_sysvar =
true;
109 m_branch(branchName) {}
118 std::string m_branch;
127 static constexpr
bool is_rdf_sysvar =
true;
136 m_branchNames(branchNames) {}
145 std::vector<std::string> m_branchNames;
154 static constexpr
bool is_rdf_sysvar =
true;
163 m_branch(branchName) {}
172 std::string m_branch;
181 static constexpr
bool is_rdf_sysvar =
true;
194 const std::string& expressionTemplate,
195 const std::vector<std::string>& columnNames) :
196 m_template(expressionTemplate),
197 m_columns(columnNames) {}
206 std::string m_template;
208 std::vector<std::string> m_columns;
212 #endif //> !RDFAnalysis_SysVar_H std::string value_type
The translated value type.
Definition: SysVar.h:156
std::vector< std::string > translate(IBranchNamer &namer, const std::string &syst)
Return the translated branch names.
Definition: SysVar.h:139
Class to trigger translation of a string expression.
Definition: SysVar.h:178
Abstract base class that describes how a Node should name its branches internally.
Definition: IBranchNamer.h:33
SysVarNewBranch(const std::string &branchName)
Create the branch.
Definition: SysVar.h:162
std::string value_type
The translated value type.
Definition: SysVar.h:102
SysVarBranch(const std::string &branchName)
Construct the branch.
Definition: SysVar.h:108
Class to trigger translation of a vector of branches.
Definition: SysVar.h:124
Provide contextual information about a class.
Definition: SysVar.h:47
T value_type
The translated value type.
Definition: SysVar.h:51
Class to trigger translation of a new branch name.
Definition: SysVar.h:151
SysVarStringExpression(const std::string &expressionTemplate, const std::vector< std::string > &columnNames)
Construct the expression.
Definition: SysVar.h:193
Definition: CutflowDetail.h:11
std::vector< std::string > value_type
The translated value type.
Definition: SysVar.h:129
typename std::decay_t< T >::value_type value_type
The translated value type.
Definition: SysVar.h:66
SysVarBranchVector(const std::vector< std::string > &branchNames)
Construct the vector.
Definition: SysVar.h:135
The branch naming interface.
std::string translate(IBranchNamer &namer, const std::string &syst)
Return the translated expression.
Definition: SysVar.h:200
std::string translate(IBranchNamer &namer, const std::string &syst)
Return the translated branch name.
Definition: SysVar.h:166
std::string value_type
The translated value type.
Definition: SysVar.h:183
std::string translate(IBranchNamer &namer, const std::string &syst)
Return the translated branch name.
Definition: SysVar.h:112
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
static constexpr bool is_sysvar
If this is a translatable quantity.
Definition: SysVar.h:49
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
Class to trigger translation of a single branch name.
Definition: SysVar.h:97
std::enable_if_t< sysvar_traits< T >::is_sysvar, typename sysvar_traits< T >::value_type > sysVarTranslate(T &&t, IBranchNamer &namer, const std::string &syst)
Translate a variable.
Definition: SysVar.h:77
virtual std::string createBranch(const std::string &branch, const std::string &systName="")=0
Create a new branch.