ATLAS Offline Software
TauEfficiencyCorrectionsTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // EDM include(s):
8 
9 // Local include(s):
11 #include "TauAnalysisTools/Enums.h"
13 
14 namespace TauAnalysisTools
15 {
16 
17 //______________________________________________________________________________
19  : asg::AsgMetadataTool( sName )
20  , m_vCommonEfficiencyTools()
21  , m_vTriggerEfficiencyTools()
22  , m_bIsData(false)
23  , m_bIsConfigured(false)
24  , m_iRunNumber(0)
25  , m_iMu(0)
26  , m_tPRWTool("")
27 {
28  declareProperty( "EfficiencyCorrectionTypes", m_vEfficiencyCorrectionTypes = {} );
29  declareProperty( "InputFilePathRecoHadTau", m_sInputFilePathRecoHadTau = "" );
30  declareProperty( "InputFilePathEleIDHadTau", m_sInputFilePathEleIDHadTau = "" );
31  declareProperty( "InputFilePathEleIDElectron", m_sInputFilePathEleIDElectron = "" );
32  declareProperty( "InputFilePathJetIDHadTau", m_sInputFilePathJetIDHadTau = "" );
33  declareProperty( "InputFilePathTriggerHadTau", m_sInputFilePathTriggerHadTau = "" );
34  declareProperty( "VarNameRecoHadTau", m_sVarNameRecoHadTau = "" );
35  declareProperty( "VarNameEleIDHadTau", m_sVarNameEleIDHadTau = "" );
36  declareProperty( "VarNameEleIDElectron", m_sVarNameEleIDElectron = "" );
37  declareProperty( "VarNameJetIDHadTau", m_sVarNameJetIDHadTau = "" );
38  declareProperty( "VarNameDecayModeHadTau", m_sVarNameDecayModeHadTau = "" );
39  declareProperty( "VarNameTriggerHadTau", m_sVarNameTriggerHadTau = "" );
40  declareProperty( "RecommendationTag", m_sRecommendationTag = "2022-prerec" );
41  declareProperty( "TriggerName", m_sTriggerName = "" );
42  declareProperty( "AutoTriggerYear", m_bReadRandomRunNumber = false );
43  declareProperty( "TriggerSFMeasurement", m_sTriggerSFMeasurement = "combined" ); // "combined", "Ztautau" or "ttbar"
44  declareProperty( "UseTauSubstructure", m_bUseTauSubstructure = false );
45  declareProperty( "JetIDLevel", m_iJetIDLevel = (int)JETIDNONE );
46  declareProperty( "EleIDLevel", m_iEleIDLevel = (int)ELEIDNONE );
47  declareProperty( "MCCampaign", m_sMCCampaign = "" ); // MC16a, MC16d or MC16e
48  declareProperty( "useFastSim", m_useFastSim = false );
49  declareProperty( "SkipTruthMatchCheck", m_bSkipTruthMatchCheck = false );
50  declareProperty( "PileupReweightingTool", m_tPRWTool );
51 }
52 
53 
54 //______________________________________________________________________________
56 {
57  for (auto tTool : m_vCommonEfficiencyTools)
58  delete tTool;
59  for (auto tTool : m_vTriggerEfficiencyTools)
60  delete tTool;
61 }
62 
63 //______________________________________________________________________________
65 {
66  ATH_MSG_INFO( "Initializing TauEfficiencyCorrectionsTool" );
67 
69  ATH_MSG_WARNING("Truth match check will be skipped. This is ONLY FOR TESTING PURPOSE!");
70 
71  if (!m_tPRWTool.empty())
72  ATH_CHECK(m_tPRWTool.retrieve());
73 
74  // check efficiency correction type
75  if (m_vEfficiencyCorrectionTypes.empty())
76  {
77  ATH_MSG_ERROR("Could not retrieve any EfficiencyCorrectionType");
78  return StatusCode::FAILURE;
79  }
80 
81  if (m_sRecommendationTag == "2022-prerec") {
82  ATH_MSG_WARNING("2022-prerec tag are pre-recommendations and still under development.");
84  }
85  else {
86  ATH_MSG_ERROR("Unknown RecommendationTag " << m_sRecommendationTag);
87  return StatusCode::FAILURE;
88  }
89 
90  // for (auto tCommonEfficiencyTool : m_vCommonEfficiencyTools)
91  for (auto it = m_vCommonEfficiencyTools.begin(); it != m_vCommonEfficiencyTools.end(); it++)
92  {
93  ATH_CHECK((**it).setProperty("OutputLevel", this->msg().level()));
94  ATH_CHECK((**it).initialize());
95  }
96  for (auto it = m_vTriggerEfficiencyTools.begin(); it != m_vTriggerEfficiencyTools.end(); it++)
97  {
98  ATH_CHECK((**it).setProperty("OutputLevel", this->msg().level()));
99  ATH_CHECK((**it).initialize());
100  }
101 
102  // Add the affecting systematics to the global registry
104  if (!registry.registerSystematics(*this))
105  {
106  ATH_MSG_ERROR ("Unable to register the systematics");
107  return StatusCode::FAILURE;
108  }
109 
110  printConfig();
111 
112  return StatusCode::SUCCESS;
113 }
114 
116 {
117  const xAOD::EventInfo* xEventInfo = nullptr;
118  ATH_CHECK(evtStore()->retrieve(xEventInfo, "EventInfo"));
119 
120  if (xEventInfo->runNumber() != 284500 && xEventInfo->runNumber() != 300000 && xEventInfo->runNumber() != 310000) // mc21/2022: 410000
121  {
122  ANA_MSG_WARNING( "Could not determine MC campaign from run number! The mu dependent systematic of the trigger scale factors should not be trusted. Current (" << xEventInfo->runNumber() << "). Will only print this warning once." );
123  }
124  if (xEventInfo->runNumber() < 410000 && m_sRecommendationTag == "2022-prerec") // mc21/2022: 410000
125  {
126  ANA_MSG_WARNING( "TauEfficiency callibrations from 2022-prerec are not recommended for Run2 MC. Will only print this warning once." );
127  }
128  return StatusCode::SUCCESS;
129 }
130 
132 {
133  if (!m_bIsConfigured)
134  {
135  const xAOD::EventInfo* xEventInfo = nullptr;
136  ATH_CHECK(evtStore()->retrieve(xEventInfo,"EventInfo"));
138  m_bIsConfigured = true;
139  }
140 
141  if (!m_firstEvent){
143  m_firstEvent = true;
144 
145  }
146  if (m_bIsData)
147  return StatusCode::SUCCESS;
148 
149  const xAOD::EventInfo* xEventInfo = nullptr;
150  ATH_CHECK(evtStore()->retrieve(xEventInfo, "EventInfo"));
151  m_iMu = xEventInfo->averageInteractionsPerCrossing();
152 
154  {
155  // Reset the number at the beginning of event
156  m_iRunNumber = 0;
157  return StatusCode::SUCCESS;
158  }
159 
160  if (m_tPRWTool.empty())
161  return StatusCode::SUCCESS;
162 
163  m_iRunNumber = m_tPRWTool->getRandomRunNumber(*xEventInfo);
164  return StatusCode::SUCCESS;
165 }
166 
167 //______________________________________________________________________________
169 {
170  ATH_MSG_DEBUG( "TauEfficiencyCorrectionsTool with name " << name() << " is configured as follows:" );
171  for (auto iEfficiencyCorrectionType : m_vEfficiencyCorrectionTypes) {
172  ATH_MSG_DEBUG( " EfficiencyCorrectionTypes " << iEfficiencyCorrectionType );
173  }
174  ATH_MSG_DEBUG( " InputFilePathRecoHadTau " << m_sInputFilePathRecoHadTau );
175  ATH_MSG_DEBUG( " InputFilePathEleIDHadTau " << m_sInputFilePathEleIDHadTau );
176  ATH_MSG_DEBUG( " InputFilePathEleIDElectron " << m_sInputFilePathEleIDElectron );
177  ATH_MSG_DEBUG( " InputFilePathJetIDHadTau " << m_sInputFilePathJetIDHadTau );
178  ATH_MSG_DEBUG( " InputFilePathDecayModeHadTau " << m_sInputFilePathDecayModeHadTau );
179  ATH_MSG_DEBUG( " InputFilePathTriggerHadTau " << m_sInputFilePathTriggerHadTau );
180  ATH_MSG_DEBUG( " VarNameRecoHadTau " << m_sVarNameRecoHadTau );
181  ATH_MSG_DEBUG( " VarNameEleIDHadTau " << m_sVarNameEleIDHadTau );
182  ATH_MSG_DEBUG( " VarNameEleIDElectron " << m_sVarNameEleIDElectron );
183  ATH_MSG_DEBUG( " VarNameJetIDHadTau " << m_sVarNameJetIDHadTau );
184  ATH_MSG_DEBUG( " VarNameDecayModeHadTau " << m_sVarNameDecayModeHadTau );
185  ATH_MSG_DEBUG( " VarNameTriggerHadTau " << m_sVarNameTriggerHadTau );
186  ATH_MSG_DEBUG( " RecommendationTag " << m_sRecommendationTag );
187  ATH_MSG_DEBUG( " TriggerName " << m_sTriggerName );
188  ATH_MSG_DEBUG( " UseTauSubstructure " << m_bUseTauSubstructure );
189  ATH_MSG_DEBUG( " JetIDLevel " << m_iJetIDLevel );
190  ATH_MSG_DEBUG( " EleIDLevel " << m_iEleIDLevel );
191  ATH_MSG_DEBUG( " MCCampaign " << m_sMCCampaign );
192  ATH_MSG_DEBUG( " useFastSim " << m_useFastSim);
193 }
194 
195 //______________________________________________________________________________
197  double& eff, unsigned int /*iRunNumber*/, unsigned int /*iMu*/)
198 {
199  eff = 1.;
200 
201  if (m_bIsData)
202  return CP::CorrectionCode::Ok;
203 
206 
207  for (auto it = m_vCommonEfficiencyTools.begin(); it != m_vCommonEfficiencyTools.end(); it++)
208  {
209  if ( !(**it)->isSupportedRunNumber(m_iRunNumber) )
210  continue;
211  double dToolEff = 1.;
212  CP::CorrectionCode tmpCorrectionCode = (**it)->getEfficiencyScaleFactor(xTau, dToolEff, m_iRunNumber, m_iMu);
213  if (tmpCorrectionCode != CP::CorrectionCode::Ok)
214  return tmpCorrectionCode;
215  eff *= dToolEff;
216  }
217  for (auto it = m_vTriggerEfficiencyTools.begin(); it != m_vTriggerEfficiencyTools.end(); it++)
218  {
219  if ( !(**it)->isSupportedRunNumber(m_iRunNumber) )
220  continue;
221  double dToolEff = 1.;
222  CP::CorrectionCode tmpCorrectionCode = (**it)->getEfficiencyScaleFactor(xTau, dToolEff);
223  if (tmpCorrectionCode != CP::CorrectionCode::Ok)
224  return tmpCorrectionCode;
225  eff *= dToolEff;
226  }
227  return CP::CorrectionCode::Ok;
228 }
229 
230 //______________________________________________________________________________
231 CP::CorrectionCode TauEfficiencyCorrectionsTool::applyEfficiencyScaleFactor( const xAOD::TauJet& xTau, unsigned int /*iRunNumber*/, unsigned int /*iMu*/)
232 {
233  if (m_bIsData)
234  return CP::CorrectionCode::Ok;
235 
238 
239  for (auto it = m_vCommonEfficiencyTools.begin(); it != m_vCommonEfficiencyTools.end(); it++)
240  {
241  CP::CorrectionCode tmpCorrectionCode = (**it)->applyEfficiencyScaleFactor(xTau, m_iRunNumber, m_iMu);
242  if (tmpCorrectionCode != CP::CorrectionCode::Ok)
243  return tmpCorrectionCode;
244  }
245  for (auto it = m_vTriggerEfficiencyTools.begin(); it != m_vTriggerEfficiencyTools.end(); it++)
246  {
247  if ( !(**it)->isSupportedRunNumber(m_iRunNumber) )
248  continue;
249  CP::CorrectionCode tmpCorrectionCode = (**it)->applyEfficiencyScaleFactor(xTau, m_iRunNumber, m_iMu);
250  if (tmpCorrectionCode != CP::CorrectionCode::Ok)
251  return tmpCorrectionCode;
252  }
253  return CP::CorrectionCode::Ok;
254 }
255 
257 //______________________________________________________________________________
259 {
260  for (auto it = m_vCommonEfficiencyTools.begin(); it != m_vCommonEfficiencyTools.end(); it++)
261  if ((**it)->isAffectedBySystematic(systematic))
262  return true;
263  for (auto it = m_vTriggerEfficiencyTools.begin(); it != m_vTriggerEfficiencyTools.end(); it++)
264  if ((**it)->isAffectedBySystematic(systematic))
265  return true;
266  return false;
267 }
268 
270 //______________________________________________________________________________
272 {
273  CP::SystematicSet sAffectingSystematics;
274  for (auto it = m_vCommonEfficiencyTools.begin(); it != m_vCommonEfficiencyTools.end(); it++)
275  sAffectingSystematics.insert((**it)->affectingSystematics());
276  for (auto it = m_vTriggerEfficiencyTools.begin(); it != m_vTriggerEfficiencyTools.end(); it++)
277  sAffectingSystematics.insert((**it)->affectingSystematics());
278  return sAffectingSystematics;
279 }
280 
282 //______________________________________________________________________________
284 {
285  CP::SystematicSet sRecommendedSystematics;
286  for (auto it = m_vCommonEfficiencyTools.begin(); it != m_vCommonEfficiencyTools.end(); it++)
287  sRecommendedSystematics.insert((**it)->recommendedSystematics());
288  for (auto it = m_vTriggerEfficiencyTools.begin(); it != m_vTriggerEfficiencyTools.end(); it++)
289  sRecommendedSystematics.insert((**it)->recommendedSystematics());
290  return sRecommendedSystematics;
291 }
292 
293 //______________________________________________________________________________
295 {
296  for (auto it = m_vCommonEfficiencyTools.begin(); it != m_vCommonEfficiencyTools.end(); it++)
297  if ((**it)->applySystematicVariation(sSystematicSet) == StatusCode::FAILURE)
298  return StatusCode::FAILURE;
299  for (auto it = m_vTriggerEfficiencyTools.begin(); it != m_vTriggerEfficiencyTools.end(); it++)
300  if ((**it)->applySystematicVariation(sSystematicSet) == StatusCode::FAILURE)
301  return StatusCode::FAILURE;
302  return StatusCode::SUCCESS;
303 }
304 
305 //=================================PRIVATE-PART=================================
306 
307 //______________________________________________________________________________
308 // this whole block is a place holder until we get R22 Run2 recommendations
309 // none of these SFs are valid for R22 MC, except possibly RNN ID to very coarse approximation
311 {
312  std::string sDirectory = "TauAnalysisTools/" + std::string(sSharedFilesVersion) + "/EfficiencyCorrections/";
313 
314  // initialise paths and SF names unless they have been configured by the user
315  for (auto iEfficiencyCorrectionType : m_vEfficiencyCorrectionTypes)
316  {
317  if (iEfficiencyCorrectionType == SFJetIDHadTau)
318  {
319  if (m_sInputFilePathJetIDHadTau.empty()) {
320  if(m_useFastSim) {
321  ATH_MSG_WARNING("No fast-sim recommendation for Tau RNN, using full sim");
322  }
323 
324  m_sInputFilePathJetIDHadTau = sDirectory + "RNNID_TrueHadTau_2022-prerecommendation_v2.root";
325  }
326  if (m_sVarNameJetIDHadTau.empty()) m_sVarNameJetIDHadTau = "TauScaleFactorJetIDHadTau";
327 
328  std::string sJetIDWP = ConvertJetIDToString(m_iJetIDLevel);
329  if (sJetIDWP.empty()) {
330  ATH_MSG_WARNING("Could not find valid ID working point. Skip ID efficiency corrections.");
331  continue;
332  }
333 
334  asg::AnaToolHandle<ITauEfficiencyCorrectionsTool>* tTool = new asg::AnaToolHandle<ITauEfficiencyCorrectionsTool>("TauAnalysisTools::CommonEfficiencyTool/JetIDHadTauTool", this);
335  m_vCommonEfficiencyTools.push_back(tTool);
336  ATH_CHECK(tTool->setProperty("InputFilePath", m_sInputFilePathJetIDHadTau));
337  ATH_CHECK(tTool->setProperty("VarName", m_sVarNameJetIDHadTau));
338  //ATH_CHECK(tTool->setProperty("UseTauSubstructure", m_bUseTauSubstructure));
339  ATH_CHECK(tTool->setProperty("SkipTruthMatchCheck", m_bSkipTruthMatchCheck));
340  ATH_CHECK(tTool->setProperty("WP", sJetIDWP));
341  }
342  else if (iEfficiencyCorrectionType == SFEleIDHadTau)
343  {
344  // the path must be updated once RNN eVeto SFs are available
345  if (m_sInputFilePathEleIDHadTau.empty()) m_sInputFilePathEleIDHadTau = sDirectory + "EleOLR_TrueHadTau_2016-ichep.root";
346  if (m_sVarNameEleIDHadTau.empty()) m_sVarNameEleIDHadTau = "TauScaleFactorEleIDHadTau";
347 
348  asg::AnaToolHandle<ITauEfficiencyCorrectionsTool>* tTool = new asg::AnaToolHandle<ITauEfficiencyCorrectionsTool>("TauAnalysisTools::CommonEfficiencyTool/EleIDHadTauTool", this);
349  m_vCommonEfficiencyTools.push_back(tTool);
350  ATH_CHECK(tTool->setProperty("InputFilePath", m_sInputFilePathEleIDHadTau));
351  ATH_CHECK(tTool->setProperty("VarName", m_sVarNameEleIDHadTau));
352  ATH_CHECK(tTool->setProperty("SkipTruthMatchCheck", m_bSkipTruthMatchCheck));
353  }
354  else if (iEfficiencyCorrectionType == SFEleIDElectron)
355  {
356  // the path must be updated once RNN eVeto SFs are available
357  if (m_sInputFilePathEleIDElectron.empty()) {
358  if(m_useFastSim) {
359  ATH_MSG_WARNING("No fast-sim recommendation for tau electron veto, using full sim");
360  }
361 
362  m_sInputFilePathEleIDElectron = sDirectory+ "EleRNN_TrueElectron_2022-mc20-prerec-v2.root";
363  }
364  if (m_sVarNameEleIDElectron.empty()) m_sVarNameEleIDElectron = "TauScaleFactorEleIDElectron";
365 
366  asg::AnaToolHandle<ITauEfficiencyCorrectionsTool>* tTool = new asg::AnaToolHandle<ITauEfficiencyCorrectionsTool>("TauAnalysisTools::CommonEfficiencyTool/EleIDElectronTool", this);
367  m_vCommonEfficiencyTools.push_back(tTool);
368  ATH_CHECK(tTool->setProperty("InputFilePath", m_sInputFilePathEleIDElectron));
369  ATH_CHECK(tTool->setProperty("VarName", m_sVarNameEleIDElectron));
370  ATH_CHECK(tTool->setProperty("SkipTruthMatchCheck", m_bSkipTruthMatchCheck));
372  ATH_CHECK(tTool->setProperty("UseTauSubstructure", false));
373  }
374  else if (iEfficiencyCorrectionType == SFRecoHadTau)
375  {
376  if (m_sInputFilePathRecoHadTau.empty()) m_sInputFilePathRecoHadTau = sDirectory + "Reco_TrueHadTau_2019-summer_v2.root";
377  if (m_sVarNameRecoHadTau.empty()) m_sVarNameRecoHadTau = "TauScaleFactorReconstructionHadTau";
378 
379  asg::AnaToolHandle<ITauEfficiencyCorrectionsTool>* tTool = new asg::AnaToolHandle<ITauEfficiencyCorrectionsTool>("TauAnalysisTools::CommonEfficiencyTool/RecoHadTauTool", this);
380  m_vCommonEfficiencyTools.push_back(tTool);
381  ATH_CHECK(tTool->setProperty("InputFilePath", m_sInputFilePathRecoHadTau));
382  ATH_CHECK(tTool->setProperty("VarName", m_sVarNameRecoHadTau));
383  ATH_CHECK(tTool->setProperty("SkipTruthMatchCheck", m_bSkipTruthMatchCheck));
384  }
385  else if (iEfficiencyCorrectionType == SFDecayModeHadTau)
386  {
387  if (m_sInputFilePathDecayModeHadTau.empty()) m_sInputFilePathDecayModeHadTau = sDirectory + "DecayModeSubstructure_TrueHadTau_2019-summer.root";
388  if (m_sVarNameDecayModeHadTau.empty()) m_sVarNameDecayModeHadTau = "TauScaleFactorDecayModeHadTau";
389 
390  std::string sJetIDWP = ConvertJetIDToString(m_iJetIDLevel);
391  if (sJetIDWP.empty()) {
392  ATH_MSG_WARNING("Could not find valid ID working point. Skip ID efficiency corrections.");
393  continue;
394  }
395 
397  m_vCommonEfficiencyTools.push_back(tTool);
399  ATH_CHECK(tTool->setProperty("InputFilePath", m_sInputFilePathDecayModeHadTau));
400  ATH_CHECK(tTool->setProperty("VarName", m_sVarNameDecayModeHadTau));
401  ATH_CHECK(tTool->setProperty("UseTauSubstructure", true));
402  ATH_CHECK(tTool->setProperty("SkipTruthMatchCheck", m_bSkipTruthMatchCheck));
403  ATH_CHECK(tTool->setProperty("WP", sJetIDWP));
404  }
405  else if (iEfficiencyCorrectionType == SFTriggerHadTau)
406  {
407  if (m_sTriggerName.empty()) {
408  ATH_MSG_ERROR("Property \"Trigger\" was not set, please provide a trigger name.");
409  return StatusCode::FAILURE;
410  }
411  if (m_sInputFilePathTriggerHadTau.empty()) {
412  // Determine the input file name from the given trigger name.
413  // Triggers having "mediumRNN_tracktwoMVA are only part of 2018aftTS1.
414  // Every other trigger having "tracktwoEF" is only part of 2018.
415  // Every other trigger having "tau160_medium1" is only part of 2016.
416  // Every other trigger having "tau160" is only part of 2017/2018.
417  // Lastly check for other possible triggers, if this is not fulfilled the passed trigger is not supported.
418  if (m_sTriggerName.find("mediumRNN_tracktwoMVA") != std::string::npos) {
419  m_sInputFilePathTriggerHadTau = sDirectory+"Trigger/RNN/Trigger_TrueHadTau_2019-summer_data2018aftTS1"+GetTriggerSFMeasurementString()+m_sTriggerName+".root";
420  }
421  else if (m_sTriggerName.find("tracktwoEF") != std::string::npos) {
422  m_sInputFilePathTriggerHadTau = sDirectory+"Trigger/RNN/Trigger_TrueHadTau_2019-summer_data2018"+GetTriggerSFMeasurementString()+m_sTriggerName+".root";
423  }
424  else if (m_sTriggerName.find("tau160_medium1") != std::string::npos) {
425  m_sInputFilePathTriggerHadTau = sDirectory+"Trigger/RNN/Trigger_TrueHadTau_2019-summer_data2016"+GetTriggerSFMeasurementString()+m_sTriggerName+".root";
426  }
427  else if ((m_sTriggerName.find("tau160") != std::string::npos) || (m_sTriggerName.find("tau60") != std::string::npos)) {
428  m_sInputFilePathTriggerHadTau = sDirectory+"Trigger/RNN/Trigger_TrueHadTau_2019-summer_data1718"+GetTriggerSFMeasurementString()+m_sTriggerName+".root";
429  }
430  else if ((m_sTriggerName.find("tau125") != std::string::npos) || (m_sTriggerName.find("tau25") != std::string::npos) || (m_sTriggerName.find("tau35") != std::string::npos) || (m_sTriggerName.find("tau50") != std::string::npos) || (m_sTriggerName.find("tau80") != std::string::npos) ) {
431  m_sInputFilePathTriggerHadTau = sDirectory+"Trigger/RNN/Trigger_TrueHadTau_2019-summer_data161718"+GetTriggerSFMeasurementString()+m_sTriggerName+".root";
432  }
433  else {
434  ATH_MSG_ERROR("Trigger " << m_sTriggerName << " is not supported. Please fix \"TriggerName\" property.");
435  return StatusCode::FAILURE;
436  }
437  }
438  if (m_sVarNameTriggerHadTau.empty()) m_sVarNameTriggerHadTau = "TauScaleFactorTriggerHadTau";
439 
440  asg::AnaToolHandle<ITauEfficiencyCorrectionsTool>* tTool = new asg::AnaToolHandle<ITauEfficiencyCorrectionsTool>("TauAnalysisTools::TauEfficiencyTriggerTool/TriggerHadTauTool", this);
441  m_vTriggerEfficiencyTools.push_back(tTool);
442  ATH_CHECK(tTool->setProperty("InputFilePath", m_sInputFilePathTriggerHadTau));
443  ATH_CHECK(tTool->setProperty("VarName", m_sVarNameTriggerHadTau));
444  ATH_CHECK(tTool->setProperty("SkipTruthMatchCheck", m_bSkipTruthMatchCheck));
446  }
447  else {
448  ATH_MSG_WARNING("unsupported EfficiencyCorrectionsType with enum " << iEfficiencyCorrectionType);
449  }
450  }
451 
452  return StatusCode::SUCCESS;
453 }
454 
455 // auto detection of simulation flavour, used to cross check configuration of tool
456 //______________________________________________________________________________
458 {
459  if (inputMetaStore()->contains<xAOD::FileMetaData>("FileMetaData")) {
460  const xAOD::FileMetaData* fmd = nullptr;
461  ATH_CHECK( inputMetaStore()->retrieve( fmd, "FileMetaData" ) );
462  std::string simType("");
463  bool result = fmd->value( xAOD::FileMetaData::simFlavour , simType );
464  // if no result -> no simFlavor metadata, so must be data
465  if(result) std::transform(simType.begin(), simType.end(), simType.begin(), ::toupper);
466 
467  if( simType.find("ATLFAST3") != std::string::npos && !m_useFastSim){
468  ATH_MSG_WARNING("Input file is AF3 sample but you are _not_ using AF3 corrections and uncertainties, you should set \"useFastSim\" to \"true\"");
469  } else if (simType.find("FULLG4")!=std::string::npos && m_useFastSim){
470  ATH_MSG_WARNING("Input file is full simulation but you are using AF3 corrections and uncertainties, you should set \"useFastSim\" to \"false\"");
471  }
472  }
473 
474  return StatusCode::SUCCESS;
475 }
476 
477 //______________________________________________________________________________
478 std::string TauEfficiencyCorrectionsTool::ConvertJetIDToString(const int iLevel) const
479 {
480  switch(iLevel)
481  {
482  case JETIDNONE:
483  return "none";
484  case JETIDRNNVERYLOOSE:
485  ATH_MSG_WARNING("Efficiency corrections for JETIDRNNVERYLOOSE working point are not supported.");
486  return "";
487  case JETIDRNNLOOSE:
488  return "jetrnnsigloose";
489  case JETIDRNNMEDIUM:
490  return "jetrnnsigmedium";
491  case JETIDRNNTIGHT:
492  return "jetrnnsigtight";
493  default:
494  ATH_MSG_WARNING("No valid JetID level passed.");
495  return "";
496  }
497 }
498 
499 std::string TauEfficiencyCorrectionsTool::ConvertEleIDToString(const int iLevel) const
500 {
501  switch(iLevel)
502  {
503  case ELEIDRNNTIGHT:
504  return "eleRNNTight";
505  case ELEIDRNNMEDIUM:
506  return "eleRNNMedium";
507  case ELEIDRNNLOOSE:
508  return "eleRNNLoose";
509  default:
510  ATH_MSG_WARNING("No valid EleID level passed.");
511  return "";
512  }
513 }
514 
515 //______________________________________________________________________________
517 {
518  switch(iLevel)
519  {
520  case JETIDRNNLOOSE:
521  return "loose";
522  case JETIDRNNMEDIUM:
523  return "medium";
524  case JETIDRNNTIGHT:
525  return "tight";
526  default:
527  ATH_MSG_WARNING("No valid TriggerID level passed.");
528  return "";
529  }
530 }
531 
532 //______________________________________________________________________________
534 {
535  std::string sMeasurement = "_comb_";
536 
537  if (m_sTriggerSFMeasurement == "Ztautau")
538  sMeasurement = "_Ztt_";
539  else if (m_sTriggerSFMeasurement == "ttbar")
540  sMeasurement = "_ttbar_";
541  else if (m_sTriggerSFMeasurement != "combined")
542  ATH_MSG_WARNING("Trigger scale factor measurement \'" << m_sTriggerSFMeasurement << "\' is not supported. \'combined\' is used instead.");
543 
544  return sMeasurement;
545 }
546 
548 {
550  {
551  static const SG::AuxElement::ConstAccessor<unsigned int> acc_rnd("RandomRunNumber");
552  const xAOD::EventInfo* eventInfo = nullptr;
553  if (!evtStore()->contains<xAOD::EventInfo>("EventInfo") || !evtStore()->retrieve(eventInfo, "EventInfo").isSuccess())
554  {
555  ANA_MSG_ERROR("Could not retrieve EventInfo");
556  return StatusCode::FAILURE;
557  }
558 
559  if (!acc_rnd.isAvailable(*eventInfo))
560  {
561  ANA_MSG_ERROR("Failed to find the RandomRunNumber decoration. Call the apply() method from the PileupReweightingTool beforehand to get period dependent SFs.");
562  return StatusCode::FAILURE;
563  }
564 
565  m_iRunNumber = acc_rnd(*eventInfo);
566 
567  ANA_MSG_VERBOSE("Read RandomRunNumber as " << m_iRunNumber);
568  }
569 
570  return StatusCode::SUCCESS;
571 }
572 
573 } // namespace TauAnalysisTools
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
python.Dso.registry
registry
Definition: Control/AthenaServices/python/Dso.py:159
TauAnalysisTools
Definition: TruthCollectionMakerTau.h:16
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_bIsConfigured
bool m_bIsConfigured
Definition: TauEfficiencyCorrectionsTool.h:116
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_bReadRandomRunNumber
bool m_bReadRandomRunNumber
Definition: TauEfficiencyCorrectionsTool.h:117
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_tPRWTool
ToolHandle< CP::IPileupReweightingTool > m_tPRWTool
Definition: TauEfficiencyCorrectionsTool.h:126
TauAnalysisTools::SFTriggerHadTau
@ SFTriggerHadTau
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:80
TauAnalysisTools::TauEfficiencyCorrectionsTool::isAffectedBySystematic
virtual bool isAffectedBySystematic(const CP::SystematicVariation &systematic) const
returns: whether this tool is affected by the given systematics
Definition: TauEfficiencyCorrectionsTool.cxx:258
asg::AnaToolHandle
a modified tool handle that allows its owner to configure new tools from the C++ side
Definition: AnaToolHandle.h:34
Enums.h
get_generator_info.result
result
Definition: get_generator_info.py:21
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
TauAnalysisTools::JETIDRNNTIGHT
@ JETIDRNNTIGHT
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:22
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sVarNameJetIDHadTau
std::string m_sVarNameJetIDHadTau
Definition: TauEfficiencyCorrectionsTool.h:107
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sInputFilePathJetIDHadTau
std::string m_sInputFilePathJetIDHadTau
Definition: TauEfficiencyCorrectionsTool.h:98
TauAnalysisTools::TauEfficiencyCorrectionsTool::GetTriggerSFMeasurementString
std::string GetTriggerSFMeasurementString() const
Definition: TauEfficiencyCorrectionsTool.cxx:533
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
TauAnalysisTools::JETIDRNNMEDIUM
@ JETIDRNNMEDIUM
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:21
TauAnalysisTools::TauEfficiencyCorrectionsTool::ConvertEleIDToString
std::string ConvertEleIDToString(const int iLevel) const
Definition: TauEfficiencyCorrectionsTool.cxx:499
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_firstEvent
bool m_firstEvent
Definition: TauEfficiencyCorrectionsTool.h:122
TauAnalysisTools::SFDecayModeHadTau
@ SFDecayModeHadTau
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:85
skel.it
it
Definition: skel.GENtoEVGEN.py:396
asg
Definition: DataHandleTestTool.h:28
CP::SystematicSet
Class to wrap a set of SystematicVariations.
Definition: SystematicSet.h:31
asg::AsgMetadataTool::inputMetaStore
MetaStorePtr_t inputMetaStore() const
Accessor for the input metadata store.
Definition: AsgMetadataTool.cxx:88
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sVarNameTriggerHadTau
std::string m_sVarNameTriggerHadTau
Definition: TauEfficiencyCorrectionsTool.h:109
TauAnalysisTools::JETIDRNNLOOSE
@ JETIDRNNLOOSE
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:20
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sVarNameEleIDHadTau
std::string m_sVarNameEleIDHadTau
Definition: TauEfficiencyCorrectionsTool.h:105
TauAnalysisTools::TauEfficiencyCorrectionsTool::~TauEfficiencyCorrectionsTool
~TauEfficiencyCorrectionsTool()
Definition: TauEfficiencyCorrectionsTool.cxx:55
ANA_MSG_ERROR
#define ANA_MSG_ERROR(xmsg)
Macro printing error messages.
Definition: Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:294
ANA_CHECK
#define ANA_CHECK(EXP)
check whether the given expression was successful
Definition: Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:324
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sTriggerSFMeasurement
std::string m_sTriggerSFMeasurement
Definition: TauEfficiencyCorrectionsTool.h:112
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sInputFilePathTriggerHadTau
std::string m_sInputFilePathTriggerHadTau
Definition: TauEfficiencyCorrectionsTool.h:102
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sInputFilePathEleIDElectron
std::string m_sInputFilePathEleIDElectron
Definition: TauEfficiencyCorrectionsTool.h:101
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:55
CP::SystematicVariation
Definition: SystematicVariation.h:47
ASG_MAKE_ANA_TOOL
#define ASG_MAKE_ANA_TOOL(handle, type)
create the tool in the given tool handle
Definition: AnaToolHandle.h:690
TauAnalysisTools::JETIDNONE
@ JETIDNONE
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:14
asg::AnaToolHandle::setProperty
StatusCode setProperty(const std::string &property, const T2 &value)
set the given property of the tool.
xAOD::EventInfo_v1::IS_SIMULATION
@ IS_SIMULATION
true: simulation, false: data
Definition: EventInfo_v1.h:151
TauAnalysisTools::TauEfficiencyCorrectionsTool::beginInputFile
virtual StatusCode beginInputFile()
Function called when a new input file is opened.
Definition: TauEfficiencyCorrectionsTool.cxx:457
TauAnalysisTools::SFEleIDElectron
@ SFEleIDElectron
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:77
xAOD::EventInfo_v1::runNumber
uint32_t runNumber() const
The current event's run number.
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_vTriggerEfficiencyTools
std::vector< asg::AnaToolHandle< ITauEfficiencyCorrectionsTool > * > m_vTriggerEfficiencyTools
Definition: TauEfficiencyCorrectionsTool.h:96
TauAnalysisTools::ELEIDRNNLOOSE
@ ELEIDRNNLOOSE
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:33
xAOD::FileMetaData_v1::value
bool value(MetaDataType type, std::string &val) const
Get a pre-defined string value out of the object.
Definition: FileMetaData_v1.cxx:195
xAOD::FileMetaData_v1::simFlavour
@ simFlavour
Fast or Full sim [string].
Definition: FileMetaData_v1.h:76
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_vEfficiencyCorrectionTypes
std::vector< int > m_vEfficiencyCorrectionTypes
Definition: TauEfficiencyCorrectionsTool.h:94
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sVarNameEleIDElectron
std::string m_sVarNameEleIDElectron
Definition: TauEfficiencyCorrectionsTool.h:106
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_iRunNumber
unsigned int m_iRunNumber
Definition: TauEfficiencyCorrectionsTool.h:123
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_vCommonEfficiencyTools
std::vector< asg::AnaToolHandle< ITauEfficiencyCorrectionsTool > * > m_vCommonEfficiencyTools
Definition: TauEfficiencyCorrectionsTool.h:95
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_bUseTauSubstructure
bool m_bUseTauSubstructure
Definition: TauEfficiencyCorrectionsTool.h:114
SharedFilesVersion.h
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
TauAnalysisTools::TauEfficiencyCorrectionsTool::beginEvent
StatusCode beginEvent()
Function called when a new events is loaded.
Definition: TauEfficiencyCorrectionsTool.cxx:131
TauEfficiencyCorrectionsTool.h
TauAnalysisTools::TauEfficiencyCorrectionsTool::readRandomRunNumber
StatusCode readRandomRunNumber()
Definition: TauEfficiencyCorrectionsTool.cxx:547
TauAnalysisTools::ELEIDNONE
@ ELEIDNONE
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:32
SystematicRegistry.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
TauAnalysisTools::TauEfficiencyCorrectionsTool::initialize
virtual StatusCode initialize()
Function initialising the tool.
Definition: TauEfficiencyCorrectionsTool.cxx:64
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sTriggerName
std::string m_sTriggerName
Definition: TauEfficiencyCorrectionsTool.h:111
xAOD::TauJet_v3
Class describing a tau jet.
Definition: TauJet_v3.h:41
TauAnalysisTools::TauEfficiencyCorrectionsTool::TauEfficiencyCorrectionsTool
TauEfficiencyCorrectionsTool(const std::string &sName)
Create a proper constructor for Athena.
Definition: TauEfficiencyCorrectionsTool.cxx:18
ANA_MSG_WARNING
#define ANA_MSG_WARNING(xmsg)
Macro printing warning messages.
Definition: Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:292
Amg::transform
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
Definition: GeoPrimitivesHelpers.h:156
TauAnalysisTools::CommonEfficiencyTool
Definition: CommonEfficiencyTool.h:39
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_iEleIDLevel
int m_iEleIDLevel
Definition: TauEfficiencyCorrectionsTool.h:119
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_bSkipTruthMatchCheck
bool m_bSkipTruthMatchCheck
Definition: TauEfficiencyCorrectionsTool.h:113
TauAnalysisTools::TauEfficiencyCorrectionsTool::ConvertTriggerIDToString
std::string ConvertTriggerIDToString(const int iLevel) const
Definition: TauEfficiencyCorrectionsTool.cxx:516
TauAnalysisTools::ELEIDRNNMEDIUM
@ ELEIDRNNMEDIUM
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:34
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sInputFilePathEleIDHadTau
std::string m_sInputFilePathEleIDHadTau
Definition: TauEfficiencyCorrectionsTool.h:100
xAOD::FileMetaData_v1
Class holding file-level metadata about an xAOD file.
Definition: FileMetaData_v1.h:34
TauAnalysisTools::TauEfficiencyCorrectionsTool::getEfficiencyScaleFactor
virtual CP::CorrectionCode getEfficiencyScaleFactor(const xAOD::TauJet &xTau, double &eff, unsigned int iRunNumber=0, unsigned int iMu=0)
Get the tau efficiency scale factor.
Definition: TauEfficiencyCorrectionsTool.cxx:196
TauAnalysisTools::TauEfficiencyCorrectionsTool::printConfig
virtual void printConfig() const
Print tool configuration.
Definition: TauEfficiencyCorrectionsTool.cxx:168
xAOD::EventInfo_v1::averageInteractionsPerCrossing
float averageInteractionsPerCrossing() const
Average interactions per crossing for all BCIDs - for out-of-time pile-up.
Definition: EventInfo_v1.cxx:397
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sMCCampaign
std::string m_sMCCampaign
Definition: TauEfficiencyCorrectionsTool.h:120
TauAnalysisTools::ELEIDRNNTIGHT
@ ELEIDRNNTIGHT
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:35
CP::SystematicSet::insert
void insert(const SystematicVariation &systematic)
description: insert a systematic into the set
Definition: SystematicSet.cxx:88
ANA_MSG_VERBOSE
#define ANA_MSG_VERBOSE(xmsg)
Macro printing verbose messages.
Definition: Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:286
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
TauAnalysisTools::SFJetIDHadTau
@ SFJetIDHadTau
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:70
TauAnalysisTools::SFRecoHadTau
@ SFRecoHadTau
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:65
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_iMu
unsigned int m_iMu
Definition: TauEfficiencyCorrectionsTool.h:124
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sRecommendationTag
std::string m_sRecommendationTag
Definition: TauEfficiencyCorrectionsTool.h:110
TauAnalysisTools::TauEfficiencyCorrectionsTool::recommendedSystematics
virtual CP::SystematicSet recommendedSystematics() const
returns: the list of all systematics this tool recommends to use
Definition: TauEfficiencyCorrectionsTool.cxx:283
TauAnalysisTools::TauEfficiencyCorrectionsTool::initializeTools_2022_prerec
StatusCode initializeTools_2022_prerec()
Definition: TauEfficiencyCorrectionsTool.cxx:310
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sInputFilePathDecayModeHadTau
std::string m_sInputFilePathDecayModeHadTau
Definition: TauEfficiencyCorrectionsTool.h:99
CP::CorrectionCode::Ok
@ Ok
The correction was done successfully.
Definition: CorrectionCode.h:38
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sVarNameDecayModeHadTau
std::string m_sVarNameDecayModeHadTau
Definition: TauEfficiencyCorrectionsTool.h:108
TauAnalysisTools::SFEleIDHadTau
@ SFEleIDHadTau
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:75
FileMetaData.h
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
ANA_CHECK_SET_TYPE
#define ANA_CHECK_SET_TYPE(TYPE)
set the type for ANA_CHECK to report failures
Definition: Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:314
CP::SystematicRegistry
This module implements the central registry for handling systematic uncertainties with CP tools.
Definition: SystematicRegistry.h:25
TauAnalysisTools::TauEfficiencyCorrectionsTool::applyEfficiencyScaleFactor
virtual CP::CorrectionCode applyEfficiencyScaleFactor(const xAOD::TauJet &xTau, unsigned int iRunNumber=0, unsigned int iMu=0)
Decorate the tau with its efficiency scale factor.
Definition: TauEfficiencyCorrectionsTool.cxx:231
CP::CorrectionCode
Return value from object correction CP tools.
Definition: CorrectionCode.h:31
SG::ConstAccessor::isAvailable
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_iJetIDLevel
int m_iJetIDLevel
Definition: TauEfficiencyCorrectionsTool.h:118
dqt_zlumi_alleff_HIST.eff
int eff
Definition: dqt_zlumi_alleff_HIST.py:113
TauAnalysisTools::TauEfficiencyCorrectionsTool::affectingSystematics
virtual CP::SystematicSet affectingSystematics() const
returns: the list of all systematics this tool can be affected by
Definition: TauEfficiencyCorrectionsTool.cxx:271
TauAnalysisTools::JETIDRNNVERYLOOSE
@ JETIDRNNVERYLOOSE
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:19
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sInputFilePathRecoHadTau
std::string m_sInputFilePathRecoHadTau
Definition: TauEfficiencyCorrectionsTool.h:97
TauAnalysisTools::TauEfficiencyCorrectionsTool::firstEvent
StatusCode firstEvent()
Definition: TauEfficiencyCorrectionsTool.cxx:115
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sVarNameRecoHadTau
std::string m_sVarNameRecoHadTau
Definition: TauEfficiencyCorrectionsTool.h:104
TauAnalysisTools::TauEfficiencyCorrectionsTool::applySystematicVariation
virtual StatusCode applySystematicVariation(const CP::SystematicSet &systConfig)
effects: configure this tool for the given list of systematic variations.
Definition: TauEfficiencyCorrectionsTool.cxx:294
TauAnalysisTools::TauEfficiencyCorrectionsTool::ConvertJetIDToString
std::string ConvertJetIDToString(const int iLevel) const
Definition: TauEfficiencyCorrectionsTool.cxx:478
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_useFastSim
bool m_useFastSim
Definition: TauEfficiencyCorrectionsTool.h:121
xAOD::EventInfo_v1::eventType
bool eventType(EventType type) const
Check for one particular bitmask value.
CP::SystematicRegistry::getInstance
static SystematicRegistry & getInstance()
Get the singleton instance of the registry for the curren thread.
Definition: SystematicRegistry.cxx:25
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_bIsData
bool m_bIsData
Definition: TauEfficiencyCorrectionsTool.h:115