ATLAS Offline Software
SUSYObjDef_xAOD.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // Local include(s):
7 
8 // For making the systematics list and looping through it
11 
12 #ifndef XAOD_STANDALONE // For now metadata is Athena-only
14 #endif
15 
16 // Need path resolver for initialize()
18 
20 
21 
22 // Including all the abstract interfaces - for systematics functions
25 
32 
44 
50 
56 
58 //disable #include "IsolationSelection/IIsolationLowPtPLVTool.h"
61 
62 #include "METInterface/IMETMaker.h"
65 
70 // Required to use some functions (see header explanation)
72 
79 
81 
82 // For reading metadata
84 
85 // For configuration -- TEnv uses THashList
86 #include "THashList.h"
87 
88 // system includes
89 #include <fstream>
90 #include <regex>
91 
92 namespace ST {
93 
94 using namespace std;
95 
96 using namespace Trig;
97 using namespace TrigConf;
98 using namespace xAOD;
99 
100 
102  : asg::AsgMetadataTool( name ),
103  m_dataSource(Undefined),
104  m_jetInputType(xAOD::JetInput::Uncategorized),
105  m_force_noElId(false),
106  m_force_noMuId(false),
107  m_doTTVAsf(true),
108  m_upstreamTriggerMatching(false),
109  m_trigMatchingPrefix(""),
110  m_useBtagging(false),
111  m_useBtagging_trkJet(false),
112  m_debug(false),
113  m_strictConfigCheck(false),
114  m_badJetCut(""),
115  m_fatJetUncConfig(""),
116  m_fatJetUncVars(""),
117  m_WDecorName(""),
118  m_ZDecorName(""),
119  m_TopDecorName(""),
120  m_WtagConfig(""),
121  m_ZtagConfig(""),
122  m_ToptagConfig(""),
123  m_WZTaggerCalibArea(""),
124  m_TopTaggerCalibArea(""),
125  m_WTagUncConfig(""),
126  m_ZTagUncConfig(""),
127  m_TopTagUncConfig(""),
128  m_JetTruthLabelName(""),
129  m_tool_init(false),
130  m_subtool_init(false),
131  // set dummies for configuration
132  m_eleTerm(""),
133  m_gammaTerm(""),
134  m_tauTerm(""),
135  m_jetTerm(""),
136  m_muonTerm(""),
137  m_inputMETSuffix(""),
138  m_outMETTerm(""),
139  m_metRemoveOverlappingCaloTaggedMuons(true),
140  m_metDoSetMuonJetEMScale(true),
141  m_metDoRemoveMuonJets(true),
142  m_metUseGhostMuons(false),
143  m_metDoMuonEloss(false),
144  m_metGreedyPhotons(false),
145  m_metVeryGreedyPhotons(false),
146  m_metsysConfigPrefix(""),
147  m_trkMETsyst(true),
148  m_caloMETsyst(false),
149  m_softTermParam(-99),
150  m_treatPUJets(true),
151  m_doPhiReso(true),
152  m_autoconfigPRW(false),
153  m_autoconfigPRWPath(""),
154  m_autoconfigPRWFile(""),
155  m_autoconfigPRWCombinedmode(false),
156  m_autoconfigPRWRPVmode(false),
157  m_autoconfigPRWRtags(""),
158  m_mcCampaign(""),
159  m_mcChannel(-99),
160  m_useCommonPRWFiles(false),
161  m_commonPRWFileMC20a(""),
162  m_commonPRWFileMC20d(""),
163  m_commonPRWFileMC20e(""),
164  m_commonPRWFileMC21a(""),
165  m_commonPRWFileMC23a(""),
166  m_commonPRWFileMC23c(""),
167  m_commonPRWFileMC23d(""),
168  m_commonPRWFileMC23e(""),
169  m_prwDataSF(-99.),
170  m_prwDataSF_UP(-99.),
171  m_prwDataSF_DW(-99.),
172  m_runDepPrescaleWeightPRW(false),
173  m_electronTriggerSFStringSingle(""),
174  m_eleId(""),
175  m_eleIdBaseline(""),
176  m_eleConfig(""),
177  m_eleConfigBaseline(""),
178  m_eleBaselineIso_WP(""),
179  m_eleIdExpert(false),
180  m_muId(static_cast<int>(xAOD::Muon::Quality(xAOD::Muon::VeryLoose))),
181  m_muIdBaseline(static_cast<int>(xAOD::Muon::Quality(xAOD::Muon::VeryLoose))),
182  m_photonId(""),
183  m_photonIdBaseline(""),
184  m_tauId(""),
185  m_tauIdBaseline(""),
186  m_eleIso_WP(""),
187  m_eleIsoHighPt_WP(""),
188  m_eleIsoHighPtThresh(-99.),
189  m_eleChID_WP(""),
190  m_eleLRT_strat(-99),
191  m_eleChIso(true),
192  m_eleChID_signal(false),
193  m_runECIS(false),
194  m_photonBaselineIso_WP(""),
195  m_photonIso_WP(""),
196  m_photonTriggerName(""),
197  m_muBaselineIso_WP(""),
198  m_muIso_WP(""),
199  m_muIsoHighPt_WP(""),
200  m_muIsoHighPtThresh(-99.),
201  m_muHighPtExtraSmear(false),
202  m_muEffCorrForce1D(false),
203  m_BtagWP(""),
204  m_BtagTagger(""),
205  m_BtagMinPt(-99.),
206  m_BtagKeyOverride(""),
207  m_BtagSystStrategy(""),
208  m_EigenvectorReductionB(""),
209  m_EigenvectorReductionC(""),
210  m_EigenvectorReductionLight(""),
211  m_BtagWP_trkJet(""),
212  m_BtagTagger_trkJet(""),
213  m_BtagMinPt_trkJet(-99.),
214  //configurable cuts here
215  m_eleBaselinePt(-99.),
216  m_eleBaselineEta(-99.),
217  m_eleBaselineCrackVeto(false),
218  m_elePt(-99.),
219  m_eleEta(-99.),
220  m_eleCrackVeto(false),
221  m_eled0sig(-99.),
222  m_elez0(-99.),
223  m_elebaselined0sig(-99.),
224  m_elebaselinez0(-99),
225  m_eleAllowRun3TrigSFFallback(false),
226  m_eleForceFullSimCalib(false),
227  //
228  m_muBaselinePt(-99.),
229  m_muBaselineEta(-99.),
230  m_muPt(-99.),
231  m_muEta(-99.),
232  m_mud0sig(-99.),
233  m_muz0(-99.),
234  m_mubaselined0sig(-99.),
235  m_mubaselinez0(-99.),
236  m_murequirepassedHighPtCuts(false),
237  m_muCosmicz0(-99.),
238  m_muCosmicd0(-99.),
239  m_badmuQoverP(-99.),
240  m_muCalibrationMode(-99.),
241  //
242  m_photonBaselinePt(-99.),
243  m_photonBaselineEta(-99.),
244  m_photonEta(-99.),
245  m_photonPt(-99.),
246  m_photonBaselineCrackVeto(true),
247  m_photonCrackVeto(true),
248  m_photonAllowLate(false),
249  //
250  m_tauPrePtCut(-99.),
251  m_tauPt(-99.),
252  m_tauEta(-99.),
253  m_tauConfigPath(""),
254  m_tauConfigPathBaseline(""),
255  m_tauDoTTM(false),
256  m_tauSmearingToolRecommendationTag(""),
257  m_tauEffToolRecommendationTag(""),
258  m_tauSmearingToolGenerator(""),
259  m_ApplyMVATESQualityCheck(true),
260  //
261  m_jetPt(-99.),
262  m_jetEta(-99.),
263  m_jetJvt(-99.),
264  m_JvtWP(""),
265  m_JvtPtMax(-99.),
266  m_JvtConfigRun2(""),
267  m_JvtConfigRun3(""),
268  m_trkJetPt(-99.),
269  m_trkJetEta(-99.),
270  m_doFwdJVT(false),
271  m_fJvtWP(""),
272  m_fJvtPtMax(-99.),
273  m_fJvtEtaMin(-99.),
274  m_fJvtConfigRun2(""),
275  m_fJvtConfigRun3(""),
276  m_JMScalib(false),
277  //
278  m_orDoTau(false),
279  m_orDoPhoton(false),
280  m_orDoEleJet(true),
281  m_orDoElEl(false),
282  m_orDoElMu(false),
283  m_orDoMuonJet(true),
284  m_orDoBjet(false),
285  m_orDoElBjet(true),
286  m_orDoMuBjet(true),
287  m_orDoTauBjet(true),
288  m_orDoBoostedElectron(false),
289  m_orBoostedElectronC1(-999.), // set to positive value to activate
290  m_orBoostedElectronC2(-999.), // set to positive value to activate
291  m_orBoostedElectronMaxConeSize(-999.), // set to positive value to activate
292  m_orDoBoostedMuon(true),
293  m_orBoostedMuonC1(-999.), // set to positive value to activate
294  m_orBoostedMuonC2(-999.), // set to positive value to activate
295  m_orBoostedMuonMaxConeSize(-999.), // set to positive value to activate
296  m_orApplyRelPt(false),
297  m_orMuJetPtRatio(-999.),
298  m_orMuJetTrkPtRatio(-999.),
299  m_orMuJetInnerDR(-999),
300  m_orDoMuonJetGhostAssociation(true),
301  m_orRemoveCaloMuons(true),
302  m_orBtagWP(""),
303  m_orInputLabel(""),
304  m_orPhotonFavoured(false),
305  m_orBJetPtUpperThres(-999.),
306  m_orLinkOverlapObjects(false),
307  m_orDoFatjets(false),
308  m_EleFatJetDR(-999.),
309  m_JetFatJetDR(-999.),
310  m_doIsoSignal(true),
311  m_doElIsoSignal(true),
312  m_doPhIsoSignal(true),
313  m_doMuIsoSignal(true),
314 
315  m_useSigLepForIsoCloseByOR(false),
316  m_IsoCloseByORpassLabel(""),
317 
318  m_useTRUTH3(true),
319 
320  m_slices(std::map<std::string,bool>()),
321  m_isRun3(false),
322  m_isPHYSLITE(false),
323 
324  m_metJetSelection(""),
325  m_fatJets(""),
326  //
327  m_currentSyst(),
328  m_fatjetFFSmearingSyst(),
329  m_EG_corrModel(""),
330  m_EG_corrFNList(""),
331  m_applyJVTCut(true),
332  //
333  // set toolhandles empty by default
334  m_jetCalibTool(""),
335  m_jetFatCalibTool(""),
336  m_jetUncertaintiesTool(""),
337  m_jetUncertaintiesPDSmearTool(""),
338  m_fatjetUncertaintiesTool(""),
339  m_fatjetUncertaintiesPDSmearTool(""),
340  m_fatjetFFSmearingTool(""),
341  m_jetCleaningTool(""),
342  m_jetPileupLabelingTool(""),
343  m_jetJvtMomentTool(""),
344  m_jetNNJvtMomentTool(""),
345  m_jetNNJvtSelectionTool(""),
346  m_jetNNJvtEfficiencyTool(""),
347  m_jetfJvtSelectionTool(""),
348  m_jetfJvtEfficiencyTool(""),
349  //
350  m_WTaggerTool(""),
351  m_ZTaggerTool(""),
352  m_TopTaggerTool(""),
353  m_jetTruthLabelingTool(""),
354  m_WTagjetUncertaintiesTool(""),
355  m_ZTagjetUncertaintiesTool(""),
356  m_TopTagjetUncertaintiesTool(""),
357  //
358  m_muonSelectionTool(""),
359  m_muonSelectionHighPtTool(""),
360  m_muonSelectionToolBaseline(""),
361  m_muonCalibTool(""),
362  m_muonEfficiencySFTool(""),
363  m_muonEfficiencyBMHighPtSFTool(""),
364  m_muonTTVAEfficiencySFTool(""),
365  m_muonIsolationSFTool(""),
366  m_muonHighPtIsolationSFTool(""),
367  m_muonTriggerSFTool(""),
368  //
369  m_elecEfficiencySFTool_reco(""),
370  m_elecEfficiencySFTool_id(""),
371  m_elecEfficiencySFTool_trig_singleLep(""),
372  m_elecEfficiencySFTool_trigEff_singleLep(""),
373  m_elecEfficiencySFTool_iso(""),
374  m_elecEfficiencySFTool_isoHighPt(""),
375  //
376  m_egammaCalibTool(""),
377  m_elecSelLikelihood(""),
378  m_elecSelLikelihoodBaseline(""),
379  m_photonSelIsEM(""),
380  m_photonSelIsEMBaseline(""),
381  m_photonEfficiencySFTool(""),
382  m_photonIsolationSFTool(""),
383  m_photonTriggerSFTool(""),
384  m_egammaAmbiguityTool(""),
385  m_elecChargeIDSelectorTool(""),
386  m_elecChargeEffCorrTool(""),
387  //
388  m_tauSelTool(""),
389  m_tauSelToolBaseline(""),
390  m_tauSmearingTool(""),
391  m_tauTruthMatch(""),
392  m_tauEffTool(""),
393  //
394  m_btagEffTool(""),
395  m_btagSelTool(""),
396  m_btagSelTool_OR(""),
397  m_btagEffTool_trkJet(""),
398  m_btagSelTool_trkJet(""),
399  //
400  m_metMaker(""),
401  m_metSystTool(""),
402  m_metSignif(""),
403  //
404  m_trig2015combination_singleLep(""),
405  m_trig2016combination_singleLep(""),
406  m_trig2017combination_singleLep(""),
407  m_trig2018combination_singleLep(""),
408  m_trig2022combination_singleLep(""),
409  m_trig2023combination_singleLep(""),
410  m_trig2024combination_singleLep(""),
411  m_trigNToys_diLep(-99),
412  m_trig2015combination_diLep(""),
413  m_trig2016combination_diLep(""),
414  m_trig2017combination_diLep(""),
415  m_trig2018combination_diLep(""),
416  m_trig2022combination_diLep(""),
417  m_trigGlobalEffCorrTool_diLep(""),
418  m_trigNToys_multiLep(-99),
419  m_trig2015combination_multiLep(""),
420  m_trig2016combination_multiLep(""),
421  m_trig2017combination_multiLep(""),
422  m_trig2018combination_multiLep(""),
423  m_trig2022combination_multiLep(""),
424  m_trigGlobalEffCorrTool_multiLep(""),
425  m_trigNToys_diPhoton(-99),
426  m_trig2015combination_diPhoton(""),
427  m_trig2016combination_diPhoton(""),
428  m_trig2017combination_diPhoton(""),
429  m_trig2018combination_diPhoton(""),
430  m_trig2022combination_diPhoton(""),
431  m_trigGlobalEffCorrTool_diPhoton(""),
432  m_trigConfTool(""),
433  m_trigDecTool(""),
434  m_trigMatchingTool(""),
435  m_trigMatchScoringTool(""),
436  m_trigDRScoringTool(""),
437  //
438  m_isoCorrTool(""),
439  m_isoTool(""),
440  //disable m_isoToolLowPtPLV(""),
441  m_isoBaselineTool(""),
442  m_isoHighPtTool(""),
443  //
444  m_prwTool(""),
445  //
446  m_LRTuncTool(""),
447  //
448  m_orToolbox("ORToolbox",this),
449  //
450  m_pmgSHnjetWeighter(""),
451  m_pmgSHnjetWeighterWZ(""),
452  //
453  m_acc_eleIdBaseline("DFCommonElectronsLHLooseBL"),
454  m_acc_eleId("DFCommonElectronsLHTight"),
455  m_acc_photonIdBaseline("DFCommonPhotonsIsEMTight"),
456  m_acc_photonId("DFCommonPhotonsIsEMTight"),
457  //
458  m_acc_jetClean("DFCommonJets_jetClean_LooseBad")
459 {
460  //General settings
461  declareProperty( "DataSource", m_dataSource = Undefined );
462  declareProperty( "DebugMode", m_debug );
463  declareProperty( "ConfigFile", m_configFile = "SUSYTools/SUSYTools_Default.conf" );
464  //Overlap Removal
465  declareProperty( "DoTauOR", m_orDoTau );
466  declareProperty( "DoPhotonOR", m_orDoPhoton );
467  declareProperty( "DoEleJetOR", m_orDoEleJet );
468  declareProperty( "DoElElOR", m_orDoElEl );
469  declareProperty( "DoElMuOR", m_orDoElMu );
470  declareProperty( "DoMuonJetOR", m_orDoMuonJet );
471  declareProperty( "DoBjetOR", m_orDoBjet );
472  declareProperty( "DoElBjetOR", m_orDoElBjet );
473  declareProperty( "DoMuBjetOR", m_orDoMuBjet );
474  declareProperty( "DoTauBjetOR", m_orDoTauBjet );
475  declareProperty( "UseBtagging", m_useBtagging );
476  declareProperty( "UseBtaggingTrkJet", m_useBtagging_trkJet );
477  declareProperty( "DoBoostedElectronOR", m_orDoBoostedElectron );
478  declareProperty( "BoostedElectronORC1", m_orBoostedElectronC1 );
479  declareProperty( "BoostedElectronORC2", m_orBoostedElectronC2 );
480  declareProperty( "BoostedElectronORMaxConeSize", m_orBoostedElectronMaxConeSize );
481  declareProperty( "DoBoostedMuonOR", m_orDoBoostedMuon );
482  declareProperty( "BoostedMuonORC1", m_orBoostedMuonC1 );
483  declareProperty( "BoostedMuonORC2", m_orBoostedMuonC2 );
484  declareProperty( "BoostedMuonORMaxConeSize", m_orBoostedMuonMaxConeSize );
485  declareProperty( "ORDoMuonJetGhostAssociation", m_orDoMuonJetGhostAssociation );
486  declareProperty( "ORRemoveCaloMuons", m_orRemoveCaloMuons );
487  declareProperty( "ORMuJetApplyRelPt", m_orApplyRelPt);
488  declareProperty( "ORMuJetPtRatio", m_orMuJetPtRatio);
489  declareProperty( "ORMuJetInnerDR", m_orMuJetInnerDR );
490  declareProperty( "ORJetTrkPtRatio", m_orMuJetTrkPtRatio);
491  declareProperty( "ORInputLabel", m_orInputLabel);
492  declareProperty( "ORPhotonFavoured", m_orPhotonFavoured);
493  declareProperty( "ORBJetPtUpperThres", m_orBJetPtUpperThres);
494  declareProperty( "ORLinkOverlapObjects", m_orLinkOverlapObjects);
495 
496  declareProperty( "DoFatJetOR", m_orDoFatjets);
497  declareProperty( "OREleFatJetDR", m_EleFatJetDR);
498  declareProperty( "ORJetFatJetDR", m_JetFatJetDR);
499  declareProperty( "TriggerUpstreamMatching", m_upstreamTriggerMatching, "Use alternative trigger matching tool based on upstream (in-derivation) matching");
500  declareProperty( "TriggerMatchingPrefix", m_trigMatchingPrefix, "Prefix for trigger matching containers (Analysis for PHSYLITE derivations");
501 
502  //--- Object definitions
503  //MET
504  declareProperty( "METEleTerm", m_eleTerm );
505  declareProperty( "METGammaTerm", m_gammaTerm );
506  declareProperty( "METTauTerm", m_tauTerm );
507  declareProperty( "METJetTerm", m_jetTerm );
508  declareProperty( "METMuonTerm", m_muonTerm );
509  declareProperty( "METInputSuffix", m_inputMETSuffix );
510  declareProperty( "METOutputTerm", m_outMETTerm );
511  declareProperty( "METDoTrkSyst", m_trkMETsyst );
512  declareProperty( "METDoCaloSyst", m_caloMETsyst );
513  declareProperty( "METDoTrkJetSyst", m_trkJetsyst );
514  declareProperty( "METJetSelection", m_metJetSelection );
515  declareProperty( "METSysConfigPrefix", m_metsysConfigPrefix );
516 
517  declareProperty( "METRemoveORCaloTaggedMuons", m_metRemoveOverlappingCaloTaggedMuons);
518  declareProperty( "METDoSetMuonJetEMScale", m_metDoSetMuonJetEMScale);
519  declareProperty( "METDoRemoveMuonJets", m_metDoRemoveMuonJets );
520  declareProperty( "METUseGhostMuons", m_metUseGhostMuons );
521  declareProperty( "METDoMuonEloss", m_metDoMuonEloss );
522  declareProperty( "METDoGreedyPhotons", m_metGreedyPhotons );
523  declareProperty( "METDoVeryGreedyPhotons", m_metVeryGreedyPhotons );
524 
525 
526  declareProperty( "SoftTermParam", m_softTermParam);
527  declareProperty( "TreatPUJets", m_treatPUJets);
528  declareProperty( "DoPhiReso", m_doPhiReso);
529 
530  //JETS
531  declareProperty( "JetInputType", m_jetInputType );
532 
533  declareProperty( "FwdJetDoJVT", m_doFwdJVT );
534 
535  declareProperty( "JetJMSCalib", m_JMScalib );
536  declareProperty( "JetLargeRcollection", m_fatJets );
537 
538  //BTAGGING
539  declareProperty( "BtagTagger", m_BtagTagger);
540  declareProperty( "BtagWPOR", m_orBtagWP); //the one used in the Overlap Removal
541  declareProperty( "BtagWP", m_BtagWP); //the one used in FillJet() afterwards
542  declareProperty( "BtagMinPt", m_BtagMinPt); // minimum jetPt cut (MR31061) >=20 GeV EM jets & >=10 GeV TrackJets (not calibrated below)
543  declareProperty( "BtagKeyOverride", m_BtagKeyOverride);
545  declareProperty( "BtagTaggerTrkJet", m_BtagTagger_trkJet);
546  declareProperty( "BtagMinPtTrkJet", m_BtagMinPt_trkJet); // minimum jetPt cut (MR31061) >=20 GeV EM jets & >=10 GeV TrackJets (not calibrated below)
547  declareProperty( "BtagWPTrkJet", m_BtagWP_trkJet); //the one used in FillTrackJet() afterwards
548  //ELECTRONS
549  declareProperty( "EleBaselinePt", m_eleBaselinePt);
550  declareProperty( "ElePt", m_elePt);
551  declareProperty( "EleBaselineEta", m_eleBaselineEta);
552  declareProperty( "EleEta", m_eleEta);
553  declareProperty( "EleBaselineId", m_eleIdBaseline);
554  declareProperty( "EleBaselineConfig", m_eleConfigBaseline);
555  declareProperty( "EleBaselineCrackVeto", m_eleBaselineCrackVeto);
556  declareProperty( "EleId", m_eleId);
557  declareProperty( "EleConfig", m_eleConfig);
558  declareProperty( "EleIso", m_eleIso_WP);
559  declareProperty( "EleIsoHighPt", m_eleIsoHighPt_WP);
560  declareProperty( "EleIsoHighPtThresh", m_eleIsoHighPtThresh);
561  declareProperty( "EleCFT", m_eleChID_WP);
562  declareProperty( "EleCFTIso", m_eleChIso);
563  declareProperty( "EleCFTSignal", m_eleChID_signal);
564  declareProperty( "EleD0sig", m_eled0sig);
565  declareProperty( "EleZ0", m_elez0);
566  declareProperty( "EleBaselineD0sig", m_elebaselined0sig);
567  declareProperty( "EleBaselineZ0", m_elebaselinez0);
568  declareProperty( "EleCrackVeto", m_eleCrackVeto);
569  declareProperty( "EleForceNoId", m_force_noElId );
570  declareProperty( "EleEffMapFilePath", m_eleEffMapFilePath);
571  declareProperty( "EleAllowRun3TrigSFFallback", m_eleAllowRun3TrigSFFallback);
572  declareProperty( "EleForceFullSimCalib", m_eleForceFullSimCalib);
573 
574  //MUONS
575  declareProperty( "MuonBaselinePt", m_muBaselinePt);
576  declareProperty( "MuonPt", m_muPt);
577  declareProperty( "MuonBaselineEta", m_muBaselineEta);
578  declareProperty( "MuonEta", m_muEta);
579  declareProperty( "MuonBaselineId", m_muIdBaseline);
580  declareProperty( "MuonId", m_muId);
581  declareProperty( "MuonIso", m_muIso_WP);
582  declareProperty( "MuonIsoHighPt", m_muIsoHighPt_WP);
583  declareProperty( "MuonIsoHighPtThresh", m_muIsoHighPtThresh);
584  declareProperty( "MuonHighPtExtraSmear", m_muHighPtExtraSmear);
585  declareProperty( "MuonEffCorrForce1D", m_muEffCorrForce1D);
586  declareProperty( "MuonD0sig", m_mud0sig);
587  declareProperty( "MuonZ0", m_muz0);
588  declareProperty( "MuonBaselineD0sig", m_mubaselined0sig);
589  declareProperty( "MuonBaselineZ0", m_mubaselinez0);
590  declareProperty( "MuonRequireHighPtCuts", m_murequirepassedHighPtCuts);
591  declareProperty( "MuonForceNoId", m_force_noMuId );
592  declareProperty( "MuonTTVASF", m_doTTVAsf );
593  declareProperty( "MuonCalibrationMode", m_muCalibrationMode);
594  //MUONS TRIGGER SCALE FACTOR
595  declareProperty( "MuonTriggerSFCalibRelease", m_muTriggerSFCalibRelease );
596  declareProperty( "MuonTriggerSFCalibFilename", m_muTriggerSFCalibFilename );
597  //PHOTONS
598  declareProperty( "PhotonBaselinePt", m_photonBaselinePt);
599  declareProperty( "PhotonPt", m_photonPt);
600  declareProperty( "PhotonBaselineEta", m_photonBaselineEta);
601  declareProperty( "PhotonEta", m_photonEta);
602  declareProperty( "PhotonBaselineId", m_photonIdBaseline);
603  declareProperty( "PhotonId", m_photonId);
604  declareProperty( "PhotonIso", m_photonIso_WP);
605  declareProperty( "PhotonTriggerName", m_photonTriggerName);
606  declareProperty( "PhotonBaselineCrackVeto", m_photonBaselineCrackVeto);
607  declareProperty( "PhotonCrackVeto", m_photonCrackVeto);
608  declareProperty( "PhotonAllowLate", m_photonAllowLate);
609 
610  //TAUS
611  declareProperty( "TauBaselineId", m_tauIdBaseline);
612  declareProperty( "TauId", m_tauId);
613  declareProperty( "TauIdConfigPathBaseline", m_tauConfigPathBaseline);
614  declareProperty( "TauIdConfigPath", m_tauConfigPath);
615  declareProperty( "TauDoTruthMatching", m_tauDoTTM);
616  declareProperty( "TauSmearingToolRecommendationTag", m_tauSmearingToolRecommendationTag);
617  declareProperty( "TauSmearingToolGenerator", m_tauSmearingToolGenerator);
618  declareProperty( "TauEffToolRecommendationTag", m_tauEffToolRecommendationTag);
619  declareProperty( "TauMVATESQualityCheck", m_ApplyMVATESQualityCheck);
620 
621  //Leptons
622  declareProperty( "SigLepRequireIso", m_doIsoSignal ); //leave here for back-compatibility
623  declareProperty( "SigElRequireIso", m_doElIsoSignal );
624  declareProperty( "SigMuRequireIso", m_doMuIsoSignal );
625  declareProperty( "SigPhRequireIso", m_doPhIsoSignal );
626 
627  //Isolation correction for leptons and photons
628  declareProperty( "UseSigLepForIsoCloseByOR", m_useSigLepForIsoCloseByOR );
629  declareProperty( "IsoCloseByORpassLabel", m_IsoCloseByORpassLabel );
630 
631  //Truth
632  declareProperty( "UseTRUTH3", m_useTRUTH3 ); // true if using TRUTH3 type containers
633 
634  //--- Tools configuration
635  //PRW
636  declareProperty( "AutoconfigurePRWTool", m_autoconfigPRW );
637  declareProperty( "AutoconfigurePRWToolPath", m_autoconfigPRWPath ); // e.g. dev/PileupReweighting/share/
638  declareProperty( "AutoconfigurePRWToolFile", m_autoconfigPRWFile ); // e.g. DSID407xxx/pileup_mc16a_dsid407352_FS.root
639  declareProperty( "AutoconfigurePRWToolCombinedmode", m_autoconfigPRWCombinedmode );
640  declareProperty( "AutoconfigurePRWToolRPVmode", m_autoconfigPRWRPVmode );
641  declareProperty( "AutoconfigurePRWToolRtags", m_autoconfigPRWRtags );
642  declareProperty( "mcCampaign", m_mcCampaign );
643  declareProperty( "mcChannel", m_mcChannel );
644  declareProperty( "PRWConfigFiles", m_prwConfFiles );
645  declareProperty( "PRWLumiCalcFiles", m_prwLcalcFiles );
646  declareProperty( "PRWActualMu2017File", m_prwActualMu2017File );
647  declareProperty( "PRWActualMu2018File", m_prwActualMu2018File );
648  declareProperty( "PRWActualMu2022File", m_prwActualMu2022File );
649  declareProperty( "PRWActualMu2023File", m_prwActualMu2023File );
650  declareProperty( "PRWActualMu2024File", m_prwActualMu2024File );
651  declareProperty( "PRWDataScaleFactor", m_prwDataSF);
652  declareProperty( "PRWDataScaleFactorUP", m_prwDataSF_UP);
653  declareProperty( "PRWDataScaleFactorDOWN", m_prwDataSF_DW);
654  declareProperty( "PRWUseRunDependentPrescaleWeight", m_runDepPrescaleWeightPRW);
655  declareProperty( "PRWUseCommonMCFiles", m_useCommonPRWFiles);
656  declareProperty( "PRWCommonFileMC20a", m_commonPRWFileMC20a);
657  declareProperty( "PRWCommonFileMC20d", m_commonPRWFileMC20d);
658  declareProperty( "PRWCommonFileMC20e", m_commonPRWFileMC20e);
659  declareProperty( "PRWCommonFileMC21a", m_commonPRWFileMC21a);
660  declareProperty( "PRWCommonFileMC23a", m_commonPRWFileMC23a);
661  declareProperty( "PRWCommonFileMC23c", m_commonPRWFileMC23c);
662  declareProperty( "PRWCommonFileMC23d", m_commonPRWFileMC23d);
663  declareProperty( "PRWCommonFileMC23e", m_commonPRWFileMC23e);
664  //LargeR uncertainties config, as from https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/JetUncertainties2016PrerecLargeR#Understanding_which_configuratio
665  declareProperty( "JetLargeRuncConfig", m_fatJetUncConfig );
666  declareProperty( "JetLargeRuncVars", m_fatJetUncVars );
667  declareProperty( "JetWtaggerConfig", m_WtagConfig );
668  declareProperty( "JetZtaggerConfig", m_ZtagConfig );
669  declareProperty( "JetWZTaggerCalibArea", m_WZTaggerCalibArea );
670  declareProperty( "JetToptaggerConfig", m_ToptagConfig );
671  declareProperty( "JetTruthLabelName", m_JetTruthLabelName );
672  declareProperty( "JetTopTaggerCalibArea", m_TopTaggerCalibArea );
673  declareProperty( "JetWTaguncConfig", m_WTagUncConfig );
674  declareProperty( "JetZTaguncConfig", m_ZTagUncConfig );
675  declareProperty( "JetTopTaguncConfig", m_TopTagUncConfig );
676  //Btagging MCtoMC SFs
677  declareProperty( "ShowerType", m_showerType = 0 );
678  //Egamma NP correlation model
679  declareProperty( "EleEffNPcorrModel", m_EG_corrModel );
680  //Egamma correction file list override
681  declareProperty( "EleEffCorrFNList", m_EG_corrFNList );
682  declareProperty( "IsRun3", m_isRun3 );
683  declareProperty( "IsPHYSLITE", m_isPHYSLITE );
684 
685  //For electron trigger SF tools
686  declareProperty( "ElectronTriggerSFStringSingle", m_electronTriggerSFStringSingle);
687 
688  //--- Tool pointers /MT : we may want to improve the descriptions :)
689  m_jetCalibTool.declarePropertyFor( this, "JetCalibTool", "The JetCalibTool" );
690  m_jetFatCalibTool.declarePropertyFor( this, "FatJetCalibTool", "The JetCalibTool for large-R jets" );
691  m_jetUncertaintiesTool.declarePropertyFor( this, "JetUncertaintiesTool", "The JetUncertaintiesTool" );
692  m_jetUncertaintiesPDSmearTool.declarePropertyFor( this, "JetPDSmearUncertaintiesTool", "The JetPDSmearUncertaintiesTool" );
693  m_fatjetUncertaintiesTool.declarePropertyFor( this, "FatJetUncertaintiesTool", "The JetUncertaintiesTool for large-R jets" );
694  m_fatjetUncertaintiesPDSmearTool.declarePropertyFor( this, "FatJetPDSmearUncertaintiesTool", "The FatJetPDSmearUncertaintiesTool" );
695  m_fatjetFFSmearingTool.declarePropertyFor( this, "FatJetFFSmearingTool", "The FFSmearingTool for large-R jets" );
696  m_WTagjetUncertaintiesTool.declarePropertyFor( this, "WJetUncertaintiesTool", "The JetUncertaintiesTool for large-R W-tagged jets" );
697  m_ZTagjetUncertaintiesTool.declarePropertyFor( this, "ZJetUncertaintiesTool", "The JetUncertaintiesTool for large-R Z-tagged jets" );
698  m_TopTagjetUncertaintiesTool.declarePropertyFor( this, "TopJetUncertaintiesTool", "The JetUncertaintiesTool for large-R Top-tagged jets" );
699  m_jetCleaningTool.declarePropertyFor( this, "JetCleaningTool", "The JetCleaningTool" );
700  m_jetPileupLabelingTool.declarePropertyFor( this, "JetPileupLabelingTool", "The JetPileupLabelingTool" );
701  m_jetJvtMomentTool.declarePropertyFor( this, "JetJvtMomentTool", "The JetJvtMomentTool" );
702  m_jetNNJvtMomentTool.declarePropertyFor( this, "JetNNJvtMomentTool", "The JetNNJvtMomentTool" );
703  m_jetNNJvtSelectionTool.declarePropertyFor( this, "JetNNJvtSelectionTool", "The JetNNJvtSelectionTool" );
704  m_jetNNJvtEfficiencyTool.declarePropertyFor( this, "JetNNJvtEfficiencyTool", "The JetNNJvtEfficiencyTool" );
705  m_jetfJvtSelectionTool.declarePropertyFor( this, "JetfJvtSelectionTool", "The JetfJvtSelectionTool" );
706  m_jetfJvtEfficiencyTool.declarePropertyFor( this, "JetfJvtEfficiencyTool", "The JetfJvtEfficiencyTool" );
707  //
708  m_WTaggerTool.declarePropertyFor( this, "WTaggerTool", "The SmoothedWZTaggerTool" );
709  m_ZTaggerTool.declarePropertyFor( this, "ZTaggerTool", "The SmoothedWZTaggerTool" );
710  m_TopTaggerTool.declarePropertyFor( this, "TopTaggerTool", "The DNNTopTaggerTool" );
711  m_jetTruthLabelingTool.declarePropertyFor( this, "JetTruthLabelingTool", "The JetTruthLabelingTool" );
712  //
713  m_muonSelectionTool.declarePropertyFor( this, "MuonSelectionTool", "The MuonSelectionTool for signal muons" );
714  m_muonSelectionHighPtTool.declarePropertyFor( this, "MuonSelectionHighPtTool", "The MuonSelectionTool for signal muons (HighPt WP)" );
715  m_muonSelectionToolBaseline.declarePropertyFor( this, "MuonSelectionToolBaseline", "The MuonSelectionTool for baseline muons" );
716  m_muonCalibTool.declarePropertyFor( this, "MuonCalibTool", "The MuonCalibTool" );
717  m_muonEfficiencySFTool.declarePropertyFor( this, "MuonEfficiencyScaleFactorsTool", "The MuonEfficiencySFTool" );
718  m_muonEfficiencyBMHighPtSFTool.declarePropertyFor( this, "MuonBadMuonHighPtScaleFactorsTool", "The MuonBadMuonHighPtSFTool" );
719  m_muonTTVAEfficiencySFTool.declarePropertyFor( this, "MuonTTVAEfficiencyScaleFactorsTool", "The MuonTTVAEfficiencySFTool" );
720  m_muonIsolationSFTool.declarePropertyFor( this, "MuonIsolationScaleFactorsTool", "The MuonIsolationSFTool" );
721  m_muonHighPtIsolationSFTool.declarePropertyFor( this, "MuonHighPtIsolationScaleFactorsTool", "The MuonIsolationSFTool" );
722  m_muonTriggerSFTool.declarePropertyFor( this, "MuonTriggerScaleFactorsTool", "The MuonTriggerSFTool" );
723  m_muonLRTORTool.declarePropertyFor( this, "MuonLRTOverlapRemovalTool", "Prompt/LRT muon OR Tool" );
724  //
725  m_elecEfficiencySFTool_reco.declarePropertyFor( this, "ElectronEfficiencyCorrectionTool_reco", "The ElectronEfficiencyCorrectionTool for reconstruction SFs" );
726  m_elecEfficiencySFTool_trig_singleLep.declarePropertyFor( this, "ElectronEfficiencyCorrectionTool_trig_singleLep", "The ElectronEfficiencyCorrectionTool for single-e triggers" );
727  m_elecEfficiencySFTool_id.declarePropertyFor( this, "ElectronEfficiencyCorrectionTool_id", "The ElectronEfficiencyCorrectionTool for ID SFs" );
728  m_elecEfficiencySFTool_iso.declarePropertyFor( this, "ElectronEfficiencyCorrectionTool_iso" , "The ElectronEfficiencyCorrectionTool for iso SFs" );
729  m_elecEfficiencySFTool_isoHighPt.declarePropertyFor( this, "ElectronEfficiencyCorrectionTool_isoHigPt" , "The ElectronEfficiencyCorrectionTool for iso high-pt SFs" );
730  m_elecSelLikelihood.declarePropertyFor( this, "ElectronLikelihoodTool" , "The ElectronSelLikelihoodTool for signal electrons" );
731  m_elecSelLikelihoodBaseline.declarePropertyFor( this, "ElectronLikelihoodToolBaseline" , "The ElectronSelLikelihoodTool for baseline electrons" );
732  m_egammaAmbiguityTool.declarePropertyFor( this, "EgammaAmbiguityTool", "The EgammaAmbiguityTool" );
733  m_elecChargeIDSelectorTool.declarePropertyFor( this, "ElectronChargeIDSelectorTool", "The ElectronChargeIDSelectorTool" );
734  m_elecChargeEffCorrTool.declarePropertyFor( this, "ElectronChargeEffCorrectionTool", "The ElectronChargeEffCorrectionTool" );
735  m_elecLRTORTool.declarePropertyFor( this, "ElectronLRTOverlapRemovalTool", "Prompt/LRT electron OR Tool" );
736  //
737  m_photonSelIsEM.declarePropertyFor( this, "PhotonIsEMSelector" , "The PhotonIsEMSelectorTool for signal photons" );
738  m_photonSelIsEMBaseline.declarePropertyFor( this, "PhotonIsEMSelectorBaseline" , "The PhotonIsEMSelectorTool for baseline photons" );
739  m_photonEfficiencySFTool.declarePropertyFor( this, "PhotonEfficiencyCorrectionTool", "The PhotonEfficiencyCorrectionTool for reco SFs" );
740  m_photonIsolationSFTool.declarePropertyFor( this, "PhotonIsolationCorrectionTool", "The PhotonEfficiencyCorrectionTool for iso SFs" );
741  m_photonTriggerSFTool.declarePropertyFor( this, "PhotonTriggerEfficiencyCorrectionTool", "The PhotonEfficiencyCorrectionTool for trigger SFs" );
742  //
743  m_egammaCalibTool.declarePropertyFor( this, "EgammaCalibrationAndSmearingTool", "The EgammaCalibrationAndSmearingTool");
744  //
745  m_tauSelTool.declarePropertyFor( this, "TauSelectionTool", "The TauSelectionTool for signal taus" );
746  m_tauSelToolBaseline.declarePropertyFor( this, "TauSelectionToolBaseline", "The TauSelectionTool for baseline taus" );
747  m_tauSmearingTool.declarePropertyFor( this, "TauSmearingTool", "The TauSmearingTool" );
748  m_tauTruthMatch.declarePropertyFor( this, "TauTruthMatch", "The TTMT" );
749  m_tauEffTool.declarePropertyFor( this, "TauEfficiencyCorrectionsTool", "The TauEfficiencyCorrectionsTool" );
750  //
751  m_btagEffTool.declarePropertyFor( this, "BTaggingEfficiencyTool", "The BTaggingEfficiencyTool" );
752  m_btagSelTool.declarePropertyFor( this, "BTaggingSelectionTool", "The main BTaggingSelectionTool" );
753  m_btagSelTool_OR.declarePropertyFor( this, "BTaggingSelectionTool_OR", "The BTaggingSelectionTool used to select b-jets for overlap removal" );
754  m_btagEffTool_trkJet.declarePropertyFor( this, "BTaggingEfficiencyTool_trkJet", "The BTaggingEfficiencyTool for track jets" );
755  m_btagSelTool_trkJet.declarePropertyFor( this, "BTaggingSelectionTool_trkJet", "The main BTaggingSelectionTool for track jets" );
756  //
757  m_metMaker.declarePropertyFor( this, "METMaker", "The METMaker instance");
758  m_metSystTool.declarePropertyFor( this, "METSystTool", "The METSystematicsTool");
759  m_metSignif.declarePropertyFor( this, "METSignificance", "The METSignifiance instance");
760  //
761  m_trigGlobalEffCorrTool_diLep.declarePropertyFor( this, "TrigGlobalEfficiencyCorrection_diLep", "The TrigGlobalEfficiencyCorrection tool for dilepton" );
762  m_trigGlobalEffCorrTool_multiLep.declarePropertyFor( this, "TrigGlobalEfficiencyCorrection_multiLep", "The TrigGlobalEfficiencyCorrection tool for trilepton" );
763  m_trigGlobalEffCorrTool_diPhoton.declarePropertyFor( this, "TrigGlobalEfficiencyCorrection_diPhoton", "The TrigGlobalEfficiencyCorrection tool for asymmetric diphoton" );
764  m_trigConfTool.declarePropertyFor( this, "TrigConfigTool", "The TrigConfigTool" );
765  m_trigDecTool.declarePropertyFor( this, "TrigDecisionTool", "The TrigDecisionTool" );
766  m_trigMatchingTool.declarePropertyFor( this, "TrigMatchTool", "The TrigMatchingTool" );
767  m_trigMatchScoringTool.declarePropertyFor( this, "TrigMatchScoringTool", "The TrigMatchScoringTool" );
768  m_trigDRScoringTool.declarePropertyFor( this, "TrigDRScoringTool", "The TrigDRScoringTool" );
769  //
770  m_isoCorrTool.declarePropertyFor( this, "IsolationCorrectionTool", "The IsolationCorrectionTool" );
771  m_isoTool.declarePropertyFor( this, "IsolationSelectionTool", "The IsolationSelectionTool");
772  //disable m_isoToolLowPtPLV.declarePropertyFor( this, "IsolationLowPtPLVTool", "The IsolationLowPtPLVTool");
773  m_isoBaselineTool.declarePropertyFor( this, "IsolationSelectionTool_Baseline", "The IsolationSelectionTool for baseline objects");
774  m_isoHighPtTool.declarePropertyFor( this, "IsolationSelectionTool_HighPt", "The IsolationSelectionTool for High Pt");
775  m_isoCloseByTool.declarePropertyFor( this, "IsolationCloseByCorrectionTool", "The IsolationCloseByCorrectionTool");
776  //
777  m_prwTool.declarePropertyFor( this, "PileupReweightingTool", "The PRW tool" );
778  //
779  m_LRTuncTool.declarePropertyFor( this, "InclusiveTrackFilterTool", "The LRT uncertainty tool");
780  //
781  m_pmgSHnjetWeighter.declarePropertyFor( this, "PMGSHVjetReweightTool", "The PMGSHVjetReweightTool (AntiKt4TruthJets)" );
782  m_pmgSHnjetWeighterWZ.declarePropertyFor( this, "PMGSHVjetReweightWZTool", "The PMGSHVjetReweightTool (AntiKt4TruthWZJets)" );
783  //
784  m_tauJetORtool.declarePropertyFor( this, "TauJetOverlapTool", "The TauJetOverlapTool");
785  //disable m_orToolbox.declarePropertyFor( this, "OverlapRemovalTool", "The overlap removal tool");
786 
787  //load supported WPs (by tightness order)
788  m_el_id_support.push_back("VeryLooseNoPix"); // WPs for LRT Electron
789  m_el_id_support.push_back("VeryLooseLLH");
790  m_el_id_support.push_back("LooseNoPix"); // WPs for LRT Electron
791  m_el_id_support.push_back("LooseLLH");
792  m_el_id_support.push_back("LooseAndBLayerLLH");
793  m_el_id_support.push_back("LooseDNNnoCF");
794  m_el_id_support.push_back("LooseDNN");
795  m_el_id_support.push_back("MediumNoPix"); // WPs for LRT Electron
796  m_el_id_support.push_back("MediumLLH");
797  m_el_id_support.push_back("MediumDNNnoCF");
798  m_el_id_support.push_back("MediumDNN");
799  m_el_id_support.push_back("TightNoPix"); // WPs for LRT Electron
800  m_el_id_support.push_back("TightLLH");
801  m_el_id_support.push_back("TightDNNnoCF");
802  m_el_id_support.push_back("TightDNN");
803 
804  m_ph_id_support.push_back("Loose");
805  m_ph_id_support.push_back("Medium");
806  m_ph_id_support.push_back("Tight");
807  m_ph_id_support.push_back("TightPtIncl"); // Should not be mixed with Tight
808 
809  m_mu_id_support = 4; //maximum value supported
810 
811  // Tau ID WPs
812  m_tau_id_support.push_back("rnn001");
813  m_tau_id_support.push_back("VeryLoose");
814  m_tau_id_support.push_back("Loose");
815  m_tau_id_support.push_back("Medium");
816  m_tau_id_support.push_back("Tight");
817 
818  // Iso WPs
819  // -- see https://twiki.cern.ch/twiki/bin/view/AtlasProtected/RecommendedIsolationWPs#Current_official_working_points
820  // -- the el iso points are those which have (or will have) SFs available
821  m_el_iso_support = {
822  "FCLoose", "FCTight", // current WPs
823  "FCHighPtCaloOnly", // current HighPtCaloOnly WPs
824  "Gradient", //
825  "HighPtCaloOnly", //
826  "TightTrackOnly_VarRad","TightTrackOnly_FixedRad",//
827  "Tight_VarRad","Loose_VarRad", //
828  "PLVLoose", "PLVTight", // PLV recommended WPs, fallback support below b/o SFs and & egamma map file
829  "PLImprovedTight", "PLImprovedVeryTight" // New PLIV WPs, fallback support below b/o SFs & egamma map file
830  };
831  // -- the muon iso points are those which have SFs available
832  // -- more details https://indico.cern.ch/event/878781/contributions/3721998/attachments/1976194/3289315/20200127_IFFshort_2.pdf
833  m_mu_iso_support = {
834  "PflowLoose_FixedRad", "PflowLoose_VarRad", "PflowTight_FixedRad", "PflowTight_VarRad", // PFlow (new naming) recommended WPs
835  "TightTrackOnly_FixedRad", "TightTrackOnly_VarRad", "HighPtTrackOnly", // TrackOnly (new naming) recommended WPs
836  "PLVLoose", "PLVTight", // PLV recommended WPs
837  "Loose_VarRad", "Loose_FixedRad", "Tight_VarRad", "Tight_FixedRad", // Other WPs (new naming)
838  "PLImprovedTight", "PLImprovedVeryTight" // New PLIV WPs, fallback support below b/o SFs
839  };
840 
841  // Construct electron fallback WPs for SFs
842  for (const auto& x : m_el_iso_support) { m_el_iso_fallback[x] = x; } // all current WPs
843  m_el_iso_fallback["PLVTight"] = "FCTight"; // plus actual fallback
844  m_el_iso_fallback["PLVLoose"] = "FCLoose";
845  m_el_iso_fallback["PLImprovedTight"] = "FCTight";
846  m_el_iso_fallback["PLImprovedVeryTight"] = "FCTight";
847  m_el_iso_fallback["HighPtCaloOnly"] = "FCHighPtCaloOnly";
848  m_el_iso_fallback["TightTrackOnly_VarRad"] = "FCTight";
849  m_el_iso_fallback["TightTrackOnly_FixedRad"] = "FCTight";
850  m_el_iso_fallback["Tight_VarRad"] = "FCTight";
851  m_el_iso_fallback["Loose_VarRad"] = "FCLoose";
852 
853  // Construct muon fallback WPs for SFs
854  m_mu_iso_fallback = {};
855  m_mu_iso_fallback["PLImprovedTight"] = "PLVTight";
856  m_mu_iso_fallback["PLImprovedVeryTight"] = "PLVTight";
857 }
858 
859 #define CHECK_TOOL_RETRIEVE( TOOLHANDLE ) \
860  ATH_MSG_VERBOSE("Try to retrieve " << #TOOLHANDLE); \
861  if( TOOLHANDLE.retrieve().isFailure()) { \
862  ATH_MSG_ERROR("Failed to retrieve tool " << #TOOLHANDLE); \
863  return StatusCode::FAILURE; \
864  }
865 
866 #define CHECK_TOOL_RETRIEVE_NONEMPTY( TOOLHANDLE ) \
867  CHECK_TOOL_RETRIEVE_CONDITIONAL( TOOLHANDLE, !TOOLHANDLE.empty())
868 
869 #define CHECK_TOOL_RETRIEVE_CONDITIONAL( TOOLHANDLE, CONDITION ) \
870  if( CONDITION) { \
871  ATH_MSG_VERBOSE("Try to retrieve " << #TOOLHANDLE); \
872  if(TOOLHANDLE.retrieve().isFailure()) { \
873  ATH_MSG_ERROR("Failed to retrieve tool " << #TOOLHANDLE); \
874  return StatusCode::FAILURE; \
875  } \
876  }
877 
878 //--- override AsgTools behaviour for HyperBool properties
879 StatusCode SUSYObjDef_xAOD::setBoolProperty(const std::string& name, const bool& property){
880  m_bool_prop_set.insert(name);
881  return this->setProperty(name, property);
882 }
883 //---
884 
886 
887  if (m_tool_init) {
888  ATH_MSG_ERROR("Initialising for a second time -- something is wrong!");
889  return StatusCode::FAILURE;
890  }
891 
892  // Greet the user:
893  ATH_MSG_INFO( "Initialising... " );
894 
895  bool autoconf(false);
896 #ifndef XAOD_STANDALONE // For now metadata is Athena-only
897  if ( m_dataSource < 0 ) {
898  autoconf = true;
899  ATH_MSG_INFO("Autoconfiguring: dataSource, mcCampaign, isPHYSLITE");
900  std::string projectName = "";
901  ATH_CHECK( AthAnalysisHelper::retrieveMetadata("/TagInfo", "project_name", projectName, inputMetaStore() ) );
902  if ( projectName == "IS_SIMULATION" ) {
903  std::string simFlavour = "";
904  ATH_CHECK( AthAnalysisHelper::retrieveMetadata("/Simulation/Parameters", "SimulationFlavour", simFlavour, inputMetaStore() ) );
905  TString s(simFlavour); s.ToUpper();
906  m_dataSource = s.Contains("ATLFAST") ? AtlfastII : FullSim;
907  } else if (projectName.compare(0, 4, "data") == 0 ) {
908  m_dataSource = Data;
909  } else {
910  ATH_MSG_ERROR("Failed to autoconfigure -- project_name matches neither IS_SIMULATION nor data!");
911  return StatusCode::FAILURE;
912  }
913 
914  }
915 #endif
916 
918 
919  //Read configuration from file (stored as Property)
920  ATH_CHECK( readConfig() );
921 
922  if (m_dataSource < 0) {
923  ATH_MSG_FATAL( "Data source incorrectly configured!!" );
924  ATH_MSG_FATAL("You must set the DataSource property to Data, FullSim or AtlfastII !!");
925  if (autoconf) ATH_MSG_FATAL("Autoconfiguration seems to have failed!");
926  // if(m_useLeptonTrigger<0) ATH_MSG_ERROR( "UseLeptonTrigger not set");
927  ATH_MSG_FATAL( "Exiting... " );
928  return StatusCode::FAILURE;
929  }
930  ATH_MSG_DEBUG( "Configured: IsData: " << isData() );
931  ATH_MSG_DEBUG( "Configured: IsAtlfast: " << isAtlfast() );
932 
933  switch (m_jetInputType) {
937  break;
938  default:
940  return StatusCode::FAILURE;
941  }
942 
943  if (m_inputMETSuffix.empty()){
945  }
947  ATH_MSG_INFO( "Configured for jet collection: " << m_defaultJets );
948 
949  m_defaultTruthJets = "AntiKt4TruthJets";
950  const xAOD::FileMetaData* fmd = nullptr;
951  std::string dataType;
952  if ( inputMetaStore()->contains<xAOD::FileMetaData>("FileMetaData") && inputMetaStore()->retrieve(fmd,"FileMetaData").isSuccess() )
954  if ( dataType.compare("StreamDAOD_PHYS")==0 || dataType.compare("StreamDAOD_PHYSLITE")==0 ) m_defaultTruthJets = "AntiKt4TruthDressedWZJets";
955  if ( dataType.compare("StreamDAOD_PHYSLITE")==0) m_isPHYSLITE = true;
956 
957  ATH_MSG_INFO( "Configured for truth jet collection: " << m_defaultTruthJets );
958 
959  m_inputMETCore = m_isPHYSLITE? "MET_Core_AnalysisMET":"MET_Core_" + m_inputMETSuffix;
960  m_inputMETMap = m_isPHYSLITE? "METAssoc_AnalysisMET":"METAssoc_" + m_inputMETSuffix;
961 
962  ATH_MSG_DEBUG ( "Build MET Core: " << m_inputMETCore);
963  ATH_MSG_DEBUG ( "Build MET with map: " << m_inputMETMap);
964 
965  m_jetCleanDFName = TString::Format("DFCommonJets_jetClean_%s", m_badJetCut.c_str());
967 
968  // the decorations are named like DFCommonElectronsLHTight, DFCommonElectronsDNNTight or DFCommonElectronsDNNTightNoCF
969  m_eleIdBaselineDFName = m_eleIdBaseline.find("DNN") == std::string::npos ? "DFCommonElectronsLH" : "DFCommonElectronsDNN";
970  m_eleIdBaselineDFName += TString(m_eleIdBaseline).ReplaceAll("LooseAndBLayer","LooseBL").ReplaceAll("LLH","").ReplaceAll("DNNnoCF","").ReplaceAll("DNN","").Data();
971  if (m_eleIdBaseline.find("noCF") != std::string::npos)
972  m_eleIdBaselineDFName += "NoCF";
974 
975  m_eleIdDFName = m_eleId.find("DNN") == std::string::npos ? "DFCommonElectronsLH" : "DFCommonElectronsDNN";
976  m_eleIdDFName += TString(m_eleId).ReplaceAll("LooseAndBLayer","LooseBL").ReplaceAll("LLH","").ReplaceAll("DNNnoCF","").ReplaceAll("DNN","").Data();
977  if (m_eleId.find("noCF") != std::string::npos)
978  m_eleIdDFName += "NoCF";
980 
981  m_photonIdBaselineDFName = "DFCommonPhotonsIsEM";
982  m_photonIdBaselineDFName += TString(m_photonIdBaseline).Data();
984 
985  m_photonIdDFName = "DFCommonPhotonsIsEM";
986  m_photonIdDFName += TString(m_photonId).Data();
988 
989  // autoconfigure PRW tool if m_autoconfigPRW==true
990  if (m_autoconfigPRWPath == "dev/PileupReweighting/share/")
992  else
993  // need to set a full path if you don't use the one in CVMFS
995 
996  // Read Handles
999 
1000  // Write Handles
1002  ATH_CHECK( m_outMuonLocation.initialize() );
1003 
1004  ATH_CHECK( this->SUSYToolsInit() );
1005 
1006  ATH_MSG_VERBOSE("Done with tool retrieval");
1007 
1008  m_tool_init = true;
1009 
1010  // Return gracefully:
1011  return StatusCode::SUCCESS;
1012 }
1013 
1014 StatusCode SUSYObjDef_xAOD::autoconfigurePileupRWTool(const std::string& PRWfilesDir, const std::string& PRWfileName, bool usePathResolver, bool RPVLLmode, bool Combinedmode, const std::string& /* HFFilter */ ) {
1015 
1016  // this will contain the path of the PRW file on /cvmfs which needs to be reverse engineered from the DSID and MC campaign
1017  // the path(s) will be added to m_prwConfFiles which is later used in the configuration of the CP PRW tool
1018  std::string prwConfigFile("");
1019 
1020  if ( !isData() && m_autoconfigPRW ) {
1021 
1022  prwConfigFile = PRWfilesDir;
1023 
1024  float dsid = -999;
1025  std::string amiTag("");
1026  std::string mcCampaignMD("");
1027  std::string simFlavour("");
1028  std::string simType("");
1029  const xAOD::FileMetaData* fmd = nullptr;
1030 
1031  // configure PRW rtag options from m_autoconfigPRWRtags string
1032  // e.g. "mc20a:r13167_r14859,mc20d:r13144_r14860,mc20e:r13145_r14861,mc21a:r13752_r13829,mc23a:r14622_r14932_r15540,mc23c:r14799_r14908,mc23d:r15224_r15530,mc23e:r16083"
1033  std::map<std::string,std::vector<std::string>> PRWRtags = {};
1034  std::string allcampaigns = "mc20a.mc20d.mc20e.mc21a.mc23a.mc23c.mc23d.mc23e";
1035  bool standard_like = true;
1036  for ( const auto& campaign_rtags : split( m_autoconfigPRWRtags, "," ) ) { // split string by ","
1037  std::string icampaign = campaign_rtags.substr(0, campaign_rtags.find(":")); // first field = campaign, split by ":"
1038  std::vector<std::string> irtags = split( campaign_rtags.substr(campaign_rtags.find(":")+1), "_" ); // remaining fields = rtags, split by "_"
1039  PRWRtags[icampaign] = irtags;
1040  ATH_MSG_DEBUG( "PRW autoconfigure considering rtags " << campaign_rtags.substr(campaign_rtags.find("_")+1) << " for campaign " << icampaign );
1041  }
1042  for ( const auto& x : PRWRtags ) {
1043  if ( allcampaigns.find(x.first)==string::npos ) {
1044  ATH_MSG_ERROR("m_autoconfigPRWRtags contains invalid campaign: " << x.first << " (" << m_autoconfigPRWRtags << ")");
1045  ATH_MSG_ERROR("use any of " << allcampaigns);
1046  return StatusCode::FAILURE;
1047  }
1048  }
1049 
1050  // let's use MetaData to extract sample information
1051  if ( inputMetaStore()->contains<xAOD::FileMetaData>("FileMetaData") && inputMetaStore()->retrieve(fmd,"FileMetaData").isSuccess() ) {
1054  fmd->value(xAOD::FileMetaData::simFlavour, simFlavour);
1055 
1056  if(simFlavour.starts_with("ATLFASTII")) simType = "AFII";
1057  else if(simFlavour.starts_with("ATLFAST3")) simType = "AF3";
1058  else simType = "FS";
1059 
1060  bool found = false;
1061  while ( mcCampaignMD.empty() ) {
1062  for ( const auto& campaign_rtags : PRWRtags ) { // consider all campaigns
1063  for ( const auto& rtag: campaign_rtags.second ) { // consider all rtags
1064  if (found) continue;
1065  if (amiTag.find(rtag)!=string::npos) { // find matching tag
1066  mcCampaignMD = campaign_rtags.first.substr(0,5); // save campaign
1067  standard_like = (campaign_rtags.first.find("ns")?true:false); // track non-standard r-tags
1068  found = true; // break if found
1069  }
1070  }
1071  }
1072  // in case not found
1073  if (!found) {
1074  ATH_MSG_ERROR( "autoconfigurePileupRWTool(): unrecognized xAOD::FileMetaData::amiTag, \'" << amiTag << "'. Please check your input sample.");
1075  return StatusCode::FAILURE;
1076  }
1077  //
1078  ATH_MSG_INFO( "Setting up autoconfigurePileupRWTool for mc campaign " << mcCampaignMD << " (from amiTag " << amiTag << ") (standard-like = " << (standard_like?"true":"false") << ")." );
1079  if ( (!standard_like) && (!RPVLLmode) )
1080  ATH_MSG_WARNING("Non-standard r-tag found (" << amiTag.data() << "), but RPVLLmode not set. Perhaps you want to set \"PRW.autoconfigPRWRPVmode: 1\" in the config?");
1081  }
1082  } else {
1083 #ifndef XAOD_STANDALONE
1084  ATH_MSG_ERROR( "autoconfigurePileupRWTool(): access to FileMetaData failed, can't get mc channel number.");
1085  return StatusCode::FAILURE;
1086 #else
1087 
1088  if ( m_mcCampaign == "mc20a" || m_mcCampaign == "mc20d" || m_mcCampaign == "mc20e" || m_mcCampaign == "mc21a" || m_mcCampaign == "mc23a" || m_mcCampaign == "mc23c" || m_mcCampaign == "mc23d" || m_mcCampaign == "mc23e") {
1089  // First see if the user set the mcCampaign/run number by property (hopefully temporary workaround)
1090  if ( m_mcChannel > 0) {
1091  ATH_MSG_WARNING( "autoconfigurePileupRWTool(): access to FileMetaData failed -> getting the mc channel number (DSID) and campaign from configuration." );
1092  std::string NoMetadataButPropertyOK("");
1093  NoMetadataButPropertyOK += "autoconfigurePileupRWTool(): 'mcCampaign' is used and passed to SUSYTools as '";
1094  NoMetadataButPropertyOK += m_mcCampaign;
1095  NoMetadataButPropertyOK += "'. 'mcChannel' is used and passed to SUSYTools as '";
1096  NoMetadataButPropertyOK += std::to_string(m_mcChannel);
1097  NoMetadataButPropertyOK += "'. Autocongiguring PRW accordingly.";
1098  ATH_MSG_WARNING( NoMetadataButPropertyOK );
1099  mcCampaignMD = m_mcCampaign;
1100  dsid = m_mcChannel;
1101  } else {
1102  // OK, this is a fall-back option without using MetaData but one has to manually set 'mcCampaign' property
1103  ATH_MSG_WARNING( "autoconfigurePileupRWTool(): access to FileMetaData failed -> getting the mc channel number (DSID) from the event store." );
1104  const xAOD::EventInfo* evtInfo = GetEventInfo();
1105  dsid = evtInfo->mcChannelNumber();
1106 
1107  std::string NoMetadataButPropertyOK("");
1108  NoMetadataButPropertyOK += "autoconfigurePileupRWTool(): 'mcCampaign' is used and passed to SUSYTools as '";
1109  NoMetadataButPropertyOK += m_mcCampaign;
1110  NoMetadataButPropertyOK += "'. Autoconfiguring PRW accordingly.";
1111  ATH_MSG_WARNING( NoMetadataButPropertyOK );
1112  mcCampaignMD = m_mcCampaign;
1113  }
1114  } else {
1115  ATH_MSG_ERROR( "autoconfigurePileupRWTool(): `mcCampaign' is not set properly.");
1116  return StatusCode::FAILURE;
1117  }
1118 #endif
1119  }
1120 
1121  // If requested set the PRW file to common PRW file of the processed MC campaign
1122  if (m_useCommonPRWFiles) {
1123  ATH_MSG_INFO( "autoconfigurePileupRWTool(): retrieving the common PRW file for MC campaign: " << mcCampaignMD );
1124  if (mcCampaignMD == "mc20a") {prwConfigFile = PathResolverFindCalibFile(m_commonPRWFileMC20a);}
1125  else if (mcCampaignMD == "mc20d") {prwConfigFile = PathResolverFindCalibFile(m_commonPRWFileMC20d);}
1126  else if (mcCampaignMD == "mc20e") {prwConfigFile = PathResolverFindCalibFile(m_commonPRWFileMC20e);}
1127  else if (mcCampaignMD == "mc21a") {prwConfigFile = PathResolverFindCalibFile(m_commonPRWFileMC21a);}
1128  else if (mcCampaignMD == "mc23a") {prwConfigFile = PathResolverFindCalibFile(m_commonPRWFileMC23a);}
1129  else if (mcCampaignMD == "mc23c") {prwConfigFile = PathResolverFindCalibFile(m_commonPRWFileMC23c);}
1130  else if (mcCampaignMD == "mc23d") {prwConfigFile = PathResolverFindCalibFile(m_commonPRWFileMC23d);}
1131  else if (mcCampaignMD == "mc23e") {prwConfigFile = PathResolverFindCalibFile(m_commonPRWFileMC23e);}
1132  else {
1133  ATH_MSG_ERROR( "autoconfigurePileupRWTool(): no common PRW file known for MC campaign: " << mcCampaignMD);
1134  return StatusCode::FAILURE;
1135  }
1136  }
1137  // Otherwise try finding the dedicated PRW file on /cvmfs
1138  else {
1139  // Retrieve the input file
1140  int DSID_INT = static_cast<int>(dsid);
1141  prwConfigFile += "DSID" + std::to_string(DSID_INT/1000) + "xxx/pileup_" + mcCampaignMD + "_dsid" + std::to_string(DSID_INT) + "_" + simType + ".root";
1142 
1143  if (RPVLLmode) prwConfigFile = TString(prwConfigFile).ReplaceAll(".root","_rpvll.root").Data();
1144 
1145  // PRW file specified by user
1146  // e.g. DSID700xxx/pileup_mc20a_dsid700015_FS.root
1147  if (!PRWfileName.empty()) {
1148  prwConfigFile = PRWfilesDir + PRWfileName;
1149  ATH_MSG_INFO( "autoconfigurePileupRWTool(): PRW file was specifed by user: " << prwConfigFile.data() );
1150  }
1151  }
1152 
1153  m_prwConfFiles.clear();
1154 
1155  // Combined mode can be only used when running with full data with the same MC samples
1156  if (Combinedmode) {
1157  if (mcCampaignMD.find("mc20") == std::string::npos) {
1158  ATH_MSG_ERROR( "autoconfigurePileupRWTool(): combined mode currently onlys supported for mc20! Impossible to autoconfigure PRW. Aborting." );
1159  return StatusCode::FAILURE;
1160  }
1161  // When using the common PRW files we can directly add them
1162  if (m_useCommonPRWFiles) {
1163  m_prwConfFiles.push_back( m_commonPRWFileMC20a );
1164  m_prwConfFiles.push_back( m_commonPRWFileMC20d );
1165  m_prwConfFiles.push_back( m_commonPRWFileMC20e );
1166  }
1167  // Otherwise we have to replace the mc campaign in the name accordingly
1168  else {
1169  m_prwConfFiles.emplace_back( TString(prwConfigFile).ReplaceAll(mcCampaignMD, "mc20a").Data() );
1170  m_prwConfFiles.emplace_back( TString(prwConfigFile).ReplaceAll(mcCampaignMD, "mc20d").Data() );
1171  m_prwConfFiles.emplace_back( TString(prwConfigFile).ReplaceAll(mcCampaignMD, "mc20e").Data() );
1172  }
1175  } else {
1176  m_prwConfFiles.push_back( prwConfigFile );
1177  if ( mcCampaignMD == "mc20d") {
1179  } else if (mcCampaignMD == "mc20e") {
1181  } else if (mcCampaignMD == "mc21a" || mcCampaignMD == "mc23a") {
1183  } else if (mcCampaignMD == "mc23c" || mcCampaignMD == "mc23d") {
1185  } else if (mcCampaignMD == "mc23e") {
1187  }
1188 
1189  }
1190  prwConfigFile = usePathResolver ? PathResolverFindCalibFile(prwConfigFile) : prwConfigFile;
1191 
1192  // Test if file exists (i.e. was requested already to /cvmfs if the DSID-specific PRW files are used) and is usable
1193  TFile testF(prwConfigFile.data(),"read");
1194  if (testF.IsZombie()) {
1195  ATH_MSG_ERROR( "autoconfigurePileupRWTool(): file not found -> " << prwConfigFile.data() << " ! Impossible to autoconfigure PRW. Aborting." );
1196  if ( (!standard_like) && (!RPVLLmode) )
1197  ATH_MSG_WARNING("Running with non-standard r-tag (" << amiTag.data() << "), but RPVLLmode not set. Perhaps you want to set \"PRW.autoconfigPRWRPVmode: 1\" in the config?");
1198  return StatusCode::FAILURE;
1199  }
1200 
1201  ATH_MSG_INFO( "autoconfigurePileupRWTool(): configuring PRW tool using " << prwConfigFile.data() );
1202  }
1203  // Return gracefully
1204  return StatusCode::SUCCESS;
1205 }
1206 
1208  if (source == 0) m_dataSource = Data;
1209  else if (source == 1) m_dataSource = FullSim;
1210  else if (source == 2) m_dataSource = AtlfastII;
1211  else ATH_MSG_ERROR("Trying to set data source to unknown type (" << source << ")");
1212 }
1213 
1214 
1215 bool SUSYObjDef_xAOD::check_isOption(const std::string& wp, const std::vector<std::string>& list) const {
1216  //check if the selected WP is supported
1217  return (std::find(list.begin(), list.end(),wp) != list.end());
1218 }
1219 
1220 bool SUSYObjDef_xAOD::check_isTighter(const std::string& wp1, const std::string& wp2, const std::vector<std::string>& list) const {
1221  //check if WP1 is tighter than WP2
1222  //it is assumed that both WPs are supported
1223  return (std::find(list.begin(),list.end(),wp1) > std::find(list.begin(), list.end(),wp2));
1224 }
1225 
1226 
1227 std::string SUSYObjDef_xAOD::EG_WP(const std::string& wp) const {
1228  //translate our electron wps to EGamma internal jargon
1229  //@ElectronPhotonSelectorTools/EGSelectorConfigurationMapping.h
1230  TString copy = TString(wp).Copy().ReplaceAll("AndBLayer","BL").ReplaceAll("LLH","LHElectron");
1231  // the DNN WPs are labeled in the map as e.g. TightDNNnoCFElectron or TightDNNElectron
1232  if (wp.find("DNNnoCF") != std::string::npos)
1233  copy.ReplaceAll("DNNnoCF", "DNNnoCFElectron");
1234  else if (wp.find("DNN") != std::string::npos)
1235  copy.ReplaceAll("DNN", "DNNElectron");
1236  return copy.Data();
1237 }
1238 
1239 std::vector<std::string> SUSYObjDef_xAOD::getElSFkeys(const std::string& mapFile) const {
1240 
1241  if( mapFile.empty() )
1242  return {};
1243 
1244  std::vector<std::string> theKeys;
1245 
1246  std::string filename = PathResolverFindCalibFile(mapFile);
1247  std::ifstream input( filename );
1248  for( std::string line; getline( input, line ); ){
1249  std::vector<std::string> tokens = split((const std::string)line,"=");
1250  if(tokens.size()){
1251  theKeys.push_back(tokens.at(0));
1252  }
1253  }
1254 
1255  return theKeys;
1256 }
1257 
1258 void SUSYObjDef_xAOD::configFromFile(bool& property, const std::string& propname, TEnv& rEnv,
1259  bool defaultValue)
1260 {
1261  if(m_bool_prop_set.find(m_conf_to_prop[propname])!=m_bool_prop_set.end()){
1262  ATH_MSG_INFO( "configFromFile(): property \"" << propname << "\" already set with value " << property << ". Ignoring change request." );
1263  rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1264  return;
1265  }
1266  property = rEnv.GetValue(propname.c_str(), static_cast<int>(defaultValue));
1267  ATH_MSG_INFO( "configFromFile(): Loaded property \"" << propname << "\" with value " << property );
1268  // Remove the item from the table
1269  rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1270 }
1271 
1272 
1273 void SUSYObjDef_xAOD::configFromFile(double& property, const std::string& propname, TEnv& rEnv,
1274  double defaultValue)
1275 {
1276  // ignore if already configured
1277  if (property > -90.) {
1278  ATH_MSG_INFO( "configFromFile(): property \"" << propname << "\" already set with value " << property << ". Ignoring change request." );
1279  rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1280  return;
1281  }
1282  property = rEnv.GetValue(propname.c_str(), defaultValue);
1283  ATH_MSG_INFO( "configFromFile(): Loaded property \"" << propname << "\" with value " << property );
1284  // Remove the item from the table
1285  rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1286 }
1287 
1288 
1289 void SUSYObjDef_xAOD::configFromFile(int& property, const std::string& propname, TEnv& rEnv,
1290  int defaultValue)
1291 {
1292  // ignore if already configured
1293  if (property > -90){
1294  ATH_MSG_INFO( "configFromFile(): property \"" << propname << "\" already set with value " << property << ". Ignoring change request." );
1295  rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1296  return;
1297  }
1298  property = rEnv.GetValue(propname.c_str(), defaultValue);
1299  ATH_MSG_INFO( "configFromFile(): Loaded property \"" << propname << "\" with value " << property );
1300  // Remove the item from the table
1301  rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1302 }
1303 
1304 
1305 void SUSYObjDef_xAOD::configFromFile(std::string& property, const std::string& propname, TEnv& rEnv,
1306  const std::string& defaultValue, bool allowEmpty)
1307 {
1308  // ignore if already configured
1309  if (!property.empty()){
1310  ATH_MSG_INFO( "configFromFile(): property \"" << propname << "\" already set with value " << property << ". Ignoring change request." );
1311  rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1312  return;
1313  }
1314  property = rEnv.GetValue(propname.c_str(), defaultValue.c_str());
1315  if (property.empty() && !allowEmpty) {
1316  ATH_MSG_FATAL("Read empty string property from text file (property name: " << propname << ")");
1317  }
1318 
1319  // post-processing to get rid of leading/trailing spaces and comments
1320  std::string tmp_prop = property.substr(0, property.find('#', 0));
1321  property = TString(tmp_prop).ReplaceAll(" ","").Data();
1322 
1323  // Interpret None as an empty string
1324  if (property=="None" || property=="NONE" || property=="none") {
1325  ATH_MSG_VERBOSE( "Property \"" << propname << "\" being set to empty string due to specification of \"" << property << "\"" );
1326  property = "";
1327  }
1328 
1329  ATH_MSG_INFO( "configFromFile(): Loaded property \"" << propname << "\" with value " << property );
1330  // Remove the item from the table
1331  rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1332 }
1333 
1334 
1336 {
1337  ATH_MSG_INFO( "***** ***** ***** *****" );
1338  ATH_MSG_INFO( "Configuring from file " << m_configFile );
1339 
1340  TEnv rEnv;
1341  int success = -1;
1342  success = rEnv.ReadFile(m_configFile.c_str(), kEnvAll);
1343  if (success != 0) return StatusCode::FAILURE;
1344 
1345  ATH_MSG_INFO( "Config file opened" );
1346 
1348  m_jetInputType = xAOD::JetInput::Type(rEnv.GetValue("Jet.InputType", 9));
1349  ATH_MSG_INFO( "readConfig(): Loaded property Jet.InputType with value " << static_cast<int>(m_jetInputType));
1350  }
1351  // Remove the item from the table
1352  rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject("Jet.InputType") );
1353 
1354  if (m_muId == static_cast<int>(xAOD::Muon::Quality(xAOD::Muon::VeryLoose))) {
1355  int muIdTmp = rEnv.GetValue("Muon.Id", 1);
1356  m_muId = (muIdTmp<4 ? static_cast<int>(xAOD::Muon::Quality(muIdTmp)) : muIdTmp);
1357  ATH_MSG_INFO( "readConfig(): Loaded property Muon.Id with value " << m_muId);
1358  // Remove the item from the table
1359  rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject("Muon.Id") );
1360  }
1361  if (m_muIdBaseline == static_cast<int>(xAOD::Muon::Quality(xAOD::Muon::VeryLoose))) {
1362  int muIdTmp = rEnv.GetValue("MuonBaseline.Id", 1);
1363  m_muIdBaseline = (muIdTmp<4 ? static_cast<int>(xAOD::Muon::Quality(muIdTmp)) : muIdTmp);
1364  ATH_MSG_INFO( "readConfig(): Loaded property MuonBaseline.Id with value " << m_muIdBaseline);
1365  // Remove the item from the table
1366  rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject("MuonBaseline.Id") );
1367  }
1368 
1369  // Deprecation warning
1370  std::string prop = rEnv.GetValue("Jet.JVT_WP", "");
1371  if ( !prop.empty() ) {
1372  ATH_MSG_WARNING("readConfig(): Found deprecated property name Jet.JVT_WP. Please move to using Jet.JvtWP. Propagating for now.");
1373  rEnv.SetValue("Jet.JvtWP", prop.c_str());
1374  rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject("Jet.JVT_WP") );
1375  }
1376 
1377  //load config file to Properties map (only booleans for now)
1378  m_conf_to_prop["IsRun3"] = "IsRun3";
1379  m_conf_to_prop["StrictConfigCheck"] = "StrictConfigCheck";
1380  m_conf_to_prop["Btag.enable"] = "UseBtagging";
1381  m_conf_to_prop["BtagTrkJet.enable"] = "UseBtaggingTrkJet";
1382  m_conf_to_prop["Ele.CrackVeto"] = "EleCrackVeto";
1383  m_conf_to_prop["EleBaseline.CrackVeto"] = "EleBaselineCrackVeto";
1384  m_conf_to_prop["Ele.ForceNoId"] = "EleForceNoId";
1385  m_conf_to_prop["Ele.AllowRun3TrigSFFallback"] = "EleAllowRun3TrigSFFallback";
1386  m_conf_to_prop["Muon.ForceNoId"] = "MuonForceNoId";
1387  m_conf_to_prop["Muon.TTVASF"] = "MuonTTVASF";
1388  m_conf_to_prop["Muon.passedHighPt"] = "MuonRequireHighPtCuts";
1389  m_conf_to_prop["PhotonBaseline.CrackVeto"] = "PhotonBaselineCrackVeto";
1390  m_conf_to_prop["Photon.CrackVeto"] = "PhotonCrackVeto";
1391  m_conf_to_prop["Photon.AllowLate"] = "PhotonAllowLate";
1392 
1393  m_conf_to_prop["FwdJet.doJVT"] = "FwdJetDoJVT";
1394 
1395  m_conf_to_prop["OR.DoBoostedElectron"] = "DoBoostedElectronOR";
1396  m_conf_to_prop["OR.DoBoostedMuon"] = "DoBoostedMuonOR";
1397  m_conf_to_prop["OR.DoMuonJetGhostAssociation"] = "ORDoMuonJetGhostAssociation";
1398  m_conf_to_prop["OR.DoTau"] = "DoTauOR";
1399  m_conf_to_prop["OR.DoPhoton"] = "DoPhotonOR";
1400  m_conf_to_prop["OR.DoEleJet"] = "DoEleJetOR";
1401  m_conf_to_prop["OR.DoElEl"] = "DoElElOR";
1402  m_conf_to_prop["OR.DoElMu"] = "DoElMuOR";
1403  m_conf_to_prop["OR.DoMuonJet"] = "DoMuonJetOR";
1404  m_conf_to_prop["OR.Bjet"] = "DoBjetOR";
1405  m_conf_to_prop["OR.ElBjet"] = "DoElBjetOR";
1406  m_conf_to_prop["OR.MuBjet"] = "DoMuBjetOR";
1407  m_conf_to_prop["OR.TauBjet"] = "DoTauBjetOR";
1408  m_conf_to_prop["OR.DoFatJets"] = "DoFatJetOR";
1409  m_conf_to_prop["OR.RemoveCaloMuons"] = "ORRemoveCaloMuons";
1410  m_conf_to_prop["OR.MuJetApplyRelPt"] = "ORMuJetApplyRelPt";
1411  m_conf_to_prop["OR.InputLabel"] = "ORInputLabel";
1412  m_conf_to_prop["Trigger.UpstreamMatching"] = "TriggerUpstreamMatching";
1413 
1414  m_conf_to_prop["SigLep.RequireIso"] = "SigLepRequireIso";
1415  m_conf_to_prop["SigEl.RequireIso"] = "SigElRequireIso";
1416  m_conf_to_prop["SigMu.RequireIso"] = "SigMuRequireIso";
1417  m_conf_to_prop["SigPh.RequireIso"] = "SigPhRequireIso";
1418  m_conf_to_prop["SigLepPh.IsoCloseByOR"] = "SigLepPhIsoCloseByOR";
1419  m_conf_to_prop["MET.RemoveOverlappingCaloTaggedMuons"] = "METRemoveORCaloTaggedMuons";
1420  m_conf_to_prop["MET.DoSetMuonJetEMScale"] = "METDoSetMuonJetEMScale";
1421  m_conf_to_prop["MET.DoRemoveMuonJets"] = "METDoRemoveMuonJets";
1422  m_conf_to_prop["MET.DoUseGhostMuons"] = "METUseGhostMuons";
1423  m_conf_to_prop["MET.DoMuonEloss"] = "METDoMuonEloss";
1424 
1425  m_conf_to_prop["MET.DoTrkSyst"] = "METDoTrkSyst";
1426  m_conf_to_prop["MET.DoCaloSyst"] = "METDoCaloSyst";
1427 
1428  m_conf_to_prop["Tau.DoTruthMatching"] = "TauDoTruthMatching";
1429  //
1430 
1431  configFromFile(m_slices["ele"], "Slices.Ele", rEnv, true);
1432  configFromFile(m_slices["pho"], "Slices.Pho", rEnv, true);
1433  configFromFile(m_slices["mu"], "Slices.Mu", rEnv, true);
1434  configFromFile(m_slices["tau"], "Slices.Tau", rEnv, true);
1435  configFromFile(m_slices["jet"], "Slices.Jet", rEnv, true);
1436  configFromFile(m_slices["bjet"], "Slices.BJet", rEnv, true);
1437  configFromFile(m_slices["fjet"], "Slices.FJet", rEnv, true);
1438  configFromFile(m_slices["tjet"], "Slices.TJet", rEnv, true);
1439  configFromFile(m_slices["met"], "Slices.MET", rEnv, true);
1440  //
1441  configFromFile(m_isRun3, "IsRun3", rEnv, false);
1442  //
1443  configFromFile(m_eleBaselinePt, "EleBaseline.Pt", rEnv, 10000.);
1444  configFromFile(m_eleBaselineEta, "EleBaseline.Eta", rEnv, 2.47);
1445  configFromFile(m_eleIdBaseline, "EleBaseline.Id", rEnv, "LooseAndBLayerLLH");
1446  configFromFile(m_eleBaselineIso_WP, "EleBaseline.Iso", rEnv, "None");
1447  configFromFile(m_eleConfigBaseline, "EleBaseline.Config", rEnv, "None");
1448  configFromFile(m_eleBaselineCrackVeto, "EleBaseline.CrackVeto", rEnv, false);
1449  configFromFile(m_force_noElId, "Ele.ForceNoId", rEnv, false);
1450 
1451  //
1452  configFromFile(m_elePt, "Ele.Et", rEnv, 25000.);
1453  configFromFile(m_eleEta, "Ele.Eta", rEnv, 2.47);
1454  configFromFile(m_eleCrackVeto, "Ele.CrackVeto", rEnv, false);
1455  configFromFile(m_eleIso_WP, "Ele.Iso", rEnv, "Loose_VarRad");
1456  configFromFile(m_eleIsoHighPt_WP, "Ele.IsoHighPt", rEnv, "HighPtCaloOnly");
1457  configFromFile(m_eleIsoHighPtThresh, "Ele.IsoHighPtThresh", rEnv, 200e3);
1458  configFromFile(m_eleChID_WP, "Ele.CFT", rEnv, "None"); // Loose is the only one supported for the moment, and not many clients yet.
1459  configFromFile(m_eleChIso, "Ele.CFTIso", rEnv, true); // use charge ID SFs without iso applied
1460  configFromFile(m_eleChID_signal, "Ele.CFTSignal", rEnv, !m_eleChID_WP.empty()); // Require ECID as part of the signal lepton definition
1461  configFromFile(m_eleId, "Ele.Id", rEnv, "TightLLH");
1462  configFromFile(m_eleLRT, "Ele.LRTOR", rEnv, false);
1463  configFromFile(m_eleLRT_strat, "Ele.LRTORStrat", rEnv, 0);
1464  configFromFile(m_eleConfig, "Ele.Config", rEnv, "None");
1465  configFromFile(m_eled0sig, "Ele.d0sig", rEnv, 5.);
1466  configFromFile(m_elez0, "Ele.z0", rEnv, 0.5);
1467  configFromFile(m_elebaselined0sig, "EleBaseline.d0sig", rEnv, -99.);
1468  configFromFile(m_elebaselinez0, "EleBaseline.z0", rEnv, 0.5);
1469  configFromFile(m_eleIdExpert, "Ele.IdExpert", rEnv, false);
1470  configFromFile(m_EG_corrModel, "Ele.EffNPcorrModel", rEnv, "TOTAL");
1471  configFromFile(m_EG_corrFNList, "Ele.EffCorrFNList", rEnv, "None");
1472  configFromFile(m_electronTriggerSFStringSingle, "Ele.TriggerSFStringSingle", rEnv, "SINGLE_E_2015_e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose_2016_2018_e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0");
1473  configFromFile(m_eleEffMapFilePath, "Ele.EffMapFilePath", rEnv, "ElectronEfficiencyCorrection/2015_2025/rel22.2/2025_Run3_Consolidated_Recommendation_v4/map2.txt");
1474  configFromFile(m_eleAllowRun3TrigSFFallback, "Ele.AllowRun3TrigSFFallback", rEnv, false);
1475  configFromFile(m_eleForceFullSimCalib, "Ele.ForceFullSimCalib", rEnv, false);
1476 
1477  configFromFile(m_trig2015combination_singleLep, "Trig.Singlelep2015", rEnv, "e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose || mu20_iloose_L1MU15_OR_mu40");
1478  configFromFile(m_trig2016combination_singleLep, "Trig.Singlelep2016", rEnv, "e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0 || mu26_ivarmedium_OR_mu50");
1479  configFromFile(m_trig2017combination_singleLep, "Trig.Singlelep2017", rEnv, "e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0 || mu26_ivarmedium_OR_mu50");
1480  configFromFile(m_trig2018combination_singleLep, "Trig.Singlelep2018", rEnv, "e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0 || mu26_ivarmedium_OR_mu50");
1481  configFromFile(m_trig2022combination_singleLep, "Trig.Singlelep2022", rEnv, "e26_lhtight_ivarloose_L1EM22VHI_OR_e60_lhmedium_L1EM22VHI_OR_e140_lhloose_L1EM22VHI || HLT_mu24_ivarmedium_L1MU14FCH_OR_HLT_mu50_L1MU14FCH");
1482  configFromFile(m_trig2023combination_singleLep, "Trig.Singlelep2023", rEnv, "e26_lhtight_ivarloose_L1eEM26M_OR_e60_lhmedium_L1eEM26M_OR_e140_lhloose_L1eEM26M || HLT_mu24_ivarmedium_L1MU14FCH_OR_HLT_mu50_L1MU14FCH");
1483  configFromFile(m_trig2024combination_singleLep, "Trig.Singlelep2024", rEnv, "e26_lhtight_ivarloose_L1eEM26M_OR_e60_lhmedium_L1eEM26M_OR_e140_lhloose_L1eEM26M || HLT_mu24_ivarmedium_L1MU14FCH_OR_HLT_mu50_L1MU14FCH");
1484  configFromFile(m_trigNToys_diLep, "Trig.DilepNToys", rEnv, 250); // 0 means calculate from formula instead - needs to be supported for the trigger combination
1485  configFromFile(m_trig2015combination_diLep, "Trig.Dilep2015", rEnv, "e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose || mu20_iloose_L1MU15_OR_mu40 || 2e12_lhloose_L12EM10VH || e17_lhloose_mu14 || e7_lhmedium_mu24 || mu18_mu8noL1 || 2mu10");
1486  configFromFile(m_trig2016combination_diLep, "Trig.Dilep2016", rEnv, "e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0 || mu26_ivarmedium_OR_mu50 || 2e17_lhvloose_nod0 || e17_lhloose_nod0_mu14 || e7_lhmedium_nod0_mu24 || e26_lhmedium_nod0_L1EM22VHI_mu8noL1 || mu22_mu8noL1 || 2mu14");
1487  configFromFile(m_trig2017combination_diLep, "Trig.Dilep2017", rEnv, "e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0 || mu26_ivarmedium_OR_mu50 || 2e24_lhvloose_nod0 || e17_lhloose_nod0_mu14 || e7_lhmedium_nod0_mu24 || e26_lhmedium_nod0_mu8noL1 || mu22_mu8noL1 || 2mu14");
1488  configFromFile(m_trig2018combination_diLep, "Trig.Dilep2018", rEnv, "e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0 || mu26_ivarmedium_OR_mu50 || 2e24_lhvloose_nod0 || e17_lhloose_nod0_mu14 || e7_lhmedium_nod0_mu24 || e26_lhmedium_nod0_mu8noL1 || mu22_mu8noL1 || 2mu14");
1489  // configFromFile(m_trig2022combination_diLep, "Trig.Dilep2022", rEnv, "");
1490  configFromFile(m_trigNToys_multiLep, "Trig.MultiNToys", rEnv, 250); // 0 means calculate from formula instead - needs to be supported for the trigger combination
1491  configFromFile(m_trig2015combination_multiLep, "Trig.Multi2015", rEnv, "e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose || mu20_iloose_L1MU15_OR_mu40 || 2e12_lhloose_L12EM10VH || e17_lhloose_2e9_lhloose || 2e12_lhloose_mu10 || e12_lhloose_2mu10 || e17_lhloose_mu14 || e7_lhmedium_mu24 || mu18_mu8noL1 || 2mu10 || 3mu6");
1492  configFromFile(m_trig2016combination_multiLep, "Trig.Multi2016", rEnv, "e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0 || mu26_ivarmedium_OR_mu50 || 2e17_lhvloose_nod0 || e17_lhloose_nod0_mu14 || e7_lhmedium_nod0_mu24 || e26_lhmedium_nod0_L1EM22VHI_mu8noL1 || e17_lhloose_nod0_2e9_lhloose_nod0 || e12_lhloose_nod0_2mu10 || 2e12_lhloose_nod0_mu10 || mu22_mu8noL1 || 2mu14 || 3mu6");
1493  configFromFile(m_trig2017combination_multiLep, "Trig.Multi2017", rEnv, "e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0 || mu26_ivarmedium_OR_mu50 || 2e24_lhvloose_nod0 || e17_lhloose_nod0_mu14 || e7_lhmedium_nod0_mu24 || e26_lhmedium_nod0_mu8noL1 || e24_lhvloose_nod0_2e12_lhvloose_nod0_L1EM20VH_3EM10VH || e12_lhloose_nod0_2mu10 || 2e12_lhloose_nod0_mu10 || mu22_mu8noL1 || 2mu14 || 3mu6");
1494  configFromFile(m_trig2018combination_multiLep, "Trig.Multi2018", rEnv, "e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0 || mu26_ivarmedium_OR_mu50 || 2e24_lhvloose_nod0 || e17_lhloose_nod0_mu14 || e7_lhmedium_nod0_mu24 || e26_lhmedium_nod0_mu8noL1 || e24_lhvloose_nod0_2e12_lhvloose_nod0_L1EM20VH_3EM10VH || e12_lhloose_nod0_2mu10 || 2e12_lhloose_nod0_mu10 || mu22_mu8noL1 || 2mu14 || 3mu6");
1495  // configFromFile(m_trig2022combination_multiLep, "Trig.Multi2022", rEnv, "");
1496  configFromFile(m_trigNToys_diPhoton, "Trig.DiphotonNToys", rEnv, 250); // 0 means calculate from formula instead - needs to be supported for the trigger combination
1497  configFromFile(m_trig2015combination_diPhoton, "Trig.Diphoton2015", rEnv, "g35_loose_g25_loose");
1498  configFromFile(m_trig2016combination_diPhoton, "Trig.Diphotonp2016", rEnv, "g35_loose_g25_loose");
1499  configFromFile(m_trig2017combination_diPhoton, "Trig.Diphotonp2017", rEnv, "g35_medium_g25_medium_L12EM20VH");
1500  configFromFile(m_trig2018combination_diPhoton, "Trig.Diphotonp2018", rEnv, "g35_medium_g25_medium_L12EM20VH");
1501  // configFromFile(m_trig2018combination_diPhoton, "Trig.Diphotonp2022", rEnv, "");
1502  //
1503  configFromFile(m_muBaselinePt, "MuonBaseline.Pt", rEnv, 10000.);
1504  configFromFile(m_muBaselineEta, "MuonBaseline.Eta", rEnv, 2.7);
1505  configFromFile(m_force_noMuId, "Muon.ForceNoId", rEnv, false);
1506  configFromFile(m_muBaselineIso_WP, "MuonBaseline.Iso", rEnv, "None");
1507  configFromFile(m_doTTVAsf, "Muon.TTVASF", rEnv, true);
1508  //
1509  configFromFile(m_muPt, "Muon.Pt", rEnv, 25000.);
1510  configFromFile(m_muEta, "Muon.Eta", rEnv, 2.7);
1511  configFromFile(m_muIso_WP, "Muon.Iso", rEnv, "Loose_VarRad");
1512  configFromFile(m_muIsoHighPt_WP, "Muon.IsoHighPt", rEnv, "Loose_VarRad");
1513  configFromFile(m_muIsoHighPtThresh, "Muon.IsoHighPtThresh", rEnv, 200e3);
1514  configFromFile(m_mud0sig, "Muon.d0sig", rEnv, 3.);
1515  configFromFile(m_muz0, "Muon.z0", rEnv, 0.5);
1516  configFromFile(m_mubaselined0sig, "MuonBaseline.d0sig", rEnv, -99.);
1517  configFromFile(m_mubaselinez0, "MuonBaseline.z0", rEnv, 0.5);
1518  configFromFile(m_murequirepassedHighPtCuts, "Muon.passedHighPt", rEnv, false);
1519  configFromFile(m_muHighPtExtraSmear, "Muon.HighPtExtraSmear", rEnv, false);
1520  configFromFile(m_muEffCorrForce1D, "Muon.EffCorrForce1D", rEnv, false);
1521  //
1522  configFromFile(m_muTriggerSFCalibRelease, "Muon.TriggerSFCalibRelease" ,rEnv, "None");
1523  configFromFile(m_muTriggerSFCalibFilename, "Muon.TriggerSFCalibFilename",rEnv, "None");
1524  //
1525  configFromFile(m_muCosmicz0, "MuonCosmic.z0", rEnv, 1.);
1526  configFromFile(m_muCosmicd0, "MuonCosmic.d0", rEnv, 0.2);
1527  //
1528  // LRT muons
1529  configFromFile(m_muLRT, "Muon.LRTOR", rEnv, false);
1530  //
1531  configFromFile(m_badmuQoverP, "BadMuon.qoverp", rEnv, 0.4);
1532  //
1533  configFromFile(m_muCalibrationMode, "Muon.CalibrationMode", rEnv, 0); // 0: correctData_CB
1534  //
1535  configFromFile(m_photonBaselinePt, "PhotonBaseline.Pt", rEnv, 25000.);
1536  configFromFile(m_photonBaselineEta, "PhotonBaseline.Eta", rEnv, 2.37);
1537  configFromFile(m_photonIdBaseline, "PhotonBaseline.Id", rEnv, "Tight");
1538  configFromFile(m_photonBaselineCrackVeto, "PhotonBaseline.CrackVeto", rEnv, true);
1539  configFromFile(m_photonBaselineIso_WP, "PhotonBaseline.Iso", rEnv, "None");
1540  //
1541  configFromFile(m_photonPt, "Photon.Pt", rEnv, 130000.);
1542  configFromFile(m_photonEta, "Photon.Eta", rEnv, 2.37);
1543  configFromFile(m_photonId, "Photon.Id", rEnv, "Tight");
1544  configFromFile(m_photonIso_WP, "Photon.Iso", rEnv, "FixedCutTight");
1545  configFromFile(m_photonTriggerName, "Photon.TriggerName", rEnv, "DI_PH_2015_2016_g20_tight_2016_g22_tight_2017_2018_g20_tight_icalovloose_L1EM15VHI"); // for symmetric diphoton triggers
1546  configFromFile(m_photonCrackVeto, "Photon.CrackVeto", rEnv, true);
1547  configFromFile(m_photonAllowLate, "Photon.AllowLate", rEnv, false);
1548  //
1549  configFromFile(m_tauPrePtCut, "Tau.PrePtCut", rEnv, 0.);
1550  configFromFile(m_tauPt, "Tau.Pt", rEnv, 20000.);
1551  configFromFile(m_tauEta, "Tau.Eta", rEnv, 2.5);
1552  configFromFile(m_tauId, "Tau.Id", rEnv, "Medium");
1553  configFromFile(m_tauConfigPath, "Tau.ConfigPath", rEnv, "default");
1554  configFromFile(m_tauIdBaseline, "TauBaseline.Id", rEnv, "Medium");
1555  configFromFile(m_tauConfigPathBaseline, "TauBaseline.ConfigPath", rEnv, "default");
1556  configFromFile(m_tauDoTTM, "Tau.DoTruthMatching", rEnv, false);
1557  //
1558  configFromFile(m_tauSmearingToolRecommendationTag,"Tau.SmearingToolRecommendationTag", rEnv, "2025-prerec");
1559  configFromFile(m_tauSmearingToolGenerator,"Tau.SmearingToolGenerator", rEnv, "PoPy");
1560  configFromFile(m_tauEffToolRecommendationTag,"Tau.EffToolRecommendationTag", rEnv, "2025-prerec");
1561  configFromFile(m_ApplyMVATESQualityCheck, "Tau.MVATESQualityCheck", rEnv, true);
1562  //
1563  configFromFile(m_jetPt, "Jet.Pt", rEnv, 20000.);
1564  configFromFile(m_jetEta, "Jet.Eta", rEnv, 2.8);
1565  configFromFile(m_JvtWP, "Jet.JvtWP", rEnv, "FixedEffPt"); // https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/PileupJetRecommendations
1566  configFromFile(m_JvtPtMax, "Jet.JvtPtMax", rEnv, 60.0e3);
1567  configFromFile(m_JvtConfigRun2, "Jet.JvtConfigRun2", rEnv, "JetJvtEfficiency/May2024/NNJvtSFFile_Run2_EMPFlow.root", true); // empty string means dummy SF
1568  configFromFile(m_JvtConfigRun3, "Jet.JvtConfigRun3", rEnv, "JetJvtEfficiency/May2024/NNJvtSFFile_Run3_EMPFlow.root", true); // empty string means dummy SF
1569  configFromFile(m_jetUncertaintiesConfig, "Jet.UncertConfig", rEnv, getDefaultJetUncConfig() ); // https://twiki.cern.ch/twiki/bin/view/AtlasProtected/JetUncertaintiesRel22/
1570  configFromFile(m_jetUncertaintiesAnalysisFile, "Jet.AnalysisFile", rEnv, "default"); // https://twiki.cern.ch/twiki/bin/view/AtlasProtected/JetUncertaintiesRel21Summer2018SmallR
1571  configFromFile(m_jetUncertaintiesCalibArea, "Jet.UncertCalibArea", rEnv, "default"); // Defaults to default area set by tool
1572  configFromFile(m_jetUncertaintiesMCType, "Jet.UncertMCType", rEnv, "", true); // empty string means the MCType is guessed
1573  configFromFile(m_jetUncertaintiesPDsmearing, "Jet.UncertPDsmearing", rEnv, true); // for non "SimpleJER" config, run the PDSmear systematics. This are labelled with an __2 if they are being used, but otherwise will have the same tree name as the JET_JER systematic trees.
1574  configFromFile(m_fatJets, "Jet.LargeRcollection", rEnv, "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets"); // set to "None" to turn off large jets
1575  configFromFile(m_fatJetUncConfig, "Jet.LargeRuncConfig", rEnv, "rel22/Spring2025_PreRec/R10_CategoryJES_FullJER_FullJMS.config");
1576  configFromFile(m_fatJetUncertaintiesPDsmearing, "Jet.LargeRUncertPDsmearing", rEnv, true); // for non "SimpleJER" config, run the PDSmear systematics. This are labelled with an __2 if they are being used, but otherwise will have the same tree name as the JET_JER systematic trees.
1577  configFromFile(m_fatJetUncVars, "Jet.LargeRuncVars", rEnv, "default"); // do all if not specified
1578  configFromFile(m_WtagConfig, "Jet.WtaggerConfig", rEnv, "SmoothedContainedWTagger_AntiKt10UFOCSSKSoftDrop_FixedSignalEfficiency80_20220221.dat");
1579  configFromFile(m_ZtagConfig, "Jet.ZtaggerConfig", rEnv, "SmoothedContainedZTagger_AntiKt10UFOCSSKSoftDrop_FixedSignalEfficiency80_20220221.dat");
1580  configFromFile(m_WZTaggerCalibArea, "Jet.WZTaggerCalibArea", rEnv, "Winter2024_R22_PreRecs/SmoothedWZTaggers/");
1581  configFromFile(m_ToptagConfig, "Jet.ToptaggerConfig", rEnv, "DNNTagger_AntiKt10UFOSD_TopInclusive80_Oct30.dat");
1582  configFromFile(m_JetTruthLabelName, "Jet.JetTruthLabelName", rEnv, "R10TruthLabel_R21Precision_2022v1");
1583  configFromFile(m_TopTaggerCalibArea, "Jet.TopTaggerCalibArea", rEnv, "Winter2024_R22_PreRecs/JSSWTopTaggerDNN/");
1584  configFromFile(m_jesConfig, "Jet.JESConfig", rEnv, m_isRun3 ? "AntiKt4EMPFlow_MC23a_PreRecR22_Phase2_CalibConfig_ResPU_EtaJES_GSC_241208_InSitu.config" : "PreRec_R22_PFlow_ResPU_EtaJES_GSC_February23_230215.config"); //https://twiki.cern.ch/twiki/bin/view/AtlasProtected/ApplyJetCalibrationR22
1585  configFromFile(m_jesConfigAFII, "Jet.JESConfigAFII", rEnv, m_isRun3 ? "AntiKt4EMPFlow_MC23a_PreRecR22_Phase2_CalibConfig_ResPU_EtaJES_GSC_241208_InSitu.config" : "PreRec_R22_PFlow_ResPU_EtaJES_GSC_February23_230215.config");
1586  configFromFile(m_jesConfigJMS, "Jet.JESConfigJMS", rEnv, "JES_JMS_MC16Recommendation_Consolidated_MC_only_EMTopo_July2019_Rel21.config");
1587  configFromFile(m_jesConfigJMSData, "Jet.JESConfigJMSData", rEnv, "JES_JMS_MC16Recommendation_Consolidated_data_only_EMTopo_Sep2019_Rel21.config");
1588  configFromFile(m_jesConfigFat, "Jet.JESConfigFat", rEnv, "JES_MC20PreRecommendation_R10_UFO_CSSK_SoftDrop_JMS_R21Insitu_26Nov2024.config");
1589  configFromFile(m_jesConfigFatData, "Jet.JESConfigFatData", rEnv, "JES_MC20PreRecommendation_R10_UFO_CSSK_SoftDrop_JMS_R21Insitu_26Nov2024.config");
1590  configFromFile(m_jesCalibSeq, "Jet.CalibSeq", rEnv, "JetArea_Residual_EtaJES_GSC_Insitu");
1591  configFromFile(m_jesCalibSeqJMS, "Jet.CalibSeqJMS", rEnv, "JetArea_Residual_EtaJES_GSC");
1592  configFromFile(m_jesCalibSeqFat, "Jet.CalibSeqFat", rEnv, "EtaJES_JMS");
1593  configFromFile(m_jesCalibArea, "Jet.CalibArea", rEnv, m_isRun3 ? "00-04-83" : "00-04-82");
1594  //
1595  configFromFile(m_defaultTrackJets, "TrackJet.Coll", rEnv, "AntiKtVR30Rmax4Rmin02TrackJets");
1596  configFromFile(m_trkJetPt, "TrackJet.Pt", rEnv, 20000.);
1597  configFromFile(m_trkJetEta, "TrackJet.Eta", rEnv, 2.8);
1598  //
1599  configFromFile(m_badJetCut, "BadJet.Cut", rEnv, "LooseBad");
1600  //
1601  configFromFile(m_doFwdJVT, "FwdJet.doJVT", rEnv, false); // https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/PileupJetRecommendations
1602  configFromFile(m_fJvtWP, "FwdJet.JvtWP", rEnv, "Loose");
1603  configFromFile(m_fJvtPtMax, "FwdJet.JvtPtMax", rEnv, 60e3);
1604  configFromFile(m_fJvtEtaMin, "FwdJet.JvtEtaMin", rEnv, 2.5);
1605  configFromFile(m_fJvtConfigRun2, "FwdJet.JvtConfigRun2", rEnv, "JetJvtEfficiency/May2024/fJvtSFFile_Run2_EMPFlow.root", true); // empty string means dummy SF
1606  configFromFile(m_fJvtConfigRun3, "FwdJet.JvtConfigRun3", rEnv, "JetJvtEfficiency/May2024/fJvtSFFile_Run2_EMPFlow.root", true); // empty string means dummy SF
1607  configFromFile(m_JMScalib, "Jet.JMSCalib", rEnv, false);
1608  //
1609  configFromFile(m_useBtagging, "Btag.enable", rEnv, true);
1610  configFromFile(m_BtagTagger, "Btag.Tagger", rEnv, "GN2v01");
1611  configFromFile(m_BtagWP, "Btag.WP", rEnv, "Continuous");
1612  configFromFile(m_BtagMinPt, "Btag.MinPt", rEnv, -1.); // Not calibrated below 20
1613 
1614  configFromFile(m_bTaggingCalibrationFilePath, "Btag.CalibPath", rEnv, m_isRun3 ? "xAODBTaggingEfficiency/13p6TeV/MC23_2025-06-17_GN2v01_v4.root": "xAODBTaggingEfficiency/13TeV/MC20_2025-06-17_GN2v01_v4.root");
1615  configFromFile(m_BtagSystStrategy, "Btag.SystStrategy", rEnv, "SFEigen");
1616  configFromFile(m_EigenvectorReductionB, "Btag.EigenvectorReductionB", rEnv, "Loose");
1617  configFromFile(m_EigenvectorReductionC, "Btag.EigenvectorReductionC", rEnv, "Loose");
1618  configFromFile(m_EigenvectorReductionLight, "Btag.EigenvectorReductionLight", rEnv, "Loose");
1619 
1620  configFromFile(m_useBtagging_trkJet, "BtagTrkJet.enable", rEnv, true);
1621  configFromFile(m_BtagTagger_trkJet, "BtagTrkJet.Tagger", rEnv, "DL1r");
1622  configFromFile(m_BtagWP_trkJet, "BtagTrkJet.WP", rEnv, "FixedCutBEff_77");
1623  configFromFile(m_BtagMinPt_trkJet, "BtagTrkJet.MinPt", rEnv, -1.); // Not calibrated below 10
1624  configFromFile(m_BtagKeyOverride, "Btag.KeyOverride", rEnv, "", true);
1625  //
1626  configFromFile(m_orDoBoostedElectron, "OR.DoBoostedElectron", rEnv, true);
1627  configFromFile(m_orBoostedElectronC1, "OR.BoostedElectronC1", rEnv, -999.); // set to positive number to override default
1628  configFromFile(m_orBoostedElectronC2, "OR.BoostedElectronC2", rEnv, -999.); // set to positive number to override default - specify in MeV (i.e. "10*GeV" will nor work in the config file)
1629  configFromFile(m_orBoostedElectronMaxConeSize, "OR.BoostedElectronMaxConeSize", rEnv, -999.); // set to positive number to override default
1630  configFromFile(m_orDoBoostedMuon, "OR.DoBoostedMuon", rEnv, true);
1631  configFromFile(m_orBoostedMuonC1, "OR.BoostedMuonC1", rEnv, -999.); // set to positive number to override default
1632  configFromFile(m_orBoostedMuonC2, "OR.BoostedMuonC2", rEnv, -999.); // set to positive number to override default - specify in MeV (i.e. "10*GeV" will nor work in the config file)
1633  configFromFile(m_orBoostedMuonMaxConeSize, "OR.BoostedMuonMaxConeSize", rEnv, -999.); // set to positive number to override default
1634  configFromFile(m_orDoMuonJetGhostAssociation, "OR.DoMuonJetGhostAssociation", rEnv, true);
1635  configFromFile(m_orDoTau, "OR.DoTau", rEnv, false);
1636  configFromFile(m_orDoPhoton, "OR.DoPhoton", rEnv, false);
1637  configFromFile(m_orDoEleJet, "OR.EleJet", rEnv, true);
1638  configFromFile(m_orDoElEl, "OR.ElEl", rEnv, false);
1639  configFromFile(m_orDoElMu, "OR.ElMu", rEnv, false);
1640  configFromFile(m_orDoMuonJet, "OR.MuonJet", rEnv, true);
1641  configFromFile(m_orDoBjet, "OR.Bjet", rEnv, false);
1642  configFromFile(m_orDoElBjet, "OR.ElBjet", rEnv, false);
1643  configFromFile(m_orDoMuBjet, "OR.MuBjet", rEnv, false);
1644  configFromFile(m_orDoTauBjet, "OR.TauBjet", rEnv, false);
1645  configFromFile(m_orApplyRelPt, "OR.MuJetApplyRelPt", rEnv, false);
1646  configFromFile(m_orMuJetPtRatio, "OR.MuJetPtRatio", rEnv, -999.);
1647  configFromFile(m_orMuJetTrkPtRatio, "OR.MuJetTrkPtRatio", rEnv, -999.);
1648  configFromFile(m_orRemoveCaloMuons, "OR.RemoveCaloMuons", rEnv, true);
1649  configFromFile(m_orMuJetInnerDR, "OR.MuJetInnerDR", rEnv, -999.);
1650  configFromFile(m_orBtagWP, "OR.BtagWP", rEnv, "FixedCutBEff_85");
1651  configFromFile(m_orInputLabel, "OR.InputLabel", rEnv, "selected"); //"baseline"
1652  configFromFile(m_orPhotonFavoured, "OR.PhotonFavoured", rEnv, false);
1653  configFromFile(m_orBJetPtUpperThres, "OR.BJetPtUpperThres", rEnv, -1.); // upper pt threshold of b-jet in OR in unit of MeV, -1 means no pt threshold
1654  configFromFile(m_orLinkOverlapObjects, "OR.LinkOverlapObjects", rEnv, false);
1655  //
1656  configFromFile(m_orDoFatjets, "OR.DoFatJets", rEnv, false);
1657  configFromFile(m_EleFatJetDR, "OR.EleFatJetDR", rEnv, -999.);
1658  configFromFile(m_JetFatJetDR, "OR.JetFatJetDR", rEnv, -999.);
1659  //
1660  configFromFile(m_useTRUTH3, "Truth.UseTRUTH3", rEnv, true);
1662  configFromFile(m_upstreamTriggerMatching, "Trigger.UpstreamMatching", rEnv, false);
1663  configFromFile(m_trigMatchingPrefix, "Trigger.MatchingPrefix", rEnv, "", true);
1664  //
1665  configFromFile(m_doIsoSignal, "SigLep.RequireIso", rEnv, true);
1666  configFromFile(m_doElIsoSignal, "SigEl.RequireIso", rEnv, m_doIsoSignal);
1667  configFromFile(m_doMuIsoSignal, "SigMu.RequireIso", rEnv, m_doIsoSignal);
1668  configFromFile(m_doPhIsoSignal, "SigPh.RequireIso", rEnv, m_doIsoSignal);
1669  configFromFile(m_useSigLepForIsoCloseByOR, "SigLepPh.UseSigLepForIsoCloseByOR", rEnv, false);
1670  configFromFile(m_IsoCloseByORpassLabel, "SigLepPh.IsoCloseByORpassLabel", rEnv, "None");
1671 
1672  //
1673  configFromFile(m_eleTerm, "MET.EleTerm", rEnv, "RefEle");
1674  configFromFile(m_gammaTerm, "MET.GammaTerm", rEnv, "RefGamma");
1675  configFromFile(m_tauTerm, "MET.TauTerm", rEnv, "RefTau");
1676  configFromFile(m_jetTerm, "MET.JetTerm", rEnv, "RefJet");
1677  configFromFile(m_muonTerm, "MET.MuonTerm", rEnv, "Muons");
1678  configFromFile(m_inputMETSuffix, "MET.InputSuffix", rEnv, "", true); // May be empty
1679  configFromFile(m_outMETTerm, "MET.OutputTerm", rEnv, "Final");
1680  configFromFile(m_metRemoveOverlappingCaloTaggedMuons, "MET.RemoveOverlappingCaloTaggedMuons", rEnv, true);
1681  configFromFile(m_metDoSetMuonJetEMScale, "Met.DoSetMuonJetEMScale", rEnv, true);
1682  configFromFile(m_metDoRemoveMuonJets, "MET.DoRemoveMuonJets", rEnv, true);
1683  configFromFile(m_metUseGhostMuons, "MET.UseGhostMuons", rEnv, false);
1684  configFromFile(m_metDoMuonEloss, "MET.DoMuonEloss", rEnv, false);
1685  configFromFile(m_metGreedyPhotons, "MET.DoGreedyPhotons", rEnv, false);
1686  configFromFile(m_metVeryGreedyPhotons, "MET.DoVeryGreedyPhotons", rEnv, false);
1687 
1688  configFromFile(m_trkMETsyst, "MET.DoTrkSyst", rEnv, true);
1689  configFromFile(m_caloMETsyst, "MET.DoCaloSyst", rEnv, false);
1690  configFromFile(m_trkJetsyst, "MET.DoTrkJetSyst", rEnv, false);
1691  configFromFile(m_metsysConfigPrefix, "METSys.ConfigPrefix", rEnv, "METUtilities/R22_PreRecs");
1692  configFromFile(m_metJetSelection, "MET.JetSelection", rEnv, "Tight"); // Loose, Tight (default), Tighter, Tenacious
1693  configFromFile(m_softTermParam, "METSig.SoftTermParam", rEnv, met::Random);
1694  configFromFile(m_treatPUJets, "METSig.TreatPUJets", rEnv, true);
1695  configFromFile(m_doPhiReso, "METSig.DoPhiReso", rEnv, false);
1696  //
1697  configFromFile(m_prwActualMu2017File, "PRW.ActualMu2017File", rEnv, "GoodRunsLists/data17_13TeV/20180619/physics_25ns_Triggerno17e33prim.actualMu.OflLumi-13TeV-010.root");
1698  configFromFile(m_prwActualMu2018File, "PRW.ActualMu2018File", rEnv, "GoodRunsLists/data18_13TeV/20190318/physics_25ns_Triggerno17e33prim.actualMu.OflLumi-13TeV-010.root");
1699  configFromFile(m_prwActualMu2022File, "PRW.ActualMu2022File", rEnv, "GoodRunsLists/data22_13p6TeV/20250321/purw.actualMu.root");
1700  configFromFile(m_prwActualMu2023File, "PRW.ActualMu2023File", rEnv, "GoodRunsLists/data23_13p6TeV/20250321/purw.actualMu.root");
1701  configFromFile(m_prwActualMu2024File, "PRW.ActualMu2024File", rEnv, "GoodRunsLists/data24_13p6TeV/20241118/purw.actualMu.root");
1702  configFromFile(m_prwDataSF, "PRW.DataSF", rEnv, 1./1.03); // default for mc16, see: https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/ExtendedPileupReweighting#Tool_Properties
1703  configFromFile(m_prwDataSF_UP, "PRW.DataSF_UP", rEnv, 1./0.99); // mc16 uncertainty? defaulting to the value in PRWtool
1704  configFromFile(m_prwDataSF_DW, "PRW.DataSF_DW", rEnv, 1./1.07); // mc16 uncertainty? defaulting to the value in PRWtool
1705  configFromFile(m_runDepPrescaleWeightPRW, "PRW.UseRunDependentPrescaleWeight", rEnv, false); // If set to true, the prescale weight is the luminosity-average prescale over the lumiblocks in the unprescaled lumicalc file in the PRW tool.
1706  configFromFile(m_autoconfigPRWPath, "PRW.autoconfigPRWPath", rEnv, "dev/PileupReweighting/share/");
1707  configFromFile(m_autoconfigPRWFile, "PRW.autoconfigPRWFile", rEnv, "None");
1708  configFromFile(m_autoconfigPRWCombinedmode, "PRW.autoconfigPRWCombinedmode", rEnv, false);
1709  configFromFile(m_autoconfigPRWRPVmode, "PRW.autoconfigPRWRPVmode", rEnv, false);
1710  configFromFile(m_autoconfigPRWRtags, "PRW.autoconfigPRWRtags", rEnv, "mc20a:r13167_r14859,mc20d:r13144_r14860,mc20e:r13145_r14861,mc21a:r13752_r13829,mc23a:r14622_r14932_r15540,mc23c:r14799_r14908,mc23d:r15224_r15530,mc23e:r16083"); // Tag details here: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasProductionGroup
1711  configFromFile(m_commonPRWFileMC20a, "PRW.commonPRWFileMC20a", rEnv, "PileupReweighting/mc20_common/mc20a.284500.physlite.prw.v1.root");
1712  configFromFile(m_commonPRWFileMC20d, "PRW.commonPRWFileMC20d", rEnv, "PileupReweighting/mc20_common/mc20d.300000.physlite.prw.v1.root");
1713  configFromFile(m_commonPRWFileMC20e, "PRW.commonPRWFileMC20e", rEnv, "PileupReweighting/mc20_common/mc20e.310000.physlite.prw.v1.root");
1714  configFromFile(m_commonPRWFileMC21a, "PRW.commonPRWFileMC21a", rEnv, "PileupReweighting/mc21_common/mc21a.410000.physlite.prw.v1.root");
1715  configFromFile(m_commonPRWFileMC23a, "PRW.commonPRWFileMC23a", rEnv, "PileupReweighting/mc23_common/mc23a.410000.physlite.prw.v2.root");
1716  configFromFile(m_commonPRWFileMC23c, "PRW.commonPRWFileMC23c", rEnv, "PileupReweighting/mc23_common/mc23c.450000.physlite.prw.v1.root");
1717  configFromFile(m_commonPRWFileMC23d, "PRW.commonPRWFileMC23d", rEnv, "PileupReweighting/mc23_common/mc23d.450000.physlite.prw.v1.root");
1718  configFromFile(m_commonPRWFileMC23e, "PRW.commonPRWFileMC23e", rEnv, "PileupReweighting/mc23_common/mc23e.470000.physlite.prw.v1.root");
1719  //
1720  configFromFile(m_strictConfigCheck, "StrictConfigCheck", rEnv, false);
1721 
1722  // By now rEnv should be empty!
1723  if (rEnv.GetTable() && rEnv.GetTable()->GetSize()>0){
1724  ATH_MSG_ERROR("Found " << rEnv.GetTable()->GetSize() << " unparsed environment options:");
1725  rEnv.Print();
1726  ATH_MSG_ERROR("Please fix your configuration!");
1727  return StatusCode::FAILURE;
1728  }
1729 
1730  // Set up the correct configuration files for the large-R jet tagging corresponding to the input tagger config
1731  if (!m_WtagConfig.empty()) {
1732  if (m_WtagConfig.find("Efficiency50") != std::string::npos){
1733  m_WTagUncConfig = "R10_SF_LCTopo_WTag_SigEff50.config";
1734  }
1735  else if (m_WtagConfig.find("Efficiency80") != std::string::npos){
1736  m_WTagUncConfig = "R10_SF_LCTopo_WTag_SigEff80.config";
1737  }
1738  else {
1739  ATH_MSG_ERROR("You have specified a large-R W-tag config without a matching uncertainties file. Please fix this. Currently the 50% and 80% WPs are supported");
1740  }
1741  }
1742  if (!m_ZtagConfig.empty()) {
1743  if (m_ZtagConfig.find("Efficiency50") != std::string::npos){
1744  m_ZTagUncConfig = "R10_SF_LCTopo_ZTag_SigEff50.config";
1745  }
1746  else if (m_ZtagConfig.find("Efficiency80") != std::string::npos){
1747  m_ZTagUncConfig = "R10_SF_LCTopo_ZTag_SigEff80.config";
1748  }
1749  else {
1750  ATH_MSG_ERROR("You have specified a large-R Z-tag config without a matching uncertainties file. Please fix this. Currently the 50% and 80% WPs are supported");
1751  }
1752  }
1753  std::string TopTagEff = "";
1754  std::string TopTagType = "";
1755  if (!m_ToptagConfig.empty()) {
1756  if (m_ToptagConfig.find("50") != std::string::npos){
1757  TopTagEff = "50";
1758  }
1759  else if (m_ToptagConfig.find("80") != std::string::npos){
1760  TopTagEff = "80";
1761  }
1762  else {
1763  ATH_MSG_ERROR("You have specified a large-R Top-tag config without a matching uncertainties file. Please fix this. Currently the 50% and 80% WPs are supported");
1764  }
1765  //
1766  if (m_ToptagConfig.find("Inclusive") != std::string::npos){
1767  TopTagType = "Inclusive";
1768  }
1769  else if (m_ToptagConfig.find("Contained") != std::string::npos){
1770  TopTagType = "Contained";
1771  }
1772  else {
1773  ATH_MSG_ERROR("You have specified a large-R Top-tag config without a matching uncertainties file. Please fix this. Currently the contained and inclusive WPs are supported");
1774  }
1775  m_TopTagUncConfig = "R10_SF_LCTopo_TopTag"+TopTagType+"_SigEff"+TopTagEff+".config";
1776  }
1777 
1778  //** validate configuration
1780 
1781  //** cache trigger chains for electron matching
1783 
1784  //** cache trigger chains for matching (both electrons and muons)
1786 
1794 
1800 
1806 
1807  return StatusCode::SUCCESS;
1808 }
1809 
1810 
1811 const std::vector<std::string> SUSYObjDef_xAOD::split(const std::string& s, const std::string& delim) const {
1812  assert(delim.length() == 1);
1813  std::vector<std::string> retval;
1814  retval.reserve(std::count(s.begin(), s.end(), delim[0]) + 1);
1815  // if only 1
1816  if (s.find(delim)==std::string::npos) {
1817  retval.emplace_back(s);
1818  return retval;
1819  }
1820  // if need to split
1821  size_t last = 0;
1822  size_t next = 0;
1823  bool gothere=false;
1824  while ((next = s.find(delim, last)) != std::string::npos) {
1825  retval.emplace_back(s.substr(last, next - last));
1826  last = next + delim.length();
1827  gothere=true;
1828  }
1829  if(gothere)
1830  retval.emplace_back(s.substr(last));
1831 
1832  return retval;
1833 }
1834 
1836  if (m_isRun3)
1837  return isAtlfast() ? "rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC23.config" : "rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC23.config";
1838  else
1839  return isAtlfast() ? "rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC20_MC21.config" : "rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC20_MC21.config";
1840 }
1841 
1842 void SUSYObjDef_xAOD::getTauConfig(const std::string& tauConfigPath, std::vector<float>& pT_window, std::vector<float>& eta_window, bool &eleOLR, bool &muVeto, bool &muOLR) const {
1843 
1844  if(tauConfigPath.empty()) return;
1845 
1846  TEnv rEnv;
1847  auto filename = PathResolverFindCalibFile(tauConfigPath);
1848  rEnv.ReadFile(filename.c_str(), kEnvAll);
1849 
1850  std::vector<std::string> cuts;
1851  if (rEnv.Defined("SelectionCuts")) {
1852  cuts = split(rEnv.GetValue("SelectionCuts", " "), " ");
1853  } else {
1854  auto *l = rEnv.GetTable();
1855  for( Int_t i = 0; i < l->GetEntries(); ++i ) {
1856  cuts.push_back( l->At(i)->GetName() );
1857  }
1858  }
1859 
1860  //default OR settings
1861  eleOLR=false;
1862  muOLR=false;
1863  muVeto=false;
1864 
1865  static const std::string trueBool = "TRUE";
1866 
1867  // Now find the pT and eta window
1868  std::vector<std::string> v_pT_window;
1869  std::vector<std::string> v_eta_window;
1870  pT_window.clear();
1871  eta_window.clear();
1872  float pT_min = -99.0;
1873  float pT_max = -99.0;
1874  float eta_min = -99.0;
1875  float eta_max = -99.0;
1876  for (const auto& cut : cuts) {
1877  if(cut == "PtRegion") {
1878  v_pT_window = split(rEnv.GetValue("PtRegion", ""), ";");
1879  std::transform(std::begin(v_pT_window),
1880  std::end(v_pT_window),
1881  std::back_inserter(pT_window),
1882  [](const std::string& s) { return std::stof(s); }
1883  );
1884  } else if (cut == "PtMin") {
1885  pT_min = rEnv.GetValue("PtMin", NAN);
1886  } else if (cut == "PtMax") {
1887  pT_max = rEnv.GetValue("PtMax", NAN);
1888  } else if (cut == "AbsEtaRegion") {
1889  v_eta_window = split(rEnv.GetValue("AbsEtaRegion", ""), ";");
1890  std::transform(std::begin(v_eta_window),
1891  std::end(v_eta_window),
1892  std::back_inserter(eta_window),
1893  [](const std::string& s) { return std::stof(s); }
1894  );
1895  } else if (cut == "AbsEtaMin") {
1896  eta_min = rEnv.GetValue("AbsEtaMin", NAN);
1897  } else if (cut == "AbsEtaMax") {
1898  eta_max = rEnv.GetValue("AbsEtaMax", NAN);
1899  }
1900 
1901  //OR settings
1902  else if (cut == "EleOLR"){
1903  eleOLR = (rEnv.GetValue("EleOLR", "FALSE") == trueBool);
1904  }
1905  else if (cut == "MuonVeto"){
1906  muVeto = (rEnv.GetValue("MuonVeto", "FALSE") == trueBool);
1907  }
1908  else if (cut == "MuonOLR"){
1909  muOLR = (rEnv.GetValue("MuonOLR", "FALSE") == trueBool);
1910  }
1911  }
1912 
1913  if(pT_window.empty()) {
1914  if(pT_min == pT_min) {
1915  // fails on NaN
1916  pT_window.push_back(pT_min);
1917  } else {
1918  pT_window.push_back(-std::numeric_limits<float>::infinity());
1919  }
1920 
1921  if(pT_max == pT_max) {
1922  // fails on NaN
1923  pT_window.push_back(pT_max);
1924  } else {
1925  pT_window.push_back(std::numeric_limits<float>::infinity());
1926  }
1927  }
1928 
1929  if(eta_window.empty()) {
1930  if(eta_min == eta_min) {
1931  // fails on NaN
1932  eta_window.push_back(eta_min);
1933  } else {
1934  eta_window.push_back(-std::numeric_limits<float>::infinity());
1935  }
1936 
1937  if(eta_max == eta_max) {
1938  // fails on NaN
1939  eta_window.push_back(eta_max);
1940  } else {
1941  eta_window.push_back(std::numeric_limits<float>::infinity());
1942  }
1943  }
1944 }
1945 
1947  // Validate configuration (i.e. that signal settings are tighter than baseline, etc)
1948  // :: Throw SC::FAILURE if strict mode is enabled, just a WARNING if not
1949 
1950  // Electrons
1951  if( m_elePt < m_eleBaselinePt ){
1952  ATH_MSG_WARNING("Your electron pt configuration is inconsistent! Signal : " << m_elePt << " < Baseline : " << m_eleBaselinePt);
1953  if(strict) return StatusCode::FAILURE;
1954  }
1955  if( m_eleEta > m_eleBaselineEta ){
1956  ATH_MSG_WARNING("Your electron eta configuration is inconsistent! Signal : " << m_eleEta << " < Baseline : " << m_eleBaselineEta);
1957  if(strict) return StatusCode::FAILURE;
1958  }
1959 
1961  ATH_MSG_WARNING("Your electron ID configuration is inconsistent! Signal : " << m_eleId << " looser than Baseline : " << m_eleIdBaseline);
1962  if(strict) return StatusCode::FAILURE;
1963  }
1965  ATH_MSG_WARNING("Your electron crack removal is inconsistent! Signal : " << m_eleCrackVeto << " while Baseline : " << m_eleBaselineCrackVeto);
1966  if(strict) return StatusCode::FAILURE;
1967  }
1968 
1969  // Muons
1970  if( m_muPt < m_muBaselinePt ){
1971  ATH_MSG_WARNING("Your muon pt configuration is inconsistent! Signal : " << m_muPt << " < Baseline : " << m_muBaselinePt);
1972  if(strict) return StatusCode::FAILURE;
1973  }
1974  if( m_muEta > m_muBaselineEta ){
1975  ATH_MSG_WARNING("Your muon eta configuration is inconsistent! Signal : " << m_muEta << " < Baseline : " << m_muBaselineEta);
1976  if(strict) return StatusCode::FAILURE;
1977  }
1978  if( m_muId > m_muIdBaseline ){
1979  ATH_MSG_WARNING("Your muon ID configuration is inconsistent! Signal : " << m_muId << " < Baseline : " << m_muIdBaseline);
1980  if(strict) return StatusCode::FAILURE;
1981  }
1982 
1983  // Photons
1985  ATH_MSG_WARNING("Your photon pt configuration is inconsistent! Signal : " << m_photonPt << " < Baseline : " << m_photonBaselinePt);
1986  if(strict) return StatusCode::FAILURE;
1987  }
1989  ATH_MSG_WARNING("Your photon eta configuration is inconsistent! Signal : " << m_photonEta << " < Baseline : " << m_photonBaselineEta);
1990  if(strict) return StatusCode::FAILURE;
1991  }
1992  if( m_photonId=="Loose" && m_photonIdBaseline=="Tight" ){
1993  ATH_MSG_WARNING("Your photon ID configuration is inconsistent! Signal : " << m_photonId << " < Baseline : " << m_photonIdBaseline);
1994  if(strict) return StatusCode::FAILURE;
1995  }
1997  ATH_MSG_WARNING("Your photon crack removal is inconsistent! Signal : " << m_photonCrackVeto << " while Baseline : " << m_photonBaselineCrackVeto);
1998  if(strict) return StatusCode::FAILURE;
1999  }
2000 
2001  // Jets
2002  if ( m_jetPt < 20e3 ){
2003  ATH_MSG_WARNING("Your minimum signal jet pt is less than 20 GeV! Jet.Pt : " << m_jetPt << ". This is NOT supported by the jet group!");
2004  }
2005 
2006  //Btagging //OR-wp looser than signal-wp?
2007  if( m_BtagWP.compare(0, m_BtagWP.size()-3, m_orBtagWP, 0, m_BtagWP.size()-3) == 0 ){ //same tagger WP (FixedCutBEff_XX or HybBEff_XX)
2008  if( atoi(m_BtagWP.substr(m_BtagWP.size()-2, m_BtagWP.size()).c_str()) > atoi(m_orBtagWP.substr(m_orBtagWP.size()-2, m_orBtagWP.size()).c_str()) ){
2009  ATH_MSG_WARNING("Your btagging configuration is inconsistent! Signal : " << m_BtagWP << " is looser than OR-Baseline : " << m_orBtagWP);
2010  }
2011  }
2012  if (m_BtagMinPt < 20e3 || m_BtagMinPt_trkJet < 10e3) {
2013  ATH_MSG_WARNING("You btagging MinPt settings are inconsistent! EM(Topo|PFlow)Jets: not calibrated below 20 GeV (Btag.MinPt: " << m_BtagMinPt/1000. << " GeV set), VRTrackJets: not calibrated below 10 GeV (BtagTrkJet.MinPt: " << m_BtagMinPt_trkJet/1000. << " GeV set).");
2014  }
2015 
2016  //Taus
2018  if(m_tauPrePtCut > 0 and m_tauPrePtCut > m_tauPt) {
2019  ATH_MSG_WARNING("Your tau pt configuration is inconsistent! Signal pt cut : " << m_tauPt << " < Baseline (pre) pt cut : " << m_tauPrePtCut);
2020  if(strict) return StatusCode::FAILURE;
2021  }
2024  ATH_MSG_WARNING("Your tau ID configuration is inconsistent! Signal : " << m_tauId << " looser than Baseline : " << m_tauIdBaseline);
2025  if(strict) return StatusCode::FAILURE;
2026  }
2027 
2029  std::vector<float> pT_window;
2030  std::vector<float> eta_window;
2031  bool elOLR=false;
2032  bool muVeto=false;
2033  bool muOLR=false;
2034 
2035  if(!m_tauConfigPathBaseline.empty()) { //baseline taus
2036 
2037  std::string theConfig = m_tauConfigPathBaseline;
2038  if( m_tauConfigPathBaseline=="default" ){
2039  if (m_tauId == "rnn001") theConfig = "SUSYTools/tau_selection_rnn001.conf";
2040  else if (m_tauId == "VeryLoose") theConfig = "SUSYTools/tau_selection_veryloose.conf";
2041  else if (m_tauId == "Loose") theConfig = "SUSYTools/tau_selection_loose.conf";
2042  else if (m_tauId == "Medium") theConfig = "SUSYTools/tau_selection_medium.conf";
2043  else if (m_tauId == "Tight") theConfig = "SUSYTools/tau_selection_tight.conf";
2044  }
2045 
2046  //read config
2047  getTauConfig(theConfig, pT_window, eta_window, elOLR, muVeto, muOLR);
2048 
2049  //pt-eta checks
2050  if( m_tauPrePtCut > 0 and (m_tauPrePtCut != 1000*pT_window[0] or (pT_window[1] > 0 and m_tauPrePtCut > 1000*pT_window[1]))) {
2051  ATH_MSG_WARNING("Your baseline tau pt configuration is inconsistent! pre pT cut : " << m_tauPrePtCut << " / TauSelectionTool window (in MeV) : [" << 1000*pT_window[0] << ", " << 1000*pT_window[1] << "]");
2052  if(strict) return StatusCode::FAILURE;
2053  }
2054 
2055  if( m_tauPt > 0 and (m_tauPt != 1000*pT_window[0] or (pT_window[1] > 0 and m_tauPt > 1000*pT_window[1]))) {
2056  ATH_MSG_WARNING("Your baseline tau pt configuration is inconsistent! pT cut : " << m_tauPt << " / TauSelectionTool window (in Mev) : [" << 1000*pT_window[0] << ", " << 1000*pT_window[1] << "]");
2057  if(strict) return StatusCode::FAILURE;
2058  }
2059 
2060  if( m_tauEta > 0 and m_tauEta != eta_window[eta_window.size()-1]) { // eta window can have 4 entries
2061  ATH_MSG_WARNING("Your baseline tau eta configuration is inconsistent! eta cut : " << m_tauEta << " != TauSelectionTool max eta : " << eta_window[eta_window.size()-1]);
2062  if(strict) return StatusCode::FAILURE;
2063  }
2064  }
2065 
2066  if(!m_tauConfigPath.empty()) { //signal taus
2067 
2068  std::string theConfig = m_tauConfigPath;
2069  if( m_tauConfigPath=="default" ){
2070  if (m_tauId == "rnn001") theConfig = "SUSYTools/tau_selection_rnn001.conf";
2071  else if (m_tauId == "VeryLoose") theConfig = "SUSYTools/tau_selection_veryloose.conf";
2072  else if (m_tauId == "Loose") theConfig = "SUSYTools/tau_selection_loose.conf";
2073  else if (m_tauId == "Medium") theConfig = "SUSYTools/tau_selection_medium.conf";
2074  else if (m_tauId == "Tight") theConfig = "SUSYTools/tau_selection_tight.conf";
2075  }
2076 
2077  getTauConfig(theConfig, pT_window, eta_window, elOLR, muVeto, muOLR);
2078 
2079  if( m_tauPrePtCut > 0 and (m_tauPrePtCut != 1000*pT_window[0] or (pT_window[1] > 0 and m_tauPrePtCut > 1000*pT_window[1]))) {
2080  ATH_MSG_WARNING("Your tau pt configuration is inconsistent! pre pT cut : " << m_tauPrePtCut << " / TauSelectionTool window (in MeV) : [" << 1000*pT_window[0] << ", " << 1000*pT_window[1] << "]");
2081  if(strict) return StatusCode::FAILURE;
2082  }
2083 
2084  if( m_tauPt > 0 and (m_tauPt != 1000*pT_window[0] or (pT_window[1] > 0 and m_tauPt > 1000*pT_window[1]))) {
2085  ATH_MSG_WARNING("Your tau pt configuration is inconsistent! pT cut : " << m_tauPt << " / TauSelectionTool window (in Mev) : [" << 1000*pT_window[0] << ", " << 1000*pT_window[1] << "]");
2086  if(strict) return StatusCode::FAILURE;
2087  }
2088 
2089  if( m_tauEta > 0 and m_tauEta != eta_window[eta_window.size()-1]) { // eta window can have 4 entries
2090  ATH_MSG_WARNING("Your tau eta configuration is inconsistent! eta cut : " << m_tauEta << " != TauSelectionTool max eta : " << eta_window[eta_window.size()-1]);
2091  if(strict) return StatusCode::FAILURE;
2092  }
2093  }
2094 
2095 
2096  return StatusCode::SUCCESS;
2097 }
2098 
2099 
2100 
2102 
2105 }
2106 
2108  return m_currentSyst;
2109 }
2110 
2112  return syst.name().empty();
2113 }
2114 
2115 bool SUSYObjDef_xAOD::isWeight(const CP::SystematicSet& systSet) const {
2116  // returns true if all systematics do _not_ affect kinematics and _any_ of them affects the weight
2117  bool affectsWeights = false;
2118  for (const auto& sys : systSet) {
2119  auto info = getSystInfo(sys);
2120  if(info.affectsKinematics) { return false; }
2121  affectsWeights = affectsWeights or info.affectsWeights;
2122  }
2123  return affectsWeights;
2124 }
2125 
2127  // returns true if _any_ of the systematics affect kinematics. ignores effect on weights.
2128  for (const auto& sys : systSet) {
2129  auto info = getSystInfo(sys);
2130  if(info.affectsKinematics) { return true; }
2131  }
2132  return false;
2133 }
2134 
2136  return isNominal(m_currentSyst);
2137 }
2138 
2140  return isVariation(m_currentSyst);
2141 }
2142 
2144  return isWeight(m_currentSyst);
2145 }
2146 
2147 
2148 
2150 {
2151  if (!m_tool_init) {
2152  ATH_MSG_ERROR("SUSYTools was not initialized!!");
2153  return StatusCode::FAILURE;
2154  }
2155 
2156  ATH_MSG_DEBUG(" in SUSYObjDef_xAOD::applySystematicVariation \"" << systConfig.name() << "\" size " << systConfig.size());
2157 
2158  m_currentSyst = systConfig;
2159 
2160  // NB: SystematicSet typically has only one component (see SUSYToolsTester macro)
2161  if (!m_jetUncertaintiesTool.empty() && systConfig.name().find("PseudoData") == std::string::npos) {
2163  if ( ret != StatusCode::SUCCESS) {
2164  ATH_MSG_VERBOSE("Cannot configure JetUncertaintiesTool for systematic var. " << systConfig.name() );
2165  } else {
2166  ATH_MSG_VERBOSE("Configured JetUncertaintiesTool for systematic var. " << systConfig.name() );
2167  }
2168  }
2169  if (!m_jetUncertaintiesPDSmearTool.empty() && systConfig.name().find("PseudoData") != std::string::npos) {
2171  if ( ret != StatusCode::SUCCESS) {
2172  ATH_MSG_VERBOSE("Cannot configure JetUncertaintiesPDSmearTool for systematic var. " << systConfig.name() );
2173  } else {
2174  ATH_MSG_VERBOSE("Configured JetUncertaintiesPDSmearTool for systematic var. " << systConfig.name() );
2175  }
2176  }
2177  if (!m_WTagjetUncertaintiesTool.empty() && !m_WTagUncConfig.empty()) {
2179  if ( ret != StatusCode::SUCCESS) {
2180  ATH_MSG_VERBOSE("Cannot configure (Fat)JetUncertaintiesTool (WTag) for systematic var. " << systConfig.name() );
2181  } else {
2182  ATH_MSG_VERBOSE("Configured (Fat)JetUncertaintiesTool (WTag) for systematic var. " << systConfig.name() );
2183  }
2184  }
2185  if (!m_ZTagjetUncertaintiesTool.empty() && !m_ZTagUncConfig.empty()) {
2187  if ( ret != StatusCode::SUCCESS) {
2188  ATH_MSG_VERBOSE("Cannot configure (Fat)JetUncertaintiesTool (ZTag) for systematic var. " << systConfig.name() );
2189  } else {
2190  ATH_MSG_VERBOSE("Configured (Fat)JetUncertaintiesTool (ZTag) for systematic var. " << systConfig.name() );
2191  }
2192  }
2193 
2196  if ( ret != StatusCode::SUCCESS) {
2197  ATH_MSG_VERBOSE("Cannot configure (Fat)JetUncertaintiesTool (TopTag) for systematic var. " << systConfig.name() );
2198  } else {
2199  ATH_MSG_VERBOSE("Configured (Fat)JetUncertaintiesTool (TopTag) for systematic var. " << systConfig.name() );
2200  }
2201  }
2202  if (!m_fatjetUncertaintiesTool.empty() && systConfig.name().find("PseudoData") == std::string::npos) {
2204  if ( ret != StatusCode::SUCCESS) {
2205  ATH_MSG_VERBOSE("Cannot configure (Fat)JetUncertaintiesTool (main) for systematic var. " << systConfig.name() );
2206  } else {
2207  ATH_MSG_VERBOSE("Configured (Fat)JetUncertaintiesTool (main) for systematic var. " << systConfig.name() );
2208  }
2209  }
2210  if (!m_fatjetUncertaintiesPDSmearTool.empty() && systConfig.name().find("PseudoData") != std::string::npos) {
2212  if ( ret != StatusCode::SUCCESS) {
2213  ATH_MSG_VERBOSE("Cannot configure FatJetUncertaintiesPDSmearTool for systematic var. " << systConfig.name() );
2214  } else {
2215  ATH_MSG_VERBOSE("Configured FatJetUncertaintiesPDSmearTool for systematic var. " << systConfig.name() );
2216  }
2217  }
2220  if ( ret != StatusCode::SUCCESS) {
2221  ATH_MSG_VERBOSE("Cannot configure (Fat)JetFFSmearingTool (main) for systematic var. " << systConfig.name() );
2222  } else {
2223  ATH_MSG_VERBOSE("Configured (Fat)JetFFSmearingTool (main) for systematic var. " << systConfig.name() );
2224  }
2225  }
2228  if ( ret != StatusCode::SUCCESS) {
2229  ATH_MSG_VERBOSE("Cannot configure NNJvtEfficiency for systematic var. " << systConfig.name() );
2230  } else {
2231  ATH_MSG_VERBOSE("Configured NNJvtEfficiency for systematic var. " << systConfig.name() );
2232  }
2233  }
2234  if (!m_jetfJvtEfficiencyTool.empty()) {
2236  if ( ret != StatusCode::SUCCESS) {
2237  ATH_MSG_VERBOSE("Cannot configure fJvtEfficiency for systematic var. " << systConfig.name() );
2238  } else {
2239  ATH_MSG_VERBOSE("Configured fJvtEfficiency for systematic var. " << systConfig.name() );
2240  }
2241  }
2242  if (!m_muonCalibTool.empty()) {
2244  if (ret != StatusCode::SUCCESS) {
2245  ATH_MSG_ERROR("Cannot configure MuonCalibTool for systematic var. " << systConfig.name() );
2246  return ret;
2247  } else {
2248  ATH_MSG_VERBOSE("MuonCalibTool configured for systematic var. " << systConfig.name() );
2249  }
2250  }
2251  if (!m_muonEfficiencySFTool.empty()) {
2253  if ( ret != StatusCode::SUCCESS) {
2254  ATH_MSG_ERROR("Cannot configure MuonEfficiencyScaleFactors for systematic var. " << systConfig.name() );
2255  return ret;
2256  } else {
2257  ATH_MSG_VERBOSE("MuonEfficiencyScaleFactors configured for systematic var. " << systConfig.name() );
2258  }
2259  }
2262  if ( ret != StatusCode::SUCCESS) {
2263  ATH_MSG_ERROR("Cannot configure MuonBadMuonHighPtScaleFactors for systematic var. " << systConfig.name() );
2264  return ret;
2265  } else {
2266  ATH_MSG_VERBOSE("MuonBadMuonHighPtScaleFactors configured for systematic var. " << systConfig.name() );
2267  }
2268  }
2271  if ( ret != StatusCode::SUCCESS) {
2272  ATH_MSG_ERROR("Cannot configure MuonTTVAEfficiencyScaleFactors for systematic var. " << systConfig.name() );
2273  return ret;
2274  } else {
2275  ATH_MSG_VERBOSE("MuonTTVAEfficiencyScaleFactors configured for systematic var. " << systConfig.name() );
2276  }
2277  }
2278  if (!m_muonIsolationSFTool.empty()) {
2280  if ( ret != StatusCode::SUCCESS) {
2281  ATH_MSG_ERROR("Cannot configure MuonIsolationScaleFactors for systematic var. " << systConfig.name() );
2282  return ret;
2283  } else {
2284  ATH_MSG_VERBOSE("MuonIsolationScaleFactors configured for systematic var. " << systConfig.name() );
2285  }
2286  }
2287  if (!m_muonTriggerSFTool.empty()) {
2289  if ( ret != StatusCode::SUCCESS) {
2290  ATH_MSG_ERROR("Cannot configure MuonTriggerScaleFactors for systematic var. " << systConfig.name() );
2291  return ret;
2292  } else {
2293  ATH_MSG_VERBOSE("MuonTriggerScaleFactors configured for systematic var. " << systConfig.name() );
2294  }
2295  }
2298  if (ret != StatusCode::SUCCESS) {
2299  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (reco) for systematic var. " << systConfig.name() );
2300  return ret;
2301  } else {
2302  ATH_MSG_VERBOSE("AsgElectronEfficiencyCorrectionTool (reco) configured for systematic var. " << systConfig.name() );
2303  }
2304  }
2307  if (ret != StatusCode::SUCCESS) {
2308  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (id) for systematic var. " << systConfig.name() );
2309  return ret;
2310  } else {
2311  ATH_MSG_VERBOSE("AsgElectronEfficiencyCorrectionTool (id) configured for systematic var. " << systConfig.name() );
2312  }
2313  }
2316  if (ret != StatusCode::SUCCESS) {
2317  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.name() );
2318  return ret;
2319  } else {
2320  ATH_MSG_VERBOSE("AsgElectronEfficiencyCorrectionTool (trigger) configured for systematic var. " << systConfig.name() );
2321  }
2322  }
2325  if (ret != StatusCode::SUCCESS) {
2326  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (trigger SFTool) for systematic var. " << systConfig.name() );
2327  return ret;
2328  } else {
2329  ATH_MSG_VERBOSE("AsgElectronEfficiencyCorrectionTool (trigger SFTool) configured for systematic var. " << systConfig.name() );
2330  }
2331  }
2334  for(auto &sfop : m_elecTrigEffTools){
2335  StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2336  if (ret1 != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure m_elecTrigEffTools (dilepton trigger) for systematic var. " << systConfig.name() ); return ret1; }
2337  }
2338  for(auto &sfop : m_elecTrigSFTools){
2339  StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2340  if (ret1 != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure m_elecTrigSFTools (dilepton trigger) for systematic var. " << systConfig.name() ); return ret1; }
2341  }
2342  for(auto &sfop : m_muonTrigSFTools){
2343  StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2344  if (ret1 != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure m_muonTrigSFTools (dilepton trigger) for systematic var. " << systConfig.name() ); return ret1; }
2345  }
2346  if (ret != StatusCode::SUCCESS) {
2347  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (dilepton trigger) for systematic var. " << systConfig.name() );
2348  return ret;
2349  } else {
2350  ATH_MSG_VERBOSE("TrigGlobalEfficiencyCorrectionTool (dilepton trigger) configured for systematic var. " << systConfig.name() );
2351  }
2352  }
2355  for(auto &sfop : m_elecTrigEffTools){
2356  StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2357  if (ret1 != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure m_elecTrigEffTools (multilep trigger) for systematic var. " << systConfig.name() ); return ret1; }
2358  }
2359  for(auto &sfop : m_elecTrigSFTools){
2360  StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2361  if (ret1 != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure m_elecTrigSFTools (multilep trigger) for systematic var. " << systConfig.name() ); return ret1; }
2362  }
2363  for(auto &sfop : m_muonTrigSFTools){
2364  StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2365  if (ret1 != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure m_muonTrigSFTools (multilep trigger) for systematic var. " << systConfig.name() ); return ret1; }
2366  }
2367  if (ret != StatusCode::SUCCESS) {
2368  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (multi-lepton trigger) for systematic var. " << systConfig.name() );
2369  return ret;
2370  } else {
2371  ATH_MSG_VERBOSE("TrigGlobalEfficiencyCorrectionTool (multi-lepton trigger) configured for systematic var. " << systConfig.name() );
2372  }
2373  }
2376  if (ret != StatusCode::SUCCESS) {
2377  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (iso) for systematic var. " << systConfig.name() );
2378  return ret;
2379  } else {
2380  ATH_MSG_VERBOSE("AsgElectronEfficiencyCorrectionTool (iso) configured for systematic var. " << systConfig.name() );
2381  }
2382  }
2385  if (ret != StatusCode::SUCCESS) {
2386  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (iso high-pt) for systematic var. " << systConfig.name() );
2387  return ret;
2388  } else {
2389  ATH_MSG_VERBOSE("AsgElectronEfficiencyCorrectionTool (iso high-pt) configured for systematic var. " << systConfig.name() );
2390  }
2391  }
2392  if (!m_elecChargeEffCorrTool.empty()) {
2394  if (ret != StatusCode::SUCCESS) {
2395  ATH_MSG_ERROR("Cannot configure ElectronChargeEffCorrectionTool for systematic var. " << systConfig.name() );
2396  return ret;
2397  } else {
2398  ATH_MSG_VERBOSE("ElectronChargeEffCorrectionTool configured for systematic var. " << systConfig.name() );
2399  }
2400  }
2401  if (!isData() && !m_photonEfficiencySFTool.empty()) {
2403  if (ret != StatusCode::SUCCESS) {
2404  ATH_MSG_ERROR("Cannot configure AsgPhotonEfficiencyCorrectionTool (reco) for systematic var. " << systConfig.name() );
2405  return ret;
2406  } else {
2407  ATH_MSG_VERBOSE("AsgPhotonEfficiencyCorrectionTool (reco) configured for systematic var. " << systConfig.name() );
2408  }
2409  }
2410  if (!isData() && !m_photonIsolationSFTool.empty()) {
2412  if (ret != StatusCode::SUCCESS) {
2413  ATH_MSG_ERROR("Cannot configure AsgPhotonEfficiencyCorrectionTool (iso) for systematic var. " << systConfig.name() );
2414  return ret;
2415  } else {
2416  ATH_MSG_VERBOSE("AsgPhotonEfficiencyCorrectionTool configured (iso) for systematic var. " << systConfig.name() );
2417  }
2418  }
2419  if (!isData() && !m_photonTriggerSFTool.empty()) {
2421  if (ret != StatusCode::SUCCESS) {
2422  ATH_MSG_ERROR("Cannot configure AsgPhotonEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.name() );
2423  return ret;
2424  } else {
2425  ATH_MSG_VERBOSE("AsgPhotonEfficiencyCorrectionTool configured (trigger) for systematic var. " << systConfig.name() );
2426  }
2427  }
2430  for(auto &sfop : m_photonTrigEffTools){
2431  StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2432  if (ret1 != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure m_photonTrigEffTools (diphoton trigger) for systematic var. " << systConfig.name() ); return ret1; }
2433  }
2434  for(auto &sfop : m_photonTrigSFTools){
2435  StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2436  if (ret1 != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure m_photonTrigSFTools (diphoton trigger) for systematic var. " << systConfig.name() ); return ret1; }
2437  }
2438  if (ret != StatusCode::SUCCESS) {
2439  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (diphoton trigger) for systematic var. " << systConfig.name() );
2440  return ret;
2441  } else {
2442  ATH_MSG_VERBOSE("TrigGlobalEfficiencyCorrectionTool (diphoton trigger) configured for systematic var. " << systConfig.name() );
2443  }
2444  }
2445  if (!m_egammaCalibTool.empty()) {
2447  if (ret != StatusCode::SUCCESS) {
2448  ATH_MSG_ERROR("Cannot configure EgammaCalibrationAndSmearingTool for systematic var. " << systConfig.name() );
2449  return ret;
2450  } else {
2451  ATH_MSG_VERBOSE("EgammaCalibrationAndSmearingTool configured for systematic var. " << systConfig.name() );
2452  }
2453  }
2454  if (!m_isoCorrTool.empty()) {
2456  if (ret != StatusCode::SUCCESS) {
2457  ATH_MSG_ERROR("Cannot configure IsolationCorrectionTool for systematic var. " << systConfig.name() );
2458  return ret;
2459  } else {
2460  ATH_MSG_VERBOSE("IsolationCorrectionTool configured for systematic var. " << systConfig.name() );
2461  }
2462  }
2463  if (!m_btagEffTool.empty()) {
2464  //if ( systConfig.size() > 0 && m_btagEffTool->isAffectedBySystematic(*systConfig.begin()) ) {
2466  if ( ret != StatusCode::SUCCESS) {
2467  ATH_MSG_ERROR("Cannot configure xAODBTaggingEfficiency for systematic var. " << systConfig.name() );
2468  return ret;
2469  } else {
2470  ATH_MSG_VERBOSE("Configured xAODBTaggingEfficiency for systematic var. " << systConfig.name() );
2471  }
2472  //}
2473  }
2474  if (!m_btagEffTool_trkJet.empty()) {
2476  if ( ret != StatusCode::SUCCESS) {
2477  ATH_MSG_ERROR("Cannot configure xAODBTaggingEfficiency (track jets) for systematic var. " << systConfig.name() );
2478  return ret;
2479  } else {
2480  ATH_MSG_VERBOSE("Configured xAODBTaggingEfficiency (track jets) for systematic var. " << systConfig.name() );
2481  }
2482  }
2483  if (!m_tauSmearingTool.empty()) {
2485  if ( ret != StatusCode::SUCCESS) {
2486  ATH_MSG_ERROR("Cannot configure TauSmearingTool for systematic var. " << systConfig.name() );
2487  return ret;
2488  } else {
2489  ATH_MSG_VERBOSE("Configured TauSmearingTool for systematic var. " << systConfig.name() );
2490  }
2491  }
2492  if (!m_tauEffTool.empty()) {
2494  if ( ret != StatusCode::SUCCESS) {
2495  ATH_MSG_ERROR("Cannot configure TauEfficiencyCorrectionsTool for systematic var. " << systConfig.name() );
2496  return ret;
2497  } else {
2498  ATH_MSG_VERBOSE("Configured TauEfficiencyCorrectionsTool for systematic var. " << systConfig.name() );
2499  }
2500  }
2501  for(auto &tool : m_tauTrigEffTool) {
2502  StatusCode ret = tool->applySystematicVariation(systConfig);
2503  if (ret != StatusCode::SUCCESS) {
2504  ATH_MSG_ERROR("Cannot configure " << tool->name() << " for systematic var. " << systConfig.name() );
2505  return ret;
2506  } else {
2507  ATH_MSG_VERBOSE("Configured " << tool->name() << " for systematic var. " << systConfig.name() );
2508  }
2509  }
2510  if (!m_metSystTool.empty()) {
2512  if ( ret != StatusCode::SUCCESS) {
2513  ATH_MSG_ERROR("Cannot configure METSystematicsTool for systematic var. " << systConfig.name() );
2514  return ret;
2515  } else {
2516  ATH_MSG_VERBOSE("Configured METSystematicsTool for systematic var. " << systConfig.name() );
2517  }
2518  }
2519  if (!m_prwTool.empty()) {
2520  StatusCode ret = m_prwTool->applySystematicVariation(systConfig);
2521  if ( ret != StatusCode::SUCCESS) {
2522  ATH_MSG_ERROR("Cannot configure PileupReweightingTool for systematic var. " << systConfig.name() );
2523  return ret;
2524  } else {
2525  ATH_MSG_VERBOSE("Configured PileupReweightingTool for systematic var. " << systConfig.name() );
2526  }
2527  }
2528 
2529  if (!m_LRTuncTool.empty()) {
2531  if ( ret != StatusCode::SUCCESS) {
2532  ATH_MSG_ERROR("Cannot configure InDetTrackFilterTool for systematic var. " << systConfig.name() );
2533  return ret;
2534  } else {
2535  ATH_MSG_VERBOSE("Configured InDetTrackFilterTool for systematic var. " << systConfig.name() );
2536  }
2537  }
2538 
2539  return StatusCode::SUCCESS;
2540 }
2541 
2542 std::vector<ST::SystInfo> SUSYObjDef_xAOD::getSystInfoList() const {
2543  if (!m_tool_init) {
2544  ATH_MSG_ERROR("SUSYTools was not initialized!!");
2545  return vector<ST::SystInfo>();
2546  }
2547 
2548  ATH_MSG_INFO("Extracting systematics info list");
2549 
2550  // Now we can look at systematics:
2552  const CP::SystematicSet& recommendedSystematics = registry.recommendedSystematics();
2553 
2554  vector<SystInfo> sysInfoList;
2555  sysInfoList.reserve(recommendedSystematics.size() * 2); // allow for continuous systematics
2556 
2557  // this is the nominal set
2558  SystInfo infodef;
2559  infodef.affectsKinematics = false;
2560  infodef.affectsWeights = false;
2561  infodef.affectsType = Unknown;
2562  infodef.affectedWeights.clear();
2563  sysInfoList.push_back(infodef);
2564 
2565 
2566  // add all recommended systematics
2567  for (const auto& systSet : CP::make_systematics_vector(recommendedSystematics)) {
2568  for (const auto& sys : systSet) {
2569  sysInfoList.push_back(getSystInfo(sys));
2570  }
2571  }
2572 
2573  ATH_MSG_INFO("Returning list of " << sysInfoList.size() << " systematic variations");
2574  return sysInfoList;
2575 }
2576 
2578 
2579  SystInfo sysInfo;
2580  sysInfo.affectsKinematics = false;
2581  sysInfo.affectsWeights = false;
2582  sysInfo.affectedWeights.clear();
2583  sysInfo.systset.insert(sys);
2584 
2587  sysInfo.affectsWeights = true;
2588  sysInfo.affectsType = SystObjType::Jet;
2589  sysInfo.affectedWeights.insert(ST::Weights::Jet::JVT);
2590  }
2591  }
2592 
2593  if (!m_jetfJvtEfficiencyTool.empty()) {
2595  sysInfo.affectsWeights = true;
2596  sysInfo.affectsType = SystObjType::Jet;
2597  sysInfo.affectedWeights.insert(ST::Weights::Jet::FJVT);
2598  }
2599  }
2600 
2601  if (!m_jetUncertaintiesTool.empty()) {
2603  sysInfo.affectsKinematics = true;
2604  sysInfo.affectsType = SystObjType::Jet;
2605  }
2606  }
2609  sysInfo.affectsKinematics = true;
2610  sysInfo.affectsType = SystObjType::Jet;
2611  }
2612  }
2613 
2616  sysInfo.affectsKinematics = true;
2617  sysInfo.affectsType = SystObjType::Jet;
2618  }
2619  }
2622  sysInfo.affectsKinematics = true;
2623  sysInfo.affectsType = SystObjType::Jet;
2624  }
2625  }
2626 
2627  if (!m_fatjetFFSmearingTool.empty()) {
2629  dummy.insert(sys);
2631  sysInfo.affectsKinematics = true;
2632  sysInfo.affectsType = SystObjType::Jet;
2633  }
2634  }
2635 
2638  sysInfo.affectsKinematics = true;
2639  sysInfo.affectsType = SystObjType::Jet;
2640  }
2641  }
2644  sysInfo.affectsKinematics = true;
2645  sysInfo.affectsType = SystObjType::Jet;
2646  }
2647  }
2650  sysInfo.affectsKinematics = true;
2651  sysInfo.affectsType = SystObjType::Jet;
2652  }
2653  }
2654 
2655  if (!m_muonCalibTool.empty()) {
2657  sysInfo.affectsKinematics = true;
2658  sysInfo.affectsType = SystObjType::Muon;
2659  }
2660  }
2663  sysInfo.affectsWeights = true;
2665  sysInfo.affectedWeights.insert(ST::Weights::Electron::Trigger);
2666  }
2667  }
2670  sysInfo.affectsWeights = true;
2672  sysInfo.affectedWeights.insert(ST::Weights::Electron::Trigger);
2673  }
2674  }
2675  if (!m_muonEfficiencySFTool.empty()) {
2677  sysInfo.affectsWeights = true;
2678  sysInfo.affectsType = SystObjType::Muon;
2679  sysInfo.affectedWeights.insert(ST::Weights::Muon::Reconstruction);
2680  }
2681  }
2684  sysInfo.affectsWeights = true;
2685  sysInfo.affectsType = SystObjType::Muon;
2686  sysInfo.affectedWeights.insert(ST::Weights::Muon::Reconstruction);
2687  }
2688  }
2691  sysInfo.affectsWeights = true;
2692  sysInfo.affectsType = SystObjType::Muon;
2693  sysInfo.affectedWeights.insert(ST::Weights::Muon::Reconstruction);
2694  }
2695  }
2696  if (!m_muonIsolationSFTool.empty()) {
2698  sysInfo.affectsWeights = true;
2699  sysInfo.affectsType = SystObjType::Muon;
2700  sysInfo.affectedWeights.insert(ST::Weights::Muon::Isolation);
2701  }
2702  }
2703  if (!m_muonTriggerSFTool.empty()) {
2705  sysInfo.affectsWeights = true;
2706  sysInfo.affectsType = SystObjType::Muon;
2707  sysInfo.affectedWeights.insert(ST::Weights::Muon::Trigger);
2708  }
2709  }
2712  sysInfo.affectsWeights = true;
2714  sysInfo.affectedWeights.insert(ST::Weights::Electron::Reconstruction);
2715  }
2716  }
2719  sysInfo.affectsWeights = true;
2721  sysInfo.affectedWeights.insert(ST::Weights::Electron::ID);
2722  }
2723  }
2726  sysInfo.affectsWeights = true;
2728  sysInfo.affectedWeights.insert(ST::Weights::Electron::Trigger);
2729  }
2730  }
2733  sysInfo.affectsWeights = true;
2735  sysInfo.affectedWeights.insert(ST::Weights::Electron::Trigger);
2736  }
2737  }
2740  sysInfo.affectsWeights = true;
2742  sysInfo.affectedWeights.insert(ST::Weights::Electron::Isolation);
2743  }
2744  }
2747  sysInfo.affectsWeights = true;
2749  sysInfo.affectedWeights.insert(ST::Weights::Electron::Isolation);
2750  }
2751  }
2752  if (!m_egammaCalibTool.empty()) {
2754  sysInfo.affectsKinematics = true;
2755  if (sys.basename().compare(0, 3, "EG_") == 0) {
2756  sysInfo.affectsType = SystObjType::Egamma;
2757  } else if (sys.basename().compare(0, 3, "PH_") == 0) {
2758  sysInfo.affectsType = SystObjType::Photon;
2759  } else if (sys.basename().compare(0, 3, "EL_") == 0) {
2761  }
2762  }
2763  }
2764  if (!isData() && !m_isoCorrTool.empty()) {
2766  sysInfo.affectsWeights = false;
2767  sysInfo.affectsKinematics = true;
2768  sysInfo.affectsType = SystObjType::Photon;
2769  }
2770  }
2771  if (!isData() && !m_photonEfficiencySFTool.empty()) {
2773  sysInfo.affectsWeights = true;
2774  sysInfo.affectsType = SystObjType::Photon;
2775  sysInfo.affectedWeights.insert(ST::Weights::Photon::Reconstruction);
2776  }
2777  }
2778  if (!isData() && !m_photonIsolationSFTool.empty()) {
2780  sysInfo.affectsWeights = true;
2781  sysInfo.affectsType = SystObjType::Photon;
2782  sysInfo.affectedWeights.insert(ST::Weights::Photon::Isolation);
2783  }
2784  }
2785  if (!isData() && !m_photonTriggerSFTool.empty()) {
2787  sysInfo.affectsWeights = true;
2788  sysInfo.affectsType = SystObjType::Photon;
2789  sysInfo.affectedWeights.insert(ST::Weights::Photon::Trigger);
2790  }
2791  }
2794  sysInfo.affectsWeights = true;
2795  sysInfo.affectsType = SystObjType::Photon;
2796  sysInfo.affectedWeights.insert(ST::Weights::Photon::Trigger);
2797  }
2798  }
2799  if ( !m_btagEffTool.empty() ) {
2801  sysInfo.affectsWeights = true;
2802  sysInfo.affectsType = SystObjType::BTag;
2803  sysInfo.affectedWeights.insert(ST::Weights::Jet::Btag);
2804  }
2805  }
2806  if ( !m_btagEffTool_trkJet.empty() ) {
2808  sysInfo.affectsWeights = true;
2809  sysInfo.affectsType = SystObjType::BTag;
2810  sysInfo.affectedWeights.insert(ST::Weights::Jet::Btag_Track);
2811  }
2812  }
2813  if (!m_tauSmearingTool.empty()) {
2815  sysInfo.affectsKinematics = true;
2816  sysInfo.affectsType = SystObjType::Tau;
2817  }
2818  }
2819  if (!m_tauEffTool.empty()) {
2821  sysInfo.affectsWeights = true;
2822  sysInfo.affectsType = SystObjType::Tau;
2823  sysInfo.affectedWeights.insert(ST::Weights::Tau::Reconstruction);
2824  }
2825  }
2826  for(const auto &tool : m_tauTrigEffTool) {
2827  if(tool->isAffectedBySystematic(sys)) {
2828  sysInfo.affectsWeights = true;
2829  sysInfo.affectsType = SystObjType::Tau;
2830  sysInfo.affectedWeights.insert(ST::Weights::Tau::Trigger);
2831  break;
2832  }
2833  }
2834  if (!m_metSystTool.empty()) {
2836  sysInfo.affectsKinematics = true;
2837  switch (met::getSystType(sys)) {
2838  case met::SOFTCALO:
2840  break;
2841  case met::SOFTTRK:
2843  break;
2844  case met::JETTRK:
2846  break;
2847  default:
2848  ATH_MSG_ERROR("Unsupported systematic!");
2849  }
2850  }
2851  }
2852  if (!m_prwTool.empty()) {
2854  sysInfo.affectsWeights = true;
2856  }
2857  }
2858 
2859  if (!m_LRTuncTool.empty()){
2861  sysInfo.affectsKinematics = true;
2863  }
2864  }
2865 
2866  std::string affectedType;
2867  switch (sysInfo.affectsType) {
2868  case Unknown : affectedType = "UNKNOWN"; break;
2869  case Jet : affectedType = "JET"; break;
2870  case Egamma : affectedType = "EGAMMA"; break;
2871  case Electron : affectedType = "ELECTRON"; break;
2872  case Photon : affectedType = "PHOTON"; break;
2873  case Muon : affectedType = "MUON"; break;
2874  case Tau : affectedType = "TAU"; break;
2875  case BTag : affectedType = "BTAG"; break;
2876  case MET_TST : affectedType = "MET_TST"; break;
2877  case MET_CST : affectedType = "MET_CST"; break;
2878  case MET_Track : affectedType = "MET_Track"; break;
2879  case EventWeight : affectedType = "EVENT WEIGHT"; break;
2880  case LRT_Object : affectedType = "LRT_OBJECT"; break;
2881  }
2882 
2883  ATH_MSG_VERBOSE("Variation " << sys.name() << " affects "
2884  << ( sysInfo.affectsWeights ? "weights " : "" )
2885  << ( sysInfo.affectsKinematics ? "kinematics " : "" )
2886  << "for " << affectedType );
2887 
2888  return sysInfo;
2889 
2890 }
2891 
2892 
2893 // Temporary function for Sherpa 2.2 V+jets n-jets reweighting
2894 // (see https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/CentralMC15ProductionList#NEW_Sherpa_v2_2_V_jets_NJet_rewe)
2896 
2897  //Retrieve the truth jets
2898  if( evtStore()->contains<xAOD::JetContainer>("AntiKt4TruthWZJets") ){
2899  return getSherpaVjetsNjetsWeight("AntiKt4TruthWZJets");
2900  }
2901  else if( evtStore()->contains<xAOD::JetContainer>("AntiKt4TruthJets")){
2902  return getSherpaVjetsNjetsWeight("AntiKt4TruthJets" );
2903  }
2904  else{
2905  ATH_MSG_WARNING("No TruthJetContainer found! Dummy null weight retrieved.");
2906  }
2907  return 0.;
2908 }
2909 
2910 float SUSYObjDef_xAOD::getSherpaVjetsNjetsWeight(const std::string& jetContainer) const {
2911 
2912  if(jetContainer=="AntiKt4TruthWZJets"){
2913  return m_pmgSHnjetWeighterWZ->getWeight();
2914  }
2915  else if (jetContainer=="AntiKt4TruthJets"){
2916  return m_pmgSHnjetWeighter->getWeight();
2917  }
2918  else{
2919  ATH_MSG_WARNING(jetContainer << " is no supported by PMGSherpa22VJetsWeightTool! Please check...");
2920  }
2921  return 1.;
2922 
2923 }
2924 
2925 
2927  const xAOD::VertexContainer* vertices = nullptr;
2928  if ( evtStore()->retrieve( vertices, "PrimaryVertices" ).isSuccess() ) {
2929  for ( const auto vx : *vertices ) {
2930  if (vx->vertexType() == xAOD::VxType::PriVtx) {
2931  ATH_MSG_DEBUG("PrimaryVertex found with z=" << vx->z());
2932  return vx;
2933  }
2934  }
2935  } else {
2936  ATH_MSG_WARNING("Failed to retrieve VertexContainer \"PrimaryVertices\", returning nullptr");
2937  }
2938  return nullptr;
2939 }
2940 
2941 
2944  const xAOD::TauJetContainer* taujet, const xAOD::JetContainer* fatjets)
2945 {
2946 
2947  if (this->GetPrimVtx() == nullptr) {
2948  ATH_MSG_WARNING( "Will now call the OR tool on an event without a primary vertex, and it will likely crash. Please require a PV earlier in your analysis code!");
2949  }
2950 
2951  ATH_CHECK( m_orToolbox.masterTool->removeOverlaps(electrons, muons, jets, taujet, gamma, fatjets) );
2952 
2953  /*
2954  // Count number of objects after overlap removal
2955  int Nel = 0;
2956  for (const auto& el : *electrons) {
2957  if (dec_passOR( *el )) Nel++;
2958  }
2959 
2960  int Nmu = 0;
2961  for (const auto& mu : *muons) {
2962  if (dec_passOR( *mu )) Nmu++;
2963  }
2964 
2965  int Njet = 0;
2966  for (const auto& jet : *jets) {
2967  if (dec_passOR( *jet )) Njet++;
2968  }
2969 
2970  ATH_MSG_VERBOSE( "After overlap removal: Nel=" << Nel << ", Nmu=" << Nmu << ", Njet=" << Njet );
2971  */
2972 
2973  return StatusCode::SUCCESS;
2974 }
2975 
2976 
2978  // This getCloseByIsoCorrection is computationally less expensive and actually corrects the isoaltion
2979  // variables from the contribution of the close by leptons
2980  if (m_isoCloseByTool->getCloseByIsoCorrection(Gaudi::Hive::currentContext(), electrons,muons) != CP::CorrectionCode::Ok) {
2981  return StatusCode::FAILURE;
2982  }
2983  // All done, all good :-)
2984  return StatusCode::SUCCESS;
2985 }
2986 
2988  const xAOD::EventInfo* evtInfo = nullptr;
2989  if ( evtStore()->retrieve( evtInfo, "EventInfo" ).isFailure() ) {
2990  throw std::runtime_error("Unable to fetch EventInfo.");
2991  }
2992  return evtInfo;
2993 }
2994 
2996 
2997  const xAOD::EventInfo* evtInfo = GetEventInfo();
2998  float pu_weight = m_prwTool->getCombinedWeight(*evtInfo);
2999 
3000  if(!isfinite(pu_weight)) pu_weight = 1.;
3001 
3002  return pu_weight;
3003 }
3004 
3005 float SUSYObjDef_xAOD::GetPileupWeightPrescaledTrigger(const std::string & trigger_expr) {
3006  /* This requires the setup of the PRW tool using your own prescaled lumicalc
3007  files with syntax "HLT_PrescaledTriggerA.lumicalc.root:HLT_PrescaledTriggerA".
3008  For further informations, please refer to:
3009  https://twiki.cern.ch/twiki/bin/view/AtlasProtected/ExtendedPileupReweighting#Prescaling%20MC
3010  */
3011 
3012  const xAOD::EventInfo* evtInfo = GetEventInfo();
3013  float pu_weight = m_prwTool->getCombinedWeight(*evtInfo,trigger_expr);
3014 
3015  if(!isfinite(pu_weight)) pu_weight = 1.;
3016 
3017  return pu_weight;
3018 }
3019 
3021  const xAOD::EventInfo* evtInfo = GetEventInfo();
3022  return m_prwTool->getPRWHash( *evtInfo );
3023 }
3024 
3025 float SUSYObjDef_xAOD::GetDataWeight(const std::string& trig) {
3026  const xAOD::EventInfo* evtInfo = GetEventInfo();
3027  return m_prwTool->getDataWeight( *evtInfo, trig );
3028 }
3029 
3031  const xAOD::EventInfo* evtInfo = GetEventInfo();
3032  return m_prwTool->getCorrectedAverageInteractionsPerCrossing( *evtInfo, includeDataSF );
3033 }
3034 
3036  const xAOD::EventInfo* evtInfo = GetEventInfo();
3037  return m_prwTool->getCorrectedActualInteractionsPerCrossing( *evtInfo, includeDataSF );
3038 }
3039 
3042 }
3043 
3044 unsigned int SUSYObjDef_xAOD::GetRandomRunNumber(bool muDependentRRN) {
3045 
3046  const xAOD::EventInfo* evtInfo = GetEventInfo();
3047  if (randomrunnumber.isAvailable(*(evtInfo)) && muDependentRRN) {
3048  return randomrunnumber(*(evtInfo));
3049  }
3050  else if (!muDependentRRN) {
3051  return m_prwTool->getRandomRunNumber( *evtInfo, muDependentRRN );
3052  }
3053  ATH_MSG_ERROR ( "Failed to find RandomRunNumber decoration! You need to call ApplyPRWTool() beforehand!" );
3054  return 0;
3055 }
3056 
3057 
3059 
3060  const xAOD::EventInfo* evtInfo = GetEventInfo();
3061  if(!randomrunnumber.isAvailable(*evtInfo))
3062  ATH_CHECK( m_prwTool->apply( *evtInfo, muDependentRRN ) );
3063  return StatusCode::SUCCESS;
3064 }
3065 
3066 unsigned int SUSYObjDef_xAOD::GetRunNumber() const {
3067 
3068  const xAOD::EventInfo* evtInfo = GetEventInfo();
3069 
3070  // For data, we can just directly use the run number
3071  if (isData()) { return evtInfo->runNumber(); }
3072 
3073  // else it's MC as we need the RRN assigned by the PRW tool
3074  if (!randomrunnumber.isAvailable(*(evtInfo))) {
3075  ATH_MSG_ERROR ( "Failed to find RandomRunNumber decoration! You need to call ApplyPRWTool() beforehand!" );
3076  }
3077  return randomrunnumber(*(evtInfo));
3078 
3079 }
3080 
3081 
3084 
3085  if ( !tracks.isValid() ) {
3086  throw std::runtime_error("Unable to fetch LargeD0 tracks.");
3087  }
3088 
3089  //const xAOD::TrackParticleContainer out = *tracks;
3090 
3091  return *tracks;
3092 }
3093 
3096 
3097  if ( !tracks.isValid() ) {
3098  throw std::runtime_error("Unable to fetch LargeD0 GSF tracks.");
3099  }
3100  return *tracks;
3101 }
3102 
3104 
3105  // Don't apply variations for data
3106  if (isData()) return StatusCode::SUCCESS;
3107 
3108  const EventContext& ctx = Gaudi::Hive::currentContext();
3109 
3110  // Loop over tracks and call LRT uncertainty tool
3111  ATH_MSG_DEBUG ( "Applying LRT filter tool decorations for uncertainty");
3113  for(const auto trk: inTracks) dec_lrtFilter(*trk) = m_LRTuncTool->accept(trk);
3114 
3115  // Loop over GSF LRT tracks and call uncertainty tool
3116  const xAOD::TrackParticleContainer inGSFTracks = GetInDetLargeD0GSFTracks(ctx);
3117  for(const auto trk: inGSFTracks) dec_lrtFilter(*trk) = m_LRTuncTool->accept(trk);
3118 
3119  return StatusCode::SUCCESS;
3120 }
3121 
3122 
3124  // Use the run number we are passed if we are passed one, otherwise
3125  // use the run number from the GetRunNumber function
3126  int theRunNumber = runNumber>0?runNumber:GetRunNumber();
3127  if (theRunNumber<290000) return 2015;
3128  else if (theRunNumber<320000) return 2016;
3129  else if (theRunNumber<342000) return 2017;
3130  else if (theRunNumber<400000) return 2018;
3131  else if (theRunNumber<445000) return 2022;
3132  else if (theRunNumber<465000) return 2023;
3133  return 2024;
3134 }
3135 
3137 
3138 #ifdef XAOD_STANDALONE
3139  // remove all tools from the asg::ToolStore (and delete them)
3140  // so that they don't get re-used if we set up another SUSYTools
3141  // instance, e.g. when processing two datasets in one EventLoop
3142  // job
3143  if (!m_trigDecTool.empty()){
3144  if (asg::ToolStore::contains<Trig::TrigDecisionTool>("ToolSvc.TrigDecisionTool") ){
3145  // Ignore both of these so that we are safe if others have cleaned up
3146  m_trigDecTool->finalize().ignore();
3147  asg::ToolStore::remove("ToolSvc.TrigDecisionTool").ignore();
3148  }
3149  }
3150 #endif
3151 }
3152 
3153 
3154 }
ST::SUSYObjDef_xAOD::m_v_trigs15_cache_singleLep
std::vector< std::string > m_v_trigs15_cache_singleLep
Definition: SUSYObjDef_xAOD.h:460
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
ST::SUSYObjDef_xAOD::m_orBoostedMuonC1
double m_orBoostedMuonC1
Definition: SUSYObjDef_xAOD.h:777
ST::SUSYObjDef_xAOD::m_autoconfigPRWCombinedmode
bool m_autoconfigPRWCombinedmode
Definition: SUSYObjDef_xAOD.h:599
ST::SUSYObjDef_xAOD::m_muonEfficiencySFTool
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonEfficiencySFTool
Definition: SUSYObjDef_xAOD.h:875
ST::SUSYObjDef_xAOD::m_badJetCut
std::string m_badJetCut
Definition: SUSYObjDef_xAOD.h:544
ST::SUSYObjDef_xAOD::m_isoHighPtTool
asg::AnaToolHandle< CP::IIsolationSelectionTool > m_isoHighPtTool
Definition: SUSYObjDef_xAOD.h:979
ST::SUSYObjDef_xAOD::m_photonIdBaselineDFName
std::string m_photonIdBaselineDFName
Definition: SUSYObjDef_xAOD.h:994
ST::SUSYObjDef_xAOD::m_autoconfigPRWRtags
std::string m_autoconfigPRWRtags
Definition: SUSYObjDef_xAOD.h:601
ST::SUSYObjDef_xAOD::m_outElectronLocation
SG::WriteHandleKey< xAOD::ElectronContainer > m_outElectronLocation
Definition: SUSYObjDef_xAOD.h:898
ST::SUSYObjDef_xAOD::m_GSFLRTCollectionName
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_GSFLRTCollectionName
Definition: SUSYObjDef_xAOD.h:482
ST::SUSYObjDef_xAOD::resetSystematics
StatusCode resetSystematics() override final
Definition: SUSYObjDef_xAOD.cxx:2103
ST::SUSYObjDef_xAOD::m_orBoostedElectronC1
double m_orBoostedElectronC1
Definition: SUSYObjDef_xAOD.h:773
ST::SUSYObjDef_xAOD::m_orBoostedMuonC2
double m_orBoostedMuonC2
Definition: SUSYObjDef_xAOD.h:778
ST::SUSYObjDef_xAOD::m_acc_photonIdBaseline
SG::ConstAccessor< char > m_acc_photonIdBaseline
Definition: SUSYObjDef_xAOD.h:1000
ST::SUSYObjDef_xAOD::m_photonBaselinePt
double m_photonBaselinePt
Definition: SUSYObjDef_xAOD.h:721
ST::SUSYObjDef_xAOD::m_eleIdExpert
bool m_eleIdExpert
Definition: SUSYObjDef_xAOD.h:650
ST::SUSYObjDef_xAOD::m_doPhiReso
bool m_doPhiReso
Definition: SUSYObjDef_xAOD.h:594
ST::SUSYObjDef_xAOD::m_jetfJvtEfficiencyTool
asg::AnaToolHandle< CP::IJvtEfficiencyTool > m_jetfJvtEfficiencyTool
Definition: SUSYObjDef_xAOD.h:847
ST::SUSYObjDef_xAOD::m_tauSelTool
asg::AnaToolHandle< TauAnalysisTools::ITauSelectionTool > m_tauSelTool
Definition: SUSYObjDef_xAOD.h:920
ST::SUSYObjDef_xAOD::GetRandomRunNumber
unsigned int GetRandomRunNumber(bool muDependentRRN=true) override final
Definition: SUSYObjDef_xAOD.cxx:3044
ST::SUSYObjDef_xAOD::m_trig2022combination_multiLep
std::string m_trig2022combination_multiLep
Definition: SUSYObjDef_xAOD.h:958
ST::SUSYObjDef_xAOD::m_doTTVAsf
bool m_doTTVAsf
Definition: SUSYObjDef_xAOD.h:526
ST::SUSYObjDef_xAOD::m_commonPRWFileMC23e
std::string m_commonPRWFileMC23e
Definition: SUSYObjDef_xAOD.h:613
CP::SystematicVariation::CONTINUOUS
@ CONTINUOUS
Definition: SystematicVariation.h:79
ST::SUSYObjDef_xAOD::m_fJvtWP
std::string m_fJvtWP
Definition: SUSYObjDef_xAOD.h:753
ST::SystInfo::affectedWeights
std::set< unsigned int > affectedWeights
Definition: ISUSYObjDef_xAODTool.h:68
ST::SUSYObjDef_xAOD::m_metDoSetMuonJetEMScale
bool m_metDoSetMuonJetEMScale
Definition: SUSYObjDef_xAOD.h:580
ST::SUSYObjDef_xAOD::m_v_trigs18_cache_diLep
std::vector< std::string > m_v_trigs18_cache_diLep
Definition: SUSYObjDef_xAOD.h:471
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
ST::SUSYObjDef_xAOD::m_ZTagjetUncertaintiesTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_ZTagjetUncertaintiesTool
Definition: SUSYObjDef_xAOD.h:854
ST::SUSYObjDef_xAOD::m_muBaselineEta
double m_muBaselineEta
Definition: SUSYObjDef_xAOD.h:707
ST::SUSYObjDef_xAOD::m_trigGlobalEffCorrTool_multiLep
asg::AnaToolHandle< ITrigGlobalEfficiencyCorrectionTool > m_trigGlobalEffCorrTool_multiLep
Definition: SUSYObjDef_xAOD.h:959
Undefined
@ Undefined
Definition: MaterialTypes.h:8
xAOD::Electron
Electron_v1 Electron
Definition of the current "egamma version".
Definition: Event/xAOD/xAODEgamma/xAODEgamma/Electron.h:17
xAOD::Egamma
Egamma_v1 Egamma
Definition of the current "egamma version".
Definition: Egamma.h:17
ST::SUSYObjDef_xAOD::m_jetTerm
std::string m_jetTerm
Definition: SUSYObjDef_xAOD.h:572
ST::SUSYObjDef_xAOD::m_trigNToys_diLep
int m_trigNToys_diLep
Definition: SUSYObjDef_xAOD.h:945
CP::IIsolationCorrectionTool::applySystematicVariation
virtual StatusCode applySystematicVariation(const CP::SystematicSet &systConfig)=0
effects: configure this tool for the given list of systematic variations.
ST::SUSYObjDef_xAOD::m_jetUncertaintiesCalibArea
std::string m_jetUncertaintiesCalibArea
Definition: SUSYObjDef_xAOD.h:533
ST::SUSYObjDef_xAOD::m_prwActualMu2022File
std::string m_prwActualMu2022File
Definition: SUSYObjDef_xAOD.h:619
ST::SUSYObjDef_xAOD::m_jesConfigAFII
std::string m_jesConfigAFII
Definition: SUSYObjDef_xAOD.h:863
ST::SUSYObjDef_xAOD::m_BtagSystStrategy
std::string m_BtagSystStrategy
Definition: SUSYObjDef_xAOD.h:681
ST::SUSYObjDef_xAOD::m_tauEffToolRecommendationTag
std::string m_tauEffToolRecommendationTag
Definition: SUSYObjDef_xAOD.h:736
ST::SUSYObjDef_xAOD::m_tauIdBaseline
std::string m_tauIdBaseline
Definition: SUSYObjDef_xAOD.h:656
LikeEnum::VeryLoose
@ VeryLoose
Definition: LikelihoodEnums.h:11
ST::SUSYObjDef_xAOD::m_showerType
int m_showerType
Definition: SUSYObjDef_xAOD.h:812
ST::SUSYObjDef_xAOD::m_elecChargeEffCorrTool
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecChargeEffCorrTool
Definition: SUSYObjDef_xAOD.h:918
ST::SUSYObjDef_xAOD::m_photonTrigEffTools
ToolHandleArray< IAsgPhotonEfficiencyCorrectionTool > m_photonTrigEffTools
Definition: SUSYObjDef_xAOD.h:914
ST::SUSYObjDef_xAOD::m_acc_eleId
SG::ConstAccessor< char > m_acc_eleId
Definition: SUSYObjDef_xAOD.h:999
ST::SUSYObjDef_xAOD::m_mu_id_support
int m_mu_id_support
Definition: SUSYObjDef_xAOD.h:631
ST::SUSYObjDef_xAOD::m_eleIsoHighPt_WP
std::string m_eleIsoHighPt_WP
Definition: SUSYObjDef_xAOD.h:658
ST::SUSYObjDef_xAOD::m_BtagWP
std::string m_BtagWP
Definition: SUSYObjDef_xAOD.h:677
ST::SUSYObjDef_xAOD::m_eleAllowRun3TrigSFFallback
bool m_eleAllowRun3TrigSFFallback
Definition: SUSYObjDef_xAOD.h:702
ST::SUSYObjDef_xAOD::m_egammaCalibTool
asg::AnaToolHandle< CP::IEgammaCalibrationAndSmearingTool > m_egammaCalibTool
Combined electron collection.
Definition: SUSYObjDef_xAOD.h:901
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:24
ST::SUSYObjDef_xAOD::m_trig2016combination_diPhoton
std::string m_trig2016combination_diPhoton
Definition: SUSYObjDef_xAOD.h:963
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
ST::SUSYObjDef_xAOD::m_acc_eleIdBaseline
SG::ConstAccessor< char > m_acc_eleIdBaseline
Definition: SUSYObjDef_xAOD.h:998
ST::SUSYObjDef_xAOD::split
const std::vector< std::string > split(const std::string &s, const std::string &delim) const
Definition: SUSYObjDef_xAOD.cxx:1811
ST::SUSYObjDef_xAOD::m_metDoRemoveMuonJets
bool m_metDoRemoveMuonJets
Definition: SUSYObjDef_xAOD.h:581
CP::make_systematics_vector
std::vector< CP::SystematicSet > make_systematics_vector(const SystematicSet &systematics)
utility functions for working with systematics
Definition: SystematicsUtil.cxx:25
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:138
ST::SUSYObjDef_xAOD::m_outMETTerm
std::string m_outMETTerm
Definition: SUSYObjDef_xAOD.h:578
ST::SUSYObjDef_xAOD::m_v_trigs23_cache_singleLep
std::vector< std::string > m_v_trigs23_cache_singleLep
Definition: SUSYObjDef_xAOD.h:465
ST::SUSYObjDef_xAOD::m_conf_to_prop
std::map< std::string, std::string > m_conf_to_prop
Definition: SUSYObjDef_xAOD.h:436
ST::SUSYObjDef_xAOD::m_orMuJetInnerDR
double m_orMuJetInnerDR
Definition: SUSYObjDef_xAOD.h:783
ST::SUSYObjDef_xAOD::m_muonEfficiencyBMHighPtSFTool
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonEfficiencyBMHighPtSFTool
Definition: SUSYObjDef_xAOD.h:876
ST::SUSYObjDef_xAOD::m_muBaselinePt
double m_muBaselinePt
Definition: SUSYObjDef_xAOD.h:706
ST::SUSYObjDef_xAOD::m_pmgSHnjetWeighterWZ
asg::AnaToolHandle< IWeightTool > m_pmgSHnjetWeighterWZ
Definition: SUSYObjDef_xAOD.h:990
IAsgPhotonIsEMSelector.h
ST::SUSYObjDef_xAOD::m_v_trigs15_cache_multiLep
std::vector< std::string > m_v_trigs15_cache_multiLep
Definition: SUSYObjDef_xAOD.h:474
Trig
The common trigger namespace for trigger analysis tools.
Definition: LArCellMonAlg.h:33
ST::SUSYObjDef_xAOD::m_ZTagUncConfig
std::string m_ZTagUncConfig
Definition: SUSYObjDef_xAOD.h:562
ST::SUSYObjDef_xAOD::m_orDoElBjet
bool m_orDoElBjet
Definition: SUSYObjDef_xAOD.h:769
ST::SUSYObjDef_xAOD::m_tauSmearingToolGenerator
std::string m_tauSmearingToolGenerator
Definition: SUSYObjDef_xAOD.h:737
ST::MET_TST
@ MET_TST
Definition: ISUSYObjDef_xAODTool.h:81
ST::SUSYObjDef_xAOD::m_trigGlobalEffCorrTool_diPhoton
asg::AnaToolHandle< ITrigGlobalEfficiencyCorrectionTool > m_trigGlobalEffCorrTool_diPhoton
Definition: SUSYObjDef_xAOD.h:967
ST::SUSYObjDef_xAOD::m_photonBaselineCrackVeto
bool m_photonBaselineCrackVeto
Definition: SUSYObjDef_xAOD.h:725
ST::SUSYObjDef_xAOD::m_fatJetUncertaintiesPDsmearing
bool m_fatJetUncertaintiesPDsmearing
Definition: SUSYObjDef_xAOD.h:547
ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_reco
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_reco
Combined muon collection.
Definition: SUSYObjDef_xAOD.h:885
ST::SUSYObjDef_xAOD::m_useCommonPRWFiles
bool m_useCommonPRWFiles
Definition: SUSYObjDef_xAOD.h:605
IAsgElectronEfficiencyCorrectionTool.h
ST::SUSYObjDef_xAOD::getTauConfig
void getTauConfig(const std::string &tauConfigPath, std::vector< float > &pT_window, std::vector< float > &eta_window, bool &eleOLR, bool &muVeto, bool &muOLR) const
Definition: SUSYObjDef_xAOD.cxx:1842
ITrigConfigTool.h
ST::SUSYObjDef_xAOD::m_elecSelLikelihood
asg::AnaToolHandle< IAsgElectronLikelihoodTool > m_elecSelLikelihood
Definition: SUSYObjDef_xAOD.h:902
ST::SUSYObjDef_xAOD::m_v_trigs24_cache_singleEle
std::vector< std::string > m_v_trigs24_cache_singleEle
Definition: SUSYObjDef_xAOD.h:458
ITrigGlobalEfficiencyCorrectionTool.h
ST::SUSYObjDef_xAOD::GetTriggerOR
std::vector< std::string > GetTriggerOR(const std::string &trigExpr) const
Definition: Trigger.cxx:320
ST::SUSYObjDef_xAOD::m_orMuJetPtRatio
double m_orMuJetPtRatio
Definition: SUSYObjDef_xAOD.h:781
CP::SystematicSet::size
size_t size() const
returns: size of the set
Definition: SystematicSet.h:71
IIsolationCloseByCorrectionTool.h
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
ST::EventWeight
@ EventWeight
Definition: ISUSYObjDef_xAODTool.h:84
IWeightTool::getWeight
virtual double getWeight() const =0
returns: the value that was calculated from the usual Athena storegate
ST::SUSYObjDef_xAOD::m_jetNNJvtMomentTool
asg::AnaToolHandle< JetPileupTag::JetVertexNNTagger > m_jetNNJvtMomentTool
Definition: SUSYObjDef_xAOD.h:843
ST::SUSYObjDef_xAOD::m_muTriggerSFCalibRelease
std::string m_muTriggerSFCalibRelease
Definition: SUSYObjDef_xAOD.h:675
ST::SUSYObjDef_xAOD::m_EigenvectorReductionC
std::string m_EigenvectorReductionC
Definition: SUSYObjDef_xAOD.h:683
StateLessPT_NewConfig.Format
Format
Definition: StateLessPT_NewConfig.py:149
ST::SUSYObjDef_xAOD::m_fJvtConfigRun2
std::string m_fJvtConfigRun2
Definition: SUSYObjDef_xAOD.h:756
ST
Definition: Electrons.cxx:41
ST::SUSYObjDef_xAOD::m_doElIsoSignal
bool m_doElIsoSignal
Definition: SUSYObjDef_xAOD.h:797
ST::SUSYObjDef_xAOD::m_photonTriggerSFTool
asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > m_photonTriggerSFTool
Definition: SUSYObjDef_xAOD.h:909
ST::SUSYObjDef_xAOD::m_isoBaselineTool
asg::AnaToolHandle< CP::IIsolationSelectionTool > m_isoBaselineTool
Definition: SUSYObjDef_xAOD.h:978
ST::SUSYObjDef_xAOD::m_elecTrigEffTools
ToolHandleArray< IAsgElectronEfficiencyCorrectionTool > m_elecTrigEffTools
Definition: SUSYObjDef_xAOD.h:896
ST::SUSYObjDef_xAOD::m_JvtConfigRun2
std::string m_JvtConfigRun2
Definition: SUSYObjDef_xAOD.h:746
ST::SUSYObjDef_xAOD::m_tauSmearingTool
asg::AnaToolHandle< TauAnalysisTools::ITauSmearingTool > m_tauSmearingTool
Definition: SUSYObjDef_xAOD.h:922
ST::SUSYObjDef_xAOD::m_muPt
double m_muPt
Definition: SUSYObjDef_xAOD.h:708
ST::SUSYObjDef_xAOD::m_v_trigs17_cache_singleEle
std::vector< std::string > m_v_trigs17_cache_singleEle
Definition: SUSYObjDef_xAOD.h:454
ST::SUSYObjDef_xAOD::m_jetInputType
int m_jetInputType
Definition: SUSYObjDef_xAOD.h:520
ST::SUSYObjDef_xAOD::m_el_iso_support
std::vector< std::string > m_el_iso_support
Definition: SUSYObjDef_xAOD.h:633
ST::SUSYObjDef_xAOD::m_trig2015combination_singleLep
std::string m_trig2015combination_singleLep
Definition: SUSYObjDef_xAOD.h:937
ST::SUSYObjDef_xAOD::configFromFile
void configFromFile(bool &property, const std::string &propname, TEnv &rEnv, bool defaultValue)
Definition: SUSYObjDef_xAOD.cxx:1258
CP::IPileupReweightingTool::GetSumOfEventWeights
virtual Double_t GetSumOfEventWeights(Int_t channel)=0
possible alternative to using the EventBookkeepers info ... assuming you made your PRW Config file!...
ST::SUSYObjDef_xAOD::m_metRemoveOverlappingCaloTaggedMuons
bool m_metRemoveOverlappingCaloTaggedMuons
Definition: SUSYObjDef_xAOD.h:579
asg
Definition: DataHandleTestTool.h:28
ReadBchFromCrest.begin
begin
Definition: ReadBchFromCrest.py:80
ST::SUSYObjDef_xAOD::m_metMaker
asg::AnaToolHandle< IMETMaker > m_metMaker
Definition: SUSYObjDef_xAOD.h:933
ST::SUSYObjDef_xAOD::m_trig2018combination_diPhoton
std::string m_trig2018combination_diPhoton
Definition: SUSYObjDef_xAOD.h:965
ST::SUSYObjDef_xAOD::m_trigNToys_diPhoton
int m_trigNToys_diPhoton
Definition: SUSYObjDef_xAOD.h:961
CP::SystematicSet
Class to wrap a set of SystematicVariations.
Definition: SystematicSet.h:31
ST::SUSYObjDef_xAOD::m_trigMatchScoringTool
asg::AnaToolHandle< Trig::IMatchScoringTool > m_trigMatchScoringTool
Definition: SUSYObjDef_xAOD.h:972
ST::SUSYObjDef_xAOD::m_TopTaggerTool
asg::AnaToolHandle< JSSWTopTaggerDNN > m_TopTaggerTool
Definition: SUSYObjDef_xAOD.h:851
ST::SystInfo::systset
CP::SystematicSet systset
Definition: ISUSYObjDef_xAODTool.h:64
defineDB.jets
jets
Definition: JetTagCalibration/share/defineDB.py:24
ST::SUSYObjDef_xAOD::m_orBtagWP
std::string m_orBtagWP
Definition: SUSYObjDef_xAOD.h:786
ST::SUSYObjDef_xAOD::m_elePt
double m_elePt
Definition: SUSYObjDef_xAOD.h:693
CP::IPileupReweightingTool::apply
virtual StatusCode apply(const xAOD::EventInfo &eventInfo, bool mu_dependent=true)=0
Decorates with: MC: PileupWeight (CombinedWeight[*UnrepresentedDataWeight if action=2]),...
CP::IIsolationCloseByCorrectionTool::getCloseByIsoCorrection
virtual CorrectionCode getCloseByIsoCorrection(const EventContext &ctx, const xAOD::ElectronContainer *Electrons=nullptr, const xAOD::MuonContainer *Muons=nullptr, const xAOD::PhotonContainer *Photons=nullptr) const =0
downloadSingle.dataType
string dataType
Definition: downloadSingle.py:18
asg::AsgMetadataTool::inputMetaStore
MetaStorePtr_t inputMetaStore() const
Accessor for the input metadata store.
Definition: AsgMetadataTool.cxx:93
ST::SUSYObjDef_xAOD::m_muId
int m_muId
Definition: SUSYObjDef_xAOD.h:651
ST::SUSYObjDef_xAOD::m_photonIso_WP
std::string m_photonIso_WP
Definition: SUSYObjDef_xAOD.h:667
ST::SUSYObjDef_xAOD::m_fJvtEtaMin
double m_fJvtEtaMin
Definition: SUSYObjDef_xAOD.h:755
ST::SUSYObjDef_xAOD::m_v_trigs18_cache_singleLep
std::vector< std::string > m_v_trigs18_cache_singleLep
Definition: SUSYObjDef_xAOD.h:463
CP::SystematicSet::name
std::string name() const
returns: the systematics joined into a single string.
Definition: SystematicSet.cxx:277
ST::SUSYObjDef_xAOD::m_doPhIsoSignal
bool m_doPhIsoSignal
Definition: SUSYObjDef_xAOD.h:798
ST::SUSYObjDef_xAOD::m_muonTTVAEfficiencySFTool
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonTTVAEfficiencySFTool
Definition: SUSYObjDef_xAOD.h:877
ST::SUSYObjDef_xAOD::m_el_iso_fallback
std::map< std::string, std::string > m_el_iso_fallback
Definition: SUSYObjDef_xAOD.h:637
ST::SUSYObjDef_xAOD::m_force_noElId
bool m_force_noElId
Definition: SUSYObjDef_xAOD.h:524
SUSYObjDef_xAOD.h
ST::SUSYObjDef_xAOD::TrigSingleLep
std::string TrigSingleLep() const override final
Definition: SUSYObjDef_xAOD.cxx:2101
ST::SUSYObjDef_xAOD::m_mubaselined0sig
double m_mubaselined0sig
Definition: SUSYObjDef_xAOD.h:712
ST::SUSYObjDef_xAOD::m_BtagMinPt
double m_BtagMinPt
Definition: SUSYObjDef_xAOD.h:679
IMETMaker.h
TrigDecisionTool.h
xAOD
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Definition: ICaloAffectedTool.h:24
ST::SUSYObjDef_xAOD::m_commonPRWFileMC21a
std::string m_commonPRWFileMC21a
Definition: SUSYObjDef_xAOD.h:609
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:157
ST::SUSYObjDef_xAOD::m_prwActualMu2024File
std::string m_prwActualMu2024File
Definition: SUSYObjDef_xAOD.h:621
ST::SUSYObjDef_xAOD::m_fatjetFFSmearingSyst
std::vector< CP::SystematicSet > m_fatjetFFSmearingSyst
Definition: SUSYObjDef_xAOD.h:821
ST::SUSYObjDef_xAOD::m_trkJetsyst
bool m_trkJetsyst
Definition: SUSYObjDef_xAOD.h:590
ST::SUSYObjDef_xAOD::m_photonEta
double m_photonEta
Definition: SUSYObjDef_xAOD.h:723
ST::SUSYObjDef_xAOD::m_orDoTau
bool m_orDoTau
Overlap removal options.
Definition: SUSYObjDef_xAOD.h:762
hotSpotInTAG.amiTag
amiTag
Definition: hotSpotInTAG.py:101
ST::SUSYObjDef_xAOD::m_v_trigs18_cache_singleEle
std::vector< std::string > m_v_trigs18_cache_singleEle
Definition: SUSYObjDef_xAOD.h:455
ST::SUSYObjDef_xAOD::m_prwTool
asg::AnaToolHandle< CP::IPileupReweightingTool > m_prwTool
Definition: SUSYObjDef_xAOD.h:982
ST::SUSYObjDef_xAOD::m_muBaselineIso_WP
std::string m_muBaselineIso_WP
Definition: SUSYObjDef_xAOD.h:669
ST::SUSYObjDef_xAOD::m_trig2016combination_multiLep
std::string m_trig2016combination_multiLep
Definition: SUSYObjDef_xAOD.h:955
ST::SUSYObjDef_xAOD::m_inputMETSuffix
std::string m_inputMETSuffix
Definition: SUSYObjDef_xAOD.h:574
ST::SUSYObjDef_xAOD::m_WTaggerTool
asg::AnaToolHandle< SmoothedWZTagger > m_WTaggerTool
Definition: SUSYObjDef_xAOD.h:849
ITauSelectionTool.h
ST::SUSYObjDef_xAOD::m_eleConfigBaseline
std::string m_eleConfigBaseline
Definition: SUSYObjDef_xAOD.h:648
ST::SUSYObjDef_xAOD::GetPrimVtx
const xAOD::Vertex * GetPrimVtx() const override final
Definition: SUSYObjDef_xAOD.cxx:2926
ST::ISUSYObjDef_xAODTool::Undefined
@ Undefined
Definition: ISUSYObjDef_xAODTool.h:477
IMETSignificance.h
ST::SUSYObjDef_xAOD::GetTriggerTokens
void GetTriggerTokens(std::string, std::vector< std::string > &, std::vector< std::string > &, std::vector< std::string > &, std::vector< std::string > &, std::vector< std::string > &, std::vector< std::string > &, std::vector< std::string > &) const
Definition: Trigger.cxx:338
met::JETTRK
@ JETTRK
Definition: IMETSystematicsTool.h:52
ST::SUSYObjDef_xAOD::m_v_trigs22_cache_singleLep
std::vector< std::string > m_v_trigs22_cache_singleLep
Definition: SUSYObjDef_xAOD.h:464
ST::SUSYObjDef_xAOD::m_bTaggingCalibrationFilePath
std::string m_bTaggingCalibrationFilePath
Definition: SUSYObjDef_xAOD.h:827
IAsgPhotonEfficiencyCorrectionTool.h
ST::SUSYObjDef_xAOD::m_eled0sig
double m_eled0sig
Definition: SUSYObjDef_xAOD.h:696
ST::SUSYObjDef_xAOD::m_v_trigs22_cache_singleEle
std::vector< std::string > m_v_trigs22_cache_singleEle
Definition: SUSYObjDef_xAOD.h:456
IMETSystematicsTool.h
ST::SUSYObjDef_xAOD::m_metDoMuonEloss
bool m_metDoMuonEloss
Definition: SUSYObjDef_xAOD.h:583
ST::SUSYObjDef_xAOD::m_photonTrigSFTools
ToolHandleArray< IAsgPhotonEfficiencyCorrectionTool > m_photonTrigSFTools
Definition: SUSYObjDef_xAOD.h:913
ST::SUSYObjDef_xAOD::m_orDoFatjets
bool m_orDoFatjets
Definition: SUSYObjDef_xAOD.h:792
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
ST::SUSYObjDef_xAOD::m_trigMatchingTool
asg::AnaToolHandle< Trig::IMatchingTool > m_trigMatchingTool
Definition: SUSYObjDef_xAOD.h:971
ST::SUSYObjDef_xAOD::m_jetUncertaintiesPDSmearTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_jetUncertaintiesPDSmearTool
Definition: SUSYObjDef_xAOD.h:835
IJetSelector.h
beamspotman.tokens
tokens
Definition: beamspotman.py:1280
CP::SystematicVariation
Definition: SystematicVariation.h:47
ST::BTag
@ BTag
Definition: ISUSYObjDef_xAODTool.h:80
MuonR4::to_string
std::string to_string(const SectorProjector proj)
Definition: MsTrackSeeder.cxx:66
ST::SUSYObjDef_xAOD::m_elebaselined0sig
double m_elebaselined0sig
Definition: SUSYObjDef_xAOD.h:698
Muon
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Definition: TrackSystemController.h:45
ST::SUSYObjDef_xAOD::currentSystematicIsVariation
bool currentSystematicIsVariation() const
Definition: SUSYObjDef_xAOD.cxx:2139
ST::SUSYObjDef_xAOD::m_debug
bool m_debug
Definition: SUSYObjDef_xAOD.h:540
ST::SUSYObjDef_xAOD::m_elecLRTORTool
asg::AnaToolHandle< CP::IElectronLRTOverlapRemovalTool > m_elecLRTORTool
Definition: SUSYObjDef_xAOD.h:897
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:964
x
#define x
ST::SUSYObjDef_xAOD::m_doMuIsoSignal
bool m_doMuIsoSignal
Definition: SUSYObjDef_xAOD.h:799
IJetModifier.h
ST::SUSYObjDef_xAOD::m_muonTerm
std::string m_muonTerm
Definition: SUSYObjDef_xAOD.h:573
ST::SUSYObjDef_xAOD::m_mu_iso_support
std::vector< std::string > m_mu_iso_support
Definition: SUSYObjDef_xAOD.h:634
ST::SUSYObjDef_xAOD::m_tau_id_support
std::vector< std::string > m_tau_id_support
Definition: SUSYObjDef_xAOD.h:632
ST::SUSYObjDef_xAOD::setDataSource
void setDataSource(int source)
Definition: SUSYObjDef_xAOD.cxx:1207
dq_defect_bulk_create_defects.line
line
Definition: dq_defect_bulk_create_defects.py:27
xAOD::JetInput::LCTopo
@ LCTopo
Definition: JetContainerInfo.h:55
ITauEfficiencyCorrectionsTool.h
ST::SUSYObjDef_xAOD::m_muCosmicd0
double m_muCosmicd0
Definition: SUSYObjDef_xAOD.h:716
mapkey::sys
@ sys
Definition: TElectronEfficiencyCorrectionTool.cxx:42
ST::SUSYObjDef_xAOD::m_fatJetUncVars
std::string m_fatJetUncVars
Definition: SUSYObjDef_xAOD.h:548
ST::SUSYObjDef_xAOD::m_orDoBjet
bool m_orDoBjet
Definition: SUSYObjDef_xAOD.h:768
ST::SUSYObjDef_xAOD::m_eleEffMapFilePath
std::string m_eleEffMapFilePath
Definition: SUSYObjDef_xAOD.h:700
xAOD::EventInfo_v1::runNumber
uint32_t runNumber() const
The current event's run number.
ST::SUSYObjDef_xAOD::m_orDoPhoton
bool m_orDoPhoton
Definition: SUSYObjDef_xAOD.h:763
ST::SUSYObjDef_xAOD::m_tool_init
bool m_tool_init
Definition: SUSYObjDef_xAOD.h:566
asg::AnaToolHandle::declarePropertyFor
void declarePropertyFor(T2 *tool, const std::string &name, const std::string &description="")
declare as property on the given tool
XMLtoHeader.count
count
Definition: XMLtoHeader.py:84
ST::SUSYObjDef_xAOD::m_jetJvtMomentTool
asg::AnaToolHandle< JetVertexTaggerTool > m_jetJvtMomentTool
Definition: SUSYObjDef_xAOD.h:842
ST::SUSYObjDef_xAOD::setBoolProperty
StatusCode setBoolProperty(const std::string &name, const bool &property) override final
Definition: SUSYObjDef_xAOD.cxx:879
ST::SUSYObjDef_xAOD::m_eleIdBaseline
std::string m_eleIdBaseline
Definition: SUSYObjDef_xAOD.h:646
ST::SUSYObjDef_xAOD::m_eleTerm
std::string m_eleTerm
Definition: SUSYObjDef_xAOD.h:569
IJetCalibrationTool.h
ST::SUSYObjDef_xAOD::isVariation
bool isVariation(const CP::SystematicSet &syst) const
Definition: SUSYObjDef_xAOD.cxx:2126
ST::SUSYObjDef_xAOD::m_orToolbox
ORUtils::ToolBox m_orToolbox
Definition: SUSYObjDef_xAOD.h:987
ST::SUSYObjDef_xAOD::m_mcChannel
int m_mcChannel
Definition: SUSYObjDef_xAOD.h:603
ST::SUSYObjDef_xAOD::m_tauConfigPath
std::string m_tauConfigPath
Definition: SUSYObjDef_xAOD.h:732
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:92
ST::SUSYObjDef_xAOD::m_LRTCollectionName
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_LRTCollectionName
Definition: SUSYObjDef_xAOD.h:481
ST::SUSYObjDef_xAOD::m_photonBaselineEta
double m_photonBaselineEta
Definition: SUSYObjDef_xAOD.h:722
xAOD::FileMetaData_v1::value
bool value(MetaDataType type, std::string &val) const
Get a pre-defined string value out of the object.
Definition: FileMetaData_v1.cxx:195
ST::SUSYObjDef_xAOD::m_v_trigs15_cache_singleEle
std::vector< std::string > m_v_trigs15_cache_singleEle
Definition: SUSYObjDef_xAOD.h:452
ST::SUSYObjDef_xAOD::m_muonLRTORTool
asg::AnaToolHandle< CP::IMuonLRTOverlapRemovalTool > m_muonLRTORTool
Definition: SUSYObjDef_xAOD.h:882
ST::SUSYObjDef_xAOD::ApplyLRTUncertainty
StatusCode ApplyLRTUncertainty() override final
Definition: SUSYObjDef_xAOD.cxx:3103
xAOD::FileMetaData_v1::simFlavour
@ simFlavour
Fast or Full sim [string].
Definition: FileMetaData_v1.h:76
ST::SUSYObjDef_xAOD::m_gammaTerm
std::string m_gammaTerm
Definition: SUSYObjDef_xAOD.h:570
ST::SUSYObjDef_xAOD::m_commonPRWFileMC20d
std::string m_commonPRWFileMC20d
Definition: SUSYObjDef_xAOD.h:607
ST::SUSYObjDef_xAOD::GetInDetLargeD0GSFTracks
const xAOD::TrackParticleContainer & GetInDetLargeD0GSFTracks(const EventContext &ctx) const override final
Definition: SUSYObjDef_xAOD.cxx:3094
ST::SUSYObjDef_xAOD::m_acc_jetClean
SG::ConstAccessor< char > m_acc_jetClean
Definition: SUSYObjDef_xAOD.h:1002
ST::SUSYObjDef_xAOD::m_JvtPtMax
double m_JvtPtMax
Definition: SUSYObjDef_xAOD.h:745
IEGammaAmbiguityTool.h
ST::SUSYObjDef_xAOD::m_btagEffTool_trkJet
asg::AnaToolHandle< IBTaggingEfficiencyTool > m_btagEffTool_trkJet
Definition: SUSYObjDef_xAOD.h:930
LArCellBinning_test.retval
def retval
Definition: LArCellBinning_test.py:112
xAOD::EventInfo_v1::mcChannelNumber
uint32_t mcChannelNumber() const
The MC generator's channel number.
ST::SUSYObjDef_xAOD::m_v_trigs17_cache_diLep
std::vector< std::string > m_v_trigs17_cache_diLep
Definition: SUSYObjDef_xAOD.h:470
ST::SUSYObjDef_xAOD::m_trkJetPt
double m_trkJetPt
Definition: SUSYObjDef_xAOD.h:749
ST::SUSYObjDef_xAOD::m_slices
std::map< std::string, bool > m_slices
Definition: SUSYObjDef_xAOD.h:806
ST::SUSYObjDef_xAOD::m_orLinkOverlapObjects
bool m_orLinkOverlapObjects
Definition: SUSYObjDef_xAOD.h:790
TrigConf
Forward iterator to traverse the main components of the trigger configuration.
Definition: Config.h:22
IMuonSelectionTool.h
ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_isoHighPt
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_isoHighPt
Definition: SUSYObjDef_xAOD.h:890
ST::SUSYObjDef_xAOD::m_trig2018combination_singleLep
std::string m_trig2018combination_singleLep
Definition: SUSYObjDef_xAOD.h:940
ST::SUSYObjDef_xAOD::m_orBoostedMuonMaxConeSize
double m_orBoostedMuonMaxConeSize
Definition: SUSYObjDef_xAOD.h:779
ST::SUSYObjDef_xAOD::m_photonEfficiencySFTool
asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > m_photonEfficiencySFTool
Definition: SUSYObjDef_xAOD.h:907
ST::SUSYObjDef_xAOD::GetPileupWeightHash
ULong64_t GetPileupWeightHash() override final
Definition: SUSYObjDef_xAOD.cxx:3020
ST::Egamma
@ Egamma
Definition: ISUSYObjDef_xAODTool.h:75
IElectronPhotonShowerShapeFudgeTool.h
ST::SUSYObjDef_xAOD::m_trigGlobalEffCorrTool_diLep
asg::AnaToolHandle< ITrigGlobalEfficiencyCorrectionTool > m_trigGlobalEffCorrTool_diLep
Definition: SUSYObjDef_xAOD.h:951
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
ST::SUSYObjDef_xAOD::m_WZTaggerCalibArea
std::string m_WZTaggerCalibArea
Definition: SUSYObjDef_xAOD.h:559
IMuonEfficiencyScaleFactors.h
ST::SUSYObjDef_xAOD::m_isPHYSLITE
bool m_isPHYSLITE
Definition: SUSYObjDef_xAOD.h:808
ST::SUSYObjDef_xAOD::m_prwLcalcFiles
std::vector< std::string > m_prwLcalcFiles
Definition: SUSYObjDef_xAOD.h:616
ST::SUSYObjDef_xAOD::m_prwDataSF_DW
double m_prwDataSF_DW
Definition: SUSYObjDef_xAOD.h:625
IBTaggingEfficiencyTool.h
ST::SUSYObjDef_xAOD::m_orDoBoostedMuon
bool m_orDoBoostedMuon
Definition: SUSYObjDef_xAOD.h:776
IEgammaCalibrationAndSmearingTool.h
ST::SUSYObjDef_xAOD::m_el_id_support
std::vector< std::string > m_el_id_support
Definition: SUSYObjDef_xAOD.h:629
ITauTruthMatchingTool.h
ST::SUSYObjDef_xAOD::m_defaultJets
std::string m_defaultJets
Definition: SUSYObjDef_xAOD.h:814
setProperty
void setProperty(columnar::PythonToolHandle &self, const std::string &key, nb::object value)
Definition: NanobindBindings.cxx:67
ST::SUSYObjDef_xAOD::m_useBtagging
bool m_useBtagging
Definition: SUSYObjDef_xAOD.h:538
ST::SUSYObjDef_xAOD::m_ph_id_support
std::vector< std::string > m_ph_id_support
Definition: SUSYObjDef_xAOD.h:630
IAsgElectronLikelihoodTool.h
ST::Photon
@ Photon
Definition: ISUSYObjDef_xAODTool.h:77
ST::SUSYObjDef_xAOD::SUSYToolsInit
StatusCode SUSYToolsInit()
Definition: SUSYToolsInit.cxx:113
IMatchScoringTool.h
ST::SUSYObjDef_xAOD::m_TopTaggerCalibArea
std::string m_TopTaggerCalibArea
Definition: SUSYObjDef_xAOD.h:560
ST::SUSYObjDef_xAOD::isWeight
bool isWeight(const CP::SystematicSet &systSet) const
Definition: SUSYObjDef_xAOD.cxx:2115
ST::SUSYObjDef_xAOD::m_jetEta
double m_jetEta
Definition: SUSYObjDef_xAOD.h:742
IBTaggingSelectionTool.h
IIsolationCorrectionTool.h
ST::SUSYObjDef_xAOD::~SUSYObjDef_xAOD
~SUSYObjDef_xAOD()
Definition: SUSYObjDef_xAOD.cxx:3136
ST::SUSYObjDef_xAOD::m_fatJetUncConfig
std::string m_fatJetUncConfig
Definition: SUSYObjDef_xAOD.h:546
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ST::SUSYObjDef_xAOD::ApplyPRWTool
StatusCode ApplyPRWTool(bool muDependentRRN=true) override final
Definition: SUSYObjDef_xAOD.cxx:3058
ST::SUSYObjDef_xAOD::GetRunNumber
unsigned int GetRunNumber() const override final
Definition: SUSYObjDef_xAOD.cxx:3066
ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_id
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_id
Definition: SUSYObjDef_xAOD.h:886
CheckAppliedSFs.e3
e3
Definition: CheckAppliedSFs.py:264
IPileupReweightingTool.h
ST::SUSYObjDef_xAOD::readConfig
StatusCode readConfig() override final
Definition: SUSYObjDef_xAOD.cxx:1335
ST::SUSYObjDef_xAOD::m_elez0
double m_elez0
Definition: SUSYObjDef_xAOD.h:697
ST::SUSYObjDef_xAOD::m_IsoCloseByORpassLabel
std::string m_IsoCloseByORpassLabel
Definition: SUSYObjDef_xAOD.h:802
ST::SUSYObjDef_xAOD::m_tauSmearingToolRecommendationTag
std::string m_tauSmearingToolRecommendationTag
Definition: SUSYObjDef_xAOD.h:735
ST::SUSYObjDef_xAOD::GetCorrectedAverageInteractionsPerCrossing
float GetCorrectedAverageInteractionsPerCrossing(bool includeDataSF=false) override final
Definition: SUSYObjDef_xAOD.cxx:3030
ST::SUSYObjDef_xAOD::m_jetUncertaintiesConfig
std::string m_jetUncertaintiesConfig
Prefix for trigger matchiing container name.
Definition: SUSYObjDef_xAOD.h:531
ST::SUSYObjDef_xAOD::GetSumOfWeights
double GetSumOfWeights(int channel) override final
Definition: SUSYObjDef_xAOD.cxx:3040
ST::SUSYObjDef_xAOD::m_jetCalibTool
asg::AnaToolHandle< IJetCalibrationTool > m_jetCalibTool
Definition: SUSYObjDef_xAOD.h:832
TrigVtx::gamma
@ gamma
Definition: TrigParticleTable.h:27
fillPileUpNoiseLumi.next
next
Definition: fillPileUpNoiseLumi.py:52
ST::SUSYObjDef_xAOD::m_mu_iso_fallback
std::map< std::string, std::string > m_mu_iso_fallback
Definition: SUSYObjDef_xAOD.h:638
ST::SUSYObjDef_xAOD::m_v_trigs22_cache_multiLep
std::vector< std::string > m_v_trigs22_cache_multiLep
Definition: SUSYObjDef_xAOD.h:478
ST::SUSYObjDef_xAOD::m_trigNToys_multiLep
int m_trigNToys_multiLep
Definition: SUSYObjDef_xAOD.h:953
ST::SUSYObjDef_xAOD::m_BtagTagger
std::string m_BtagTagger
Definition: SUSYObjDef_xAOD.h:678
lumiFormat.i
int i
Definition: lumiFormat.py:85
ST::SUSYObjDef_xAOD::GetPileupWeight
float GetPileupWeight() override final
Definition: SUSYObjDef_xAOD.cxx:2995
ST::SUSYObjDef_xAOD::isNominal
bool isNominal(const CP::SystematicSet &syst) const
Definition: SUSYObjDef_xAOD.cxx:2111
SystematicRegistry.h
ST::SUSYObjDef_xAOD::m_orDoEleJet
bool m_orDoEleJet
Definition: SUSYObjDef_xAOD.h:764
ST::SUSYObjDef_xAOD::m_orPhotonFavoured
bool m_orPhotonFavoured
Definition: SUSYObjDef_xAOD.h:788
ST::SUSYObjDef_xAOD::m_jesCalibArea
std::string m_jesCalibArea
Definition: SUSYObjDef_xAOD.h:869
JSSWTopTaggerDNN.h
ST::SUSYObjDef_xAOD::m_eleChIso
bool m_eleChIso
Definition: SUSYObjDef_xAOD.h:663
ST::ISUSYObjDef_xAODTool::Data
@ Data
Definition: ISUSYObjDef_xAODTool.h:478
ST::SUSYObjDef_xAOD::m_trig2017combination_singleLep
std::string m_trig2017combination_singleLep
Definition: SUSYObjDef_xAOD.h:939
Generate_dsid_ranseed.dsid
dsid
Definition: Generate_dsid_ranseed.py:6
ST::SUSYObjDef_xAOD::m_muonIsolationSFTool
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonIsolationSFTool
Definition: SUSYObjDef_xAOD.h:878
ST::SUSYObjDef_xAOD::m_jetCleanDFName
std::string m_jetCleanDFName
Definition: SUSYObjDef_xAOD.h:996
ST::SUSYObjDef_xAOD::m_jesCalibSeq
std::string m_jesCalibSeq
Definition: SUSYObjDef_xAOD.h:866
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
met::getSystType
SystType getSystType(const CP::SystematicVariation &systematic)
Definition: IMETSystematicsTool.h:55
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition: AthCommonDataStore.h:145
ST::SUSYObjDef_xAOD::m_jetUncertaintiesTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_jetUncertaintiesTool
Definition: SUSYObjDef_xAOD.h:834
ST::SUSYObjDef_xAOD::m_muEta
double m_muEta
Definition: SUSYObjDef_xAOD.h:709
ST::SUSYObjDef_xAOD::currentSystematicIsNominal
bool currentSystematicIsNominal() const
Definition: SUSYObjDef_xAOD.cxx:2135
ST::SUSYObjDef_xAOD::m_autoconfigPRW
bool m_autoconfigPRW
Definition: SUSYObjDef_xAOD.h:596
ST::SUSYObjDef_xAOD::m_orApplyRelPt
bool m_orApplyRelPt
Definition: SUSYObjDef_xAOD.h:780
ST::SUSYObjDef_xAOD::m_v_trigs17_cache_singleLep
std::vector< std::string > m_v_trigs17_cache_singleLep
Definition: SUSYObjDef_xAOD.h:462
ST::SUSYObjDef_xAOD::m_muTriggerSFCalibFilename
std::string m_muTriggerSFCalibFilename
Definition: SUSYObjDef_xAOD.h:676
ST::SUSYObjDef_xAOD::m_muonCalibTool
asg::AnaToolHandle< CP::IMuonCalibrationAndSmearingTool > m_muonCalibTool
Definition: SUSYObjDef_xAOD.h:874
ST::SUSYObjDef_xAOD::m_ZTaggerTool
asg::AnaToolHandle< SmoothedWZTagger > m_ZTaggerTool
Definition: SUSYObjDef_xAOD.h:850
ST::SUSYObjDef_xAOD::m_orDoMuBjet
bool m_orDoMuBjet
Definition: SUSYObjDef_xAOD.h:770
CP::IPileupReweightingTool::getCorrectedAverageInteractionsPerCrossing
virtual float getCorrectedAverageInteractionsPerCrossing(const xAOD::EventInfo &eventInfo, bool includedDataScaleFactor=false)=0
ST::SUSYObjDef_xAOD::m_trig2017combination_multiLep
std::string m_trig2017combination_multiLep
Definition: SUSYObjDef_xAOD.h:956
ST::SUSYObjDef_xAOD::m_orRemoveCaloMuons
bool m_orRemoveCaloMuons
Definition: SUSYObjDef_xAOD.h:785
ST::SUSYObjDef_xAOD::m_prwDataSF
double m_prwDataSF
Definition: SUSYObjDef_xAOD.h:623
Amg::transform
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
Definition: GeoPrimitivesHelpers.h:156
met::Random
@ Random
Definition: IMETSignificance.h:27
xAOD::VxType::PriVtx
@ PriVtx
Primary vertex.
Definition: TrackingPrimitives.h:572
ST::SUSYObjDef_xAOD::m_jesConfigJMS
std::string m_jesConfigJMS
Definition: SUSYObjDef_xAOD.h:861
IMuonTriggerScaleFactors.h
ST::SUSYObjDef_xAOD::m_tauTerm
std::string m_tauTerm
Definition: SUSYObjDef_xAOD.h:571
CalibDbCompareRT.dummy
dummy
Definition: CalibDbCompareRT.py:59
BindingsTest.cut
cut
This script demonstrates how to call a C++ class from Python Also how to use PyROOT is shown.
Definition: BindingsTest.py:13
ST::SUSYObjDef_xAOD::m_eleIdDFName
std::string m_eleIdDFName
Definition: SUSYObjDef_xAOD.h:993
plotBeamSpotVert.cuts
string cuts
Definition: plotBeamSpotVert.py:92
ST::SUSYObjDef_xAOD::m_jetUncertaintiesMCType
std::string m_jetUncertaintiesMCType
Definition: SUSYObjDef_xAOD.h:534
ST::SUSYObjDef_xAOD::m_commonPRWFileMC20e
std::string m_commonPRWFileMC20e
Definition: SUSYObjDef_xAOD.h:608
ST::SUSYObjDef_xAOD::check_isTighter
bool check_isTighter(const std::string &wp1, const std::string &wp, const std::vector< std::string > &list) const
Definition: SUSYObjDef_xAOD.cxx:1220
ST::SUSYObjDef_xAOD::m_jetUncertaintiesAnalysisFile
std::string m_jetUncertaintiesAnalysisFile
Definition: SUSYObjDef_xAOD.h:532
JetTruthLabelingTool.h
ST::SUSYObjDef_xAOD::m_jetfJvtSelectionTool
asg::AnaToolHandle< IAsgSelectionTool > m_jetfJvtSelectionTool
Definition: SUSYObjDef_xAOD.h:846
ST::SUSYObjDef_xAOD::m_photonSelIsEM
asg::AnaToolHandle< IAsgPhotonIsEMSelector > m_photonSelIsEM
Definition: SUSYObjDef_xAOD.h:904
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
ST::SUSYObjDef_xAOD::m_trig2016combination_diLep
std::string m_trig2016combination_diLep
Definition: SUSYObjDef_xAOD.h:947
ST::SUSYObjDef_xAOD::m_jetUncertaintiesPDsmearing
bool m_jetUncertaintiesPDsmearing
Definition: SUSYObjDef_xAOD.h:536
ST::SUSYObjDef_xAOD::m_metSystTool
asg::AnaToolHandle< IMETSystematicsTool > m_metSystTool
Definition: SUSYObjDef_xAOD.h:934
ST::SUSYObjDef_xAOD::SUSYObjDef_xAOD
SUSYObjDef_xAOD(const std::string &name)
Definition: SUSYObjDef_xAOD.cxx:101
ST::SUSYObjDef_xAOD::m_BtagMinPt_trkJet
double m_BtagMinPt_trkJet
Definition: SUSYObjDef_xAOD.h:687
ST::SUSYObjDef_xAOD::m_v_trigs15_cache_diLep
std::vector< std::string > m_v_trigs15_cache_diLep
Definition: SUSYObjDef_xAOD.h:468
ST::SUSYObjDef_xAOD::GetDataWeight
float GetDataWeight(const std::string &) override final
Definition: SUSYObjDef_xAOD.cxx:3025
ST::SUSYObjDef_xAOD::m_orDoElEl
bool m_orDoElEl
Definition: SUSYObjDef_xAOD.h:765
ST::SUSYObjDef_xAOD::m_muIsoHighPtThresh
double m_muIsoHighPtThresh
Definition: SUSYObjDef_xAOD.h:672
ST::SUSYObjDef_xAOD::m_jetPileupLabelingTool
asg::AnaToolHandle< JetPileupLabelingTool > m_jetPileupLabelingTool
Definition: SUSYObjDef_xAOD.h:841
CurrentContext.h
ST::SUSYObjDef_xAOD::m_trigMatchingPrefix
std::string m_trigMatchingPrefix
Use composite trigger matching tool if matching was done upstream.
Definition: SUSYObjDef_xAOD.h:529
ST::SUSYObjDef_xAOD::m_eleChID_signal
bool m_eleChID_signal
Definition: SUSYObjDef_xAOD.h:664
ST::SUSYObjDef_xAOD::m_metUseGhostMuons
bool m_metUseGhostMuons
Definition: SUSYObjDef_xAOD.h:582
ST::SUSYObjDef_xAOD::m_WTagjetUncertaintiesTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_WTagjetUncertaintiesTool
Definition: SUSYObjDef_xAOD.h:853
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
ST::SUSYObjDef_xAOD::m_tauSelToolBaseline
asg::AnaToolHandle< TauAnalysisTools::ITauSelectionTool > m_tauSelToolBaseline
Definition: SUSYObjDef_xAOD.h:921
ST::SUSYObjDef_xAOD::isData
bool isData() const override final
Definition: SUSYObjDef_xAOD.h:157
ST::SystInfo::affectsType
unsigned int affectsType
Definition: ISUSYObjDef_xAODTool.h:67
xAOD::FileMetaData_v1::mcProcID
@ mcProcID
Same as mc_channel_number [float].
Definition: FileMetaData_v1.h:74
ST::SUSYObjDef_xAOD::m_prwDataSF_UP
double m_prwDataSF_UP
Definition: SUSYObjDef_xAOD.h:624
ST::SUSYObjDef_xAOD::m_bool_prop_set
std::set< std::string > m_bool_prop_set
Definition: SUSYObjDef_xAOD.h:439
ST::SUSYObjDef_xAOD::m_trig2018combination_diLep
std::string m_trig2018combination_diLep
Definition: SUSYObjDef_xAOD.h:949
ST::SUSYObjDef_xAOD::m_jesConfigFat
std::string m_jesConfigFat
Definition: SUSYObjDef_xAOD.h:864
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
ST::SUSYObjDef_xAOD::m_trig2022combination_diLep
std::string m_trig2022combination_diLep
Definition: SUSYObjDef_xAOD.h:950
diffPoolFiles.strict
strict
Definition: diffPoolFiles.py:68
ST::SUSYObjDef_xAOD::m_eleIdBaselineDFName
std::string m_eleIdBaselineDFName
Definition: SUSYObjDef_xAOD.h:992
ST::SUSYObjDef_xAOD::m_muIso_WP
std::string m_muIso_WP
Definition: SUSYObjDef_xAOD.h:670
ST::ISUSYObjDef_xAODTool::FullSim
@ FullSim
Definition: ISUSYObjDef_xAODTool.h:479
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:954
PlotSFuncertainty.wp
wp
Definition: PlotSFuncertainty.py:112
ST::SUSYObjDef_xAOD::m_btagSelTool_trkJet
asg::AnaToolHandle< IBTaggingSelectionTool > m_btagSelTool_trkJet
Definition: SUSYObjDef_xAOD.h:931
ST::SUSYObjDef_xAOD::m_fatjetUncertaintiesTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_fatjetUncertaintiesTool
Definition: SUSYObjDef_xAOD.h:836
ST::SUSYObjDef_xAOD::m_jesCalibSeqJMS
std::string m_jesCalibSeqJMS
Definition: SUSYObjDef_xAOD.h:867
xAOD::JetInput::Type
Type
Definition: JetContainerInfo.h:54
IElectronLRTOverlapRemovalTool.h
ST::SUSYObjDef_xAOD::m_WTagUncConfig
std::string m_WTagUncConfig
Definition: SUSYObjDef_xAOD.h:561
DataVector
Derived DataVector<T>.
Definition: DataVector.h:795
xAOD::JetInput::EMPFlow
@ EMPFlow
Definition: JetContainerInfo.h:64
ST::SUSYObjDef_xAOD::m_runDepPrescaleWeightPRW
bool m_runDepPrescaleWeightPRW
Definition: SUSYObjDef_xAOD.h:626
ST::SUSYObjDef_xAOD::m_prwActualMu2017File
std::string m_prwActualMu2017File
Definition: SUSYObjDef_xAOD.h:617
IAsgDeadHVCellRemovalTool.h
ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_trigEff_singleLep
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_trigEff_singleLep
Definition: SUSYObjDef_xAOD.h:888
ST::SUSYObjDef_xAOD::GetEventInfo
const xAOD::EventInfo * GetEventInfo() const override final
Definition: SUSYObjDef_xAOD.cxx:2987
ST::SUSYObjDef_xAOD::m_orDoElMu
bool m_orDoElMu
Definition: SUSYObjDef_xAOD.h:766
ST::SUSYObjDef_xAOD::m_tauJetORtool
asg::AnaToolHandle< ORUtils::IOverlapTool > m_tauJetORtool
Definition: SUSYObjDef_xAOD.h:986
ST::SUSYObjDef_xAOD::m_jetPt
double m_jetPt
Definition: SUSYObjDef_xAOD.h:741
ST::SUSYObjDef_xAOD::m_photonBaselineIso_WP
std::string m_photonBaselineIso_WP
Definition: SUSYObjDef_xAOD.h:666
xAOD::FileMetaData_v1
Class holding file-level metadata about an xAOD file.
Definition: FileMetaData_v1.h:34
ST::SUSYObjDef_xAOD::getSystInfoList
std::vector< ST::SystInfo > getSystInfoList() const override final
Definition: SUSYObjDef_xAOD.cxx:2542
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
TrigConf::name
Definition: HLTChainList.h:35
ST::SUSYObjDef_xAOD::m_eleId
std::string m_eleId
Definition: SUSYObjDef_xAOD.h:645
ST::SUSYObjDef_xAOD::m_muIdBaseline
int m_muIdBaseline
Definition: SUSYObjDef_xAOD.h:652
ST::SUSYObjDef_xAOD::m_eleIso_WP
std::string m_eleIso_WP
Definition: SUSYObjDef_xAOD.h:657
met::SOFTTRK
@ SOFTTRK
Definition: IMETSystematicsTool.h:51
ST::SUSYObjDef_xAOD::m_photonAllowLate
bool m_photonAllowLate
Definition: SUSYObjDef_xAOD.h:727
ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_iso
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_iso
Definition: SUSYObjDef_xAOD.h:889
ST::SUSYObjDef_xAOD::m_prwConfFiles
std::vector< std::string > m_prwConfFiles
Definition: SUSYObjDef_xAOD.h:615
ST::SUSYObjDef_xAOD::m_metJetSelection
std::string m_metJetSelection
Definition: SUSYObjDef_xAOD.h:810
ST::SUSYObjDef_xAOD::m_tauTruthMatch
asg::AnaToolHandle< TauAnalysisTools::ITauTruthMatchingTool > m_tauTruthMatch
Definition: SUSYObjDef_xAOD.h:923
ST::SUSYObjDef_xAOD::m_eleLRT
bool m_eleLRT
Definition: SUSYObjDef_xAOD.h:661
ST::SUSYObjDef_xAOD::m_trig2022combination_singleLep
std::string m_trig2022combination_singleLep
Definition: SUSYObjDef_xAOD.h:941
ST::SystInfo::affectsKinematics
bool affectsKinematics
Definition: ISUSYObjDef_xAODTool.h:65
ST::SUSYObjDef_xAOD::m_fJvtPtMax
double m_fJvtPtMax
Definition: SUSYObjDef_xAOD.h:754
ST::SUSYObjDef_xAOD::EG_WP
std::string EG_WP(const std::string &wp) const
Definition: SUSYObjDef_xAOD.cxx:1227
ST::SUSYObjDef_xAOD::m_inputMETCore
std::string m_inputMETCore
Definition: SUSYObjDef_xAOD.h:576
ST::SUSYObjDef_xAOD::check_isOption
bool check_isOption(const std::string &wp, const std::vector< std::string > &list) const
Definition: SUSYObjDef_xAOD.cxx:1215
ST::SUSYObjDef_xAOD::NearbyLeptonCorrections
StatusCode NearbyLeptonCorrections(xAOD::ElectronContainer *electrons=nullptr, xAOD::MuonContainer *muons=nullptr) const override final
Definition: SUSYObjDef_xAOD.cxx:2977
ST::SUSYObjDef_xAOD::m_trig2024combination_singleLep
std::string m_trig2024combination_singleLep
Definition: SUSYObjDef_xAOD.h:943
ST::SUSYObjDef_xAOD::m_eleForceFullSimCalib
bool m_eleForceFullSimCalib
Definition: SUSYObjDef_xAOD.h:703
ST::SUSYObjDef_xAOD::m_elecSelLikelihoodBaseline
asg::AnaToolHandle< IAsgElectronLikelihoodTool > m_elecSelLikelihoodBaseline
Definition: SUSYObjDef_xAOD.h:903
ST::SUSYObjDef_xAOD::m_trigConfTool
asg::AnaToolHandle< TrigConf::ITrigConfigTool > m_trigConfTool
Definition: SUSYObjDef_xAOD.h:969
PathResolver.h
ST::SUSYObjDef_xAOD::m_EigenvectorReductionLight
std::string m_EigenvectorReductionLight
Definition: SUSYObjDef_xAOD.h:684
ST::SUSYObjDef_xAOD::m_v_trigs24_cache_singleLep
std::vector< std::string > m_v_trigs24_cache_singleLep
Definition: SUSYObjDef_xAOD.h:466
ST::SUSYObjDef_xAOD::m_ToptagConfig
std::string m_ToptagConfig
Definition: SUSYObjDef_xAOD.h:558
ST::Muon
@ Muon
Definition: ISUSYObjDef_xAODTool.h:78
ST::SUSYObjDef_xAOD::m_tauEffTool
asg::AnaToolHandle< TauAnalysisTools::ITauEfficiencyCorrectionsTool > m_tauEffTool
Definition: SUSYObjDef_xAOD.h:924
CP::SystematicSet::insert
void insert(const SystematicVariation &systematic)
description: insert a systematic into the set
Definition: SystematicSet.cxx:87
IMuonLRTOverlapRemovalTool.h
ST::SUSYObjDef_xAOD::m_tauPt
double m_tauPt
Definition: SUSYObjDef_xAOD.h:730
ST::SUSYObjDef_xAOD::m_muonSelectionToolBaseline
asg::AnaToolHandle< CP::IMuonSelectionTool > m_muonSelectionToolBaseline
Definition: SUSYObjDef_xAOD.h:873
IOverlapRemovalTool.h
ST::SUSYObjDef_xAOD::m_trkMETsyst
bool m_trkMETsyst
Definition: SUSYObjDef_xAOD.h:588
CP::IPileupReweightingTool::getRandomRunNumber
virtual int getRandomRunNumber(const xAOD::EventInfo &eventInfo, bool mu_dependent=true)=0
Get a random run number for this MC event, mu_dependency is recommended ... jetetmiss seem to like it...
ST::SUSYObjDef_xAOD::m_caloMETsyst
bool m_caloMETsyst
Definition: SUSYObjDef_xAOD.h:589
ST::SUSYObjDef_xAOD::m_JMScalib
bool m_JMScalib
Definition: SUSYObjDef_xAOD.h:759
ST::SUSYObjDef_xAOD::m_muz0
double m_muz0
Definition: SUSYObjDef_xAOD.h:711
ST::SUSYObjDef_xAOD::m_JvtWP
std::string m_JvtWP
Definition: SUSYObjDef_xAOD.h:744
ST::SUSYObjDef_xAOD::getSherpaVjetsNjetsWeight
float getSherpaVjetsNjetsWeight() const override final
Definition: SUSYObjDef_xAOD.cxx:2895
IIsolationSelectionTool.h
ST::SUSYObjDef_xAOD::m_useBtagging_trkJet
bool m_useBtagging_trkJet
Definition: SUSYObjDef_xAOD.h:539
xAOD::FileMetaData_v1::amiTag
@ amiTag
AMI tag used to process the file the last time [string].
Definition: FileMetaData_v1.h:58
ST::SUSYObjDef_xAOD::m_force_noMuId
bool m_force_noMuId
Definition: SUSYObjDef_xAOD.h:525
ST::SystInfo
Definition: ISUSYObjDef_xAODTool.h:63
ST::SUSYObjDef_xAOD::m_doFwdJVT
bool m_doFwdJVT
Definition: SUSYObjDef_xAOD.h:752
AtlCoolConsole.tool
tool
Definition: AtlCoolConsole.py:452
ST::SUSYObjDef_xAOD::m_isoCloseByTool
asg::AnaToolHandle< CP::IIsolationCloseByCorrectionTool > m_isoCloseByTool
Definition: SUSYObjDef_xAOD.h:980
ST::SUSYObjDef_xAOD::m_muEffCorrForce1D
bool m_muEffCorrForce1D
Definition: SUSYObjDef_xAOD.h:674
ICPJetUncertaintiesTool.h
ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_trig_singleLep
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_trig_singleLep
Definition: SUSYObjDef_xAOD.h:887
ST::SUSYObjDef_xAOD::m_trig2018combination_multiLep
std::string m_trig2018combination_multiLep
Definition: SUSYObjDef_xAOD.h:957
CP::IPileupReweightingTool::getDataWeight
virtual float getDataWeight(const xAOD::EventInfo &eventInfo, const TString &trigger, bool mu_dependent=true)=0
Get the dataWeight used to 'unprescale' data collected from a given trigger combination....
ST::SUSYObjDef_xAOD::m_btagSelTool_OR
asg::AnaToolHandle< IBTaggingSelectionTool > m_btagSelTool_OR
Definition: SUSYObjDef_xAOD.h:929
IMuonCalibrationAndSmearingTool.h
ST::SUSYObjDef_xAOD::GetPileupWeightPrescaledTrigger
float GetPileupWeightPrescaledTrigger(const std::string &trigger_expr) override final
Definition: SUSYObjDef_xAOD.cxx:3005
ST::SUSYObjDef_xAOD::m_commonPRWFileMC20a
std::string m_commonPRWFileMC20a
Definition: SUSYObjDef_xAOD.h:606
checkTriggerxAOD.found
found
Definition: checkTriggerxAOD.py:328
ST::SUSYObjDef_xAOD::m_muonSelectionHighPtTool
asg::AnaToolHandle< CP::IMuonSelectionTool > m_muonSelectionHighPtTool
Definition: SUSYObjDef_xAOD.h:872
ST::SUSYObjDef_xAOD::m_photonId
std::string m_photonId
Definition: SUSYObjDef_xAOD.h:653
ST::SUSYObjDef_xAOD::m_fJvtConfigRun3
std::string m_fJvtConfigRun3
Definition: SUSYObjDef_xAOD.h:757
ST::SUSYObjDef_xAOD::m_ApplyMVATESQualityCheck
bool m_ApplyMVATESQualityCheck
Definition: SUSYObjDef_xAOD.h:738
ST::SUSYObjDef_xAOD::m_trkJetEta
double m_trkJetEta
Definition: SUSYObjDef_xAOD.h:750
ST::SUSYObjDef_xAOD::m_BtagWP_trkJet
std::string m_BtagWP_trkJet
Definition: SUSYObjDef_xAOD.h:685
CP::IPileupReweightingTool::getCorrectedActualInteractionsPerCrossing
virtual float getCorrectedActualInteractionsPerCrossing(const xAOD::EventInfo &eventInfo, bool includedDataScaleFactor=false)=0
Get the actual mu of a lumiblock ...
SmoothedWZTagger.h
ST::SUSYObjDef_xAOD::m_fatjetUncertaintiesPDSmearTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_fatjetUncertaintiesPDSmearTool
Definition: SUSYObjDef_xAOD.h:837
ST::SUSYObjDef_xAOD::m_fatjetFFSmearingTool
asg::AnaToolHandle< ICPJetCorrectionTool > m_fatjetFFSmearingTool
Definition: SUSYObjDef_xAOD.h:838
met::SOFTCALO
@ SOFTCALO
Definition: IMETSystematicsTool.h:50
ST::SUSYObjDef_xAOD::m_dataSource
int m_dataSource
Definition: SUSYObjDef_xAOD.h:519
ST::SUSYObjDef_xAOD::m_badmuQoverP
double m_badmuQoverP
Definition: SUSYObjDef_xAOD.h:717
ITauToolBase.h
IInclusiveTrackFilterTool.h
ST::SUSYObjDef_xAOD::m_outMuonLocation
SG::WriteHandleKey< xAOD::MuonContainer > m_outMuonLocation
Definition: SUSYObjDef_xAOD.h:883
ST::Electron
@ Electron
Definition: ISUSYObjDef_xAODTool.h:76
ST::Jet
@ Jet
Definition: ISUSYObjDef_xAODTool.h:74
ST::SUSYObjDef_xAOD::m_EleFatJetDR
double m_EleFatJetDR
Definition: SUSYObjDef_xAOD.h:793
ST::SUSYObjDef_xAOD::m_elebaselinez0
double m_elebaselinez0
Definition: SUSYObjDef_xAOD.h:699
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
ST::SUSYObjDef_xAOD::m_muCosmicz0
double m_muCosmicz0
Definition: SUSYObjDef_xAOD.h:715
xAOD::Photon
Photon_v1 Photon
Definition of the current "egamma version".
Definition: Event/xAOD/xAODEgamma/xAODEgamma/Photon.h:17
PathResolverFindCalibFile
std::string PathResolverFindCalibFile(const std::string &logical_file_name)
Definition: PathResolver.cxx:321
Muon
struct TBPatternUnitContext Muon
ST::SUSYObjDef_xAOD::getSystInfo
ST::SystInfo getSystInfo(const CP::SystematicVariation &sys) const override final
Definition: SUSYObjDef_xAOD.cxx:2577
xAOD::JetInput::EMTopo
@ EMTopo
Definition: JetContainerInfo.h:56
AthAnalysisHelper.h
ST::SUSYObjDef_xAOD::m_btagSelTool
asg::AnaToolHandle< IBTaggingSelectionTool > m_btagSelTool
Definition: SUSYObjDef_xAOD.h:928
ST::MET_CST
@ MET_CST
Definition: ISUSYObjDef_xAODTool.h:82
ST::SUSYObjDef_xAOD::m_orDoTauBjet
bool m_orDoTauBjet
Definition: SUSYObjDef_xAOD.h:771
ST::SUSYObjDef_xAOD::currentSystematic
const CP::SystematicSet & currentSystematic() const
Definition: SUSYObjDef_xAOD.cxx:2107
ST::SUSYObjDef_xAOD::m_jetNNJvtSelectionTool
asg::AnaToolHandle< IAsgSelectionTool > m_jetNNJvtSelectionTool
Definition: SUSYObjDef_xAOD.h:844
asg::ToolStore::remove
static StatusCode remove(const IAsgTool *tool)
Remove the specified tool from the store.
Definition: ToolStore.cxx:77
ST::SUSYObjDef_xAOD::m_orMuJetTrkPtRatio
double m_orMuJetTrkPtRatio
Definition: SUSYObjDef_xAOD.h:782
ST::SUSYObjDef_xAOD::m_v_trigs16_cache_diLep
std::vector< std::string > m_v_trigs16_cache_diLep
Definition: SUSYObjDef_xAOD.h:469
ST::SUSYObjDef_xAOD::m_muonTriggerSFTool
asg::AnaToolHandle< CP::IMuonTriggerScaleFactors > m_muonTriggerSFTool
Definition: SUSYObjDef_xAOD.h:880
ST::SUSYObjDef_xAOD::m_eleCrackVeto
bool m_eleCrackVeto
Definition: SUSYObjDef_xAOD.h:695
ST::SUSYObjDef_xAOD::m_mubaselinez0
double m_mubaselinez0
Definition: SUSYObjDef_xAOD.h:713
ORUtils::ToolBox::masterTool
MasterHandle_t masterTool
Master overlap removal tool handle.
Definition: ToolBox.h:64
DeMoAtlasDataLoss.runNumber
string runNumber
Definition: DeMoAtlasDataLoss.py:64
IAsgElectronIsEMSelector.h
ST::SUSYObjDef_xAOD::getElSFkeys
std::vector< std::string > getElSFkeys(const std::string &mapFile) const
Definition: SUSYObjDef_xAOD.cxx:1239
ST::SUSYObjDef_xAOD::m_jesConfigJMSData
std::string m_jesConfigJMSData
Definition: SUSYObjDef_xAOD.h:862
ST::SUSYObjDef_xAOD::m_trig2016combination_singleLep
std::string m_trig2016combination_singleLep
Definition: SUSYObjDef_xAOD.h:938
CP::CorrectionCode::Ok
@ Ok
The correction was done successfully.
Definition: CorrectionCode.h:38
ST::SUSYObjDef_xAOD::m_btagEffTool
asg::AnaToolHandle< IBTaggingEfficiencyTool > m_btagEffTool
Definition: SUSYObjDef_xAOD.h:927
IMatchingTool.h
Trig::TrigDecisionTool::finalize
StatusCode finalize()
Definition: TrigDecisionTool.cxx:234
ST::SUSYObjDef_xAOD::m_fatJets
std::string m_fatJets
Definition: SUSYObjDef_xAOD.h:816
ST::SUSYObjDef_xAOD::m_elecChargeIDSelectorTool
asg::AnaToolHandle< IAsgElectronLikelihoodTool > m_elecChargeIDSelectorTool
Definition: SUSYObjDef_xAOD.h:917
ST::SUSYObjDef_xAOD::m_muCalibrationMode
int m_muCalibrationMode
Definition: SUSYObjDef_xAOD.h:718
ST::SUSYObjDef_xAOD::m_softTermParam
int m_softTermParam
Definition: SUSYObjDef_xAOD.h:592
ST::SUSYObjDef_xAOD::m_strictConfigCheck
bool m_strictConfigCheck
Definition: SUSYObjDef_xAOD.h:542
ST::SUSYObjDef_xAOD::m_orBoostedElectronMaxConeSize
double m_orBoostedElectronMaxConeSize
Definition: SUSYObjDef_xAOD.h:775
ST::SUSYObjDef_xAOD::m_eleBaselineIso_WP
std::string m_eleBaselineIso_WP
Definition: SUSYObjDef_xAOD.h:649
ST::SUSYObjDef_xAOD::m_inputMETMap
std::string m_inputMETMap
Definition: SUSYObjDef_xAOD.h:575
ST::SUSYObjDef_xAOD::m_BtagTagger_trkJet
std::string m_BtagTagger_trkJet
Definition: SUSYObjDef_xAOD.h:686
ST::SUSYObjDef_xAOD::m_autoconfigPRWRPVmode
bool m_autoconfigPRWRPVmode
Definition: SUSYObjDef_xAOD.h:600
FileMetaData.h
ST::SUSYObjDef_xAOD::m_tauId
std::string m_tauId
Definition: SUSYObjDef_xAOD.h:655
python.CaloAddPedShiftConfig.int
int
Definition: CaloAddPedShiftConfig.py:45
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
ST::SUSYObjDef_xAOD::validConfig
StatusCode validConfig(bool strict=false) const
Definition: SUSYObjDef_xAOD.cxx:1946
ST::SUSYObjDef_xAOD::m_EG_corrModel
std::string m_EG_corrModel
Definition: SUSYObjDef_xAOD.h:823
ST::SUSYObjDef_xAOD::m_v_trigs18_cache_multiLep
std::vector< std::string > m_v_trigs18_cache_multiLep
Definition: SUSYObjDef_xAOD.h:477
ST::SUSYObjDef_xAOD::m_JetFatJetDR
double m_JetFatJetDR
Definition: SUSYObjDef_xAOD.h:794
ST::SUSYObjDef_xAOD::m_configFile
std::string m_configFile
Definition: SUSYObjDef_xAOD.h:522
ST::SUSYObjDef_xAOD::m_JetTruthLabelName
std::string m_JetTruthLabelName
Definition: SUSYObjDef_xAOD.h:564
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
ST::SUSYObjDef_xAOD::m_orDoBoostedElectron
bool m_orDoBoostedElectron
Definition: SUSYObjDef_xAOD.h:772
ST::SUSYObjDef_xAOD::m_photonSelIsEMBaseline
asg::AnaToolHandle< IAsgPhotonIsEMSelector > m_photonSelIsEMBaseline
Definition: SUSYObjDef_xAOD.h:905
CP::SystematicRegistry
This module implements the central registry for handling systematic uncertainties with CP tools.
Definition: SystematicRegistry.h:25
ST::SUSYObjDef_xAOD::m_photonPt
double m_photonPt
Definition: SUSYObjDef_xAOD.h:724
ST::SUSYObjDef_xAOD::m_metVeryGreedyPhotons
bool m_metVeryGreedyPhotons
Definition: SUSYObjDef_xAOD.h:585
ST::SUSYObjDef_xAOD::m_trigDecTool
asg::AnaToolHandle< Trig::TrigDecisionTool > m_trigDecTool
Definition: SUSYObjDef_xAOD.h:970
ST::SUSYObjDef_xAOD::m_isRun3
bool m_isRun3
Definition: SUSYObjDef_xAOD.h:807
ST::SUSYObjDef_xAOD::m_metsysConfigPrefix
std::string m_metsysConfigPrefix
Definition: SUSYObjDef_xAOD.h:586
ST::SUSYObjDef_xAOD::m_defaultTrackJets
std::string m_defaultTrackJets
Definition: SUSYObjDef_xAOD.h:815
ST::SUSYObjDef_xAOD::m_eleEta
double m_eleEta
Definition: SUSYObjDef_xAOD.h:694
ST::SUSYObjDef_xAOD::m_prwActualMu2023File
std::string m_prwActualMu2023File
Definition: SUSYObjDef_xAOD.h:620
ST::SUSYObjDef_xAOD::OverlapRemoval
StatusCode OverlapRemoval(const xAOD::ElectronContainer *electrons, const xAOD::MuonContainer *muons, const xAOD::JetContainer *jets, const xAOD::PhotonContainer *gamma=nullptr, const xAOD::TauJetContainer *taujet=nullptr, const xAOD::JetContainer *fatjets=nullptr) override final
Definition: SUSYObjDef_xAOD.cxx:2942
ST::LRT_Object
@ LRT_Object
Definition: ISUSYObjDef_xAODTool.h:85
ST::SUSYObjDef_xAOD::m_jesCalibSeqFat
std::string m_jesCalibSeqFat
Definition: SUSYObjDef_xAOD.h:868
CP::SystematicRegistry::recommendedSystematics
const SystematicSet & recommendedSystematics() const
returns: the recommended set of systematics
Definition: SystematicRegistry.cxx:38
ST::SUSYObjDef_xAOD::m_TopTagUncConfig
std::string m_TopTagUncConfig
Definition: SUSYObjDef_xAOD.h:563
ST::SUSYObjDef_xAOD::applySystematicVariation
StatusCode applySystematicVariation(const CP::SystematicSet &systConfig) override final
Definition: SUSYObjDef_xAOD.cxx:2149
IJetUpdateJvt.h
ST::SUSYObjDef_xAOD::m_currentSyst
CP::SystematicSet m_currentSyst
Definition: SUSYObjDef_xAOD.h:820
CP::IPileupReweightingTool::getCombinedWeight
virtual float getCombinedWeight(const xAOD::EventInfo &eventInfo, bool correctUnrepresented=false)=0
Return combined pileup weight.
ST::SUSYObjDef_xAOD::m_treatPUJets
bool m_treatPUJets
Definition: SUSYObjDef_xAOD.h:593
ST::SUSYObjDef_xAOD::m_jesConfig
std::string m_jesConfig
Definition: SUSYObjDef_xAOD.h:860
ST::SUSYObjDef_xAOD::m_tauConfigPathBaseline
std::string m_tauConfigPathBaseline
Definition: SUSYObjDef_xAOD.h:733
ST::ISUSYObjDef_xAODTool::AtlfastII
@ AtlfastII
Definition: ISUSYObjDef_xAODTool.h:480
CaloCellTimeCorrFiller.filename
filename
Definition: CaloCellTimeCorrFiller.py:23
ST::SUSYObjDef_xAOD::m_autoconfigPRWPath
std::string m_autoconfigPRWPath
Definition: SUSYObjDef_xAOD.h:597
ST::SUSYObjDef_xAOD::m_photonIdDFName
std::string m_photonIdDFName
Definition: SUSYObjDef_xAOD.h:995
ST::SUSYObjDef_xAOD::m_jetFatCalibTool
asg::AnaToolHandle< IJetCalibrationTool > m_jetFatCalibTool
Definition: SUSYObjDef_xAOD.h:833
ST::SUSYObjDef_xAOD::m_electronTriggerSFStringSingle
std::string m_electronTriggerSFStringSingle
Definition: SUSYObjDef_xAOD.h:641
ST::SUSYObjDef_xAOD::m_jetNNJvtEfficiencyTool
asg::AnaToolHandle< CP::IJvtEfficiencyTool > m_jetNNJvtEfficiencyTool
Definition: SUSYObjDef_xAOD.h:845
IWeightTool.h
ST::SUSYObjDef_xAOD::m_tauEta
double m_tauEta
Definition: SUSYObjDef_xAOD.h:731
python.SystemOfUnits.s
float s
Definition: SystemOfUnits.py:147
ST::SUSYObjDef_xAOD::m_v_trigs17_cache_multiLep
std::vector< std::string > m_v_trigs17_cache_multiLep
Definition: SUSYObjDef_xAOD.h:476
ST::SUSYObjDef_xAOD::m_v_trigs23_cache_singleEle
std::vector< std::string > m_v_trigs23_cache_singleEle
Definition: SUSYObjDef_xAOD.h:457
ST::SUSYObjDef_xAOD::m_trig2017combination_diLep
std::string m_trig2017combination_diLep
Definition: SUSYObjDef_xAOD.h:948
ST::SUSYObjDef_xAOD::m_trigDRScoringTool
asg::AnaToolHandle< Trig::IMatchScoringTool > m_trigDRScoringTool
Definition: SUSYObjDef_xAOD.h:973
ST::SUSYObjDef_xAOD::m_trig2015combination_diLep
std::string m_trig2015combination_diLep
Definition: SUSYObjDef_xAOD.h:946
ST::SUSYObjDef_xAOD::m_jetTruthLabelingTool
asg::AnaToolHandle< JetTruthLabelingTool > m_jetTruthLabelingTool
Definition: SUSYObjDef_xAOD.h:852
ST::SUSYObjDef_xAOD::m_eleLRT_strat
int m_eleLRT_strat
Definition: SUSYObjDef_xAOD.h:662
ST::SUSYObjDef_xAOD::m_metSignif
asg::AnaToolHandle< IMETSignificance > m_metSignif
Definition: SUSYObjDef_xAOD.h:935
xAODType::Tau
@ Tau
The object is a tau (jet)
Definition: ObjectType.h:49
ST::SUSYObjDef_xAOD::m_autoconfigPRWFile
std::string m_autoconfigPRWFile
Definition: SUSYObjDef_xAOD.h:598
ST::SUSYObjDef_xAOD::m_v_trigs16_cache_singleLep
std::vector< std::string > m_v_trigs16_cache_singleLep
Definition: SUSYObjDef_xAOD.h:461
ST::SUSYObjDef_xAOD::m_jesConfigFatData
std::string m_jesConfigFatData
Definition: SUSYObjDef_xAOD.h:865
CxxUtils::atoi
int atoi(std::string_view str)
Helper functions to unpack numbers decoded in string into integers and doubles The strings are requir...
Definition: Control/CxxUtils/Root/StringUtils.cxx:85
ST::SUSYObjDef_xAOD::m_eleBaselinePt
double m_eleBaselinePt
Definition: SUSYObjDef_xAOD.h:690
ST::SystInfo::affectsWeights
bool affectsWeights
Definition: ISUSYObjDef_xAODTool.h:66
ST::SUSYObjDef_xAOD::m_commonPRWFileMC23c
std::string m_commonPRWFileMC23c
Definition: SUSYObjDef_xAOD.h:611
copySelective.source
string source
Definition: copySelective.py:31
ST::Unknown
@ Unknown
Definition: ISUSYObjDef_xAODTool.h:73
CP::IPileupReweightingTool::getPRWHash
virtual ULong64_t getPRWHash(const xAOD::EventInfo &eventInfo)=0
return the prw hash used for fast updates of weights at the post-processing level ....
ST::SUSYObjDef_xAOD::m_v_trigs16_cache_multiLep
std::vector< std::string > m_v_trigs16_cache_multiLep
Definition: SUSYObjDef_xAOD.h:475
ST::SUSYObjDef_xAOD::m_eleConfig
std::string m_eleConfig
Definition: SUSYObjDef_xAOD.h:647
ST::SUSYObjDef_xAOD::m_muHighPtExtraSmear
bool m_muHighPtExtraSmear
Definition: SUSYObjDef_xAOD.h:673
calibdata.copy
bool copy
Definition: calibdata.py:26
ST::SUSYObjDef_xAOD::m_photonTriggerName
std::string m_photonTriggerName
Definition: SUSYObjDef_xAOD.h:668
ST::SUSYObjDef_xAOD::GetCorrectedActualInteractionsPerCrossing
float GetCorrectedActualInteractionsPerCrossing(bool includeDataSF=false) override final
Definition: SUSYObjDef_xAOD.cxx:3035
ST::SUSYObjDef_xAOD::m_TopTagjetUncertaintiesTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_TopTagjetUncertaintiesTool
Definition: SUSYObjDef_xAOD.h:855
ST::SUSYObjDef_xAOD::m_EigenvectorReductionB
std::string m_EigenvectorReductionB
Definition: SUSYObjDef_xAOD.h:682
ST::SUSYObjDef_xAOD::m_orBoostedElectronC2
double m_orBoostedElectronC2
Definition: SUSYObjDef_xAOD.h:774
xAODType::BTag
@ BTag
The object is a b-tagging object.
Definition: ObjectType.h:60
ST::Tau
@ Tau
Definition: ISUSYObjDef_xAODTool.h:79
ST::SUSYObjDef_xAOD::m_trig2023combination_singleLep
std::string m_trig2023combination_singleLep
Definition: SUSYObjDef_xAOD.h:942
ST::SUSYObjDef_xAOD::m_muLRT
bool m_muLRT
Definition: SUSYObjDef_xAOD.h:719
InDet::IInclusiveTrackFilterTool::accept
virtual bool accept(const xAOD::TrackParticle *) const =0
ST::SUSYObjDef_xAOD::m_tauPrePtCut
double m_tauPrePtCut
Definition: SUSYObjDef_xAOD.h:729
ST::SUSYObjDef_xAOD::m_v_trigs22_cache_diLep
std::vector< std::string > m_v_trigs22_cache_diLep
Definition: SUSYObjDef_xAOD.h:472
ST::SUSYObjDef_xAOD::m_orInputLabel
std::string m_orInputLabel
Definition: SUSYObjDef_xAOD.h:787
ST::SUSYObjDef_xAOD::m_ZtagConfig
std::string m_ZtagConfig
Definition: SUSYObjDef_xAOD.h:557
ST::SUSYObjDef_xAOD::m_eleBaselineCrackVeto
bool m_eleBaselineCrackVeto
Definition: SUSYObjDef_xAOD.h:692
CP::IIsolationCorrectionTool::isAffectedBySystematic
virtual bool isAffectedBySystematic(const CP::SystematicVariation &systematic) const =0
Declare the interface that this class provides.
ST::SUSYObjDef_xAOD::m_mud0sig
double m_mud0sig
Definition: SUSYObjDef_xAOD.h:710
ST::SUSYObjDef_xAOD::currentSystematicIsWeight
bool currentSystematicIsWeight() const
Definition: SUSYObjDef_xAOD.cxx:2143
ST::SUSYObjDef_xAOD::m_muIsoHighPt_WP
std::string m_muIsoHighPt_WP
Definition: SUSYObjDef_xAOD.h:671
ST::SUSYObjDef_xAOD::m_murequirepassedHighPtCuts
bool m_murequirepassedHighPtCuts
Definition: SUSYObjDef_xAOD.h:714
ST::SUSYObjDef_xAOD::m_muonHighPtIsolationSFTool
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonHighPtIsolationSFTool
Definition: SUSYObjDef_xAOD.h:879
ST::SUSYObjDef_xAOD::m_photonIdBaseline
std::string m_photonIdBaseline
Definition: SUSYObjDef_xAOD.h:654
ST::SUSYObjDef_xAOD::treatAsYear
int treatAsYear(const int runNumber=-1) const override final
Definition: SUSYObjDef_xAOD.cxx:3123
ST::SUSYObjDef_xAOD::m_metGreedyPhotons
bool m_metGreedyPhotons
Definition: SUSYObjDef_xAOD.h:584
xAOD::bool
setBGCode setTAP setLVL2ErrorBits bool
Definition: TrigDecision_v1.cxx:60
CP::ISystematicsTool::applySystematicVariation
virtual StatusCode applySystematicVariation(const SystematicSet &systConfig)=0
effects: configure this tool for the given list of systematic variations.
ST::SUSYObjDef_xAOD::m_muonTrigSFTools
ToolHandleArray< CP::IMuonTriggerScaleFactors > m_muonTrigSFTools
Definition: SUSYObjDef_xAOD.h:881
ST::SUSYObjDef_xAOD::m_jetCleaningTool
asg::AnaToolHandle< IJetSelector > m_jetCleaningTool
Definition: SUSYObjDef_xAOD.h:839
ST::SUSYObjDef_xAOD::m_photonCrackVeto
bool m_photonCrackVeto
Definition: SUSYObjDef_xAOD.h:726
ST::SUSYObjDef_xAOD::autoconfigurePileupRWTool
StatusCode autoconfigurePileupRWTool(const std::string &PRWfilesDir="dev/PileupReweighting/share/", const std::string &PRWfileName="", bool usePathResolver=true, bool RPVLLmode=false, bool Combinedmode=false, const std::string &HFFilter="")
Definition: SUSYObjDef_xAOD.cxx:1014
ST::SUSYObjDef_xAOD::m_BtagKeyOverride
std::string m_BtagKeyOverride
Definition: SUSYObjDef_xAOD.h:680
asg::AnaToolHandle::empty
bool empty() const
whether this ToolHandle is completely empty, i.e.
ST::SUSYObjDef_xAOD::m_commonPRWFileMC23a
std::string m_commonPRWFileMC23a
Definition: SUSYObjDef_xAOD.h:610
ST::SUSYObjDef_xAOD::m_orDoMuonJetGhostAssociation
bool m_orDoMuonJetGhostAssociation
Definition: SUSYObjDef_xAOD.h:784
ST::SUSYObjDef_xAOD::m_isoCorrTool
asg::AnaToolHandle< CP::IIsolationCorrectionTool > m_isoCorrTool
Definition: SUSYObjDef_xAOD.h:975
ST::SUSYObjDef_xAOD::m_defaultTruthJets
std::string m_defaultTruthJets
Definition: SUSYObjDef_xAOD.h:817
IJetJvtEfficiency.h
python.ParticleTypeUtil.info
def info
Definition: ParticleTypeUtil.py:87
ST::SUSYObjDef_xAOD::m_tauDoTTM
bool m_tauDoTTM
Definition: SUSYObjDef_xAOD.h:734
ST::SUSYObjDef_xAOD::m_elecTrigSFTools
ToolHandleArray< IAsgElectronEfficiencyCorrectionTool > m_elecTrigSFTools
Definition: SUSYObjDef_xAOD.h:895
ST::SUSYObjDef_xAOD::m_tauTrigEffTool
std::vector< asg::AnaToolHandle< TauAnalysisTools::ITauEfficiencyCorrectionsTool > > m_tauTrigEffTool
Definition: SUSYObjDef_xAOD.h:925
ST::SUSYObjDef_xAOD::m_mcCampaign
std::string m_mcCampaign
Definition: SUSYObjDef_xAOD.h:602
xAOD::Jet
Jet_v1 Jet
Definition of the current "jet version".
Definition: Event/xAOD/xAODJet/xAODJet/Jet.h:17
ST::SUSYObjDef_xAOD::m_orDoMuonJet
bool m_orDoMuonJet
Definition: SUSYObjDef_xAOD.h:767
ST::SUSYObjDef_xAOD::m_v_trigs16_cache_singleEle
std::vector< std::string > m_v_trigs16_cache_singleEle
Definition: SUSYObjDef_xAOD.h:453
ST::SUSYObjDef_xAOD::m_commonPRWFileMC23d
std::string m_commonPRWFileMC23d
Definition: SUSYObjDef_xAOD.h:612
ST::SUSYObjDef_xAOD::GetInDetLargeD0Tracks
const xAOD::TrackParticleContainer & GetInDetLargeD0Tracks(const EventContext &ctx) const override final
Definition: SUSYObjDef_xAOD.cxx:3082
xAOD::FileMetaData_v1::dataType
@ dataType
Data type that's in the file [string].
Definition: FileMetaData_v1.h:64
xAOD::JetInput::Uncategorized
@ Uncategorized
Definition: JetContainerInfo.h:100
ST::SUSYObjDef_xAOD::m_upstreamTriggerMatching
bool m_upstreamTriggerMatching
Definition: SUSYObjDef_xAOD.h:528
InDetDD::electrons
@ electrons
Definition: InDetDD_Defs.h:17
ITauSmearingTool.h
ST::SUSYObjDef_xAOD::initialize
StatusCode initialize() override final
Dummy implementation of the initialisation function.
Definition: SUSYObjDef_xAOD.cxx:885
IEfficiencyScaleFactorTool.h
ST::SUSYObjDef_xAOD::m_LRTuncTool
asg::AnaToolHandle< InDet::IInclusiveTrackFilterTool > m_LRTuncTool
Definition: SUSYObjDef_xAOD.h:984
ST::MET_Track
@ MET_Track
Definition: ISUSYObjDef_xAODTool.h:83
ST::SUSYObjDef_xAOD::m_WtagConfig
std::string m_WtagConfig
Definition: SUSYObjDef_xAOD.h:556
ST::SUSYObjDef_xAOD::m_useTRUTH3
bool m_useTRUTH3
Definition: SUSYObjDef_xAOD.h:804
ST::SUSYObjDef_xAOD::m_EG_corrFNList
std::string m_EG_corrFNList
Definition: SUSYObjDef_xAOD.h:824
ST::SUSYObjDef_xAOD::m_acc_photonId
SG::ConstAccessor< char > m_acc_photonId
Definition: SUSYObjDef_xAOD.h:1001
ST::SUSYObjDef_xAOD::m_photonIsolationSFTool
asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > m_photonIsolationSFTool
Definition: SUSYObjDef_xAOD.h:908
ST::SUSYObjDef_xAOD::m_muonSelectionTool
asg::AnaToolHandle< CP::IMuonSelectionTool > m_muonSelectionTool
Definition: SUSYObjDef_xAOD.h:871
ST::SUSYObjDef_xAOD::m_useSigLepForIsoCloseByOR
bool m_useSigLepForIsoCloseByOR
Definition: SUSYObjDef_xAOD.h:801
ST::SUSYObjDef_xAOD::m_eleBaselineEta
double m_eleBaselineEta
Definition: SUSYObjDef_xAOD.h:691
CP::SystematicRegistry::getInstance
static SystematicRegistry & getInstance()
Get the singleton instance of the registry for the curren thread.
Definition: SystematicRegistry.cxx:25
AthAnalysisHelper::retrieveMetadata
static std::string retrieveMetadata(const std::string &folder, const std::string &key, const ServiceHandle< StoreGateSvc > &inputMetaStore)
method that always returns as a string you can use from, e.g, pyROOT with evt = ROOT....
Definition: AthAnalysisHelper.h:254
ST::SUSYObjDef_xAOD::m_egammaAmbiguityTool
asg::AnaToolHandle< IEGammaAmbiguityTool > m_egammaAmbiguityTool
Definition: SUSYObjDef_xAOD.h:916
ST::SUSYObjDef_xAOD::m_prwActualMu2018File
std::string m_prwActualMu2018File
Definition: SUSYObjDef_xAOD.h:618
ST::SUSYObjDef_xAOD::m_doIsoSignal
bool m_doIsoSignal
Definition: SUSYObjDef_xAOD.h:796
ST::SUSYObjDef_xAOD::getDefaultJetUncConfig
std::string getDefaultJetUncConfig()
Definition: SUSYObjDef_xAOD.cxx:1835
ST::SUSYObjDef_xAOD::m_eleIsoHighPtThresh
double m_eleIsoHighPtThresh
Definition: SUSYObjDef_xAOD.h:659
ST::SUSYObjDef_xAOD::m_orBJetPtUpperThres
double m_orBJetPtUpperThres
Definition: SUSYObjDef_xAOD.h:789
ST::SUSYObjDef_xAOD::m_eleChID_WP
std::string m_eleChID_WP
Definition: SUSYObjDef_xAOD.h:660
SystematicsUtil.h
ST::SUSYObjDef_xAOD::m_trig2015combination_diPhoton
std::string m_trig2015combination_diPhoton
Definition: SUSYObjDef_xAOD.h:962
CP::ISystematicsTool::isAffectedBySystematic
virtual bool isAffectedBySystematic(const SystematicVariation &systematic) const =0
Declare the interface that this class provides.
ST::SUSYObjDef_xAOD::m_isoTool
asg::AnaToolHandle< CP::IIsolationSelectionTool > m_isoTool
Definition: SUSYObjDef_xAOD.h:976
ST::SUSYObjDef_xAOD::m_JvtConfigRun3
std::string m_JvtConfigRun3
Definition: SUSYObjDef_xAOD.h:747
ST::SUSYObjDef_xAOD::m_defaultSyst
CP::SystematicSet m_defaultSyst
Definition: SUSYObjDef_xAOD.h:819
ST::SUSYObjDef_xAOD::m_pmgSHnjetWeighter
asg::AnaToolHandle< IWeightTool > m_pmgSHnjetWeighter
Definition: SUSYObjDef_xAOD.h:989