Loading [MathJax]/jax/input/TeX/config.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
SUSYToolsInit.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 // For making the systematics list and looping through it
10 
11 // For the data types to be used in configuring tools
12 #include "PATCore/PATCoreEnums.h"
13 
14 // For the tau tool initialization
15 #include "TauAnalysisTools/Enums.h"
16 
17 // For the struct needed for OR init
19 
20 // Abstract interface classes
23 
30 
41 
47 
53 
55 //disable #include "IsolationSelection/IIsolationLowPtPLVTool.h"
58 
59 #include "METInterface/IMETMaker.h"
62 
67 // Can't use the abstract interface for this one (see header comment)
69 
77 
79 
80 #ifndef XAOD_STANDALONE
82 #endif
83 
84 using namespace ST;
85 
86 
87 
88 #define CONFIG_EG_EFF_TOOL( TOOLHANDLE, TOOLNAME, CORRFILE ) \
89  if( !TOOLHANDLE.isUserConfigured() ) { \
90  TOOLHANDLE.setTypeAndName("AsgElectronEfficiencyCorrectionTool/"+TOOLNAME); \
91  std::vector< std::string > corrFileNameList = {CORRFILE}; \
92  ATH_CHECK( TOOLHANDLE.setProperty("CorrectionFileNameList", corrFileNameList) ); \
93  if(!isData()) \
94  ATH_CHECK (TOOLHANDLE.setProperty("ForceDataType", static_cast<int>(data_type))); \
95  ATH_CHECK( TOOLHANDLE.setProperty("CorrelationModel", m_EG_corrModel) ); \
96  ATH_CHECK( TOOLHANDLE.setProperty("OutputLevel", this->msg().level()) ); \
97  ATH_CHECK( TOOLHANDLE.initialize() ); \
98  } else ATH_CHECK(TOOLHANDLE.retrieve());
99 
100 #define CONFIG_EG_EFF_TOOL_KEY( TOOLHANDLE, TOOLNAME, KEYNAME, KEY, MAP ) \
101  if( !TOOLHANDLE.isUserConfigured() ) { \
102  TOOLHANDLE.setTypeAndName("AsgElectronEfficiencyCorrectionTool/"+TOOLNAME); \
103  ATH_MSG_INFO( "Will now set key \"" << KEYNAME << "\" to value \"" << KEY << "\" when configuring an AsgElectronEfficiencyCorrectionTool" ); \
104  ATH_CHECK( TOOLHANDLE.setProperty(KEYNAME, KEY) ); \
105  if(!isData()) \
106  ATH_CHECK (TOOLHANDLE.setProperty("ForceDataType", static_cast<int>(data_type))); \
107  ATH_CHECK( TOOLHANDLE.setProperty("CorrelationModel", m_EG_corrModel) ); \
108  ATH_CHECK( TOOLHANDLE.setProperty("OutputLevel", this->msg().level()) ); \
109  ATH_CHECK( TOOLHANDLE.setProperty("MapFilePath", MAP) ); \
110  ATH_CHECK( TOOLHANDLE.initialize() ); \
111  } else if (!isData()) ATH_CHECK(TOOLHANDLE.retrieve());
112 
114 {
115  if (m_dataSource < 0) {
116  ATH_MSG_FATAL("Data source incorrectly configured!!");
117  ATH_MSG_FATAL("You must set the DataSource property to Data, FullSim or AtlfastII !!");
118  ATH_MSG_FATAL("Expect segfaults if you're not checking status codes, which you should be !!");
119  return StatusCode::FAILURE;
120  }
121 
122  if (m_subtool_init) {
123  ATH_MSG_INFO("SUSYTools subtools already created. Ignoring this call.");
124  ATH_MSG_INFO("Note: No longer necessary to explicitly call SUSYToolsInit. Will avoid creating tools again.");
125  return StatusCode::SUCCESS;
126  }
127 
128  // /////////////////////////////////////////////////////////////////////////////////////////
129  // Initialise PileupReweighting Tool
130 
131  if (!m_prwTool.isUserConfigured()) {
132  ATH_MSG_DEBUG("Will now init the PRW tool");
133  std::vector<std::string> file_conf;
134  for (UInt_t i = 0; i < m_prwConfFiles.size(); i++) {
135  ATH_MSG_INFO("Adding PRW file: " << m_prwConfFiles.at(i));
136  file_conf.push_back(m_prwConfFiles.at(i));
137  }
138 
139  std::vector<std::string> file_ilumi;
140  for (UInt_t i = 0; i < m_prwLcalcFiles.size(); i++) {
141  ATH_MSG_INFO("Adding ilumicalc file: " << m_prwLcalcFiles.at(i));
142  file_ilumi.push_back(m_prwLcalcFiles.at(i));
143  }
144 
145  m_prwTool.setTypeAndName("CP::PileupReweightingTool/PrwTool");
146  ATH_CHECK( m_prwTool.setProperty("ConfigFiles", file_conf) );
147  ATH_CHECK( m_prwTool.setProperty("LumiCalcFiles", file_ilumi) );
148  ATH_CHECK( m_prwTool.setProperty("DataScaleFactor", m_prwDataSF) ); // 1./1.03 -> default for mc16, see: https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/ExtendedPileupReweighting#Tool_Properties
149  ATH_CHECK( m_prwTool.setProperty("DataScaleFactorUP", m_prwDataSF_UP) ); // 1. -> old value (mc15), as the one for mc16 is still missing
150  ATH_CHECK( m_prwTool.setProperty("DataScaleFactorDOWN", m_prwDataSF_DW) ); // 1./1.18 -> old value (mc15), as the one for mc16 is still missing
151  ATH_CHECK( m_prwTool.setProperty("TrigDecisionTool", m_trigDecTool.getHandle()) );
152  ATH_CHECK( m_prwTool.setProperty("UseRunDependentPrescaleWeight", m_runDepPrescaleWeightPRW) );
153  ATH_CHECK( m_prwTool.setProperty("OutputLevel", MSG::WARNING) );
155  } else {
156  ATH_MSG_INFO("Using user-configured PRW tool");
158  }
159 
161  // Initialize LRT systematics tool
162  if (!m_LRTuncTool.isUserConfigured() && !isData())
163  {
164  ATH_MSG_INFO("Initializing LRT uncertainty tool");
165  m_LRTuncTool.setTypeAndName("InDet::InclusiveTrackFilterTool/LRTUncTool");
166  ATH_CHECK( m_LRTuncTool.setProperty("Seed", 1) );
167  if (m_isRun3) {
168  if (m_mcCampaign == "mc23d" || m_mcCampaign == "mc23e")
169  ATH_MSG_WARNING("Please note that current ID recommendations only cover mc23a and not (yet) mc23d/e!");
170  ATH_CHECK( m_LRTuncTool.setProperty("calibFileLRTEff", "InDetTrackSystematicsTools/CalibData_25.2_2025-v00/LargeD0TrackingRecommendations_mc23a.root") );
171  }
172  else
173  ATH_CHECK( m_LRTuncTool.setProperty("calibFileLRTEff", "InDetTrackSystematicsTools/CalibData_24.0_2023-v00/LargeD0TrackingRecommendations_20230824.root") );
175  } else {
176  ATH_MSG_INFO("Using user-configured LRT uncertainty tool");
178  }
179 
180  std::string toolName; // to be used for tool init below, keeping explicit string constants a minimum /CO
181 
182  std::string jetname,jetcoll,fatjetcoll;
183  if (m_slices["jet"]) {
185  // Initialise jet calibration tool
186 
187  // pick the right config file for the JES tool : https://twiki.cern.ch/twiki/bin/view/AtlasProtected/ApplyJetCalibrationR22
189  jetcoll = jetname + "Jets";
190 
192  toolName = "JetCalibTool_" + jetname;
193  m_jetCalibTool.setTypeAndName("JetCalibrationTool/"+toolName);
194  std::string JES_config_file, calibseq;
195 
197  ATH_MSG_ERROR("Unknown (unsupported) jet collection is used, (m_jetInputType = " << m_jetInputType << ")");
198  return StatusCode::FAILURE;
199  }
200 
201  std::string JESconfig = isAtlfast() ? m_jesConfigAFII : m_jesConfig;
202  if(isAtlfast() && m_isRun3) {
203  ATH_MSG_WARNING("Jet JES/JER recommendations currently not available for fast sim in Run 3, falling back to full sim version");
204  JESconfig = m_jesConfig;
205  }
206 
207  calibseq = m_jesCalibSeq;
208  JES_config_file = JESconfig;
209 
210  // remove Insitu if it's in the string if not data
211  if (!isData()) {
212  std::string insitu("_Insitu");
213  auto found = calibseq.find(insitu);
214  if(found != std::string::npos){
215  calibseq.erase(found, insitu.length());
216  }
217  }
218 
219  // JMS calibration (if requested)
220  if (m_JMScalib){
221  ATH_MSG_ERROR("JMS calibration is not supported yet for R22. Please modify your settings.");
222  return StatusCode::FAILURE;
223  }
224 
225  // now instantiate the tool
226  ATH_CHECK( m_jetCalibTool.setProperty("JetCollection", jetname) );
227  ATH_CHECK( m_jetCalibTool.setProperty("ConfigFile", JES_config_file) );
228  ATH_CHECK( m_jetCalibTool.setProperty("CalibSequence", calibseq) );
230  ATH_CHECK( m_jetCalibTool.setProperty("IsData", isData()) );
231  ATH_CHECK( m_jetCalibTool.setProperty("OutputLevel", this->msg().level()) );
234  }
235 
236  if (m_slices["fjet"]) {
237  //same for fat groomed jets
238  fatjetcoll = m_fatJets;
239 
240  if(fatjetcoll == "AnalysisLargeRJets") {
241  ATH_MSG_DEBUG("Fall back to calibration for AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets, original name for AnalysisLargeRJets");
242  fatjetcoll = "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets";
243  }
244  if (fatjetcoll.size()>3)fatjetcoll.erase(fatjetcoll.size()-4,4);
245  if (!m_jetFatCalibTool.isUserConfigured() && !m_fatJets.empty()) {
246  toolName = "JetFatCalibTool_" + m_fatJets;
247  m_jetFatCalibTool.setTypeAndName("JetCalibrationTool/"+toolName);
248 
249  std::string jesConfigFat = m_jesConfigFat;
250  std::string jesCalibSeqFat = m_jesCalibSeqFat;
251  // add Insitu if data
252  if(isData()) jesCalibSeqFat += "_Insitu";
253 
254  // now instantiate the tool
255  ATH_CHECK( m_jetFatCalibTool.setProperty("JetCollection", fatjetcoll) );
256  ATH_CHECK( m_jetFatCalibTool.setProperty("ConfigFile", jesConfigFat) );
257  ATH_CHECK( m_jetFatCalibTool.setProperty("CalibSequence", jesCalibSeqFat) );
258  // always set to false : https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/ApplyJetCalibrationR21
260  ATH_CHECK( m_jetFatCalibTool.setProperty("OutputLevel", this->msg().level()) );
263  }
264 
265  if (m_slices["fjet"]) {
267  // Initialise Boson taggers: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/BoostedJetTaggingRecommendationFullRun2#Higgs_taggers
268  if (!m_WTaggerTool.isUserConfigured() && !m_WtagConfig.empty()) {
269  m_WTaggerTool.setTypeAndName("SmoothedWZTagger/WTagger");
270  ATH_CHECK( m_WTaggerTool.setProperty("ContainerName", m_fatJets) );
274  ATH_CHECK( m_WTaggerTool.setProperty("TruthBosonContainerName", "TruthBoson") ); // Set this if you are using a TRUTH3 style truth boson container;
275  ATH_CHECK( m_WTaggerTool.setProperty("TruthTopQuarkContainerName", "TruthTop") ); // Set this if you are using a TRUTH3 style truth boson container;
276 #ifndef XAOD_STANDALONE
277  ATH_CHECK( m_WTaggerTool.setProperty("SuppressOutputDependence", true) );
278 #endif
279  ATH_CHECK( m_WTaggerTool.setProperty("OutputLevel", this->msg().level()) );
281 
282  // Retrieving DecorationName (needed to access tagging results downstream):
283  std::string WConfigPath = PathResolverFindCalibFile("BoostedJetTaggers/"+m_WZTaggerCalibArea+"/"+m_WtagConfig);
284  if ( m_WconfigReader.ReadFile( WConfigPath.c_str(), EEnvLevel(0) ) ) {
285  ATH_MSG_ERROR( "Error while reading large-R config file : " << WConfigPath );
286  return StatusCode::FAILURE;
287  }
288  else ATH_MSG_DEBUG( "Successfully read large-R config file : " << WConfigPath );
289 
290  m_WDecorName = m_WconfigReader.GetValue("DecorationName" ,"");
291  ANA_MSG_DEBUG( "Found DecorationName in large-R config file : " << m_WDecorName );
292 
294 
295  if (!m_ZTaggerTool.isUserConfigured() && !m_ZtagConfig.empty()) {
296  m_ZTaggerTool.setTypeAndName("SmoothedWZTagger/ZTagger");
297  ATH_CHECK( m_ZTaggerTool.setProperty("ContainerName", m_fatJets) );
301  ATH_CHECK( m_ZTaggerTool.setProperty("TruthBosonContainerName", "TruthBoson") ); // Set this if you are using a TRUTH3 style truth boson container;
302  ATH_CHECK( m_ZTaggerTool.setProperty("TruthTopQuarkContainerName", "TruthTop") ); // Set this if you are using a TRUTH3 style truth boson container;
303 #ifndef XAOD_STANDALONE
304  ATH_CHECK( m_ZTaggerTool.setProperty("SuppressOutputDependence", true) );
305 #endif
306  ATH_CHECK( m_ZTaggerTool.setProperty("OutputLevel", this->msg().level()) );
308 
309  // Retrieving DecorationName (needed to access tagging results downstream):
310  std::string ZConfigPath = PathResolverFindCalibFile("BoostedJetTaggers/"+m_WZTaggerCalibArea+"/"+m_ZtagConfig);
311  if ( m_ZconfigReader.ReadFile( ZConfigPath.c_str(), EEnvLevel(0) ) ) {
312  ATH_MSG_ERROR( "Error while reading large-R config file : " << ZConfigPath );
313  return StatusCode::FAILURE;
314  }
315  else ATH_MSG_DEBUG( "Successfully read large-R config file : " << ZConfigPath );
316 
317  m_ZDecorName = m_ZconfigReader.GetValue("DecorationName" ,"");
318  ANA_MSG_DEBUG( "Found DecorationName in large-R config file : " << m_ZDecorName );
319 
321 
322  if (!m_TopTaggerTool.isUserConfigured() && !m_ToptagConfig.empty()) {
323  m_TopTaggerTool.setTypeAndName("JSSWTopTaggerDNN/TopTagger");
324  ATH_CHECK( m_TopTaggerTool.setProperty("ContainerName", m_fatJets) );
328  ATH_CHECK( m_TopTaggerTool.setProperty("TruthBosonContainerName", "TruthBoson") ); // Set this if you are using a TRUTH3 style truth boson container;
329  ATH_CHECK( m_TopTaggerTool.setProperty("TruthTopQuarkContainerName", "TruthTop") ); // Set this if you are using a TRUTH3 style truth boson container;
330 #ifndef XAOD_STANDALONE
331  ATH_CHECK( m_TopTaggerTool.setProperty("SuppressOutputDependence", true) );
332 #endif
333  ATH_CHECK( m_TopTaggerTool.setProperty("OutputLevel", this->msg().level()) );
335 
336  // Retrieving DecorationName (needed to access tagging results downstream):
337  std::string TopConfigPath = PathResolverFindCalibFile("BoostedJetTaggers/"+m_TopTaggerCalibArea+"/"+m_ToptagConfig);
338  if ( m_TopconfigReader.ReadFile( TopConfigPath.c_str(), EEnvLevel(0) ) ) {
339  ATH_MSG_ERROR( "Error while reading large-R config file : " << TopConfigPath );
340  return StatusCode::FAILURE;
341  }
342  else ATH_MSG_DEBUG( "Successfully read large-R config file : " << TopConfigPath );
343 
344  m_TopDecorName = m_TopconfigReader.GetValue("DecorationName" ,"");
345  ANA_MSG_DEBUG( "Found DecorationName in large-R config file : " << m_TopDecorName );
346 
348 
350  // Initialise JetTruthLabelingTool: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/JetUncertaintiesRel21Summer2019LargeR#AnalysisBase_21_2_114_and_newer
351  if(!isData()) {
352  m_label_truthKey = fatjetcoll+"."+m_JetTruthLabelName;
353  ATH_CHECK(m_label_truthKey.initialize());
354 
356  m_jetTruthLabelingTool.setTypeAndName("JetTruthLabelingTool/ST_JetTruthLabelingTool");
357  ATH_CHECK( m_jetTruthLabelingTool.setProperty("RecoJetContainer", m_fatJets) );
359  ATH_CHECK( m_jetTruthLabelingTool.setProperty("UseTRUTH3", m_useTRUTH3) ); // Set this to false only if you have the FULL !TruthParticles container in your input file
360  ATH_CHECK( m_jetTruthLabelingTool.setProperty("TruthParticleContainerName", "TruthParticles") );
361  ATH_CHECK( m_jetTruthLabelingTool.setProperty("TruthBosonContainerName", "TruthBoson") ); // Set this if you are using a TRUTH3 style truth boson container
362  ATH_CHECK( m_jetTruthLabelingTool.setProperty("TruthTopQuarkContainerName", "TruthTop") ); // Set this if you are using a TRUTH3 style truth top quark container
363  ATH_CHECK( m_jetTruthLabelingTool.setProperty("OutputLevel", this->msg().level()) );
366  }
367  }
368 
369  if (m_slices["jet"] || m_slices["fjet"]) {
370 
371 
373  // Initialise jet uncertainty tool
374  // https://twiki.cern.ch/twiki/bin/view/AtlasProtected/JetUncertaintiesRel22
375  ATH_MSG_INFO("Set up Jet Uncertainty tool...");
376 
377  // if not set, derive the MCType from the simulation type and MC campaign
378  if (m_jetUncertaintiesMCType.empty()) m_jetUncertaintiesMCType = m_isRun3 ? (isAtlfast() ? "MC23AF3" : "MC23") : (isAtlfast() ? "AF3" : "MC20");
379 
381  std::string jetdef("AntiKt4" + xAOD::JetInput::typeName(xAOD::JetInput::Type(m_jetInputType)));
382 
383  if(jetdef !="AntiKt4EMPFlow"){
384  ATH_MSG_WARNING("Jet Uncertaintes recommendations only exist for PFlow jets, falling back to AntiKt4EMPFlow");
385  jetdef = "AntiKt4EMPFlow";
386  }
387  toolName = "JetUncertaintiesTool_" + jetdef;
388 
389  m_jetUncertaintiesTool.setTypeAndName("JetUncertaintiesTool/"+toolName);
390 
391  ATH_CHECK( m_jetUncertaintiesTool.setProperty("JetDefinition", jetdef) );
393  ATH_CHECK( m_jetUncertaintiesTool.setProperty("IsData", false) ); // Never use the PDSmearing for the nominal tool.
397  ATH_CHECK( m_jetUncertaintiesTool.setProperty("OutputLevel", this->msg().level()) );
400 
401  ATH_MSG_INFO("Set up Jet PD Smear Uncertainty tool...");
402 
404  std::string jetdef("AntiKt4" + xAOD::JetInput::typeName(xAOD::JetInput::Type(m_jetInputType)));
405 
406  if(jetdef !="AntiKt4EMPFlow"){
407  ATH_MSG_WARNING("Jet Uncertaintes recommendations only exist for PFlow jets, falling back to AntiKt4EMPFlow");
408  jetdef = "AntiKt4EMPFlow";
409  }
410  toolName = "JetUncertaintiesPDSmearTool_" + jetdef;
411 
412  m_jetUncertaintiesPDSmearTool.setTypeAndName("JetUncertaintiesTool/"+toolName);
413 
414  // If, for some reason, you're trying to use the PDSmear, with the reduced set return an error (you shouldn't do this, you're just going to duplicate the SimpleJER results.
415  bool JERUncPDsmearing = isData() ? isData() : m_jetUncertaintiesPDsmearing;
416  if (m_jetUncertaintiesConfig.find("SimpleJER") != std::string::npos && JERUncPDsmearing){
417  ATH_MSG_ERROR("You are trying to use the SimpleJER set, with PDsmearing. There is no functionality for this. Please fix your config file. Either run with PDSmear set to false, or run with the AllJER or FullJER sets.");
418  return StatusCode::FAILURE;
419  }
420  ATH_CHECK( m_jetUncertaintiesPDSmearTool.setProperty("JetDefinition", jetdef) );
422  ATH_CHECK( m_jetUncertaintiesPDSmearTool.setProperty("IsData", true) ); // Set to True by default for PDSmear-named tool.
423  ATH_CHECK( m_jetUncertaintiesPDSmearTool.setProperty("PseudoDataJERsmearingMode", true) );
426  ATH_CHECK( m_jetUncertaintiesPDSmearTool.setProperty("OutputLevel", this->msg().level()) );
428  } else{
429  ATH_MSG_DEBUG("Do not retrieve the jet PD Smearing tool if it is not configured");
430  //ATH_CHECK( m_jetUncertaintiesPDSmearTool.retrieve() );
431  }
432  }
433 
434  if (m_slices["fjet"]) {
435 
436  // JetUncertaintiesTool handles JES, JER and JMS uncertainties for large-R jets
438 
439  ATH_MSG_INFO("Set up Large-R Jet Uncertainty tool...");
440 
441  // Print warning about missing large-R jets uncertainties for FastSim in mc23
442  if (m_isRun3 && isAtlfast())
443  ATH_MSG_WARNING("Uncertainties for large-R jets in mc23 and fast simulation not yet available; be aware uncertainties might be not complete!");
444 
445  toolName = "JetUncertaintiesTool_" + m_fatJets;
446  m_fatjetUncertaintiesTool.setTypeAndName("JetUncertaintiesTool/"+toolName);
447 
448  ATH_CHECK( m_fatjetUncertaintiesTool.setProperty("JetDefinition", fatjetcoll) );
453 
454  //Restrict variables to be shifted if (required)
455  if( m_fatJetUncVars != "default" ){
456  std::vector<std::string> shift_vars = {};
457 
458  std::string temp(m_fatJetUncVars);
459  do {
460  auto pos = temp.find(',');
461  shift_vars.push_back(temp.substr(0, pos));
462  if (pos == std::string::npos)
463  temp = "";
464  else
465  temp = temp.substr(pos + 1);
466 
467  }
468  while (!temp.empty() );
469 
470  ATH_CHECK( m_fatjetUncertaintiesTool.setProperty("VariablesToShift", shift_vars) );
471  }
472 
473  ATH_CHECK( m_fatjetUncertaintiesTool.setProperty("OutputLevel", this->msg().level()) );
476 
477 
479 
480  ATH_MSG_INFO("Set up Jet PD Smear Uncertainty tool...");
481 
482  toolName = "JetUncertaintiesPDSmearTool_" + m_fatJets;
483  m_fatjetUncertaintiesPDSmearTool.setTypeAndName("JetUncertaintiesTool/"+toolName);
484 
485  // If, for some reason, you're trying to use the PDSmear, with the reduced set return an error (you shouldn't do this, you're just going to duplicate the SimpleJER results.
486  bool JERUncPDsmearing = isData() ? isData() : m_fatJetUncertaintiesPDsmearing;
487  if (m_fatJetUncConfig.find("SimpleJER") != std::string::npos && JERUncPDsmearing){
488  ATH_MSG_ERROR("You are trying to use the SimpleJER set, with PDsmearing. There is no functionality for this. Please fix your config file. Either run with PDSmear set to false, or run with the AllJER or FullJER sets.");
489  return StatusCode::FAILURE;
490  }
491  ATH_CHECK( m_fatjetUncertaintiesPDSmearTool.setProperty("JetDefinition", fatjetcoll) );
493  ATH_CHECK( m_fatjetUncertaintiesPDSmearTool.setProperty("IsData", true) ); // Set to True by default for PDSmear-named tool.
494  ATH_CHECK( m_fatjetUncertaintiesPDSmearTool.setProperty("PseudoDataJERsmearingMode", true) );
497  ATH_CHECK( m_fatjetUncertaintiesPDSmearTool.setProperty("OutputLevel", this->msg().level()) );
499  } else{
500  ATH_MSG_DEBUG("Do not retrieve the jet PD Smearing tool if it is not configured");
501  }
502 
503 
504  // FFSmearingTool handles JMR uncertainties for large-R jets
505  if (!m_fatjetFFSmearingTool.isUserConfigured() && !m_fatJets.empty() && !m_fatJetUncConfig.empty()) {
506 
507  ATH_MSG_INFO("Set up Large-R FFJetSmearingTool ...");
508 
509  toolName = "FFJetSmearingTool_" + m_fatJets;
510  m_fatjetFFSmearingTool.setTypeAndName("CP::FFJetSmearingTool/"+toolName);
511 
512  ATH_CHECK( m_fatjetFFSmearingTool.setProperty("MassDef", "UFO") );
514  ATH_CHECK( m_fatjetFFSmearingTool.setProperty("ConfigFile", "rel22/Fall2024_PreRec/R10_FullJMR.config") );
515  ATH_CHECK( m_fatjetFFSmearingTool.setProperty("OutputLevel", this->msg().level()) );
518 
519  // Need to keep track of systematics of FFJetSmearingTool
520  if (!m_fatJets.empty()) {
521  // m_fatjetFFSmearingSyst = CP::make_systematics_vector(m_fatjetFFSmearingTool->recommendedSystematics());
522  ATH_MSG_INFO("The following uncertainties have been defined for the m_fatjetFFSmearingTool");
523  for (auto & sysSet : m_fatjetFFSmearingTool->recommendedSystematics()){
524  m_fatjetFFSmearingSyst.push_back(CP::SystematicSet({sysSet}));
525  ATH_MSG_INFO(" - " << sysSet.name());
526  }
527  }
528 
529  ATH_MSG_INFO(" Won't initialise Wtagger uncertainty tool for fat jets until we get rec for UFO");
530  // Won't initialise Wtagger uncertainty tool for fat jets until we get rec for UFO
531  /*
532  if (!m_WTagjetUncertaintiesTool.isUserConfigured() && !m_fatJets.empty() && !m_WtagConfig.empty() && !m_WTagUncConfig.empty()) {
533 
534  toolName = "WTagJetUncertaintiesTool_" + m_fatJets;
535  m_WTagjetUncertaintiesTool.setTypeAndName("JetUncertaintiesTool/"+toolName);
536  ATH_CHECK( m_WTagjetUncertaintiesTool.setProperty("JetDefinition", fatjetcoll) );
537  ATH_CHECK( m_WTagjetUncertaintiesTool.setProperty("MCType", "MC16") );
538  ATH_CHECK( m_WTagjetUncertaintiesTool.setProperty("IsData", isData()) );
539  ATH_CHECK( m_WTagjetUncertaintiesTool.setProperty("ConfigFile", "rel21/Fall2020/"+m_WTagUncConfig) );
540  ATH_CHECK( m_WTagjetUncertaintiesTool.setProperty("OutputLevel", this->msg().level()) );
541  ATH_CHECK( m_WTagjetUncertaintiesTool.retrieve() );
542  } else if (m_WTagjetUncertaintiesTool.isUserConfigured()) ATH_CHECK(m_WTagjetUncertaintiesTool.retrieve());
543  */
544  ATH_MSG_INFO(" Won't initialise Ztagger uncertainty tool for fat jets until we get rec for UFO");
545  // Won't initialise Ztagger uncertainty tool for fat jets until we get rec for UFO
546  /*
547  if (!m_ZTagjetUncertaintiesTool.isUserConfigured() && !m_fatJets.empty() && !m_ZtagConfig.empty() && !m_ZTagUncConfig.empty()) {
548 
549  toolName = "ZTagJetUncertaintiesTool_" + m_fatJets;
550  m_ZTagjetUncertaintiesTool.setTypeAndName("JetUncertaintiesTool/"+toolName);
551  ATH_CHECK( m_ZTagjetUncertaintiesTool.setProperty("JetDefinition", fatjetcoll) );
552  ATH_CHECK( m_ZTagjetUncertaintiesTool.setProperty("ConfigFile", "rel21/Fall2020/"+m_ZTagUncConfig) );
553  ATH_CHECK( m_ZTagjetUncertaintiesTool.setProperty("MCType", "MC16") );
554  ATH_CHECK( m_ZTagjetUncertaintiesTool.setProperty("IsData", isData()) );
555  ATH_CHECK( m_ZTagjetUncertaintiesTool.setProperty("OutputLevel", this->msg().level()) );
556  ATH_CHECK( m_ZTagjetUncertaintiesTool.retrieve() );
557  } else if (m_ZTagjetUncertaintiesTool.isUserConfigured()) ATH_CHECK(m_ZTagjetUncertaintiesTool.retrieve());
558  */
559  ATH_MSG_INFO(" Won't initialise top-tagger uncertainty tool for fat jets until we get rec for UFO");
560  // Won't initialise top-tagger uncertainty tool for fat jets until we get rec for UFO
561  /*
562  if (!m_TopTagjetUncertaintiesTool.isUserConfigured() && !m_fatJets.empty() && !m_ToptagConfig.empty() && !m_TopTagUncConfig.empty()) {
563 
564  toolName = "TopTagJetUncertaintiesTool_" + m_fatJets;
565  m_TopTagjetUncertaintiesTool.setTypeAndName("JetUncertaintiesTool/"+toolName);
566  ATH_CHECK( m_TopTagjetUncertaintiesTool.setProperty("JetDefinition", fatjetcoll) );
567  ATH_CHECK( m_TopTagjetUncertaintiesTool.setProperty("MCType", "MC16") );
568  ATH_CHECK( m_TopTagjetUncertaintiesTool.setProperty("IsData", isData()) );
569  ATH_CHECK( m_TopTagjetUncertaintiesTool.setProperty("ConfigFile", "rel21/Fall2020/"+m_TopTagUncConfig) );
570  ATH_CHECK( m_TopTagjetUncertaintiesTool.setProperty("OutputLevel", this->msg().level()) );
571  ATH_CHECK( m_TopTagjetUncertaintiesTool.retrieve() );
572  } else if (m_TopTagjetUncertaintiesTool.isUserConfigured()) ATH_CHECK(m_TopTagjetUncertaintiesTool.retrieve());
573  */
574  }
575 
576 
577  // tagger SF and uncertainties
578  // https://twiki.cern.ch/twiki/bin/view/AtlasProtected/BoostedJetTaggingRecommendationFullRun2
579  // To be implemented here
580 
581  if (m_slices["jet"]) {
583  // Initialise jet cleaning tools
584 
585  // see https://twiki.cern.ch/twiki/bin/view/AtlasProtected/HowToCleanJetsR22
587  toolName = "JetCleaningTool";
588  m_jetCleaningTool.setTypeAndName("JetCleaningTool/"+toolName);
590  ATH_CHECK( m_jetCleaningTool.setProperty("DoUgly", false) );
591  ATH_CHECK( m_jetCleaningTool.setProperty("OutputLevel", this->msg().level()) );
594 
596  // Initialise jet pileup labeling tool (required for labels used by JvtEfficiencyTools)
597 
599  toolName = "PileupLabelingTool";
600  m_jetPileupLabelingTool.setTypeAndName("JetPileupLabelingTool/"+toolName);
603  #ifndef XAOD_STANDALONE
604  ATH_CHECK( m_jetPileupLabelingTool.setProperty("SuppressInputDependence", true) );
605  ATH_CHECK( m_jetPileupLabelingTool.setProperty("SuppressOutputDependence", true) );
606  #endif
607  ATH_CHECK( m_jetPileupLabelingTool.setProperty("OutputLevel", this->msg().level()) );
610 
612  // Initialise jet Jvt moment tool
613 
615  toolName = "JvtMomentTool";
616  m_jetJvtMomentTool.setTypeAndName("JetVertexTaggerTool/"+toolName);
618  #ifndef XAOD_STANDALONE
619  ATH_CHECK( m_jetJvtMomentTool.setProperty("SuppressInputDependence", true) );
620  ATH_CHECK( m_jetJvtMomentTool.setProperty("SuppressOutputDependence", true) );
621  #endif
622  ATH_CHECK( m_jetJvtMomentTool.setProperty("OutputLevel", this->msg().level()) );
625 
627  // Initialise jet NNJvt moment tool
628 
629  m_applyJVTCut = !m_JvtWP.empty();
631  toolName = "NNJvtMomentTool";
632  m_jetNNJvtMomentTool.setTypeAndName("JetPileupTag::JetVertexNNTagger/"+toolName);
634  #ifndef XAOD_STANDALONE
635  ATH_CHECK( m_jetNNJvtMomentTool.setProperty("SuppressInputDependence", true) );
636  ATH_CHECK( m_jetNNJvtMomentTool.setProperty("SuppressOutputDependence", true) );
637  #endif
638  ATH_CHECK( m_jetNNJvtMomentTool.setProperty("OutputLevel", this->msg().level()) );
641 
643  // Initialise jet NNJvt selection tool
644 
646  toolName = "NNJvtSelectionTool";
647  m_jetNNJvtSelectionTool.setTypeAndName("CP::NNJvtSelectionTool/"+toolName);
651  ATH_CHECK( m_jetNNJvtSelectionTool.setProperty("JvtMomentName", "NNJvt") );
652  ATH_CHECK( m_jetNNJvtSelectionTool.setProperty("OutputLevel", this->msg().level()) );
655 
657  // Initialise jet NNJvt efficiency tool (scale factors)
658 
660  toolName = "NNJvtEfficiencyTool";
661  m_jetNNJvtEfficiencyTool.setTypeAndName("CP::NNJvtEfficiencyTool/"+toolName);
666  ATH_CHECK( m_jetNNJvtEfficiencyTool.setProperty("OutputLevel", this->msg().level()) );
669 
671  // Initialise jet fJvt selection tool
672 
674  toolName = "fJvtSelectionTool";
675  m_jetfJvtSelectionTool.setTypeAndName("CP::FJvtSelectionTool/"+toolName);
679  ATH_CHECK( m_jetfJvtSelectionTool.setProperty("JvtMomentName", "DFCommonJets_fJvt") );
680  ATH_CHECK( m_jetfJvtSelectionTool.setProperty("OutputLevel", this->msg().level()) );
683 
685  // Initialise jet fJvt efficiency tool for scale factors (scale factors)
686 
688  toolName = "fJvtEfficiencyTool";
689  m_jetfJvtEfficiencyTool.setTypeAndName("CP::FJvtEfficiencyTool/"+toolName);
694  ATH_CHECK( m_jetfJvtEfficiencyTool.setProperty("OutputLevel", this->msg().level()) );
697  }
698 
699 
700  if (m_slices["mu"]) {
702  // Check muon baseline ID
703 
704  std::string muQualBaseline = "";
705  switch (m_muIdBaseline) {
706  case xAOD::Muon::VeryLoose: muQualBaseline = "VeryLoose";
707  ATH_MSG_WARNING("No muon scale factors are available for VeryLoose working point.");
708  break;
709  case xAOD::Muon::Loose: muQualBaseline = "Loose"; break;
710  case xAOD::Muon::Medium: muQualBaseline = "Medium"; break;
711  case xAOD::Muon::Tight: muQualBaseline = "Tight"; break;
712  case 4: muQualBaseline = "HighPt"; break;
713  case 5: muQualBaseline = "LowPt"; break;
714  case 6: muQualBaseline = "LowPtMVA"; break;
715  case 7: muQualBaseline = "HighPt3Layers"; break;
716  default:
717  ATH_MSG_ERROR("Invalid muon working point provided: " << m_muIdBaseline << ". Cannot initialise!");
718  return StatusCode::FAILURE;
719  break;
720  }
721 
723  // Initialise muon calibration tool
724  // https://twiki.cern.ch/twiki/bin/view/AtlasProtected/MuonMomentumCorrectionsSubgroup#CP_MuonCalibrationAndSmearingToo
725  // Please not that for AthAnalysis we need to configure the MuonCalibTool within METSignificance manually and just can't pass the handle
726  // Hence, any changes here should also be propagated to the METSignificance setup further below
727 
729  m_muonCalibTool.setTypeAndName("CP::MuonCalibTool/ST_MuonCalibrationTool");
730  if (m_isRun3) ATH_CHECK( m_muonCalibTool.setProperty("IsRun3Geo", true ));
732  ATH_CHECK( m_muonCalibTool.setProperty("OutputLevel", this->msg().level()) );
733  ATH_CHECK( m_muonCalibTool.setProperty("release", "Recs2025_03_26_Run2Run3" ));
734  int IdBaselineInt = m_muIdBaseline;
735  if (IdBaselineInt == 4) {
736  ATH_CHECK( m_muonCalibTool.setProperty("do2StationsHighPt", true) );
737  }
740  } else ATH_CHECK( m_muonCalibTool.retrieve() );
741 
743  // Initialise muon selection tool
744 
746  toolName = "MuonSelectionTool_Baseline_" + muQualBaseline;
747  m_muonSelectionToolBaseline.setTypeAndName("CP::MuonSelectionTool/"+toolName);
748  if (m_isRun3) ATH_CHECK( m_muonSelectionToolBaseline.setProperty("IsRun3Geo", true ));
749 
750  if (m_muBaselineEta<m_muEta){ // Test for inconsistent configuration
751  ATH_MSG_ERROR( "Requested a baseline eta cut for muons (" << m_muBaselineEta <<
752  ") that is tighter than the signal cut (" << m_muEta << "). Please check your config." );
753  return StatusCode::FAILURE;
754  }
755  int IdBaselineInt = m_muIdBaseline;
757  if (IdBaselineInt == 6){
759  ATH_CHECK( m_muonSelectionToolBaseline.setProperty( "UseMVALowPt", true));
760  } else if (IdBaselineInt == 7){
762  ATH_CHECK( m_muonSelectionToolBaseline.setProperty( "Use2stationMuonsHighPt", false));
764  ATH_CHECK( m_muonSelectionToolBaseline.setProperty("OutputLevel", this->msg().level()) );
767 
768 
769  std::string muQual = "";
770  switch (m_muId) {
771  case xAOD::Muon::VeryLoose: muQual = "VeryLoose";
772  ATH_MSG_WARNING("No muon scale factors are available for VeryLoose working point.");
773  break;
774  case xAOD::Muon::Loose: muQual = "Loose"; break;
775  case xAOD::Muon::Medium: muQual = "Medium"; break;
776  case xAOD::Muon::Tight: muQual = "Tight"; break;
777  case 4: muQual = "HighPt"; break;
778  case 5: muQual = "LowPt"; break;
779  case 6: muQual = "LowPtMVA"; break;
780  case 7: muQual = "HighPt3Layers"; break;
781  default:
782  ATH_MSG_ERROR("Invalid muon working point provided: " << m_muId << ". Cannot initialise!");
783  return StatusCode::FAILURE;
784  break;
785  }
786 
788  toolName = "MuonSelectionTool_" + muQual;
789  m_muonSelectionTool.setTypeAndName("CP::MuonSelectionTool/"+toolName);
790  if (m_isRun3) ATH_CHECK( m_muonSelectionTool.setProperty("IsRun3Geo", true ));
792  int IdInt = m_muId;
793  if (IdInt == 6){
794  ATH_CHECK( m_muonSelectionTool.setProperty( "MuQuality", 5 ) );
795  ATH_CHECK( m_muonSelectionTool.setProperty( "UseMVALowPt", true));
796  } else if (IdInt == 7){
797  ATH_CHECK( m_muonSelectionTool.setProperty( "MuQuality", 4 ) );
798  ATH_CHECK( m_muonSelectionTool.setProperty( "Use2stationMuonsHighPt", false));
799  } else ATH_CHECK(m_muonSelectionTool.setProperty( "MuQuality", m_muId ));
800  ATH_CHECK( m_muonSelectionTool.setProperty("OutputLevel", this->msg().level()) );
803 
804 
805  if (!m_muonSelectionHighPtTool.isUserConfigured()) { //Fixed to HighPt WP
806  toolName = "MuonSelectionHighPtTool_" + muQual;
807  m_muonSelectionHighPtTool.setTypeAndName("CP::MuonSelectionTool/"+toolName);
808  if (m_isRun3) ATH_CHECK( m_muonSelectionHighPtTool.setProperty("IsRun3Geo", true ));
810  ATH_CHECK( m_muonSelectionHighPtTool.setProperty( "MuQuality", 4 ) );
811  ATH_CHECK( m_muonSelectionHighPtTool.setProperty("OutputLevel", this->msg().level()) );
814 
815 
817  // Initialise prompt/LRT muon OR tool
819  toolName = "MuonLRTOverlapRemovalTool";
820  m_muonLRTORTool.setTypeAndName("CP::MuonLRTOverlapRemovalTool/"+toolName);
822  if (m_isRun3) ATH_CHECK( m_muonLRTORTool.setProperty("UseRun3WP", true ));
823  ATH_CHECK( m_muonLRTORTool.setProperty("OutputLevel", this->msg().level()) );
825  } else ATH_CHECK( m_muonLRTORTool.retrieve() );
826 
828  // Initialise muon efficiency tools
830  toolName = "MuonEfficiencyScaleFactors_" + muQual;
831  m_muonEfficiencySFTool.setTypeAndName("CP::MuonEfficiencyScaleFactors/"+toolName);
832  ATH_CHECK( m_muonEfficiencySFTool.setProperty("WorkingPoint", muQual) );
833  ATH_CHECK( m_muonEfficiencySFTool.setProperty("CalibrationRelease", m_isRun3? "250418_Preliminary_r24run3":"230213_Preliminary_r22run2") );
834  ATH_CHECK( m_muonEfficiencySFTool.setProperty("OutputLevel", this->msg().level()) );
837 
838 
840  toolName = "MuonEfficiencyScaleFactorsBMHighPt_" + muQual;
841  m_muonEfficiencyBMHighPtSFTool.setTypeAndName("CP::MuonEfficiencyScaleFactors/"+toolName);
842  ATH_CHECK( m_muonEfficiencyBMHighPtSFTool.setProperty("WorkingPoint", "BadMuonVeto_HighPt") );
843  ATH_CHECK( m_muonEfficiencyBMHighPtSFTool.setProperty("CalibrationRelease", m_isRun3? "220817_Preliminary_r22run3":"230213_Preliminary_r22run2") ); //BadMuonVeto_HighPt currently not available for 240711_Preliminary_r24run3
844  ATH_CHECK( m_muonEfficiencyBMHighPtSFTool.setProperty("OutputLevel", this->msg().level()) );
847 
848 
849  if (m_doTTVAsf && m_mud0sig<0 && m_muz0<0){
850  ATH_MSG_WARNING("Requested TTVA SFs without d0sig and z0 cuts. Disabling scale factors as they will not make sense.");
851  m_doTTVAsf=false;
852  }
853 
855  toolName = "MuonTTVAEfficiencyScaleFactors";
856  m_muonTTVAEfficiencySFTool.setTypeAndName("CP::MuonEfficiencyScaleFactors/"+toolName);
857  ATH_CHECK( m_muonTTVAEfficiencySFTool.setProperty("WorkingPoint", "TTVA") );
858  ATH_CHECK( m_muonTTVAEfficiencySFTool.setProperty("CalibrationRelease", m_isRun3? "250418_Preliminary_r24run3":"230213_Preliminary_r22run2") );
859  ATH_CHECK( m_muonTTVAEfficiencySFTool.setProperty("OutputLevel", this->msg().level()) );
862 
863 
864 
866  // Initialise muon isolation tool
867  if (!m_muonIsolationSFTool.isUserConfigured() && !m_muIso_WP.empty() && !isData()) {
868  toolName = "MuonIsolationScaleFactors_" + m_muIso_WP;
869 
870  std::string tmp_muIso_WP = m_muIso_WP;
871  if ( !check_isOption(m_muIso_WP, m_mu_iso_support) ) { //check if supported
872  ATH_MSG_WARNING("Your selected muon Iso WP ("
873  << m_muIso_WP
874  << ") does not have SFs defined. Will try to find an appropriate fall-back.");
875  if (m_mu_iso_fallback.count(m_muIso_WP) > 0){
876  tmp_muIso_WP = m_mu_iso_fallback[m_muIso_WP];
877  ATH_MSG_WARNING("Your selected muon Iso WP ("
878  << m_muIso_WP
879  << " is not supported, and does not have SFs available. Falling back to "
880  << tmp_muIso_WP
881  << " for SF determination.");
882  } else {
883  ATH_MSG_ERROR("*** The muon isolation WP you selected (" << m_muIso_WP << ") is not currentely supported, and no known fall-back option for SFs exists. Sorry! ***");
884  return StatusCode::FAILURE;
885  }
886  }
887 
888  m_muonIsolationSFTool.setTypeAndName("CP::MuonEfficiencyScaleFactors/"+toolName);
889  ATH_CHECK( m_muonIsolationSFTool.setProperty("WorkingPoint", tmp_muIso_WP + "Iso") );
890  ATH_CHECK( m_muonIsolationSFTool.setProperty("CalibrationRelease", m_isRun3? "250418_Preliminary_r24run3":"230213_Preliminary_r22run2") );
891  ATH_CHECK( m_muonIsolationSFTool.setProperty("OutputLevel", this->msg().level()) );
893 
895 
896 
898  toolName = "MuonHighPtIsolationScaleFactors_" + m_muIsoHighPt_WP;
899 
900  std::string tmp_muIsoHighPt_WP = m_muIsoHighPt_WP;
901  if ( !check_isOption(m_muIsoHighPt_WP, m_mu_iso_support) ) { //check if supported
902  ATH_MSG_WARNING("Your selected muon high-pt Iso WP ("
904  << ") does not have SFs defined. Will try to find an appropriate fall-back.");
905  if (m_mu_iso_fallback.count(m_muIsoHighPt_WP) > 0){
906  tmp_muIsoHighPt_WP = m_mu_iso_fallback[m_muIsoHighPt_WP];
907  ATH_MSG_WARNING("Your selected muon high-pt Iso WP ("
909  << " is not supported, and does not have SFs available. Falling back to "
910  << tmp_muIsoHighPt_WP
911  << " for SF determination.");
912  } else {
913  ATH_MSG_ERROR("*** The muon isolation WP you selected (" << m_muIsoHighPt_WP << ") is not currentely supported, and no known fall-back option for SFs exists. Sorry! ***");
914  return StatusCode::FAILURE;
915  }
916  }
917 
918  m_muonHighPtIsolationSFTool.setTypeAndName("CP::MuonEfficiencyScaleFactors/"+toolName);
919  // Use for the low-pt WP a dedicated set of isolation scale-factors having an extra uncertainty in place
920  ATH_CHECK( m_muonHighPtIsolationSFTool.setProperty("WorkingPoint", tmp_muIsoHighPt_WP + "Iso") );
921  ATH_CHECK( m_muonHighPtIsolationSFTool.setProperty("CalibrationRelease", m_isRun3? "250418_Preliminary_r24run3":"230213_Preliminary_r22run2") );
922  ATH_CHECK( m_muonHighPtIsolationSFTool.setProperty("OutputLevel", this->msg().level()) );
924 
926 
927 
929  // Initialise muon trigger scale factor tools
930 
932  toolName = "MuonTriggerScaleFactors_" + muQual;
933  m_muonTriggerSFTool.setTypeAndName("CP::MuonTriggerScaleFactors/"+toolName);
934  if ( muQual=="LowPt" ) {
935  ATH_MSG_WARNING("You're using the LowPt muon selection, which is not supported yet in terms of muon trigger scale facorts. TEMPORAIRLY configuring the muonTriggerSFTool for Medium muons. Beware!");
936  ATH_CHECK( m_muonTriggerSFTool.setProperty("MuonQuality", "Medium" ) );
937  }
938  else ATH_CHECK( m_muonTriggerSFTool.setProperty("MuonQuality", muQual) );
939  //ATH_CHECK( m_muonTriggerSFTool.setProperty("Isolation", m_muIso_WP)); This property has been depreacted long time ago
940  ATH_CHECK( m_muonTriggerSFTool.setProperty("AllowZeroSF", true) );
941  ATH_CHECK( m_muonTriggerSFTool.setProperty("OutputLevel", this->msg().level()) );
946  } else if (m_muonTriggerSFTool.isUserConfigured()) {
949  }
950  }
951 
952  if (m_slices["ele"]) {
953  // /////////////////////////////////////////////////////////////////////////////////////////
954  // Initialise electron selector tools
955 
956  // Signal Electrons
958  toolName = "EleSelLikelihood_" + m_eleId;
959 
960  if (m_eleId.find("DNN") != std::string::npos) {
961  m_elecSelLikelihood.setTypeAndName("AsgElectronSelectorTool/"+toolName);
962  }
963  else {
964  m_elecSelLikelihood.setTypeAndName("AsgElectronLikelihoodTool/"+toolName);
965  }
966 
967  if (! m_eleConfig.empty() ){
968  ATH_MSG_INFO("Overriding specified Ele.Id working point in favour of configuration file");
970  } else if ( !check_isOption(m_eleId, m_el_id_support) ) { //check if supported
971  ATH_MSG_ERROR("Invalid electron ID selected: " << m_eleId);
972  return StatusCode::FAILURE;
973  }
974  else if (m_eleId == "VeryLooseLLH" || m_eleId == "LooseLLH") {
975  ATH_MSG_WARNING(" ****************************************************************************");
976  ATH_MSG_WARNING(" CAUTION: Setting " << m_eleId << " as signal electron ID");
977  ATH_MSG_WARNING(" These may be used for loose electron CRs but no scale factors are provided.");
978  ATH_MSG_WARNING(" ****************************************************************************");
980  } else {
982  }
983 
984  ATH_CHECK( m_elecSelLikelihood.setProperty("OutputLevel", this->msg().level()) );
987 
988  // Baseline Electrons
990  toolName = "EleSelLikelihoodBaseline_" + m_eleIdBaseline;
991 
992  if (m_eleIdBaseline.find("DNN") != std::string::npos) {
993  m_elecSelLikelihoodBaseline.setTypeAndName("AsgElectronSelectorTool/"+toolName);
994  }
995  else {
996  m_elecSelLikelihoodBaseline.setTypeAndName("AsgElectronLikelihoodTool/"+toolName);
997  }
998 
999  if (! m_eleConfigBaseline.empty() ){
1000  ATH_MSG_INFO("Overriding specified EleBaseline.Id working point in favour of configuration file");
1002  } else if ( !check_isOption(m_eleIdBaseline, m_el_id_support) ) { //check if supported
1003  ATH_MSG_ERROR("Invalid electron ID selected: " << m_eleIdBaseline);
1004  return StatusCode::FAILURE;
1005  } else {
1007  }
1008 
1009  ATH_CHECK( m_elecSelLikelihoodBaseline.setProperty("OutputLevel", this->msg().level()) );
1012  }
1013 
1015  // Initialise prompt/LRT electron OR tool
1017  toolName = "ElectronLRTOverlapRemovalTool";
1018  m_elecLRTORTool.setTypeAndName("CP::ElectronLRTOverlapRemovalTool/"+toolName);
1019  ATH_MSG_DEBUG("Setting ElectronLRTOverlapRemovalTool strategy to "<<m_eleLRT_strat);
1020  ATH_CHECK( m_elecLRTORTool.setProperty("overlapStrategy", m_eleLRT_strat) );
1022  } else ATH_CHECK( m_elecLRTORTool.retrieve() );
1023 
1024  if (m_slices["pho"]) {
1025  // /////////////////////////////////////////////////////////////////////////////////////////
1026  // Initialise photon selector tools
1027 
1029  toolName = "PhotonSelIsEM_" + m_photonId;
1030  m_photonSelIsEM.setTypeAndName("AsgPhotonIsEMSelector/"+toolName);
1031 
1032  if (!check_isOption(m_photonId, m_ph_id_support)){ //check if supported
1033  ATH_MSG_ERROR("Invalid photon ID selected: " << m_photonId);
1034  return StatusCode::FAILURE;
1035  }
1036 
1037  ATH_CHECK( m_photonSelIsEM.setProperty("WorkingPoint", m_photonId+"Photon") );
1038  ATH_CHECK( m_photonSelIsEM.setProperty("OutputLevel", this->msg().level()) );
1040  } else ATH_CHECK( m_photonSelIsEM.retrieve() );
1041 
1043  toolName = "PhotonSelIsEMBaseline_" + m_photonIdBaseline;
1044  m_photonSelIsEMBaseline.setTypeAndName("AsgPhotonIsEMSelector/"+toolName);
1045 
1046  if(!check_isOption(m_photonIdBaseline, m_ph_id_support)){ //check if supported
1047  ATH_MSG_ERROR("Invalid photon ID selected: " << m_photonIdBaseline);
1048  return StatusCode::FAILURE;
1049  }
1050 
1051  ATH_CHECK( m_photonSelIsEMBaseline.setProperty("WorkingPoint", m_photonIdBaseline+"Photon") );
1052  ATH_CHECK( m_photonSelIsEMBaseline.setProperty("OutputLevel", this->msg().level()) );
1055  }
1056 
1057  if (m_slices["ele"]||m_slices["pho"]) {
1059  // Initialise DeadHVCellRemovalTool
1060  // https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/EGammaIdentificationRun2#Removal_of_Electron_Photon_clust
1061 
1062  ATH_MSG_DEBUG("Setup AsgDeadHVCellRemovalTool/deadHVTool");
1063  m_deadHVTool.setTypeAndName("AsgDeadHVCellRemovalTool/deadHVTool");
1065  }
1066 
1067  if (m_slices["ele"]) {
1069  // Initialise electron efficiency tool
1070 
1072  if (!isData()) {
1073  if (isAtlfast()) data_type = PATCore::ParticleDataType::Fast;
1074  else data_type = PATCore::ParticleDataType::Full;
1075  ATH_MSG_DEBUG( "Setting data type to " << data_type);
1076  }
1077 
1078  m_eleEffMapFilePathRun2 = "ElectronEfficiencyCorrection/2015_2018/rel21.2/Precision_Summer2020_v1/map4.txt";
1079 
1080  if(!m_isRun3) {
1081  ATH_MSG_INFO( "Running on Run2 samples; Using egamma SF tools from R21 map ");
1083  }
1084 
1085  toolName = "AsgElectronEfficiencyCorrectionTool_reco";
1087 
1088  //-- get KEYS supported by egamma SF tools
1089  std::vector<std::string> eSF_keys = getElSFkeys( m_isRun3? m_eleEffMapFilePath : m_eleEffMapFilePathRun2);
1090 
1091  if (m_eleId.find("NoPix") != std::string::npos || m_eleId == "VeryLooseLLH" || m_eleId == "LooseLLH" || m_eleId == "Medium") {
1092  ATH_MSG_WARNING("Not configuring electron ID and trigger scale factors for " << m_eleId);
1093  }
1094  else {
1095  // This needs to be formatted for the scale factors: no _Rel20, no LH label, etc.
1096  std::string eleId = TString(m_eleId).ReplaceAll("AndBLayer", "BLayer").ReplaceAll("LLH", "").Data();
1097 
1098  if (m_eleId.find("DNN") != std::string::npos) {
1099  eleId = TString(eleId).ReplaceAll("DNNnoCF", "").ReplaceAll("DNN", "").ReplaceAll("Loose", "LooseBLayer").Data();
1100  ATH_MSG_WARNING("Electron DNN ID working point " << m_eleId << " doesn't have SFs yet, fall back to " << eleId);
1101  }
1102 
1103  // electron id
1104  toolName = "AsgElectronEfficiencyCorrectionTool_id_" + m_eleId;
1106 
1107  // override map file use if correction file list is set for WP
1108  std::map<std::string,std::string> corrFNList;
1109  if ( !m_EG_corrFNList.empty() ) {
1110  for ( const auto& WP_fname : split( m_EG_corrFNList, "," ) ) {
1111  std::string WP = WP_fname.substr(0,WP_fname.find(":"));
1112  std::string fname = WP_fname.substr(WP_fname.find(":")+1);
1113  corrFNList[WP] = fname;
1114  ATH_MSG_WARNING( "Correction file list defined for WP " << WP << ": " << fname << "." );
1115  ATH_MSG_WARNING( "Will use correction file rather than central map file." );
1116  }
1117  }
1118 
1119  // electron iso
1120  std::string EleIso("");
1121  if (std::find(eSF_keys.begin(), eSF_keys.end(), eleId+"_"+m_eleIso_WP) != eSF_keys.end()){
1122  EleIso = m_eleIso_WP;
1123  } else if (std::find(eSF_keys.begin(), eSF_keys.end(), eleId+"_"+m_el_iso_fallback[m_eleIso_WP]) != eSF_keys.end()){
1124  //--- Check to see if the only issue is an unknown isolation working point
1125  EleIso = m_el_iso_fallback[m_eleIso_WP];
1126  ATH_MSG_WARNING("(AsgElectronEfficiencyCorrectionTool_iso_*) Your selected electron Iso WP ("
1127  << m_eleIso_WP
1128  << ") does not have iso SFs defined. Falling back to "
1130  << " for SF calculations");
1131  }
1132  else{
1133  ATH_MSG_ERROR("*** THE ELECTRON ISOLATION SF YOU SELECTED (" << m_eleIso_WP << ") GOT NO SUPPORT ***");
1134  return StatusCode::FAILURE;
1135  }
1136 
1137  toolName = "AsgElectronEfficiencyCorrectionTool_iso_" + m_eleId + EleIso;
1138 
1139  // if running with correction file list
1140  if ( (!m_EG_corrFNList.empty()) && corrFNList.find(EleIso)!=corrFNList.end() ) { // overriding central map file
1141  CONFIG_EG_EFF_TOOL( m_elecEfficiencySFTool_iso, toolName, corrFNList[EleIso] );
1142  }
1143  // can't do the iso tool via the macro, it needs two properties set
1144  else { // default: use map file
1146  if ( !check_isOption(EleIso, m_el_iso_support) ) { //check if supported
1147  ATH_MSG_WARNING( "(" << toolName << ") Your electron Iso WP: " << EleIso<< " is no longer supported. This will almost certainly cause a crash now.");
1148  }
1149 
1150  m_elecEfficiencySFTool_iso.setTypeAndName("AsgElectronEfficiencyCorrectionTool/"+toolName);
1151 
1152  if ( m_EG_corrFNList.empty() ) {
1154  } else {
1155  ATH_CHECK( m_elecEfficiencySFTool_iso.setProperty("CorrectionFileNameList", corrFNList) );
1156  }
1158  ATH_CHECK( m_elecEfficiencySFTool_iso.setProperty("IsoKey", EleIso) );
1159  if (!isData() && ((EleIso.find("TightTrackOnly_VarRad")!=std::string::npos)||
1160  (EleIso.find("TightTrackOnly_FixedRad")!=std::string::npos)||
1161  (EleIso.find("Tight_VarRad")!=std::string::npos)||
1162  (EleIso.find("Loose_VarRad")!=std::string::npos))) {
1163  if (isAtlfast()) ATH_MSG_WARNING("(AsgElectronEfficiencyCorrectionTool/"+toolName+"). Your selected electron Iso WP (" + EleIso + ") don't have AFII SF. Falling back to FullSim");
1165  }
1166  else if (!isData()){
1167  ATH_CHECK( m_elecEfficiencySFTool_iso.setProperty("ForceDataType", static_cast<int>(data_type)));
1168  }
1170  ATH_CHECK( m_elecEfficiencySFTool_iso.setProperty("OutputLevel", this->msg().level()) );
1173  }
1174 
1175  // electron iso high-pt
1176  std::string EleIsohighPt("");
1177  if (std::find(eSF_keys.begin(), eSF_keys.end(), eleId+"_"+m_eleIsoHighPt_WP) != eSF_keys.end()){
1178  EleIsohighPt = m_eleIsoHighPt_WP;
1179  } else if (std::find(eSF_keys.begin(), eSF_keys.end(), eleId+"_"+m_el_iso_fallback[m_eleIsoHighPt_WP]) != eSF_keys.end()){
1180  //--- Check to see if the only issue is an unknown isolation working point
1181  EleIsohighPt = m_el_iso_fallback[m_eleIsoHighPt_WP];
1182  ATH_MSG_WARNING("(AsgElectronEfficiencyCorrectionTool_iso_*) Your selected high-pT electron Iso WP ("
1184  << ") does not have iso SFs defined. Falling back to "
1186  << " for SF calculations");
1187  }
1188  else{
1189  ATH_MSG_ERROR("*** THE HIGH PT ELECTRON ISOLATION SF YOU SELECTED (" << m_eleIsoHighPt_WP << ") GOT NO SUPPORT");
1190  return StatusCode::FAILURE;
1191  }
1192 
1193  toolName = "AsgElectronEfficiencyCorrectionTool_isoHigPt_" + m_eleId + EleIsohighPt;
1194 
1195  // if running with correction file list
1196  if ( (!m_EG_corrFNList.empty()) && corrFNList.find(EleIsohighPt)!=corrFNList.end() ) { // overriding central map file
1197  CONFIG_EG_EFF_TOOL( m_elecEfficiencySFTool_isoHighPt, toolName, corrFNList[EleIsohighPt] );
1198  }
1199  // can't do the iso tool via the macro, it needs two properties set
1200  else { // default: use map file
1202 
1203  if ( !check_isOption(EleIsohighPt, m_el_iso_support) ) { //check if supported
1204  ATH_MSG_WARNING( "(" << toolName << ") Your electron high-pt Iso WP: " << EleIsohighPt << " is no longer supported. This will almost certainly cause a crash now.");
1205  }
1206 
1207  m_elecEfficiencySFTool_isoHighPt.setTypeAndName("AsgElectronEfficiencyCorrectionTool/"+toolName);
1208 
1211  ATH_CHECK( m_elecEfficiencySFTool_isoHighPt.setProperty("IsoKey", EleIsohighPt) );
1212  if (!isData()) {
1213  ATH_CHECK (m_elecEfficiencySFTool_isoHighPt.setProperty("ForceDataType", (int) data_type) );
1214  }
1216  ATH_CHECK( m_elecEfficiencySFTool_isoHighPt.setProperty("OutputLevel", this->msg().level()) );
1219  }
1220 
1221  // electron triggers - first SFs (but we need to massage the id string since all combinations are not supported)
1222 
1223  //single lepton
1224 
1225  if(m_isRun3 && eleId.find("LooseBLayer") != std::string::npos) ATH_MSG_WARNING("Replacing 'LooseBLayer' with 'Loose' for Electron ID while configuring single-ele trigger SF using: " << m_eleEffMapFilePath);
1226  std::string triggerEleID = m_isRun3? TString(eleId).ReplaceAll("LooseBLayer", "Loose").Data() : eleId;
1227  std::string triggerEleIso= m_eleIso_WP;
1228 
1229  // This is an hack to work with ElectronEfficiencyCorrection/2015_2025/rel22.2/2022_Summer_Prerecom_v1/map4.txt to allow
1230 
1232  bool pass_isRun3TrigSFFallback = true;
1233  if (triggerEleID.find("Medium") != std::string::npos && triggerEleIso.find("Loose") != std::string::npos) {triggerEleID = "Loose";}
1234  else if (triggerEleID.find("Medium") != std::string::npos && triggerEleIso.find("Tight") != std::string::npos) {triggerEleID = "Tight"; triggerEleIso = "Tight_VarRad";}
1235  else if (triggerEleID.find("Medium") != std::string::npos && triggerEleIso.find("HighPtCaloOnly") != std::string::npos) {triggerEleID = "Tight"; triggerEleIso = "Tight_VarRad";}
1236  else if (triggerEleID.find("Tight") != std::string::npos && triggerEleIso.find("Loose") != std::string::npos) {triggerEleID = "Loose";}
1237  else if (triggerEleID.find("Tight") != std::string::npos && triggerEleIso.find("Tight") != std::string::npos) {triggerEleIso= "Tight_VarRad";}
1238  else if (triggerEleID.find("Tight") != std::string::npos && triggerEleIso.find("HighPtCaloOnly") != std::string::npos) {triggerEleID = "Tight"; triggerEleIso = "Tight_VarRad";}
1239  else if (triggerEleID.find("Loose") != std::string::npos && triggerEleIso.find("Tight") != std::string::npos) {triggerEleID = "Loose"; triggerEleIso = "Loose_VarRad";}
1240  else if (triggerEleID.find("Loose") != std::string::npos && triggerEleIso.find("HighPtCaloOnly") != std::string::npos) {triggerEleID = "Loose"; triggerEleIso = "Loose_VarRad";}
1241  else {pass_isRun3TrigSFFallback=false;}
1242  if(pass_isRun3TrigSFFallback){
1243  ATH_MSG_INFO(" ************** This is only for testing/studying purpose! ************** ");
1244  ATH_MSG_INFO(" ************** For official recommendation, please get in contact with the SUSY Bkg Forum ************** ");
1245  ATH_MSG_INFO("In the current map ("<<m_eleEffMapFilePath<<"), the only supported Electron ID working-points supported for Electron Trigger Scale Factor are 'Loose_Loose_VarRad' and 'Tight_Tight_VarRad' ");
1246  ATH_MSG_INFO("Only for single-lepton trigger scale factor, fall back to Electron ID: -> "<< triggerEleID << " with Isolation: " << triggerEleIso);
1247  }
1248  }
1249 
1250 
1251  ATH_MSG_INFO("eSF_keys: " << m_electronTriggerSFStringSingle<< "_"<<triggerEleID<<"_"<<triggerEleIso);
1252 
1253  if (std::find(eSF_keys.begin(), eSF_keys.end(), m_electronTriggerSFStringSingle+"_"+triggerEleID+"_"+triggerEleIso) != eSF_keys.end()){
1254  triggerEleIso = m_eleIso_WP;
1255  } else if (std::find(eSF_keys.begin(), eSF_keys.end(), m_electronTriggerSFStringSingle+"_"+triggerEleID+"_"+m_el_iso_fallback[triggerEleIso]) != eSF_keys.end()){
1256  //--- Check to see if the only issue is an unknown isolation working point
1257  triggerEleIso = m_el_iso_fallback[triggerEleIso];
1258  ATH_MSG_WARNING("(AsgElectronEfficiencyCorrectionTool_trig_singleLep_*) Your selected electron Iso WP ("
1259  << m_eleIso_WP
1260  << ") does not have trigger SFs defined. Falling back to "
1261  << triggerEleIso
1262  << " for SF calculations");
1263  }
1264  else{
1265  ATH_MSG_ERROR("*** THE SINGLE ELECTRON TRIGGER SF YOU SELECTED (" << m_electronTriggerSFStringSingle << ") GOT NO SUPPORT FOR YOUR ID+ISO WPs (" << m_eleId << "+" << m_eleIso_WP << ") ***");
1266  return StatusCode::FAILURE;
1267  }
1268 
1269  toolName = "AsgElectronEfficiencyCorrectionTool_trig_singleLep_" + triggerEleID;
1271  m_elecEfficiencySFTool_trig_singleLep.setTypeAndName("AsgElectronEfficiencyCorrectionTool/"+toolName);
1275  ATH_CHECK( m_elecEfficiencySFTool_trig_singleLep.setProperty("IsoKey", triggerEleIso) );
1277  if (!isData()) {
1279  }
1280  ATH_CHECK( m_elecEfficiencySFTool_trig_singleLep.setProperty("OutputLevel", this->msg().level()) );
1283 
1284 
1285  toolName = "AsgElectronEfficiencyCorrectionTool_trigEff_singleLep_" + triggerEleID;
1287  m_elecEfficiencySFTool_trigEff_singleLep.setTypeAndName("AsgElectronEfficiencyCorrectionTool/"+toolName);
1293  if (!isData()) {
1295  }
1296  ATH_CHECK( m_elecEfficiencySFTool_trigEff_singleLep.setProperty("OutputLevel", this->msg().level()) );
1299 
1300  if (!m_isRun3){
1301  //mixed-leptons
1302  std::map<std::string,std::string> electronTriggerSFMapMixedLepton {
1303  // legs, Trigger keys,
1304  {"e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose,e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0", m_electronTriggerSFStringSingle},
1305  {"e24_lhvloose_nod0_L1EM20VH,e17_lhvloose_nod0,e12_lhloose_L1EM10VH","DI_E_2015_e12_lhloose_L1EM10VH_2016_e17_lhvloose_nod0_2017_2018_e24_lhvloose_nod0_L1EM20VH"},
1306  {"e26_lhmedium_nod0_L1EM22VHI,e26_lhmedium_nod0","MULTI_L_2015_e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose_2016_e26_lhmedium_nod0_L1EM22VHI_2017_2018_e26_lhmedium_nod0"},
1307  {"e17_lhloose,e17_lhloose_nod0","MULTI_L_2015_e17_lhloose_2016_2018_e17_lhloose_nod0"},
1308  {"e12_lhloose,e12_lhloose_nod0","MULTI_L_2015_e12_lhloose_2016_2018_e12_lhloose_nod0"},
1309  {"e7_lhmedium,e7_lhmedium_nod0","MULTI_L_2015_e7_lhmedium_2016_2018_e7_lhmedium_nod0"},
1310  {"e9_lhloose,e9_lhloose_nod0,e12_lhvloose_nod0_L1EM10VH","TRI_E_2015_e9_lhloose_2016_e9_lhloose_nod0_2017_2018_e12_lhvloose_nod0_L1EM10VH"}
1311 
1312  };
1313 
1314  // 2e17 trigger is used in 2017 or 2018?
1316  if (triglist_2017to2018.find("2e17_lhvloose_nod0_L12EM15VHI") != std::string::npos) {
1317  electronTriggerSFMapMixedLepton["e17_lhvloose_nod0_L1EM15VHI"] = "DI_E_2015_e12_lhloose_L1EM10VH_2016_e17_lhvloose_nod0_2017_2018_e17_lhvloose_nod0_L1EM15VHI";
1318  }
1319 
1320  std::string triggerMixedEleIso("");
1321 
1322  for(auto const& item : electronTriggerSFMapMixedLepton){
1323 
1324  if (std::find(eSF_keys.begin(), eSF_keys.end(), item.second+"_"+eleId+"_"+m_eleIso_WP) != eSF_keys.end()){
1325  triggerMixedEleIso = m_eleIso_WP;
1326  } else if (std::find(eSF_keys.begin(), eSF_keys.end(), item.second+"_"+eleId+"_"+m_el_iso_fallback[m_eleIso_WP]) != eSF_keys.end()){
1327  //--- Check to see if the only issue is an unknown isolation working point
1328  triggerMixedEleIso = m_el_iso_fallback[m_eleIso_WP];
1329  ATH_MSG_WARNING("(AsgElectronEfficiencyCorrectionTool_trig_mixLep_*) Your selected electron Iso WP ("
1330  << m_eleIso_WP
1331  << ") does not have trigger SFs defined. Falling back to "
1332  << triggerMixedEleIso
1333  << " for SF calculations");
1334  } else {
1335  ATH_MSG_ERROR("*** THE MIXED ELECTRON TRIGGER SF YOU SELECTED (" << item.second << ") GOT NO SUPPORT FOR YOUR ID+ISO WPs (" << m_eleId << "+" << m_eleIso_WP << "). The fallback options failed as well sorry! ***");
1336  return StatusCode::FAILURE;
1337  }
1338 
1339  ATH_MSG_VERBOSE ("Selected WP: " << item.second << "_" << eleId << "_" << triggerMixedEleIso);
1340 
1341  toolName = "AsgElectronEfficiencyCorrectionTool_trig_mixLep_" + (item.first).substr(0,8) + m_eleId;
1342  auto t_sf = m_elecEfficiencySFTool_trig_mixLep.emplace(m_elecEfficiencySFTool_trig_mixLep.end(), "AsgElectronEfficiencyCorrectionTool/"+toolName);
1343  ATH_CHECK( t_sf->setProperty("MapFilePath", m_isRun3? m_eleEffMapFilePath : m_eleEffMapFilePathRun2) );
1344  ATH_CHECK( t_sf->setProperty("TriggerKey", item.second) );
1345  ATH_CHECK( t_sf->setProperty("IdKey", eleId) );
1346  ATH_CHECK( t_sf->setProperty("IsoKey", triggerMixedEleIso) );
1347  ATH_CHECK( t_sf->setProperty("CorrelationModel", m_EG_corrModel) );
1348  if (!isData()) {
1349  ATH_CHECK( t_sf->setProperty("ForceDataType", (int) (data_type==PATCore::ParticleDataType::Fast)? PATCore::ParticleDataType::Full : data_type) );
1350  }
1351  ATH_CHECK( t_sf->setProperty("OutputLevel", this->msg().level()) );
1352  ATH_CHECK( t_sf->initialize() );
1353  m_elecTrigSFTools.push_back(t_sf->getHandle());
1354  #ifndef XAOD_STANDALONE
1355  m_legsPerTool[toolName] = item.first;
1356  #else
1357  m_legsPerTool["ToolSvc."+toolName] = item.first;
1358  #endif
1359 
1360  toolName = "AsgElectronEfficiencyCorrectionTool_trigEff_mixLep_" + (item.first).substr(0,8) + m_eleId;
1361  auto t_eff = m_elecEfficiencySFTool_trigEff_mixLep.emplace(m_elecEfficiencySFTool_trigEff_mixLep.end(), "AsgElectronEfficiencyCorrectionTool/"+toolName);
1362  ATH_CHECK( t_eff->setProperty("MapFilePath", m_isRun3? m_eleEffMapFilePath : m_eleEffMapFilePathRun2) );
1363  ATH_CHECK( t_eff->setProperty("TriggerKey", "Eff_"+item.second) );
1364  ATH_CHECK( t_eff->setProperty("IdKey", eleId) );
1365  ATH_CHECK( t_eff->setProperty("IsoKey", triggerMixedEleIso) );
1366  ATH_CHECK( t_eff->setProperty("CorrelationModel", m_EG_corrModel) );
1367  if (!isData()) {
1368  ATH_CHECK( t_eff->setProperty("ForceDataType", (int) (data_type==PATCore::ParticleDataType::Fast)? PATCore::ParticleDataType::Full : data_type) );
1369  }
1370  ATH_CHECK( t_eff->setProperty("OutputLevel", this->msg().level()) );
1371  ATH_CHECK( t_eff->initialize() );
1372  m_elecTrigEffTools.push_back(t_eff->getHandle());
1373  #ifndef XAOD_STANDALONE
1374  m_legsPerTool[toolName] = item.first;
1375  #else
1376  m_legsPerTool["ToolSvc."+toolName] = item.first;
1377  #endif
1378 
1379  }
1380  }
1381  else ATH_MSG_WARNING("*** THE ELECTRON TRIGGER SF MIXED AND SF DILEP ARE CURRENTY NOT SUPPORTED IN RUN3 ***");
1382 
1383  ATH_MSG_WARNING("*** THE ELECTRON CHARGE FLIP SF ARE CURRENTY NOT SUPPORTED ***");
1384  // all the iinitialisation of the related tools have been cleaned up
1385 
1386  }
1387 
1388  if (m_slices["pho"]) {
1389  // /////////////////////////////////////////////////////////////////////////////////////////
1390  // Initialise photon efficiency tool
1391 
1393  m_photonEfficiencySFTool.setTypeAndName("AsgPhotonEfficiencyCorrectionTool/AsgPhotonEfficiencyCorrectionTool_" + m_photonId);
1394 
1395  if (m_photonId != "Tight" ) {
1396  ATH_MSG_WARNING( "No Photon efficiency available for " << m_photonId << ", using Tight instead..." );
1397  }
1398 
1399  ATH_CHECK( m_photonEfficiencySFTool.setProperty("MapFilePath", "PhotonEfficiencyCorrection/2015_2025/rel22.2/2024_FinalRun2_Recommendation_v1/map1.txt") );
1400  ATH_CHECK( m_photonEfficiencySFTool.setProperty("ForceDataType", isAtlfast()? (m_isRun3? 1: 3) : 1) ); // Set data type: 1 for FULLSIM, 3 for AtlFast. For Run3 pre-rec only FullSim SFs are available
1401  ATH_CHECK( m_photonEfficiencySFTool.setProperty("OutputLevel", this->msg().level()) );
1404 
1406  m_photonIsolationSFTool.setTypeAndName("AsgPhotonEfficiencyCorrectionTool/AsgPhotonEfficiencyCorrectionTool_isol" + m_photonIso_WP);
1407 
1408  if (m_photonIso_WP != "FixedCutTight" && m_photonIso_WP != "FixedCutLoose" && m_photonIso_WP != "TightCaloOnly") {
1409  ATH_MSG_WARNING( "No Photon efficiency available for " << m_photonIso_WP);
1410  }
1411 
1412  ATH_CHECK( m_photonIsolationSFTool.setProperty("MapFilePath", "PhotonEfficiencyCorrection/2015_2025/rel22.2/2022_Summer_Prerecom_v1/map1.txt") );
1413  ATH_CHECK( m_photonIsolationSFTool.setProperty("IsoKey", m_photonIso_WP != "TightCaloOnly" ? m_photonIso_WP.substr(8) : m_photonIso_WP )); // Set isolation WP: Loose,Tight,TightCaloOnly
1414  ATH_CHECK( m_photonIsolationSFTool.setProperty("ForceDataType", 1) ); // Set data type: 1 for FULLSIM, 3 for AF2
1415  ATH_CHECK( m_photonIsolationSFTool.setProperty("OutputLevel", this->msg().level()) );
1418 
1419  // trigger scale factors
1421  m_photonTriggerSFTool.setTypeAndName("AsgPhotonEfficiencyCorrectionTool/AsgPhotonEfficiencyCorrectionTool_trig" + m_photonTriggerName);
1422 
1423  // Fallback to TightCaloOnly if Tight is selected
1424  std::string photonIso_forTrigSF = m_photonIso_WP;
1425  if (m_photonIso_WP == "FixedCutTight") {
1426  ATH_MSG_WARNING( "No Photon trigger SF available for " << m_photonIso_WP << ", using TightCaloOnly instead... Use at your own risk" );
1427  photonIso_forTrigSF = "TightCaloOnly";
1428  } else { // isolation WP supported: Loose or TightCaloOnly, removing "FixedCut" suffix..
1429  photonIso_forTrigSF = TString(m_photonIso_WP).ReplaceAll("FixedCut","").Data();
1430  }
1431 
1432  // "symmetric" diphoton triggers (year dependent)
1433  ATH_CHECK( m_photonTriggerSFTool.setProperty("MapFilePath", "PhotonEfficiencyCorrection/2015_2018/rel21.2/Summer2020_Rec_v1/map3.txt") );
1434  ATH_CHECK( m_photonTriggerSFTool.setProperty("IsoKey", photonIso_forTrigSF )); // Set isolation WP: Loose,TightCaloOnly
1436  ATH_CHECK( m_photonTriggerSFTool.setProperty("ForceDataType", 1) ); // Set data type: 1 for FULLSIM, 3 for AF2
1437  ATH_CHECK( m_photonTriggerSFTool.setProperty("OutputLevel", this->msg().level()) );
1439 
1440  // "asymmetric" diphoton triggers
1441  std::map<std::string,std::string> diphotonTriggerSFMapAsymmetric {
1442  // legs, Trigger keys,
1443  {"g25_loose,g25_medium_L1EM20VH", "DI_PH_2015_g25_loose_2016_g25_loose_2017_g25_medium_L1EM20VH_2018_g25_medium_L1EM20VH"},
1444  {"g35_loose,g35_medium_L1EM20VH", "DI_PH_2015_g35_loose_2016_g35_loose_2017_g35_medium_L1EM20VH_2018_g35_medium_L1EM20VH"},
1445  };
1446 
1447  for(auto const& item : diphotonTriggerSFMapAsymmetric){
1448 
1449  toolName = "AsgPhotonEfficiencyCorrectionTool_trigSF_asymm_diphoton_" + (item.first).substr(0,9) + photonIso_forTrigSF;
1450  auto ph_trigSF = m_photonEfficiencySFTool_trigSF_AsymDiphoton.emplace(m_photonEfficiencySFTool_trigSF_AsymDiphoton.end(), "AsgPhotonEfficiencyCorrectionTool/"+toolName);
1451  ATH_CHECK( ph_trigSF->setProperty("MapFilePath", "PhotonEfficiencyCorrection/2015_2018/rel21.2/Summer2020_Rec_v1/map3.txt") );
1452  ATH_CHECK( ph_trigSF->setProperty("IsoKey", photonIso_forTrigSF) );
1453  ATH_CHECK( ph_trigSF->setProperty("TriggerKey", item.second) );
1454  ATH_CHECK( ph_trigSF->setProperty("ForceDataType", 1) ); // Set DataType: 1 for FullSim and 3 for AFII
1455  ATH_CHECK( ph_trigSF->setProperty("OutputLevel", this->msg().level()) );
1456  ATH_CHECK( ph_trigSF->initialize() );
1457  m_photonTrigSFTools.push_back(ph_trigSF->getHandle());
1458  #ifndef XAOD_STANDALONE
1459  m_legsPerTool_ph[toolName] = item.first;
1460  #else
1461  m_legsPerTool_ph["ToolSvc."+toolName] = item.first;
1462  #endif
1463 
1464  toolName = "AsgPhotonEfficiencyCorrectionTool_trigEff_asymm_diphoton_" + (item.first).substr(0,9) + photonIso_forTrigSF;
1465  auto ph_trigEff = m_photonEfficiencySFTool_trigEff_AsymDiphoton.emplace(m_photonEfficiencySFTool_trigEff_AsymDiphoton.end(), "AsgPhotonEfficiencyCorrectionTool/"+toolName);
1466  ATH_CHECK( ph_trigEff->setProperty("MapFilePath", "PhotonEfficiencyCorrection/2015_2018/rel21.2/Summer2020_Rec_v1/map3.txt") );
1467  ATH_CHECK( ph_trigEff->setProperty("IsoKey", photonIso_forTrigSF) );
1468  ATH_CHECK( ph_trigEff->setProperty("TriggerKey", "Eff_"+item.second) );
1469  ATH_CHECK( ph_trigEff->setProperty("ForceDataType", 1) ); // Set DataType: 1 for FullSim and 3 for AFII
1470  ATH_CHECK( ph_trigEff->setProperty("OutputLevel", this->msg().level()) );
1471  ATH_CHECK( ph_trigEff->initialize() );
1472  m_photonTrigEffTools.push_back(ph_trigEff->getHandle());
1473  #ifndef XAOD_STANDALONE
1474  m_legsPerTool_ph[toolName] = item.first;
1475  #else
1476  m_legsPerTool_ph["ToolSvc."+toolName] = item.first;
1477  #endif
1478 
1479  }
1480  }
1481  }
1482 
1483  }
1484  if (m_slices["ele"] || m_slices["pho"]) {
1486  // Initialize the EgammaAmbiguityTool
1487 
1489  m_egammaAmbiguityTool.setTypeAndName("EGammaAmbiguityTool/EGammaAmbiguityTool");
1490  ATH_CHECK( m_egammaAmbiguityTool.setProperty("OutputLevel", this->msg().level()) );
1493  }
1494 
1495 
1496  if (m_slices["ele"]) {
1497  //disable ///////////////////////////////////////////////////////////////////////////////////////////
1498  //disable // Initialize the AsgElectronChargeIDSelector
1499 
1500  //disable if (!m_elecChargeIDSelectorTool.isUserConfigured()) {
1501 
1502  //disable // For the selector, can use the nice function
1503  //disable std::string eleId = EG_WP(m_eleId);
1504  //disable m_elecChargeIDSelectorTool.setTypeAndName("AsgElectronChargeIDSelectorTool/ElectronChargeIDSelectorTool_"+eleId);
1505  //disable //default cut value for https://twiki.cern.ch/twiki/bin/view/AtlasProtected/ElectronChargeFlipTaggerTool
1506  //disable float BDTcut = -0.337671; // Loose 97%
1507  //disable if (m_eleChID_WP != "Loose" && !m_eleChID_WP.empty()) {
1508  //disable ATH_MSG_ERROR("Only Loose WP is supported in R21. Invalid ChargeIDSelector WP selected : " << m_eleChID_WP);
1509  //disable return StatusCode::FAILURE;
1510  //disable }
1511 
1512  //disable ATH_CHECK( m_elecChargeIDSelectorTool.setProperty("TrainingFile", "ElectronPhotonSelectorTools/ChargeID/ECIDS_20180731rel21Summer2018.root"));
1513  //disable ATH_CHECK( m_elecChargeIDSelectorTool.setProperty("CutOnBDT", BDTcut));
1514  //disable ATH_CHECK( m_elecChargeIDSelectorTool.setProperty("OutputLevel", this->msg().level()) );
1515  //disable ATH_CHECK( m_elecChargeIDSelectorTool.retrieve() );
1516  //disable } else ATH_CHECK( m_elecChargeIDSelectorTool.retrieve() );
1517 
1518 
1520  // Initialise egamma calibration tool
1521 
1523  m_egammaCalibTool.setTypeAndName("CP::EgammaCalibrationAndSmearingTool/EgammaCalibrationAndSmearingTool");
1524  ATH_MSG_DEBUG( "Initialising EgcalibTool " );
1525  ATH_CHECK( m_egammaCalibTool.setProperty("ESModel", m_isRun3 ? "es2022_R22_PRE" : "es2023_R22_Run2_v1") );
1526  ATH_CHECK( m_egammaCalibTool.setProperty("decorrelationModel", "1NP_v1") );
1527  // allows to bypass (intended) abort from of egamma calibration tool when configured for fastSim
1528  if (m_eleForceFullSimCalib) {
1529  ATH_MSG_WARNING( "Forcing EgcalibTool to use calibrations for full simulation" );
1530  ATH_CHECK( m_egammaCalibTool.setProperty("useFastSim", false) );
1531  }
1532  else {
1533  ATH_MSG_INFO("is Fast Sim:" << isAtlfast());
1534  ATH_CHECK( m_egammaCalibTool.setProperty("useFastSim", isAtlfast() ? 1 : 0) );
1535  }
1536  ATH_CHECK( m_egammaCalibTool.setProperty("OutputLevel", this->msg().level()) );
1538  } else ATH_CHECK( m_egammaCalibTool.retrieve() );
1539  }
1540 
1541 
1542  if (m_slices["tau"]) {
1544 
1546  // Initialise path to tau config file and config reader
1547 
1548  std::string inputfile = "";
1549  if (!m_tauConfigPath.empty() && (m_tauConfigPath!="default")) inputfile = m_tauConfigPath;
1550  else if (m_tauId == "rnn001") inputfile = "SUSYTools/tau_selection_rnn001.conf";
1551  else if (m_tauId == "VeryLoose") inputfile = "SUSYTools/tau_selection_veryloose.conf";
1552  else if (m_tauId == "Loose") inputfile = "SUSYTools/tau_selection_loose.conf";
1553  else if (m_tauId == "Medium") inputfile = "SUSYTools/tau_selection_medium.conf";
1554  else if (m_tauId == "Tight") inputfile = "SUSYTools/tau_selection_tight.conf";
1555  else {
1556  ATH_MSG_ERROR("Invalid tau ID selected: " << m_tauId);
1557  return StatusCode::FAILURE;
1558  }
1559 
1560  // Read in the config file so we can retrieve the fields later when configuring the efficiency tools
1561  if ( m_tauConfigReader.ReadFile( PathResolverFindCalibFile(inputfile).c_str(), EEnvLevel(0) ) ) {
1562  ATH_MSG_ERROR( "Error while reading tau config file : " << inputfile );
1563  return StatusCode::FAILURE;
1564  }
1565  else ATH_MSG_DEBUG( "Successfully read tau config file : " << inputfile );
1566 
1567 
1569  // Initialise tau selection tools
1570 
1571  if (!m_tauSelTool.isUserConfigured()) {
1572  toolName = "TauSelectionTool_" + m_tauId;
1573  m_tauSelTool.setTypeAndName("TauAnalysisTools::TauSelectionTool/"+toolName);
1574  ATH_CHECK( m_tauSelTool.setProperty("ConfigPath", inputfile) );
1575  ATH_CHECK( m_tauSelTool.setProperty("OutputLevel", this->msg().level()) );
1577  } else ATH_CHECK( m_tauSelTool.retrieve() );
1578 
1579 
1581  std::string inputfile = "";
1583  else if (m_tauIdBaseline == "rnn001") inputfile = "SUSYTools/tau_selection_rnn001.conf";
1584  else if (m_tauIdBaseline == "VeryLoose") inputfile = "SUSYTools/tau_selection_veryloose.conf";
1585  else if (m_tauIdBaseline == "Loose") inputfile = "SUSYTools/tau_selection_loose.conf";
1586  else if (m_tauIdBaseline == "Medium") inputfile = "SUSYTools/tau_selection_medium.conf";
1587  else if (m_tauIdBaseline == "Tight") inputfile = "SUSYTools/tau_selection_tight.conf";
1588  else {
1589  ATH_MSG_ERROR("Invalid baseline tau ID selected: " << m_tauIdBaseline);
1590  return StatusCode::FAILURE;
1591  }
1592  toolName = "TauSelectionToolBaseline_" + m_tauIdBaseline;
1593  m_tauSelToolBaseline.setTypeAndName("TauAnalysisTools::TauSelectionTool/"+toolName);
1595 
1596  ATH_CHECK( m_tauSelToolBaseline.setProperty("OutputLevel", this->msg().level()) );
1599 
1600 
1602  // Initialise tau efficiency tool
1603 
1604  if (!m_tauEffTool.isUserConfigured() && !isData()) {
1605  toolName = "TauEffTool_" + m_tauId;
1606  m_tauEffTool.setTypeAndName("TauAnalysisTools::TauEfficiencyCorrectionsTool/"+toolName);
1607 
1608  std::vector<int> correction_types;
1609  // Read out the tau ID from the config file and map into the enum from tau CP
1610  std::string jetIDWP = m_tauConfigReader.GetValue("JetIDWP" ,"");
1611  ANA_MSG_DEBUG( "Found JetIDWP in tau config file : " << jetIDWP );
1612  int jet_id_lvl;
1613  if (jetIDWP == "JETIDNONE") jet_id_lvl = (int)TauAnalysisTools::JetID::JETIDNONE;
1614  else if (jetIDWP == "JETIDRNNVERYLOOSE") jet_id_lvl = (int)TauAnalysisTools::JetID::JETIDRNNVERYLOOSE;
1615  else if (jetIDWP == "JETIDRNNLOOSE") jet_id_lvl = (int)TauAnalysisTools::JetID::JETIDRNNLOOSE;
1616  else if (jetIDWP == "JETIDRNNMEDIUM") jet_id_lvl = (int)TauAnalysisTools::JetID::JETIDRNNMEDIUM;
1617  else if (jetIDWP == "JETIDRNNTIGHT") jet_id_lvl = (int)TauAnalysisTools::JetID::JETIDRNNTIGHT;
1618  else {
1619  ATH_MSG_ERROR("Invalid Tau ID in tau config file " << jetIDWP);
1620  return StatusCode::FAILURE;
1621  }
1622  // Add retrieval of reco and ID SFs
1623  correction_types.insert(correction_types.end(), {TauAnalysisTools::EfficiencyCorrectionType::SFRecoHadTau,
1624  TauAnalysisTools::EfficiencyCorrectionType::SFJetIDHadTau});
1625 
1626  // Read out the (optional) Ele OR from the config file and map into the enum from tau CP
1627  std::string eleIDWP = m_tauConfigReader.GetValue("EleIDWP" ,"");
1628  ANA_MSG_DEBUG( "Found EleIDWP in tau config file : " << eleIDWP );
1629  int ele_id_lvl = -1;
1630  if (eleIDWP == "ELEIDRNNLOOSE") ele_id_lvl = (int)TauAnalysisTools::EleID::ELEIDRNNLOOSE;
1631  else if (eleIDWP == "ELEIDRNNMEDIUM") ele_id_lvl = (int)TauAnalysisTools::EleID::ELEIDRNNMEDIUM;
1632  else if (eleIDWP == "ELEIDRNNTIGHT") ele_id_lvl = (int)TauAnalysisTools::EleID::ELEIDRNNTIGHT;
1633  else {
1634  ATH_MSG_INFO("No or invalid Ele OR in tau config file " << eleIDWP << " will not apply SFs for electro veto" );
1635  }
1636  // Add retrieval of electron veto SFs if its applied
1637  if (ele_id_lvl != -1 )
1638  correction_types.insert(correction_types.end(), {TauAnalysisTools::EfficiencyCorrectionType::SFEleIDHadTau,
1639  TauAnalysisTools::EfficiencyCorrectionType::SFEleIDElectron});
1640 
1641  ATH_CHECK( m_tauEffTool.setProperty("JetIDLevel", jet_id_lvl) );
1642  ATH_CHECK( m_tauEffTool.setProperty("EleIDLevel", ele_id_lvl) );
1643  ATH_CHECK( m_tauEffTool.setProperty("EfficiencyCorrectionTypes", correction_types) );
1644  ATH_CHECK( m_tauEffTool.setProperty("OutputLevel", this->msg().level()) );
1645  ATH_CHECK( m_tauEffTool.setProperty("useFastSim", isAtlfast()) );
1647  if (m_isRun3){ ATH_CHECK( m_tauEffTool.setProperty("Campaign", "mc23") );}
1648  else { ATH_CHECK( m_tauEffTool.setProperty("Campaign", "mc20") );}
1651 
1652 
1654  // Initialise tau trigger efficiency tool(s)
1655 
1656  if (!isData()) {
1658  if (m_tauId == "rnn001") iTauID = (int) TauAnalysisTools::JETIDNONE;
1659  else if (m_tauId == "VeryLoose") iTauID = (int) TauAnalysisTools::JETIDRNNVERYLOOSE;
1660  else if (m_tauId == "Loose") iTauID = (int) TauAnalysisTools::JETIDRNNLOOSE;
1661  else if (m_tauId == "Medium") iTauID = (int) TauAnalysisTools::JETIDRNNMEDIUM;
1662  else if (m_tauId == "Tight") iTauID = (int) TauAnalysisTools::JETIDRNNTIGHT;
1663  else {
1664  ATH_MSG_ERROR("Invalid tau ID selected: " << m_tauId);
1665  return StatusCode::FAILURE;
1666  }
1667 
1668  // map format: SF file name, corresponding single-tau leg (comma-separated in case of OR)
1669  m_tau_trig_support = {
1670  {"HLT_tau25_medium1_tracktwo", "HLT_tau25_medium1_tracktwo"},
1671  {"HLT_tau35_medium1_tracktwo", "HLT_tau35_medium1_tracktwo"},
1672  {"HLT_tau50L1TAU12_medium1_tracktwo", "HLT_tau50_medium1_tracktwo_L1TAU12"},
1673  {"HLT_tau60_medium1_tracktwo", "HLT_tau60_medium1_tracktwo"},
1674  {"HLT_tau80L1TAU60_medium1_tracktwo", "HLT_tau80_medium1_tracktwo_L1TAU60"},
1675  {"HLT_tau125_medium1_tracktwo", "HLT_tau125_medium1_tracktwo"},
1676  {"HLT_tau160_medium1_tracktwo", "HLT_tau160_medium1_tracktwo"},
1677  {"HLT_tau160L1TAU100_medium1_tracktwo", "HLT_tau160_medium1_tracktwo_L1TAU100"},
1678  // whole 2018 data taking period
1679  {"HLT_tau25_medium1_tracktwoEF", "HLT_tau25_medium1_tracktwoEF"},
1680  {"HLT_tau35L1TAU12IM_medium1_tracktwoEF", "HLT_tau35_medium1_tracktwoEF_L1TAU12IM"},
1681  {"HLT_tau35_medium1_tracktwoEF", "HLT_tau35_medium1_tracktwoEF"},
1682  {"HLT_tau60_medium1_tracktwoEF", "HLT_tau60_medium1_tracktwoEF"},
1683  {"HLT_tau80L1TAU60_medium1_tracktwoEF", "HLT_tau80_medium1_tracktwoEF_L1TAU60"},
1684  {"HLT_tau160L1TAU100_medium1_tracktwoEF", "HLT_tau160_medium1_tracktwoEF_L1TAU100"},
1685  // 2018 data after TS1, run >= 355261
1686  {"HLT_tau25_medium1_tracktwoEF_OR_mediumRNN_tracktwoMVA", "HLT_tau25_medium1_tracktwoEF,HLT_tau25_mediumRNN_tracktwoMVA"},
1687  {"HLT_tau35L1TAU12IM_medium1_tracktwoEF_OR_mediumRNN_tracktwoMVA", "HLT_tau35_medium1_tracktwoEF_L1TAU12IM,HLT_tau35_mediumRNN_tracktwoMVA_L1TAU12IM"},
1688  {"HLT_tau35_medium1_tracktwoEF_OR_mediumRNN_tracktwoMVA", "HLT_tau35_medium1_tracktwoEF,HLT_tau35_mediumRNN_tracktwoMVA"},
1689  {"HLT_tau60_medium1_tracktwoEF_OR_mediumRNN_tracktwoMVA", "HLT_tau60_medium1_tracktwoEF,HLT_tau60_mediumRNN_tracktwoMVA"},
1690  {"HLT_tau80L1TAU60_medium1_tracktwoEF_OR_mediumRNN_tracktwoMVA", "HLT_tau80_medium1_tracktwoEF_L1TAU60,HLT_tau80_mediumRNN_tracktwoMVA_L1TAU60"},
1691  {"HLT_tau160L1TAU100_medium1_tracktwoEF_OR_mediumRNN_tracktwoMVA", "HLT_tau160_medium1_tracktwoEF_L1TAU100,HLT_tau160_mediumRNN_tracktwoMVA_L1TAU100"}
1692  };
1693 
1694  if (m_isRun3){
1695  m_tau_trig_support = {
1696  // 2022, 2023 75-1800 bunches
1697  {"HLT_tau160_mediumRNN_tracktwoMVA", "HLT_tau160_mediumRNN_tracktwoMVA_L1TAU100"},
1698  // 2023 from 400 bunches
1699  {"HLT_tau160_mediumRNN_tracktwoMVA", "HLT_tau160_mediumRNN_tracktwoMVA_L1eTAU140"}
1700  };
1701  }
1702 
1703  for(auto const& trigger : m_tau_trig_support) {
1704  toolName = "TauTrigEffTool_" + m_tauId + "_" + trigger.first;
1705  auto tau_trigSF = m_tauTrigEffTool.emplace(m_tauTrigEffTool.end(), "TauAnalysisTools::TauEfficiencyCorrectionsTool/"+toolName);
1706  ATH_CHECK( tau_trigSF->setProperty("EfficiencyCorrectionTypes", std::vector<int>({TauAnalysisTools::SFTriggerHadTau})) );
1707  ATH_CHECK( tau_trigSF->setProperty("TriggerName", trigger.first) );
1708  ATH_CHECK( tau_trigSF->setProperty("JetIDLevel", iTauID) );
1709  ATH_CHECK( tau_trigSF->setProperty("OutputLevel", this->msg().level()) );
1710  ATH_CHECK( tau_trigSF->setProperty("useFastSim", isAtlfast()) );
1711  if (m_isRun3){
1712  ATH_CHECK( tau_trigSF->setProperty("RecommendationTag", m_tauEffToolRecommendationTag) );
1713  } else if (m_tauEffToolRecommendationTag=="2025-prerec"){
1714  ATH_MSG_WARNING("mc20 tau triggers not supported in 2025-prerec, failling back to 2022-prerec");
1715  ATH_CHECK( tau_trigSF->setProperty("RecommendationTag", "2022-prerec") );
1716  }
1717  if (m_isRun3){ ATH_CHECK( tau_trigSF->setProperty("Campaign", m_mcCampaign) );}
1718  else { ATH_CHECK( tau_trigSF->setProperty("Campaign", "mc20") );}
1719  ATH_CHECK( tau_trigSF->initialize() );
1720  }
1721  }
1722 
1723 
1725  // Initialise tau smearing tool
1726 
1728  m_tauSmearingTool.setTypeAndName("TauAnalysisTools::TauSmearingTool/TauSmearingTool");
1730  if (m_isRun3){ ATH_CHECK( m_tauSmearingTool.setProperty("Campaign", "mc23") );}
1731  else { ATH_CHECK( m_tauSmearingTool.setProperty("Campaign", "mc20") );}
1734  ATH_CHECK( m_tauSmearingTool.setProperty("useFastSim", isAtlfast()) );
1735  ATH_CHECK( m_tauSmearingTool.setProperty("OutputLevel", this->msg().level()) );
1737  } else ATH_CHECK( m_tauSmearingTool.retrieve() );
1738 
1739 
1741  // Initialise tau truth matching tool
1742 
1744  m_tauTruthMatch.setTypeAndName("TauAnalysisTools::TauTruthMatchingTool/TauTruthMatch");
1745  ATH_CHECK( m_tauTruthMatch.setProperty("TruthJetContainerName", m_defaultTruthJets ) );
1746  ATH_CHECK( m_tauTruthMatch.setProperty("OutputLevel", this->msg().level()) );
1749 
1750 
1751  }
1752 
1753 
1754  if (m_slices["bjet"]) {
1756  // Initialise B-tagging tools
1757 
1758  // btagSelectionTool
1759  std::string jetcollBTag = jetcoll;
1760  if (jetcoll == "AntiKt4LCTopoJets") {
1761  ATH_MSG_WARNING(" *** HACK *** Treating LCTopoJets jets as EMTopo -- use at your own risk!");
1762  jetcollBTag = "AntiKt4EMTopoJets";
1763  }
1764 
1765  // print a warning if there is indication that the user supplied a CDI file not matching to the sample being processed
1766  // see --> https://twiki.cern.ch/twiki/bin/view/AtlasProtected/BTagRel22HighLevelSummary
1767  if( (m_bTaggingCalibrationFilePath.find(!m_isRun3 ? "MC20" : "MC23") == std::string::npos) && (m_bTaggingCalibrationFilePath.find(!m_isRun3 ? "MC20" : "MC21") == std::string::npos) ) {
1768  ATH_MSG_WARNING( "You are using a "<<(!m_isRun3 ? "Run3":"Run2")<<" CDI file while running on "<<(!m_isRun3 ? "Run2":"Run3")<<" sample; Please updates your CDI file to the correct version for "<<(!m_isRun3 ? "Run2":"Run3"));
1769  }
1770 
1771  if (m_useBtagging && !m_btagSelTool.isUserConfigured() && !m_BtagWP.empty()) {
1772  if (jetcollBTag.find("AntiKt4EMTopoJets") == std::string::npos && jetcollBTag.find("AntiKt4EMPFlowJets")==std::string::npos) {
1773  ATH_MSG_WARNING("** Only AntiKt4EMTopoJets and AntiKt4EMPFlowJets are supported with FTAG scale factors!");
1774  return StatusCode::FAILURE;
1775  }
1776 
1777  toolName = "BTagSel_" + jetcollBTag + m_BtagTagger + m_BtagWP;
1778 
1779  m_btagSelTool.setTypeAndName("BTaggingSelectionTool/"+toolName);
1780  ATH_CHECK( m_btagSelTool.setProperty("TaggerName", m_BtagTagger ) );
1781  ATH_CHECK( m_btagSelTool.setProperty("OperatingPoint", m_BtagWP ) );
1782  ATH_CHECK( m_btagSelTool.setProperty("JetAuthor", jetcollBTag ) );
1784  ATH_CHECK( m_btagSelTool.setProperty("FlvTagCutDefinitionsFileName", m_bTaggingCalibrationFilePath) );
1785  ATH_CHECK( m_btagSelTool.setProperty("OutputLevel", this->msg().level()) );
1788 
1789 
1791  if (jetcoll != "AntiKt4EMTopoJets" && jetcoll != "AntiKt4EMPFlowJets") {
1792  ATH_MSG_WARNING("** Only AntiKt4EMTopoJets and AntiKt4EMPFlowJets are supported with FTAG scale factors!");
1793  return StatusCode::FAILURE;
1794  }
1795 
1796  toolName = "BTagSelOR_" + jetcollBTag + m_orBtagWP;
1797  m_btagSelTool_OR.setTypeAndName("BTaggingSelectionTool/"+toolName);
1799  ATH_CHECK( m_btagSelTool_OR.setProperty("OperatingPoint", m_orBtagWP ) );
1800  ATH_CHECK( m_btagSelTool_OR.setProperty("JetAuthor", jetcollBTag ) );
1802  ATH_CHECK( m_btagSelTool_OR.setProperty("FlvTagCutDefinitionsFileName", m_bTaggingCalibrationFilePath) );
1803  ATH_CHECK( m_btagSelTool_OR.setProperty("OutputLevel", this->msg().level()) );
1806 
1807 
1808  std::string trkjetcoll = m_defaultTrackJets;
1809  const std::string& BTagColl_TrkJet = trkjetcoll;
1810  if (m_slices["tjet"]) {
1811  if ( m_useBtagging_trkJet && m_defaultTrackJets.empty()) {
1812  m_useBtagging_trkJet = false;
1813  ATH_MSG_INFO("TrackJet collection set to None: disabling btagging for TrackJets.");
1814  }
1815 
1817  if (trkjetcoll.find("AntiKt2PV0TrackJets")==std::string::npos && trkjetcoll.find("AntiKtVR30Rmax4Rmin02TrackJets")==std::string::npos) {
1818  ATH_MSG_WARNING("** Only AntiKt2PV0TrackJets and AntiKtVR30Rmax4Rmin02TrackJets are supported with FTAG scale factors!");
1819  return StatusCode::FAILURE;
1820  }
1821 
1822  toolName = "BTagSel_" + trkjetcoll + m_BtagTagger_trkJet + m_BtagWP_trkJet;
1823 
1824  m_btagSelTool_trkJet.setTypeAndName("BTaggingSelectionTool/"+toolName);
1828  ATH_CHECK( m_btagSelTool_trkJet.setProperty("JetAuthor", BTagColl_TrkJet ) );
1830  ATH_CHECK( m_btagSelTool_trkJet.setProperty("FlvTagCutDefinitionsFileName", m_bTaggingCalibrationFilePath) );
1831  ATH_CHECK( m_btagSelTool_trkJet.setProperty("OutputLevel", this->msg().level()) );
1834  }
1835 
1836  // Set MCshowerType for FTAG MC/MC SFs
1837  // https://twiki.cern.ch/twiki/bin/view/AtlasProtected/BTagCalibrationRecommendationsRelease21#MC_MC_Scale_Factors_for_Analysis
1838  std::string MCshowerID;
1839  if(m_showerType==-1){
1840  ATH_MSG_ERROR( "Error! m_showerType=-1, which is an error case for FTAG MC/MC SFs." );
1841  return StatusCode::FAILURE;
1842  }
1843  if(m_BtagTagger=="DL1dv01"){
1844  if(!m_isRun3){
1845  MCshowerID= "default"; // Powheg+Pythia8 (410470) - PhPy8EG_A14
1846  if (m_showerType == 1) MCshowerID = "411233"; // PowhegHerwig7
1847  else if (m_showerType == 2) MCshowerID = "600666"; // PhH7EG_H7UE - 601414
1848  else if (m_showerType == 3) MCshowerID = "410250"; // Sherpa_221
1849  else if (m_showerType == 4) MCshowerID = "700122"; // Sh_2210
1850  else if (m_showerType == 5) MCshowerID = "700122"; // Sh_2211
1851  else if (m_showerType == 6) MCshowerID = "700660"; // Sh_2212 - 700660
1852  else if (m_showerType == 7) MCshowerID = "410464"; // aMcAtNloPy8
1853  else if (m_showerType == 8) MCshowerID = "412116"; // aMcAtNloHerwig7
1854  else if (m_showerType != 0){
1855  ATH_MSG_WARNING("Unknown ShowerID detected! Using default FTAG MC-MC SFs (Powheg+Pythia8). Please check if these are applicable for this sample!");
1856  }
1857  }
1858  else{
1859  MCshowerID= "default"; // Powheg+Pythia8 (601229) - PhPy8EG_A14
1860  if (m_showerType == 2) MCshowerID = "601414"; // POWHEG+Herwig721 - PhH7EG_A14
1861  else if (m_showerType == 6) MCshowerID = "700660"; // Sherpa 2.2.12 - Sh_2212
1862  else if (m_showerType != 0){
1863  ATH_MSG_WARNING("Unknown ShowerID detected! Using default FTAG MC-MC SFs (Powheg+Pythia8). Please check if these are applicable for this sample!");
1864  }
1865  }
1866  } else if (m_BtagTagger=="GN2v01"){
1867  if(!m_isRun3){
1868  MCshowerID= "default"; // PowhegPythia8EvtGen (410470)
1869  if (m_showerType == 1) MCshowerID = "410480"; // PYTHIA8EVTGEN517 (410480)
1870  else if (m_showerType == 2) MCshowerID = "411233"; // POWHEGHERWIG7 - 411233
1871  else if (m_showerType == 3) MCshowerID = "600666"; // PhH7EG_H7UE - 600666
1872  else if (m_showerType == 4) MCshowerID = "700660"; // Sh_2210 FTAGAnalysisConfig uses this, but docs say only 11-16 can be used
1873  else if (m_showerType == 5) MCshowerID = "700660"; // Sh_2211
1874  else if (m_showerType == 6) MCshowerID = "700660"; // Sh_2212
1875  else if (m_showerType == 7) MCshowerID = "700660"; // Sh_2214
1876  else if (m_showerType == 8) {
1877  ATH_MSG_WARNING("Unknown Sherpa version detected! Using FTAG MC-MC SFs for Sherpa 2.2.11-2.2.16. Please check if these are applicable for this sample!");
1878  MCshowerID = "700660"; // Unknown Sherpa Version. This is to handle Sh_blank (e.g. DSID 701050). The examples I've found are all 2.2.16, but that's not guaranteed.
1879  }
1880  else if (m_showerType != 0){
1881  ATH_MSG_WARNING("Unknown ShowerID detected! Using default FTAG MC-MC SFs (Powheg+Pythia8). Please check if these are applicable for this sample!");
1882  }
1883  }
1884  else {
1885  MCshowerID= "default"; // PowhegPythia8EvtGen (601229)
1886  if (m_showerType == 1) MCshowerID = "601398"; // PYTHIA8EVTGEN517 (601398)
1887  else if (m_showerType == 3) MCshowerID = "601414"; // PhH7EG_H7UE - 601414
1888  else if (m_showerType == 5) MCshowerID = "700808"; // Sh_2211
1889  else if (m_showerType == 6) MCshowerID = "700808"; // Sh_2212
1890  else if (m_showerType == 7) MCshowerID = "700808"; // Sh_2214
1891  else if (m_showerType == 8) {
1892  ATH_MSG_WARNING("Unknown Sherpa version detected! Using FTAG MC-MC SFs for Sherpa 2.2.11-2.2.16. Please check if these are applicable for this sample!");
1893  MCshowerID = "700660"; // Unknown Sherpa Version
1894  }
1895  else if (m_showerType != 0){
1896  ATH_MSG_WARNING("Unknown ShowerID detected! Using default FTAG MC-MC SFs (Powheg+Pythia8). Please check if these are applicable for this sample!");
1897  }
1898  }
1899  } else {
1900  ATH_MSG_WARNING("Unknown b-tagger detected! Only DL1dv01 and GN2v01 are supported. Falling back to default FTAG MC-MC SFs (Powheg+Pythia8). Please check if these are applicable for this sample!");
1901  MCshowerID= "default";
1902  }
1903 
1904  // btagEfficiencyTool
1905  if (m_useBtagging && !m_btagEffTool.isUserConfigured() && !m_BtagWP.empty()) {
1906  if (jetcoll != "AntiKt4EMTopoJets" && jetcoll != "AntiKt4EMPFlowJets") {
1907  ATH_MSG_WARNING("** Only AntiKt4EMTopoJets and AntiKt4EMPFlowJets are supported with FTAG scale factors!");
1908  return StatusCode::FAILURE;
1909  }
1910 
1911  toolName = "BTagSF_" + jetcollBTag + m_BtagTagger + m_BtagWP;
1912  m_btagEffTool.setTypeAndName("BTaggingEfficiencyTool/"+toolName);
1913  ATH_CHECK( m_btagEffTool.setProperty("TaggerName", m_BtagTagger ) );
1915  ATH_CHECK( m_btagEffTool.setProperty("OperatingPoint", m_BtagWP ) );
1916  ATH_CHECK( m_btagEffTool.setProperty("JetAuthor", jetcollBTag ) );
1918  ATH_CHECK( m_btagEffTool.setProperty("SystematicsStrategy", m_BtagSystStrategy ) );
1919  ATH_CHECK( m_btagEffTool.setProperty("EfficiencyBCalibrations", MCshowerID ));
1920  ATH_CHECK( m_btagEffTool.setProperty("EfficiencyCCalibrations", MCshowerID ));
1921  ATH_CHECK( m_btagEffTool.setProperty("EfficiencyTCalibrations", MCshowerID ));
1922  ATH_CHECK( m_btagEffTool.setProperty("EfficiencyLightCalibrations", MCshowerID ));
1923  ATH_CHECK( m_btagEffTool.setProperty("EigenvectorReductionB", m_EigenvectorReductionB ));
1924  ATH_CHECK( m_btagEffTool.setProperty("EigenvectorReductionC", m_EigenvectorReductionC ));
1925  ATH_CHECK( m_btagEffTool.setProperty("EigenvectorReductionLight", m_EigenvectorReductionLight ));
1926  ATH_CHECK( m_btagEffTool.setProperty("OutputLevel", this->msg().level()) );
1928  } else ATH_CHECK( m_btagEffTool.retrieve() );
1929 
1930 
1931  if (m_slices["tjet"]) {
1933  if (trkjetcoll.find("AntiKt2PV0TrackJets")==std::string::npos && trkjetcoll.find("AntiKtVR30Rmax4Rmin02TrackJets")==std::string::npos) {
1934  ATH_MSG_WARNING("** Only AntiKt2PV0TrackJets and AntiKtVR30Rmax4Rmin02TrackJets are supported with FTAG scale factors!");
1935  return StatusCode::FAILURE;
1936  }
1937 
1938  toolName = "BTagSF_" + trkjetcoll;
1939  m_btagEffTool_trkJet.setTypeAndName("BTaggingEfficiencyTool/"+toolName);
1943  ATH_CHECK( m_btagEffTool_trkJet.setProperty("JetAuthor", BTagColl_TrkJet ) );
1945  ATH_CHECK( m_btagEffTool_trkJet.setProperty("SystematicsStrategy", m_BtagSystStrategy ) );
1946  ATH_CHECK( m_btagEffTool_trkJet.setProperty("EfficiencyBCalibrations", MCshowerID ));
1947  ATH_CHECK( m_btagEffTool_trkJet.setProperty("EfficiencyCCalibrations", MCshowerID ));
1948  ATH_CHECK( m_btagEffTool_trkJet.setProperty("EfficiencyTCalibrations", MCshowerID ));
1949  ATH_CHECK( m_btagEffTool_trkJet.setProperty("EfficiencyLightCalibrations", MCshowerID ));
1952  ATH_CHECK( m_btagEffTool_trkJet.setProperty("EigenvectorReductionLight", m_EigenvectorReductionLight ));
1953  ATH_CHECK( m_btagEffTool_trkJet.setProperty("OutputLevel", this->msg().level()) );
1956  }
1957  }
1958 
1959 
1960  if (m_slices["met"]) {
1962  // Initialise MET tools
1963 
1964  if (!m_metMaker.isUserConfigured()) {
1965  toolName = m_doFwdJVT ? m_metJetSelection+"_fJVT" : m_metJetSelection+"_NOfJVT";
1966  m_metMaker.setTypeAndName("met::METMaker/METMaker_ST_"+toolName);
1967 
1969  ATH_CHECK( m_metMaker.setProperty("DoSetMuonJetEMScale", m_metDoSetMuonJetEMScale) );
1970  ATH_CHECK( m_metMaker.setProperty("DoRemoveMuonJets", m_metDoRemoveMuonJets) );
1971  ATH_CHECK( m_metMaker.setProperty("UseGhostMuons", m_metUseGhostMuons) );
1972  ATH_CHECK( m_metMaker.setProperty("DoMuonEloss", m_metDoMuonEloss) );
1973  ATH_CHECK( m_metMaker.setProperty("GreedyPhotons", m_metGreedyPhotons) );
1974  ATH_CHECK( m_metMaker.setProperty("VeryGreedyPhotons", m_metVeryGreedyPhotons) );
1975 
1976  // set the jet selection if default empty string is overridden through config file
1977  if (m_metJetSelection.size()) {
1978  ATH_CHECK( m_metMaker.setProperty("JetSelection", m_metJetSelection) );
1979  }
1981  ATH_CHECK( m_metMaker.setProperty("DoPFlow", true) );
1982  }
1983 
1984  ATH_CHECK( m_metMaker.setProperty("OutputLevel", this->msg().level()) );
1986  } else ATH_CHECK( m_metMaker.retrieve() );
1987 
1988 
1990  m_metSystTool.setTypeAndName("met::METSystematicsTool/METSystTool");
1992 
1993  if (m_trkMETsyst && m_caloMETsyst){
1994  ATH_MSG_ERROR( "Can only have CST *or* TST configured for MET maker. Please unset either METDoCaloSyst or METDoTrkSyst in your config file" );
1995  return StatusCode::FAILURE;
1996  }
1997 
1998  if (m_trkMETsyst) {
1999  ATH_CHECK( m_metSystTool.setProperty("ConfigSoftCaloFile", "") );
2000  ATH_CHECK( m_metSystTool.setProperty("ConfigSoftTrkFile", "TrackSoftTerms-pflow_Dec24.config") );
2001  }
2002 
2003  if (m_caloMETsyst) {
2004  ATH_MSG_WARNING( "CST is no longer recommended by Jet/MET group");
2005  ATH_CHECK( m_metSystTool.setProperty("ConfigSoftTrkFile", "") );
2006  }
2007 
2008  if (m_trkJetsyst) {
2009  ATH_CHECK( m_metSystTool.setProperty("ConfigJetTrkFile", "JetTrackSyst.config") );
2010  }
2011 
2012  ATH_CHECK( m_metSystTool.setProperty("OutputLevel", this->msg().level()) );
2014  } else ATH_CHECK( m_metSystTool.retrieve());
2015 
2016 
2017  if (!m_metSignif.isUserConfigured()) {
2018  // See https://twiki.cern.ch/twiki/bin/view/AtlasProtected/MetSignificance
2019  m_metSignif.setTypeAndName("met::METSignificance/metSignificance_"+jetname);
2020 #ifndef XAOD_STANDALONE // Athena and AthAnalysis; need to take into account that MuonCalibTool is private tool
2025  if(jetname == "AntiKt4EMTopo" || jetname =="AntiKt4EMPFlow"){
2026  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "JetCollection", jetname) );
2027  } else {
2028  ATH_MSG_WARNING("Object-based METSignificance recommendations only exist for EMTopo and PFlow, falling back to AntiKt4EMTopo");
2029  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "JetCollection", "AntiKt4EMTopo") );
2030  }
2031  // setup a dedicated new muon calib tool for passing down to METSignificance
2032  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "MuonCalibTool", "CP::MuonCalibTool/calibTool"));
2033  if (m_isRun3)
2034  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "calibTool.IsRun3Geo", true));
2036  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "calibTool.OutputLevel",this->msg().level()));
2037  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "calibTool.release", "Recs2025_03_26_Run2Run3"));
2038  int IdBaselineInt = m_muIdBaseline;
2039  if (IdBaselineInt == 4)
2040  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "calibTool.do2StationsHighPt", true));
2041  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "calibTool.doExtraSmearing", m_muHighPtExtraSmear));
2042  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "OutputLevel", this->msg().level()));
2043 #else // AnalysisBase; can just pass the muon calib tool configured above
2044  ATH_CHECK( m_metSignif.setProperty("SoftTermParam", m_softTermParam) );
2045  ATH_CHECK( m_metSignif.setProperty("TreatPUJets", m_treatPUJets) );
2046  ATH_CHECK( m_metSignif.setProperty("DoPhiReso", m_doPhiReso) );
2047  ATH_CHECK( m_metSignif.setProperty("IsAFII", isAtlfast()) );
2048  if(jetname == "AntiKt4EMTopo" || jetname =="AntiKt4EMPFlow"){
2049  ATH_CHECK( m_metSignif.setProperty("JetCollection", jetname) );
2050  } else {
2051  ATH_MSG_WARNING("Object-based METSignificance recommendations only exist for EMTopo and PFlow, falling back to AntiKt4EMTopo");
2052  ATH_CHECK( m_metSignif.setProperty("JetCollection", "AntiKt4EMTopo") );
2053  }
2054  // just pass the muon calib tool
2056  ATH_CHECK( m_metSignif.setProperty("OutputLevel", this->msg().level()) );
2057 #endif
2059  } else ATH_CHECK( m_metSignif.retrieve() );
2060  }
2061 
2062 
2064 // Initialise trigger tools
2065 
2067 
2068  // The decision tool
2069  m_trigDecTool.setTypeAndName("Trig::TrigDecisionTool/TrigDecisionTool");
2070  ATH_CHECK( m_trigDecTool.setProperty("TrigDecisionKey", "xTrigDecision") );
2071  if (m_isRun3) {
2072  ATH_CHECK( m_trigDecTool.setProperty("NavigationFormat", "TrigComposite") );
2073  ATH_CHECK( m_trigDecTool.setProperty("HLTSummary", "HLTNav_Summary_DAODSlimmed") );
2074  }
2075  ATH_CHECK( m_trigDecTool.setProperty("OutputLevel", this->msg().level()) );
2076 
2077 #ifndef XAOD_STANDALONE // Athena and AthAnalysis
2078  // Clear the default tool handle to cause a fallback on the config service
2079  ATH_CHECK( m_trigDecTool.setProperty("ConfigTool", ""));
2080 #else // AnalysisBase
2081  m_trigConfTool.setTypeAndName("TrigConf::xAODConfigTool/xAODConfigTool");
2084 #endif
2085 
2087 
2088  } else ATH_CHECK( m_trigDecTool.retrieve() );
2089 
2090  if (m_isRun3) {
2092  m_trigDRScoringTool.setTypeAndName("Trig::DRScoringTool/TrigDRScoringTool");
2093  ATH_CHECK( m_trigDRScoringTool.setProperty("OutputLevel", this->msg().level()) );
2096  }
2097 
2100  m_trigMatchingTool.setTypeAndName("Trig::MatchFromCompositeTool/TrigMatchFromCompositeTool");
2102  ATH_CHECK( m_trigMatchingTool.setProperty("RemapBrokenLinks", true) );
2103  }
2104  else {
2105  if (m_isRun3){
2106  m_trigMatchingTool.setTypeAndName("Trig::R3MatchingTool/TrigR3MatchingTool");
2109  }
2110  else {
2111  m_trigMatchingTool.setTypeAndName("Trig::MatchingTool/TrigMatchingTool");
2113  }
2114  }
2115  ATH_CHECK( m_trigMatchingTool.setProperty("OutputLevel", this->msg().level()) );
2118 
2120 // Initialise trigGlobalEfficiencyCorrection tool
2121 
2123 
2124  std::string no2e17("");
2125  if (m_trig2017combination_diLep.find("||2e17_lhvloose_nod0_L12EM15VHI") != std::string::npos) {
2126  auto pos_2e17 = m_trig2017combination_diLep.find("||2e17_lhvloose_nod0_L12EM15VHI");
2127  no2e17 = m_trig2017combination_diLep.substr(0, pos_2e17) + m_trig2017combination_diLep.substr(pos_2e17+31, m_trig2017combination_diLep.size());
2128  } else if (m_trig2017combination_diLep.find("2e17_lhvloose_nod0_L12EM15VHI||") != std::string::npos) {
2129  auto pos_2e17 = m_trig2017combination_diLep.find("2e17_lhvloose_nod0_L12EM15VHI||");
2130  no2e17 = m_trig2017combination_diLep.substr(0, pos_2e17) + m_trig2017combination_diLep.substr(pos_2e17+31, m_trig2017combination_diLep.size());
2131  } else {
2132  no2e17 = m_trig2017combination_diLep;
2133  }
2134  ATH_MSG_DEBUG( "TrigGlobalEfficiencyCorrectionTool/TrigGlobal_diLep: no2e17 trigger string: " << no2e17 );
2135 
2136  std::map<std::string,std::string> triggers_diLep;
2137  triggers_diLep["2015"] = m_trig2015combination_diLep;
2138  triggers_diLep["2016"] = m_trig2016combination_diLep;
2139  triggers_diLep["324320-326695"] = m_trig2017combination_diLep; // 2017 before accidental prescale of L12EM15VHI
2140  triggers_diLep["326834-328393"] = no2e17; // 2017 during accidental prescale
2141  triggers_diLep["329385-340453"] = m_trig2017combination_diLep; // 2017 after accidental prescale
2142  triggers_diLep["2018"] = m_trig2018combination_diLep;
2143 
2144  m_trigGlobalEffCorrTool_diLep.setTypeAndName("TrigGlobalEfficiencyCorrectionTool/TrigGlobal_diLep");
2146  ATH_CHECK( m_trigGlobalEffCorrTool_diLep.setProperty("ElectronScaleFactorTools", m_elecTrigSFTools) );
2148  ATH_CHECK( m_trigGlobalEffCorrTool_diLep.setProperty("TriggerCombination", triggers_diLep) );
2152  ATH_CHECK( m_trigGlobalEffCorrTool_diLep.setProperty("OutputLevel", this->msg().level()) );
2155 
2156 
2158 
2159  std::string no2e17("");
2160  if (m_trig2017combination_multiLep.find("||2e17_lhvloose_nod0_L12EM15VHI") != std::string::npos) {
2161  auto pos_2e17 = m_trig2017combination_multiLep.find("||2e17_lhvloose_nod0_L12EM15VHI");
2162  no2e17 = m_trig2017combination_multiLep.substr(0, pos_2e17) + m_trig2017combination_multiLep.substr(pos_2e17+31, m_trig2017combination_multiLep.size());
2163  } else if (m_trig2017combination_multiLep.find("2e17_lhvloose_nod0_L12EM15VHI||") != std::string::npos) {
2164  auto pos_2e17 = m_trig2017combination_multiLep.find("2e17_lhvloose_nod0_L12EM15VHI||");
2165  no2e17 = m_trig2017combination_multiLep.substr(0, pos_2e17) + m_trig2017combination_multiLep.substr(pos_2e17+31, m_trig2017combination_multiLep.size());
2166  } else {
2168  }
2169  ATH_MSG_DEBUG( "TrigGlobalEfficiencyCorrectionTool/TrigGlobal_multiLep: no2e17 trigger string: " << no2e17 );
2170 
2171  std::map<std::string,std::string> triggers_multiLep;
2172  triggers_multiLep["2015"] = m_trig2015combination_multiLep;
2173  triggers_multiLep["2016"] = m_trig2016combination_multiLep;
2174  triggers_multiLep["324320-326695"] = m_trig2017combination_multiLep; // 2017 before accidental prescale of L12EM15VHI
2175  triggers_multiLep["326834-328393"] = no2e17; // 2017 during accidental prescale
2176  triggers_multiLep["329385-340453"] = m_trig2017combination_multiLep; // 2017 after accidental prescale
2177  triggers_multiLep["2018"] = m_trig2018combination_multiLep;
2178 
2179  m_trigGlobalEffCorrTool_multiLep.setTypeAndName("TrigGlobalEfficiencyCorrectionTool/TrigGlobal_multiLep");
2183  ATH_CHECK( m_trigGlobalEffCorrTool_multiLep.setProperty("TriggerCombination", triggers_multiLep) );
2187  ATH_CHECK( m_trigGlobalEffCorrTool_multiLep.setProperty("OutputLevel", this->msg().level()) );
2190 
2191 
2193  m_trigGlobalEffCorrTool_diPhoton.setTypeAndName("TrigGlobalEfficiencyCorrectionTool/TrigGlobal_diPhoton");
2202  ATH_CHECK( m_trigGlobalEffCorrTool_diPhoton.setProperty("OutputLevel", this->msg().level()) );
2205 
2206 
2207  if (m_slices["ele"] || m_slices["pho"] || m_slices["mu"]) {
2208  // /////////////////////////////////////////////////////////////////////////////////////////
2209  // Initialise Isolation Correction Tool
2210 
2211  if ( !m_isoCorrTool.isUserConfigured() ) {
2212  m_isoCorrTool.setTypeAndName("CP::IsolationCorrectionTool/IsoCorrTool");
2213  ATH_CHECK( m_isoCorrTool.setProperty( "ToolVer", "REL22") );
2214  ATH_CHECK( m_isoCorrTool.setProperty( "IsMC", !isData()) );
2215  ATH_CHECK( m_isoCorrTool.setProperty( "AFII_corr", isAtlfast()) );
2216  ATH_CHECK( m_isoCorrTool.setProperty( "Apply_SC_leakcorr", false) );
2217  ATH_CHECK( m_isoCorrTool.setProperty( "CorrFile", "IsolationCorrections/v6/isolation_ptcorrections_rel22_mc20.root") );
2218  ATH_CHECK( m_isoCorrTool.setProperty( "OutputLevel", this->msg().level()) );
2220  } else ATH_CHECK( m_isoCorrTool.retrieve() );
2221 
2222 
2223  // /////////////////////////////////////////////////////////////////////////////////////////
2224  // Initialise Isolation Tool
2225  if (!m_isoTool.isUserConfigured()) {
2226  m_isoTool.setTypeAndName("CP::IsolationSelectionTool/IsoTool");
2227  ATH_CHECK( m_isoTool.setProperty("ElectronWP", m_eleIso_WP.empty() ? "Loose_VarRad" : m_eleIso_WP) );
2228  ATH_CHECK( m_isoTool.setProperty("MuonWP", m_muIso_WP.empty() ? "Loose_VarRad" : m_muIso_WP) );
2229  ATH_CHECK( m_isoTool.setProperty("PhotonWP", m_photonIso_WP.empty() ? "FixedCutTight" : m_photonIso_WP ) );
2230  ATH_CHECK( m_isoTool.setProperty("OutputLevel", this->msg().level()) );
2232  } else ATH_CHECK( m_isoTool.retrieve() );
2233 
2234  //disable if (!m_isoToolLowPtPLV.isUserConfigured()) {
2235  //disable m_isoToolLowPtPLV.setTypeAndName("CP::IsolationLowPtPLVTool/IsoToolLowPtPLV");
2236  //disable ATH_CHECK( m_isoToolLowPtPLV.setProperty("OutputLevel", this->msg().level()) );
2237  //disable ATH_CHECK( m_isoToolLowPtPLV.retrieve() );
2238  //disable } else ATH_CHECK( m_isoToolLowPtPLV.retrieve() );
2239 
2240 
2242  m_isoBaselineTool.setTypeAndName("CP::IsolationSelectionTool/IsoBaselineTool");
2243  ATH_CHECK( m_isoBaselineTool.setProperty("ElectronWP", m_eleBaselineIso_WP.empty() ? "Loose_VarRad" : m_eleBaselineIso_WP ) );
2244  ATH_CHECK( m_isoBaselineTool.setProperty("MuonWP", m_muBaselineIso_WP.empty() ? "Loose_VarRad" : m_muBaselineIso_WP ) );
2245  ATH_CHECK( m_isoBaselineTool.setProperty("PhotonWP", m_photonBaselineIso_WP.empty() ? "FixedCutTight" : m_photonBaselineIso_WP ) );
2246  ATH_CHECK( m_isoBaselineTool.setProperty("OutputLevel", this->msg().level()) );
2248  } else ATH_CHECK( m_isoBaselineTool.retrieve() );
2249 
2250 
2252  m_isoHighPtTool.setTypeAndName("CP::IsolationSelectionTool/IsoHighPtTool");
2253  ATH_CHECK( m_isoHighPtTool.setProperty("ElectronWP", m_eleIsoHighPt_WP.empty() ? "Loose_VarRad" : m_eleIsoHighPt_WP) );
2254  ATH_CHECK( m_isoHighPtTool.setProperty("MuonWP", m_muIsoHighPt_WP.empty() ? "Loose_VarRad" : m_muIsoHighPt_WP ) );
2255  ATH_CHECK( m_isoHighPtTool.setProperty("PhotonWP", m_photonIso_WP.empty() ? "FixedCutTight" : m_photonIso_WP ) );
2256  ATH_CHECK( m_isoHighPtTool.setProperty("OutputLevel", this->msg().level()) );
2258  } else ATH_CHECK( m_isoHighPtTool.retrieve() );
2259 
2260 
2261  // /////////////////////////////////////////////////////////////////////////////////////////
2262  // Initialise IsolationCloseByCorrectionTool Tool
2264  m_isoCloseByTool.setTypeAndName("CP::IsolationCloseByCorrectionTool/IsoCloseByTool");
2265  // Actually we could debate about what is the proper tool to choose if the users have different baseline & signal islation WP's
2267  ATH_CHECK( m_isoCloseByTool.setProperty("PassoverlapDecorator", m_IsoCloseByORpassLabel) );
2268  ATH_CHECK( m_isoCloseByTool.setProperty("SelectionDecorator", m_useSigLepForIsoCloseByOR ? "signal" : "baseline") );
2269  // Make this propery configurable as well?
2270  ATH_CHECK( m_isoCloseByTool.setProperty("BackupPrefix", "ORIG") );
2271  // The isolation selection decorator is updated as well by the tool
2272  ATH_CHECK( m_isoCloseByTool.setProperty("IsolationSelectionDecorator", "isol") );
2273 
2274  ATH_CHECK( m_isoCloseByTool.setProperty("OutputLevel", this->msg().level()) );
2275 #ifndef XAOD_ANALYSIS
2276  ATH_CHECK( m_isoCloseByTool.setProperty("ParticleCaloExtensionTool", "") );
2277 #endif
2279  } else ATH_CHECK( m_isoCloseByTool.retrieve() );
2280  }
2281 
2282 
2283 // /////////////////////////////////////////////////////////////////////////////////////////
2284 // Initialise Overlap Removal Tool
2285  if ( m_orToolbox.masterTool.empty() ){
2286 
2287  // set up the master tool
2288  std::string suffix = "";
2289  if (m_orDoTau) suffix += "Tau";
2290  if (m_orDoPhoton) suffix += "Gamma";
2291  if (m_orDoBjet) suffix += "Bjet";
2292  std::string toolName = "ORTool" + suffix;
2293  ATH_MSG_INFO("SUSYTools: Autoconfiguring " << toolName);
2294 
2295  std::string bJetLabel = "";
2296  //overwrite lepton flags if the global is false (yes?)
2297  if (!m_orDoBjet || !m_useBtagging) {
2298  m_orDoElBjet = false;
2299  m_orDoMuBjet = false;
2300  m_orDoTauBjet = false;
2301  }
2303  bJetLabel = "bjet_loose";
2304  }
2305 
2306  // Set the generic flags
2307  ORUtils::ORFlags orFlags(toolName, m_orInputLabel, "passOR");
2308  orFlags.bJetLabel = bJetLabel;
2310  orFlags.outputPassValue = true;
2312  if (m_orDoElEl) {
2313  orFlags.doEleEleOR = true;
2314  } else orFlags.doEleEleOR = false;
2315  orFlags.doElectrons = true;
2316  orFlags.doMuons = true;
2317  orFlags.doJets = true;
2318  orFlags.doTaus = m_orDoTau;
2319  orFlags.doPhotons = m_orDoPhoton;
2320  orFlags.doFatJets = m_orDoFatjets;
2321 
2322  //set up all recommended tools
2324 
2325  // We don't currently have a good way to determine here which object
2326  // definitions are disabled, so we currently just configure all overlap
2327  // tools and disable the pointer safety checks
2328  ATH_CHECK( m_orToolbox.setGlobalProperty("OutputLevel", this->msg().level()) );
2329  ATH_CHECK( m_orToolbox.masterTool.setProperty("RequireExpectedPointers", false) );
2330 
2331  // Override boosted OR sliding cone options
2334 
2335  //add custom tau-jet OR tool
2336  if(m_orDoTau){
2337  m_orToolbox.tauJetORT.setTypeAndName("ORUtils::TauJetOverlapTool/" + orFlags.masterName + ".TauJetORT");
2339  }
2340 
2341  // override sliding cone params if sliding dR is on and the user-provided parameter values are non-negative
2342  if (m_orDoBoostedElectron) {
2346  }
2347  if (m_orDoBoostedMuon) {
2351  }
2352 
2353  // and switch off lep-bjet check if not requested
2354  if (!m_orDoElBjet) {
2355  ATH_CHECK(m_orToolbox.eleJetORT.setProperty("BJetLabel", ""));
2356  }
2357  if (!m_orDoMuBjet) {
2358  ATH_CHECK(m_orToolbox.muJetORT.setProperty("BJetLabel", ""));
2359  }
2360 
2361  // propagate the mu-jet ghost-association option which might be set by the user (default is true)
2363 
2364  // propagate mu-jet OR settings if requested
2366  if(m_orApplyRelPt){
2369  }
2371 
2372  // propagate the calo muon setting for EleMuORT
2374 
2375  // Use electron-muon DR matching to remove electrons within DR < 0.01 of Muons.
2376  if (m_orDoElMu){
2377  ATH_CHECK(m_orToolbox.eleMuORT.setProperty("UseDRMatching", m_orDoElMu) );
2378  }
2379 
2380  // propagate the fatjets OR settings
2381  if(m_orDoFatjets){
2384  }
2385 
2386  // Make sure that we deal with prorities correctly
2387  ATH_CHECK(m_orToolbox.eleJetORT.setProperty("EnableUserPriority", true));
2388  ATH_CHECK(m_orToolbox.muJetORT.setProperty("EnableUserPriority", true));
2389  if (m_orDoTau) ATH_CHECK(m_orToolbox.tauJetORT.setProperty("EnableUserPriority", true));
2390  if (m_orDoPhoton) ATH_CHECK(m_orToolbox.phoJetORT.setProperty("EnableUserPriority", true));
2391 
2392  if ( m_orPhotonFavoured ) {
2393  ATH_CHECK(m_orToolbox.phoEleORT.setProperty("SwapContainerPrecedence", true));
2394  ATH_CHECK(m_orToolbox.phoMuORT.setProperty("SwapContainerPrecedence", true));
2395  }
2396 
2397  if (!m_orDoEleJet){
2398  // Disable the electron removal part of e-j overlap removal
2399  ATH_CHECK( m_orToolbox.eleJetORT.setProperty("OuterDR",-1.) );
2400  ATH_CHECK( m_orToolbox.eleJetORT.setProperty("SlidingDRMaxCone",-1.) );
2401  }
2402  if (!m_orDoMuonJet){
2403  // Disable the muon removal part of m-j overlap removal
2404  ATH_CHECK( m_orToolbox.muJetORT.setProperty("OuterDR",-1.) );
2405  ATH_CHECK( m_orToolbox.muJetORT.setProperty("SlidingDRMaxCone",-1.) );
2406  }
2407 
2409 
2410  }
2411  // Done with the OR toolbox setup!
2412 
2413 // /////////////////////////////////////////////////////////////////////////////////////////
2414 // Initialise PMG Tools
2416  m_pmgSHnjetWeighter.setTypeAndName("PMGTools::PMGSherpa22VJetsWeightTool/PMGSHVjetReweighter");
2417  ATH_CHECK( m_pmgSHnjetWeighter.setProperty( "TruthJetContainer", "AntiKt4TruthJets"));
2418  ATH_CHECK( m_pmgSHnjetWeighter.setProperty("OutputLevel", this->msg().level()) );
2421 
2422 
2424  m_pmgSHnjetWeighterWZ.setTypeAndName("PMGTools::PMGSherpa22VJetsWeightTool/PMGSHVjetReweighterWZ");
2425  ATH_CHECK( m_pmgSHnjetWeighterWZ.setProperty( "TruthJetContainer", "AntiKt4TruthWZJets"));
2426  ATH_CHECK( m_pmgSHnjetWeighterWZ.setProperty("OutputLevel", this->msg().level()) );
2429 
2430 
2431  // prevent these initialiation snippets from being run again
2432  m_subtool_init = true;
2433 
2434  ATH_MSG_INFO("Done initialising SUSYTools");
2435 
2436  return StatusCode::SUCCESS;
2437 }
ST::SUSYObjDef_xAOD::m_WDecorName
std::string m_WDecorName
Definition: SUSYObjDef_xAOD.h:548
ST::SUSYObjDef_xAOD::m_applyJVTCut
bool m_applyJVTCut
Definition: SUSYObjDef_xAOD.h:820
ST::SUSYObjDef_xAOD::m_orBoostedMuonC1
double m_orBoostedMuonC1
Definition: SUSYObjDef_xAOD.h:772
ST::SUSYObjDef_xAOD::m_muonEfficiencySFTool
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonEfficiencySFTool
Definition: SUSYObjDef_xAOD.h:870
asg::AnaToolHandle::initialize
StatusCode initialize()
initialize the tool
ST::SUSYObjDef_xAOD::m_badJetCut
std::string m_badJetCut
Definition: SUSYObjDef_xAOD.h:539
bJetLabel
const std::string bJetLabel
Definition: OverlapRemovalTester.cxx:70
ST::SUSYObjDef_xAOD::m_isoHighPtTool
asg::AnaToolHandle< CP::IIsolationSelectionTool > m_isoHighPtTool
Definition: SUSYObjDef_xAOD.h:972
ORUtils::ORFlags::outputPassValue
bool outputPassValue
Output value to assign passing objects.
Definition: OverlapRemovalInit.h:51
CP::IMuonLRTOverlapRemovalTool::defaultStrategy
@ defaultStrategy
Definition: IMuonLRTOverlapRemovalTool.h:38
ST::SUSYObjDef_xAOD::m_orBoostedElectronC1
double m_orBoostedElectronC1
Definition: SUSYObjDef_xAOD.h:768
ST::SUSYObjDef_xAOD::m_orBoostedMuonC2
double m_orBoostedMuonC2
Definition: SUSYObjDef_xAOD.h:773
LikeEnum::Loose
@ Loose
Definition: LikelihoodEnums.h:12
TrigJetMonitorAlgorithm.jetcoll
jetcoll
Definition: TrigJetMonitorAlgorithm.py:1219
temp
Definition: JetEventDict.h:21
ST::SUSYObjDef_xAOD::m_deadHVTool
asg::AnaToolHandle< IAsgDeadHVCellRemovalTool > m_deadHVTool
Definition: SUSYObjDef_xAOD.h:901
ORUtils::ORFlags::boostedLeptons
bool boostedLeptons
Activate boosted-lepton recommendations (sliding dR cones)
Definition: OverlapRemovalInit.h:48
ST::SUSYObjDef_xAOD::m_doPhiReso
bool m_doPhiReso
Definition: SUSYObjDef_xAOD.h:589
ST::SUSYObjDef_xAOD::m_jetfJvtEfficiencyTool
asg::AnaToolHandle< CP::IJvtEfficiencyTool > m_jetfJvtEfficiencyTool
Definition: SUSYObjDef_xAOD.h:842
ST::SUSYObjDef_xAOD::m_tauSelTool
asg::AnaToolHandle< TauAnalysisTools::ITauSelectionTool > m_tauSelTool
Definition: SUSYObjDef_xAOD.h:915
ST::SUSYObjDef_xAOD::m_ZconfigReader
TEnv m_ZconfigReader
Definition: SUSYObjDef_xAOD.h:546
ST::SUSYObjDef_xAOD::m_doTTVAsf
bool m_doTTVAsf
Definition: SUSYObjDef_xAOD.h:522
ST::SUSYObjDef_xAOD::m_fJvtWP
std::string m_fJvtWP
Definition: SUSYObjDef_xAOD.h:748
ST::SUSYObjDef_xAOD::m_metDoSetMuonJetEMScale
bool m_metDoSetMuonJetEMScale
Definition: SUSYObjDef_xAOD.h:575
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
ST::SUSYObjDef_xAOD::m_muBaselineEta
double m_muBaselineEta
Definition: SUSYObjDef_xAOD.h:702
ST::SUSYObjDef_xAOD::m_trigGlobalEffCorrTool_multiLep
asg::AnaToolHandle< ITrigGlobalEfficiencyCorrectionTool > m_trigGlobalEffCorrTool_multiLep
Definition: SUSYObjDef_xAOD.h:952
asg::AnaToolHandle::isUserConfigured
bool isUserConfigured() const noexcept
whether this tool handle has been configured by the user
Enums.h
ST::SUSYObjDef_xAOD::m_trigNToys_diLep
int m_trigNToys_diLep
Definition: SUSYObjDef_xAOD.h:938
ST::SUSYObjDef_xAOD::m_jetUncertaintiesCalibArea
std::string m_jetUncertaintiesCalibArea
Definition: SUSYObjDef_xAOD.h:529
ST::SUSYObjDef_xAOD::m_jesConfigAFII
std::string m_jesConfigAFII
Definition: SUSYObjDef_xAOD.h:858
ST::SUSYObjDef_xAOD::m_BtagSystStrategy
std::string m_BtagSystStrategy
Definition: SUSYObjDef_xAOD.h:676
ST::SUSYObjDef_xAOD::m_tauEffToolRecommendationTag
std::string m_tauEffToolRecommendationTag
Definition: SUSYObjDef_xAOD.h:731
ST::SUSYObjDef_xAOD::m_tauIdBaseline
std::string m_tauIdBaseline
Definition: SUSYObjDef_xAOD.h:651
hotSpotInTAG.suffix
string suffix
Definition: hotSpotInTAG.py:186
LikeEnum::VeryLoose
@ VeryLoose
Definition: LikelihoodEnums.h:11
ST::SUSYObjDef_xAOD::m_showerType
int m_showerType
Definition: SUSYObjDef_xAOD.h:807
ST::SUSYObjDef_xAOD::m_photonTrigEffTools
ToolHandleArray< IAsgPhotonEfficiencyCorrectionTool > m_photonTrigEffTools
Definition: SUSYObjDef_xAOD.h:909
ORUtils::ToolBox::eleMuORT
OverlapHandle_t eleMuORT
Definition: ToolBox.h:70
ST::SUSYObjDef_xAOD::m_eleIsoHighPt_WP
std::string m_eleIsoHighPt_WP
Definition: SUSYObjDef_xAOD.h:653
ST::SUSYObjDef_xAOD::m_BtagWP
std::string m_BtagWP
Definition: SUSYObjDef_xAOD.h:672
ST::SUSYObjDef_xAOD::m_eleAllowRun3TrigSFFallback
bool m_eleAllowRun3TrigSFFallback
Definition: SUSYObjDef_xAOD.h:697
ST::SUSYObjDef_xAOD::m_egammaCalibTool
asg::AnaToolHandle< CP::IEgammaCalibrationAndSmearingTool > m_egammaCalibTool
Combined electron collection.
Definition: SUSYObjDef_xAOD.h:896
ST::SUSYObjDef_xAOD::m_trig2016combination_diPhoton
std::string m_trig2016combination_diPhoton
Definition: SUSYObjDef_xAOD.h:956
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
ST::SUSYObjDef_xAOD::split
const std::vector< std::string > split(const std::string &s, const std::string &delim) const
Definition: SUSYObjDef_xAOD.cxx:1805
ST::SUSYObjDef_xAOD::m_metDoRemoveMuonJets
bool m_metDoRemoveMuonJets
Definition: SUSYObjDef_xAOD.h:576
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
ST::SUSYObjDef_xAOD::m_label_truthKey
SG::ReadDecorHandleKey< xAOD::JetContainer > m_label_truthKey
Definition: SUSYObjDef_xAOD.h:852
ST::SUSYObjDef_xAOD::m_orMuJetInnerDR
double m_orMuJetInnerDR
Definition: SUSYObjDef_xAOD.h:778
ST::SUSYObjDef_xAOD::m_muonEfficiencyBMHighPtSFTool
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonEfficiencyBMHighPtSFTool
Definition: SUSYObjDef_xAOD.h:871
ST::SUSYObjDef_xAOD::m_pmgSHnjetWeighterWZ
asg::AnaToolHandle< IWeightTool > m_pmgSHnjetWeighterWZ
Definition: SUSYObjDef_xAOD.h:983
IAsgPhotonIsEMSelector.h
ST::SUSYObjDef_xAOD::m_legsPerTool
std::map< std::string, std::string > m_legsPerTool
Definition: SUSYObjDef_xAOD.h:824
ST::SUSYObjDef_xAOD::m_orDoElBjet
bool m_orDoElBjet
Definition: SUSYObjDef_xAOD.h:764
ST::SUSYObjDef_xAOD::m_tauSmearingToolGenerator
std::string m_tauSmearingToolGenerator
Definition: SUSYObjDef_xAOD.h:732
TauAnalysisTools::JETIDRNNTIGHT
@ JETIDRNNTIGHT
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:22
ST::SUSYObjDef_xAOD::m_trigGlobalEffCorrTool_diPhoton
asg::AnaToolHandle< ITrigGlobalEfficiencyCorrectionTool > m_trigGlobalEffCorrTool_diPhoton
Definition: SUSYObjDef_xAOD.h:960
asg::AnaToolHandle::retrieve
StatusCode retrieve()
initialize the tool
ST::SUSYObjDef_xAOD::m_fatJetUncertaintiesPDsmearing
bool m_fatJetUncertaintiesPDsmearing
Definition: SUSYObjDef_xAOD.h:542
ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_reco
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_reco
Combined muon collection.
Definition: SUSYObjDef_xAOD.h:880
IAsgElectronEfficiencyCorrectionTool.h
ITrigConfigTool.h
ST::SUSYObjDef_xAOD::m_elecSelLikelihood
asg::AnaToolHandle< IAsgElectronLikelihoodTool > m_elecSelLikelihood
Definition: SUSYObjDef_xAOD.h:897
ITrigGlobalEfficiencyCorrectionTool.h
ST::SUSYObjDef_xAOD::m_orMuJetPtRatio
double m_orMuJetPtRatio
Definition: SUSYObjDef_xAOD.h:776
IIsolationCloseByCorrectionTool.h
ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_trig_mixLep
std::vector< asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > > m_elecEfficiencySFTool_trig_mixLep
Definition: SUSYObjDef_xAOD.h:888
TauAnalysisTools::JETIDRNNMEDIUM
@ JETIDRNNMEDIUM
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:21
ORUtils::ORFlags::doEleEleOR
bool doEleEleOR
Do electron-electron overlap.
Definition: OverlapRemovalInit.h:55
IsoCloseByCorrectionTest.WP
WP
Definition: IsoCloseByCorrectionTest.py:56
ST::SUSYObjDef_xAOD::m_jetNNJvtMomentTool
asg::AnaToolHandle< JetPileupTag::JetVertexNNTagger > m_jetNNJvtMomentTool
Definition: SUSYObjDef_xAOD.h:838
ST::SUSYObjDef_xAOD::m_muTriggerSFCalibRelease
std::string m_muTriggerSFCalibRelease
Definition: SUSYObjDef_xAOD.h:670
ST::SUSYObjDef_xAOD::m_EigenvectorReductionC
std::string m_EigenvectorReductionC
Definition: SUSYObjDef_xAOD.h:678
ST::SUSYObjDef_xAOD::m_fJvtConfigRun2
std::string m_fJvtConfigRun2
Definition: SUSYObjDef_xAOD.h:751
ST
Definition: Electrons.cxx:41
PATCore::ParticleDataType::Fast
@ Fast
Definition: PATCoreEnums.h:22
ST::SUSYObjDef_xAOD::m_photonTriggerSFTool
asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > m_photonTriggerSFTool
Definition: SUSYObjDef_xAOD.h:904
ST::SUSYObjDef_xAOD::m_isoBaselineTool
asg::AnaToolHandle< CP::IIsolationSelectionTool > m_isoBaselineTool
Definition: SUSYObjDef_xAOD.h:971
ST::SUSYObjDef_xAOD::m_elecTrigEffTools
ToolHandleArray< IAsgElectronEfficiencyCorrectionTool > m_elecTrigEffTools
Definition: SUSYObjDef_xAOD.h:891
ST::SUSYObjDef_xAOD::m_JvtConfigRun2
std::string m_JvtConfigRun2
Definition: SUSYObjDef_xAOD.h:741
ST::SUSYObjDef_xAOD::m_tauSmearingTool
asg::AnaToolHandle< TauAnalysisTools::ITauSmearingTool > m_tauSmearingTool
Definition: SUSYObjDef_xAOD.h:917
ST::SUSYObjDef_xAOD::m_jetInputType
int m_jetInputType
Definition: SUSYObjDef_xAOD.h:516
ST::SUSYObjDef_xAOD::m_el_iso_support
std::vector< std::string > m_el_iso_support
Definition: SUSYObjDef_xAOD.h:628
ORUtils::ORFlags::doPhotons
bool doPhotons
Definition: OverlapRemovalInit.h:63
asg::AnaToolHandle::setTypeAndName
void setTypeAndName(const std::string &val_typeAndName)
set the value of type and name
ORUtils::recommendedTools
StatusCode recommendedTools(const ORFlags &flags, ToolBox &toolBox)
Pre-configured standard recommended OR tools.
Definition: OverlapRemovalInit.cxx:50
ST::SUSYObjDef_xAOD::m_metRemoveOverlappingCaloTaggedMuons
bool m_metRemoveOverlappingCaloTaggedMuons
Definition: SUSYObjDef_xAOD.h:574
ST::SUSYObjDef_xAOD::m_metMaker
asg::AnaToolHandle< IMETMaker > m_metMaker
Definition: SUSYObjDef_xAOD.h:928
ST::SUSYObjDef_xAOD::m_trig2018combination_diPhoton
std::string m_trig2018combination_diPhoton
Definition: SUSYObjDef_xAOD.h:958
ST::SUSYObjDef_xAOD::m_trigNToys_diPhoton
int m_trigNToys_diPhoton
Definition: SUSYObjDef_xAOD.h:954
CP::SystematicSet
Class to wrap a set of SystematicVariations.
Definition: SystematicSet.h:31
ST::SUSYObjDef_xAOD::m_TopTaggerTool
asg::AnaToolHandle< JSSWTopTaggerDNN > m_TopTaggerTool
Definition: SUSYObjDef_xAOD.h:846
ST::SUSYObjDef_xAOD::m_orBtagWP
std::string m_orBtagWP
Definition: SUSYObjDef_xAOD.h:781
TauAnalysisTools::JETIDRNNLOOSE
@ JETIDRNNLOOSE
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:20
ST::SUSYObjDef_xAOD::m_muId
int m_muId
Definition: SUSYObjDef_xAOD.h:646
ST::SUSYObjDef_xAOD::m_photonIso_WP
std::string m_photonIso_WP
Definition: SUSYObjDef_xAOD.h:662
ST::SUSYObjDef_xAOD::m_muonTTVAEfficiencySFTool
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonTTVAEfficiencySFTool
Definition: SUSYObjDef_xAOD.h:872
ST::SUSYObjDef_xAOD::m_el_iso_fallback
std::map< std::string, std::string > m_el_iso_fallback
Definition: SUSYObjDef_xAOD.h:632
SUSYObjDef_xAOD.h
ORUtils::ORFlags::doElectrons
bool doElectrons
Definition: OverlapRemovalInit.h:59
ST::SUSYObjDef_xAOD::m_BtagMinPt
double m_BtagMinPt
Definition: SUSYObjDef_xAOD.h:674
IMETMaker.h
TrigDecisionTool.h
ST::SUSYObjDef_xAOD::m_fatjetFFSmearingSyst
std::vector< CP::SystematicSet > m_fatjetFFSmearingSyst
Definition: SUSYObjDef_xAOD.h:816
ST::SUSYObjDef_xAOD::m_trkJetsyst
bool m_trkJetsyst
Definition: SUSYObjDef_xAOD.h:585
ST::SUSYObjDef_xAOD::m_orDoTau
bool m_orDoTau
Overlap removal options.
Definition: SUSYObjDef_xAOD.h:757
ST::SUSYObjDef_xAOD::m_prwTool
asg::AnaToolHandle< CP::IPileupReweightingTool > m_prwTool
Definition: SUSYObjDef_xAOD.h:975
ST::SUSYObjDef_xAOD::m_muBaselineIso_WP
std::string m_muBaselineIso_WP
Definition: SUSYObjDef_xAOD.h:664
ST::SUSYObjDef_xAOD::m_trig2016combination_multiLep
std::string m_trig2016combination_multiLep
Definition: SUSYObjDef_xAOD.h:948
ST::SUSYObjDef_xAOD::m_WTaggerTool
asg::AnaToolHandle< SmoothedWZTagger > m_WTaggerTool
Definition: SUSYObjDef_xAOD.h:844
ITauSelectionTool.h
ST::SUSYObjDef_xAOD::m_eleConfigBaseline
std::string m_eleConfigBaseline
Definition: SUSYObjDef_xAOD.h:643
IMETSignificance.h
ST::SUSYObjDef_xAOD::m_bTaggingCalibrationFilePath
std::string m_bTaggingCalibrationFilePath
Definition: SUSYObjDef_xAOD.h:822
IAsgPhotonEfficiencyCorrectionTool.h
ORUtils::ToolBox::eleFatJetORT
OverlapHandle_t eleFatJetORT
Definition: ToolBox.h:79
IMETSystematicsTool.h
ST::SUSYObjDef_xAOD::m_metDoMuonEloss
bool m_metDoMuonEloss
Definition: SUSYObjDef_xAOD.h:578
ST::SUSYObjDef_xAOD::m_photonTrigSFTools
ToolHandleArray< IAsgPhotonEfficiencyCorrectionTool > m_photonTrigSFTools
Definition: SUSYObjDef_xAOD.h:908
ST::SUSYObjDef_xAOD::m_orDoFatjets
bool m_orDoFatjets
Definition: SUSYObjDef_xAOD.h:787
ST::SUSYObjDef_xAOD::m_trigMatchingTool
asg::AnaToolHandle< Trig::IMatchingTool > m_trigMatchingTool
Definition: SUSYObjDef_xAOD.h:964
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
ST::SUSYObjDef_xAOD::m_jetUncertaintiesPDSmearTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_jetUncertaintiesPDSmearTool
Definition: SUSYObjDef_xAOD.h:830
IJetSelector.h
ORUtils::ORFlags::doFatJets
bool doFatJets
Definition: OverlapRemovalInit.h:64
ST::SUSYObjDef_xAOD::m_elecLRTORTool
asg::AnaToolHandle< CP::IElectronLRTOverlapRemovalTool > m_elecLRTORTool
Definition: SUSYObjDef_xAOD.h:892
TauAnalysisTools::JETIDNONE
@ JETIDNONE
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:14
asg::AnaToolHandle::setProperty
StatusCode setProperty(const std::string &property, const T2 &value)
set the given property of the tool.
xAOD::JetInput::typeName
const std::string & typeName(Type id)
Definition: JetContainerInfo.cxx:199
ST::SUSYObjDef_xAOD::m_trig2017combination_diPhoton
std::string m_trig2017combination_diPhoton
Definition: SUSYObjDef_xAOD.h:957
IJetModifier.h
IJetDecorator.h
ST::SUSYObjDef_xAOD::m_mu_iso_support
std::vector< std::string > m_mu_iso_support
Definition: SUSYObjDef_xAOD.h:629
PATCore::ParticleDataType::Data
@ Data
Definition: PATCoreEnums.h:22
ITauEfficiencyCorrectionsTool.h
ST::SUSYObjDef_xAOD::m_fatJetUncVars
std::string m_fatJetUncVars
Definition: SUSYObjDef_xAOD.h:543
ST::SUSYObjDef_xAOD::m_orDoBjet
bool m_orDoBjet
Definition: SUSYObjDef_xAOD.h:763
ST::SUSYObjDef_xAOD::m_eleEffMapFilePath
std::string m_eleEffMapFilePath
Definition: SUSYObjDef_xAOD.h:695
ST::SUSYObjDef_xAOD::m_orDoPhoton
bool m_orDoPhoton
Definition: SUSYObjDef_xAOD.h:758
ST::SUSYObjDef_xAOD::m_jetJvtMomentTool
asg::AnaToolHandle< JetVertexTaggerTool > m_jetJvtMomentTool
Definition: SUSYObjDef_xAOD.h:837
ST::SUSYObjDef_xAOD::m_eleIdBaseline
std::string m_eleIdBaseline
Definition: SUSYObjDef_xAOD.h:641
IJetCalibrationTool.h
PATCore::ParticleDataType::DataType
DataType
Definition: PATCoreEnums.h:22
ST::SUSYObjDef_xAOD::m_orToolbox
ORUtils::ToolBox m_orToolbox
Definition: SUSYObjDef_xAOD.h:980
ST::SUSYObjDef_xAOD::m_tauConfigPath
std::string m_tauConfigPath
Definition: SUSYObjDef_xAOD.h:727
TauAnalysisTools::ELEIDRNNLOOSE
@ ELEIDRNNLOOSE
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:33
ST::SUSYObjDef_xAOD::m_muonLRTORTool
asg::AnaToolHandle< CP::IMuonLRTOverlapRemovalTool > m_muonLRTORTool
Definition: SUSYObjDef_xAOD.h:877
ORUtils::ToolBox::setGlobalProperty
StatusCode setGlobalProperty(const std::string &property, const T &value)
Apply a global property to all tools.
Definition: ToolBox.h:104
ST::SUSYObjDef_xAOD::m_JvtPtMax
double m_JvtPtMax
Definition: SUSYObjDef_xAOD.h:740
IEGammaAmbiguityTool.h
ST::SUSYObjDef_xAOD::m_btagEffTool_trkJet
asg::AnaToolHandle< IBTaggingEfficiencyTool > m_btagEffTool_trkJet
Definition: SUSYObjDef_xAOD.h:925
ORUtils::ToolBox::muJetORT
OverlapHandle_t muJetORT
Definition: ToolBox.h:72
ST::SUSYObjDef_xAOD::m_slices
std::map< std::string, bool > m_slices
Definition: SUSYObjDef_xAOD.h:801
ST::SUSYObjDef_xAOD::m_orLinkOverlapObjects
bool m_orLinkOverlapObjects
Definition: SUSYObjDef_xAOD.h:785
IMuonSelectionTool.h
PATCore::ParticleDataType::Full
@ Full
Definition: PATCoreEnums.h:22
ST::SUSYObjDef_xAOD::m_eleEffMapFilePathRun2
std::string m_eleEffMapFilePathRun2
Definition: SUSYObjDef_xAOD.h:696
ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_isoHighPt
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_isoHighPt
Definition: SUSYObjDef_xAOD.h:885
ST::SUSYObjDef_xAOD::m_orBoostedMuonMaxConeSize
double m_orBoostedMuonMaxConeSize
Definition: SUSYObjDef_xAOD.h:774
ST::SUSYObjDef_xAOD::m_photonEfficiencySFTool
asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > m_photonEfficiencySFTool
Definition: SUSYObjDef_xAOD.h:902
ORUtils::ToolBox::eleJetORT
OverlapHandle_t eleJetORT
Definition: ToolBox.h:71
ST::SUSYObjDef_xAOD::m_tau_trig_support
std::map< std::string, std::string > m_tau_trig_support
Definition: SUSYObjDef_xAOD.h:638
ST::SUSYObjDef_xAOD::m_trigGlobalEffCorrTool_diLep
asg::AnaToolHandle< ITrigGlobalEfficiencyCorrectionTool > m_trigGlobalEffCorrTool_diLep
Definition: SUSYObjDef_xAOD.h:944
ST::SUSYObjDef_xAOD::m_WZTaggerCalibArea
std::string m_WZTaggerCalibArea
Definition: SUSYObjDef_xAOD.h:554
IMuonEfficiencyScaleFactors.h
ST::SUSYObjDef_xAOD::m_prwLcalcFiles
std::vector< std::string > m_prwLcalcFiles
Definition: SUSYObjDef_xAOD.h:611
ST::SUSYObjDef_xAOD::m_prwDataSF_DW
double m_prwDataSF_DW
Definition: SUSYObjDef_xAOD.h:620
IBTaggingEfficiencyTool.h
ST::SUSYObjDef_xAOD::m_orDoBoostedMuon
bool m_orDoBoostedMuon
Definition: SUSYObjDef_xAOD.h:771
IEgammaCalibrationAndSmearingTool.h
ST::SUSYObjDef_xAOD::m_el_id_support
std::vector< std::string > m_el_id_support
Definition: SUSYObjDef_xAOD.h:624
ITauTruthMatchingTool.h
ST::SUSYObjDef_xAOD::m_defaultJets
std::string m_defaultJets
Definition: SUSYObjDef_xAOD.h:809
ST::SUSYObjDef_xAOD::m_useBtagging
bool m_useBtagging
Definition: SUSYObjDef_xAOD.h:533
ST::SUSYObjDef_xAOD::m_ph_id_support
std::vector< std::string > m_ph_id_support
Definition: SUSYObjDef_xAOD.h:625
IAsgElectronLikelihoodTool.h
ST::SUSYObjDef_xAOD::SUSYToolsInit
StatusCode SUSYToolsInit()
Definition: SUSYToolsInit.cxx:113
ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_trigEff_mixLep
std::vector< asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > > m_elecEfficiencySFTool_trigEff_mixLep
Definition: SUSYObjDef_xAOD.h:889
IMatchScoringTool.h
ST::SUSYObjDef_xAOD::m_TopTaggerCalibArea
std::string m_TopTaggerCalibArea
Definition: SUSYObjDef_xAOD.h:555
IBTaggingSelectionTool.h
IIsolationCorrectionTool.h
ST::SUSYObjDef_xAOD::m_fatJetUncConfig
std::string m_fatJetUncConfig
Definition: SUSYObjDef_xAOD.h:541
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_id
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_id
Definition: SUSYObjDef_xAOD.h:881
IPileupReweightingTool.h
ST::SUSYObjDef_xAOD::m_tauConfigReader
TEnv m_tauConfigReader
Definition: SUSYObjDef_xAOD.h:734
ST::SUSYObjDef_xAOD::m_IsoCloseByORpassLabel
std::string m_IsoCloseByORpassLabel
Definition: SUSYObjDef_xAOD.h:797
ST::SUSYObjDef_xAOD::m_tauSmearingToolRecommendationTag
std::string m_tauSmearingToolRecommendationTag
Definition: SUSYObjDef_xAOD.h:730
ST::SUSYObjDef_xAOD::m_jetUncertaintiesConfig
std::string m_jetUncertaintiesConfig
Prefix for trigger matchiing container name.
Definition: SUSYObjDef_xAOD.h:527
ST::SUSYObjDef_xAOD::m_jetCalibTool
asg::AnaToolHandle< IJetCalibrationTool > m_jetCalibTool
Definition: SUSYObjDef_xAOD.h:827
ST::SUSYObjDef_xAOD::m_mu_iso_fallback
std::map< std::string, std::string > m_mu_iso_fallback
Definition: SUSYObjDef_xAOD.h:633
ST::SUSYObjDef_xAOD::m_photonEfficiencySFTool_trigEff_AsymDiphoton
std::vector< asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > > m_photonEfficiencySFTool_trigEff_AsymDiphoton
Definition: SUSYObjDef_xAOD.h:907
ST::SUSYObjDef_xAOD::m_trigNToys_multiLep
int m_trigNToys_multiLep
Definition: SUSYObjDef_xAOD.h:946
ST::SUSYObjDef_xAOD::m_BtagTagger
std::string m_BtagTagger
Definition: SUSYObjDef_xAOD.h:673
lumiFormat.i
int i
Definition: lumiFormat.py:85
ST::SUSYObjDef_xAOD::m_photonEfficiencySFTool_trigSF_AsymDiphoton
std::vector< asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > > m_photonEfficiencySFTool_trigSF_AsymDiphoton
Definition: SUSYObjDef_xAOD.h:906
SystematicRegistry.h
ST::SUSYObjDef_xAOD::m_orDoEleJet
bool m_orDoEleJet
Definition: SUSYObjDef_xAOD.h:759
ST::SUSYObjDef_xAOD::m_orPhotonFavoured
bool m_orPhotonFavoured
Definition: SUSYObjDef_xAOD.h:783
ST::SUSYObjDef_xAOD::m_jesCalibArea
std::string m_jesCalibArea
Definition: SUSYObjDef_xAOD.h:864
JSSWTopTaggerDNN.h
ORUtils::ToolBox::jetFatJetORT
OverlapHandle_t jetFatJetORT
Definition: ToolBox.h:80
ST::SUSYObjDef_xAOD::m_muonIsolationSFTool
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonIsolationSFTool
Definition: SUSYObjDef_xAOD.h:873
ST::SUSYObjDef_xAOD::m_jesCalibSeq
std::string m_jesCalibSeq
Definition: SUSYObjDef_xAOD.h:861
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
ST::SUSYObjDef_xAOD::m_muEta
double m_muEta
Definition: SUSYObjDef_xAOD.h:704
ST::SUSYObjDef_xAOD::m_jetUncertaintiesTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_jetUncertaintiesTool
Definition: SUSYObjDef_xAOD.h:829
CONFIG_EG_EFF_TOOL_KEY
#define CONFIG_EG_EFF_TOOL_KEY(TOOLHANDLE, TOOLNAME, KEYNAME, KEY, MAP)
Definition: SUSYToolsInit.cxx:100
ORUtils::ORFlags::bJetLabel
std::string bJetLabel
B-jet decoration.
Definition: OverlapRemovalInit.h:43
ST::SUSYObjDef_xAOD::m_orApplyRelPt
bool m_orApplyRelPt
Definition: SUSYObjDef_xAOD.h:775
ST::SUSYObjDef_xAOD::m_muTriggerSFCalibFilename
std::string m_muTriggerSFCalibFilename
Definition: SUSYObjDef_xAOD.h:671
ST::SUSYObjDef_xAOD::m_muonCalibTool
asg::AnaToolHandle< CP::IMuonCalibrationAndSmearingTool > m_muonCalibTool
Definition: SUSYObjDef_xAOD.h:869
ST::SUSYObjDef_xAOD::m_ZTaggerTool
asg::AnaToolHandle< SmoothedWZTagger > m_ZTaggerTool
Definition: SUSYObjDef_xAOD.h:845
ST::SUSYObjDef_xAOD::m_orDoMuBjet
bool m_orDoMuBjet
Definition: SUSYObjDef_xAOD.h:765
PATCoreEnums.h
ST::SUSYObjDef_xAOD::m_orRemoveCaloMuons
bool m_orRemoveCaloMuons
Definition: SUSYObjDef_xAOD.h:780
ST::SUSYObjDef_xAOD::m_trig2017combination_multiLep
std::string m_trig2017combination_multiLep
Definition: SUSYObjDef_xAOD.h:949
ST::SUSYObjDef_xAOD::m_prwDataSF
double m_prwDataSF
Definition: SUSYObjDef_xAOD.h:618
IMuonTriggerScaleFactors.h
ORUtils::ToolBox::initialize
StatusCode initialize()
Attach and initialize all tools.
Definition: ToolBox.cxx:35
ST::SUSYObjDef_xAOD::m_jetUncertaintiesMCType
std::string m_jetUncertaintiesMCType
Definition: SUSYObjDef_xAOD.h:530
AAH::setProperty
static StatusCode setProperty(const GaudiHandleBase &toolHandle, const std::string &property, const int &value, bool override=true)
Definition: AthAnalysisHelper.h:401
ST::SUSYObjDef_xAOD::m_jetUncertaintiesAnalysisFile
std::string m_jetUncertaintiesAnalysisFile
Definition: SUSYObjDef_xAOD.h:528
JetTruthLabelingTool.h
ST::SUSYObjDef_xAOD::m_legsPerTool_ph
std::map< std::string, std::string > m_legsPerTool_ph
Definition: SUSYObjDef_xAOD.h:825
ST::SUSYObjDef_xAOD::m_WconfigReader
TEnv m_WconfigReader
Definition: SUSYObjDef_xAOD.h:545
ST::SUSYObjDef_xAOD::m_jetfJvtSelectionTool
asg::AnaToolHandle< IAsgSelectionTool > m_jetfJvtSelectionTool
Definition: SUSYObjDef_xAOD.h:841
ST::SUSYObjDef_xAOD::m_photonSelIsEM
asg::AnaToolHandle< IAsgPhotonIsEMSelector > m_photonSelIsEM
Definition: SUSYObjDef_xAOD.h:899
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
ST::SUSYObjDef_xAOD::m_trig2016combination_diLep
std::string m_trig2016combination_diLep
Definition: SUSYObjDef_xAOD.h:940
ST::SUSYObjDef_xAOD::m_jetUncertaintiesPDsmearing
bool m_jetUncertaintiesPDsmearing
Definition: SUSYObjDef_xAOD.h:531
ST::SUSYObjDef_xAOD::m_metSystTool
asg::AnaToolHandle< IMETSystematicsTool > m_metSystTool
Definition: SUSYObjDef_xAOD.h:929
ST::SUSYObjDef_xAOD::m_BtagMinPt_trkJet
double m_BtagMinPt_trkJet
Definition: SUSYObjDef_xAOD.h:682
ST::SUSYObjDef_xAOD::m_orDoElEl
bool m_orDoElEl
Definition: SUSYObjDef_xAOD.h:760
ST::SUSYObjDef_xAOD::m_jetPileupLabelingTool
asg::AnaToolHandle< JetPileupLabelingTool > m_jetPileupLabelingTool
Definition: SUSYObjDef_xAOD.h:836
ST::SUSYObjDef_xAOD::m_trigMatchingPrefix
std::string m_trigMatchingPrefix
Use composite trigger matching tool if matching was done upstream.
Definition: SUSYObjDef_xAOD.h:525
ORUtils::ToolBox::tauJetORT
OverlapHandle_t tauJetORT
Definition: ToolBox.h:75
ST::SUSYObjDef_xAOD::m_metUseGhostMuons
bool m_metUseGhostMuons
Definition: SUSYObjDef_xAOD.h:577
ST::SUSYObjDef_xAOD::m_tauSelToolBaseline
asg::AnaToolHandle< TauAnalysisTools::ITauSelectionTool > m_tauSelToolBaseline
Definition: SUSYObjDef_xAOD.h:916
ST::SUSYObjDef_xAOD::isData
bool isData() const override final
Definition: SUSYObjDef_xAOD.h:157
ST::SUSYObjDef_xAOD::m_prwDataSF_UP
double m_prwDataSF_UP
Definition: SUSYObjDef_xAOD.h:619
ST::SUSYObjDef_xAOD::m_trig2018combination_diLep
std::string m_trig2018combination_diLep
Definition: SUSYObjDef_xAOD.h:942
ST::SUSYObjDef_xAOD::m_jesConfigFat
std::string m_jesConfigFat
Definition: SUSYObjDef_xAOD.h:859
ST::SUSYObjDef_xAOD::m_muIso_WP
std::string m_muIso_WP
Definition: SUSYObjDef_xAOD.h:665
ST::SUSYObjDef_xAOD::isAtlfast
bool isAtlfast() const override final
Definition: SUSYObjDef_xAOD.h:158
ST::SUSYObjDef_xAOD::m_trig2015combination_multiLep
std::string m_trig2015combination_multiLep
Definition: SUSYObjDef_xAOD.h:947
ST::SUSYObjDef_xAOD::m_btagSelTool_trkJet
asg::AnaToolHandle< IBTaggingSelectionTool > m_btagSelTool_trkJet
Definition: SUSYObjDef_xAOD.h:926
ST::SUSYObjDef_xAOD::m_fatjetUncertaintiesTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_fatjetUncertaintiesTool
Definition: SUSYObjDef_xAOD.h:831
TauAnalysisTools::ELEIDRNNMEDIUM
@ ELEIDRNNMEDIUM
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:34
ORUtils::ORFlags::doTaus
bool doTaus
Definition: OverlapRemovalInit.h:62
xAOD::JetInput::Type
Type
Definition: JetContainerInfo.h:54
IElectronLRTOverlapRemovalTool.h
xAOD::JetInput::EMPFlow
@ EMPFlow
Definition: JetContainerInfo.h:64
ST::SUSYObjDef_xAOD::m_runDepPrescaleWeightPRW
bool m_runDepPrescaleWeightPRW
Definition: SUSYObjDef_xAOD.h:621
IAsgDeadHVCellRemovalTool.h
ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_trigEff_singleLep
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_trigEff_singleLep
Definition: SUSYObjDef_xAOD.h:883
ST::SUSYObjDef_xAOD::m_orDoElMu
bool m_orDoElMu
Definition: SUSYObjDef_xAOD.h:761
ST::SUSYObjDef_xAOD::m_photonBaselineIso_WP
std::string m_photonBaselineIso_WP
Definition: SUSYObjDef_xAOD.h:661
ST::SUSYObjDef_xAOD::m_eleId
std::string m_eleId
Definition: SUSYObjDef_xAOD.h:640
ST::SUSYObjDef_xAOD::m_muIdBaseline
int m_muIdBaseline
Definition: SUSYObjDef_xAOD.h:647
ST::SUSYObjDef_xAOD::m_eleIso_WP
std::string m_eleIso_WP
Definition: SUSYObjDef_xAOD.h:652
ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_iso
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_iso
Definition: SUSYObjDef_xAOD.h:884
ST::SUSYObjDef_xAOD::m_prwConfFiles
std::vector< std::string > m_prwConfFiles
Definition: SUSYObjDef_xAOD.h:610
ST::SUSYObjDef_xAOD::m_metJetSelection
std::string m_metJetSelection
Definition: SUSYObjDef_xAOD.h:805
ORUtils::ToolBox::phoMuORT
OverlapHandle_t phoMuORT
Definition: ToolBox.h:77
CP::IReentrantSystematicsTool::recommendedSystematics
virtual SystematicSet recommendedSystematics() const =0
the list of all systematics this tool recommends to use
ST::SUSYObjDef_xAOD::m_tauTruthMatch
asg::AnaToolHandle< TauAnalysisTools::ITauTruthMatchingTool > m_tauTruthMatch
Definition: SUSYObjDef_xAOD.h:918
LikeEnum::Tight
@ Tight
Definition: LikelihoodEnums.h:15
ST::SUSYObjDef_xAOD::m_fJvtPtMax
double m_fJvtPtMax
Definition: SUSYObjDef_xAOD.h:749
ST::SUSYObjDef_xAOD::EG_WP
std::string EG_WP(const std::string &wp) const
Definition: SUSYObjDef_xAOD.cxx:1225
ORUtils::ToolBox::phoEleORT
OverlapHandle_t phoEleORT
Definition: ToolBox.h:76
ST::SUSYObjDef_xAOD::check_isOption
bool check_isOption(const std::string &wp, const std::vector< std::string > &list) const
Definition: SUSYObjDef_xAOD.cxx:1213
ST::SUSYObjDef_xAOD::m_eleForceFullSimCalib
bool m_eleForceFullSimCalib
Definition: SUSYObjDef_xAOD.h:698
ST::SUSYObjDef_xAOD::m_elecSelLikelihoodBaseline
asg::AnaToolHandle< IAsgElectronLikelihoodTool > m_elecSelLikelihoodBaseline
Definition: SUSYObjDef_xAOD.h:898
ST::SUSYObjDef_xAOD::m_subtool_init
bool m_subtool_init
Definition: SUSYObjDef_xAOD.h:562
ST::SUSYObjDef_xAOD::m_trigConfTool
asg::AnaToolHandle< TrigConf::ITrigConfigTool > m_trigConfTool
Definition: SUSYObjDef_xAOD.h:962
PathResolver.h
ST::SUSYObjDef_xAOD::m_EigenvectorReductionLight
std::string m_EigenvectorReductionLight
Definition: SUSYObjDef_xAOD.h:679
OverlapRemovalInit.h
Defines helper functions for initializing the OR tools in C++.
ST::SUSYObjDef_xAOD::m_ToptagConfig
std::string m_ToptagConfig
Definition: SUSYObjDef_xAOD.h:553
ST::SUSYObjDef_xAOD::m_tauEffTool
asg::AnaToolHandle< TauAnalysisTools::ITauEfficiencyCorrectionsTool > m_tauEffTool
Definition: SUSYObjDef_xAOD.h:919
TauAnalysisTools::ELEIDRNNTIGHT
@ ELEIDRNNTIGHT
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:35
IMuonLRTOverlapRemovalTool.h
ST::SUSYObjDef_xAOD::m_muonSelectionToolBaseline
asg::AnaToolHandle< CP::IMuonSelectionTool > m_muonSelectionToolBaseline
Definition: SUSYObjDef_xAOD.h:868
IOverlapRemovalTool.h
ST::SUSYObjDef_xAOD::m_trkMETsyst
bool m_trkMETsyst
Definition: SUSYObjDef_xAOD.h:583
ST::SUSYObjDef_xAOD::m_caloMETsyst
bool m_caloMETsyst
Definition: SUSYObjDef_xAOD.h:584
ST::SUSYObjDef_xAOD::m_JMScalib
bool m_JMScalib
Definition: SUSYObjDef_xAOD.h:754
ST::SUSYObjDef_xAOD::m_muz0
double m_muz0
Definition: SUSYObjDef_xAOD.h:706
ST::SUSYObjDef_xAOD::m_JvtWP
std::string m_JvtWP
Definition: SUSYObjDef_xAOD.h:739
IIsolationSelectionTool.h
ST::SUSYObjDef_xAOD::m_useBtagging_trkJet
bool m_useBtagging_trkJet
Definition: SUSYObjDef_xAOD.h:534
ST::SUSYObjDef_xAOD::m_doFwdJVT
bool m_doFwdJVT
Definition: SUSYObjDef_xAOD.h:747
ST::SUSYObjDef_xAOD::m_isoCloseByTool
asg::AnaToolHandle< CP::IIsolationCloseByCorrectionTool > m_isoCloseByTool
Definition: SUSYObjDef_xAOD.h:973
ICPJetUncertaintiesTool.h
ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_trig_singleLep
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_trig_singleLep
Definition: SUSYObjDef_xAOD.h:882
ST::SUSYObjDef_xAOD::m_trig2018combination_multiLep
std::string m_trig2018combination_multiLep
Definition: SUSYObjDef_xAOD.h:950
ST::SUSYObjDef_xAOD::m_btagSelTool_OR
asg::AnaToolHandle< IBTaggingSelectionTool > m_btagSelTool_OR
Definition: SUSYObjDef_xAOD.h:924
IMuonCalibrationAndSmearingTool.h
checkTriggerxAOD.found
found
Definition: checkTriggerxAOD.py:328
ST::SUSYObjDef_xAOD::m_muonSelectionHighPtTool
asg::AnaToolHandle< CP::IMuonSelectionTool > m_muonSelectionHighPtTool
Definition: SUSYObjDef_xAOD.h:867
ST::SUSYObjDef_xAOD::m_photonId
std::string m_photonId
Definition: SUSYObjDef_xAOD.h:648
item
Definition: ItemListSvc.h:43
ST::SUSYObjDef_xAOD::m_fJvtConfigRun3
std::string m_fJvtConfigRun3
Definition: SUSYObjDef_xAOD.h:752
ST::SUSYObjDef_xAOD::m_ApplyMVATESQualityCheck
bool m_ApplyMVATESQualityCheck
Definition: SUSYObjDef_xAOD.h:733
ST::SUSYObjDef_xAOD::m_BtagWP_trkJet
std::string m_BtagWP_trkJet
Definition: SUSYObjDef_xAOD.h:680
SmoothedWZTagger.h
ST::SUSYObjDef_xAOD::m_fatjetUncertaintiesPDSmearTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_fatjetUncertaintiesPDSmearTool
Definition: SUSYObjDef_xAOD.h:832
ST::SUSYObjDef_xAOD::m_fatjetFFSmearingTool
asg::AnaToolHandle< ICPJetCorrectionTool > m_fatjetFFSmearingTool
Definition: SUSYObjDef_xAOD.h:833
ORUtils::ORFlags::linkOverlapObjects
bool linkOverlapObjects
Enable overlap object ElementLinks.
Definition: OverlapRemovalInit.h:53
ST::SUSYObjDef_xAOD::m_dataSource
int m_dataSource
Definition: SUSYObjDef_xAOD.h:515
ITauToolBase.h
IInclusiveTrackFilterTool.h
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
ST::SUSYObjDef_xAOD::m_EleFatJetDR
double m_EleFatJetDR
Definition: SUSYObjDef_xAOD.h:788
PathResolverFindCalibFile
std::string PathResolverFindCalibFile(const std::string &logical_file_name)
Definition: PathResolver.cxx:431
AthAnalysisHelper.h
ST::SUSYObjDef_xAOD::m_btagSelTool
asg::AnaToolHandle< IBTaggingSelectionTool > m_btagSelTool
Definition: SUSYObjDef_xAOD.h:923
ST::SUSYObjDef_xAOD::m_orDoTauBjet
bool m_orDoTauBjet
Definition: SUSYObjDef_xAOD.h:766
ST::SUSYObjDef_xAOD::m_jetNNJvtSelectionTool
asg::AnaToolHandle< IAsgSelectionTool > m_jetNNJvtSelectionTool
Definition: SUSYObjDef_xAOD.h:839
python.AthDsoLogger.fname
string fname
Definition: AthDsoLogger.py:67
ST::SUSYObjDef_xAOD::m_orMuJetTrkPtRatio
double m_orMuJetTrkPtRatio
Definition: SUSYObjDef_xAOD.h:777
ST::SUSYObjDef_xAOD::m_muonTriggerSFTool
asg::AnaToolHandle< CP::IMuonTriggerScaleFactors > m_muonTriggerSFTool
Definition: SUSYObjDef_xAOD.h:875
ORUtils::ToolBox::masterTool
MasterHandle_t masterTool
Master overlap removal tool handle.
Definition: ToolBox.h:64
IAsgElectronIsEMSelector.h
ST::SUSYObjDef_xAOD::getElSFkeys
std::vector< std::string > getElSFkeys(const std::string &mapFile) const
Definition: SUSYObjDef_xAOD.cxx:1237
ST::SUSYObjDef_xAOD::m_btagEffTool
asg::AnaToolHandle< IBTaggingEfficiencyTool > m_btagEffTool
Definition: SUSYObjDef_xAOD.h:922
IMatchingTool.h
ST::SUSYObjDef_xAOD::m_fatJets
std::string m_fatJets
Definition: SUSYObjDef_xAOD.h:811
ST::SUSYObjDef_xAOD::m_muCalibrationMode
int m_muCalibrationMode
Definition: SUSYObjDef_xAOD.h:713
asg::AnaToolHandle::getHandle
const ToolHandle< T > & getHandle() const noexcept
the tool handle we wrap
ST::SUSYObjDef_xAOD::m_softTermParam
int m_softTermParam
Definition: SUSYObjDef_xAOD.h:587
ST::SUSYObjDef_xAOD::m_orBoostedElectronMaxConeSize
double m_orBoostedElectronMaxConeSize
Definition: SUSYObjDef_xAOD.h:770
ST::SUSYObjDef_xAOD::m_eleBaselineIso_WP
std::string m_eleBaselineIso_WP
Definition: SUSYObjDef_xAOD.h:644
ST::SUSYObjDef_xAOD::m_BtagTagger_trkJet
std::string m_BtagTagger_trkJet
Definition: SUSYObjDef_xAOD.h:681
ST::SUSYObjDef_xAOD::m_tauId
std::string m_tauId
Definition: SUSYObjDef_xAOD.h:650
python.CaloAddPedShiftConfig.int
int
Definition: CaloAddPedShiftConfig.py:45
ST::SUSYObjDef_xAOD::m_EG_corrModel
std::string m_EG_corrModel
Definition: SUSYObjDef_xAOD.h:818
LikeEnum::Medium
@ Medium
Definition: LikelihoodEnums.h:14
ST::SUSYObjDef_xAOD::m_JetFatJetDR
double m_JetFatJetDR
Definition: SUSYObjDef_xAOD.h:789
ST::SUSYObjDef_xAOD::m_JetTruthLabelName
std::string m_JetTruthLabelName
Definition: SUSYObjDef_xAOD.h:559
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
ST::SUSYObjDef_xAOD::m_orDoBoostedElectron
bool m_orDoBoostedElectron
Definition: SUSYObjDef_xAOD.h:767
ST::SUSYObjDef_xAOD::m_photonSelIsEMBaseline
asg::AnaToolHandle< IAsgPhotonIsEMSelector > m_photonSelIsEMBaseline
Definition: SUSYObjDef_xAOD.h:900
ORUtils::ORFlags
A struct of global config options used to simplify the config helper interface.
Definition: OverlapRemovalInit.h:29
ST::SUSYObjDef_xAOD::m_metVeryGreedyPhotons
bool m_metVeryGreedyPhotons
Definition: SUSYObjDef_xAOD.h:580
ST::SUSYObjDef_xAOD::m_isRun3
bool m_isRun3
Definition: SUSYObjDef_xAOD.h:802
ST::SUSYObjDef_xAOD::m_trigDecTool
asg::AnaToolHandle< Trig::TrigDecisionTool > m_trigDecTool
Definition: SUSYObjDef_xAOD.h:963
ST::SUSYObjDef_xAOD::m_metsysConfigPrefix
std::string m_metsysConfigPrefix
Definition: SUSYObjDef_xAOD.h:581
ST::SUSYObjDef_xAOD::m_defaultTrackJets
std::string m_defaultTrackJets
Definition: SUSYObjDef_xAOD.h:810
FullCPAlgorithmsTest_CA.inputfile
dictionary inputfile
Definition: FullCPAlgorithmsTest_CA.py:62
ST::SUSYObjDef_xAOD::m_jesCalibSeqFat
std::string m_jesCalibSeqFat
Definition: SUSYObjDef_xAOD.h:863
IJetUpdateJvt.h
ST::SUSYObjDef_xAOD::m_treatPUJets
bool m_treatPUJets
Definition: SUSYObjDef_xAOD.h:588
ST::SUSYObjDef_xAOD::m_jesConfig
std::string m_jesConfig
Definition: SUSYObjDef_xAOD.h:855
ST::SUSYObjDef_xAOD::m_tauConfigPathBaseline
std::string m_tauConfigPathBaseline
Definition: SUSYObjDef_xAOD.h:728
ST::SUSYObjDef_xAOD::m_jetFatCalibTool
asg::AnaToolHandle< IJetCalibrationTool > m_jetFatCalibTool
Definition: SUSYObjDef_xAOD.h:828
ST::SUSYObjDef_xAOD::m_electronTriggerSFStringSingle
std::string m_electronTriggerSFStringSingle
Definition: SUSYObjDef_xAOD.h:636
ST::SUSYObjDef_xAOD::m_jetNNJvtEfficiencyTool
asg::AnaToolHandle< CP::IJvtEfficiencyTool > m_jetNNJvtEfficiencyTool
Definition: SUSYObjDef_xAOD.h:840
IWeightTool.h
ORUtils::ORFlags::masterName
std::string masterName
Master tool name.
Definition: OverlapRemovalInit.h:36
ST::SUSYObjDef_xAOD::m_trig2017combination_diLep
std::string m_trig2017combination_diLep
Definition: SUSYObjDef_xAOD.h:941
ST::SUSYObjDef_xAOD::m_trigDRScoringTool
asg::AnaToolHandle< Trig::IMatchScoringTool > m_trigDRScoringTool
Definition: SUSYObjDef_xAOD.h:966
ST::SUSYObjDef_xAOD::m_trig2015combination_diLep
std::string m_trig2015combination_diLep
Definition: SUSYObjDef_xAOD.h:939
ST::SUSYObjDef_xAOD::m_jetTruthLabelingTool
asg::AnaToolHandle< JetTruthLabelingTool > m_jetTruthLabelingTool
Definition: SUSYObjDef_xAOD.h:847
ST::SUSYObjDef_xAOD::m_eleLRT_strat
int m_eleLRT_strat
Definition: SUSYObjDef_xAOD.h:657
ORUtils::ToolBox::phoJetORT
OverlapHandle_t phoJetORT
Definition: ToolBox.h:78
ST::SUSYObjDef_xAOD::m_ZDecorName
std::string m_ZDecorName
Definition: SUSYObjDef_xAOD.h:549
ST::SUSYObjDef_xAOD::m_metSignif
asg::AnaToolHandle< IMETSignificance > m_metSignif
Definition: SUSYObjDef_xAOD.h:930
ST::SUSYObjDef_xAOD::m_eleConfig
std::string m_eleConfig
Definition: SUSYObjDef_xAOD.h:642
ORUtils::ORFlags::doMuons
bool doMuons
Definition: OverlapRemovalInit.h:60
TauAnalysisTools::JETIDRNNVERYLOOSE
@ JETIDRNNVERYLOOSE
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:19
ST::SUSYObjDef_xAOD::m_muHighPtExtraSmear
bool m_muHighPtExtraSmear
Definition: SUSYObjDef_xAOD.h:668
ST::SUSYObjDef_xAOD::m_photonTriggerName
std::string m_photonTriggerName
Definition: SUSYObjDef_xAOD.h:663
ST::SUSYObjDef_xAOD::m_EigenvectorReductionB
std::string m_EigenvectorReductionB
Definition: SUSYObjDef_xAOD.h:677
ST::SUSYObjDef_xAOD::m_orBoostedElectronC2
double m_orBoostedElectronC2
Definition: SUSYObjDef_xAOD.h:769
TauAnalysisTools::JETIDNONEUNCONFIGURED
@ JETIDNONEUNCONFIGURED
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:13
ST::SUSYObjDef_xAOD::m_orInputLabel
std::string m_orInputLabel
Definition: SUSYObjDef_xAOD.h:782
ST::SUSYObjDef_xAOD::m_ZtagConfig
std::string m_ZtagConfig
Definition: SUSYObjDef_xAOD.h:552
ORUtils::ORFlags::doJets
bool doJets
Definition: OverlapRemovalInit.h:61
ST::SUSYObjDef_xAOD::m_mud0sig
double m_mud0sig
Definition: SUSYObjDef_xAOD.h:705
ST::SUSYObjDef_xAOD::m_muIsoHighPt_WP
std::string m_muIsoHighPt_WP
Definition: SUSYObjDef_xAOD.h:666
ST::SUSYObjDef_xAOD::m_muonHighPtIsolationSFTool
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonHighPtIsolationSFTool
Definition: SUSYObjDef_xAOD.h:874
ST::SUSYObjDef_xAOD::m_photonIdBaseline
std::string m_photonIdBaseline
Definition: SUSYObjDef_xAOD.h:649
CONFIG_EG_EFF_TOOL
#define CONFIG_EG_EFF_TOOL(TOOLHANDLE, TOOLNAME, CORRFILE)
Definition: SUSYToolsInit.cxx:88
ST::SUSYObjDef_xAOD::m_metGreedyPhotons
bool m_metGreedyPhotons
Definition: SUSYObjDef_xAOD.h:579
ST::SUSYObjDef_xAOD::m_muonTrigSFTools
ToolHandleArray< CP::IMuonTriggerScaleFactors > m_muonTrigSFTools
Definition: SUSYObjDef_xAOD.h:876
ST::SUSYObjDef_xAOD::m_jetCleaningTool
asg::AnaToolHandle< IJetSelector > m_jetCleaningTool
Definition: SUSYObjDef_xAOD.h:834
asg::AnaToolHandle::empty
bool empty() const
whether this ToolHandle is completely empty, i.e.
ST::SUSYObjDef_xAOD::m_orDoMuonJetGhostAssociation
bool m_orDoMuonJetGhostAssociation
Definition: SUSYObjDef_xAOD.h:779
ST::SUSYObjDef_xAOD::m_isoCorrTool
asg::AnaToolHandle< CP::IIsolationCorrectionTool > m_isoCorrTool
Definition: SUSYObjDef_xAOD.h:968
ST::SUSYObjDef_xAOD::m_defaultTruthJets
std::string m_defaultTruthJets
Definition: SUSYObjDef_xAOD.h:812
ST::SUSYObjDef_xAOD::m_tauDoTTM
bool m_tauDoTTM
Definition: SUSYObjDef_xAOD.h:729
ST::SUSYObjDef_xAOD::m_elecTrigSFTools
ToolHandleArray< IAsgElectronEfficiencyCorrectionTool > m_elecTrigSFTools
Definition: SUSYObjDef_xAOD.h:890
ST::SUSYObjDef_xAOD::m_tauTrigEffTool
std::vector< asg::AnaToolHandle< TauAnalysisTools::ITauEfficiencyCorrectionsTool > > m_tauTrigEffTool
Definition: SUSYObjDef_xAOD.h:920
ST::SUSYObjDef_xAOD::m_mcCampaign
std::string m_mcCampaign
Definition: SUSYObjDef_xAOD.h:597
ST::SUSYObjDef_xAOD::m_TopDecorName
std::string m_TopDecorName
Definition: SUSYObjDef_xAOD.h:550
ST::SUSYObjDef_xAOD::m_orDoMuonJet
bool m_orDoMuonJet
Definition: SUSYObjDef_xAOD.h:762
ST::SUSYObjDef_xAOD::m_upstreamTriggerMatching
bool m_upstreamTriggerMatching
Definition: SUSYObjDef_xAOD.h:524
ITauSmearingTool.h
IEfficiencyScaleFactorTool.h
ST::SUSYObjDef_xAOD::m_LRTuncTool
asg::AnaToolHandle< InDet::IInclusiveTrackFilterTool > m_LRTuncTool
Definition: SUSYObjDef_xAOD.h:977
ST::SUSYObjDef_xAOD::m_WtagConfig
std::string m_WtagConfig
Definition: SUSYObjDef_xAOD.h:551
ST::SUSYObjDef_xAOD::m_useTRUTH3
bool m_useTRUTH3
Definition: SUSYObjDef_xAOD.h:799
ST::SUSYObjDef_xAOD::m_EG_corrFNList
std::string m_EG_corrFNList
Definition: SUSYObjDef_xAOD.h:819
ST::SUSYObjDef_xAOD::m_photonIsolationSFTool
asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > m_photonIsolationSFTool
Definition: SUSYObjDef_xAOD.h:903
ST::SUSYObjDef_xAOD::m_muonSelectionTool
asg::AnaToolHandle< CP::IMuonSelectionTool > m_muonSelectionTool
Definition: SUSYObjDef_xAOD.h:866
ST::SUSYObjDef_xAOD::m_useSigLepForIsoCloseByOR
bool m_useSigLepForIsoCloseByOR
Definition: SUSYObjDef_xAOD.h:796
ST::SUSYObjDef_xAOD::m_egammaAmbiguityTool
asg::AnaToolHandle< IEGammaAmbiguityTool > m_egammaAmbiguityTool
Definition: SUSYObjDef_xAOD.h:911
ST::SUSYObjDef_xAOD::m_TopconfigReader
TEnv m_TopconfigReader
Definition: SUSYObjDef_xAOD.h:547
SystematicsUtil.h
ANA_MSG_DEBUG
#define ANA_MSG_DEBUG(xmsg)
Macro printing debug messages.
Definition: Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:288
ST::SUSYObjDef_xAOD::m_trig2015combination_diPhoton
std::string m_trig2015combination_diPhoton
Definition: SUSYObjDef_xAOD.h:955
ST::SUSYObjDef_xAOD::m_isoTool
asg::AnaToolHandle< CP::IIsolationSelectionTool > m_isoTool
Definition: SUSYObjDef_xAOD.h:969
ST::SUSYObjDef_xAOD::m_JvtConfigRun3
std::string m_JvtConfigRun3
Definition: SUSYObjDef_xAOD.h:742
ST::SUSYObjDef_xAOD::m_pmgSHnjetWeighter
asg::AnaToolHandle< IWeightTool > m_pmgSHnjetWeighter
Definition: SUSYObjDef_xAOD.h:982