5#ifndef TAUANALYSISTOOLS_COMMONEFFICIENCYTOOL_H
6#define TAUANALYSISTOOLS_COMMONEFFICIENCYTOOL_H
38namespace ADD_CMODE(TauAnalysisTools)
42class TauEfficiencyCorrectionsTool;
44class CommonEfficiencyTool
45 :
public virtual ITauEfficiencyCorrectionsTool
50 ASG_TOOL_CLASS( CommonEfficiencyTool, TauAnalysisTools::ITauEfficiencyCorrectionsTool )
54 CommonEfficiencyTool(
const std::string& sName);
56 ~CommonEfficiencyTool();
64 unsigned int iRunNumber = 0 )
override;
67 unsigned int iRunNumber)
const;
70 unsigned int iRunNumber = 0 )
override;
83 virtual StatusCode applySystematicVariation (
const CP::SystematicSet& sSystematicSet)
override;
85 virtual bool isSupportedRunNumber(
int )
const override
92 std::string ConvertProngToString(
const int iProngness)
const;
93 std::string ConvertDecayModeToString(
const int iDecayMode)
const;
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;
104 std::unique_ptr<int> m_dummy;
106 std::unique_ptr< tSFMAP > m_mSF;
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;
117 void ReadInputs(
const TFile& fFile);
118 void addHistogramToSFMap(TKey* kKey,
const std::string& sKeyName);
120 virtual CP::CorrectionCode getValue(
const std::string& sHistName,
122 double& dEfficiencyScaleFactor)
const;
124 static CP::CorrectionCode getValueTH1(
const TObject* oObject,
125 double& dEfficiencyScaleFactor,
128 static CP::CorrectionCode getValueTH2(
const TObject* oObject,
129 double& dEfficiencyScaleFactor,
132 static CP::CorrectionCode getValueTF1(
const TObject* oObject,
133 double& dEfficiencyScaleFactor,
137 void generateSystematicSets();
141 CP::SystematicSet m_sAffectingSystematics;
142 CP::SystematicSet m_sRecommendedSystematics;
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};
154 std::string m_sInputFileName;
155 std::string m_sSFHistName;
156 bool m_bNoMultiprong;
160 bool m_bSFIsAvailable;
161 bool m_bSFIsAvailableChecked;
166 struct Accessors :
public columnar::ColumnarTool<>
168 Accessors(CommonEfficiencyTool& tool) : columnar::ColumnarTool<>(&
tool) {}
183 TauAnalysisTools::TruthParticleTypeAccessor<> m_truthParticleType{*
this};
187 std::unique_ptr<Accessors> m_accessors;