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