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