24namespace ADD_CMODE(TauAnalysisTools)
28DiTauEfficiencyCorrectionsTool::DiTauEfficiencyCorrectionsTool(
const std::string& sName )
31 , m_bIsConfigured(
false)
36DiTauEfficiencyCorrectionsTool::~DiTauEfficiencyCorrectionsTool()
42StatusCode DiTauEfficiencyCorrectionsTool::initialize()
45 ATH_MSG_INFO(
"Initializing DiTauEfficiencyCorrectionsTool" );
47 if (m_bSkipTruthMatchCheck)
48 ATH_MSG_WARNING(
"Truth match check will be skipped. This is ONLY FOR TESTING PURPOSE!");
50 if (m_sRecommendationTag ==
"2017-moriond")
51 ATH_CHECK(initializeTools_2017_moriond());
54 ATH_MSG_FATAL(
"Unknown RecommendationTag: "<<m_sRecommendationTag);
55 return StatusCode::FAILURE;
60 if (!registry.registerSystematics(*
this))
63 return StatusCode::FAILURE;
68 return StatusCode::SUCCESS;
73StatusCode DiTauEfficiencyCorrectionsTool::beginEvent()
78 ATH_CHECK(evtStore()->retrieve(xEventInfo,
"EventInfo"));
80 m_bIsConfigured =
true;
83 return StatusCode::SUCCESS;
88void DiTauEfficiencyCorrectionsTool::printConfig()
const
90 ATH_MSG_DEBUG(
"DiTauEfficiencyCorrectionsTool with name " << name() <<
" is configured as follows:" );
91 for (
auto iEfficiencyCorrectionType : m_vEfficiencyCorrectionTypes) {
92 ATH_MSG_DEBUG(
" EfficiencyCorrectionTypes " << iEfficiencyCorrectionType );
94 ATH_MSG_DEBUG(
" InputFilePathJetIDHadTau " << m_sInputFilePathJetIDHadTau );
95 ATH_MSG_DEBUG(
" VarNameJetIDHadTau " << m_sVarNameJetIDHadTau );
96 ATH_MSG_DEBUG(
" RecommendationTag " << m_sRecommendationTag );
108 double dToolEff = 1.;
109 CP::CorrectionCode tmpCorrectionCode = m_tTool->getEfficiencyScaleFactor(xDiTau, dToolEff);
111 return tmpCorrectionCode;
126 return tmpCorrectionCode;
136 if (m_tTool->isAffectedBySystematic(systematic))
147 sAffectingSystematics.
insert(m_tTool->affectingSystematics());
149 return sAffectingSystematics;
157 sRecommendedSystematics.
insert(m_tTool->recommendedSystematics());
159 return sRecommendedSystematics;
163StatusCode DiTauEfficiencyCorrectionsTool::applySystematicVariation (
const CP::SystematicSet& sSystematicSet)
165 if (m_tTool->applySystematicVariation(sSystematicSet) == StatusCode::FAILURE)
167 ATH_MSG_ERROR(
"failing in appying systematic uncertainty.");
168 return StatusCode::FAILURE;
171 return StatusCode::SUCCESS;
177StatusCode DiTauEfficiencyCorrectionsTool::initializeTools_2017_moriond()
179 std::string sDirectory =
"TauAnalysisTools/" + std::string(
sSharedFilesVersion) +
"/EfficiencyCorrections/";
180 for (
auto iEfficiencyCorrectionType : m_vEfficiencyCorrectionTypes)
185 if (m_sInputFilePathJetIDHadTau.empty()) {
186 sDirectory =
"TauAnalysisTools/00-04-00/EfficiencyCorrections/";
187 m_sInputFilePathJetIDHadTau = sDirectory+
"JetID_TrueHadDiTau_2017-fall.root";
189 if (m_sVarNameJetIDHadTau.empty()) m_sVarNameJetIDHadTau =
"DiTauScaleFactorJetIDHadTau";
191 std::string wp = ConvertJetIDToString(m_iJetIDLevel);
193 if (m_tTool.empty()){
194 asg::AsgToolConfig config(
"TauAnalysisTools::CommonDiTauEfficiencyTool/JetIDHadTauTool_"+wp);
195 ATH_CHECK(config.setProperty(
"InputFilePath", m_sInputFilePathJetIDHadTau));
196 ATH_CHECK(config.setProperty(
"VarName", m_sVarNameJetIDHadTau));
197 ATH_CHECK(config.setProperty(
"SkipTruthMatchCheck", m_bSkipTruthMatchCheck));
199 ATH_CHECK(config.makePrivateTool(m_tTool));
205 ATH_MSG_WARNING(
"unsupported EfficiencyCorrectionsType with enum " << iEfficiencyCorrectionType);
208 return StatusCode::SUCCESS;
212std::string DiTauEfficiencyCorrectionsTool::ConvertJetIDToString(
const int iLevel)
const
217 return "ditaureconstruction";
220 return "jetbdtsigveryloose";
223 return "jetbdtsigloose";
226 return "jetbdtsigmedium";
229 return "jetbdtsigtight";
232 assert(
false &&
"No valid ID level passed. Breaking up ...");