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