configure this tool for the given list of systematic variations. any requested systematics that are not affecting this tool will be silently ignored
39{
40
41
42class TauEfficiencyCorrectionsTool;
43
44class CommonEfficiencyTool
45 : public virtual ITauEfficiencyCorrectionsTool
48{
50 ASG_TOOL_CLASS( CommonEfficiencyTool, TauAnalysisTools::ITauEfficiencyCorrectionsTool )
51
52public:
53
54 CommonEfficiencyTool(const std::string& sName);
55
56 ~CommonEfficiencyTool();
57
59
60
61
62
63 virtual CP::CorrectionCode getEfficiencyScaleFactor(
const xAOD::TauJet& tau,
double& dEfficiencyScaleFactor,
64 unsigned int iRunNumber = 0 ) override;
65
66 CP::CorrectionCode getEfficiencyScaleFactor(
columnar::TauJetId tau,
double& dEfficiencyScaleFactor,
67 unsigned int iRunNumber) const;
68
69 virtual CP::CorrectionCode applyEfficiencyScaleFactor(
const xAOD::TauJet& xTau,
70 unsigned int iRunNumber = 0 ) override;
71
73 virtual bool isAffectedBySystematic( const CP::SystematicVariation& systematic ) const override;
74
76 virtual CP::SystematicSet affectingSystematics() const override;
77
79 virtual CP::SystematicSet recommendedSystematics() const override;
80
83 virtual StatusCode applySystematicVariation (
const CP::SystematicSet& sSystematicSet)
override;
84
85 virtual bool isSupportedRunNumber( int ) const override
86 {
87 return true;
88 };
89
90protected:
91
92 std::string ConvertProngToString(const int iProngness) const;
93 std::string ConvertDecayModeToString(const int iDecayMode) const;
94
95 typedef std::tuple<TObject*,
96 CP::CorrectionCode (*)(const TObject* oObject,
97 double& dEfficiencyScaleFactor,
98 double dVars[] ) > tTupleObjectFunc;
99 typedef std::map<std::string, tTupleObjectFunc > tSFMAP;
100
101
102
103#ifdef __CLING__
104 std::unique_ptr<int> m_dummy;
105#else
106 std::unique_ptr< tSFMAP > m_mSF;
107#endif
108
109 std::unordered_map < CP::SystematicSet, std::string > m_mSystematicSets;
110 const CP::SystematicSet* m_sSystematicSet;
111 std::map<std::string, int> m_mSystematics;
112 std::map<std::string, std::string> m_mSystematicsHistNames;
113
116
117 void ReadInputs(const TFile& fFile);
118 void addHistogramToSFMap(TKey* kKey, const std::string& sKeyName);
119
120 virtual CP::CorrectionCode getValue(const std::string& sHistName,
122 double& dEfficiencyScaleFactor) const;
123
124 static CP::CorrectionCode getValueTH1(const TObject* oObject,
125 double& dEfficiencyScaleFactor,
126 double dVars[]
127 );
128 static CP::CorrectionCode getValueTH2(const TObject* oObject,
129 double& dEfficiencyScaleFactor,
130 double dVars[]
131 );
132 static CP::CorrectionCode getValueTF1(const TObject* oObject,
133 double& dEfficiencyScaleFactor,
134 double dVars[]
135 );
136
137 void generateSystematicSets();
138
139protected:
140
141 CP::SystematicSet m_sAffectingSystematics;
142 CP::SystematicSet m_sRecommendedSystematics;
143
144 Gaudi::Property<std::string> m_sInputFilePath{this, "InputFilePath", ""};
145 Gaudi::Property<std::string> m_sVarName{this, "VarName", ""};
146 Gaudi::Property<std::string> m_sWP{this, "WP", ""};
147 Gaudi::Property<bool> m_bSkipTruthMatchCheck{this, "SkipTruthMatchCheck", false};
150 Gaudi::Property<bool> m_bUseTauSubstructure{this, "UseTauSubstructure", false};
151 Gaudi::Property<bool> m_doTauTrig{this, "DoTauTrig", false};
152 Gaudi::Property<bool> m_applyToData{this, "ApplyToData", false};
153
154 std::string m_sInputFileName;
155 std::string m_sSFHistName;
156 bool m_bNoMultiprong;
157
159
160 bool m_bSFIsAvailable;
161 bool m_bSFIsAvailableChecked;
162
163
164public:
165
166 struct Accessors : public columnar::ColumnarTool<>
167 {
168 Accessors(CommonEfficiencyTool& tool) : columnar::ColumnarTool<>(&
tool) {}
169
172
173
174
177
179
180
181
183 TauAnalysisTools::TruthParticleTypeAccessor<> m_truthParticleType{*this};
186 };
187 std::unique_ptr<Accessors> m_accessors;
188
191
192
193};
194}
::StatusCode StatusCode
StatusCode definition for legacy code.
AccessorTemplate< TauJetDef, CT, ColumnAccessMode::output, CM > TauJetDecorator
ObjectRange< TauJetDef > TauJetRange
ObjectRange< EventContextDef > EventContextRange
AccessorTemplate< JetDef, CT, ColumnAccessMode::input, CM > JetAccessor
ObjectId< TauJetDef > TauJetId
AccessorTemplate< TruthParticleDef, CT, ColumnAccessMode::input, CM > TruthParticleAccessor
ObjectId< EventInfoDef > EventInfoId
AccessorTemplate< TauJetDef, CT, ColumnAccessMode::input, CM > TauJetAccessor
AccessorTemplate< EventInfoDef, CT, ColumnAccessMode::input, CM > EventInfoAccessor
TauJet_v3 TauJet
Definition of the current "tau version".