ATLAS Offline Software
TauEfficiencyCorrectionsTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 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_tTauSelectionToolHandle("")
27  , m_tPRWTool("")
28 {
29  declareProperty( "EfficiencyCorrectionTypes", m_vEfficiencyCorrectionTypes = {} );
30  declareProperty( "InputFilePathRecoHadTau", m_sInputFilePathRecoHadTau = "" );
31  declareProperty( "InputFilePathEleIDHadTau", m_sInputFilePathEleIDHadTau = "" );
32  declareProperty( "InputFilePathEleIDElectron", m_sInputFilePathEleIDElectron = "" );
33  declareProperty( "InputFilePathJetIDHadTau", m_sInputFilePathJetIDHadTau = "" );
34  declareProperty( "InputFilePathTriggerHadTau", m_sInputFilePathTriggerHadTau = "" );
35  declareProperty( "VarNameRecoHadTau", m_sVarNameRecoHadTau = "" );
36  declareProperty( "VarNameEleIDHadTau", m_sVarNameEleIDHadTau = "" );
37  declareProperty( "VarNameEleIDElectron", m_sVarNameEleIDElectron = "" );
38  declareProperty( "VarNameJetIDHadTau", m_sVarNameJetIDHadTau = "" );
39  declareProperty( "VarNameDecayModeHadTau", m_sVarNameDecayModeHadTau = "" );
40  declareProperty( "VarNameTriggerHadTau", m_sVarNameTriggerHadTau = "" );
41  declareProperty( "RecommendationTag", m_sRecommendationTag = "2022-prerec" );
42  declareProperty( "TriggerName", m_sTriggerName = "" );
43  declareProperty( "AutoTriggerYear", m_bReadRandomRunNumber = false );
44  declareProperty( "TriggerSFMeasurement", m_sTriggerSFMeasurement = "combined" ); // "combined", "Ztautau" or "ttbar"
45  declareProperty( "UseTauSubstructure", m_bUseTauSubstructure = false );
46  declareProperty( "UseHighPtUncert", m_bUseHighPtUncert = false );
47  declareProperty( "JetIDLevel", m_iJetIDLevel = (int)JETIDNONE );
48  declareProperty( "EleIDLevel", m_iEleIDLevel = (int)ELEIDNONE );
49  declareProperty( "MCCampaign", m_sMCCampaign = "" ); // MC16a, MC16d or MC16e
50  declareProperty( "isAFII", m_sAFII = false );
51  declareProperty( "useFastSim", m_useFastSim = false );
52  declareProperty( "SkipTruthMatchCheck", m_bSkipTruthMatchCheck = false );
53  declareProperty( "TauSelectionTool", m_tTauSelectionToolHandle );
54  declareProperty( "PileupReweightingTool", m_tPRWTool );
55 }
56 
57 
58 //______________________________________________________________________________
60 {
61  for (auto tTool : m_vCommonEfficiencyTools)
62  delete tTool;
63  for (auto tTool : m_vTriggerEfficiencyTools)
64  delete tTool;
65 }
66 
67 //______________________________________________________________________________
69 {
70  ATH_MSG_DEBUG( "Initializing TauEfficiencyCorrectionsTool using TauSelectionTool" );
71 
72  // add reco systematics in any case
74  ATH_MSG_VERBOSE( "added SFRecoHadTau" );
75 
76  // use jet ID scale factors if TauSelectionTool applies jet ID cut
77  if (tauSelectionTool->m_iSelectionCuts & CutJetIDWP) {
78  m_iJetIDLevel = tauSelectionTool->m_iJetIDWP;
79 
82  ATH_MSG_VERBOSE( "added SFJetIDHadTau" );
83  }
84  else {
85  ATH_MSG_WARNING( "No JetID scale factor for working point " << m_iJetIDLevel );
86  }
87  }
88 
89  // use electron veto scale factors if TauSelectionTool applies electron veto
90  if (tauSelectionTool->m_iSelectionCuts & CutEleIDWP) {
91  m_iEleIDLevel = tauSelectionTool->m_iEleIDWP;
92 
93  // force m_iEleIDLevel to ELEIDNONE until RNN eVeto SFs are available
95  ATH_MSG_WARNING("Scale factors for RNN eVeto (TIGHT) are not available yet");
97  }
98 
101  ATH_MSG_VERBOSE( "added SFEleIDHadTau" );
103  ATH_MSG_VERBOSE( "added SFEleIDElectron" );
104  }
105  // commented out until RNN eVeto SFs are available, to avoid double warnings
106  /*
107  else {
108  ATH_MSG_WARNING( "No EleID scale factor for working point " << m_iEleIDLevel );
109  }
110  */
111  }
112 
113  if (m_bUseTauSubstructure) {
114  ATH_MSG_WARNING("Scale factors for decay mode ID are not available yet");
115  //m_vEfficiencyCorrectionTypes.push_back(SFDecayModeHadTau);
116  }
117 
118  return StatusCode::SUCCESS;
119 }
120 
121 //______________________________________________________________________________
123 {
124  ATH_MSG_INFO( "Initializing TauEfficiencyCorrectionsTool" );
125 
127  ATH_MSG_WARNING("Truth match check will be skipped. This is ONLY FOR TESTING PURPOSE!");
128 
129  if (!m_tPRWTool.empty())
130  ATH_CHECK(m_tPRWTool.retrieve());
131 
132  // determine set of scale factors using TauSelectionTool
133  if (!m_tTauSelectionToolHandle.empty())
134  {
135  if (!m_vEfficiencyCorrectionTypes.empty()) {
136  ATH_MSG_ERROR("Either use a TauSelectionTool handle or EfficiencyCorrectionTypes, not both.");
137  return StatusCode::FAILURE;
138  }
141  if(tauSelectionTool == nullptr) {
142  ATH_MSG_ERROR("Could not retrieve TauSelectionTool");
143  return StatusCode::FAILURE;
144  }
145  if (initializeWithTauSelectionTool(tauSelectionTool).isFailure()) {
146  ATH_MSG_ERROR("Failed to determine scale factors using TauSelectionTool");
147  return StatusCode::FAILURE;
148  }
149  }
150 
151  // check efficiency correction type
152  if (m_vEfficiencyCorrectionTypes.empty())
153  {
154  ATH_MSG_ERROR("Could not retrieve any EfficiencyCorrectionType");
155  return StatusCode::FAILURE;
156  }
157 
158  if (m_sRecommendationTag == "2022-prerec") {
159  ATH_MSG_WARNING("2022-prerec tag are pre-recommendations and still under development.");
161  }
162  else {
163  ATH_MSG_ERROR("Unknown RecommendationTag " << m_sRecommendationTag);
164  return StatusCode::FAILURE;
165  }
166 
167  // for (auto tCommonEfficiencyTool : m_vCommonEfficiencyTools)
168  for (auto it = m_vCommonEfficiencyTools.begin(); it != m_vCommonEfficiencyTools.end(); it++)
169  {
170  ATH_CHECK((**it).setProperty("OutputLevel", this->msg().level()));
171  ATH_CHECK((**it).initialize());
172  }
173  for (auto it = m_vTriggerEfficiencyTools.begin(); it != m_vTriggerEfficiencyTools.end(); it++)
174  {
175  ATH_CHECK((**it).setProperty("OutputLevel", this->msg().level()));
176  ATH_CHECK((**it).initialize());
177  }
178 
179  // Add the affecting systematics to the global registry
181  if (!registry.registerSystematics(*this))
182  {
183  ATH_MSG_ERROR ("Unable to register the systematics");
184  return StatusCode::FAILURE;
185  }
186 
187  printConfig();
188 
189  return StatusCode::SUCCESS;
190 }
191 
193 {
194  const xAOD::EventInfo* xEventInfo = nullptr;
195  ATH_CHECK(evtStore()->retrieve(xEventInfo, "EventInfo"));
196 
197  if (xEventInfo->runNumber() != 284500 && xEventInfo->runNumber() != 300000 && xEventInfo->runNumber() != 310000) // mc21/2022: 410000
198  {
199  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." );
200  }
201  if (xEventInfo->runNumber() < 410000 && m_sRecommendationTag == "2022-prerec") // mc21/2022: 410000
202  {
203  ANA_MSG_WARNING( "TauEfficiency callibrations from 2022-prerec are not recommended for Run2 MC. Will only print this warning once." );
204  }
205  return StatusCode::SUCCESS;
206 }
207 
209 {
210  if (!m_bIsConfigured)
211  {
212  const xAOD::EventInfo* xEventInfo = nullptr;
213  ATH_CHECK(evtStore()->retrieve(xEventInfo,"EventInfo"));
215  m_bIsConfigured = true;
216  }
217 
218  if (!m_firstEvent){
220  m_firstEvent = true;
221 
222  }
223  if (m_bIsData)
224  return StatusCode::SUCCESS;
225 
226  const xAOD::EventInfo* xEventInfo = nullptr;
227  ATH_CHECK(evtStore()->retrieve(xEventInfo, "EventInfo"));
228  m_iMu = xEventInfo->averageInteractionsPerCrossing();
229 
231  {
232  // Reset the number at the beginning of event
233  m_iRunNumber = 0;
234  return StatusCode::SUCCESS;
235  }
236 
237  if (m_tPRWTool.empty())
238  return StatusCode::SUCCESS;
239 
240  m_iRunNumber = m_tPRWTool->getRandomRunNumber(*xEventInfo);
241  return StatusCode::SUCCESS;
242 }
243 
244 //______________________________________________________________________________
246 {
247  ATH_MSG_DEBUG( "TauEfficiencyCorrectionsTool with name " << name() << " is configured as follows:" );
248  for (auto iEfficiencyCorrectionType : m_vEfficiencyCorrectionTypes) {
249  ATH_MSG_DEBUG( " EfficiencyCorrectionTypes " << iEfficiencyCorrectionType );
250  }
251  ATH_MSG_DEBUG( " InputFilePathRecoHadTau " << m_sInputFilePathRecoHadTau );
252  ATH_MSG_DEBUG( " InputFilePathEleIDHadTau " << m_sInputFilePathEleIDHadTau );
253  ATH_MSG_DEBUG( " InputFilePathEleIDElectron " << m_sInputFilePathEleIDElectron );
254  ATH_MSG_DEBUG( " InputFilePathJetIDHadTau " << m_sInputFilePathJetIDHadTau );
255  ATH_MSG_DEBUG( " InputFilePathDecayModeHadTau " << m_sInputFilePathDecayModeHadTau );
256  ATH_MSG_DEBUG( " InputFilePathTriggerHadTau " << m_sInputFilePathTriggerHadTau );
257  ATH_MSG_DEBUG( " VarNameRecoHadTau " << m_sVarNameRecoHadTau );
258  ATH_MSG_DEBUG( " VarNameEleIDHadTau " << m_sVarNameEleIDHadTau );
259  ATH_MSG_DEBUG( " VarNameEleIDElectron " << m_sVarNameEleIDElectron );
260  ATH_MSG_DEBUG( " VarNameJetIDHadTau " << m_sVarNameJetIDHadTau );
261  ATH_MSG_DEBUG( " VarNameDecayModeHadTau " << m_sVarNameDecayModeHadTau );
262  ATH_MSG_DEBUG( " VarNameTriggerHadTau " << m_sVarNameTriggerHadTau );
263  ATH_MSG_DEBUG( " RecommendationTag " << m_sRecommendationTag );
264  ATH_MSG_DEBUG( " TriggerName " << m_sTriggerName );
265  ATH_MSG_DEBUG( " UseTauSubstructure " << m_bUseTauSubstructure );
266  ATH_MSG_DEBUG( " UseHighPtUncert " << m_bUseHighPtUncert );
267  ATH_MSG_DEBUG( " JetIDLevel " << m_iJetIDLevel );
268  ATH_MSG_DEBUG( " EleIDLevel " << m_iEleIDLevel );
269  ATH_MSG_DEBUG( " MCCampaign " << m_sMCCampaign );
270  ATH_MSG_DEBUG( " isAFII " << m_sAFII );
271  ATH_MSG_DEBUG( " useFastSim " << m_useFastSim);
272 }
273 
274 //______________________________________________________________________________
276  double& eff, unsigned int /*iRunNumber*/, unsigned int /*iMu*/)
277 {
278  eff = 1.;
279 
280  if (m_bIsData)
281  return CP::CorrectionCode::Ok;
282 
285 
286  for (auto it = m_vCommonEfficiencyTools.begin(); it != m_vCommonEfficiencyTools.end(); it++)
287  {
288  if ( !(**it)->isSupportedRunNumber(m_iRunNumber) )
289  continue;
290  double dToolEff = 1.;
291  CP::CorrectionCode tmpCorrectionCode = (**it)->getEfficiencyScaleFactor(xTau, dToolEff, m_iRunNumber, m_iMu);
292  if (tmpCorrectionCode != CP::CorrectionCode::Ok)
293  return tmpCorrectionCode;
294  eff *= dToolEff;
295  }
296  for (auto it = m_vTriggerEfficiencyTools.begin(); it != m_vTriggerEfficiencyTools.end(); it++)
297  {
298  if ( !(**it)->isSupportedRunNumber(m_iRunNumber) )
299  continue;
300  double dToolEff = 1.;
301  CP::CorrectionCode tmpCorrectionCode = (**it)->getEfficiencyScaleFactor(xTau, dToolEff);
302  if (tmpCorrectionCode != CP::CorrectionCode::Ok)
303  return tmpCorrectionCode;
304  eff *= dToolEff;
305  }
306  return CP::CorrectionCode::Ok;
307 }
308 
309 //______________________________________________________________________________
310 CP::CorrectionCode TauEfficiencyCorrectionsTool::applyEfficiencyScaleFactor( const xAOD::TauJet& xTau, unsigned int /*iRunNumber*/, unsigned int /*iMu*/)
311 {
312  if (m_bIsData)
313  return CP::CorrectionCode::Ok;
314 
317 
318  for (auto it = m_vCommonEfficiencyTools.begin(); it != m_vCommonEfficiencyTools.end(); it++)
319  {
320  CP::CorrectionCode tmpCorrectionCode = (**it)->applyEfficiencyScaleFactor(xTau, m_iRunNumber, m_iMu);
321  if (tmpCorrectionCode != CP::CorrectionCode::Ok)
322  return tmpCorrectionCode;
323  }
324  for (auto it = m_vTriggerEfficiencyTools.begin(); it != m_vTriggerEfficiencyTools.end(); it++)
325  {
326  if ( !(**it)->isSupportedRunNumber(m_iRunNumber) )
327  continue;
328  CP::CorrectionCode tmpCorrectionCode = (**it)->applyEfficiencyScaleFactor(xTau, m_iRunNumber, m_iMu);
329  if (tmpCorrectionCode != CP::CorrectionCode::Ok)
330  return tmpCorrectionCode;
331  }
332  return CP::CorrectionCode::Ok;
333 }
334 
336 //______________________________________________________________________________
338 {
339  for (auto it = m_vCommonEfficiencyTools.begin(); it != m_vCommonEfficiencyTools.end(); it++)
340  if ((**it)->isAffectedBySystematic(systematic))
341  return true;
342  for (auto it = m_vTriggerEfficiencyTools.begin(); it != m_vTriggerEfficiencyTools.end(); it++)
343  if ((**it)->isAffectedBySystematic(systematic))
344  return true;
345  return false;
346 }
347 
349 //______________________________________________________________________________
351 {
352  CP::SystematicSet sAffectingSystematics;
353  for (auto it = m_vCommonEfficiencyTools.begin(); it != m_vCommonEfficiencyTools.end(); it++)
354  sAffectingSystematics.insert((**it)->affectingSystematics());
355  for (auto it = m_vTriggerEfficiencyTools.begin(); it != m_vTriggerEfficiencyTools.end(); it++)
356  sAffectingSystematics.insert((**it)->affectingSystematics());
357  return sAffectingSystematics;
358 }
359 
361 //______________________________________________________________________________
363 {
364  CP::SystematicSet sRecommendedSystematics;
365  for (auto it = m_vCommonEfficiencyTools.begin(); it != m_vCommonEfficiencyTools.end(); it++)
366  sRecommendedSystematics.insert((**it)->recommendedSystematics());
367  for (auto it = m_vTriggerEfficiencyTools.begin(); it != m_vTriggerEfficiencyTools.end(); it++)
368  sRecommendedSystematics.insert((**it)->recommendedSystematics());
369  return sRecommendedSystematics;
370 }
371 
372 //______________________________________________________________________________
374 {
375  for (auto it = m_vCommonEfficiencyTools.begin(); it != m_vCommonEfficiencyTools.end(); it++)
376  if ((**it)->applySystematicVariation(sSystematicSet) == StatusCode::FAILURE)
377  return StatusCode::FAILURE;
378  for (auto it = m_vTriggerEfficiencyTools.begin(); it != m_vTriggerEfficiencyTools.end(); it++)
379  if ((**it)->applySystematicVariation(sSystematicSet) == StatusCode::FAILURE)
380  return StatusCode::FAILURE;
381  return StatusCode::SUCCESS;
382 }
383 
384 //=================================PRIVATE-PART=================================
385 
386 //______________________________________________________________________________
387 // this whole block is a place holder until we get R22 Run2 recommendations
388 // none of these SFs are valid for R22 MC, except possibly RNN ID to very coarse approximation
390 {
391  std::string sDirectory = "TauAnalysisTools/" + std::string(sSharedFilesVersion) + "/EfficiencyCorrections/";
392 
393  // initialise paths and SF names unless they have been configured by the user
394  for (auto iEfficiencyCorrectionType : m_vEfficiencyCorrectionTypes)
395  {
396  if (iEfficiencyCorrectionType == SFJetIDHadTau)
397  {
398  if (m_sInputFilePathJetIDHadTau.empty()) {
399  if (m_sAFII) {
400  ATH_MSG_ERROR("isAFII property is now deprecated, please use useFastSim property and AF3 samples");
401  return StatusCode::FAILURE;
402  } else if(m_useFastSim) {
403  ATH_MSG_WARNING("No fast-sim recommendation for Tau RNN, using full sim");
404  }
405 
406  m_sInputFilePathJetIDHadTau = sDirectory + "RNNID_TrueHadTau_2022-prerecommendation_v2.root";
407  }
408  if (m_sVarNameJetIDHadTau.empty()) m_sVarNameJetIDHadTau = "TauScaleFactorJetIDHadTau";
409 
410  std::string sJetIDWP = ConvertJetIDToString(m_iJetIDLevel);
411  if (sJetIDWP.empty()) {
412  ATH_MSG_WARNING("Could not find valid ID working point. Skip ID efficiency corrections.");
413  continue;
414  }
415 
416  asg::AnaToolHandle<ITauEfficiencyCorrectionsTool>* tTool = new asg::AnaToolHandle<ITauEfficiencyCorrectionsTool>("TauAnalysisTools::CommonEfficiencyTool/JetIDHadTauTool", this);
417  m_vCommonEfficiencyTools.push_back(tTool);
418  ATH_CHECK(tTool->setProperty("InputFilePath", m_sInputFilePathJetIDHadTau));
419  ATH_CHECK(tTool->setProperty("VarName", m_sVarNameJetIDHadTau));
420  //ATH_CHECK(tTool->setProperty("UseTauSubstructure", m_bUseTauSubstructure));
421  ATH_CHECK(tTool->setProperty("SkipTruthMatchCheck", m_bSkipTruthMatchCheck));
422  ATH_CHECK(tTool->setProperty("WP", sJetIDWP));
423  }
424  else if (iEfficiencyCorrectionType == SFEleIDHadTau)
425  {
426  // the path must be updated once RNN eVeto SFs are available
427  if (m_sInputFilePathEleIDHadTau.empty()) m_sInputFilePathEleIDHadTau = sDirectory + "EleOLR_TrueHadTau_2016-ichep.root";
428  if (m_sVarNameEleIDHadTau.empty()) m_sVarNameEleIDHadTau = "TauScaleFactorEleIDHadTau";
429 
430  asg::AnaToolHandle<ITauEfficiencyCorrectionsTool>* tTool = new asg::AnaToolHandle<ITauEfficiencyCorrectionsTool>("TauAnalysisTools::CommonEfficiencyTool/EleIDHadTauTool", this);
431  m_vCommonEfficiencyTools.push_back(tTool);
432  ATH_CHECK(tTool->setProperty("InputFilePath", m_sInputFilePathEleIDHadTau));
433  ATH_CHECK(tTool->setProperty("VarName", m_sVarNameEleIDHadTau));
434  ATH_CHECK(tTool->setProperty("SkipTruthMatchCheck", m_bSkipTruthMatchCheck));
435  }
436  else if (iEfficiencyCorrectionType == SFEleIDElectron)
437  {
438  // the path must be updated once RNN eVeto SFs are available
439  if (m_sInputFilePathEleIDElectron.empty()) {
440  if (m_sAFII) {
441  ATH_MSG_ERROR("isAFII property is now deprecated, please use useFastSim property and AF3 samples");
442  return StatusCode::FAILURE;
443  } else if(m_useFastSim) {
444  ATH_MSG_WARNING("No fast-sim recommendation for tau electron veto, using full sim");
445  }
446 
447  m_sInputFilePathEleIDElectron = sDirectory+ "EleRNN_TrueElectron_2022-mc20-prerec-v2.root";
448  }
449  if (m_sVarNameEleIDElectron.empty()) m_sVarNameEleIDElectron = "TauScaleFactorEleIDElectron";
450 
451  asg::AnaToolHandle<ITauEfficiencyCorrectionsTool>* tTool = new asg::AnaToolHandle<ITauEfficiencyCorrectionsTool>("TauAnalysisTools::CommonEfficiencyTool/EleIDElectronTool", this);
452  m_vCommonEfficiencyTools.push_back(tTool);
453  ATH_CHECK(tTool->setProperty("InputFilePath", m_sInputFilePathEleIDElectron));
454  ATH_CHECK(tTool->setProperty("VarName", m_sVarNameEleIDElectron));
455  ATH_CHECK(tTool->setProperty("SkipTruthMatchCheck", m_bSkipTruthMatchCheck));
457  ATH_CHECK(tTool->setProperty("UseTauSubstructure", false));
458  }
459  else if (iEfficiencyCorrectionType == SFRecoHadTau)
460  {
461  if (m_sInputFilePathRecoHadTau.empty()) m_sInputFilePathRecoHadTau = sDirectory + "Reco_TrueHadTau_2019-summer_v2.root";
462  if (m_sVarNameRecoHadTau.empty()) m_sVarNameRecoHadTau = "TauScaleFactorReconstructionHadTau";
463 
464  asg::AnaToolHandle<ITauEfficiencyCorrectionsTool>* tTool = new asg::AnaToolHandle<ITauEfficiencyCorrectionsTool>("TauAnalysisTools::CommonEfficiencyTool/RecoHadTauTool", this);
465  m_vCommonEfficiencyTools.push_back(tTool);
466  ATH_CHECK(tTool->setProperty("InputFilePath", m_sInputFilePathRecoHadTau));
467  ATH_CHECK(tTool->setProperty("VarName", m_sVarNameRecoHadTau));
468  ATH_CHECK(tTool->setProperty("SkipTruthMatchCheck", m_bSkipTruthMatchCheck));
469  }
470  else if (iEfficiencyCorrectionType == SFDecayModeHadTau)
471  {
472  if (m_sInputFilePathDecayModeHadTau.empty()) m_sInputFilePathDecayModeHadTau = sDirectory + "DecayModeSubstructure_TrueHadTau_2019-summer.root";
473  if (m_sVarNameDecayModeHadTau.empty()) m_sVarNameDecayModeHadTau = "TauScaleFactorDecayModeHadTau";
474 
475  std::string sJetIDWP = ConvertJetIDToString(m_iJetIDLevel);
476  if (sJetIDWP.empty()) {
477  ATH_MSG_WARNING("Could not find valid ID working point. Skip ID efficiency corrections.");
478  continue;
479  }
480 
482  m_vCommonEfficiencyTools.push_back(tTool);
484  ATH_CHECK(tTool->setProperty("InputFilePath", m_sInputFilePathDecayModeHadTau));
485  ATH_CHECK(tTool->setProperty("VarName", m_sVarNameDecayModeHadTau));
486  ATH_CHECK(tTool->setProperty("UseTauSubstructure", true));
487  ATH_CHECK(tTool->setProperty("SkipTruthMatchCheck", m_bSkipTruthMatchCheck));
488  ATH_CHECK(tTool->setProperty("WP", sJetIDWP));
489  }
490  else if (iEfficiencyCorrectionType == SFTriggerHadTau)
491  {
492  if (m_sTriggerName.empty()) {
493  ATH_MSG_ERROR("Property \"Trigger\" was not set, please provide a trigger name.");
494  return StatusCode::FAILURE;
495  }
496  if (m_sInputFilePathTriggerHadTau.empty()) {
497  // Determine the input file name from the given trigger name.
498  // Triggers having "mediumRNN_tracktwoMVA are only part of 2018aftTS1.
499  // Every other trigger having "tracktwoEF" is only part of 2018.
500  // Every other trigger having "tau160_medium1" is only part of 2016.
501  // Every other trigger having "tau160" is only part of 2017/2018.
502  // Lastly check for other possible triggers, if this is not fulfilled the passed trigger is not supported.
503  if (m_sTriggerName.find("mediumRNN_tracktwoMVA") != std::string::npos) {
504  m_sInputFilePathTriggerHadTau = sDirectory+"Trigger/RNN/Trigger_TrueHadTau_2019-summer_data2018aftTS1"+GetTriggerSFMeasurementString()+m_sTriggerName+".root";
505  }
506  else if (m_sTriggerName.find("tracktwoEF") != std::string::npos) {
507  m_sInputFilePathTriggerHadTau = sDirectory+"Trigger/RNN/Trigger_TrueHadTau_2019-summer_data2018"+GetTriggerSFMeasurementString()+m_sTriggerName+".root";
508  }
509  else if (m_sTriggerName.find("tau160_medium1") != std::string::npos) {
510  m_sInputFilePathTriggerHadTau = sDirectory+"Trigger/RNN/Trigger_TrueHadTau_2019-summer_data2016"+GetTriggerSFMeasurementString()+m_sTriggerName+".root";
511  }
512  else if ((m_sTriggerName.find("tau160") != std::string::npos) || (m_sTriggerName.find("tau60") != std::string::npos)) {
513  m_sInputFilePathTriggerHadTau = sDirectory+"Trigger/RNN/Trigger_TrueHadTau_2019-summer_data1718"+GetTriggerSFMeasurementString()+m_sTriggerName+".root";
514  }
515  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) ) {
516  m_sInputFilePathTriggerHadTau = sDirectory+"Trigger/RNN/Trigger_TrueHadTau_2019-summer_data161718"+GetTriggerSFMeasurementString()+m_sTriggerName+".root";
517  }
518  else {
519  ATH_MSG_ERROR("Trigger " << m_sTriggerName << " is not supported. Please fix \"TriggerName\" property.");
520  return StatusCode::FAILURE;
521  }
522  }
523  if (m_sVarNameTriggerHadTau.empty()) m_sVarNameTriggerHadTau = "TauScaleFactorTriggerHadTau";
524 
525  asg::AnaToolHandle<ITauEfficiencyCorrectionsTool>* tTool = new asg::AnaToolHandle<ITauEfficiencyCorrectionsTool>("TauAnalysisTools::TauEfficiencyTriggerTool/TriggerHadTauTool", this);
526  m_vTriggerEfficiencyTools.push_back(tTool);
527  ATH_CHECK(tTool->setProperty("InputFilePath", m_sInputFilePathTriggerHadTau));
528  ATH_CHECK(tTool->setProperty("VarName", m_sVarNameTriggerHadTau));
529  ATH_CHECK(tTool->setProperty("SkipTruthMatchCheck", m_bSkipTruthMatchCheck));
531  }
532  else {
533  ATH_MSG_WARNING("unsupported EfficiencyCorrectionsType with enum " << iEfficiencyCorrectionType);
534  }
535  }
536 
537  return StatusCode::SUCCESS;
538 }
539 
540 // auto detection of simulation flavour, used to cross check configuration of tool
541 //______________________________________________________________________________
543 {
544  if (inputMetaStore()->contains<xAOD::FileMetaData>("FileMetaData")) {
545  const xAOD::FileMetaData* fmd = nullptr;
546  ATH_CHECK( inputMetaStore()->retrieve( fmd, "FileMetaData" ) );
547  std::string simType("");
548  bool result = fmd->value( xAOD::FileMetaData::simFlavour , simType );
549  // if no result -> no simFlavor metadata, so must be data
550  if(result) std::transform(simType.begin(), simType.end(), simType.begin(), ::toupper);
551 
552  if (simType.find("ATLFASTII")!=std::string::npos){
553  ATH_MSG_WARNING("Input file is AFII sample which should be replaced by AF3 as this will be the only atlas fast simulation supported by TauCP");
554  } else if( simType.find("ATLFAST3") != std::string::npos && !m_useFastSim){
555  ATH_MSG_WARNING("Input file is AF3 sample but you are _not_ using AF3 corrections and uncertainties, you should set \"useFastSim\" to \"true\"");
556  } else if (simType.find("FULLG4")!=std::string::npos && m_useFastSim){
557  ATH_MSG_WARNING("Input file is full simulation but you are using AF3 corrections and uncertainties, you should set \"useFastSim\" to \"false\"");
558  }
559  }
560 
561  return StatusCode::SUCCESS;
562 }
563 
564 //______________________________________________________________________________
565 std::string TauEfficiencyCorrectionsTool::ConvertJetIDToString(const int iLevel) const
566 {
567  switch(iLevel)
568  {
569  case JETIDNONE:
570  return "none";
571  case JETIDRNNVERYLOOSE:
572  ATH_MSG_WARNING("Efficiency corrections for JETIDRNNVERYLOOSE working point are not supported.");
573  return "";
574  case JETIDRNNLOOSE:
575  return "jetrnnsigloose";
576  case JETIDRNNMEDIUM:
577  return "jetrnnsigmedium";
578  case JETIDRNNTIGHT:
579  return "jetrnnsigtight";
580  default:
581  ATH_MSG_WARNING("No valid JetID level passed.");
582  return "";
583  }
584 }
585 
586 std::string TauEfficiencyCorrectionsTool::ConvertEleIDToString(const int iLevel) const
587 {
588  switch(iLevel)
589  {
590  case ELEIDRNNTIGHT:
591  return "eleRNNTight";
592  case ELEIDRNNMEDIUM:
593  return "eleRNNMedium";
594  case ELEIDRNNLOOSE:
595  return "eleRNNLoose";
596  default:
597  ATH_MSG_WARNING("No valid EleID level passed.");
598  return "";
599  }
600 }
601 
602 //______________________________________________________________________________
604 {
605  switch(iLevel)
606  {
607  case JETIDRNNLOOSE:
608  return "loose";
609  case JETIDRNNMEDIUM:
610  return "medium";
611  case JETIDRNNTIGHT:
612  return "tight";
613  default:
614  ATH_MSG_WARNING("No valid TriggerID level passed.");
615  return "";
616  }
617 }
618 
619 //______________________________________________________________________________
621 {
622  std::string sMeasurement = "_comb_";
623 
624  if (m_sTriggerSFMeasurement == "Ztautau")
625  sMeasurement = "_Ztt_";
626  else if (m_sTriggerSFMeasurement == "ttbar")
627  sMeasurement = "_ttbar_";
628  else if (m_sTriggerSFMeasurement != "combined")
629  ATH_MSG_WARNING("Trigger scale factor measurement \'" << m_sTriggerSFMeasurement << "\' is not supported. \'combined\' is used instead.");
630 
631  return sMeasurement;
632 }
633 
635 {
637  {
638  static const SG::AuxElement::ConstAccessor<unsigned int> acc_rnd("RandomRunNumber");
639  const xAOD::EventInfo* eventInfo = nullptr;
640  if (!evtStore()->contains<xAOD::EventInfo>("EventInfo") || !evtStore()->retrieve(eventInfo, "EventInfo").isSuccess())
641  {
642  ANA_MSG_ERROR("Could not retrieve EventInfo");
643  return StatusCode::FAILURE;
644  }
645 
646  if (!acc_rnd.isAvailable(*eventInfo))
647  {
648  ANA_MSG_ERROR("Failed to find the RandomRunNumber decoration. Call the apply() method from the PileupReweightingTool beforehand to get period dependent SFs.");
649  return StatusCode::FAILURE;
650  }
651 
652  m_iRunNumber = acc_rnd(*eventInfo);
653 
654  ANA_MSG_VERBOSE("Read RandomRunNumber as " << m_iRunNumber);
655  }
656 
657  return StatusCode::SUCCESS;
658 }
659 
660 } // 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:119
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_bReadRandomRunNumber
bool m_bReadRandomRunNumber
Definition: TauEfficiencyCorrectionsTool.h:120
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_tPRWTool
ToolHandle< CP::IPileupReweightingTool > m_tPRWTool
Definition: TauEfficiencyCorrectionsTool.h:131
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:337
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::TauSelectionTool
Definition: TauSelectionTool.h:53
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sVarNameJetIDHadTau
std::string m_sVarNameJetIDHadTau
Definition: TauEfficiencyCorrectionsTool.h:109
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sInputFilePathJetIDHadTau
std::string m_sInputFilePathJetIDHadTau
Definition: TauEfficiencyCorrectionsTool.h:100
TauAnalysisTools::TauEfficiencyCorrectionsTool::GetTriggerSFMeasurementString
std::string GetTriggerSFMeasurementString() const
Definition: TauEfficiencyCorrectionsTool.cxx:620
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:586
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_firstEvent
bool m_firstEvent
Definition: TauEfficiencyCorrectionsTool.h:126
TauAnalysisTools::SFDecayModeHadTau
@ SFDecayModeHadTau
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:85
skel.it
it
Definition: skel.GENtoEVGEN.py:423
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:111
TauAnalysisTools::JETIDRNNLOOSE
@ JETIDRNNLOOSE
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:20
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sVarNameEleIDHadTau
std::string m_sVarNameEleIDHadTau
Definition: TauEfficiencyCorrectionsTool.h:107
TauAnalysisTools::TauEfficiencyCorrectionsTool::~TauEfficiencyCorrectionsTool
~TauEfficiencyCorrectionsTool()
Definition: TauEfficiencyCorrectionsTool.cxx:59
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:114
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sInputFilePathTriggerHadTau
std::string m_sInputFilePathTriggerHadTau
Definition: TauEfficiencyCorrectionsTool.h:104
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sInputFilePathEleIDElectron
std::string m_sInputFilePathEleIDElectron
Definition: TauEfficiencyCorrectionsTool.h:103
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:54
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
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.
TauAnalysisTools::CutJetIDWP
@ CutJetIDWP
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:47
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:542
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_sAFII
bool m_sAFII
Definition: TauEfficiencyCorrectionsTool.h:124
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_vTriggerEfficiencyTools
std::vector< asg::AnaToolHandle< ITauEfficiencyCorrectionsTool > * > m_vTriggerEfficiencyTools
Definition: TauEfficiencyCorrectionsTool.h:98
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:96
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sVarNameEleIDElectron
std::string m_sVarNameEleIDElectron
Definition: TauEfficiencyCorrectionsTool.h:108
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_iRunNumber
unsigned int m_iRunNumber
Definition: TauEfficiencyCorrectionsTool.h:127
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:97
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_bUseTauSubstructure
bool m_bUseTauSubstructure
Definition: TauEfficiencyCorrectionsTool.h:116
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:208
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_bUseHighPtUncert
bool m_bUseHighPtUncert
Definition: TauEfficiencyCorrectionsTool.h:117
TauEfficiencyCorrectionsTool.h
TauAnalysisTools::TauEfficiencyCorrectionsTool::readRandomRunNumber
StatusCode readRandomRunNumber()
Definition: TauEfficiencyCorrectionsTool.cxx:634
TauAnalysisTools::TauSelectionTool::m_iEleIDWP
int m_iEleIDWP
Definition: TauSelectionTool.h:137
TauAnalysisTools::ELEIDNONE
@ ELEIDNONE
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:32
SystematicRegistry.h
TauAnalysisTools::TauEfficiencyCorrectionsTool::initializeWithTauSelectionTool
StatusCode initializeWithTauSelectionTool(TauSelectionTool *tauSelectionTool)
Definition: TauEfficiencyCorrectionsTool.cxx:68
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:122
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sTriggerName
std::string m_sTriggerName
Definition: TauEfficiencyCorrectionsTool.h:113
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_tTauSelectionToolHandle
ToolHandle< TauAnalysisTools::ITauSelectionTool > m_tTauSelectionToolHandle
Definition: TauEfficiencyCorrectionsTool.h:130
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_iEleIDLevel
int m_iEleIDLevel
Definition: TauEfficiencyCorrectionsTool.h:122
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_bSkipTruthMatchCheck
bool m_bSkipTruthMatchCheck
Definition: TauEfficiencyCorrectionsTool.h:115
TauAnalysisTools::TauEfficiencyCorrectionsTool::ConvertTriggerIDToString
std::string ConvertTriggerIDToString(const int iLevel) const
Definition: TauEfficiencyCorrectionsTool.cxx:603
TauAnalysisTools::ELEIDRNNMEDIUM
@ ELEIDRNNMEDIUM
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:34
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sInputFilePathEleIDHadTau
std::string m_sInputFilePathEleIDHadTau
Definition: TauEfficiencyCorrectionsTool.h:102
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:275
TauAnalysisTools::TauEfficiencyCorrectionsTool::printConfig
virtual void printConfig() const
Print tool configuration.
Definition: TauEfficiencyCorrectionsTool.cxx:245
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::TauSelectionTool::m_iSelectionCuts
int m_iSelectionCuts
Definition: TauSelectionTool.h:117
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sMCCampaign
std::string m_sMCCampaign
Definition: TauEfficiencyCorrectionsTool.h:123
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:192
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:128
TauAnalysisTools::CutEleIDWP
@ CutEleIDWP
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:49
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:112
TauAnalysisTools::TauEfficiencyCorrectionsTool::recommendedSystematics
virtual CP::SystematicSet recommendedSystematics() const
returns: the list of all systematics this tool recommends to use
Definition: TauEfficiencyCorrectionsTool.cxx:362
TauAnalysisTools::TauEfficiencyCorrectionsTool::initializeTools_2022_prerec
StatusCode initializeTools_2022_prerec()
Definition: TauEfficiencyCorrectionsTool.cxx:389
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sInputFilePathDecayModeHadTau
std::string m_sInputFilePathDecayModeHadTau
Definition: TauEfficiencyCorrectionsTool.h:101
CP::CorrectionCode::Ok
@ Ok
The correction was done successfully.
Definition: CorrectionCode.h:38
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sVarNameDecayModeHadTau
std::string m_sVarNameDecayModeHadTau
Definition: TauEfficiencyCorrectionsTool.h:110
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:310
CP::CorrectionCode
Return value from object correction CP tools.
Definition: CorrectionCode.h:31
TauAnalysisTools::TauSelectionTool::m_iJetIDWP
int m_iJetIDWP
Definition: TauSelectionTool.h:132
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:121
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:350
TauAnalysisTools::JETIDRNNVERYLOOSE
@ JETIDRNNVERYLOOSE
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:19
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sInputFilePathRecoHadTau
std::string m_sInputFilePathRecoHadTau
Definition: TauEfficiencyCorrectionsTool.h:99
TauAnalysisTools::TauEfficiencyCorrectionsTool::firstEvent
StatusCode firstEvent()
Definition: TauEfficiencyCorrectionsTool.cxx:192
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_sVarNameRecoHadTau
std::string m_sVarNameRecoHadTau
Definition: TauEfficiencyCorrectionsTool.h:106
TauAnalysisTools::TauEfficiencyCorrectionsTool::applySystematicVariation
virtual StatusCode applySystematicVariation(const CP::SystematicSet &systConfig)
effects: configure this tool for the given list of systematic variations.
Definition: TauEfficiencyCorrectionsTool.cxx:373
TauAnalysisTools::TauEfficiencyCorrectionsTool::ConvertJetIDToString
std::string ConvertJetIDToString(const int iLevel) const
Definition: TauEfficiencyCorrectionsTool.cxx:565
TauAnalysisTools::TauEfficiencyCorrectionsTool::m_useFastSim
bool m_useFastSim
Definition: TauEfficiencyCorrectionsTool.h:125
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:118