ATLAS Offline Software
MuonEfficiencyScaleFactors.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3  */
4 
8 
14 
15 #include <TTree.h>
16 #include <TFile.h>
17 namespace CP {
18  static const SG::AuxElement::ConstAccessor<unsigned int> acc_rnd("RandomRunNumber");
19 
21  asg::AsgTool(name),
22  m_wp("Medium"),
23  m_sf_sets(),
24  m_current_sf(),
25  m_custom_dir(),
26  m_custom_file_Combined(),
27  m_custom_file_Calo(),
28  m_custom_file_HighEta(),
29  m_custom_file_LowPt(),
30  m_custom_file_LowPtCalo(),
31  m_custom_file_LRTCombined(),
32  m_custom_file_LRTLowPt(),
33  m_efficiency_decoration_name_data(),
34  m_efficiency_decoration_name_mc(),
35  m_sf_decoration_name(),
36  m_calibration_version("230213_Preliminary_r22run2"),
37  m_lowpt_threshold(-1.),
38  m_iso_jet_dR("dRJet"),
39  m_use2DIsoCorr(false),
40  m_affectingSys(),
41  m_filtered_sys_sets(),
42  m_init(false),
43  m_seperateSystBins(false),
44  m_breakDownSyst(false),
45  m_applyKineDepSys(true),
46  m_useLRT(false),
47  m_Type(CP::MuonEfficiencyType::Undefined) {
48 
49  declareProperty("WorkingPoint", m_wp);
50 
51  // these are for debugging / testing, *not* for general use!
52  declareProperty("CustomInputFolder", m_custom_dir);
53  declareProperty("CustomFileCaloTag", m_custom_file_Calo);
54  declareProperty("CustomFileCombined", m_custom_file_Combined);
55  declareProperty("CustomFileHighEta", m_custom_file_HighEta);
56  declareProperty("CustomFileLowPt", m_custom_file_LowPt);
57  declareProperty("CustomFileLowPtCalo", m_custom_file_LowPtCalo);
58  declareProperty("CustomFileLRTCombined", m_custom_file_LRTCombined);
59  declareProperty("CustomFileLRTLowPt", m_custom_file_LRTLowPt);
60 
61  // Apply additional systematics to account for negelected pt dependency
62  // in the maps themselves or for non-closure
63  declareProperty("ApplyKinematicSystematic", m_applyKineDepSys);
64 
65  // Set specific names for the decorations of the scale-factors to the muon
66  declareProperty("DataEfficiencyDecorationName", m_efficiency_decoration_name_data);
67  declareProperty("MCEfficiencyDecorationName", m_efficiency_decoration_name_mc);
68  declareProperty("ScaleFactorDecorationName", m_sf_decoration_name);
69 
70  declareProperty("CalibrationRelease", m_calibration_version);
71  // Set this property to -1 if you do not want to use the JPsi
72  // reconstruction scale-factors
73  declareProperty("LowPtThreshold", m_lowpt_threshold);
74  declareProperty("UncorrelateSystematics", m_seperateSystBins);
75  declareProperty("BreakDownSystematics", m_breakDownSyst);
78  declareProperty("CloseJetDRDecorator", m_iso_jet_dR);
79  declareProperty("Use2DIsoCorrections", m_use2DIsoCorr);
81  declareProperty("UseLRT", m_useLRT);
82  }
84  return m_iso_jet_dR;
85  }
87  return m_use2DIsoCorr;
88  }
90  return m_lowpt_threshold;
91  }
94  return m_Type;
95  }
97  return m_sf_decoration_name.empty() ? std::string("SF") + m_wp : m_sf_decoration_name;
98  }
100  return m_efficiency_decoration_name_data.empty() ? std::string("DataEffi") + m_wp : m_efficiency_decoration_name_data;
101  }
103  return m_efficiency_decoration_name_mc.empty() ? std::string("MCEffi") + m_wp : m_efficiency_decoration_name_mc;
104  }
106  return std::string("Replica") + sf_decoration();
107  }
109  return std::string("Replica") + data_effi_decoration();
110  }
112  return std::string("Replica") + mc_effi_decoration();
113  }
115  size_t i = 0;
116  for (const auto& sf: m_sf_sets) {
117  if (sf.get() == coll) return i;
118  ++i;
119  }
120  return i;
121  }
123  return m_sf_sets.size();
124  }
126  return m_useLRT;
127  }
129  if (m_init) {
130  ATH_MSG_INFO("The tool using working point " << m_wp << " is already initialized.");
131  return StatusCode::SUCCESS;
132  }
133  if (m_wp.find("Iso") != std::string::npos) {
135 
136  } else if (m_wp.find("BadMuon") != std::string::npos) {
139  m_applyKineDepSys = true;
140  } else if (m_wp.find("TTVA") != std::string::npos) {
142  } else {
144  if (m_useLRT && m_wp!="Medium") {
145  ATH_MSG_FATAL(Form("Only Medium identification WP is supported for LRT muons. You chose %s.", m_wp.c_str()));
146  return StatusCode::FAILURE;
147  }
148  }
149  ATH_MSG_INFO("Efficiency type is = " << EfficiencyTypeName(m_Type));
150 
151  // temporary workaround to avoid bad Jpsi scale factors
152  if (m_lowpt_threshold < 0) { // not set by the user, use default values
153  if (m_calibration_version.find("Preliminary_r22run3") != std::string::npos) {
155  } else {
156  m_lowpt_threshold = 15e3;
157  }
158  }
159 
163  ATH_MSG_DEBUG("We are running Isolation or TTVA or High Pt reco SF, so we use Zmumu based SF for the whole pt range!");
164  m_lowpt_threshold = -1;
165  } else if (m_lowpt_threshold <= 0) {
166  ATH_MSG_INFO("Low pt SF turned off as crossover threshold is negative! Using Zmumu based SF for all pt values.");
167  } else {
168  ATH_MSG_INFO("JPsi based low pt SF will start to rock below " << m_lowpt_threshold / 1000. << " GeV!");
169  }
170 
171  std::set<std::string> decorations{
172  sf_decoration() ,
178  };
179  if (decorations.size() != 6){
180  ATH_MSG_FATAL("At least one of the decoration names for scale-factor/ data-efficiency / mc-efficiency is not uniquely defined... Please check your properties");
181  return StatusCode::FAILURE;
182  }
183 
185 
186  if (!m_custom_dir.empty()) ATH_MSG_WARNING("Note: setting up with user specified input file location " << m_custom_dir << " - this is not encouraged!");
187  if (!m_custom_file_Calo.empty()) ATH_MSG_WARNING("Note: setting up with user specified CaloTag input file " << m_custom_file_Calo << " - this is not encouraged!");
188  if (!m_custom_file_Combined.empty()) ATH_MSG_WARNING("Note: setting up with user specified Central muon input file " << m_custom_file_Combined << " - this is not encouraged! ");
189  if (!m_custom_file_HighEta.empty()) ATH_MSG_WARNING("Note: setting up with user specified High Eta input file " << m_custom_file_HighEta << " - this is not encouraged! ");
190  if (!m_custom_file_LowPt.empty()) ATH_MSG_WARNING("Note: setting up with user specified Low Pt input file " << m_custom_file_LowPt << " - this is not encouraged! ");
191  if (!m_custom_file_LowPtCalo.empty()) ATH_MSG_WARNING("Note: setting up with user specified Low Pt CaloTag input file " << m_custom_file_LowPtCalo << " - this is not encouraged! ");
192  if (!m_custom_file_LRTCombined.empty()) ATH_MSG_WARNING("Note: setting up with user specified Central LRT muon input file " << m_custom_file_LRTCombined << " - this is not encouraged! ");
193  if (!m_custom_file_LRTLowPt.empty()) ATH_MSG_WARNING("Note: setting up with user specified Low Pt LRT muon input file " << m_custom_file_LowPt << " - this is not encouraged! ");
194  if (m_custom_dir.empty()) ATH_MSG_INFO("Trying to initialize, with working point " << m_wp << ", using calibration release " << m_calibration_version);
195 
197 
198  // m_init has to be true for affectingSystematics()
199  m_init = true;
201  // set up for default running without systematics
203  ATH_MSG_ERROR("loading the central value systematic set failed");
204  return StatusCode::FAILURE;
205  }
206 
207  // Add the affecting systematics to the global registry
209  if (!registry.registerSystematics(*this)) {
210  ATH_MSG_ERROR("unable to register the systematics");
211  return StatusCode::FAILURE;
212  }
213  ATH_MSG_INFO("Successfully initialized! ");
214 
215  return StatusCode::SUCCESS;
216  }
218  if (!info) {
220  info = evtInfo.operator->();
221  if (!info) {
222  ATH_MSG_ERROR("Could not retrieve the xAOD::EventInfo. Return 999999");
223  return 999999;
224  }
225  }
226  if (!info->eventType(xAOD::EventInfo::IS_SIMULATION)) {
227  ATH_MSG_DEBUG("The current event is a data event. Return runNumber instead.");
228  return info->runNumber();
229  }
230  if (!acc_rnd.isAvailable(*info)) {
231  ATH_MSG_WARNING("Failed to find the RandomRunNumber decoration. Please call the apply() method from the PileupReweightingTool before hand in order to get period dependent SFs. You'll receive SFs from the most recent period.");
232  return 999999;
233  } else if (acc_rnd(*info) == 0) {
234  ATH_MSG_DEBUG("Pile up tool has given runNumber 0. Return SF from latest period.");
235  return 999999;
236  }
237  return acc_rnd(*info);
238  }
240  if (!m_init) {
241  ATH_MSG_ERROR("The tool has not been initialized yet.");
242  return CorrectionCode::Error;
243  }
244  unsigned int RunNumber = getRandomRunNumber(info);
246  }
248  if (!m_init) {
249  ATH_MSG_ERROR("The tool has not been initialized yet");
250  return CorrectionCode::Error;
251  }
252  unsigned int RunNumber = getRandomRunNumber(info);
254  }
255 
257  if (!m_init) {
258  ATH_MSG_ERROR("The tool has not been initialized yet");
259  return CorrectionCode::Error;
260  }
261  unsigned int RunNumber = getRandomRunNumber(info);
263  }
265  if (!m_init) {
266  ATH_MSG_ERROR("The tool has not been initialized yet");
267  return CorrectionCode::Error;
268  }
269  unsigned int RunNumber = getRandomRunNumber(info);
271  }
273  if (!m_init) {
274  ATH_MSG_ERROR("The tool has not been initialized yet");
275  return CorrectionCode::Error;
276  }
277  unsigned int RunNumber = getRandomRunNumber(info);
279  }
281  if (!m_init) {
282  ATH_MSG_ERROR("The tool has not been initialized yet");
283  return CorrectionCode::Error;
284  }
285  unsigned int RunNumber = getRandomRunNumber(info);
287  }
289  if (!m_init) {
290  ATH_MSG_ERROR("The tool has not been initialized yet");
291  return CorrectionCode::Error;
292  }
293  unsigned int RunNumber = getRandomRunNumber(info);
295  }
297  if (!m_init) {
298  ATH_MSG_ERROR("The tool has not been initialized yet");
299  return CorrectionCode::Error;
300  }
301  unsigned int RunNumber = getRandomRunNumber(info);
303  }
305  if (!m_init) {
306  ATH_MSG_ERROR("The tool has not been initialized yet");
307  return CorrectionCode::Error;
308  }
309  unsigned int RunNumber = getRandomRunNumber(info);
311  }
313  if (!m_init) {
314  ATH_MSG_ERROR("The tool has not been initialized yet");
315  return CorrectionCode::Error;
316  }
317  unsigned int RunNumber = getRandomRunNumber(info);
319  }
321  if (!m_init) {
322  ATH_MSG_ERROR("The tool has not been initialized yet");
323  return CorrectionCode::Error;
324  }
325  unsigned int RunNumber = getRandomRunNumber(info);
327  }
329  if (!m_init) {
330  ATH_MSG_ERROR("The tool has not been initialized yet");
331  return CorrectionCode::Error;
332  }
333  unsigned int RunNumber = getRandomRunNumber(info);
335  }
336 
337  std::string MuonEfficiencyScaleFactors::resolve_file_location(const std::string &filename) const{
338  if (!m_custom_dir.empty()) {
339  return m_custom_dir + "/" + filename;
340  }
341  std::string fullPathToFile = PathResolverFindCalibFile(Form("MuonEfficiencyCorrections/%s/%s", m_calibration_version.c_str(), filename.c_str()));
342  if (fullPathToFile.empty()) {
343  ATH_MSG_ERROR("Unable to resolve the input file " << m_calibration_version << "/" << filename << " via the PathResolver!");
344  }
345  return fullPathToFile;
346  }
349  else if (m_Type == CP::MuonEfficiencyType::Iso) {
350  return resolve_file_location(Form("Iso_%s_Z.root", m_wp.c_str()));
351  } else if (m_Type == CP::MuonEfficiencyType::TTVA) {
352  return resolve_file_location("TTVA_Z.root");
354  return resolve_file_location("BadMuonVeto_HighPt_Z.root");
355  } else if (m_Type == CP::MuonEfficiencyType::Reco) {
356  return resolve_file_location(Form("Reco_%s_Z.root", m_wp.c_str()));
357  }
358  ATH_MSG_ERROR("What?");
359  return "";
360  }
363  else if (m_Type == CP::MuonEfficiencyType::Iso) {
364  ATH_MSG_WARNING("Using standard isolation SF for LRT muons");
365  return resolve_file_location(Form("Iso_%s_Z.root", m_wp.c_str()));
366  } else if (m_Type == CP::MuonEfficiencyType::TTVA) {
367  ATH_MSG_WARNING("Using standard TTVA SF for LRT muons");
368  return resolve_file_location("TTVA_Z.root");
370  ATH_MSG_WARNING("Using standard BadMuonVeto SF for LRT muons");
371  return resolve_file_location("BadMuonVeto_HighPt_Z.root");
372  } else if (m_Type == CP::MuonEfficiencyType::Reco) {
373  return resolve_file_location(Form("Reco_%sNoID_Z.root", m_wp.c_str()));
374  }
375  ATH_MSG_ERROR("What?");
376  return "";
377  }
379 
381  else if (m_Type != CP::MuonEfficiencyType::Reco) {
382  return filename_Central();
383  } else return resolve_file_location("Reco_CaloTag_Z.root"); //note that in rel22 we switched from CaloTag to CaloScore. Now, we're not updating the filename yet to ensure backward compatibility, but it must be clear that in rel22 calibration areas this file will actually contain the CaloScore SFs.
384  }
386 
388  else if (m_Type != CP::MuonEfficiencyType::Reco) {
389  return filename_Central();
390  } else return resolve_file_location("Reco_HighEta_Z.root");
391  }
393 
395  // for the no reco WPs, we currently use the existing Z SF also for the low pt regime
397  return filename_Central();
398  } else return resolve_file_location(Form("Reco_%s_JPsi.root", m_wp.c_str()));
399  }
401 
403  // for LRT muons, we currently use the existing Z SF also for the low pt regime
404  else return filename_LRTCentral();
405  }
407 
409  // for the no reco WPs, we currently use the existing Z SF also for the low pt regime
411  return filename_Central();
412  } else return resolve_file_location("Reco_CaloTag_JPsi.root"); //note that in rel22 we switched from CaloTag to CaloScore. Now, we're not updating the filename yet to ensure backward compatibility, but it must be clear that in rel22 calibration areas this file will actually contain the CaloScore SFs.
413  }
414  // load the SF histos
415 
417  if (!m_sf_sets.empty()){
418  ATH_MSG_DEBUG("Input already loaded will not do it again");
419  return StatusCode::SUCCESS;
420  }
421  std::map<std::string, unsigned int> systematics = lookUpSystematics();
424  if (systematics.empty()){
425  ATH_MSG_FATAL("No valid systematic could be loaded. Not even the statistical uncertainties");
426  return StatusCode::FAILURE;
427  }
428 
430  m_sf_sets.push_back( std::make_unique<EffiCollection>(*this));
431  EffiCollection* nominal = m_sf_sets.back().get();
432 
433  std::function<unsigned int(unsigned int, unsigned int)> not_inB = [](unsigned int a , unsigned int b){
434  unsigned int b_flipped = ~b;
435  return a & b_flipped;
436  };
438  for (const auto& syst: systematics){
440  if ((syst.second & EffiCollection::ZAnalysis) && (syst.second & EffiCollection::JPsiAnalysis)) {
442  m_sf_sets.push_back(std::make_unique < EffiCollection > (nominal, *this, syst.first, not_inB(syst.second, EffiCollection::ZAnalysis), false));
443  m_sf_sets.push_back(std::make_unique < EffiCollection > (nominal, *this, syst.first, not_inB(syst.second, EffiCollection::ZAnalysis), true));
445  m_sf_sets.push_back(std::make_unique < EffiCollection > (nominal, *this, syst.first, not_inB(syst.second, EffiCollection::JPsiAnalysis), true));
446  m_sf_sets.push_back(std::make_unique < EffiCollection > (nominal, *this, syst.first, not_inB(syst.second, EffiCollection::JPsiAnalysis), false));
447  } else {
448  m_sf_sets.push_back(std::make_unique < EffiCollection > (nominal, *this, syst.first, syst.second, false));
449  m_sf_sets.push_back(std::make_unique < EffiCollection > (nominal, *this, syst.first, syst.second, true));
450  }
451  }
452  for(auto& sf: m_sf_sets){
453  if (!sf->CheckConsistency()) {
454  ATH_MSG_FATAL("Inconsistent scalefactor maps have been found for "<<(sf->getSystSet() ?sf->getSystSet()->name() : "UNKOWN"));
455  return StatusCode::FAILURE;
456  }
457  }
458  return StatusCode::SUCCESS;
459  }
460  std::map<std::string, unsigned int> MuonEfficiencyScaleFactors::lookUpSystematics(){
461  std::map<std::string, unsigned int> syst_map;
464  std::set<std::string> files_to_look_up{
466  filename_Calo(),
468  filename_LowPt(),
470  };
471  if (m_useLRT) {
472  files_to_look_up.insert(filename_LRTCentral());
473  files_to_look_up.insert(filename_LRTLowPt());
474  }
475  std::function<int(const std::string&)> get_bit = [this](const std::string& file_name){
480  if (this->use_lrt()) {
483  }
484  // last file which remains is forward
486  };
487 
488  std::function<void(const std::string&,int)> insert_bit =[&syst_map](const std::string& key, unsigned int bit){
489  if (syst_map.find(key) == syst_map.end()) syst_map.insert(std::pair<std::string, unsigned int>(key,bit));
490  else syst_map[key] = syst_map[key] | bit;
491  };
492  for (const auto& look_up : files_to_look_up){
493  std::unique_ptr<TFile> root_file(TFile::Open(look_up.c_str(), "READ"));
494  if (!root_file || !root_file->IsOpen()){
495  ATH_MSG_FATAL("Could not open file "<<look_up);
496  syst_map.clear();
497  break;
498  }
502  insert_bit("STAT", get_bit(look_up));
503  }
505  if (m_seperateSystBins) insert_bit("STAT", EffiCollection::UnCorrelated);
506 
507  TTree* syst_tree = nullptr;
508  root_file->GetObject("Systematics", syst_tree);
509 
512  if (!m_breakDownSyst || syst_tree == nullptr){
513  ATH_MSG_DEBUG("The file "<<look_up<<" does not contain any systematic tree. No break down for that one will be considered");
514  insert_bit("SYS",get_bit(look_up));
517  insert_bit("SYS", EffiCollection::PtDependent);
518  }
519  continue;
520  }
522  std::string* syst_name = nullptr;
523  bool is_symmetric(0), has_pt_sys(0), uncorrelated(0);
524  if (syst_tree->SetBranchAddress("Name", &syst_name) != 0 ||
525  syst_tree->SetBranchAddress("IsSymmetric", &is_symmetric) != 0 ||
526  syst_tree->SetBranchAddress("HasPtDependentSys", &has_pt_sys) !=0 ||
527  syst_tree->SetBranchAddress("CanBeUncorrelated", &uncorrelated) !=0){
528 
529 
530  ATH_MSG_FATAL("Although "<<look_up<<" has a systematic tree. There is no proper connection to the branches");
531  syst_map.clear();
532  break;
533  }
534  for (int i =0; syst_tree->GetEntry(i); ++i){
535  insert_bit( *syst_name, get_bit(look_up));
536  if (is_symmetric) insert_bit(*syst_name, EffiCollection::Symmetric);
537 
538  if (m_applyKineDepSys && has_pt_sys) {
539  insert_bit(*syst_name, EffiCollection::PtDependent);
540  }if (m_seperateSystBins && uncorrelated) insert_bit(*syst_name, EffiCollection::UnCorrelated);
541  }
542  }
543  return syst_map;
544  }
546  return m_affectingSys.find(systematic) != m_affectingSys.end();
547  }
550  if (!m_affectingSys.empty()) return m_affectingSys;
552  for (auto& collection : m_sf_sets){
553  if (!collection->getSystSet()){
554  ATH_MSG_FATAL("No systematic defined for scale-factor map. ");
555  return SystematicSet();
556  }
557  result.insert(*collection->getSystSet());
558  }
559  return result;
560  }
561 
564  if (!m_init) {
565  ATH_MSG_ERROR("The tool has not been initialized yet");
566  return CP::SystematicSet();
567  }
568  return affectingSystematics();
569  }
571  if (!m_init) {
572  ATH_MSG_ERROR("Initialize first the tool!");
573  return StatusCode::FAILURE;
574  }
575 
576  //check if systematics is cached
577  std::unordered_map<CP::SystematicSet, EffiCollection*>::const_iterator itr = m_filtered_sys_sets.find (systConfig);
578 
579  SystematicSet mySysConf(systConfig);
580 
581  if (itr == m_filtered_sys_sets.end()) {
582  if (!SystematicSet::filterForAffectingSystematics(systConfig, m_affectingSys, mySysConf)) {
583  ATH_MSG_ERROR("Unsupported combination of systematics passed to the tool! ");
584  return StatusCode::FAILURE;
585  }
586  itr = m_filtered_sys_sets.find(mySysConf);
587  }
588 
589  // No cache is available
590  if (itr == m_filtered_sys_sets.end()){
591  std::vector<std::unique_ptr<EffiCollection>>::const_iterator coll_itr = std::find_if(m_sf_sets.begin(), m_sf_sets.end(),[&mySysConf](const std::unique_ptr<EffiCollection>& a){return a->isAffectedBySystematic(mySysConf);});
592  if (coll_itr == m_sf_sets.end()){
593  ATH_MSG_WARNING("Invalid systematic given.");
594  return StatusCode::FAILURE;
595  }
596  m_filtered_sys_sets.insert(std::pair<SystematicSet, EffiCollection*>(systConfig, coll_itr->get()));
597  itr = m_filtered_sys_sets.find(systConfig);
598  }
599  m_current_sf = itr->second;
600 
601  if (m_seperateSystBins && !itr->first.name().empty()){
602  for (std::set<SystematicVariation>::const_iterator t = mySysConf.begin(); t != mySysConf.end(); ++t) {
603  if ((*t).isToyVariation()) {
604  // First entry corresponds to the bin number and
605  // the second entry to the position in which the map is ordered
606  // into the m_sf_sets container
607  std::pair<unsigned, float> pair = (*t).getToyVariation();
608  if (pair.first != 0 && !m_current_sf->SetSystematicBin(pair.first)){
609  ATH_MSG_WARNING("Could not apply systematic " << (*t).name() << " for bin " << pair.first);
610  return StatusCode::FAILURE;
611  }
612  return StatusCode::SUCCESS;
613  }
614  }
615  }
616  return StatusCode::SUCCESS;
617  }
618  std::string MuonEfficiencyScaleFactors::getUncorrelatedSysBinName(unsigned int Bin) const {
619  if (!m_current_sf){
620  throw std::runtime_error("No systematic has been loaded. Cannot return any syst-bin") ;
621  ATH_MSG_FATAL("No systematic has been loaded. Cannot return any syst-bin");
622 
623  }
624  return m_current_sf->GetBinName(Bin);
625  }
627  if (!m_current_sf){
628  ATH_MSG_WARNING("No systematic has been loaded. Cannot return any syst-bin");
629  return -1;
630  }
632  }
634  for (std::set<SystematicVariation>::const_iterator t = systConfig.begin(); t != systConfig.end(); ++t) {
635  if ((*t).isToyVariation()) {
636  std::pair<unsigned, float> pair = (*t).getToyVariation();
637  return getUncorrelatedSysBinName(pair.first);
638  }
639  }
640  ATH_MSG_ERROR("The given systematic " << systConfig.name() << " is not an unfolded one. Return unknown bin ");
641  return "unknown bin";
642  }
643 
644 } /* namespace CP */
grepfile.info
info
Definition: grepfile.py:38
CP::MuonEfficiencyScaleFactors::filename_Calo
std::string filename_Calo() const
Reconstruction scale-factors have a dedicated map for calo-tag muons around |\eta|<0....
Definition: MuonEfficiencyScaleFactors.cxx:378
CP::MuonEfficiencyScaleFactors::m_custom_file_LowPtCalo
std::string m_custom_file_LowPtCalo
Definition: MuonEfficiencyScaleFactors.h:173
python.Dso.registry
registry
Definition: Control/AthenaServices/python/Dso.py:159
CP::MuonEfficiencyScaleFactors::filename_Central
std::string filename_Central() const
The following methods are meant to propagate information from the central tool to the subtool managin...
Definition: MuonEfficiencyScaleFactors.cxx:347
CP::MuonEfficiencyScaleFactors::filename_LRTLowPt
std::string filename_LRTLowPt() const
Definition: MuonEfficiencyScaleFactors.cxx:400
CP::EfficiencyScaleFactor::DataEfficiency
CorrectionCode DataEfficiency(const xAOD::Muon &mu, float &Eff) const
... and absolute efficiencies
Definition: EfficiencyScaleFactor.cxx:308
CP::EfficiencyScaleFactor::ScaleFactorReplicas
CorrectionCode ScaleFactorReplicas(const xAOD::Muon &mu, std::vector< float > &SF)
Definition: EfficiencyScaleFactor.cxx:403
CP::MuonEfficiencyScaleFactors::m_filtered_sys_sets
std::unordered_map< CP::SystematicSet, EffiCollection * > m_filtered_sys_sets
It turned out that the code spends a large time in the look up of the systematics.
Definition: MuonEfficiencyScaleFactors.h:195
CP::MuonEfficiencyScaleFactors::m_custom_file_LRTLowPt
std::string m_custom_file_LRTLowPt
Definition: MuonEfficiencyScaleFactors.h:175
CP::EffiCollection
The EffiCollection class handles the 5 different scale-factor maps binned in time.
Definition: EffiCollection.h:29
CP::MuonEfficiencyScaleFactors::applyMCEfficiency
virtual CorrectionCode applyMCEfficiency(const xAOD::Muon &mu, const xAOD::EventInfo *info=0) const
Definition: MuonEfficiencyScaleFactors.cxx:312
CP::MuonEfficiencyScaleFactors::data_effi_replica_decoration
std::string data_effi_replica_decoration() const
Definition: MuonEfficiencyScaleFactors.cxx:108
CP::EffiCollection::CentralLowPt
@ CentralLowPt
Definition: EffiCollection.h:42
CP::MuonEfficiencyScaleFactors::m_custom_dir
std::string m_custom_dir
Definition: MuonEfficiencyScaleFactors.h:168
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
CP::MuonEfficiencyScaleFactors::LoadInputs
StatusCode LoadInputs()
load the SF histos
Definition: MuonEfficiencyScaleFactors.cxx:416
CP::EfficiencyScaleFactor::MCEfficiencyReplicas
CorrectionCode MCEfficiencyReplicas(const xAOD::Muon &mu, std::vector< float > &eff)
Definition: EfficiencyScaleFactor.cxx:409
get_generator_info.result
result
Definition: get_generator_info.py:21
CP::MuonEfficiencyScaleFactors::lowPtTransition
float lowPtTransition() const
If the pt of the muon is below that threshold the J/Psi or Upsilon map is used given that it's availa...
Definition: MuonEfficiencyScaleFactors.cxx:89
CP::MuonEfficiencyScaleFactors::m_useLRT
bool m_useLRT
Turn on if using LRT objects.
Definition: MuonEfficiencyScaleFactors.h:202
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
CP::MuonEfficiencyScaleFactors::sf_replica_decoration
std::string sf_replica_decoration() const
Definition: MuonEfficiencyScaleFactors.cxx:105
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
CP::MuonEfficiencyScaleFactors::m_iso_jet_dR
std::string m_iso_jet_dR
Name of the decoration to catch up the close by jets.
Definition: MuonEfficiencyScaleFactors.h:190
CP::MuonEfficiencyScaleFactors::getDataEfficiencyReplicas
virtual CorrectionCode getDataEfficiencyReplicas(const xAOD::Muon &mu, std::vector< float > &sf_err, const xAOD::EventInfo *info=0) const
Definition: MuonEfficiencyScaleFactors.cxx:288
CP::MuonEfficiencyScaleFactors::applyMCEfficiencyReplicas
virtual CorrectionCode applyMCEfficiencyReplicas(const xAOD::Muon &mu, int nreplicas=50, const xAOD::EventInfo *info=0) const
Definition: MuonEfficiencyScaleFactors.cxx:328
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
CP::BadMuonVeto
@ BadMuonVeto
Definition: MuonEfficiencyType.h:17
MuonEfficiencyScaleFactors.h
CP::MuonEfficiencyScaleFactors::sf_decoration
std::string sf_decoration() const
The apply<Blah> methods decorate their result directly to the muon.
Definition: MuonEfficiencyScaleFactors.cxx:96
CP::MuonEfficiencyScaleFactors::m_eventInfo
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfo
Definition: MuonEfficiencyScaleFactors.h:77
CP::EffiCollection::UnCorrelated
@ UnCorrelated
Definition: EffiCollection.h:55
CP::SystematicSet::empty
bool empty() const
returns: whether the set is empty
Definition: SystematicSet.h:67
CP::EffiCollection::Central
@ Central
The five different scale-factor maps.
Definition: EffiCollection.h:39
CP::MuonEfficiencyScaleFactors::recommendedSystematics
virtual SystematicSet recommendedSystematics() const
returns: the list of all systematics this tool recommends to use
Definition: MuonEfficiencyScaleFactors.cxx:563
asg
Definition: DataHandleTestTool.h:28
CP::SystematicSet
Class to wrap a set of SystematicVariations.
Definition: SystematicSet.h:31
CP::MuonEfficiencyScaleFactors::applyEfficiencyScaleFactor
virtual CorrectionCode applyEfficiencyScaleFactor(const xAOD::Muon &mu, const xAOD::EventInfo *info=0) const
decorate the muon with scale factor information
Definition: MuonEfficiencyScaleFactors.cxx:247
CP::MuonEfficiencyScaleFactors::m_custom_file_LRTCombined
std::string m_custom_file_LRTCombined
Definition: MuonEfficiencyScaleFactors.h:174
CP::MuonEfficiencyScaleFactors::getMCEfficiencyReplicas
virtual CorrectionCode getMCEfficiencyReplicas(const xAOD::Muon &mu, std::vector< float > &sf_err, const xAOD::EventInfo *info=0) const
Definition: MuonEfficiencyScaleFactors.cxx:320
CP::SystematicSet::name
std::string name() const
returns: the systematics joined into a single string.
Definition: SystematicSet.cxx:278
CP::EffiCollection::Calo
@ Calo
Definition: EffiCollection.h:40
MuonEfficiencyType.h
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:54
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
CP::MuonEfficiencyScaleFactors::m_sf_sets
std::vector< std::unique_ptr< EffiCollection > > m_sf_sets
This vector stores all scale-factor maps.
Definition: MuonEfficiencyScaleFactors.h:163
CP::SystematicVariation
Definition: SystematicVariation.h:47
CP::MuonEfficiencyScaleFactors::m_custom_file_Combined
std::string m_custom_file_Combined
Definition: MuonEfficiencyScaleFactors.h:169
xAOD::EventInfo_v1::IS_SIMULATION
@ IS_SIMULATION
true: simulation, false: data
Definition: EventInfo_v1.h:151
CP
Select isolated Photons, Electrons and Muons.
Definition: Control/xAODRootAccess/xAODRootAccess/TEvent.h:48
xAOD::Muon_v1
Class describing a Muon.
Definition: Muon_v1.h:38
CP::MuonEfficiencyScaleFactors::m_use2DIsoCorr
bool m_use2DIsoCorr
Definition: MuonEfficiencyScaleFactors.h:191
CP::EfficiencyScaleFactor::ApplyScaleFactor
CorrectionCode ApplyScaleFactor(const xAOD::Muon &mu) const
or you can just decorate the scale-factor to the muon
Definition: EfficiencyScaleFactor.cxx:366
CP::EffiCollection::Forward
@ Forward
Definition: EffiCollection.h:41
CP::MuonEfficiencyScaleFactors::filename_LRTCentral
std::string filename_LRTCentral() const
LRT muons have their own efficiency maps.
Definition: MuonEfficiencyScaleFactors.cxx:361
CP::EfficiencyScaleFactor::DataEfficiencyReplicas
CorrectionCode DataEfficiencyReplicas(const xAOD::Muon &mu, std::vector< float > &eff)
Definition: EfficiencyScaleFactor.cxx:406
CP::MuonEfficiencyScaleFactors::m_sf_decoration_name
std::string m_sf_decoration_name
Definition: MuonEfficiencyScaleFactors.h:181
physics_parameters.file_name
string file_name
Definition: physics_parameters.py:32
CP::MuonEfficiencyScaleFactors::getPosition
size_t getPosition(const EffiCollection *coll) const
Returns the position of the collection in the syst set vector.
Definition: MuonEfficiencyScaleFactors.cxx:114
CP::MuonEfficiencyScaleFactors::filename_LowPt
std::string filename_LowPt() const
Returns the scale-factor maps from a complementary scale-factor measurement using the J/Psi or Upsilo...
Definition: MuonEfficiencyScaleFactors.cxx:392
CP::MuonEfficiencyScaleFactors::getDataEfficiency
virtual CorrectionCode getDataEfficiency(const xAOD::Muon &mu, float &eff, const xAOD::EventInfo *info=0) const
Obtain the muon efficiency measured using the data.
Definition: MuonEfficiencyScaleFactors.cxx:272
CP::MuonEfficiencyScaleFactors::MuonEfficiencyScaleFactors
MuonEfficiencyScaleFactors(const std::string &name)
Definition: MuonEfficiencyScaleFactors.cxx:20
CP::CorrectionCode::Error
@ Error
Some error happened during the object correction.
Definition: CorrectionCode.h:36
CP::MuonEfficiencyScaleFactors::m_init
bool m_init
Definition: MuonEfficiencyScaleFactors.h:197
CP::MuonEfficiencyScaleFactors::m_efficiency_decoration_name_mc
std::string m_efficiency_decoration_name_mc
Definition: MuonEfficiencyScaleFactors.h:180
CP::Iso
@ Iso
Definition: MuonEfficiencyType.h:16
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
CheckAppliedSFs.e3
e3
Definition: CheckAppliedSFs.py:264
lumiFormat.i
int i
Definition: lumiFormat.py:92
SystematicRegistry.h
PixelAthClusterMonAlgCfg.e4
e4
Definition: PixelAthClusterMonAlgCfg.py:317
CP::MuonEfficiencyScaleFactors::applyDataEfficiencyReplicas
virtual CorrectionCode applyDataEfficiencyReplicas(const xAOD::Muon &mu, int nreplicas=50, const xAOD::EventInfo *info=0) const
Definition: MuonEfficiencyScaleFactors.cxx:296
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
CP::MuonEfficiencyScaleFactors::m_efficiency_decoration_name_data
std::string m_efficiency_decoration_name_data
Definition: MuonEfficiencyScaleFactors.h:179
CP::MuonEfficiencyScaleFactors::resolve_file_location
std::string resolve_file_location(const std::string &filename) const
utility method to 'dress' a filename using the path resolver
Definition: MuonEfficiencyScaleFactors.cxx:337
top::nominal
@ nominal
Definition: ScaleFactorRetriever.h:29
CP::Reco
@ Reco
Definition: MuonEfficiencyType.h:14
CP::MuonEfficiencyScaleFactors::applySystematicVariation
virtual StatusCode applySystematicVariation(const SystematicSet &systConfig)
effects: configure this tool for the given list of systematic variations.
Definition: MuonEfficiencyScaleFactors.cxx:570
CP::EffiCollection::PtDependent
@ PtDependent
Definition: EffiCollection.h:54
CP::EfficiencyScaleFactor::MCEfficiency
CorrectionCode MCEfficiency(const xAOD::Muon &mu, float &Eff) const
... mc efficiency
Definition: EfficiencyScaleFactor.cxx:323
CP::MuonEfficiencyScaleFactors::getUnCorrelatedSystBin
virtual int getUnCorrelatedSystBin(const xAOD::Muon &mu) const
Definition: MuonEfficiencyScaleFactors.cxx:626
CP::SystematicSet::end
const_iterator end() const
description: const iterator to the end of the set
Definition: SystematicSet.h:59
CP::EffiCollection::GetBinName
std::string GetBinName(unsigned int bin) const
Returns the global bin name conststucted from the axis titles and the bin borders.
Definition: EffiCollection.cxx:300
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CP::MuonEfficiencyScaleFactors::initialize
virtual StatusCode initialize()
initialize the tool once all settings are in place!
Definition: MuonEfficiencyScaleFactors.cxx:128
CP::EfficiencyScaleFactor::ApplyDataEfficiency
CorrectionCode ApplyDataEfficiency(const xAOD::Muon &mu) const
You can decorate the data efficiecny as well.
Definition: EfficiencyScaleFactor.cxx:379
CP::MuonEfficiencyScaleFactors::m_current_sf
EffiCollection * m_current_sf
Pointer to the current active map in terms of systematics.
Definition: MuonEfficiencyScaleFactors.h:166
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
CP::MuonEfficiencyScaleFactors::m_affectingSys
CP::SystematicSet m_affectingSys
Definition: MuonEfficiencyScaleFactors.h:192
CP::EfficiencyScaleFactor::ApplyDataEfficiencyReplicas
CorrectionCode ApplyDataEfficiencyReplicas(const xAOD::Muon &mu, int n_replicas)
Definition: EfficiencyScaleFactor.cxx:385
CP::MuonEfficiencyScaleFactors::filename_HighEta
std::string filename_HighEta() const
High-eta reconstruction scale-factors are not obtained by the means of are not obtained by the means ...
Definition: MuonEfficiencyScaleFactors.cxx:385
StatusCode.h
CP::EffiCollection::retrieveSF
EfficiencyScaleFactor * retrieveSF(const xAOD::Muon &mu, unsigned int RunNumber) const
return the correct SF type to provide, depending on eta and the author
Definition: EffiCollection.cxx:245
EventInfoWrite.RunNumber
RunNumber
Definition: EventInfoWrite.py:50
CP::MuonEfficiencyScaleFactors::isAffectedBySystematic
virtual bool isAffectedBySystematic(const SystematicVariation &systematic) const
returns: whether this tool is affected by the given systematis
Definition: MuonEfficiencyScaleFactors.cxx:545
PathResolver.h
CheckAppliedSFs.systematics
def systematics
Definition: CheckAppliedSFs.py:231
CP::MuonEfficiencyScaleFactors::m_breakDownSyst
bool m_breakDownSyst
Definition: MuonEfficiencyScaleFactors.h:199
CP::Undefined
@ Undefined
Definition: MuonEfficiencyType.h:13
CP::MuonEfficiencyScaleFactors::m_applyKineDepSys
bool m_applyKineDepSys
Definition: MuonEfficiencyScaleFactors.h:200
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
CP::MuonEfficiencyScaleFactors::m_wp
std::string m_wp
the working point to operate on
Definition: MuonEfficiencyScaleFactors.h:160
CP::MuonEfficiencyScaleFactors::applyDataEfficiency
virtual CorrectionCode applyDataEfficiency(const xAOD::Muon &mu, const xAOD::EventInfo *info=0) const
decorate a muon with the efficiency information
Definition: MuonEfficiencyScaleFactors.cxx:280
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
ReadHandle.h
Handle class for reading from StoreGate.
CP::MuonEfficiencyScaleFactors::m_custom_file_Calo
std::string m_custom_file_Calo
Definition: MuonEfficiencyScaleFactors.h:170
CP::TTVA
@ TTVA
Definition: MuonEfficiencyType.h:15
CP::MuonEfficiencyScaleFactors::getNCollections
size_t getNCollections() const
Returns the number of EffiCollections stored in this class.
Definition: MuonEfficiencyScaleFactors.cxx:122
CP::MuonEfficiencyScaleFactors::getEfficiencyScaleFactorReplicas
virtual CorrectionCode getEfficiencyScaleFactorReplicas(const xAOD::Muon &mu, std::vector< float > &sf_err, const xAOD::EventInfo *info=0) const
replica generation
Definition: MuonEfficiencyScaleFactors.cxx:256
CP::MuonEfficiencyScaleFactors::m_custom_file_HighEta
std::string m_custom_file_HighEta
Definition: MuonEfficiencyScaleFactors.h:171
CP::EffiCollection::ZAnalysis
@ ZAnalysis
Definition: EffiCollection.h:45
CP::EffiCollection::Symmetric
@ Symmetric
Definition: EffiCollection.h:53
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
PathResolverFindCalibFile
std::string PathResolverFindCalibFile(const std::string &logical_file_name)
Definition: PathResolver.cxx:431
CP::EffiCollection::CaloLowPt
@ CaloLowPt
Definition: EffiCollection.h:43
CP::SystematicSet::find
iterator find(const SystematicVariation &sys) const
description: find an element in the set
Definition: SystematicSet.h:63
CP::MuonEfficiencyScaleFactors::getEfficiencyScaleFactor
virtual CorrectionCode getEfficiencyScaleFactor(const xAOD::Muon &mu, float &sf, const xAOD::EventInfo *info=0) const
Retrieve the Scale factor and decorate the muon.
Definition: MuonEfficiencyScaleFactors.cxx:239
a
TList * a
Definition: liststreamerinfos.cxx:10
CP::EfficiencyScaleFactor::ApplyMCEfficiency
CorrectionCode ApplyMCEfficiency(const xAOD::Muon &mu) const
... or decorate them directly
Definition: EfficiencyScaleFactor.cxx:391
CP::EffiCollection::JPsiAnalysis
@ JPsiAnalysis
Distinguish these two because the systematics are named with an extra LOWPT.
Definition: EffiCollection.h:48
CP::MuonEfficiencyScaleFactors::getRandomRunNumber
unsigned int getRandomRunNumber(const xAOD::EventInfo *info) const
Definition: MuonEfficiencyScaleFactors.cxx:217
CP::MuonEfficiencyType
MuonEfficiencyType
Definition: MuonEfficiencyType.h:12
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
CP::MuonEfficiencyScaleFactors::mc_effi_decoration
std::string mc_effi_decoration() const
Definition: MuonEfficiencyScaleFactors.cxx:102
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
CP::EfficiencyScaleFactor::ApplyScaleFactorReplicas
CorrectionCode ApplyScaleFactorReplicas(const xAOD::Muon &mu, int n_replicas)
Definition: EfficiencyScaleFactor.cxx:372
CP::SystematicRegistry
This module implements the central registry for handling systematic uncertainties with CP tools.
Definition: SystematicRegistry.h:25
CP::MuonEfficiencyScaleFactors::use_lrt
bool use_lrt() const
option to set if we want to use LRT muons
Definition: MuonEfficiencyScaleFactors.cxx:125
CP::MuonEfficiencyScaleFactors::m_custom_file_LowPt
std::string m_custom_file_LowPt
Definition: MuonEfficiencyScaleFactors.h:172
CP::SystematicSet::begin
const_iterator begin() const
description: const iterator to the beginning of the set
Definition: SystematicSet.h:55
CP::MuonEfficiencyScaleFactors::lookUpSystematics
std::map< std::string, unsigned int > lookUpSystematics()
Scale-factor files since Moriond2019 contain the breakdown of systematics into their individual compo...
Definition: MuonEfficiencyScaleFactors.cxx:460
CP::MuonEfficiencyScaleFactors::applyEfficiencyScaleFactorReplicas
virtual CorrectionCode applyEfficiencyScaleFactorReplicas(const xAOD::Muon &mu, int nreplicas=50, const xAOD::EventInfo *info=0) const
decorate the muon with a set of SF replica weights.
Definition: MuonEfficiencyScaleFactors.cxx:264
CP::MuonEfficiencyScaleFactors::mc_effi_replica_deocration
std::string mc_effi_replica_deocration() const
Definition: MuonEfficiencyScaleFactors.cxx:111
CP::MuonEfficiencyScaleFactors::uncorrelate_sys
bool uncorrelate_sys() const
Returns a boolean whether the uncorrelation of systematics has been switched on.
Definition: MuonEfficiencyScaleFactors.cxx:92
CP::CorrectionCode
Return value from object correction CP tools.
Definition: CorrectionCode.h:31
CaloCellTimeCorrFiller.filename
filename
Definition: CaloCellTimeCorrFiller.py:24
CP::EfficiencyScaleFactor::ScaleFactor
CorrectionCode ScaleFactor(const xAOD::Muon &mu, float &SF) const
the important bits - extract SF info
Definition: EfficiencyScaleFactor.cxx:292
CP::MuonEfficiencyScaleFactors::close_by_jet_decoration
const std::string & close_by_jet_decoration() const
Returns the string telling the tool in which float AuxElement the information of the separation to th...
Definition: MuonEfficiencyScaleFactors.cxx:83
dqt_zlumi_alleff_HIST.eff
int eff
Definition: dqt_zlumi_alleff_HIST.py:113
CP::EfficiencyScaleFactor::ApplyMCEfficiencyReplicas
CorrectionCode ApplyMCEfficiencyReplicas(const xAOD::Muon &mu, int n_replicas)
Definition: EfficiencyScaleFactor.cxx:397
CP::MuonEfficiencyScaleFactors::filename_LowPtCalo
std::string filename_LowPtCalo() const
Definition: MuonEfficiencyScaleFactors.cxx:406
CP::MuonEfficiencyScaleFactors::m_lowpt_threshold
float m_lowpt_threshold
threshold below which low-pt SF (i.e. from JPsi) should be used
Definition: MuonEfficiencyScaleFactors.h:188
CP::MuonEfficiencyScaleFactors::m_seperateSystBins
bool m_seperateSystBins
Definition: MuonEfficiencyScaleFactors.h:198
CP::EffiCollection::getUnCorrelatedSystBin
int getUnCorrelatedSystBin(const xAOD::Muon &mu) const
Returns the bin number from which the scale-factor of the muon is going to be retrieved....
Definition: EffiCollection.cxx:316
CP::MuonEfficiencyScaleFactors::use_2D_iso_corrections
bool use_2D_iso_corrections() const
option to set if we want to use 1D or 2D isolation SFs
Definition: MuonEfficiencyScaleFactors.cxx:86
CP::EffiCollection::SetSystematicBin
bool SetSystematicBin(unsigned int Bin)
If systematic decorrelation is activated then the user needs to loop manually over the syst bins.
Definition: EffiCollection.cxx:278
CaloNoise_fillDB.mu
mu
Definition: CaloNoise_fillDB.py:53
CP::MuonEfficiencyScaleFactors::getUncorrelatedSysBinName
virtual std::string getUncorrelatedSysBinName(unsigned int Bin) const
Definition: MuonEfficiencyScaleFactors.cxx:618
CP::MuonEfficiencyScaleFactors::measurement
CP::MuonEfficiencyType measurement() const
Returns the type of the measurement to be carried out... E.g. Reco/TTVA/Iso.
Definition: MuonEfficiencyScaleFactors.cxx:93
CP::MuonEfficiencyScaleFactors::m_Type
CP::MuonEfficiencyType m_Type
Definition: MuonEfficiencyScaleFactors.h:204
SystematicVariation.h
CP::MuonEfficiencyScaleFactors::data_effi_decoration
std::string data_effi_decoration() const
Definition: MuonEfficiencyScaleFactors.cxx:99
CP::MuonEfficiencyScaleFactors::getMCEfficiency
virtual CorrectionCode getMCEfficiency(const xAOD::Muon &mu, float &eff, const xAOD::EventInfo *info=0) const
Obtain the muon efficiency measured using the MC.
Definition: MuonEfficiencyScaleFactors.cxx:304
CP::SystematicSet::filterForAffectingSystematics
static StatusCode filterForAffectingSystematics(const SystematicSet &systConfig, const SystematicSet &affectingSystematics, SystematicSet &filteredSystematics)
description: filter the systematics for the affected systematics returns: success guarantee: strong f...
Definition: SystematicSet.cxx:213
CP::SystematicRegistry::getInstance
static SystematicRegistry & getInstance()
Get the singleton instance of the registry for the curren thread.
Definition: SystematicRegistry.cxx:25
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
CP::MuonEfficiencyScaleFactors::m_calibration_version
std::string m_calibration_version
subfolder to load from the calibration db
Definition: MuonEfficiencyScaleFactors.h:184
EffiCollection.h
CP::MuonEfficiencyScaleFactors::affectingSystematics
virtual SystematicSet affectingSystematics() const
returns: the list of all systematics this tool can be affected by
Definition: MuonEfficiencyScaleFactors.cxx:549