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