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("run3") != 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_%sLRT_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  // we use the Z SF for the low pt regime for Run-3
404  else if (m_Type != CP::MuonEfficiencyType::Reco || m_lowpt_threshold < 0 || m_calibration_version.find("run3") != std::string::npos) {
405  return filename_LRTCentral();
406  } else return resolve_file_location(Form("Reco_%sLRT_JPsi.root", m_wp.c_str()));
407  }
409 
411  // for the no reco WPs, we currently use the existing Z SF also for the low pt regime
413  return filename_Central();
414  } 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.
415  }
416  // load the SF histos
417 
419  if (!m_sf_sets.empty()){
420  ATH_MSG_DEBUG("Input already loaded will not do it again");
421  return StatusCode::SUCCESS;
422  }
423  std::map<std::string, unsigned int> systematics = lookUpSystematics();
426  if (systematics.empty()){
427  ATH_MSG_FATAL("No valid systematic could be loaded. Not even the statistical uncertainties");
428  return StatusCode::FAILURE;
429  }
430 
432  m_sf_sets.push_back( std::make_unique<EffiCollection>(*this));
433  EffiCollection* nominal = m_sf_sets.back().get();
434 
435  std::function<unsigned int(unsigned int, unsigned int)> not_inB = [](unsigned int a , unsigned int b){
436  unsigned int b_flipped = ~b;
437  return a & b_flipped;
438  };
440  for (const auto& syst: systematics){
442  if ((syst.second & EffiCollection::ZAnalysis) && (syst.second & EffiCollection::JPsiAnalysis)) {
444  m_sf_sets.push_back(std::make_unique < EffiCollection > (nominal, *this, syst.first, not_inB(syst.second, EffiCollection::ZAnalysis), false));
445  m_sf_sets.push_back(std::make_unique < EffiCollection > (nominal, *this, syst.first, not_inB(syst.second, EffiCollection::ZAnalysis), true));
447  m_sf_sets.push_back(std::make_unique < EffiCollection > (nominal, *this, syst.first, not_inB(syst.second, EffiCollection::JPsiAnalysis), true));
448  m_sf_sets.push_back(std::make_unique < EffiCollection > (nominal, *this, syst.first, not_inB(syst.second, EffiCollection::JPsiAnalysis), false));
449  } else {
450  m_sf_sets.push_back(std::make_unique < EffiCollection > (nominal, *this, syst.first, syst.second, false));
451  m_sf_sets.push_back(std::make_unique < EffiCollection > (nominal, *this, syst.first, syst.second, true));
452  }
453  }
454  for(auto& sf: m_sf_sets){
455  if (!sf->CheckConsistency()) {
456  ATH_MSG_FATAL("Inconsistent scalefactor maps have been found for "<<(sf->getSystSet() ?sf->getSystSet()->name() : "UNKOWN"));
457  return StatusCode::FAILURE;
458  }
459  }
460  return StatusCode::SUCCESS;
461  }
462  std::map<std::string, unsigned int> MuonEfficiencyScaleFactors::lookUpSystematics(){
463  std::map<std::string, unsigned int> syst_map;
466  std::set<std::string> files_to_look_up{
468  filename_Calo(),
470  filename_LowPt(),
472  };
473  if (m_useLRT) {
474  files_to_look_up.insert(filename_LRTCentral());
475  files_to_look_up.insert(filename_LRTLowPt());
476  }
477  std::function<int(const std::string&)> get_bit = [this](const std::string& file_name){
482  if (this->use_lrt()) {
485  }
486  // last file which remains is forward
488  };
489 
490  std::function<void(const std::string&,int)> insert_bit =[&syst_map](const std::string& key, unsigned int bit){
491  if (syst_map.find(key) == syst_map.end()) syst_map.insert(std::pair<std::string, unsigned int>(key,bit));
492  else syst_map[key] = syst_map[key] | bit;
493  };
494  for (const auto& look_up : files_to_look_up){
495  std::unique_ptr<TFile> root_file(TFile::Open(look_up.c_str(), "READ"));
496  if (!root_file || !root_file->IsOpen()){
497  ATH_MSG_FATAL("Could not open file "<<look_up);
498  syst_map.clear();
499  break;
500  }
504  insert_bit("STAT", get_bit(look_up));
505  }
507  if (m_seperateSystBins) insert_bit("STAT", EffiCollection::UnCorrelated);
508 
509  TTree* syst_tree = nullptr;
510  root_file->GetObject("Systematics", syst_tree);
511 
514  if (!m_breakDownSyst || syst_tree == nullptr){
515  ATH_MSG_DEBUG("The file "<<look_up<<" does not contain any systematic tree. No break down for that one will be considered");
516  insert_bit("SYS",get_bit(look_up));
519  insert_bit("SYS", EffiCollection::PtDependent);
520  }
521  continue;
522  }
524  std::string* syst_name = nullptr;
525  bool is_symmetric(0), has_pt_sys(0), uncorrelated(0);
526  if (syst_tree->SetBranchAddress("Name", &syst_name) != 0 ||
527  syst_tree->SetBranchAddress("IsSymmetric", &is_symmetric) != 0 ||
528  syst_tree->SetBranchAddress("HasPtDependentSys", &has_pt_sys) !=0 ||
529  syst_tree->SetBranchAddress("CanBeUncorrelated", &uncorrelated) !=0){
530 
531 
532  ATH_MSG_FATAL("Although "<<look_up<<" has a systematic tree. There is no proper connection to the branches");
533  syst_map.clear();
534  break;
535  }
536  for (int i =0; syst_tree->GetEntry(i); ++i){
537  insert_bit( *syst_name, get_bit(look_up));
538  if (is_symmetric) insert_bit(*syst_name, EffiCollection::Symmetric);
539 
540  if (m_applyKineDepSys && has_pt_sys) {
541  insert_bit(*syst_name, EffiCollection::PtDependent);
542  }if (m_seperateSystBins && uncorrelated) insert_bit(*syst_name, EffiCollection::UnCorrelated);
543  }
544  }
545  return syst_map;
546  }
548  return m_affectingSys.find(systematic) != m_affectingSys.end();
549  }
552  if (!m_affectingSys.empty()) return m_affectingSys;
554  for (auto& collection : m_sf_sets){
555  if (!collection->getSystSet()){
556  ATH_MSG_FATAL("No systematic defined for scale-factor map. ");
557  return SystematicSet();
558  }
559  result.insert(*collection->getSystSet());
560  }
561  return result;
562  }
563 
566  if (!m_init) {
567  ATH_MSG_ERROR("The tool has not been initialized yet");
568  return CP::SystematicSet();
569  }
570  return affectingSystematics();
571  }
573  if (!m_init) {
574  ATH_MSG_ERROR("Initialize first the tool!");
575  return StatusCode::FAILURE;
576  }
577 
578  //check if systematics is cached
579  std::unordered_map<CP::SystematicSet, EffiCollection*>::const_iterator itr = m_filtered_sys_sets.find (systConfig);
580 
581  SystematicSet mySysConf(systConfig);
582 
583  if (itr == m_filtered_sys_sets.end()) {
584  if (!SystematicSet::filterForAffectingSystematics(systConfig, m_affectingSys, mySysConf)) {
585  ATH_MSG_ERROR("Unsupported combination of systematics passed to the tool! ");
586  return StatusCode::FAILURE;
587  }
588  itr = m_filtered_sys_sets.find(mySysConf);
589  }
590 
591  // No cache is available
592  if (itr == m_filtered_sys_sets.end()){
593  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);});
594  if (coll_itr == m_sf_sets.end()){
595  ATH_MSG_WARNING("Invalid systematic given.");
596  return StatusCode::FAILURE;
597  }
598  m_filtered_sys_sets.insert(std::pair<SystematicSet, EffiCollection*>(systConfig, coll_itr->get()));
599  itr = m_filtered_sys_sets.find(systConfig);
600  }
601  m_current_sf = itr->second;
602 
603  if (m_seperateSystBins && !itr->first.name().empty()){
604  for (std::set<SystematicVariation>::const_iterator t = mySysConf.begin(); t != mySysConf.end(); ++t) {
605  if ((*t).isToyVariation()) {
606  // First entry corresponds to the bin number and
607  // the second entry to the position in which the map is ordered
608  // into the m_sf_sets container
609  std::pair<unsigned, float> pair = (*t).getToyVariation();
610  if (pair.first != 0 && !m_current_sf->SetSystematicBin(pair.first)){
611  ATH_MSG_WARNING("Could not apply systematic " << (*t).name() << " for bin " << pair.first);
612  return StatusCode::FAILURE;
613  }
614  return StatusCode::SUCCESS;
615  }
616  }
617  }
618  return StatusCode::SUCCESS;
619  }
620  std::string MuonEfficiencyScaleFactors::getUncorrelatedSysBinName(unsigned int Bin) const {
621  if (!m_current_sf){
622  throw std::runtime_error("No systematic has been loaded. Cannot return any syst-bin") ;
623  ATH_MSG_FATAL("No systematic has been loaded. Cannot return any syst-bin");
624 
625  }
626  return m_current_sf->GetBinName(Bin);
627  }
629  if (!m_current_sf){
630  ATH_MSG_WARNING("No systematic has been loaded. Cannot return any syst-bin");
631  return -1;
632  }
634  }
636  for (std::set<SystematicVariation>::const_iterator t = systConfig.begin(); t != systConfig.end(); ++t) {
637  if ((*t).isToyVariation()) {
638  std::pair<unsigned, float> pair = (*t).getToyVariation();
639  return getUncorrelatedSysBinName(pair.first);
640  }
641  }
642  ATH_MSG_ERROR("The given systematic " << systConfig.name() << " is not an unfolded one. Return unknown bin ");
643  return "unknown bin";
644  }
645 
646 } /* 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:418
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:565
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:55
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:85
SystematicRegistry.h
PixelAthClusterMonAlgCfg.e4
e4
Definition: PixelAthClusterMonAlgCfg.py:332
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
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:572
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:628
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:547
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:228
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:462
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:408
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:620
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:551