ATLAS Offline Software
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
ST::SUSYObjDef_xAOD Class Referenceabstract

#include <SUSYObjDef_xAOD.h>

Inheritance diagram for ST::SUSYObjDef_xAOD:
Collaboration diagram for ST::SUSYObjDef_xAOD:

Public Types

enum  DataSource { Undefined = -1, Data, FullSim, AtlfastII }
 

Public Member Functions

 SUSYObjDef_xAOD (const std::string &name)
 
 ~SUSYObjDef_xAOD ()
 
StatusCode initialize () override final
 Dummy implementation of the initialisation function. More...
 
bool isData () const override final
 
bool isAtlfast () const override final
 
StatusCode setBoolProperty (const std::string &name, const bool &property) override final
 
void setDataSource (int source)
 
StatusCode FillJet (xAOD::Jet &input, const bool doCalib=true, bool isFat=false, bool doLargeRdecorations=false) override final
 
StatusCode FillTrackJet (xAOD::Jet &input) override final
 
StatusCode FillTau (xAOD::TauJet &input) override final
 
StatusCode FillMuon (xAOD::Muon &input, const float ptcut, const float etacut) override final
 
StatusCode FillElectron (xAOD::Electron &input, const float etcut, const float etacut) override final
 
StatusCode FillPhoton (xAOD::Photon &input, const float ptcut, const float etacut) override final
 
const xAOD::VertexGetPrimVtx () const override final
 
StatusCode GetJets (xAOD::JetContainer *&copy, xAOD::ShallowAuxContainer *&copyaux, const bool recordSG=true, const std::string &jetkey="", const xAOD::JetContainer *containerToBeCopied=nullptr) override final
 
StatusCode GetTrackJets (xAOD::JetContainer *&copy, xAOD::ShallowAuxContainer *&copyaux, const bool recordSG=true, const std::string &jetkey="", const xAOD::JetContainer *containerToBeCopied=nullptr) override final
 
StatusCode GetJetsSyst (const xAOD::JetContainer &calibjets, xAOD::JetContainer *&copy, xAOD::ShallowAuxContainer *&copyaux, const bool recordSG=true, const std::string &jetkey="") override final
 
StatusCode GetFatJets (xAOD::JetContainer *&copy, xAOD::ShallowAuxContainer *&copyaux, const bool recordSG=false, const std::string &jetkey="", const bool doLargeRdecorations=false, const xAOD::JetContainer *containerToBeCopied=nullptr) override final
 
StatusCode GetTaus (xAOD::TauJetContainer *&copy, xAOD::ShallowAuxContainer *&copyaux, const bool recordSG=true, const std::string &taukey="TauJets", const xAOD::TauJetContainer *containerToBeCopied=nullptr) override final
 
StatusCode GetMuons (xAOD::MuonContainer *&copy, xAOD::ShallowAuxContainer *&copyaux, const bool recordSG=true, const std::string &muonkey="Muons", const std::string &lrtmuonkey="MuonsLRT", const xAOD::MuonContainer *containerToBeCopied=nullptr) override final
 
StatusCode GetElectrons (xAOD::ElectronContainer *&copy, xAOD::ShallowAuxContainer *&copyaux, const bool recordSG=true, const std::string &elekey="Electrons", const std::string &lrtelekey="LRTElectrons", const xAOD::ElectronContainer *containerToBeCopied=nullptr) override final
 
StatusCode GetPhotons (xAOD::PhotonContainer *&copy, xAOD::ShallowAuxContainer *&copyaux, const bool recordSG=true, const std::string &photonkey="Photons", const xAOD::PhotonContainer *containerToBeCopied=nullptr) override final
 
StatusCode GetMET (xAOD::MissingETContainer &met, const xAOD::JetContainer *jet, const xAOD::ElectronContainer *elec=nullptr, const xAOD::MuonContainer *muon=nullptr, const xAOD::PhotonContainer *gamma=nullptr, const xAOD::TauJetContainer *taujet=nullptr, bool doTST=true, bool doJVTCut=true, const xAOD::IParticleContainer *invis=nullptr) override final
 
StatusCode GetTrackMET (xAOD::MissingETContainer &met, const xAOD::JetContainer *jet, const xAOD::ElectronContainer *elec=nullptr, const xAOD::MuonContainer *muon=nullptr) override final
 
StatusCode GetMETSig (xAOD::MissingETContainer &met, double &metSignificance, bool doTST=true, bool doJVTCut=true) override final
 
StatusCode MergeMuons (const xAOD::MuonContainer &muons, const std::vector< bool > &writeMuon, xAOD::MuonContainer *outputCol) const override final
 
StatusCode prepareLRTMuons (const xAOD::MuonContainer *inMuons, xAOD::MuonContainer *copy) const override final
 
StatusCode MergeElectrons (const xAOD::ElectronContainer &electrons, xAOD::ElectronContainer *outputCol, const std::set< const xAOD::Electron * > &ElectronsToRemove) const override final
 
StatusCode prepareLRTElectrons (const xAOD::ElectronContainer *inMuons, xAOD::ElectronContainer *copy) const override final
 
StatusCode SetBtagWeightDecorations (const xAOD::Jet &input, const asg::AnaToolHandle< IBTaggingSelectionTool > &btagSelTool, const std::string &btagTagger) const override final
 
bool IsSignalJet (const xAOD::Jet &input, const float ptcut, const float etacut) const override final
 
bool IsBadJet (const xAOD::Jet &input) const override final
 
bool IsBJetLoose (const xAOD::Jet &input) const override final
 
bool JetPassJVT (xAOD::Jet &input) override final
 
bool IsSignalMuon (const xAOD::Muon &input, const float ptcut, const float d0sigcut, const float z0cut, const float etacut=DUMMYDEF) const override final
 
bool IsSignalElectron (const xAOD::Electron &input, const float etcut, const float d0sigcut, const float z0cut, const float etacut=DUMMYDEF) const override final
 
bool IsCosmicMuon (const xAOD::Muon &input, const float z0cut, const float d0cut) const override final
 
bool IsHighPtMuon (const xAOD::Muon &input) const override final
 
bool IsSignalTau (const xAOD::TauJet &input, const float ptcut, const float etacut) const override final
 
bool IsBadMuon (const xAOD::Muon &input, const float qopcut) const override final
 
bool IsSignalPhoton (const xAOD::Photon &input, const float ptcut, const float etacut=DUMMYDEF) const override final
 
bool IsBJet (const xAOD::Jet &input) const override final
 
bool IsTrackBJet (const xAOD::Jet &input) const override final
 
bool IsTruthBJet (const xAOD::Jet &input) const override final
 
int IsBJetContinuous (const xAOD::Jet &input) const override final
 
int IsTrackBJetContinuous (const xAOD::Jet &input) const override final
 
float BtagSF (const xAOD::JetContainer *jets) override final
 
float BtagSFsys (const xAOD::JetContainer *jets, const CP::SystematicSet &systConfig) override final
 
float BtagSF_trkJet (const xAOD::JetContainer *trkjets) override final
 
float BtagSFsys_trkJet (const xAOD::JetContainer *trkjets, const CP::SystematicSet &systConfig) override final
 
double JVT_SF (const xAOD::JetContainer *jets) override final
 
double JVT_SFsys (const xAOD::JetContainer *jets, const CP::SystematicSet &systConfig) override final
 
double FJVT_SF (const xAOD::JetContainer *jets) override final
 
double FJVT_SFsys (const xAOD::JetContainer *jets, const CP::SystematicSet &systConfig) override final
 
float GetSignalMuonSF (const xAOD::Muon &mu, const bool recoSF=true, const bool isoSF=true, const bool doBadMuonHP=true, const bool warnOVR=true) override final
 
double GetMuonTriggerEfficiency (const xAOD::Muon &mu, const std::string &trigExpr, const bool isdata=false) override final
 
double GetTotalMuonTriggerSF (const xAOD::MuonContainer &sfmuons, const std::string &trigExpr) override final
 
double GetTotalMuonSF (const xAOD::MuonContainer &muons, const bool recoSF=true, const bool isoSF=true, const std::string &trigExpr="HLT_mu20_iloose_L1MU15_OR_HLT_mu50", const bool bmhptSF=true) override final
 
double GetTotalMuonSFsys (const xAOD::MuonContainer &muons, const CP::SystematicSet &systConfig, const bool recoSF=true, const bool isoSF=true, const std::string &trigExpr="HLT_mu20_iloose_L1MU15_OR_HLT_mu50", const bool bmhptSF=true) override final
 
float GetSignalElecSF (const xAOD::Electron &el, const bool recoSF=true, const bool idSF=true, const bool triggerSF=true, const bool isoSF=true, const std::string &trigExpr="singleLepton", const bool ecidsSF=false, const bool cidSF=false) override final
 
double GetEleTriggerEfficiency (const xAOD::Electron &el, const std::string &trigExpr="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") const override final
 
double GetTriggerGlobalEfficiency (const xAOD::ElectronContainer &electrons, const xAOD::MuonContainer &muons, const std::string &trigExpr="diLepton") override final
 
double GetTriggerGlobalEfficiency (const xAOD::PhotonContainer &photons, const std::string &trigExpr="diPhoton") override final
 
double GetEleTriggerEfficiencySF (const xAOD::Electron &el, const std::string &trigExpr="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") const override final
 
double GetTriggerGlobalEfficiencySF (const xAOD::ElectronContainer &electrons, const xAOD::MuonContainer &muons, const std::string &trigExpr="diLepton") override final
 
double GetTriggerGlobalEfficiencySF (const xAOD::PhotonContainer &photons, const std::string &trigExpr="diPhoton") override final
 
double GetTriggerGlobalEfficiencySFsys (const xAOD::ElectronContainer &electrons, const xAOD::MuonContainer &muons, const CP::SystematicSet &systConfig, const std::string &trigExpr="diLepton") override final
 
double GetTriggerGlobalEfficiencySFsys (const xAOD::PhotonContainer &photons, const CP::SystematicSet &systConfig, const std::string &trigExpr="diPhoton") override final
 
float GetTotalElectronSF (const xAOD::ElectronContainer &electrons, const bool recoSF=true, const bool idSF=true, const bool triggerSF=true, const bool isoSF=true, const std::string &trigExpr="singleLepton", const bool ecidsSF=false, const bool cidSF=false) override final
 
float GetTotalElectronSFsys (const xAOD::ElectronContainer &electrons, const CP::SystematicSet &systConfig, const bool recoSF=true, const bool idSF=true, const bool triggerSF=true, const bool isoSF=true, const std::string &trigExpr="singleLepton", const bool ecidsSF=false, const bool cidSF=false) override final
 
double GetSignalTauSF (const xAOD::TauJet &tau, const bool idSF=true, const bool triggerSF=true, const std::string &trigExpr="tau25_medium1_tracktwo") override final
 
double GetSignalTauSFsys (const xAOD::TauJet &tau, const CP::SystematicSet &systConfig, const bool idSF=true, const bool triggerSF=true, const std::string &trigExpr="tau25_medium1_tracktwo") override final
 
double GetTauTriggerEfficiencySF (const xAOD::TauJet &tau, const std::string &trigExpr="tau25_medium1_tracktwo") override final
 
double GetTotalTauSF (const xAOD::TauJetContainer &taus, const bool idSF=true, const bool triggerSF=true, const std::string &trigExpr="tau25_medium1_tracktwo") override final
 
double GetTotalTauSFsys (const xAOD::TauJetContainer &taus, const CP::SystematicSet &systConfig, const bool idSF=true, const bool triggerSF=true, const std::string &trigExpr="tau25_medium1_tracktwo") override final
 
double GetSignalPhotonSF (const xAOD::Photon &ph, const bool effSF=true, const bool isoSF=true, const bool triggerSF=false) const override final
 
double GetSignalPhotonSFsys (const xAOD::Photon &ph, const CP::SystematicSet &systConfig, const bool effSF=true, const bool isoSF=true, const bool triggerSF=false) override final
 
double GetTotalPhotonSF (const xAOD::PhotonContainer &photons, const bool effSF=true, const bool isoSF=true, const bool triggerSF=false) const override final
 
double GetTotalPhotonSFsys (const xAOD::PhotonContainer &photons, const CP::SystematicSet &systConfig, const bool effSF=true, const bool isoSF=true, const bool triggerSF=false) override final
 
double GetTotalJetSF (const xAOD::JetContainer *jets, const bool btagSF=true, const bool jvtSF=true, const bool fjvtSF=false) override final
 
double GetTotalJetSFsys (const xAOD::JetContainer *jets, const CP::SystematicSet &systConfig, const bool btagSF=true, const bool jvtSF=true, const bool fjvtSF=false) override final
 
bool IsMETTrigPassed (unsigned int runnumber=0, bool j400_OR=false) const override final
 
bool IsMETTrigPassed (const std::string &triggerName, bool j400_OR=false, const std::string &L1_name="L1_XE50") const override final
 
bool IsTrigPassed (const std::string &, unsigned int condition=TrigDefs::Physics) const override final
 
bool IsTrigMatched (const xAOD::IParticle *part, const std::string &tr_item) override final
 
bool IsTrigMatched (const xAOD::IParticle *part1, const xAOD::IParticle *part2, const std::string &tr_item) override final
 
bool IsTrigMatched (const std::vector< const xAOD::IParticle * > &v, const std::string &tr_item) override final
 
bool IsTrigMatched (const std::initializer_list< const xAOD::IParticle * > &v, const std::string &tr_item) override final
 
void TrigMatch (const xAOD::IParticle *p, std::initializer_list< std::string >::iterator, std::initializer_list< std::string >::iterator) override final
 
void TrigMatch (const xAOD::IParticle *p, const std::vector< std::string > &items) override final
 
void TrigMatch (const xAOD::IParticle *p, const std::initializer_list< std::string > &items) override final
 
void TrigMatch (const xAOD::IParticleContainer *v, const std::vector< std::string > &items) override final
 
void TrigMatch (const xAOD::IParticleContainer *v, const std::initializer_list< std::string > &items) override final
 
void TrigMatch (const std::initializer_list< const xAOD::IParticle * > &v, const std::vector< std::string > &items) override final
 
void TrigMatch (const std::initializer_list< const xAOD::IParticle * > &v, const std::initializer_list< std::string > &items) override final
 
void TrigMatch (const xAOD::IParticle *p, const std::string &item) override final
 
void TrigMatch (const xAOD::IParticleContainer *v, const std::string &item) override final
 
void TrigMatch (const std::initializer_list< const xAOD::IParticle * > &v, const std::string &item) override final
 
float GetTrigPrescale (const std::string &) const override final
 
const Trig::ChainGroupGetTrigChainGroup (const std::string &) const override final
 
std::vector< std::string > GetTriggerOR (const std::string &trigExpr) const
 
void GetTriggerTokens (std::string, std::vector< std::string > &, std::vector< std::string > &, std::vector< std::string > &, std::vector< std::string > &, std::vector< std::string > &, std::vector< std::string > &, std::vector< std::string > &) const
 
Trig::FeatureContainer GetTriggerFeatures (const std::string &chainName="EF_.*", unsigned int condition=TrigDefs::Physics) const
 
const xAOD::EventInfoGetEventInfo () const override final
 
float GetPileupWeight () override final
 
float GetPileupWeightPrescaledTrigger (const std::string &trigger_expr) override final
 
ULong64_t GetPileupWeightHash () override final
 
float GetDataWeight (const std::string &) override final
 
float GetCorrectedAverageInteractionsPerCrossing (bool includeDataSF=false) override final
 
float GetCorrectedActualInteractionsPerCrossing (bool includeDataSF=false) override final
 
double GetSumOfWeights (int channel) override final
 
unsigned int GetRandomRunNumber (bool muDependentRRN=true) override final
 
StatusCode ApplyPRWTool (bool muDependentRRN=true) override final
 
unsigned int GetRunNumber () const override final
 
const xAOD::TrackParticleContainerGetInDetLargeD0Tracks (const EventContext &ctx) const override final
 
const xAOD::TrackParticleContainerGetInDetLargeD0GSFTracks (const EventContext &ctx) const override final
 
StatusCode ApplyLRTUncertainty () override final
 
int treatAsYear (const int runNumber=-1) const override final
 
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
 
StatusCode NearbyLeptonCorrections (xAOD::ElectronContainer *electrons=nullptr, xAOD::MuonContainer *muons=nullptr) const override final
 
StatusCode resetSystematics () override final
 
const CP::SystematicSetcurrentSystematic () const
 
StatusCode applySystematicVariation (const CP::SystematicSet &systConfig) override final
 
bool isPrompt (const xAOD::IParticle *part) const override final
 
StatusCode FindSusyHP (int &pdgid1, int &pdgid2) const
 
StatusCode FindSusyHP (const xAOD::TruthParticleContainer *truthP, int &pdgid1, int &pdgid2, bool isTruth3=false) const override final
 
StatusCode FindSusyHP (const xAOD::TruthEvent *truthE, int &pdgid1, int &pdgid2) const override final
 
std::string TrigSingleLep () const override final
 
bool isNominal (const CP::SystematicSet &syst) const
 
bool isWeight (const CP::SystematicSet &systSet) const
 
bool isVariation (const CP::SystematicSet &syst) const
 
bool currentSystematicIsNominal () const
 
bool currentSystematicIsVariation () const
 
bool currentSystematicIsWeight () const
 
ST::SystInfo getSystInfo (const CP::SystematicVariation &sys) const override final
 
std::vector< ST::SystInfogetSystInfoList () const override final
 
float getSherpaVjetsNjetsWeight () const override final
 
float getSherpaVjetsNjetsWeight (const std::string &jetContainer) const override final
 
int getMCShowerType (const std::string &sample_name="", const std::string &tagger="") const override final
 
template<typename T >
const T * getProperty (const std::string &name)
 
virtual void print () const =0
 Print the state of the tool. More...
 
virtual StatusCode sysInitialize ()
 Function initialising the tool in the correct way in Athena. More...
 
virtual void print () const
 Print the state of the tool. More...
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Static Public Member Functions

static bool FindSusyHardProc (const xAOD::TruthParticleContainer *truthP, int &pdgid1, int &pdgid2, bool isTruth3=false)
 
static bool FindSusyHardProc (const xAOD::TruthEvent *truthE, int &pdgid1, int &pdgid2)
 

Public Attributes

const xAOD::MuonContainerprompt_muons = nullptr
 
const xAOD::MuonContainerlrt_muons = nullptr
 
const xAOD::ElectronContainerprompt_electrons = nullptr
 
const xAOD::ElectronContainerlrt_electrons = nullptr
 

Protected Member Functions

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="")
 
StatusCode readConfig () override final
 
StatusCode validConfig (bool strict=false) const
 
const std::vector< std::string > split (const std::string &s, const std::string &delim) const
 
std::string getDefaultJetUncConfig ()
 
void getTauConfig (const std::string &tauConfigPath, std::vector< float > &pT_window, std::vector< float > &eta_window, bool &eleOLR, bool &muVeto, bool &muOLR) const
 
void configFromFile (bool &property, const std::string &propname, TEnv &rEnv, bool defaultValue)
 
void configFromFile (double &property, const std::string &propname, TEnv &rEnv, double defaultValue)
 
void configFromFile (int &property, const std::string &propname, TEnv &rEnv, int defaultValue)
 
void configFromFile (std::string &property, const std::string &propname, TEnv &rEnv, const std::string &defaultValue, bool allowEmpty=false)
 
bool check_isOption (const std::string &wp, const std::vector< std::string > &list) const
 
bool check_isTighter (const std::string &wp1, const std::string &wp, const std::vector< std::string > &list) const
 
std::string EG_WP (const std::string &wp) const
 
std::vector< std::string > getElSFkeys (const std::string &mapFile) const
 
void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Protected Attributes

int m_dataSource
 
int m_jetInputType
 
std::string m_configFile
 
bool m_force_noElId
 
bool m_force_noMuId
 
bool m_doTTVAsf
 
bool m_doModifiedEleId
 
bool m_upstreamTriggerMatching
 
std::string m_trigMatchingPrefix
 Use composite trigger matching tool if matching was done upstream. More...
 
std::string m_jetUncertaintiesConfig
 Prefix for trigger matchiing container name. More...
 
std::string m_jetUncertaintiesAnalysisFile
 
std::string m_jetUncertaintiesCalibArea
 
std::string m_jetUncertaintiesMCType
 
std::string m_fatJetUncertaintiesMCType
 
bool m_jetUncertaintiesPDsmearing
 
bool m_useBtagging
 
bool m_useBtagging_trkJet
 
bool m_debug
 
bool m_strictConfigCheck
 
std::string m_badJetCut
 
std::string m_fatJetUncConfig
 
bool m_fatJetUncertaintiesPDsmearing
 
std::string m_fatJetUncVars
 
TEnv m_WconfigReader
 
TEnv m_ZconfigReader
 
TEnv m_TopconfigReader
 
std::string m_WDecorName
 
std::string m_ZDecorName
 
std::string m_TopDecorName
 
std::string m_WtagConfig
 
std::string m_ZtagConfig
 
std::string m_ToptagConfig
 
std::string m_WZTaggerCalibArea
 
std::string m_TopTaggerCalibArea
 
std::string m_WTagUncConfig
 
std::string m_ZTagUncConfig
 
std::string m_TopTagUncConfig
 
std::string m_JetTruthLabelName
 
bool m_tool_init
 
bool m_subtool_init
 
std::string m_eleTerm
 
std::string m_gammaTerm
 
std::string m_tauTerm
 
std::string m_jetTerm
 
std::string m_muonTerm
 
std::string m_inputMETSuffix
 
std::string m_inputMETMap
 
std::string m_inputMETCore
 
std::string m_inputMETRef
 
std::string m_outMETTerm
 
bool m_metRemoveOverlappingCaloTaggedMuons
 
bool m_metDoSetMuonJetEMScale
 
bool m_metDoRemoveMuonJets
 
bool m_metUseGhostMuons
 
bool m_metDoMuonEloss
 
bool m_metGreedyPhotons
 
bool m_metVeryGreedyPhotons
 
std::string m_metsysConfigPrefix
 
bool m_trkMETsyst
 
bool m_caloMETsyst
 
bool m_trkJetsyst
 
int m_softTermParam
 
bool m_treatPUJets
 
bool m_doPhiReso
 
bool m_autoconfigPRW
 
std::string m_autoconfigPRWPath
 
std::string m_autoconfigPRWFile
 
bool m_autoconfigPRWCombinedmode
 
bool m_autoconfigPRWRPVmode
 
std::string m_autoconfigPRWRtags
 
std::string m_mcCampaign
 
int m_mcChannel
 
bool m_useCommonPRWFiles
 
std::string m_commonPRWFileMC20a
 
std::string m_commonPRWFileMC20d
 
std::string m_commonPRWFileMC20e
 
std::string m_commonPRWFileMC21a
 
std::string m_commonPRWFileMC23a
 
std::string m_commonPRWFileMC23c
 
std::string m_commonPRWFileMC23d
 
std::string m_commonPRWFileMC23e
 
std::vector< std::string > m_prwConfFiles
 
std::vector< std::string > m_prwLcalcFiles
 
std::string m_prwActualMu2017File
 
std::string m_prwActualMu2018File
 
std::string m_prwActualMu2022File
 
std::string m_prwActualMu2023File
 
std::string m_prwActualMu2024File
 
double m_prwDataSF
 
double m_prwDataSF_UP
 
double m_prwDataSF_DW
 
bool m_runDepPrescaleWeightPRW
 
std::vector< std::string > m_el_id_support
 
std::vector< std::string > m_ph_id_support
 
int m_mu_id_support
 
std::vector< std::string > m_tau_id_support
 
std::vector< std::string > m_el_iso_support
 
std::vector< std::string > m_mu_iso_support
 
std::map< std::string, std::string > m_el_iso_fallback
 
std::map< std::string, std::string > m_mu_iso_fallback
 
std::string m_electronTriggerSFStringSingle
 
std::map< std::string, std::string > m_tau_trig_support
 
std::string m_eleId
 
std::string m_eleIdBaseline
 
std::string m_eleConfig
 
std::string m_eleConfigBaseline
 
std::string m_eleBaselineIso_WP
 
bool m_eleIdExpert
 
int m_muId
 
int m_muIdBaseline
 
std::string m_photonId
 
std::string m_photonIdBaseline
 
std::string m_tauId
 
std::string m_tauIdBaseline
 
std::string m_eleIso_WP
 
std::string m_eleIsoHighPt_WP
 
double m_eleIsoHighPtThresh
 
std::string m_eleChID_WP
 
bool m_eleLRT
 
int m_eleLRT_strat
 
bool m_eleChIso
 
bool m_eleChID_signal
 
bool m_runECIS
 
std::string m_photonBaselineIso_WP
 
std::string m_photonIso_WP
 
std::string m_photonTriggerName
 
std::string m_muBaselineIso_WP
 
std::string m_muIso_WP
 
std::string m_muIsoHighPt_WP
 
double m_muIsoHighPtThresh
 
bool m_muHighPtExtraSmear
 
bool m_muEffCorrForce1D
 
std::string m_muTriggerSFCalibRelease
 
std::string m_muTriggerSFCalibFilename
 
std::string m_BtagWP
 
std::string m_BtagTagger
 
double m_BtagMinPt
 
std::string m_BtagKeyOverride
 
std::string m_BtagSystStrategy
 
std::string m_EigenvectorReductionB
 
std::string m_EigenvectorReductionC
 
std::string m_EigenvectorReductionLight
 
std::string m_BtagWP_trkJet
 
std::string m_BtagTagger_trkJet
 
double m_BtagMinPt_trkJet
 
double m_eleBaselinePt
 
double m_eleBaselineEta
 
bool m_eleBaselineCrackVeto
 
double m_elePt
 
double m_eleEta
 
bool m_eleCrackVeto
 
double m_eled0sig
 
double m_elez0
 
double m_elebaselined0sig
 
double m_elebaselinez0
 
std::string m_eleEffMapFilePath
 
std::string m_eleEffMapFilePathRun2
 
bool m_eleAllowRun3TrigSFFallback
 
bool m_eleForceFullSimCalib
 
double m_muBaselinePt
 
double m_muBaselineEta
 
double m_muPt
 
double m_muEta
 
double m_mud0sig
 
double m_muz0
 
double m_mubaselined0sig
 
double m_mubaselinez0
 
bool m_murequirepassedHighPtCuts
 
double m_muCosmicz0
 
double m_muCosmicd0
 
double m_badmuQoverP
 
int m_muCalibrationMode
 
bool m_muLRT
 
double m_photonBaselinePt
 
double m_photonBaselineEta
 
double m_photonEta
 
double m_photonPt
 
bool m_photonBaselineCrackVeto
 
bool m_photonCrackVeto
 
bool m_photonAllowLate
 
double m_tauPrePtCut
 
double m_tauPt
 
double m_tauEta
 
std::string m_tauConfigPath
 
std::string m_tauConfigPathBaseline
 
bool m_tauDoTTM
 
std::string m_tauSmearingToolRecommendationTag
 
std::string m_tauEffToolRecommendationTag
 
std::string m_tauSmearingToolGenerator
 
bool m_ApplyMVATESQualityCheck
 
TEnv m_tauConfigReader
 
double m_jetPt
 
double m_jetEta
 
double m_jetJvt
 
std::string m_JvtWP
 
double m_JvtPtMax
 
std::string m_JvtConfigRun2
 
std::string m_JvtConfigRun3
 
double m_trkJetPt
 
double m_trkJetEta
 
bool m_doFwdJVT
 
std::string m_fJvtWP
 
double m_fJvtPtMax
 
double m_fJvtEtaMin
 
std::string m_fJvtConfigRun2
 
std::string m_fJvtConfigRun3
 
bool m_JMScalib
 
bool m_orDoTau
 Overlap removal options. More...
 
bool m_orDoPhoton
 
bool m_orDoEleJet
 
bool m_orDoElEl
 
bool m_orDoElMu
 
bool m_orDoMuonJet
 
bool m_orDoBjet
 
bool m_orDoElBjet
 
bool m_orDoMuBjet
 
bool m_orDoTauBjet
 
bool m_orDoBoostedElectron
 
double m_orBoostedElectronC1
 
double m_orBoostedElectronC2
 
double m_orBoostedElectronMaxConeSize
 
bool m_orDoBoostedMuon
 
double m_orBoostedMuonC1
 
double m_orBoostedMuonC2
 
double m_orBoostedMuonMaxConeSize
 
bool m_orApplyRelPt
 
double m_orMuJetPtRatio
 
double m_orMuJetTrkPtRatio
 
double m_orMuJetInnerDR
 
bool m_orDoMuonJetGhostAssociation
 
bool m_orRemoveCaloMuons
 
std::string m_orBtagWP
 
std::string m_orInputLabel
 
bool m_orPhotonFavoured
 
double m_orBJetPtUpperThres
 
bool m_orLinkOverlapObjects
 
bool m_orDoFatjets
 
double m_EleFatJetDR
 
double m_JetFatJetDR
 
bool m_doIsoSignal
 
bool m_doElIsoSignal
 
bool m_doPhIsoSignal
 
bool m_doMuIsoSignal
 
bool m_useSigLepForIsoCloseByOR
 
std::string m_IsoCloseByORpassLabel
 
bool m_useTRUTH3
 
std::map< std::string, bool > m_slices
 
bool m_isRun3
 
bool m_isPHYSLITE
 
std::string m_metJetSelection
 
int m_showerType
 
std::string m_defaultJets
 
std::string m_defaultTrackJets
 
std::string m_fatJets
 
std::string m_defaultTruthJets
 
CP::SystematicSet m_defaultSyst = CP::SystematicSet()
 
CP::SystematicSet m_currentSyst
 
std::vector< CP::SystematicSetm_fatjetFFSmearingSyst
 
std::string m_EG_corrModel
 
std::string m_EG_corrFNList
 
bool m_applyJVTCut
 
std::string m_bTaggingCalibrationFilePath
 
std::map< std::string, std::string > m_legsPerTool
 
std::map< std::string, std::string > m_legsPerTool_ph
 
asg::AnaToolHandle< IJetCalibrationToolm_jetCalibTool
 
asg::AnaToolHandle< IJetCalibrationToolm_jetFatCalibTool
 
asg::AnaToolHandle< ICPJetUncertaintiesToolm_jetUncertaintiesTool
 
asg::AnaToolHandle< ICPJetUncertaintiesToolm_jetUncertaintiesPDSmearTool
 
asg::AnaToolHandle< ICPJetUncertaintiesToolm_fatjetUncertaintiesTool
 
asg::AnaToolHandle< ICPJetUncertaintiesToolm_fatjetUncertaintiesPDSmearTool
 
asg::AnaToolHandle< ICPJetCorrectionToolm_fatjetFFSmearingTool
 
asg::AnaToolHandle< IJetSelectorm_jetCleaningTool
 
asg::AnaToolHandle< JetPileupLabelingToolm_jetPileupLabelingTool
 
asg::AnaToolHandle< JetVertexTaggerToolm_jetJvtMomentTool
 
asg::AnaToolHandle< JetPileupTag::JetVertexNNTaggerm_jetNNJvtMomentTool
 
asg::AnaToolHandle< IAsgSelectionToolm_jetNNJvtSelectionTool
 
asg::AnaToolHandle< CP::IJvtEfficiencyToolm_jetNNJvtEfficiencyTool
 
asg::AnaToolHandle< IAsgSelectionToolm_jetfJvtSelectionTool
 
asg::AnaToolHandle< CP::IJvtEfficiencyToolm_jetfJvtEfficiencyTool
 
asg::AnaToolHandle< SmoothedWZTaggerm_WTaggerTool
 
asg::AnaToolHandle< SmoothedWZTaggerm_ZTaggerTool
 
asg::AnaToolHandle< JSSWTopTaggerDNNm_TopTaggerTool
 
asg::AnaToolHandle< JetTruthLabelingToolm_jetTruthLabelingTool
 
asg::AnaToolHandle< ICPJetUncertaintiesToolm_WTagjetUncertaintiesTool
 
asg::AnaToolHandle< ICPJetUncertaintiesToolm_ZTagjetUncertaintiesTool
 
asg::AnaToolHandle< ICPJetUncertaintiesToolm_TopTagjetUncertaintiesTool
 
SG::ReadDecorHandleKey< xAOD::JetContainerm_label_truthKey
 
std::string m_jesConfig
 
std::string m_jesConfigJMS
 
std::string m_jesConfigJMSData
 
std::string m_jesConfigAFII
 
std::string m_jesConfigFat
 
std::string m_jesConfigFatData
 
std::string m_jesCalibSeq
 
std::string m_jesCalibSeqJMS
 
std::string m_jesCalibSeqFat
 
std::string m_jesCalibArea
 
asg::AnaToolHandle< CP::IMuonSelectionToolm_muonSelectionTool
 
asg::AnaToolHandle< CP::IMuonSelectionToolm_muonSelectionHighPtTool
 
asg::AnaToolHandle< CP::IMuonSelectionToolm_muonSelectionToolBaseline
 
asg::AnaToolHandle< CP::IMuonCalibrationAndSmearingToolm_muonCalibTool
 
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactorsm_muonEfficiencySFTool
 
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactorsm_muonEfficiencyBMHighPtSFTool
 
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactorsm_muonTTVAEfficiencySFTool
 
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactorsm_muonIsolationSFTool
 
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactorsm_muonHighPtIsolationSFTool
 
asg::AnaToolHandle< CP::IMuonTriggerScaleFactorsm_muonTriggerSFTool
 
ToolHandleArray< CP::IMuonTriggerScaleFactorsm_muonTrigSFTools
 
asg::AnaToolHandle< CP::IMuonLRTOverlapRemovalToolm_muonLRTORTool
 
SG::WriteHandleKey< xAOD::MuonContainerm_outMuonLocation {this, "OutputMuonLocation", "StdWithLRTMuons", "name of the muon container to write"}
 
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionToolm_elecEfficiencySFTool_reco
 Combined muon collection. More...
 
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionToolm_elecEfficiencySFTool_id
 
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionToolm_elecEfficiencySFTool_trig_singleLep
 
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionToolm_elecEfficiencySFTool_trigEff_singleLep
 
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionToolm_elecEfficiencySFTool_iso
 
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionToolm_elecEfficiencySFTool_isoHighPt
 
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionToolm_elecEfficiencySFTool_chf
 
std::vector< asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > > m_elecEfficiencySFTool_trig_mixLep
 
std::vector< asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > > m_elecEfficiencySFTool_trigEff_mixLep
 
ToolHandleArray< IAsgElectronEfficiencyCorrectionToolm_elecTrigSFTools
 
ToolHandleArray< IAsgElectronEfficiencyCorrectionToolm_elecTrigEffTools
 
asg::AnaToolHandle< CP::IElectronLRTOverlapRemovalToolm_elecLRTORTool
 
SG::WriteHandleKey< xAOD::ElectronContainerm_outElectronLocation {this, "OutputElectronLocation", "StdWithLRTElectrons", "name of the muon container to write"}
 
asg::AnaToolHandle< CP::IEgammaCalibrationAndSmearingToolm_egammaCalibTool
 Combined electron collection. More...
 
asg::AnaToolHandle< IAsgElectronLikelihoodToolm_elecSelLikelihood
 
asg::AnaToolHandle< IAsgElectronLikelihoodToolm_elecSelLikelihoodBaseline
 
asg::AnaToolHandle< IAsgPhotonIsEMSelectorm_photonSelIsEM
 
asg::AnaToolHandle< IAsgPhotonIsEMSelectorm_photonSelIsEMBaseline
 
asg::AnaToolHandle< IAsgDeadHVCellRemovalToolm_deadHVTool
 
asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionToolm_photonEfficiencySFTool
 
asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionToolm_photonIsolationSFTool
 
asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionToolm_photonTriggerSFTool
 
std::vector< asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > > m_photonEfficiencySFTool_trigSF_AsymDiphoton
 
std::vector< asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > > m_photonEfficiencySFTool_trigEff_AsymDiphoton
 
ToolHandleArray< IAsgPhotonEfficiencyCorrectionToolm_photonTrigSFTools
 
ToolHandleArray< IAsgPhotonEfficiencyCorrectionToolm_photonTrigEffTools
 
asg::AnaToolHandle< IEGammaAmbiguityToolm_egammaAmbiguityTool
 
asg::AnaToolHandle< IAsgElectronLikelihoodToolm_elecChargeIDSelectorTool
 
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionToolm_elecChargeEffCorrTool
 
asg::AnaToolHandle< TauAnalysisTools::ITauSelectionToolm_tauSelTool
 
asg::AnaToolHandle< TauAnalysisTools::ITauSelectionToolm_tauSelToolBaseline
 
asg::AnaToolHandle< TauAnalysisTools::ITauSmearingToolm_tauSmearingTool
 
asg::AnaToolHandle< TauAnalysisTools::ITauTruthMatchingToolm_tauTruthMatch
 
asg::AnaToolHandle< TauAnalysisTools::ITauEfficiencyCorrectionsToolm_tauEffTool
 
std::vector< asg::AnaToolHandle< TauAnalysisTools::ITauEfficiencyCorrectionsTool > > m_tauTrigEffTool
 
asg::AnaToolHandle< IBTaggingEfficiencyToolm_btagEffTool
 
asg::AnaToolHandle< IBTaggingSelectionToolm_btagSelTool
 
asg::AnaToolHandle< IBTaggingSelectionToolm_btagSelTool_OR
 
asg::AnaToolHandle< IBTaggingEfficiencyToolm_btagEffTool_trkJet
 
asg::AnaToolHandle< IBTaggingSelectionToolm_btagSelTool_trkJet
 
asg::AnaToolHandle< IMETMakerm_metMaker
 
asg::AnaToolHandle< IMETSystematicsToolm_metSystTool
 
asg::AnaToolHandle< IMETSignificancem_metSignif
 
std::string m_trig2015combination_singleLep
 
std::string m_trig2016combination_singleLep
 
std::string m_trig2017combination_singleLep
 
std::string m_trig2018combination_singleLep
 
std::string m_trig2022combination_singleLep
 
std::string m_trig2023combination_singleLep
 
std::string m_trig2024combination_singleLep
 
int m_trigNToys_diLep
 
std::string m_trig2015combination_diLep
 
std::string m_trig2016combination_diLep
 
std::string m_trig2017combination_diLep
 
std::string m_trig2018combination_diLep
 
std::string m_trig2022combination_diLep
 
asg::AnaToolHandle< ITrigGlobalEfficiencyCorrectionToolm_trigGlobalEffCorrTool_diLep
 
int m_trigNToys_multiLep
 
std::string m_trig2015combination_multiLep
 
std::string m_trig2016combination_multiLep
 
std::string m_trig2017combination_multiLep
 
std::string m_trig2018combination_multiLep
 
std::string m_trig2022combination_multiLep
 
asg::AnaToolHandle< ITrigGlobalEfficiencyCorrectionToolm_trigGlobalEffCorrTool_multiLep
 
int m_trigNToys_diPhoton
 
std::string m_trig2015combination_diPhoton
 
std::string m_trig2016combination_diPhoton
 
std::string m_trig2017combination_diPhoton
 
std::string m_trig2018combination_diPhoton
 
std::string m_trig2022combination_diPhoton
 
asg::AnaToolHandle< ITrigGlobalEfficiencyCorrectionToolm_trigGlobalEffCorrTool_diPhoton
 
asg::AnaToolHandle< TrigConf::ITrigConfigToolm_trigConfTool
 
asg::AnaToolHandle< Trig::TrigDecisionToolm_trigDecTool
 
asg::AnaToolHandle< Trig::IMatchingToolm_trigMatchingTool
 
asg::AnaToolHandle< Trig::IMatchScoringToolm_trigMatchScoringTool
 
asg::AnaToolHandle< Trig::IMatchScoringToolm_trigDRScoringTool
 
asg::AnaToolHandle< CP::IIsolationCorrectionToolm_isoCorrTool
 
asg::AnaToolHandle< CP::IIsolationSelectionToolm_isoTool
 
asg::AnaToolHandle< CP::IIsolationSelectionToolm_isoBaselineTool
 
asg::AnaToolHandle< CP::IIsolationSelectionToolm_isoHighPtTool
 
asg::AnaToolHandle< CP::IIsolationCloseByCorrectionToolm_isoCloseByTool
 
asg::AnaToolHandle< CP::IPileupReweightingToolm_prwTool
 
asg::AnaToolHandle< InDet::IInclusiveTrackFilterToolm_LRTuncTool
 
asg::AnaToolHandle< ORUtils::IOverlapToolm_tauJetORtool
 
ORUtils::ToolBox m_orToolbox
 
asg::AnaToolHandle< IWeightToolm_pmgSHnjetWeighter
 
asg::AnaToolHandle< IWeightToolm_pmgSHnjetWeighterWZ
 
std::string m_eleIdBaselineDFName
 
std::string m_eleIdDFName
 
std::string m_photonIdBaselineDFName
 
std::string m_photonIdDFName
 
std::string m_jetCleanDFName
 
SG::ConstAccessor< char > m_acc_eleIdBaseline
 
SG::ConstAccessor< char > m_acc_eleId
 
SG::ConstAccessor< char > m_acc_photonIdBaseline
 
SG::ConstAccessor< char > m_acc_photonId
 
SG::ConstAccessor< char > m_acc_jetClean
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

StatusCode SUSYToolsInit ()
 
bool emulateHLT (const std::string &triggerName) const
 
bool isTrigInTDT (std::scoped_lock< std::mutex > &lock, const std::string &triggerName) const
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

std::map< std::string, std::string > m_conf_to_prop
 
std::set< std::string > m_bool_prop_set
 
std::map< std::string, std::function< bool()> > m_metTriggerFuncs ATLAS_THREAD_SAFE
 
std::map< std::string, bool > m_checkedTriggers ATLAS_THREAD_SAFE
 
std::mutex m_triggerCacheMutex
 
std::vector< std::string > m_v_trigs15_cache_singleEle
 
std::vector< std::string > m_v_trigs16_cache_singleEle
 
std::vector< std::string > m_v_trigs17_cache_singleEle
 
std::vector< std::string > m_v_trigs18_cache_singleEle
 
std::vector< std::string > m_v_trigs22_cache_singleEle
 
std::vector< std::string > m_v_trigs23_cache_singleEle
 
std::vector< std::string > m_v_trigs24_cache_singleEle
 
std::vector< std::string > m_v_trigs15_cache_singleLep
 
std::vector< std::string > m_v_trigs16_cache_singleLep
 
std::vector< std::string > m_v_trigs17_cache_singleLep
 
std::vector< std::string > m_v_trigs18_cache_singleLep
 
std::vector< std::string > m_v_trigs22_cache_singleLep
 
std::vector< std::string > m_v_trigs23_cache_singleLep
 
std::vector< std::string > m_v_trigs24_cache_singleLep
 
std::vector< std::string > m_v_trigs15_cache_diLep
 
std::vector< std::string > m_v_trigs16_cache_diLep
 
std::vector< std::string > m_v_trigs17_cache_diLep
 
std::vector< std::string > m_v_trigs18_cache_diLep
 
std::vector< std::string > m_v_trigs22_cache_diLep
 
std::vector< std::string > m_v_trigs15_cache_multiLep
 
std::vector< std::string > m_v_trigs16_cache_multiLep
 
std::vector< std::string > m_v_trigs17_cache_multiLep
 
std::vector< std::string > m_v_trigs18_cache_multiLep
 
std::vector< std::string > m_v_trigs22_cache_multiLep
 
SG::ReadHandleKey< xAOD::TrackParticleContainerm_LRTCollectionName {this, "LRTCollectionName", "InDetLargeD0TrackParticles", "LRT collection name"}
 
SG::ReadHandleKey< xAOD::TrackParticleContainerm_GSFLRTCollectionName {this, "GSFLRTCollectionName", "LRTGSFTrackParticles", "GSF LRT collection name"}
 
MetaStore_t m_inputMetaStore
 Object accessing the input metadata store. More...
 
MetaStore_t m_outputMetaStore
 Object accessing the output metadata store. More...
 
bool m_beginInputFileCalled
 Flag helping to discover when the tool misses the opening of the first input file. More...
 
bool m_useIncidents
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Callback functions helping in metadata reading/writing

void setUseIncidents (const bool flag)
 
virtual void handle (const Incident &inc)
 Function receiving incidents from IncidentSvc/TEvent. More...
 
virtual StatusCode beginInputFile ()
 Function called when a new input file is opened. More...
 
virtual StatusCode endInputFile ()
 Function called when the currently open input file got completely processed. More...
 
virtual StatusCode beginEvent ()
 Function called when a new events is loaded. More...
 
virtual StatusCode metaDataStop ()
 Function called when the tool should write out its metadata. More...
 

Detailed Description

Definition at line 141 of file SUSYObjDef_xAOD.h.

Member Typedef Documentation

◆ MetaStore_t

Type of the metadata store object in Athena.

Definition at line 66 of file AsgMetadataTool.h.

◆ MetaStorePtr_t

Type of the metadata store pointer in standalone mode.

Definition at line 68 of file AsgMetadataTool.h.

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Member Enumeration Documentation

◆ DataSource

Enumerator
Undefined 
Data 
FullSim 
AtlfastII 

Definition at line 476 of file ISUSYObjDef_xAODTool.h.

476  {
477  Undefined = -1,
478  Data,
479  FullSim,
480  AtlfastII
481  };

Constructor & Destructor Documentation

◆ SUSYObjDef_xAOD()

ST::SUSYObjDef_xAOD::SUSYObjDef_xAOD ( const std::string &  name)

Override for the b-tagging jet collection

Definition at line 101 of file SUSYObjDef_xAOD.cxx.

105  m_force_noElId(false),
106  m_force_noMuId(false),
107  m_doTTVAsf(true),
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(""),
125  m_WTagUncConfig(""),
126  m_ZTagUncConfig(""),
127  m_TopTagUncConfig(""),
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(""),
141  m_metDoRemoveMuonJets(true),
142  m_metUseGhostMuons(false),
143  m_metDoMuonEloss(false),
144  m_metGreedyPhotons(false),
145  m_metVeryGreedyPhotons(false),
147  m_trkMETsyst(true),
148  m_caloMETsyst(false),
149  m_softTermParam(-99),
150  m_treatPUJets(true),
151  m_doPhiReso(true),
152  m_autoconfigPRW(false),
156  m_autoconfigPRWRPVmode(false),
158  m_mcCampaign(""),
159  m_mcChannel(-99),
160  m_useCommonPRWFiles(false),
169  m_prwDataSF(-99.),
170  m_prwDataSF_UP(-99.),
171  m_prwDataSF_DW(-99.),
174  m_eleId(""),
175  m_eleIdBaseline(""),
176  m_eleConfig(""),
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),
195  m_photonIso_WP(""),
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(""),
211  m_BtagWP_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),
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.),
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.),
247  m_photonCrackVeto(true),
248  m_photonAllowLate(false),
249  //
250  m_tauPrePtCut(-99.),
251  m_tauPt(-99.),
252  m_tauEta(-99.),
253  m_tauConfigPath(""),
255  m_tauDoTTM(false),
260  //
261  m_jetPt(-99.),
262  m_jetEta(-99.),
263  m_jetJvt(-99.),
264  m_JvtWP(""),
265  m_JvtPtMax(-99.),
266  m_JvtConfigRun2(""),
267  m_JvtConfigRun3(""),
268  m_trkJetPt(-99.),
269  m_trkJetEta(-99.),
270  m_doFwdJVT(false),
271  m_fJvtWP(""),
272  m_fJvtPtMax(-99.),
273  m_fJvtEtaMin(-99.),
274  m_fJvtConfigRun2(""),
275  m_fJvtConfigRun3(""),
276  m_JMScalib(false),
277  //
278  m_orDoTau(false),
279  m_orDoPhoton(false),
280  m_orDoEleJet(true),
281  m_orDoElEl(false),
282  m_orDoElMu(false),
283  m_orDoMuonJet(true),
284  m_orDoBjet(false),
285  m_orDoElBjet(true),
286  m_orDoMuBjet(true),
287  m_orDoTauBjet(true),
288  m_orDoBoostedElectron(false),
289  m_orBoostedElectronC1(-999.), // set to positive value to activate
290  m_orBoostedElectronC2(-999.), // set to positive value to activate
291  m_orBoostedElectronMaxConeSize(-999.), // set to positive value to activate
292  m_orDoBoostedMuon(true),
293  m_orBoostedMuonC1(-999.), // set to positive value to activate
294  m_orBoostedMuonC2(-999.), // set to positive value to activate
295  m_orBoostedMuonMaxConeSize(-999.), // set to positive value to activate
296  m_orApplyRelPt(false),
297  m_orMuJetPtRatio(-999.),
298  m_orMuJetTrkPtRatio(-999.),
299  m_orMuJetInnerDR(-999),
301  m_orRemoveCaloMuons(true),
302  m_orBtagWP(""),
303  m_orInputLabel(""),
304  m_orPhotonFavoured(false),
305  m_orBJetPtUpperThres(-999.),
306  m_orLinkOverlapObjects(false),
307  m_orDoFatjets(false),
308  m_EleFatJetDR(-999.),
309  m_JetFatJetDR(-999.),
310  m_doIsoSignal(true),
311  m_doElIsoSignal(true),
312  m_doPhIsoSignal(true),
313  m_doMuIsoSignal(true),
314 
317 
318  m_useTRUTH3(true),
319 
320  m_slices(std::map<std::string,bool>()),
321  m_isRun3(false),
322  m_isPHYSLITE(false),
323 
324  m_metJetSelection(""),
325  m_fatJets(""),
326  //
327  m_currentSyst(),
329  m_EG_corrModel(""),
330  m_EG_corrFNList(""),
331  m_applyJVTCut(true),
332  //
333  // set toolhandles empty by default
334  m_jetCalibTool(""),
335  m_jetFatCalibTool(""),
341  m_jetCleaningTool(""),
343  m_jetJvtMomentTool(""),
349  //
350  m_WTaggerTool(""),
351  m_ZTaggerTool(""),
352  m_TopTaggerTool(""),
357  //
361  m_muonCalibTool(""),
368  //
375  //
376  m_egammaCalibTool(""),
379  m_photonSelIsEM(""),
387  //
388  m_tauSelTool(""),
390  m_tauSmearingTool(""),
391  m_tauTruthMatch(""),
392  m_tauEffTool(""),
393  //
394  m_btagEffTool(""),
395  m_btagSelTool(""),
396  m_btagSelTool_OR(""),
399  //
400  m_metMaker(""),
401  m_metSystTool(""),
402  m_metSignif(""),
403  //
411  m_trigNToys_diLep(-99),
432  m_trigConfTool(""),
433  m_trigDecTool(""),
434  m_trigMatchingTool(""),
437  //
438  m_isoCorrTool(""),
439  m_isoTool(""),
440  //disable m_isoToolLowPtPLV(""),
441  m_isoBaselineTool(""),
442  m_isoHighPtTool(""),
443  //
444  m_prwTool(""),
445  //
446  m_LRTuncTool(""),
447  //
448  m_orToolbox("ORToolbox",this),
449  //
452  //
453  m_acc_eleIdBaseline("DFCommonElectronsLHLooseBL"),
454  m_acc_eleId("DFCommonElectronsLHTight"),
455  m_acc_photonIdBaseline("DFCommonPhotonsIsEMTight"),
456  m_acc_photonId("DFCommonPhotonsIsEMTight"),
457  //
458  m_acc_jetClean("DFCommonJets_jetClean_LooseBad")
459 {
460  //General settings
461  declareProperty( "DataSource", m_dataSource = Undefined );
462  declareProperty( "DebugMode", m_debug );
463  declareProperty( "ConfigFile", m_configFile = "SUSYTools/SUSYTools_Default.conf" );
464  //Overlap Removal
465  declareProperty( "DoTauOR", m_orDoTau );
466  declareProperty( "DoPhotonOR", m_orDoPhoton );
467  declareProperty( "DoEleJetOR", m_orDoEleJet );
468  declareProperty( "DoElElOR", m_orDoElEl );
469  declareProperty( "DoElMuOR", m_orDoElMu );
470  declareProperty( "DoMuonJetOR", m_orDoMuonJet );
471  declareProperty( "DoBjetOR", m_orDoBjet );
472  declareProperty( "DoElBjetOR", m_orDoElBjet );
473  declareProperty( "DoMuBjetOR", m_orDoMuBjet );
474  declareProperty( "DoTauBjetOR", m_orDoTauBjet );
475  declareProperty( "UseBtagging", m_useBtagging );
476  declareProperty( "UseBtaggingTrkJet", m_useBtagging_trkJet );
477  declareProperty( "DoBoostedElectronOR", m_orDoBoostedElectron );
478  declareProperty( "BoostedElectronORC1", m_orBoostedElectronC1 );
479  declareProperty( "BoostedElectronORC2", m_orBoostedElectronC2 );
480  declareProperty( "BoostedElectronORMaxConeSize", m_orBoostedElectronMaxConeSize );
481  declareProperty( "DoBoostedMuonOR", m_orDoBoostedMuon );
482  declareProperty( "BoostedMuonORC1", m_orBoostedMuonC1 );
483  declareProperty( "BoostedMuonORC2", m_orBoostedMuonC2 );
484  declareProperty( "BoostedMuonORMaxConeSize", m_orBoostedMuonMaxConeSize );
485  declareProperty( "ORDoMuonJetGhostAssociation", m_orDoMuonJetGhostAssociation );
486  declareProperty( "ORRemoveCaloMuons", m_orRemoveCaloMuons );
487  declareProperty( "ORMuJetApplyRelPt", m_orApplyRelPt);
488  declareProperty( "ORMuJetPtRatio", m_orMuJetPtRatio);
489  declareProperty( "ORMuJetInnerDR", m_orMuJetInnerDR );
490  declareProperty( "ORJetTrkPtRatio", m_orMuJetTrkPtRatio);
491  declareProperty( "ORInputLabel", m_orInputLabel);
492  declareProperty( "ORPhotonFavoured", m_orPhotonFavoured);
493  declareProperty( "ORBJetPtUpperThres", m_orBJetPtUpperThres);
494  declareProperty( "ORLinkOverlapObjects", m_orLinkOverlapObjects);
495 
496  declareProperty( "DoFatJetOR", m_orDoFatjets);
497  declareProperty( "OREleFatJetDR", m_EleFatJetDR);
498  declareProperty( "ORJetFatJetDR", m_JetFatJetDR);
499  declareProperty( "TriggerUpstreamMatching", m_upstreamTriggerMatching, "Use alternative trigger matching tool based on upstream (in-derivation) matching");
500  declareProperty( "TriggerMatchingPrefix", m_trigMatchingPrefix, "Prefix for trigger matching containers (Analysis for PHSYLITE derivations");
501 
502  //--- Object definitions
503  //MET
504  declareProperty( "METEleTerm", m_eleTerm );
505  declareProperty( "METGammaTerm", m_gammaTerm );
506  declareProperty( "METTauTerm", m_tauTerm );
507  declareProperty( "METJetTerm", m_jetTerm );
508  declareProperty( "METMuonTerm", m_muonTerm );
509  declareProperty( "METInputSuffix", m_inputMETSuffix );
510  declareProperty( "METOutputTerm", m_outMETTerm );
511  declareProperty( "METDoTrkSyst", m_trkMETsyst );
512  declareProperty( "METDoCaloSyst", m_caloMETsyst );
513  declareProperty( "METDoTrkJetSyst", m_trkJetsyst );
514  declareProperty( "METJetSelection", m_metJetSelection );
515  declareProperty( "METSysConfigPrefix", m_metsysConfigPrefix );
516 
517  declareProperty( "METRemoveORCaloTaggedMuons", m_metRemoveOverlappingCaloTaggedMuons);
518  declareProperty( "METDoSetMuonJetEMScale", m_metDoSetMuonJetEMScale);
519  declareProperty( "METDoRemoveMuonJets", m_metDoRemoveMuonJets );
520  declareProperty( "METUseGhostMuons", m_metUseGhostMuons );
521  declareProperty( "METDoMuonEloss", m_metDoMuonEloss );
522  declareProperty( "METDoGreedyPhotons", m_metGreedyPhotons );
523  declareProperty( "METDoVeryGreedyPhotons", m_metVeryGreedyPhotons );
524 
525 
526  declareProperty( "SoftTermParam", m_softTermParam);
527  declareProperty( "TreatPUJets", m_treatPUJets);
528  declareProperty( "DoPhiReso", m_doPhiReso);
529 
530  //JETS
531  declareProperty( "JetInputType", m_jetInputType );
532 
533  declareProperty( "FwdJetDoJVT", m_doFwdJVT );
534 
535  declareProperty( "JetJMSCalib", m_JMScalib );
536  declareProperty( "JetLargeRcollection", m_fatJets );
537 
538  //BTAGGING
539  declareProperty( "BtagTagger", m_BtagTagger);
540  declareProperty( "BtagWPOR", m_orBtagWP); //the one used in the Overlap Removal
541  declareProperty( "BtagWP", m_BtagWP); //the one used in FillJet() afterwards
542  declareProperty( "BtagMinPt", m_BtagMinPt); // minimum jetPt cut (MR31061) >=20 GeV EM jets & >=10 GeV TrackJets (not calibrated below)
543  declareProperty( "BtagKeyOverride", m_BtagKeyOverride);
545  declareProperty( "BtagTaggerTrkJet", m_BtagTagger_trkJet);
546  declareProperty( "BtagMinPtTrkJet", m_BtagMinPt_trkJet); // minimum jetPt cut (MR31061) >=20 GeV EM jets & >=10 GeV TrackJets (not calibrated below)
547  declareProperty( "BtagWPTrkJet", m_BtagWP_trkJet); //the one used in FillTrackJet() afterwards
548  //ELECTRONS
549  declareProperty( "EleBaselinePt", m_eleBaselinePt);
550  declareProperty( "ElePt", m_elePt);
551  declareProperty( "EleBaselineEta", m_eleBaselineEta);
552  declareProperty( "EleEta", m_eleEta);
553  declareProperty( "EleBaselineId", m_eleIdBaseline);
554  declareProperty( "EleBaselineConfig", m_eleConfigBaseline);
555  declareProperty( "EleBaselineCrackVeto", m_eleBaselineCrackVeto);
556  declareProperty( "EleId", m_eleId);
557  declareProperty( "EleConfig", m_eleConfig);
558  declareProperty( "EleIso", m_eleIso_WP);
559  declareProperty( "EleIsoHighPt", m_eleIsoHighPt_WP);
560  declareProperty( "EleIsoHighPtThresh", m_eleIsoHighPtThresh);
561  declareProperty( "EleCFT", m_eleChID_WP);
562  declareProperty( "EleCFTIso", m_eleChIso);
563  declareProperty( "EleCFTSignal", m_eleChID_signal);
564  declareProperty( "EleD0sig", m_eled0sig);
565  declareProperty( "EleZ0", m_elez0);
566  declareProperty( "EleBaselineD0sig", m_elebaselined0sig);
567  declareProperty( "EleBaselineZ0", m_elebaselinez0);
568  declareProperty( "EleCrackVeto", m_eleCrackVeto);
569  declareProperty( "EleForceNoId", m_force_noElId );
570  declareProperty( "EleEffMapFilePath", m_eleEffMapFilePath);
571  declareProperty( "EleAllowRun3TrigSFFallback", m_eleAllowRun3TrigSFFallback);
572  declareProperty( "EleForceFullSimCalib", m_eleForceFullSimCalib);
573 
574  //MUONS
575  declareProperty( "MuonBaselinePt", m_muBaselinePt);
576  declareProperty( "MuonPt", m_muPt);
577  declareProperty( "MuonBaselineEta", m_muBaselineEta);
578  declareProperty( "MuonEta", m_muEta);
579  declareProperty( "MuonBaselineId", m_muIdBaseline);
580  declareProperty( "MuonId", m_muId);
581  declareProperty( "MuonIso", m_muIso_WP);
582  declareProperty( "MuonIsoHighPt", m_muIsoHighPt_WP);
583  declareProperty( "MuonIsoHighPtThresh", m_muIsoHighPtThresh);
584  declareProperty( "MuonHighPtExtraSmear", m_muHighPtExtraSmear);
585  declareProperty( "MuonEffCorrForce1D", m_muEffCorrForce1D);
586  declareProperty( "MuonD0sig", m_mud0sig);
587  declareProperty( "MuonZ0", m_muz0);
588  declareProperty( "MuonBaselineD0sig", m_mubaselined0sig);
589  declareProperty( "MuonBaselineZ0", m_mubaselinez0);
590  declareProperty( "MuonRequireHighPtCuts", m_murequirepassedHighPtCuts);
591  declareProperty( "MuonForceNoId", m_force_noMuId );
592  declareProperty( "MuonTTVASF", m_doTTVAsf );
593  declareProperty( "MuonCalibrationMode", m_muCalibrationMode);
594  //MUONS TRIGGER SCALE FACTOR
595  declareProperty( "MuonTriggerSFCalibRelease", m_muTriggerSFCalibRelease );
596  declareProperty( "MuonTriggerSFCalibFilename", m_muTriggerSFCalibFilename );
597  //PHOTONS
598  declareProperty( "PhotonBaselinePt", m_photonBaselinePt);
599  declareProperty( "PhotonPt", m_photonPt);
600  declareProperty( "PhotonBaselineEta", m_photonBaselineEta);
601  declareProperty( "PhotonEta", m_photonEta);
602  declareProperty( "PhotonBaselineId", m_photonIdBaseline);
603  declareProperty( "PhotonId", m_photonId);
604  declareProperty( "PhotonIso", m_photonIso_WP);
605  declareProperty( "PhotonTriggerName", m_photonTriggerName);
606  declareProperty( "PhotonBaselineCrackVeto", m_photonBaselineCrackVeto);
607  declareProperty( "PhotonCrackVeto", m_photonCrackVeto);
608  declareProperty( "PhotonAllowLate", m_photonAllowLate);
609 
610  //TAUS
611  declareProperty( "TauBaselineId", m_tauIdBaseline);
612  declareProperty( "TauId", m_tauId);
613  declareProperty( "TauIdConfigPathBaseline", m_tauConfigPathBaseline);
614  declareProperty( "TauIdConfigPath", m_tauConfigPath);
615  declareProperty( "TauDoTruthMatching", m_tauDoTTM);
616  declareProperty( "TauSmearingToolRecommendationTag", m_tauSmearingToolRecommendationTag);
617  declareProperty( "TauSmearingToolGenerator", m_tauSmearingToolGenerator);
618  declareProperty( "TauEffToolRecommendationTag", m_tauEffToolRecommendationTag);
619  declareProperty( "TauMVATESQualityCheck", m_ApplyMVATESQualityCheck);
620 
621  //Leptons
622  declareProperty( "SigLepRequireIso", m_doIsoSignal ); //leave here for back-compatibility
623  declareProperty( "SigElRequireIso", m_doElIsoSignal );
624  declareProperty( "SigMuRequireIso", m_doMuIsoSignal );
625  declareProperty( "SigPhRequireIso", m_doPhIsoSignal );
626 
627  //Isolation correction for leptons and photons
628  declareProperty( "UseSigLepForIsoCloseByOR", m_useSigLepForIsoCloseByOR );
629  declareProperty( "IsoCloseByORpassLabel", m_IsoCloseByORpassLabel );
630 
631  //Truth
632  declareProperty( "UseTRUTH3", m_useTRUTH3 ); // true if using TRUTH3 type containers
633 
634  //--- Tools configuration
635  //PRW
636  declareProperty( "AutoconfigurePRWTool", m_autoconfigPRW );
637  declareProperty( "AutoconfigurePRWToolPath", m_autoconfigPRWPath ); // e.g. dev/PileupReweighting/share/
638  declareProperty( "AutoconfigurePRWToolFile", m_autoconfigPRWFile ); // e.g. DSID407xxx/pileup_mc16a_dsid407352_FS.root
639  declareProperty( "AutoconfigurePRWToolCombinedmode", m_autoconfigPRWCombinedmode );
640  declareProperty( "AutoconfigurePRWToolRPVmode", m_autoconfigPRWRPVmode );
641  declareProperty( "AutoconfigurePRWToolRtags", m_autoconfigPRWRtags );
642  declareProperty( "mcCampaign", m_mcCampaign );
643  declareProperty( "mcChannel", m_mcChannel );
644  declareProperty( "PRWConfigFiles", m_prwConfFiles );
645  declareProperty( "PRWLumiCalcFiles", m_prwLcalcFiles );
646  declareProperty( "PRWActualMu2017File", m_prwActualMu2017File );
647  declareProperty( "PRWActualMu2018File", m_prwActualMu2018File );
648  declareProperty( "PRWActualMu2022File", m_prwActualMu2022File );
649  declareProperty( "PRWActualMu2023File", m_prwActualMu2023File );
650  declareProperty( "PRWActualMu2024File", m_prwActualMu2024File );
651  declareProperty( "PRWDataScaleFactor", m_prwDataSF);
652  declareProperty( "PRWDataScaleFactorUP", m_prwDataSF_UP);
653  declareProperty( "PRWDataScaleFactorDOWN", m_prwDataSF_DW);
654  declareProperty( "PRWUseRunDependentPrescaleWeight", m_runDepPrescaleWeightPRW);
655  declareProperty( "PRWUseCommonMCFiles", m_useCommonPRWFiles);
656  declareProperty( "PRWCommonFileMC20a", m_commonPRWFileMC20a);
657  declareProperty( "PRWCommonFileMC20d", m_commonPRWFileMC20d);
658  declareProperty( "PRWCommonFileMC20e", m_commonPRWFileMC20e);
659  declareProperty( "PRWCommonFileMC21a", m_commonPRWFileMC21a);
660  declareProperty( "PRWCommonFileMC23a", m_commonPRWFileMC23a);
661  declareProperty( "PRWCommonFileMC23c", m_commonPRWFileMC23c);
662  declareProperty( "PRWCommonFileMC23d", m_commonPRWFileMC23d);
663  declareProperty( "PRWCommonFileMC23e", m_commonPRWFileMC23e);
664  //LargeR uncertainties config, as from https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/JetUncertainties2016PrerecLargeR#Understanding_which_configuratio
665  declareProperty( "JetLargeRuncConfig", m_fatJetUncConfig );
666  declareProperty( "JetLargeRuncVars", m_fatJetUncVars );
667  declareProperty( "JetWtaggerConfig", m_WtagConfig );
668  declareProperty( "JetZtaggerConfig", m_ZtagConfig );
669  declareProperty( "JetWZTaggerCalibArea", m_WZTaggerCalibArea );
670  declareProperty( "JetToptaggerConfig", m_ToptagConfig );
671  declareProperty( "JetTruthLabelName", m_JetTruthLabelName );
672  declareProperty( "JetTopTaggerCalibArea", m_TopTaggerCalibArea );
673  declareProperty( "JetWTaguncConfig", m_WTagUncConfig );
674  declareProperty( "JetZTaguncConfig", m_ZTagUncConfig );
675  declareProperty( "JetTopTaguncConfig", m_TopTagUncConfig );
676  //Btagging MCtoMC SFs
677  declareProperty( "ShowerType", m_showerType = 0 );
678  //Egamma NP correlation model
679  declareProperty( "EleEffNPcorrModel", m_EG_corrModel );
680  //Egamma correction file list override
681  declareProperty( "EleEffCorrFNList", m_EG_corrFNList );
682  declareProperty( "IsRun3", m_isRun3 );
683  declareProperty( "IsPHYSLITE", m_isPHYSLITE );
684 
685  //For electron trigger SF tools
686  declareProperty( "ElectronTriggerSFStringSingle", m_electronTriggerSFStringSingle);
687 
688  //--- Tool pointers /MT : we may want to improve the descriptions :)
689  m_jetCalibTool.declarePropertyFor( this, "JetCalibTool", "The JetCalibTool" );
690  m_jetFatCalibTool.declarePropertyFor( this, "FatJetCalibTool", "The JetCalibTool for large-R jets" );
691  m_jetUncertaintiesTool.declarePropertyFor( this, "JetUncertaintiesTool", "The JetUncertaintiesTool" );
692  m_jetUncertaintiesPDSmearTool.declarePropertyFor( this, "JetPDSmearUncertaintiesTool", "The JetPDSmearUncertaintiesTool" );
693  m_fatjetUncertaintiesTool.declarePropertyFor( this, "FatJetUncertaintiesTool", "The JetUncertaintiesTool for large-R jets" );
694  m_fatjetUncertaintiesPDSmearTool.declarePropertyFor( this, "FatJetPDSmearUncertaintiesTool", "The FatJetPDSmearUncertaintiesTool" );
695  m_fatjetFFSmearingTool.declarePropertyFor( this, "FatJetFFSmearingTool", "The FFSmearingTool for large-R jets" );
696  m_WTagjetUncertaintiesTool.declarePropertyFor( this, "WJetUncertaintiesTool", "The JetUncertaintiesTool for large-R W-tagged jets" );
697  m_ZTagjetUncertaintiesTool.declarePropertyFor( this, "ZJetUncertaintiesTool", "The JetUncertaintiesTool for large-R Z-tagged jets" );
698  m_TopTagjetUncertaintiesTool.declarePropertyFor( this, "TopJetUncertaintiesTool", "The JetUncertaintiesTool for large-R Top-tagged jets" );
699  m_jetCleaningTool.declarePropertyFor( this, "JetCleaningTool", "The JetCleaningTool" );
700  m_jetPileupLabelingTool.declarePropertyFor( this, "JetPileupLabelingTool", "The JetPileupLabelingTool" );
701  m_jetJvtMomentTool.declarePropertyFor( this, "JetJvtMomentTool", "The JetJvtMomentTool" );
702  m_jetNNJvtMomentTool.declarePropertyFor( this, "JetNNJvtMomentTool", "The JetNNJvtMomentTool" );
703  m_jetNNJvtSelectionTool.declarePropertyFor( this, "JetNNJvtSelectionTool", "The JetNNJvtSelectionTool" );
704  m_jetNNJvtEfficiencyTool.declarePropertyFor( this, "JetNNJvtEfficiencyTool", "The JetNNJvtEfficiencyTool" );
705  m_jetfJvtSelectionTool.declarePropertyFor( this, "JetfJvtSelectionTool", "The JetfJvtSelectionTool" );
706  m_jetfJvtEfficiencyTool.declarePropertyFor( this, "JetfJvtEfficiencyTool", "The JetfJvtEfficiencyTool" );
707  //
708  m_WTaggerTool.declarePropertyFor( this, "WTaggerTool", "The SmoothedWZTaggerTool" );
709  m_ZTaggerTool.declarePropertyFor( this, "ZTaggerTool", "The SmoothedWZTaggerTool" );
710  m_TopTaggerTool.declarePropertyFor( this, "TopTaggerTool", "The DNNTopTaggerTool" );
711  m_jetTruthLabelingTool.declarePropertyFor( this, "JetTruthLabelingTool", "The JetTruthLabelingTool" );
712  //
713  m_muonSelectionTool.declarePropertyFor( this, "MuonSelectionTool", "The MuonSelectionTool for signal muons" );
714  m_muonSelectionHighPtTool.declarePropertyFor( this, "MuonSelectionHighPtTool", "The MuonSelectionTool for signal muons (HighPt WP)" );
715  m_muonSelectionToolBaseline.declarePropertyFor( this, "MuonSelectionToolBaseline", "The MuonSelectionTool for baseline muons" );
716  m_muonCalibTool.declarePropertyFor( this, "MuonCalibTool", "The MuonCalibTool" );
717  m_muonEfficiencySFTool.declarePropertyFor( this, "MuonEfficiencyScaleFactorsTool", "The MuonEfficiencySFTool" );
718  m_muonEfficiencyBMHighPtSFTool.declarePropertyFor( this, "MuonBadMuonHighPtScaleFactorsTool", "The MuonBadMuonHighPtSFTool" );
719  m_muonTTVAEfficiencySFTool.declarePropertyFor( this, "MuonTTVAEfficiencyScaleFactorsTool", "The MuonTTVAEfficiencySFTool" );
720  m_muonIsolationSFTool.declarePropertyFor( this, "MuonIsolationScaleFactorsTool", "The MuonIsolationSFTool" );
721  m_muonHighPtIsolationSFTool.declarePropertyFor( this, "MuonHighPtIsolationScaleFactorsTool", "The MuonIsolationSFTool" );
722  m_muonTriggerSFTool.declarePropertyFor( this, "MuonTriggerScaleFactorsTool", "The MuonTriggerSFTool" );
723  m_muonLRTORTool.declarePropertyFor( this, "MuonLRTOverlapRemovalTool", "Prompt/LRT muon OR Tool" );
724  //
725  m_elecEfficiencySFTool_reco.declarePropertyFor( this, "ElectronEfficiencyCorrectionTool_reco", "The ElectronEfficiencyCorrectionTool for reconstruction SFs" );
726  m_elecEfficiencySFTool_trig_singleLep.declarePropertyFor( this, "ElectronEfficiencyCorrectionTool_trig_singleLep", "The ElectronEfficiencyCorrectionTool for single-e triggers" );
727  m_elecEfficiencySFTool_id.declarePropertyFor( this, "ElectronEfficiencyCorrectionTool_id", "The ElectronEfficiencyCorrectionTool for ID SFs" );
728  m_elecEfficiencySFTool_iso.declarePropertyFor( this, "ElectronEfficiencyCorrectionTool_iso" , "The ElectronEfficiencyCorrectionTool for iso SFs" );
729  m_elecEfficiencySFTool_isoHighPt.declarePropertyFor( this, "ElectronEfficiencyCorrectionTool_isoHigPt" , "The ElectronEfficiencyCorrectionTool for iso high-pt SFs" );
730  m_elecSelLikelihood.declarePropertyFor( this, "ElectronLikelihoodTool" , "The ElectronSelLikelihoodTool for signal electrons" );
731  m_elecSelLikelihoodBaseline.declarePropertyFor( this, "ElectronLikelihoodToolBaseline" , "The ElectronSelLikelihoodTool for baseline electrons" );
732  m_egammaAmbiguityTool.declarePropertyFor( this, "EgammaAmbiguityTool", "The EgammaAmbiguityTool" );
733  m_elecChargeIDSelectorTool.declarePropertyFor( this, "ElectronChargeIDSelectorTool", "The ElectronChargeIDSelectorTool" );
734  m_elecChargeEffCorrTool.declarePropertyFor( this, "ElectronChargeEffCorrectionTool", "The ElectronChargeEffCorrectionTool" );
735  m_elecLRTORTool.declarePropertyFor( this, "ElectronLRTOverlapRemovalTool", "Prompt/LRT electron OR Tool" );
736  //
737  m_photonSelIsEM.declarePropertyFor( this, "PhotonIsEMSelector" , "The PhotonIsEMSelectorTool for signal photons" );
738  m_photonSelIsEMBaseline.declarePropertyFor( this, "PhotonIsEMSelectorBaseline" , "The PhotonIsEMSelectorTool for baseline photons" );
739  m_photonEfficiencySFTool.declarePropertyFor( this, "PhotonEfficiencyCorrectionTool", "The PhotonEfficiencyCorrectionTool for reco SFs" );
740  m_photonIsolationSFTool.declarePropertyFor( this, "PhotonIsolationCorrectionTool", "The PhotonEfficiencyCorrectionTool for iso SFs" );
741  m_photonTriggerSFTool.declarePropertyFor( this, "PhotonTriggerEfficiencyCorrectionTool", "The PhotonEfficiencyCorrectionTool for trigger SFs" );
742  //
743  m_egammaCalibTool.declarePropertyFor( this, "EgammaCalibrationAndSmearingTool", "The EgammaCalibrationAndSmearingTool");
744  //
745  m_tauSelTool.declarePropertyFor( this, "TauSelectionTool", "The TauSelectionTool for signal taus" );
746  m_tauSelToolBaseline.declarePropertyFor( this, "TauSelectionToolBaseline", "The TauSelectionTool for baseline taus" );
747  m_tauSmearingTool.declarePropertyFor( this, "TauSmearingTool", "The TauSmearingTool" );
748  m_tauTruthMatch.declarePropertyFor( this, "TauTruthMatch", "The TTMT" );
749  m_tauEffTool.declarePropertyFor( this, "TauEfficiencyCorrectionsTool", "The TauEfficiencyCorrectionsTool" );
750  //
751  m_btagEffTool.declarePropertyFor( this, "BTaggingEfficiencyTool", "The BTaggingEfficiencyTool" );
752  m_btagSelTool.declarePropertyFor( this, "BTaggingSelectionTool", "The main BTaggingSelectionTool" );
753  m_btagSelTool_OR.declarePropertyFor( this, "BTaggingSelectionTool_OR", "The BTaggingSelectionTool used to select b-jets for overlap removal" );
754  m_btagEffTool_trkJet.declarePropertyFor( this, "BTaggingEfficiencyTool_trkJet", "The BTaggingEfficiencyTool for track jets" );
755  m_btagSelTool_trkJet.declarePropertyFor( this, "BTaggingSelectionTool_trkJet", "The main BTaggingSelectionTool for track jets" );
756  //
757  m_metMaker.declarePropertyFor( this, "METMaker", "The METMaker instance");
758  m_metSystTool.declarePropertyFor( this, "METSystTool", "The METSystematicsTool");
759  m_metSignif.declarePropertyFor( this, "METSignificance", "The METSignifiance instance");
760  //
761  m_trigGlobalEffCorrTool_diLep.declarePropertyFor( this, "TrigGlobalEfficiencyCorrection_diLep", "The TrigGlobalEfficiencyCorrection tool for dilepton" );
762  m_trigGlobalEffCorrTool_multiLep.declarePropertyFor( this, "TrigGlobalEfficiencyCorrection_multiLep", "The TrigGlobalEfficiencyCorrection tool for trilepton" );
763  m_trigGlobalEffCorrTool_diPhoton.declarePropertyFor( this, "TrigGlobalEfficiencyCorrection_diPhoton", "The TrigGlobalEfficiencyCorrection tool for asymmetric diphoton" );
764  m_trigConfTool.declarePropertyFor( this, "TrigConfigTool", "The TrigConfigTool" );
765  m_trigDecTool.declarePropertyFor( this, "TrigDecisionTool", "The TrigDecisionTool" );
766  m_trigMatchingTool.declarePropertyFor( this, "TrigMatchTool", "The TrigMatchingTool" );
767  m_trigMatchScoringTool.declarePropertyFor( this, "TrigMatchScoringTool", "The TrigMatchScoringTool" );
768  m_trigDRScoringTool.declarePropertyFor( this, "TrigDRScoringTool", "The TrigDRScoringTool" );
769  //
770  m_isoCorrTool.declarePropertyFor( this, "IsolationCorrectionTool", "The IsolationCorrectionTool" );
771  m_isoTool.declarePropertyFor( this, "IsolationSelectionTool", "The IsolationSelectionTool");
772  //disable m_isoToolLowPtPLV.declarePropertyFor( this, "IsolationLowPtPLVTool", "The IsolationLowPtPLVTool");
773  m_isoBaselineTool.declarePropertyFor( this, "IsolationSelectionTool_Baseline", "The IsolationSelectionTool for baseline objects");
774  m_isoHighPtTool.declarePropertyFor( this, "IsolationSelectionTool_HighPt", "The IsolationSelectionTool for High Pt");
775  m_isoCloseByTool.declarePropertyFor( this, "IsolationCloseByCorrectionTool", "The IsolationCloseByCorrectionTool");
776  //
777  m_prwTool.declarePropertyFor( this, "PileupReweightingTool", "The PRW tool" );
778  //
779  m_LRTuncTool.declarePropertyFor( this, "InclusiveTrackFilterTool", "The LRT uncertainty tool");
780  //
781  m_pmgSHnjetWeighter.declarePropertyFor( this, "PMGSHVjetReweightTool", "The PMGSHVjetReweightTool (AntiKt4TruthJets)" );
782  m_pmgSHnjetWeighterWZ.declarePropertyFor( this, "PMGSHVjetReweightWZTool", "The PMGSHVjetReweightTool (AntiKt4TruthWZJets)" );
783  //
784  m_tauJetORtool.declarePropertyFor( this, "TauJetOverlapTool", "The TauJetOverlapTool");
785  //disable m_orToolbox.declarePropertyFor( this, "OverlapRemovalTool", "The overlap removal tool");
786 
787  //load supported WPs (by tightness order)
788  m_el_id_support.push_back("VeryLooseNoPix"); // WPs for LRT Electron
789  m_el_id_support.push_back("VeryLooseLLH");
790  m_el_id_support.push_back("LooseNoPix"); // WPs for LRT Electron
791  m_el_id_support.push_back("LooseLLH");
792  m_el_id_support.push_back("LooseAndBLayerLLH");
793  m_el_id_support.push_back("LooseDNNnoCF");
794  m_el_id_support.push_back("LooseDNN");
795  m_el_id_support.push_back("MediumNoPix"); // WPs for LRT Electron
796  m_el_id_support.push_back("MediumLLH");
797  m_el_id_support.push_back("MediumDNNnoCF");
798  m_el_id_support.push_back("MediumDNN");
799  m_el_id_support.push_back("TightNoPix"); // WPs for LRT Electron
800  m_el_id_support.push_back("TightLLH");
801  m_el_id_support.push_back("TightDNNnoCF");
802  m_el_id_support.push_back("TightDNN");
803 
804  m_ph_id_support.push_back("Loose");
805  m_ph_id_support.push_back("Medium");
806  m_ph_id_support.push_back("Tight");
807  m_ph_id_support.push_back("TightPtIncl"); // Should not be mixed with Tight
808 
809  m_mu_id_support = 4; //maximum value supported
810 
811  // Tau ID WPs
812  m_tau_id_support.push_back("rnn001");
813  m_tau_id_support.push_back("VeryLoose");
814  m_tau_id_support.push_back("Loose");
815  m_tau_id_support.push_back("Medium");
816  m_tau_id_support.push_back("Tight");
817 
818  // Iso WPs
819  // -- see https://twiki.cern.ch/twiki/bin/view/AtlasProtected/RecommendedIsolationWPs#Current_official_working_points
820  // -- the el iso points are those which have (or will have) SFs available
821  m_el_iso_support = {
822  "FCLoose", "FCTight", // current WPs
823  "FCHighPtCaloOnly", // current HighPtCaloOnly WPs
824  "Gradient", //
825  "HighPtCaloOnly", //
826  "TightTrackOnly_VarRad","TightTrackOnly_FixedRad",//
827  "Tight_VarRad","Loose_VarRad", //
828  "PLVLoose", "PLVTight", // PLV recommended WPs, fallback support below b/o SFs and & egamma map file
829  "PLImprovedTight", "PLImprovedVeryTight" // New PLIV WPs, fallback support below b/o SFs & egamma map file
830  };
831  // -- the muon iso points are those which have SFs available
832  // -- more details https://indico.cern.ch/event/878781/contributions/3721998/attachments/1976194/3289315/20200127_IFFshort_2.pdf
833  m_mu_iso_support = {
834  "PflowLoose_FixedRad", "PflowLoose_VarRad", "PflowTight_FixedRad", "PflowTight_VarRad", // PFlow (new naming) recommended WPs
835  "TightTrackOnly_FixedRad", "TightTrackOnly_VarRad", "HighPtTrackOnly", // TrackOnly (new naming) recommended WPs
836  "PLVLoose", "PLVTight", // PLV recommended WPs
837  "Loose_VarRad", "Loose_FixedRad", "Tight_VarRad", "Tight_FixedRad", // Other WPs (new naming)
838  "PLImprovedTight", "PLImprovedVeryTight" // New PLIV WPs, fallback support below b/o SFs
839  };
840 
841  // Construct electron fallback WPs for SFs
842  for (const auto& x : m_el_iso_support) { m_el_iso_fallback[x] = x; } // all current WPs
843  m_el_iso_fallback["PLVTight"] = "FCTight"; // plus actual fallback
844  m_el_iso_fallback["PLVLoose"] = "FCLoose";
845  m_el_iso_fallback["PLImprovedTight"] = "FCTight";
846  m_el_iso_fallback["PLImprovedVeryTight"] = "FCTight";
847  m_el_iso_fallback["HighPtCaloOnly"] = "FCHighPtCaloOnly";
848  m_el_iso_fallback["TightTrackOnly_VarRad"] = "FCTight";
849  m_el_iso_fallback["TightTrackOnly_FixedRad"] = "FCTight";
850  m_el_iso_fallback["Tight_VarRad"] = "FCTight";
851  m_el_iso_fallback["Loose_VarRad"] = "FCLoose";
852 
853  // Construct muon fallback WPs for SFs
854  m_mu_iso_fallback = {};
855  m_mu_iso_fallback["PLImprovedTight"] = "PLVTight";
856  m_mu_iso_fallback["PLImprovedVeryTight"] = "PLVTight";
857 }

◆ ~SUSYObjDef_xAOD()

ST::SUSYObjDef_xAOD::~SUSYObjDef_xAOD ( )

Definition at line 3136 of file SUSYObjDef_xAOD.cxx.

3136  {
3137 
3138 #ifdef XAOD_STANDALONE
3139  // remove all tools from the asg::ToolStore (and delete them)
3140  // so that they don't get re-used if we set up another SUSYTools
3141  // instance, e.g. when processing two datasets in one EventLoop
3142  // job
3143  if (!m_trigDecTool.empty()){
3144  if (asg::ToolStore::contains<Trig::TrigDecisionTool>("ToolSvc.TrigDecisionTool") ){
3145  // Ignore both of these so that we are safe if others have cleaned up
3146  m_trigDecTool->finalize().ignore();
3147  asg::ToolStore::remove("ToolSvc.TrigDecisionTool").ignore();
3148  }
3149  }
3150 #endif
3151 }

Member Function Documentation

◆ ApplyLRTUncertainty()

StatusCode ST::SUSYObjDef_xAOD::ApplyLRTUncertainty ( )
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 3103 of file SUSYObjDef_xAOD.cxx.

3103  {
3104 
3105  // Don't apply variations for data
3106  if (isData()) return StatusCode::SUCCESS;
3107 
3108  const EventContext& ctx = Gaudi::Hive::currentContext();
3109 
3110  // Loop over tracks and call LRT uncertainty tool
3111  ATH_MSG_DEBUG ( "Applying LRT filter tool decorations for uncertainty");
3113  for(const auto trk: inTracks) dec_lrtFilter(*trk) = m_LRTuncTool->accept(trk);
3114 
3115  // Loop over GSF LRT tracks and call uncertainty tool
3116  const xAOD::TrackParticleContainer inGSFTracks = GetInDetLargeD0GSFTracks(ctx);
3117  for(const auto trk: inGSFTracks) dec_lrtFilter(*trk) = m_LRTuncTool->accept(trk);
3118 
3119  return StatusCode::SUCCESS;
3120 }

◆ ApplyPRWTool()

StatusCode ST::SUSYObjDef_xAOD::ApplyPRWTool ( bool  muDependentRRN = true)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 3058 of file SUSYObjDef_xAOD.cxx.

3058  {
3059 
3060  const xAOD::EventInfo* evtInfo = GetEventInfo();
3061  if(!randomrunnumber.isAvailable(*evtInfo))
3062  ATH_CHECK( m_prwTool->apply( *evtInfo, muDependentRRN ) );
3063  return StatusCode::SUCCESS;
3064 }

◆ applySystematicVariation()

StatusCode ST::SUSYObjDef_xAOD::applySystematicVariation ( const CP::SystematicSet systConfig)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 2149 of file SUSYObjDef_xAOD.cxx.

2150 {
2151  if (!m_tool_init) {
2152  ATH_MSG_ERROR("SUSYTools was not initialized!!");
2153  return StatusCode::FAILURE;
2154  }
2155 
2156  ATH_MSG_DEBUG(" in SUSYObjDef_xAOD::applySystematicVariation \"" << systConfig.name() << "\" size " << systConfig.size());
2157 
2158  m_currentSyst = systConfig;
2159 
2160  // NB: SystematicSet typically has only one component (see SUSYToolsTester macro)
2161  if (!m_jetUncertaintiesTool.empty() && systConfig.name().find("PseudoData") == std::string::npos) {
2163  if ( ret != StatusCode::SUCCESS) {
2164  ATH_MSG_VERBOSE("Cannot configure JetUncertaintiesTool for systematic var. " << systConfig.name() );
2165  } else {
2166  ATH_MSG_VERBOSE("Configured JetUncertaintiesTool for systematic var. " << systConfig.name() );
2167  }
2168  }
2169  if (!m_jetUncertaintiesPDSmearTool.empty() && systConfig.name().find("PseudoData") != std::string::npos) {
2171  if ( ret != StatusCode::SUCCESS) {
2172  ATH_MSG_VERBOSE("Cannot configure JetUncertaintiesPDSmearTool for systematic var. " << systConfig.name() );
2173  } else {
2174  ATH_MSG_VERBOSE("Configured JetUncertaintiesPDSmearTool for systematic var. " << systConfig.name() );
2175  }
2176  }
2177  if (!m_WTagjetUncertaintiesTool.empty() && !m_WTagUncConfig.empty()) {
2179  if ( ret != StatusCode::SUCCESS) {
2180  ATH_MSG_VERBOSE("Cannot configure (Fat)JetUncertaintiesTool (WTag) for systematic var. " << systConfig.name() );
2181  } else {
2182  ATH_MSG_VERBOSE("Configured (Fat)JetUncertaintiesTool (WTag) for systematic var. " << systConfig.name() );
2183  }
2184  }
2185  if (!m_ZTagjetUncertaintiesTool.empty() && !m_ZTagUncConfig.empty()) {
2187  if ( ret != StatusCode::SUCCESS) {
2188  ATH_MSG_VERBOSE("Cannot configure (Fat)JetUncertaintiesTool (ZTag) for systematic var. " << systConfig.name() );
2189  } else {
2190  ATH_MSG_VERBOSE("Configured (Fat)JetUncertaintiesTool (ZTag) for systematic var. " << systConfig.name() );
2191  }
2192  }
2193 
2196  if ( ret != StatusCode::SUCCESS) {
2197  ATH_MSG_VERBOSE("Cannot configure (Fat)JetUncertaintiesTool (TopTag) for systematic var. " << systConfig.name() );
2198  } else {
2199  ATH_MSG_VERBOSE("Configured (Fat)JetUncertaintiesTool (TopTag) for systematic var. " << systConfig.name() );
2200  }
2201  }
2202  if (!m_fatjetUncertaintiesTool.empty() && systConfig.name().find("PseudoData") == std::string::npos) {
2204  if ( ret != StatusCode::SUCCESS) {
2205  ATH_MSG_VERBOSE("Cannot configure (Fat)JetUncertaintiesTool (main) for systematic var. " << systConfig.name() );
2206  } else {
2207  ATH_MSG_VERBOSE("Configured (Fat)JetUncertaintiesTool (main) for systematic var. " << systConfig.name() );
2208  }
2209  }
2210  if (!m_fatjetUncertaintiesPDSmearTool.empty() && systConfig.name().find("PseudoData") != std::string::npos) {
2212  if ( ret != StatusCode::SUCCESS) {
2213  ATH_MSG_VERBOSE("Cannot configure FatJetUncertaintiesPDSmearTool for systematic var. " << systConfig.name() );
2214  } else {
2215  ATH_MSG_VERBOSE("Configured FatJetUncertaintiesPDSmearTool for systematic var. " << systConfig.name() );
2216  }
2217  }
2220  if ( ret != StatusCode::SUCCESS) {
2221  ATH_MSG_VERBOSE("Cannot configure (Fat)JetFFSmearingTool (main) for systematic var. " << systConfig.name() );
2222  } else {
2223  ATH_MSG_VERBOSE("Configured (Fat)JetFFSmearingTool (main) for systematic var. " << systConfig.name() );
2224  }
2225  }
2228  if ( ret != StatusCode::SUCCESS) {
2229  ATH_MSG_VERBOSE("Cannot configure NNJvtEfficiency for systematic var. " << systConfig.name() );
2230  } else {
2231  ATH_MSG_VERBOSE("Configured NNJvtEfficiency for systematic var. " << systConfig.name() );
2232  }
2233  }
2234  if (!m_jetfJvtEfficiencyTool.empty()) {
2236  if ( ret != StatusCode::SUCCESS) {
2237  ATH_MSG_VERBOSE("Cannot configure fJvtEfficiency for systematic var. " << systConfig.name() );
2238  } else {
2239  ATH_MSG_VERBOSE("Configured fJvtEfficiency for systematic var. " << systConfig.name() );
2240  }
2241  }
2242  if (!m_muonCalibTool.empty()) {
2244  if (ret != StatusCode::SUCCESS) {
2245  ATH_MSG_ERROR("Cannot configure MuonCalibTool for systematic var. " << systConfig.name() );
2246  return ret;
2247  } else {
2248  ATH_MSG_VERBOSE("MuonCalibTool configured for systematic var. " << systConfig.name() );
2249  }
2250  }
2251  if (!m_muonEfficiencySFTool.empty()) {
2253  if ( ret != StatusCode::SUCCESS) {
2254  ATH_MSG_ERROR("Cannot configure MuonEfficiencyScaleFactors for systematic var. " << systConfig.name() );
2255  return ret;
2256  } else {
2257  ATH_MSG_VERBOSE("MuonEfficiencyScaleFactors configured for systematic var. " << systConfig.name() );
2258  }
2259  }
2262  if ( ret != StatusCode::SUCCESS) {
2263  ATH_MSG_ERROR("Cannot configure MuonBadMuonHighPtScaleFactors for systematic var. " << systConfig.name() );
2264  return ret;
2265  } else {
2266  ATH_MSG_VERBOSE("MuonBadMuonHighPtScaleFactors configured for systematic var. " << systConfig.name() );
2267  }
2268  }
2271  if ( ret != StatusCode::SUCCESS) {
2272  ATH_MSG_ERROR("Cannot configure MuonTTVAEfficiencyScaleFactors for systematic var. " << systConfig.name() );
2273  return ret;
2274  } else {
2275  ATH_MSG_VERBOSE("MuonTTVAEfficiencyScaleFactors configured for systematic var. " << systConfig.name() );
2276  }
2277  }
2278  if (!m_muonIsolationSFTool.empty()) {
2280  if ( ret != StatusCode::SUCCESS) {
2281  ATH_MSG_ERROR("Cannot configure MuonIsolationScaleFactors for systematic var. " << systConfig.name() );
2282  return ret;
2283  } else {
2284  ATH_MSG_VERBOSE("MuonIsolationScaleFactors configured for systematic var. " << systConfig.name() );
2285  }
2286  }
2287  if (!m_muonTriggerSFTool.empty()) {
2289  if ( ret != StatusCode::SUCCESS) {
2290  ATH_MSG_ERROR("Cannot configure MuonTriggerScaleFactors for systematic var. " << systConfig.name() );
2291  return ret;
2292  } else {
2293  ATH_MSG_VERBOSE("MuonTriggerScaleFactors configured for systematic var. " << systConfig.name() );
2294  }
2295  }
2298  if (ret != StatusCode::SUCCESS) {
2299  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (reco) for systematic var. " << systConfig.name() );
2300  return ret;
2301  } else {
2302  ATH_MSG_VERBOSE("AsgElectronEfficiencyCorrectionTool (reco) configured for systematic var. " << systConfig.name() );
2303  }
2304  }
2307  if (ret != StatusCode::SUCCESS) {
2308  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (id) for systematic var. " << systConfig.name() );
2309  return ret;
2310  } else {
2311  ATH_MSG_VERBOSE("AsgElectronEfficiencyCorrectionTool (id) configured for systematic var. " << systConfig.name() );
2312  }
2313  }
2316  if (ret != StatusCode::SUCCESS) {
2317  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.name() );
2318  return ret;
2319  } else {
2320  ATH_MSG_VERBOSE("AsgElectronEfficiencyCorrectionTool (trigger) configured for systematic var. " << systConfig.name() );
2321  }
2322  }
2325  if (ret != StatusCode::SUCCESS) {
2326  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (trigger SFTool) for systematic var. " << systConfig.name() );
2327  return ret;
2328  } else {
2329  ATH_MSG_VERBOSE("AsgElectronEfficiencyCorrectionTool (trigger SFTool) configured for systematic var. " << systConfig.name() );
2330  }
2331  }
2334  for(auto &sfop : m_elecTrigEffTools){
2335  StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2336  if (ret1 != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure m_elecTrigEffTools (dilepton trigger) for systematic var. " << systConfig.name() ); return ret1; }
2337  }
2338  for(auto &sfop : m_elecTrigSFTools){
2339  StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2340  if (ret1 != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure m_elecTrigSFTools (dilepton trigger) for systematic var. " << systConfig.name() ); return ret1; }
2341  }
2342  for(auto &sfop : m_muonTrigSFTools){
2343  StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2344  if (ret1 != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure m_muonTrigSFTools (dilepton trigger) for systematic var. " << systConfig.name() ); return ret1; }
2345  }
2346  if (ret != StatusCode::SUCCESS) {
2347  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (dilepton trigger) for systematic var. " << systConfig.name() );
2348  return ret;
2349  } else {
2350  ATH_MSG_VERBOSE("TrigGlobalEfficiencyCorrectionTool (dilepton trigger) configured for systematic var. " << systConfig.name() );
2351  }
2352  }
2355  for(auto &sfop : m_elecTrigEffTools){
2356  StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2357  if (ret1 != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure m_elecTrigEffTools (multilep trigger) for systematic var. " << systConfig.name() ); return ret1; }
2358  }
2359  for(auto &sfop : m_elecTrigSFTools){
2360  StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2361  if (ret1 != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure m_elecTrigSFTools (multilep trigger) for systematic var. " << systConfig.name() ); return ret1; }
2362  }
2363  for(auto &sfop : m_muonTrigSFTools){
2364  StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2365  if (ret1 != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure m_muonTrigSFTools (multilep trigger) for systematic var. " << systConfig.name() ); return ret1; }
2366  }
2367  if (ret != StatusCode::SUCCESS) {
2368  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (multi-lepton trigger) for systematic var. " << systConfig.name() );
2369  return ret;
2370  } else {
2371  ATH_MSG_VERBOSE("TrigGlobalEfficiencyCorrectionTool (multi-lepton trigger) configured for systematic var. " << systConfig.name() );
2372  }
2373  }
2376  if (ret != StatusCode::SUCCESS) {
2377  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (iso) for systematic var. " << systConfig.name() );
2378  return ret;
2379  } else {
2380  ATH_MSG_VERBOSE("AsgElectronEfficiencyCorrectionTool (iso) configured for systematic var. " << systConfig.name() );
2381  }
2382  }
2385  if (ret != StatusCode::SUCCESS) {
2386  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (iso high-pt) for systematic var. " << systConfig.name() );
2387  return ret;
2388  } else {
2389  ATH_MSG_VERBOSE("AsgElectronEfficiencyCorrectionTool (iso high-pt) configured for systematic var. " << systConfig.name() );
2390  }
2391  }
2392  if (!m_elecChargeEffCorrTool.empty()) {
2394  if (ret != StatusCode::SUCCESS) {
2395  ATH_MSG_ERROR("Cannot configure ElectronChargeEffCorrectionTool for systematic var. " << systConfig.name() );
2396  return ret;
2397  } else {
2398  ATH_MSG_VERBOSE("ElectronChargeEffCorrectionTool configured for systematic var. " << systConfig.name() );
2399  }
2400  }
2401  if (!isData() && !m_photonEfficiencySFTool.empty()) {
2403  if (ret != StatusCode::SUCCESS) {
2404  ATH_MSG_ERROR("Cannot configure AsgPhotonEfficiencyCorrectionTool (reco) for systematic var. " << systConfig.name() );
2405  return ret;
2406  } else {
2407  ATH_MSG_VERBOSE("AsgPhotonEfficiencyCorrectionTool (reco) configured for systematic var. " << systConfig.name() );
2408  }
2409  }
2410  if (!isData() && !m_photonIsolationSFTool.empty()) {
2412  if (ret != StatusCode::SUCCESS) {
2413  ATH_MSG_ERROR("Cannot configure AsgPhotonEfficiencyCorrectionTool (iso) for systematic var. " << systConfig.name() );
2414  return ret;
2415  } else {
2416  ATH_MSG_VERBOSE("AsgPhotonEfficiencyCorrectionTool configured (iso) for systematic var. " << systConfig.name() );
2417  }
2418  }
2419  if (!isData() && !m_photonTriggerSFTool.empty()) {
2421  if (ret != StatusCode::SUCCESS) {
2422  ATH_MSG_ERROR("Cannot configure AsgPhotonEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.name() );
2423  return ret;
2424  } else {
2425  ATH_MSG_VERBOSE("AsgPhotonEfficiencyCorrectionTool configured (trigger) for systematic var. " << systConfig.name() );
2426  }
2427  }
2430  for(auto &sfop : m_photonTrigEffTools){
2431  StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2432  if (ret1 != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure m_photonTrigEffTools (diphoton trigger) for systematic var. " << systConfig.name() ); return ret1; }
2433  }
2434  for(auto &sfop : m_photonTrigSFTools){
2435  StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2436  if (ret1 != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure m_photonTrigSFTools (diphoton trigger) for systematic var. " << systConfig.name() ); return ret1; }
2437  }
2438  if (ret != StatusCode::SUCCESS) {
2439  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (diphoton trigger) for systematic var. " << systConfig.name() );
2440  return ret;
2441  } else {
2442  ATH_MSG_VERBOSE("TrigGlobalEfficiencyCorrectionTool (diphoton trigger) configured for systematic var. " << systConfig.name() );
2443  }
2444  }
2445  if (!m_egammaCalibTool.empty()) {
2447  if (ret != StatusCode::SUCCESS) {
2448  ATH_MSG_ERROR("Cannot configure EgammaCalibrationAndSmearingTool for systematic var. " << systConfig.name() );
2449  return ret;
2450  } else {
2451  ATH_MSG_VERBOSE("EgammaCalibrationAndSmearingTool configured for systematic var. " << systConfig.name() );
2452  }
2453  }
2454  if (!m_isoCorrTool.empty()) {
2456  if (ret != StatusCode::SUCCESS) {
2457  ATH_MSG_ERROR("Cannot configure IsolationCorrectionTool for systematic var. " << systConfig.name() );
2458  return ret;
2459  } else {
2460  ATH_MSG_VERBOSE("IsolationCorrectionTool configured for systematic var. " << systConfig.name() );
2461  }
2462  }
2463  if (!m_btagEffTool.empty()) {
2464  //if ( systConfig.size() > 0 && m_btagEffTool->isAffectedBySystematic(*systConfig.begin()) ) {
2466  if ( ret != StatusCode::SUCCESS) {
2467  ATH_MSG_ERROR("Cannot configure xAODBTaggingEfficiency for systematic var. " << systConfig.name() );
2468  return ret;
2469  } else {
2470  ATH_MSG_VERBOSE("Configured xAODBTaggingEfficiency for systematic var. " << systConfig.name() );
2471  }
2472  //}
2473  }
2474  if (!m_btagEffTool_trkJet.empty()) {
2476  if ( ret != StatusCode::SUCCESS) {
2477  ATH_MSG_ERROR("Cannot configure xAODBTaggingEfficiency (track jets) for systematic var. " << systConfig.name() );
2478  return ret;
2479  } else {
2480  ATH_MSG_VERBOSE("Configured xAODBTaggingEfficiency (track jets) for systematic var. " << systConfig.name() );
2481  }
2482  }
2483  if (!m_tauSmearingTool.empty()) {
2485  if ( ret != StatusCode::SUCCESS) {
2486  ATH_MSG_ERROR("Cannot configure TauSmearingTool for systematic var. " << systConfig.name() );
2487  return ret;
2488  } else {
2489  ATH_MSG_VERBOSE("Configured TauSmearingTool for systematic var. " << systConfig.name() );
2490  }
2491  }
2492  if (!m_tauEffTool.empty()) {
2494  if ( ret != StatusCode::SUCCESS) {
2495  ATH_MSG_ERROR("Cannot configure TauEfficiencyCorrectionsTool for systematic var. " << systConfig.name() );
2496  return ret;
2497  } else {
2498  ATH_MSG_VERBOSE("Configured TauEfficiencyCorrectionsTool for systematic var. " << systConfig.name() );
2499  }
2500  }
2501  for(auto &tool : m_tauTrigEffTool) {
2502  StatusCode ret = tool->applySystematicVariation(systConfig);
2503  if (ret != StatusCode::SUCCESS) {
2504  ATH_MSG_ERROR("Cannot configure " << tool->name() << " for systematic var. " << systConfig.name() );
2505  return ret;
2506  } else {
2507  ATH_MSG_VERBOSE("Configured " << tool->name() << " for systematic var. " << systConfig.name() );
2508  }
2509  }
2510  if (!m_metSystTool.empty()) {
2512  if ( ret != StatusCode::SUCCESS) {
2513  ATH_MSG_ERROR("Cannot configure METSystematicsTool for systematic var. " << systConfig.name() );
2514  return ret;
2515  } else {
2516  ATH_MSG_VERBOSE("Configured METSystematicsTool for systematic var. " << systConfig.name() );
2517  }
2518  }
2519  if (!m_prwTool.empty()) {
2520  StatusCode ret = m_prwTool->applySystematicVariation(systConfig);
2521  if ( ret != StatusCode::SUCCESS) {
2522  ATH_MSG_ERROR("Cannot configure PileupReweightingTool for systematic var. " << systConfig.name() );
2523  return ret;
2524  } else {
2525  ATH_MSG_VERBOSE("Configured PileupReweightingTool for systematic var. " << systConfig.name() );
2526  }
2527  }
2528 
2529  if (!m_LRTuncTool.empty()) {
2531  if ( ret != StatusCode::SUCCESS) {
2532  ATH_MSG_ERROR("Cannot configure InDetTrackFilterTool for systematic var. " << systConfig.name() );
2533  return ret;
2534  } else {
2535  ATH_MSG_VERBOSE("Configured InDetTrackFilterTool for systematic var. " << systConfig.name() );
2536  }
2537  }
2538 
2539  return StatusCode::SUCCESS;
2540 }

◆ autoconfigurePileupRWTool()

StatusCode ST::SUSYObjDef_xAOD::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 = "" 
)
protected

Definition at line 1014 of file SUSYObjDef_xAOD.cxx.

1014  {
1015 
1016  // this will contain the path of the PRW file on /cvmfs which needs to be reverse engineered from the DSID and MC campaign
1017  // the path(s) will be added to m_prwConfFiles which is later used in the configuration of the CP PRW tool
1018  std::string prwConfigFile("");
1019 
1020  if ( !isData() && m_autoconfigPRW ) {
1021 
1022  prwConfigFile = PRWfilesDir;
1023 
1024  float dsid = -999;
1025  std::string amiTag("");
1026  std::string mcCampaignMD("");
1027  std::string simFlavour("");
1028  std::string simType("");
1029  const xAOD::FileMetaData* fmd = nullptr;
1030 
1031  // configure PRW rtag options from m_autoconfigPRWRtags string
1032  // e.g. "mc20a:r13167_r14859,mc20d:r13144_r14860,mc20e:r13145_r14861,mc21a:r13752_r13829,mc23a:r14622_r14932_r15540,mc23c:r14799_r14908,mc23d:r15224_r15530,mc23e:r16083"
1033  std::map<std::string,std::vector<std::string>> PRWRtags = {};
1034  std::string allcampaigns = "mc20a.mc20d.mc20e.mc21a.mc23a.mc23c.mc23d.mc23e";
1035  bool standard_like = true;
1036  for ( const auto& campaign_rtags : split( m_autoconfigPRWRtags, "," ) ) { // split string by ","
1037  std::string icampaign = campaign_rtags.substr(0, campaign_rtags.find(":")); // first field = campaign, split by ":"
1038  std::vector<std::string> irtags = split( campaign_rtags.substr(campaign_rtags.find(":")+1), "_" ); // remaining fields = rtags, split by "_"
1039  PRWRtags[icampaign] = irtags;
1040  ATH_MSG_DEBUG( "PRW autoconfigure considering rtags " << campaign_rtags.substr(campaign_rtags.find("_")+1) << " for campaign " << icampaign );
1041  }
1042  for ( const auto& x : PRWRtags ) {
1043  if ( allcampaigns.find(x.first)==string::npos ) {
1044  ATH_MSG_ERROR("m_autoconfigPRWRtags contains invalid campaign: " << x.first << " (" << m_autoconfigPRWRtags << ")");
1045  ATH_MSG_ERROR("use any of " << allcampaigns);
1046  return StatusCode::FAILURE;
1047  }
1048  }
1049 
1050  // let's use MetaData to extract sample information
1051  if ( inputMetaStore()->contains<xAOD::FileMetaData>("FileMetaData") && inputMetaStore()->retrieve(fmd,"FileMetaData").isSuccess() ) {
1054  fmd->value(xAOD::FileMetaData::simFlavour, simFlavour);
1055 
1056  if(simFlavour.starts_with("ATLFASTII")) simType = "AFII";
1057  else if(simFlavour.starts_with("ATLFAST3")) simType = "AF3";
1058  else simType = "FS";
1059 
1060  bool found = false;
1061  while ( mcCampaignMD.empty() ) {
1062  for ( const auto& campaign_rtags : PRWRtags ) { // consider all campaigns
1063  for ( const auto& rtag: campaign_rtags.second ) { // consider all rtags
1064  if (found) continue;
1065  if (amiTag.find(rtag)!=string::npos) { // find matching tag
1066  mcCampaignMD = campaign_rtags.first.substr(0,5); // save campaign
1067  standard_like = (campaign_rtags.first.find("ns")?true:false); // track non-standard r-tags
1068  found = true; // break if found
1069  }
1070  }
1071  }
1072  // in case not found
1073  if (!found) {
1074  ATH_MSG_ERROR( "autoconfigurePileupRWTool(): unrecognized xAOD::FileMetaData::amiTag, \'" << amiTag << "'. Please check your input sample.");
1075  return StatusCode::FAILURE;
1076  }
1077  //
1078  ATH_MSG_INFO( "Setting up autoconfigurePileupRWTool for mc campaign " << mcCampaignMD << " (from amiTag " << amiTag << ") (standard-like = " << (standard_like?"true":"false") << ")." );
1079  if ( (!standard_like) && (!RPVLLmode) )
1080  ATH_MSG_WARNING("Non-standard r-tag found (" << amiTag.data() << "), but RPVLLmode not set. Perhaps you want to set \"PRW.autoconfigPRWRPVmode: 1\" in the config?");
1081  }
1082  } else {
1083 #ifndef XAOD_STANDALONE
1084  ATH_MSG_ERROR( "autoconfigurePileupRWTool(): access to FileMetaData failed, can't get mc channel number.");
1085  return StatusCode::FAILURE;
1086 #else
1087 
1088  if ( m_mcCampaign == "mc20a" || m_mcCampaign == "mc20d" || m_mcCampaign == "mc20e" || m_mcCampaign == "mc21a" || m_mcCampaign == "mc23a" || m_mcCampaign == "mc23c" || m_mcCampaign == "mc23d" || m_mcCampaign == "mc23e") {
1089  // First see if the user set the mcCampaign/run number by property (hopefully temporary workaround)
1090  if ( m_mcChannel > 0) {
1091  ATH_MSG_WARNING( "autoconfigurePileupRWTool(): access to FileMetaData failed -> getting the mc channel number (DSID) and campaign from configuration." );
1092  std::string NoMetadataButPropertyOK("");
1093  NoMetadataButPropertyOK += "autoconfigurePileupRWTool(): 'mcCampaign' is used and passed to SUSYTools as '";
1094  NoMetadataButPropertyOK += m_mcCampaign;
1095  NoMetadataButPropertyOK += "'. 'mcChannel' is used and passed to SUSYTools as '";
1096  NoMetadataButPropertyOK += std::to_string(m_mcChannel);
1097  NoMetadataButPropertyOK += "'. Autocongiguring PRW accordingly.";
1098  ATH_MSG_WARNING( NoMetadataButPropertyOK );
1099  mcCampaignMD = m_mcCampaign;
1100  dsid = m_mcChannel;
1101  } else {
1102  // OK, this is a fall-back option without using MetaData but one has to manually set 'mcCampaign' property
1103  ATH_MSG_WARNING( "autoconfigurePileupRWTool(): access to FileMetaData failed -> getting the mc channel number (DSID) from the event store." );
1104  const xAOD::EventInfo* evtInfo = GetEventInfo();
1105  dsid = evtInfo->mcChannelNumber();
1106 
1107  std::string NoMetadataButPropertyOK("");
1108  NoMetadataButPropertyOK += "autoconfigurePileupRWTool(): 'mcCampaign' is used and passed to SUSYTools as '";
1109  NoMetadataButPropertyOK += m_mcCampaign;
1110  NoMetadataButPropertyOK += "'. Autoconfiguring PRW accordingly.";
1111  ATH_MSG_WARNING( NoMetadataButPropertyOK );
1112  mcCampaignMD = m_mcCampaign;
1113  }
1114  } else {
1115  ATH_MSG_ERROR( "autoconfigurePileupRWTool(): `mcCampaign' is not set properly.");
1116  return StatusCode::FAILURE;
1117  }
1118 #endif
1119  }
1120 
1121  // If requested set the PRW file to common PRW file of the processed MC campaign
1122  if (m_useCommonPRWFiles) {
1123  ATH_MSG_INFO( "autoconfigurePileupRWTool(): retrieving the common PRW file for MC campaign: " << mcCampaignMD );
1124  if (mcCampaignMD == "mc20a") {prwConfigFile = PathResolverFindCalibFile(m_commonPRWFileMC20a);}
1125  else if (mcCampaignMD == "mc20d") {prwConfigFile = PathResolverFindCalibFile(m_commonPRWFileMC20d);}
1126  else if (mcCampaignMD == "mc20e") {prwConfigFile = PathResolverFindCalibFile(m_commonPRWFileMC20e);}
1127  else if (mcCampaignMD == "mc21a") {prwConfigFile = PathResolverFindCalibFile(m_commonPRWFileMC21a);}
1128  else if (mcCampaignMD == "mc23a") {prwConfigFile = PathResolverFindCalibFile(m_commonPRWFileMC23a);}
1129  else if (mcCampaignMD == "mc23c") {prwConfigFile = PathResolverFindCalibFile(m_commonPRWFileMC23c);}
1130  else if (mcCampaignMD == "mc23d") {prwConfigFile = PathResolverFindCalibFile(m_commonPRWFileMC23d);}
1131  else if (mcCampaignMD == "mc23e") {prwConfigFile = PathResolverFindCalibFile(m_commonPRWFileMC23e);}
1132  else {
1133  ATH_MSG_ERROR( "autoconfigurePileupRWTool(): no common PRW file known for MC campaign: " << mcCampaignMD);
1134  return StatusCode::FAILURE;
1135  }
1136  }
1137  // Otherwise try finding the dedicated PRW file on /cvmfs
1138  else {
1139  // Retrieve the input file
1140  int DSID_INT = static_cast<int>(dsid);
1141  prwConfigFile += "DSID" + std::to_string(DSID_INT/1000) + "xxx/pileup_" + mcCampaignMD + "_dsid" + std::to_string(DSID_INT) + "_" + simType + ".root";
1142 
1143  if (RPVLLmode) prwConfigFile = TString(prwConfigFile).ReplaceAll(".root","_rpvll.root").Data();
1144 
1145  // PRW file specified by user
1146  // e.g. DSID700xxx/pileup_mc20a_dsid700015_FS.root
1147  if (!PRWfileName.empty()) {
1148  prwConfigFile = PRWfilesDir + PRWfileName;
1149  ATH_MSG_INFO( "autoconfigurePileupRWTool(): PRW file was specifed by user: " << prwConfigFile.data() );
1150  }
1151  }
1152 
1153  m_prwConfFiles.clear();
1154 
1155  // Combined mode can be only used when running with full data with the same MC samples
1156  if (Combinedmode) {
1157  if (mcCampaignMD.find("mc20") == std::string::npos) {
1158  ATH_MSG_ERROR( "autoconfigurePileupRWTool(): combined mode currently onlys supported for mc20! Impossible to autoconfigure PRW. Aborting." );
1159  return StatusCode::FAILURE;
1160  }
1161  // When using the common PRW files we can directly add them
1162  if (m_useCommonPRWFiles) {
1163  m_prwConfFiles.push_back( m_commonPRWFileMC20a );
1164  m_prwConfFiles.push_back( m_commonPRWFileMC20d );
1165  m_prwConfFiles.push_back( m_commonPRWFileMC20e );
1166  }
1167  // Otherwise we have to replace the mc campaign in the name accordingly
1168  else {
1169  m_prwConfFiles.emplace_back( TString(prwConfigFile).ReplaceAll(mcCampaignMD, "mc20a").Data() );
1170  m_prwConfFiles.emplace_back( TString(prwConfigFile).ReplaceAll(mcCampaignMD, "mc20d").Data() );
1171  m_prwConfFiles.emplace_back( TString(prwConfigFile).ReplaceAll(mcCampaignMD, "mc20e").Data() );
1172  }
1175  } else {
1176  m_prwConfFiles.push_back( prwConfigFile );
1177  if ( mcCampaignMD == "mc20d") {
1179  } else if (mcCampaignMD == "mc20e") {
1181  } else if (mcCampaignMD == "mc21a" || mcCampaignMD == "mc23a") {
1183  } else if (mcCampaignMD == "mc23c" || mcCampaignMD == "mc23d") {
1185  } else if (mcCampaignMD == "mc23e") {
1187  }
1188 
1189  }
1190  prwConfigFile = usePathResolver ? PathResolverFindCalibFile(prwConfigFile) : prwConfigFile;
1191 
1192  // Test if file exists (i.e. was requested already to /cvmfs if the DSID-specific PRW files are used) and is usable
1193  TFile testF(prwConfigFile.data(),"read");
1194  if (testF.IsZombie()) {
1195  ATH_MSG_ERROR( "autoconfigurePileupRWTool(): file not found -> " << prwConfigFile.data() << " ! Impossible to autoconfigure PRW. Aborting." );
1196  if ( (!standard_like) && (!RPVLLmode) )
1197  ATH_MSG_WARNING("Running with non-standard r-tag (" << amiTag.data() << "), but RPVLLmode not set. Perhaps you want to set \"PRW.autoconfigPRWRPVmode: 1\" in the config?");
1198  return StatusCode::FAILURE;
1199  }
1200 
1201  ATH_MSG_INFO( "autoconfigurePileupRWTool(): configuring PRW tool using " << prwConfigFile.data() );
1202  }
1203  // Return gracefully
1204  return StatusCode::SUCCESS;
1205 }

◆ beginEvent()

StatusCode asg::AsgMetadataTool::beginEvent ( )
protectedvirtualinherited

Function called when a new events is loaded.

Dummy implementation that can be overridden by the derived tool.

Reimplemented in AsgElectronEfficiencyCorrectionTool, TrigConf::xAODConfigTool, TauAnalysisTools::TauSelectionTool, TauAnalysisTools::DiTauSelectionTool, TauAnalysisTools::CommonSmearingTool, TauAnalysisTools::DiTauEfficiencyCorrectionsTool, Trig::TrigDecisionTool, TauAnalysisTools::TauEfficiencyCorrectionsTool, Trig::TrigConfBunchCrossingTool, xAODMaker::TriggerMenuMetaDataTool, and Trig::xAODBunchCrossingTool.

Definition at line 201 of file AsgMetadataTool.cxx.

201  {
202 
203  // Return gracefully:
204  return StatusCode::SUCCESS;
205  }

◆ beginInputFile()

StatusCode asg::AsgMetadataTool::beginInputFile ( )
protectedvirtualinherited

Function called when a new input file is opened.

Dummy implementation that can be overridden by the derived tool.

Reimplemented in AsgElectronEfficiencyCorrectionTool, TrigConf::xAODConfigTool, PMGTools::PMGTruthWeightTool, BookkeeperTool, BookkeeperDumperTool, Trig::TrigDecisionTool, xAODMaker::TriggerMenuMetaDataTool, xAODMaker::TruthMetaDataTool, Trig::xAODBunchCrossingTool, TauAnalysisTools::TauEfficiencyCorrectionsTool, and TauAnalysisTools::TauSmearingTool.

Definition at line 185 of file AsgMetadataTool.cxx.

185  {
186 
187  // Return gracefully:
188  return StatusCode::SUCCESS;
189  }

◆ BtagSF()

float ST::SUSYObjDef_xAOD::BtagSF ( const xAOD::JetContainer jets)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 827 of file Jets.cxx.

827  {
828 
829  float totalSF = 1.;
830  for ( const xAOD::Jet* jet : *jets ) {
831 
832  float sf = 1.;
833 
834  if ( std::abs(jet->eta()) > 2.5 ) {
835  ATH_MSG_VERBOSE( "Trying to retrieve b-tagging SF for jet with |eta|>2.5 (jet eta=" << jet->eta() << "), jet will be skipped");
836  } else if ( jet->pt() < 20e3 ){
837  ATH_MSG_VERBOSE( "Trying to retrieve b-tagging SF for jet with invalid pt (jet pt=" << jet->pt() << "), jet will be skipped");
838  } else {
839 
841  int truthlabel(-1);
842  if (!jet->getAttribute("HadronConeExclTruthLabelID", truthlabel)) {
843  ATH_MSG_ERROR("Failed to get jet truth label!");
844  }
845  ATH_MSG_VERBOSE("This jet is " << (acc_bjet(*jet) ? "" : "not ") << "b-tagged.");
846  ATH_MSG_VERBOSE("This jet's truth label is " << truthlabel);
847 
848  if ( acc_bjet(*jet) or m_BtagWP == "Continuous") {
850 
851  switch (result) {
853  ATH_MSG_ERROR( "Failed to retrieve SF for b-tagged jets in SUSYTools_xAOD::BtagSF" );
854  break;
856  ATH_MSG_VERBOSE( "No valid SF for b-tagged jets in SUSYTools_xAOD::BtagSF" );
857  break;
858  default:
859  ATH_MSG_VERBOSE( "Retrieve SF for b-tagged jets in SUSYTools_xAOD::BtagSF with value " << sf );
860  }
861  } else {
862 
864 
865  switch (result) {
867  ATH_MSG_ERROR( "Failed to retrieve SF for non-b-tagged jets in SUSYTools_xAOD::BtagSF" );
868  break;
870  ATH_MSG_VERBOSE( "No valid inefficiency SF for non-b-tagged jets in SUSYTools_xAOD::BtagSF" );
871  break;
872  default:
873  ATH_MSG_VERBOSE( "Retrieve SF for non-b-tagged jets in SUSYTools_xAOD::BtagSF with value " << sf );
874  }
875  }
876  }
877 
878  dec_effscalefact(*jet) = sf;
879 
880  if( acc_signal(*jet) && acc_passOR(*jet) ) totalSF *= sf; //consider goodjets only
881 
882  }
883 
884  return totalSF;
885  }

◆ BtagSF_trkJet()

float ST::SUSYObjDef_xAOD::BtagSF_trkJet ( const xAOD::JetContainer trkjets)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 908 of file Jets.cxx.

908  {
909 
910  float totalSF = 1.;
911  for ( const xAOD::Jet* trkjet : *trkjets ) {
912 
913  float sf = 1.;
914 
915  if ( std::abs(trkjet->eta()) > 2.5 ) {
916  ATH_MSG_VERBOSE( "Trying to retrieve b-tagging SF for trkjet with |eta|>2.5 (trkjet eta=" << trkjet->eta() << "), trkjet will be skipped");
917  } else if ( trkjet->pt() < 10e3 ){
918  ATH_MSG_VERBOSE( "Trying to retrieve b-tagging SF for trkjet with invalid pt (trkjet pt=" << trkjet->pt() << "), jet will be skipped");
919  } else {
920 
922  int truthlabel(-1);
923  if (!trkjet->getAttribute("HadronConeExclTruthLabelID", truthlabel)) {
924  ATH_MSG_ERROR("Failed to get jet truth label!");
925  }
926  ATH_MSG_VERBOSE("This jet is " << (acc_bjet(*trkjet) ? "" : "not ") << "b-tagged.");
927  ATH_MSG_VERBOSE("This jet's truth label is " << truthlabel);
928 
929  if ( acc_bjet(*trkjet) ) {
931 
932  switch (result) {
934  ATH_MSG_ERROR( "Failed to retrieve SF for b-tagged trk jets in SUSYTools_xAOD::BtagSF_trkJet" );
935  break;
937  ATH_MSG_VERBOSE( "No valid SF for b-tagged trk jets in SUSYTools_xAOD::BtagSF_trkJet" );
938  break;
939  default:
940  ATH_MSG_VERBOSE( "Retrieve SF for b-tagged trk jets in SUSYTools_xAOD::BtagSF_trkJet with value " << sf );
941  }
942  } else {
943 
945 
946  switch (result) {
948  ATH_MSG_ERROR( "Failed to retrieve SF for non-b-tagged trk jets in SUSYTools_xAOD::BtagSF_trkJet" );
949  break;
951  ATH_MSG_VERBOSE( "No valid inefficiency SF for non-b-tagged trk jets in SUSYTools_xAOD::BtagSF_trkJet" );
952  break;
953  default:
954  ATH_MSG_VERBOSE( "Retrieve SF for non-b-tagged trk jets in SUSYTools_xAOD::BtagSF_trkJet with value " << sf );
955  }
956  }
957  }
958 
959  dec_effscalefact(*trkjet) = sf;
960 
961  if( acc_signal(*trkjet) ) totalSF *= sf;
962 
963  }
964 
965  return totalSF;
966  }

◆ BtagSFsys()

float ST::SUSYObjDef_xAOD::BtagSFsys ( const xAOD::JetContainer jets,
const CP::SystematicSet systConfig 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 888 of file Jets.cxx.

889  {
890  float totalSF = 1.;
891 
892  //Set the new systematic variation
894  if ( ret != StatusCode::SUCCESS) {
895  ATH_MSG_ERROR("Cannot configure BTaggingEfficiencyTool for systematic var. " << systConfig.name() );
896  }
897 
898  totalSF = BtagSF( jets );
899 
901  if ( ret != StatusCode::SUCCESS) {
902  ATH_MSG_ERROR("Cannot configure BTaggingEfficiencyTool for systematic var. " << systConfig.name() );
903  }
904 
905  return totalSF;
906  }

◆ BtagSFsys_trkJet()

float ST::SUSYObjDef_xAOD::BtagSFsys_trkJet ( const xAOD::JetContainer trkjets,
const CP::SystematicSet systConfig 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 969 of file Jets.cxx.

970  {
971  float totalSF = 1.;
972 
973  //Set the new systematic variation
975  if ( ret != StatusCode::SUCCESS) {
976  ATH_MSG_ERROR("Cannot configure BTaggingEfficiencyTool (track jets) for systematic var. " << systConfig.name() );
977  }
978 
979  totalSF = BtagSF_trkJet( trkjets );
980 
982  if ( ret != StatusCode::SUCCESS) {
983  ATH_MSG_ERROR("Cannot configure BTaggingEfficiencyTool (track jets) for systematic var. " << systConfig.name() );
984  }
985 
986  return totalSF;
987  }

◆ check_isOption()

bool ST::SUSYObjDef_xAOD::check_isOption ( const std::string &  wp,
const std::vector< std::string > &  list 
) const
protected

Definition at line 1215 of file SUSYObjDef_xAOD.cxx.

1215  {
1216  //check if the selected WP is supported
1217  return (std::find(list.begin(), list.end(),wp) != list.end());
1218 }

◆ check_isTighter()

bool ST::SUSYObjDef_xAOD::check_isTighter ( const std::string &  wp1,
const std::string &  wp,
const std::vector< std::string > &  list 
) const
protected

Definition at line 1220 of file SUSYObjDef_xAOD.cxx.

1220  {
1221  //check if WP1 is tighter than WP2
1222  //it is assumed that both WPs are supported
1223  return (std::find(list.begin(),list.end(),wp1) > std::find(list.begin(), list.end(),wp2));
1224 }

◆ configFromFile() [1/4]

void ST::SUSYObjDef_xAOD::configFromFile ( bool &  property,
const std::string &  propname,
TEnv &  rEnv,
bool  defaultValue 
)
protected

Definition at line 1258 of file SUSYObjDef_xAOD.cxx.

1260 {
1261  if(m_bool_prop_set.find(m_conf_to_prop[propname])!=m_bool_prop_set.end()){
1262  ATH_MSG_INFO( "configFromFile(): property \"" << propname << "\" already set with value " << property << ". Ignoring change request." );
1263  rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1264  return;
1265  }
1266  property = rEnv.GetValue(propname.c_str(), static_cast<int>(defaultValue));
1267  ATH_MSG_INFO( "configFromFile(): Loaded property \"" << propname << "\" with value " << property );
1268  // Remove the item from the table
1269  rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1270 }

◆ configFromFile() [2/4]

void ST::SUSYObjDef_xAOD::configFromFile ( double &  property,
const std::string &  propname,
TEnv &  rEnv,
double  defaultValue 
)
protected

Definition at line 1273 of file SUSYObjDef_xAOD.cxx.

1275 {
1276  // ignore if already configured
1277  if (property > -90.) {
1278  ATH_MSG_INFO( "configFromFile(): property \"" << propname << "\" already set with value " << property << ". Ignoring change request." );
1279  rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1280  return;
1281  }
1282  property = rEnv.GetValue(propname.c_str(), defaultValue);
1283  ATH_MSG_INFO( "configFromFile(): Loaded property \"" << propname << "\" with value " << property );
1284  // Remove the item from the table
1285  rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1286 }

◆ configFromFile() [3/4]

void ST::SUSYObjDef_xAOD::configFromFile ( int &  property,
const std::string &  propname,
TEnv &  rEnv,
int  defaultValue 
)
protected

Definition at line 1289 of file SUSYObjDef_xAOD.cxx.

1291 {
1292  // ignore if already configured
1293  if (property > -90){
1294  ATH_MSG_INFO( "configFromFile(): property \"" << propname << "\" already set with value " << property << ". Ignoring change request." );
1295  rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1296  return;
1297  }
1298  property = rEnv.GetValue(propname.c_str(), defaultValue);
1299  ATH_MSG_INFO( "configFromFile(): Loaded property \"" << propname << "\" with value " << property );
1300  // Remove the item from the table
1301  rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1302 }

◆ configFromFile() [4/4]

void ST::SUSYObjDef_xAOD::configFromFile ( std::string &  property,
const std::string &  propname,
TEnv &  rEnv,
const std::string &  defaultValue,
bool  allowEmpty = false 
)
protected

Definition at line 1305 of file SUSYObjDef_xAOD.cxx.

1307 {
1308  // ignore if already configured
1309  if (!property.empty()){
1310  ATH_MSG_INFO( "configFromFile(): property \"" << propname << "\" already set with value " << property << ". Ignoring change request." );
1311  rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1312  return;
1313  }
1314  property = rEnv.GetValue(propname.c_str(), defaultValue.c_str());
1315  if (property.empty() && !allowEmpty) {
1316  ATH_MSG_FATAL("Read empty string property from text file (property name: " << propname << ")");
1317  }
1318 
1319  // post-processing to get rid of leading/trailing spaces and comments
1320  std::string tmp_prop = property.substr(0, property.find('#', 0));
1321  property = TString(tmp_prop).ReplaceAll(" ","").Data();
1322 
1323  // Interpret None as an empty string
1324  if (property=="None" || property=="NONE" || property=="none") {
1325  ATH_MSG_VERBOSE( "Property \"" << propname << "\" being set to empty string due to specification of \"" << property << "\"" );
1326  property = "";
1327  }
1328 
1329  ATH_MSG_INFO( "configFromFile(): Loaded property \"" << propname << "\" with value " << property );
1330  // Remove the item from the table
1331  rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1332 }

◆ currentSystematic()

const CP::SystematicSet & ST::SUSYObjDef_xAOD::currentSystematic ( ) const

Definition at line 2107 of file SUSYObjDef_xAOD.cxx.

2107  {
2108  return m_currentSyst;
2109 }

◆ currentSystematicIsNominal()

bool ST::SUSYObjDef_xAOD::currentSystematicIsNominal ( ) const

Definition at line 2135 of file SUSYObjDef_xAOD.cxx.

2135  {
2136  return isNominal(m_currentSyst);
2137 }

◆ currentSystematicIsVariation()

bool ST::SUSYObjDef_xAOD::currentSystematicIsVariation ( ) const

Definition at line 2139 of file SUSYObjDef_xAOD.cxx.

2139  {
2140  return isVariation(m_currentSyst);
2141 }

◆ currentSystematicIsWeight()

bool ST::SUSYObjDef_xAOD::currentSystematicIsWeight ( ) const

Definition at line 2143 of file SUSYObjDef_xAOD.cxx.

2143  {
2144  return isWeight(m_currentSyst);
2145 }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T, V, H > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ EG_WP()

std::string ST::SUSYObjDef_xAOD::EG_WP ( const std::string &  wp) const
protected

Definition at line 1227 of file SUSYObjDef_xAOD.cxx.

1227  {
1228  //translate our electron wps to EGamma internal jargon
1229  //@ElectronPhotonSelectorTools/EGSelectorConfigurationMapping.h
1230  TString copy = TString(wp).Copy().ReplaceAll("AndBLayer","BL").ReplaceAll("LLH","LHElectron");
1231  // the DNN WPs are labeled in the map as e.g. TightDNNnoCFElectron or TightDNNElectron
1232  if (wp.find("DNNnoCF") != std::string::npos)
1233  copy.ReplaceAll("DNNnoCF", "DNNnoCFElectron");
1234  else if (wp.find("DNN") != std::string::npos)
1235  copy.ReplaceAll("DNN", "DNNElectron");
1236  return copy.Data();
1237 }

◆ emulateHLT()

bool ST::SUSYObjDef_xAOD::emulateHLT ( const std::string &  triggerName) const
private

Definition at line 97 of file Trigger.cxx.

97  {
98  std::scoped_lock lock (m_triggerCacheMutex);
99  // First, check if we've already tried using this trigger
100  auto funcItr = m_metTriggerFuncs.find(triggerName);
101  if (funcItr != m_metTriggerFuncs.end() )
102  return funcItr->second();
103 
104  // Next, check that it really is a HLT MET trigger
105  if (triggerName.substr(0,6) != "HLT_xe") {
106  ATH_MSG_ERROR( "Requested trigger " << triggerName << " isn't a MET trigger! (HLT MET items should begin with 'HLT_xe'). Will return false." );
107  return false;
108  }
109 
110  // Next, parse the name to work out which containers are needed to emulate the decision
111  std::vector<std::pair<int, std::string> > hypos; // algorithms and thresholds needed
112  std::string temp(triggerName);
113  // Note, we need to split on '_AND_' used for the combined mht+cell trigger
114  do {
115  auto pos = temp.find("_AND_");
116  std::string itemName = temp.substr(0, pos);
117  ATH_MSG_DEBUG( "Split trigger item " << itemName );
118  if (pos == std::string::npos)
119  temp = "";
120  else
121  temp = temp.substr(pos + 5);
122 
123  std::regex expr("HLT_xe([[:digit:]]+)_?(mht|pufit|pueta|tc_lcw|)_?(?:L1XE([[:digit:]]+)|)");
124  std::smatch sm;
125  if (!std::regex_match(itemName, sm, expr) ) {
126  ATH_MSG_WARNING( "Regex reading for item " << itemName << " (" << triggerName << ") failed! Will be ignored!" );
127  continue;
128  }
129  if (sm.size() < 4) { // first object is the whole match, then there are three capture groups
130  ATH_MSG_WARNING( "Regex failed to capture the right groups for item " << itemName << " (" << triggerName << ") failed! Will be ignored!" );
131  for (unsigned int ii = 0; ii < sm.size(); ++ii) {
132  ATH_MSG_WARNING( sm[ii] );
133  }
134  continue;
135  }
136  int threshold = std::stoi(sm[1] );
137  std::string algKey = sm[2];
138  std::string metContBaseName = "HLT_xAOD__TrigMissingETContainer_TrigEFMissingET";
139  if (algKey.empty()) hypos.push_back(std::make_pair(threshold, metContBaseName) );
140  else if (algKey == "mht") hypos.push_back(std::make_pair(threshold, metContBaseName+"_mht") );
141  else if (algKey == "pufit") hypos.push_back(std::make_pair(threshold, metContBaseName+"_topocl_PUC") );
142  else if (algKey == "pueta") hypos.push_back(std::make_pair(threshold, metContBaseName+"_topocl_PS") );
143  else if (algKey == "tc_lcw") hypos.push_back(std::make_pair(threshold, metContBaseName+"topocl") );
144 
145  ATH_MSG_DEBUG( "Container: " << hypos.back().second << ", Threshold: " << hypos.back().first );
146 
147  if (sm[3] != "" && sm[3] != "50") {
148  ATH_MSG_WARNING( "The trigger requires a different L1 item to L1_XE50! This currently isn't allowed for in the code so the emulation will be slightly wrong" );
149  // Note, now the L1 part is done in the previous section. However I'm keeping this warning here.
150  }
151  }
152  while (!temp.empty());
153 
154  // Check if we have the containers and construct the lambda
155  // Already done the L1 decision - only care about HLT
156  std::function<bool()> lambda;
157  bool hasRequired = true;
158  if (hypos.empty()) lambda = [] () {return false;};
159  else {
160  for (const auto& pair : hypos) {
161  if (evtStore()->contains<xAOD::TrigMissingETContainer>(pair.second) ) {
162  auto lambda_hypo = [this, pair] () {
163  const xAOD::TrigMissingETContainer* cont(nullptr);
164  if (evtStore()->retrieve(cont, pair.second) ) {
165  if (cont->empty()) return false;
166  float ex = cont->front()->ex() * 0.001;
167  float ey = cont->front()->ey() * 0.001;
168  float met = std::sqrt(ex*ex + ey*ey);
169  return met > pair.first;
170  }
171  else {
172  return false;
173  }
174  };
175  // an empty std::function evaluates to false
176  if (lambda) {
177  lambda = [lambda, lambda_hypo] () {
178  return lambda() && lambda_hypo();
179  };
180  }
181  else {
182  lambda = lambda_hypo;
183  }
184  }
185  else {
186  hasRequired = false;
187  ATH_MSG_WARNING( "Container: " << pair.second << " missing!" );
188  }
189  }
190  }
191  if (hasRequired) {
192  m_metTriggerFuncs[triggerName] = lambda;
193  return m_metTriggerFuncs.at(triggerName)();
194  }
195  // We can't get the exact trigger decision :( . Look for an alternative
196  std::vector<std::string> replacementTriggers({"HLT_xe110_mht_L1XE50", "HLT_xe100_mht_L1XE50", "HLT_xe90_mht_L1XE50", "HLT_xe70_mht"});
197  for (const std::string& trigName : replacementTriggers) {
198  if (isTrigInTDT(lock, trigName) ) {
199  ATH_MSG_WARNING( "Trigger " << triggerName << " not available and direct emulation impossible! Will use " << trigName << " instead!");
200  m_metTriggerFuncs[triggerName] = [this, trigName] () {
201  return m_trigDecTool->isPassed(trigName);
202  };
203  return m_metTriggerFuncs.at(triggerName)();
204  }
205  }
206  ATH_MSG_ERROR( "Cannot find the trigger in the menu, direct emulation is impossible and no replacement triggers are available! Will return false" );
207  m_metTriggerFuncs.at(triggerName) = [] () {return false;};
208  return m_metTriggerFuncs.at(triggerName)();
209 }

◆ endInputFile()

StatusCode asg::AsgMetadataTool::endInputFile ( )
protectedvirtualinherited

Function called when the currently open input file got completely processed.

Dummy implementation that can be overridden by the derived tool.

Reimplemented in BookkeeperTool, BookkeeperDumperTool, xAODMaker::TriggerMenuMetaDataTool, and xAODMaker::TruthMetaDataTool.

Definition at line 193 of file AsgMetadataTool.cxx.

193  {
194 
195  // Return gracefully:
196  return StatusCode::SUCCESS;
197  }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ FillElectron()

StatusCode ST::SUSYObjDef_xAOD::FillElectron ( xAOD::Electron input,
const float  etcut,
const float  etacut 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 223 of file Electrons.cxx.

223  {
224 
225  ATH_MSG_VERBOSE( "Starting FillElectron on el with pre-calibration pt=" << input.pt() );
226 
227  // According to https://twiki.cern.ch/twiki/bin/view/AtlasProtected/EGammaIdentificationRun2#Electron_identification:
228  // "Please apply the identification to uncalibrated electron object. ID scale factors are to be applied to calibrated objects."
229  dec_baseline(input) = false;
230  dec_selected(input) = 0;
231  dec_signal(input) = false;
232  dec_isol(input) = false;
233  dec_isolHighPt(input) = false;
234  dec_passSignalID(input) = false;
235  dec_passChID(input) = false;
236  dec_ecisBDT(input) = -999.;
237 
238  const xAOD::EventInfo* evtInfo = nullptr;
239  ATH_CHECK( evtStore()->retrieve( evtInfo, "EventInfo" ) );
240  const xAOD::Vertex* pv = this->GetPrimVtx();
241  const xAOD::TrackParticle* track = input.trackParticle();
242  if (!track) {
243  ATH_MSG_DEBUG("No primary track particle for this electron. Skipping.");
244  return StatusCode::SUCCESS;
245  }
246  double primvertex_z = pv ? pv->z() : 0;
247  double el_z0 = track->z0() + track->vz() - primvertex_z;
248  dec_z0sinTheta(input) = el_z0 * TMath::Sin(input.p4().Theta());
249  //protect against exception thrown for null or negative d0sig
250  try{
251  dec_d0sig(input) = xAOD::TrackingHelpers::d0significance( track , evtInfo->beamPosSigmaX(), evtInfo->beamPosSigmaY(), evtInfo->beamPosSigmaXY() );
252  }
253  catch(...){
254  float d0sigError = -99.;
255  ATH_MSG_WARNING("FillElectron : Exception catched from d0significance() calculation. Setting dummy decoration d0sig=" << d0sigError );
256  dec_d0sig(input) = d0sigError;
257  }
258 
259  // don't bother calibrating or computing WP
260  if ( input.pt() < 4e3 ) return StatusCode::SUCCESS;
261  if ( !input.caloCluster() ) { ATH_MSG_WARNING( "FillElectron: no caloCluster found: " << input.caloCluster() ); return StatusCode::SUCCESS; }
262 
263  //Check DeadHVCellRemoval
264  bool pass_deadHVTool = m_deadHVTool->accept(&input);
265 
266  if (m_debug) {
267  unsigned char el_nPixHits(0), el_nSCTHits(0);
268  input.trackParticle()->summaryValue(el_nPixHits, xAOD::numberOfPixelHits);
269  input.trackParticle()->summaryValue(el_nSCTHits, xAOD::numberOfSCTHits);
270 
271  ATH_MSG_INFO( "ELECTRON eta: " << input.eta());
272  ATH_MSG_INFO( "ELECTRON phi: " << input.phi());
273  ATH_MSG_INFO( "ELECTRON cl eta: " << input.caloCluster()->eta());
274  ATH_MSG_INFO( "ELECTRON cl phi: " << input.caloCluster()->phi());
275  ATH_MSG_INFO( "ELECTRON cl e: " << input.caloCluster()->e());
276  ATH_MSG_INFO( "ELECTRON trk eta: " << input.trackParticle()->eta());
277  ATH_MSG_INFO( "ELECTRON trk phi: " << input.trackParticle()->phi());
278  ATH_MSG_INFO( "ELECTRON author: " << input.author());
279  ATH_MSG_INFO( "ELECTRON OQ: " << acc_OQ(input));
280  ATH_MSG_INFO( "ELECTRON nPixHits: " << static_cast<int>(el_nPixHits));
281  ATH_MSG_INFO( "ELECTRON nSCTHits: " << static_cast<int>(el_nSCTHits));
282  ATH_MSG_INFO( "ELECTRON deadHVTools: " << static_cast<bool>(pass_deadHVTool));
283  }
284 
285  if (!pass_deadHVTool) return StatusCode::SUCCESS;
286  if (!input.isGoodOQ(xAOD::EgammaParameters::BADCLUSELECTRON)) return StatusCode::SUCCESS;
287 
289  ATH_MSG_ERROR("No baseline electron selector defined!");
290  return StatusCode::FAILURE;
291  }
292 
293  bool passBaseID = false;
294  if (m_eleIdExpert) {
295  passBaseID = bool(m_elecSelLikelihoodBaseline->accept(&input));
296  } else {
297  if (m_acc_eleIdBaseline.isAvailable(input)) {
298  passBaseID = m_acc_eleIdBaseline(input);
299  } else {
300  ATH_MSG_VERBOSE ("DFCommonElectronsLHxxx variables are not found. Calculating the ID from LH tool..");
301  passBaseID = bool(m_elecSelLikelihoodBaseline->accept(&input));
302  }
303  }
304 
305  if ( !passBaseID && !m_force_noElId ) return StatusCode::SUCCESS;
306 
307  //baseline ID decoration for TauEl OR
308  //dec_passBaseID(input) = true;
309 
310  // calibrate the electron 4-vector here only if within eta window
311  if (std::abs(input.caloCluster()->etaBE(2)) >= etacut) return StatusCode::SUCCESS;
312 
314  if ( std::abs( input.caloCluster()->etaBE(2) ) >1.37 && std::abs( input.caloCluster()->etaBE(2) ) <1.52) {
315  return StatusCode::SUCCESS;
316  }
317  }
318 
319  // corrections described in https://twiki.cern.ch/twiki/bin/view/AtlasProtected/EGammaCalibrationRun2
321  ATH_MSG_ERROR( "FillElectron: EgammaCalibTool applyCorrection failed ");
322 
324  ATH_MSG_ERROR("FillElectron: IsolationCorrectionTool applyCorrection failed");
325 
326  ATH_MSG_VERBOSE( "FillElectron: post-calibration pt=" << input.pt() );
327 
328  if (input.pt() < etcut) return StatusCode::SUCCESS;
329 
330  if (m_elebaselinez0>0. && std::abs(acc_z0sinTheta(input))>m_elebaselinez0) return StatusCode::SUCCESS;
331  if (m_elebaselined0sig>0. && std::abs(acc_d0sig(input))>m_elebaselined0sig) return StatusCode::SUCCESS;
332 
333  //--- Do baseline isolation check
334  if ( !( m_eleBaselineIso_WP.empty() ) && !( m_isoBaselineTool->accept(input) ) ) return StatusCode::SUCCESS;
335 
336  dec_baseline(input) = true;
337  dec_selected(input) = 2;
338  //disable if (!m_eleIso_WP.empty() && m_eleIso_WP.find("PLV")!=std::string::npos) ATH_CHECK( ->augmentPLV(input) );
339  if (!m_eleIso_WP.empty()) dec_isol(input) = bool(m_isoTool->accept(input));
340  if (!m_eleIsoHighPt_WP.empty()) dec_isolHighPt(input) = bool(m_isoHighPtTool->accept(input));
341 
342  //ChargeIDSelector
343  if( m_runECIS ){
344  if (acc_passECIDS.isAvailable(input)) {
345  dec_passChID(input) = acc_passECIDS(input); // Loose 97% WP!
346  } else {
347  dec_passChID(input) = bool(m_elecChargeIDSelectorTool->accept(&input));
348  //disable double bdt = m_elecChargeIDSelectorTool->calculate(&input).getResult("bdt");
349  //disable dec_ecisBDT(input) = bdt;
350  }
351  }
352  else{
353  dec_passChID(input) = true;
354  }
355 
356  ATH_MSG_VERBOSE( "FillElectron: passed baseline selection" );
357 
358  return StatusCode::SUCCESS;
359 }

◆ FillJet()

StatusCode ST::SUSYObjDef_xAOD::FillJet ( xAOD::Jet input,
const bool  doCalib = true,
bool  isFat = false,
bool  doLargeRdecorations = false 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 384 of file Jets.cxx.

384  {
385 
386  ATH_MSG_VERBOSE( "Starting FillJet on jet with pt=" << input.pt() );
387  ATH_MSG_VERBOSE( "jet (pt,eta,phi) before calibration " << input.pt() << " " << input.eta() << " " << input.phi() );
388 
389  static const SG::ConstAccessor<bool> acc_wValidKinRange(m_WDecorName+"_ValidKinRange");
390  static const SG::ConstAccessor<bool> acc_zValidKinRange(m_ZDecorName+"_ValidKinRange");
391  static const SG::ConstAccessor<bool> acc_topValidKinRange(m_TopDecorName+"_ValidKinRange");
392  static const SG::ConstAccessor<bool> acc_wtagged(m_WDecorName+"_Tagged");
393  static const SG::ConstAccessor<bool> acc_ztagged(m_ZDecorName+"_Tagged");
394  static const SG::ConstAccessor<bool> acc_toptagged(m_TopDecorName+"_Tagged");
395 
396  if (doCalib) {
397  if(!isFat){
398  //disable - obsoleted ATH_CHECK( m_jetCalibTool->applyCalibration(input) );
399  }
400  else {
401  //disable - obsoleted ATH_CHECK( m_jetFatCalibTool->applyCalibration(input) );
402  dec_baseline(input) = ( input.pt() > m_jetPt ) || ( input.pt() > 20e3 ); // Allows for setting m_jetPt < 20e3
403  dec_bad(input) = false;
404  dec_signal(input) = false;
405  dec_bjet_loose(input) = false;
406  dec_effscalefact(input) = 1.;
407  dec_passOR(input) = true;
408  dec_bjet_jetunc(input) = false;
409  dec_btag_weight(input) = -999.;
410 
411  dec_wtagged(input) = -1;
412  dec_ztagged(input) = -1;
413  dec_toptagged(input) = -1;
414  if (doLargeRdecorations) {
415 
416  // Retrieve large-R tagging results for W/Z/top
417  if (!m_WtagConfig.empty()) {
418  ATH_CHECK(m_WTaggerTool->tag(input));
419  // Only tag jets if they are inside the kinematic range
420  if ( !acc_wValidKinRange(input) ) {
421  ATH_MSG_VERBOSE("Large-R W candidate jet outside of recommended tagging range. Will set score to 0.");
422  dec_wtagged(input) = 0;
423  }
424  else dec_wtagged(input) = acc_wtagged(input);
425  }
426  if (!m_ZtagConfig.empty()) {
427  ATH_CHECK(m_ZTaggerTool->tag(input));
428  // Only tag jets if they are inside the kinematic range
429  if ( !acc_zValidKinRange(input) ) {
430  ATH_MSG_VERBOSE("Large-R Z candidate jet outside of recommended tagging range. Will set score to 0.");
431  dec_ztagged(input) = 0;
432  }
433  else dec_ztagged(input) = acc_ztagged(input);
434  }
435  if (!m_ToptagConfig.empty()) {
436  ATH_CHECK(m_TopTaggerTool->tag(input));
437  // Only tag jets if they are inside the kinematic range
438  if ( !acc_topValidKinRange(input) ) {
439  ATH_MSG_VERBOSE("Large-R Top candidate jet outside of recommended tagging range. Will set score to 0.");
440  dec_toptagged(input) = 0;
441  }
442  else dec_toptagged(input) = acc_toptagged(input);
443  }
444 
445  }
446 
447  // If a user hasn't specified an uncertainty config, then this tool will be empty
448  // for large R jets
449  if (!m_WTagjetUncertaintiesTool.empty() && !m_WTagUncConfig.empty() && !m_WtagConfig.empty() && doLargeRdecorations) {
451  switch (result) {
453  ATH_MSG_ERROR( "Failed to apply largeR W-tag jet scale uncertainties.");
454  return StatusCode::FAILURE;
455  //break;
457  ATH_MSG_VERBOSE( "No valid pt/eta/m range for largeR W-tag jet scale uncertainties. ");
458  break;
459  default:
460  break;
461  }
462  } else {
463  ATH_MSG_DEBUG( "No valid large-R W-tagged fat jet uncertainty, but FillJet called with a fat jet. Skipping uncertainties." );
464  }
465 
466  if (!m_ZTagjetUncertaintiesTool.empty() && !m_ZTagUncConfig.empty() && !m_ZtagConfig.empty() && doLargeRdecorations) {
468  switch (result) {
470  ATH_MSG_ERROR( "Failed to apply largeR Z-tag jet scale uncertainties.");
471  return StatusCode::FAILURE;
472  //break;
474  ATH_MSG_VERBOSE( "No valid pt/eta/m range for largeR Z-tag jet scale uncertainties. ");
475  break;
476  default:
477  break;
478  }
479  } else {
480  ATH_MSG_DEBUG( "No valid large-R Z-tagged fat jet uncertainty, but FillJet called with a fat jet. Skipping uncertainties." );
481  }
482 
483  if (!m_TopTagjetUncertaintiesTool.empty() && !m_TopTagUncConfig.empty() && !m_ToptagConfig.empty() && doLargeRdecorations) {
485  switch (result) {
487  ATH_MSG_ERROR( "Failed to apply largeR Top-tag jet scale uncertainties.");
488  return StatusCode::FAILURE;
489  //break;
491  ATH_MSG_VERBOSE( "No valid pt/eta/m range for largeR Top-tag jet scale uncertainties. ");
492  break;
493  default:
494  break;
495  }
496  } else {
497  ATH_MSG_DEBUG( "No valid large-R Top-tagged fat jet uncertainty, but FillJet called with a fat jet. Skipping uncertainties." );
498  }
499 
500  if (!m_fatjetUncertaintiesTool.empty() && m_currentSyst.name().find("PseudoData") == std::string::npos) {
502  switch (result) {
504  ATH_MSG_ERROR( "Failed to apply largeR jet scale uncertainties.");
505  return StatusCode::FAILURE;
506  //break;
508  ATH_MSG_VERBOSE( "No valid pt/eta/m range for largeR jet scale uncertainties. ");
509  break;
510  default:
511  break;
512  }
513  } else {
514  ATH_MSG_DEBUG( "No valid fat jet uncertainty, but FillJet called with a fat jet. Skipping uncertainties." );
515  }
516 
517  // Use the PDSmeared uncertainties tool on the systematic with PseudoData in the name
520  switch (result) {
522  ATH_MSG_ERROR( "Failed to apply largeR jet scale PD uncertainties.");
523  return StatusCode::FAILURE;
524  //break;
526  ATH_MSG_VERBOSE( "No valid pt/eta/m range for largeR jet scale uncertainties. ");
527  break;
528  default:
529  break;
530  }
531  } else {
532  ATH_MSG_DEBUG( "No valid fat jet uncertainty, but FillJet called with a fat jet. Skipping uncertainties." );
533  }
534 
537  switch (result) {
539  ATH_MSG_ERROR( "Failed to apply largeR jet scale uncertainties.");
540  return StatusCode::FAILURE;
541  //break;
543  ATH_MSG_VERBOSE( "No valid pt/eta/m range for largeR jet scale uncertainties. ");
544  break;
545  default:
546  break;
547  }
548  } else {
549  ATH_MSG_DEBUG( "No valid fat jet uncertainty, but FillJet called with a fat jet. Skipping uncertainties." );
550  }
551 
552  ATH_MSG_VERBOSE( "Large-R jet (pt,eta,phi) after calibration " << input.pt() << " " << input.eta() << " " << input.phi() );
553 
554  return StatusCode::SUCCESS;
555  }
556  ATH_MSG_VERBOSE( "jet (pt,eta,phi) after calibration " << input.pt() << " " << input.eta() << " " << input.phi() );
557 
558  }
559 
560  dec_passOR(input) = true;
561  dec_bjet_jetunc(input) = false;
562 
563  if (m_useBtagging) {
564  if (m_BtagWP != "Continuous") this->IsBJet(input);
565  else this->IsBJetContinuous(input);
566  }
567 
568  if ( (input.pt() > m_jetPt) || (input.pt() > 15e3) ) {
569  if(!isFat && m_currentSyst.name().find("PseudoData") == std::string::npos) {
570  // Use the normal jet uncertainties tool for this systematic and do not use the PDSmeared initialised tool
572  switch (result) {
574  ATH_MSG_ERROR( "Failed to apply JES correction" );
575  break;
577  ATH_MSG_WARNING( "JES correction OutOfValidity range."); // Jet (pt,eta,phi) = (" << input.pt() << ", " << input.eta() << ", " << input.phi() << ")");
578  break;
579  default:
580  break;
581  }
582  }
583  }
584 
586  if ( (input.pt() > m_jetPt) || (input.pt() > 15e3) ) {
587  if(!isFat && m_currentSyst.name().find("PseudoData")){
588  // Use the PDSmeared uncertainties tool on the systematic with PseudoData in the name
590  switch (result) {
592  ATH_MSG_ERROR( "Failed to apply JES correction" );
593  break;
595  ATH_MSG_WARNING( "JES correction OutOfValidity range."); // Jet (pt,eta,phi) = (" << input.pt() << ", " << input.eta() << ", " << input.phi() << ")");
596  break;
597  default:
598  break;
599  }
600  }
601  }
602  }
603 
604 
605  ATH_MSG_VERBOSE( "jet (pt,eta,phi) after JES correction " << input.pt() << " " << input.eta() << " " << input.phi() );
606 
607  dec_passJvt(input) = !m_applyJVTCut || m_jetNNJvtSelectionTool->accept(&input);
608  dec_passFJvt(input) = !m_doFwdJVT || m_jetfJvtSelectionTool->accept(&input);
609  dec_baseline(input) = ( input.pt() > m_jetPt ) || ( input.pt() > 20e3 ); // Allows for setting m_jetPt < 20e3
610  dec_bad(input) = false;
611  dec_signal_less_JVT(input) = false;
612  dec_signal(input) = false;
613  dec_bjet_loose(input) = false;
614  dec_effscalefact(input) = 1.;
615 
616  //new state for OR . 0=non-baseline objects, 1=for baseline jets not passing JVT, 2=for any other baseline object
617  if (acc_baseline(input) ){
618  if( acc_passJvt(input) ) dec_selected(input) = 2;
619  else dec_selected(input) = 1;
620  }
621  else{
622  dec_selected(input) = 0;
623  }
624 
625  if (m_useBtagging && !m_orBtagWP.empty()) {
626  dec_bjet_loose(input) = this->IsBJetLoose(input);
627  }
628 
629  if (m_debug) {
630  ATH_MSG_INFO( "JET pt: " << input.pt() );
631  ATH_MSG_INFO( "JET eta: " << input.eta() );
632  ATH_MSG_INFO( "JET phi: " << input.phi() );
633  ATH_MSG_INFO( "JET E: " << input.e() );
634  ATH_MSG_INFO( "JET Ceta: " << input.jetP4(xAOD::JetConstitScaleMomentum).eta() );
635  ATH_MSG_INFO( "JET Cphi: " << input.jetP4(xAOD::JetConstitScaleMomentum).phi() );
636  ATH_MSG_INFO( "JET CE: " << input.jetP4(xAOD::JetConstitScaleMomentum).e() );
637  ATH_MSG_INFO( "JET Cm: " << input.jetP4(xAOD::JetConstitScaleMomentum).M() ); // fix-me M
638 
639  }
640 
641  return StatusCode::SUCCESS;
642  }

◆ FillMuon()

StatusCode ST::SUSYObjDef_xAOD::FillMuon ( xAOD::Muon input,
const float  ptcut,
const float  etacut 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 208 of file Muons.cxx.

208  {
209 
210  ATH_MSG_VERBOSE( "Starting FillMuon on mu with pt=" << input.pt() );
211 
212  dec_baseline(input) = false;
213  dec_selected(input) = 0;
214  dec_signal(input) = false;
215  dec_isol(input) = false;
216  dec_isolHighPt(input) = false;
217  dec_passedHighPtCuts(input) = false;
218  dec_passSignalID(input) = false;
219 
220  if (m_muEffCorrForce1D) {
221  dec_DFCommonJetDr(input) = -2.0;
222  } else if (!acc_DFCommonJetDr.isAvailable(input)) {
223  dec_dRJet(input) = -2.0;
224  }
225 
226  // don't bother calibrating or computing WP
227  if ( input.pt() < 3e3 ) return StatusCode::SUCCESS;
228 
229  ATH_MSG_VERBOSE( "MUON pt before calibration " << input.pt() );
230 
231  ATH_MSG_VERBOSE( "MUON eta = " << input.eta() );
232  ATH_MSG_VERBOSE( "MUON type = " << input.muonType() );
233  ATH_MSG_VERBOSE( "MUON author = " << input.author() );
234 
236  ATH_MSG_VERBOSE("FillMuon: applyCorrection out of validity range");
237  }
238 
239  ATH_MSG_VERBOSE( "MUON pt after calibration " << input.pt() );
240 
241  const xAOD::EventInfo* evtInfo = nullptr;
242  ATH_CHECK( evtStore()->retrieve( evtInfo, "EventInfo" ) );
243  const xAOD::Vertex* pv = this->GetPrimVtx();
244  double primvertex_z = pv ? pv->z() : 0;
245  //const xAOD::TrackParticle* track = input.primaryTrackParticle();
246  const xAOD::TrackParticle* track;
247  if (input.muonType() == xAOD::Muon::SiliconAssociatedForwardMuon) {
248  track = input.trackParticle(xAOD::Muon::CombinedTrackParticle);
249  if (!track) return StatusCode::SUCCESS; // don't treat SAF muons without CB track further
250  }
251  else {
252  track = input.primaryTrackParticle();
253  }
254 
255  //impact parameters (after applyCorrection() so to have the primaryTrack links restored in old buggy samples)
256  if (track){
257  dec_z0sinTheta(input) = (track->z0() + track->vz() - primvertex_z) * TMath::Sin(input.p4().Theta());
258  } else {
259  ATH_MSG_WARNING("FillMuon: Muon of pT and eta " << input.pt() << " MeV " << input.eta() << " has no associated track");
260  }
261  //protect against exception thrown for null or negative d0sig
262  try {
263  if (track)
264  dec_d0sig(input) = xAOD::TrackingHelpers::d0significance( track , evtInfo->beamPosSigmaX(), evtInfo->beamPosSigmaY(), evtInfo->beamPosSigmaXY() );
265  else
266  dec_d0sig(input) = -99.;
267  }
268  catch (...) {
269  float d0sigError = -99.;
270  ATH_MSG_WARNING("FillMuon : Exception caught from d0significance() calculation. Setting dummy decoration d0sig=" << d0sigError );
271  dec_d0sig(input) = d0sigError;
272  }
273 
274  if (m_debug) {
275  // Summary variables in
276  // /cvmfs/atlas.cern.ch/repo/sw/ASG/AnalysisBase/2.0.3/xAODTracking/Root/TrackSummaryAccessors_v1.cxx
277 
278  unsigned char nBLHits(0), nPixHits(0), nPixelDeadSensors(0), nPixHoles(0),
279  nSCTHits(0), nSCTDeadSensors(0), nSCTHoles(0), nTRTHits(0), nTRTOutliers(0);
280 
281  if (track){
282  track->summaryValue( nBLHits, xAOD::numberOfBLayerHits);
283  track->summaryValue( nPixHits, xAOD::numberOfPixelHits);
285  track->summaryValue( nPixHoles, xAOD::numberOfPixelHoles);
286 
287  track->summaryValue( nSCTHits, xAOD::numberOfSCTHits);
289  track->summaryValue( nSCTHoles, xAOD::numberOfSCTHoles);
290 
291  track->summaryValue( nTRTHits, xAOD::numberOfTRTHits);
292  track->summaryValue( nTRTOutliers, xAOD::numberOfTRTOutliers);
293  }
294 
295  ATH_MSG_INFO( "MUON pt: " << input.pt() );
296  ATH_MSG_INFO( "MUON eta: " << input.eta() );
297  ATH_MSG_INFO( "MUON phi: " << input.phi() );
298  ATH_MSG_INFO( "MUON comb: " << (input.muonType() == xAOD::Muon::Combined));
299  ATH_MSG_INFO( "MUON sTag: " << (input.muonType() == xAOD::Muon::SegmentTagged));
300  ATH_MSG_INFO( "MUON loose:" << (input.quality() == xAOD::Muon::Loose));
301  ATH_MSG_INFO( "MUON bHit: " << static_cast<int>( nBLHits ));
302  ATH_MSG_INFO( "MUON pHit: " << static_cast<int>( nPixHits ));
303  ATH_MSG_INFO( "MUON pDead:" << static_cast<int>( nPixelDeadSensors ));
304  ATH_MSG_INFO( "MUON pHole:" << static_cast<int>( nPixHoles ));
305  ATH_MSG_INFO( "MUON sHit: " << static_cast<int>( nSCTHits));
306  ATH_MSG_INFO( "MUON sDead:" << static_cast<int>( nSCTDeadSensors ));
307  ATH_MSG_INFO( "MUON sHole:" << static_cast<int>( nSCTHoles ));
308  ATH_MSG_INFO( "MUON tHit: " << static_cast<int>( nTRTHits ));
309  ATH_MSG_INFO( "MUON tOut: " << static_cast<int>( nTRTOutliers ));
310 
311  const xAOD::TrackParticle* idtrack =
312  input.trackParticle( xAOD::Muon::InnerDetectorTrackParticle );
313 
314  if ( !idtrack) {
315  ATH_MSG_VERBOSE( "No ID track!! " );
316  } else {
317  ATH_MSG_VERBOSE( "ID track pt: " << idtrack->pt());
318  }
319  }
320 
321  if ( !m_force_noMuId && !m_muonSelectionToolBaseline->accept(input)) return StatusCode::SUCCESS;
322 
323  if (input.pt() <= ptcut || std::abs(input.eta()) >= etacut) return StatusCode::SUCCESS;
324 
325  if (m_mubaselinez0>0. && std::abs(acc_z0sinTheta(input))>m_mubaselinez0) return StatusCode::SUCCESS;
326  if (m_mubaselined0sig>0. && std::abs(acc_d0sig(input))>m_mubaselined0sig) return StatusCode::SUCCESS;
327 
328  //--- Do baseline isolation check
329  if ( !( m_muBaselineIso_WP.empty() ) && !( m_isoBaselineTool->accept(input) ) ) return StatusCode::SUCCESS;
330 
331  dec_baseline(input) = true;
332  dec_selected(input) = 2;
333 
334  //disable if (!m_muIso_WP.empty() && m_muIso_WP.find("PLV")!=std::string::npos) ATH_CHECK( m_isoToolLowPtPLV->augmentPLV(input) );
335  if (!m_muIso_WP.empty()) dec_isol(input) = bool(m_isoTool->accept(input));
336  if (!m_muIsoHighPt_WP.empty()) dec_isolHighPt(input) = bool(m_isoHighPtTool->accept(input));
337  dec_passSignalID(input) = bool(m_muonSelectionTool->accept(input));
338 
339  ATH_MSG_VERBOSE("FillMuon: passed baseline selection");
340  return StatusCode::SUCCESS;
341 }

◆ FillPhoton()

StatusCode ST::SUSYObjDef_xAOD::FillPhoton ( xAOD::Photon input,
const float  ptcut,
const float  etacut 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 78 of file Photons.cxx.

78  {
79 
80  ATH_MSG_VERBOSE( "Starting FillPhoton on ph with pre-calibration pt=" << input.pt() );
81 
82  if ( !input.caloCluster() ) {
83  ATH_MSG_WARNING( "FillPhoton: no caloCluster found: " << input.caloCluster() );
84  return StatusCode::SUCCESS;
85  }
86 
87  //Check DeadHVCellRemoval
88  bool pass_deadHVTool = m_deadHVTool->accept(&input);
89 
90  if (m_debug) {
91  ATH_MSG_INFO( "PHOTON eta: " << input.eta() );
92  ATH_MSG_INFO( "PHOTON phi: " << input.phi() );
93  ATH_MSG_INFO( "PHOTON cl eta: " << input.caloCluster()->eta() );
94  ATH_MSG_INFO( "PHOTON cl phi: " << input.caloCluster()->phi() );
95  ATH_MSG_INFO( "PHOTON cl e: " << input.caloCluster()->e() );
96  ATH_MSG_INFO( "PHOTON OQ: " << input.OQ() );
97  ATH_MSG_INFO( "PHOTON author: " << input.author() );
98  ATH_MSG_INFO( "PHOTON deadHVTools: " << pass_deadHVTool );
99  }
100 
101  dec_baseline(input) = false;
102  dec_selected(input) = 0;
103  dec_isol(input) = false;
104  dec_isEM(input) = 0;
105 
106  if (!pass_deadHVTool) return StatusCode::SUCCESS;
107 
108  // Author cuts needed according to https://twiki.cern.ch/twiki/bin/view/AtlasProtected/EGammaIdentificationRun2#Photon_authors
110  return StatusCode::SUCCESS;
111 
112  // calibrate the photon 4-vector here only if within eta window
113  if (std::abs(input.caloCluster()->etaBE(2)) >= etacut) return StatusCode::SUCCESS;
114 
116  if ( std::abs( input.caloCluster()->etaBE(2) ) >1.37 && std::abs( input.caloCluster()->etaBE(2) ) <1.52) {
117  return StatusCode::SUCCESS;
118  }
119  }
120 
122  ATH_MSG_ERROR("FillPhoton: EgammaCalibTool applyCorrection failed");
123 
125  ATH_MSG_ERROR("FillPhoton: IsolationCorrectionTool applyCorrection failed");
126 
127  ATH_MSG_VERBOSE( "FillPhoton: post-calibration pt=" << input.pt() );
128 
129  if (input.pt() < ptcut) return StatusCode::SUCCESS;
130 
131  //Object quality cut as described at https://twiki.cern.ch/twiki/bin/view/AtlasProtected/EGammaIdentificationRun2#Object_quality_cut
133  return StatusCode::SUCCESS;
134 
135  //Photon quality as in https://twiki.cern.ch/twiki/bin/view/AtlasProtected/EGammaIdentificationRun2#Photon_cleaning
136  bool passPhCleaning = false;
137  if (acc_passPhCleaning.isAvailable(input) && acc_passPhCleaningNoTime.isAvailable(input)) {
138  if ( (!m_photonAllowLate && acc_passPhCleaning(input)) || (m_photonAllowLate && acc_passPhCleaningNoTime(input)) ) passPhCleaning = true;
139  } else {
140  ATH_MSG_VERBOSE ("DFCommonPhotonsCleaning is not found in DAOD..");
141  if ( (!m_photonAllowLate && PhotonHelpers::passOQquality(input)) ||
142  ( m_photonAllowLate && PhotonHelpers::passOQqualityDelayed(input)) ) passPhCleaning = true;
143  }
144  if (!passPhCleaning) return StatusCode::SUCCESS;
145 
146 
147  bool passBaseID = false;
148  if (m_acc_photonIdBaseline.isAvailable(input)) {
149  passBaseID = bool(m_acc_photonIdBaseline(input));
150  } else {
151  passBaseID = bool(m_photonSelIsEMBaseline->accept(&input));
152  }
153  if (!passBaseID) return StatusCode::SUCCESS;
154 
155  //--- Do baseline isolation check
156  if ( !( m_photonBaselineIso_WP.empty() ) && !( m_isoBaselineTool->accept(input) ) ) return StatusCode::SUCCESS;
157 
158  dec_baseline(input) = true;
159  dec_selected(input) = 2;
160  if (!m_photonIso_WP.empty()) dec_isol(input) = bool(m_isoTool->accept(input));
161 
162  ATH_MSG_VERBOSE("FillPhoton: passed baseline selection.");
163  return StatusCode::SUCCESS;
164 }

◆ FillTau()

StatusCode ST::SUSYObjDef_xAOD::FillTau ( xAOD::TauJet input)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 77 of file Taus.cxx.

77  {
78 
79  ATH_MSG_VERBOSE( "Starting FillTau on tau with pT = " << input.pt()/1000 << " GeV" );
80  ATH_MSG_VERBOSE( "TAU pT before smearing " << input.pt()/1000 << " GeV");
81 
82  // do truth matching first (required unless already done in AOD->DAOD and truth matching info kept in DAOD)
83  if (m_tauDoTTM && !isData()) m_tauTruthMatch->getTruth(input);
84  ATH_MSG_VERBOSE("Tau truth matching done");
85 
86  // apply the calibration to data as well (not needed in R22, unless MVA TES gets updated)
87  if (std::abs(input.eta()) <= 2.5 && input.nTracks() > 0) {
89  ATH_MSG_ERROR(" Tau smearing failed " );
90  } else { ATH_MSG_VERBOSE("Tau smearing done"); }
91  }
92 
93  ATH_MSG_VERBOSE( "TAU pt after smearing " << input.pt()/1000. );
94 
95  // if tauPrePtCut set, apply min pT cut here before calling tau selection tool
96  // (avoid exceptions when running on derivations with removed tracks for low-pT taus, e.g. HIGG4D2)
97  if (input.pt() > m_tauPrePtCut) {
98  dec_baseline(input) = bool(m_tauSelToolBaseline->accept( input ));
99  }
100  else {
101  dec_baseline(input) = false;
102  }
103  if (acc_baseline(input)) dec_selected(input) = 2;
104  else dec_selected(input) = 0;
105 
106  if (acc_baseline(input)) ATH_MSG_VERBOSE("FillTau: passed baseline selection");
107  else ATH_MSG_VERBOSE("FillTau: failed baseline selection");
108  return StatusCode::SUCCESS;
109 }

◆ FillTrackJet()

StatusCode ST::SUSYObjDef_xAOD::FillTrackJet ( xAOD::Jet input)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 644 of file Jets.cxx.

644  {
645 
646  ATH_MSG_VERBOSE( "Starting FillTrackJet on jet with pt=" << input.pt() );
647 
648  dec_btag_weight(input) = -999.;
649  dec_effscalefact(input) = 1.;
650 
651  if (m_defaultTrackJets == "AntiKtVR30Rmax4Rmin02TrackJets") {
652  // VR recommendation
653  // https://twiki.cern.ch/twiki/bin/view/AtlasProtected/BTagCalib2017#Recommendations_for_variable_rad
654  dec_baseline(input) = input.pt() >= 5e3 && input.numConstituents() >= 2;
655  if (m_trkJetPt < 10e3)
656  ATH_MSG_WARNING ("The pt threshold of VR jets you set is: " << m_trkJetPt/1000. << " GeV. But VR jets with pt < 10GeV are uncalibrated.");
657  dec_signal(input) = acc_baseline(input) && input.pt() >= m_trkJetPt && std::abs(input.eta()) <= m_trkJetEta;
658  dec_VRradius(input) = std::max(0.02,std::min(0.4,30000./input.pt()));
659  dec_passDRcut(input) = acc_signal(input);
660  } else {
661  dec_baseline(input) = input.pt() >= m_trkJetPt && std::abs(input.eta()) <= m_trkJetEta;
662  dec_signal(input) = acc_baseline(input);
663  }
664 
665  if (m_useBtagging_trkJet) {
666  if (m_BtagWP_trkJet != "Continuous") this->IsTrackBJet(input);
667  else this->IsTrackBJetContinuous(input);
668  }
669 
670  if (m_debug) {
671  ATH_MSG_INFO( "TRK JET pt: " << input.pt() );
672  ATH_MSG_INFO( "TRK JET eta: " << input.eta() );
673  ATH_MSG_INFO( "TRK JET phi: " << input.phi() );
674  ATH_MSG_INFO( "TRK JET E: " << input.e() );
675  }
676 
677  return StatusCode::SUCCESS;
678  }

◆ FindSusyHardProc() [1/2]

bool ST::SUSYObjDef_xAOD::FindSusyHardProc ( const xAOD::TruthEvent truthE,
int &  pdgid1,
int &  pdgid2 
)
static

Definition at line 227 of file Truth.cxx.

227  {
228 
229  pdgid1 = 0;
230  pdgid2 = 0;
231 
232  //go for TRUTH1-like ...
233  const xAOD::TruthParticle* firstsp(nullptr);
234  const xAOD::TruthParticle* secondsp(nullptr);
235 
236  for (unsigned int p=0; p < truthE->nTruthParticles(); ++p){
237 
238  const xAOD::TruthParticle* tp = truthE->truthParticle(p);
239 
240  //check ifSUSY particle
242 
243  if (tp->nParents() != 0) {
244  if ( !MC::isSUSY(tp->parent(0))) {
245  if (!firstsp) {
246  firstsp = tp;
247  } else if (!secondsp) {
248  secondsp = tp;
249  } else {
250  if (firstsp->nChildren() != 0 && HepMC::is_same_particle(tp,firstsp->child(0))) {
251  firstsp = tp;
252  }
253  else if (secondsp->nChildren() != 0 && HepMC::is_same_particle(tp,secondsp->child(0))) {
254  secondsp = tp;
255  }
256  else if (firstsp->nChildren() != 0 && HepMC::is_same_particle(firstsp->child(0),secondsp)) {
257  firstsp = secondsp;
258  secondsp = tp;
259  }
260  else if (secondsp->nChildren() != 0 && HepMC::is_same_particle(secondsp->child(0),firstsp)) {
261  secondsp = firstsp;
262  firstsp = tp;
263  }
264  }
265  }
266  }
267  }
268  }
269 
270  // quit if no sparticles found
271  if (!firstsp && !secondsp) return true; // should find none or two
272 
273  if (firstsp->nChildren() == 1) {
274  for (unsigned int p=0; p < truthE->nTruthParticles(); ++p){
275  const xAOD::TruthParticle* tp = truthE->truthParticle(p);
276  if (HepMC::is_same_particle(tp,firstsp->child(0)) && tp->pdgId() != firstsp->pdgId()) {
277  firstsp = tp;
278  break;
279  }
280  }
281  }
282 
283  if (secondsp->nChildren() == 1) {
284  for (unsigned int p=0; p < truthE->nTruthParticles(); ++p){
285  const xAOD::TruthParticle* tp = truthE->truthParticle(p);
286  if (HepMC::is_same_particle(tp,secondsp->child(0)) && tp->pdgId() != secondsp->pdgId()) {
287  secondsp = tp;
288  break;
289  }
290  }
291  }
292 
293  if (MC::isSUSY(firstsp)) pdgid1 = firstsp->pdgId();
294  if (MC::isSUSY(secondsp)) pdgid2 = secondsp->pdgId();
295 
296  // Return gracefully:
297  return true;
298 }

◆ FindSusyHardProc() [2/2]

bool ST::SUSYObjDef_xAOD::FindSusyHardProc ( const xAOD::TruthParticleContainer truthP,
int &  pdgid1,
int &  pdgid2,
bool  isTruth3 = false 
)
static

Definition at line 126 of file Truth.cxx.

126  {
127 
128  pdgid1 = 0;
129  pdgid2 = 0;
130 
131  //check for TRUTH3 structure first
132  if(isTruth3){
133  if(!truthP || truthP->size()<2){
134  return false;
135  }
136 
137  //get ID of first two BSM particles
138  pdgid1 = (*truthP)[0]->pdgId();
139  pdgid2 = (*truthP)[1]->pdgId();
140  return true;
141  }
142 
143  //go for TRUTH1-like if not...
144  const xAOD::TruthParticle* firstsp(nullptr);
145  const xAOD::TruthParticle* secondsp(nullptr);
146 
147  if (!truthP || truthP->empty()) {
148  return false;
149  }
150  for (const xAOD::TruthParticle* tp : *truthP) {
152 
153  if (tp->nParents() != 0) {
154 
155  if ( !MC::isSUSY(tp->parent(0))) {
156  if (!firstsp) {
157  firstsp = tp;
158  } else if (!secondsp) {
159  secondsp = tp;
160  } else {
161  if (firstsp->nChildren() != 0 && HepMC::is_same_particle(tp,firstsp->child(0))) {
162  firstsp = tp;
163  }
164  else if (secondsp->nChildren() != 0 && HepMC::is_same_particle(tp,secondsp->child(0))) {
165  secondsp = tp;
166  }
167  else if (firstsp->nChildren() != 0 && HepMC::is_same_particle(firstsp->child(0),secondsp)) {
168  firstsp = secondsp;
169  secondsp = tp;
170  }
171  else if (secondsp->nChildren() != 0 && HepMC::is_same_particle(secondsp->child(0),firstsp)) {
172  secondsp = firstsp;
173  firstsp = tp;
174  }
175  }
176  }
177  }
178  }
179  }
180 
181  // quit if no sparticles found
182  if (!firstsp && !secondsp) return true; // should find none or two
183 
184  if (firstsp->nChildren() == 1) {
185  for (const xAOD::TruthParticle* tp : *truthP) {
186  if (HepMC::is_same_particle(tp,firstsp->child(0)) && tp->pdgId() != firstsp->pdgId()) {
187  firstsp = tp;
188  break;
189  }
190  }
191  }
192 
193  if (secondsp->nChildren() == 1) {
194  for (const xAOD::TruthParticle* tp : *truthP) {
195  if (HepMC::is_same_particle(tp,secondsp->child(0)) && tp->pdgId() != secondsp->pdgId()) {
196  secondsp = tp;
197  break;
198  }
199  }
200  }
201 
202  if (MC::isSUSY(firstsp)) pdgid1 = firstsp->pdgId();
203  if (MC::isSUSY(secondsp)) pdgid2 = secondsp->pdgId();
204 
205  // Return gracefully:
206  return true;
207 }

◆ FindSusyHP() [1/3]

StatusCode ST::SUSYObjDef_xAOD::FindSusyHP ( const xAOD::TruthEvent truthE,
int &  pdgid1,
int &  pdgid2 
) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 210 of file Truth.cxx.

210  {
211 
212  if (!truthE) {
213  ATH_MSG_ERROR("Null TruthEvent pointer!!");
214  return StatusCode::FAILURE;
215  }
216  if ( !SUSYObjDef_xAOD::FindSusyHardProc(truthE, pdgid1, pdgid2) ) {
217  ATH_MSG_ERROR("Problem finding SUSY hard process");
218  return StatusCode::FAILURE;
219  }
220  if (pdgid1 == 0 || pdgid2 == 0) {
221  ATH_MSG_DEBUG("No sparticles found!");
222  }
223  return StatusCode::SUCCESS;
224 }

◆ FindSusyHP() [2/3]

StatusCode ST::SUSYObjDef_xAOD::FindSusyHP ( const xAOD::TruthParticleContainer truthP,
int &  pdgid1,
int &  pdgid2,
bool  isTruth3 = false 
) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 106 of file Truth.cxx.

106  {
107  if (!truthP) {
108  ATH_MSG_ERROR("Null TruthParticleContainer pointer!!");
109  return StatusCode::FAILURE;
110  }
111  if (truthP->empty()) {
112  ATH_MSG_ERROR("Empty TruthParticleContainer!!");
113  return StatusCode::FAILURE;
114  }
115  if ( !SUSYObjDef_xAOD::FindSusyHardProc(truthP, pdgid1, pdgid2, isTruth3) ) {
116  ATH_MSG_ERROR("Problem finding SUSY hard process");
117  return StatusCode::FAILURE;
118  }
119  if (pdgid1 == 0 || pdgid2 == 0) {
120  ATH_MSG_DEBUG("No sparticles found!");
121  }
122  return StatusCode::SUCCESS;
123 }

◆ FindSusyHP() [3/3]

StatusCode ST::SUSYObjDef_xAOD::FindSusyHP ( int &  pdgid1,
int &  pdgid2 
) const

Definition at line 76 of file Truth.cxx.

76  {
77 
78  const xAOD::TruthParticleContainer* truthP = nullptr;
79  bool isTruth3 = false;
80  std::string key_T1 = "TruthParticles";
81  std::string key_T3 = "TruthBSM";
82 
83  ATH_MSG_DEBUG("Contains " << key_T1 << ": " << ((evtStore()->contains<xAOD::TruthParticleContainer>( key_T1 ))?1:0));
84  ATH_MSG_DEBUG("Contains " << key_T3 << ": " << ((evtStore()->contains<xAOD::TruthParticleContainer>( key_T3 ))?1:0));
85 
86  if(evtStore()->contains<xAOD::TruthParticleContainer>( key_T1 )){
87  ATH_CHECK( evtStore()->retrieve(truthP, key_T1) );
88  ATH_MSG_DEBUG("Retrieved " << key_T1 << " : size = " << truthP->size());
89  if (truthP->empty()) { ATH_MSG_WARNING(key_T1 << " is empty. Skipping FindSusyHP."); return StatusCode::SUCCESS; }
90  }
91  else if(evtStore()->contains<xAOD::TruthParticleContainer>( key_T3 )){
92  isTruth3=true;
93  ATH_CHECK( evtStore()->retrieve(truthP, key_T3) );
94  ATH_MSG_DEBUG("Retrieved " << key_T3 << " : size = " << truthP->size());
95  if (truthP->empty()) { ATH_MSG_WARNING(key_T3 << " is empty. Skipping FindSusyHP."); return StatusCode::SUCCESS; }
96  }
97  else {
98  ATH_MSG_WARNING("Neither " << key_T1 << " nor " << key_T3 << " are avaible. Skipping FindSusyHP.");
99  return StatusCode::SUCCESS;
100  }
101 
102  return SUSYObjDef_xAOD::FindSusyHP(truthP, pdgid1, pdgid2, isTruth3);
103 }

◆ FJVT_SF()

double ST::SUSYObjDef_xAOD::FJVT_SF ( const xAOD::JetContainer jets)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 1061 of file Jets.cxx.

1061  {
1062 
1063  float totalSF = 1.;
1064  if (!m_doFwdJVT) return totalSF;
1065 
1067  for (const xAOD::Jet* jet : *jets) {
1068  // Only jets that were good for every cut except JVT
1069  if (acc_signal_less_JVT(*jet) && acc_passOR(*jet)) {
1070  fjvtjets.push_back(jet);
1071  }
1072  }
1073 
1074  for (const xAOD::Jet* jet : fjvtjets) {
1075  float current_sf = 0;
1076 
1077  // the SF are only applied for HS jets and implicitely requires the presense of the isHS decoration
1079  if (acc_passFJvt(*jet)) {
1081  }
1082  else {
1084  }
1085 
1086  switch (result) {
1088  // this is probably not right, should report an error here
1089  ATH_MSG_ERROR("Inexplicably failed fJVT calibration" );
1090  break;
1092  // no fJvt SF for jet, that is ok e.g. for jets with |eta| < 2.5
1093  ATH_MSG_VERBOSE( "Skip SF application in SUSYTools_xAOD::FJVT_SF as jet outside validate range" );
1094  break;
1095  default:
1096  ATH_MSG_VERBOSE( "Retrieve SF for jet in SUSYTools_xAOD::FJVT_SF with value " << current_sf );
1097  totalSF *= current_sf;
1098  }
1099 
1100  }
1101 
1102  ATH_MSG_VERBOSE( "Retrieve total SF for jet container in SUSYTools_xAOD::FJVT_SF with value " << totalSF );
1103 
1104  return totalSF;
1105  }

◆ FJVT_SFsys()

double ST::SUSYObjDef_xAOD::FJVT_SFsys ( const xAOD::JetContainer jets,
const CP::SystematicSet systConfig 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 1107 of file Jets.cxx.

1107  {
1108 
1109  float totalSF = 1.;
1110  if (!m_doFwdJVT) return totalSF;
1111 
1112  //Set the new systematic variation
1114  if ( ret != StatusCode::SUCCESS) {
1115  ATH_MSG_ERROR("Cannot configure fJvtEfficiencyTool for systematic var. " << systConfig.name() );
1116  }
1117 
1118  // Delegate
1119  totalSF = SUSYObjDef_xAOD::FJVT_SF( jets );
1120 
1121  if (m_doFwdJVT) {
1123  if ( ret != StatusCode::SUCCESS) {
1124  ATH_MSG_ERROR("Cannot configure fJvtEfficiencyTool for systematic var. " << systConfig.name() );
1125  }
1126  }
1127 
1128  return totalSF;
1129  }

◆ GetCorrectedActualInteractionsPerCrossing()

float ST::SUSYObjDef_xAOD::GetCorrectedActualInteractionsPerCrossing ( bool  includeDataSF = false)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 3035 of file SUSYObjDef_xAOD.cxx.

3035  {
3036  const xAOD::EventInfo* evtInfo = GetEventInfo();
3037  return m_prwTool->getCorrectedActualInteractionsPerCrossing( *evtInfo, includeDataSF );
3038 }

◆ GetCorrectedAverageInteractionsPerCrossing()

float ST::SUSYObjDef_xAOD::GetCorrectedAverageInteractionsPerCrossing ( bool  includeDataSF = false)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 3030 of file SUSYObjDef_xAOD.cxx.

3030  {
3031  const xAOD::EventInfo* evtInfo = GetEventInfo();
3032  return m_prwTool->getCorrectedAverageInteractionsPerCrossing( *evtInfo, includeDataSF );
3033 }

◆ GetDataWeight()

float ST::SUSYObjDef_xAOD::GetDataWeight ( const std::string &  trig)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 3025 of file SUSYObjDef_xAOD.cxx.

3025  {
3026  const xAOD::EventInfo* evtInfo = GetEventInfo();
3027  return m_prwTool->getDataWeight( *evtInfo, trig );
3028 }

◆ getDefaultJetUncConfig()

std::string ST::SUSYObjDef_xAOD::getDefaultJetUncConfig ( )
protected

Definition at line 1835 of file SUSYObjDef_xAOD.cxx.

1835  {
1836  if (m_isRun3)
1837  return isAtlfast() ? "rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC23.config" : "rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC23.config";
1838  else
1839  return isAtlfast() ? "rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC20_MC21.config" : "rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC20_MC21.config";
1840 }

◆ GetElectrons()

StatusCode ST::SUSYObjDef_xAOD::GetElectrons ( xAOD::ElectronContainer *&  copy,
xAOD::ShallowAuxContainer *&  copyaux,
const bool  recordSG = true,
const std::string &  elekey = "Electrons",
const std::string &  lrtelekey = "LRTElectrons",
const xAOD::ElectronContainer containerToBeCopied = nullptr 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 118 of file Electrons.cxx.

119 {
120  if (!m_tool_init) {
121  ATH_MSG_ERROR("SUSYTools was not initialized!!");
122  return StatusCode::FAILURE;
123  }
124 
125  // Initializing prompt/LRT OR procedure
126  auto outputCol = std::make_unique<xAOD::ElectronContainer>();
127  std::unique_ptr<xAOD::ElectronAuxContainer> outputAuxCol;
128  outputAuxCol = std::make_unique<xAOD::ElectronAuxContainer>();
129  outputCol->setStore(outputAuxCol.get());
131 
132  if (bool(m_eleLRT) && !lrtelekey.empty() && evtStore()->contains<xAOD::ElectronContainer>(lrtelekey)){
133  ATH_MSG_DEBUG("Applying prompt/LRT electron OR procedure");
134 
135  // First identify if merged container has already been made (for instances where GetElectrons() is called more than once)
136  if (evtStore()->contains<xAOD::ElectronContainer>("StdWithLRTElectrons")) {
137  ATH_MSG_DEBUG("Merged prompt/LRT container already created in TStore");
138  } else {
139  ATH_MSG_DEBUG("Creating merged prompt/LRT container in TStore");
140 
141  // Retrieve prompt and LRT electrons from TStore
143  ATH_CHECK( evtStore()->retrieve(lrt_electrons, lrtelekey) );
144 
145  // Remove LRT electrons as flagged by filter for uncertainty
146  auto filtered_electrons = std::make_unique<xAOD::ElectronContainer>();
147  std::unique_ptr<xAOD::ElectronAuxContainer> filtered_electrons_aux = std::make_unique<xAOD::ElectronAuxContainer>();
148  filtered_electrons->setStore(filtered_electrons_aux.get());
149  ATH_CHECK(prepareLRTElectrons(lrt_electrons, filtered_electrons.get()));
150 
151  // Check overlap between prompt and LRT collections
152  std::set<const xAOD::Electron *> ElectronsToRemove;
153  m_elecLRTORTool->checkOverlap(*prompt_electrons, *filtered_electrons, ElectronsToRemove);
154 
155  // Decorate electrons with prompt/LRT
156  for (const xAOD::Electron* el : *prompt_electrons) dec_isLRT(*el) = 0;
157  for (const xAOD::Electron* el : *filtered_electrons) dec_isLRT(*el) = 1;
158 
159  // Create merged StdWithLRTElectrons container
160  outputCol->reserve(prompt_electrons->size() + filtered_electrons->size());
161  ATH_CHECK(MergeElectrons(*prompt_electrons, outputCol.get(), ElectronsToRemove ));
162  ATH_CHECK(MergeElectrons(*filtered_electrons, outputCol.get(), ElectronsToRemove ));
163 
164  // Save merged StdWithLRTElectrons container to TStore
165  ATH_CHECK(evtStore()->record(std::move(outputCol), m_outElectronLocation.key()));
166  ATH_CHECK(evtStore()->record(std::move(outputAuxCol), m_outElectronLocation.key() + "Aux.") );
167  }
168  } else if (!lrtelekey.empty()) {
169  if(evtStore()->contains<xAOD::ElectronContainer>(lrtelekey) == false && bool(m_eleLRT) == true) ATH_MSG_WARNING("prompt/LRT OR procedure attempted but " << lrtelekey << " not in ROOT file, check config!");
170  ATH_MSG_DEBUG("Not applying prompt/LRT electron OR procedure");
171  }
172 
173  if (m_isPHYSLITE && elekey.find("AnalysisElectrons")==std::string::npos){
174  ATH_MSG_ERROR("You are running on PHYSLITE derivation. Please change the Electrons container to 'AnalysisElectrons'");
175  return StatusCode::FAILURE;
176  }
177 
178  const xAOD::ElectronContainer* electrons = nullptr;
179  if (bool(m_eleLRT) && evtStore()->contains<xAOD::ElectronContainer>(lrtelekey)){
180  ATH_MSG_DEBUG("Using container: " << m_outElectronLocation.key());
182  }
183  else {
184  if (copy==nullptr) { // empty container provided
185  ATH_MSG_DEBUG("Empty container provided");
186  if (containerToBeCopied != nullptr) {
187  ATH_MSG_DEBUG("Containter to be copied not nullptr");
188  electrons = containerToBeCopied;
189  }
190  else {
191  ATH_MSG_DEBUG("Getting Electrons collection");
192  ATH_CHECK( evtStore()->retrieve(electrons, elekey) );
193  }
194  }
195  }
196 
197  if (copy==nullptr) { // empty container provided
198  std::pair<xAOD::ElectronContainer*, xAOD::ShallowAuxContainer*> shallowcopy = xAOD::shallowCopyContainer(*electrons);
199  copy = shallowcopy.first;
200  copyaux = shallowcopy.second;
201  bool setLinks = xAOD::setOriginalObjectLink(*electrons, *copy);
202  if (!setLinks) {
203  ATH_MSG_WARNING("Failed to set original object links on " << elekey);
204  }
205  } else { // use the user-supplied collection instead
206  ATH_MSG_DEBUG("Not retrieving electron collection, using existing one provided by user");
207  electrons=copy; // this does nothing
208  }
209 
210  for (const auto electron : *copy) {
213  }
214 
215  if (recordSG) {
216  ATH_CHECK( evtStore()->record(copy, "STCalib" + elekey + m_currentSyst.name()) );
217  ATH_CHECK( evtStore()->record(copyaux, "STCalib" + elekey + m_currentSyst.name() + "Aux.") );
218  }
219  return StatusCode::SUCCESS;
220 }

◆ GetEleTriggerEfficiency()

double ST::SUSYObjDef_xAOD::GetEleTriggerEfficiency ( const xAOD::Electron el,
const std::string &  trigExpr = "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" 
) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 592 of file Electrons.cxx.

592  {
593 
594  std::string single_str = "SINGLE_E";
595  std::string single_Run3 = "202";
596  std::string dilep_str = "DI_E";
597  std::string multi_str = "MULTI_L";
598 
599  double trig_eff(1.);
600 
602  if ( trigExpr.find(single_str) != std::string::npos || trigExpr.find(single_Run3) != std::string::npos)
604  else if ( trigExpr.find(dilep_str) != std::string::npos )
605  ATH_MSG_ERROR( "Use GetTriggerGlobalEfficiency for logical OR of lepton triggers");
606  else if ( trigExpr.find(multi_str) != std::string::npos )
607  ATH_MSG_ERROR( "Use GetTriggerGlobalEfficiency for logical OR of lepton triggers");
608  else
609  ATH_MSG_ERROR( "The trigger expression (" << trigExpr << ") is not supported by the electron trigger efficiency!");
610 
611  switch (result) {
613  ATH_MSG_ERROR( "Failed to retrieve signal electron trigger efficiency");
614  return 1.;
616  ATH_MSG_VERBOSE( "OutOfValidityRange found for signal electron trigger efficiency");
617  return 1.;
618  default:
619  break;
620  }
621 
622  return trig_eff;
623 }

◆ GetEleTriggerEfficiencySF()

double ST::SUSYObjDef_xAOD::GetEleTriggerEfficiencySF ( const xAOD::Electron el,
const std::string &  trigExpr = "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" 
) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 558 of file Electrons.cxx.

558  {
559 
560  double trig_sf(1.);
561 
562  std::string single_str = "SINGLE_E";
563  std::string single_Run3 = "202";
564  std::string dilep_str = "DI_E";
565  std::string multi_str = "MULTI_L";
566 
568  if ( trigExpr.find(single_str) != std::string::npos || trigExpr.find(single_Run3) != std::string::npos)
570  else if ( trigExpr.find(dilep_str) != std::string::npos )
571  ATH_MSG_ERROR( "Use GetTriggerGlobalEfficiency for logical OR of lepton triggers");
572  else if ( trigExpr.find(multi_str) != std::string::npos )
573  ATH_MSG_ERROR( "Use GetTriggerGlobalEfficiency for logical OR of lepton triggers");
574  else
575  ATH_MSG_ERROR( "The trigger expression (" << trigExpr << ") is not supported by the electron trigger SF!");
576 
577  switch (result) {
579  ATH_MSG_ERROR( "Failed to retrieve signal electron trigger SF");
580  return 1.;
582  ATH_MSG_VERBOSE( "OutOfValidityRange found for signal electron trigger SF");
583  return 1.;
584  default:
585  break;
586  }
587 
588  return trig_sf;
589 }

◆ getElSFkeys()

std::vector< std::string > ST::SUSYObjDef_xAOD::getElSFkeys ( const std::string &  mapFile) const
protected

Definition at line 1239 of file SUSYObjDef_xAOD.cxx.

1239  {
1240 
1241  if( mapFile.empty() )
1242  return {};
1243 
1244  std::vector<std::string> theKeys;
1245 
1246  std::string filename = PathResolverFindCalibFile(mapFile);
1247  std::ifstream input( filename );
1248  for( std::string line; getline( input, line ); ){
1249  std::vector<std::string> tokens = split((const std::string)line,"=");
1250  if(tokens.size()){
1251  theKeys.push_back(tokens.at(0));
1252  }
1253  }
1254 
1255  return theKeys;
1256 }

◆ GetEventInfo()

const xAOD::EventInfo * ST::SUSYObjDef_xAOD::GetEventInfo ( ) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 2987 of file SUSYObjDef_xAOD.cxx.

2987  {
2988  const xAOD::EventInfo* evtInfo = nullptr;
2989  if ( evtStore()->retrieve( evtInfo, "EventInfo" ).isFailure() ) {
2990  throw std::runtime_error("Unable to fetch EventInfo.");
2991  }
2992  return evtInfo;
2993 }

◆ GetFatJets()

StatusCode ST::SUSYObjDef_xAOD::GetFatJets ( xAOD::JetContainer *&  copy,
xAOD::ShallowAuxContainer *&  copyaux,
const bool  recordSG = false,
const std::string &  jetkey = "",
const bool  doLargeRdecorations = false,
const xAOD::JetContainer containerToBeCopied = nullptr 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 243 of file Jets.cxx.

244  {
245  if (!m_tool_init) {
246  ATH_MSG_ERROR("SUSYTools was not initialized!!");
247  return StatusCode::FAILURE;
248  }
249 
250  if (m_fatJets.empty()) {
251  ATH_MSG_ERROR("JetFatCalibTool was not initialized for largeR jet!!");
252  return StatusCode::FAILURE;
253  }
254 
255  std::string jetkey_tmp = jetkey;
256  if (jetkey.empty()) {
257  jetkey_tmp = m_fatJets;
258  }
259 
260  const xAOD::JetContainer* jets = nullptr;
261  if (copy==nullptr) { // empty container provided
262  if (containerToBeCopied != nullptr) {
263  jets = containerToBeCopied;
264  }
265  else {
266  ATH_MSG_DEBUG("Retrieve jet collection: " << jetkey_tmp);
267  ATH_CHECK( evtStore()->retrieve(jets, jetkey_tmp) );
268  }
269 
270  std::pair<xAOD::JetContainer*, xAOD::ShallowAuxContainer*> shallowcopy = xAOD::shallowCopyContainer(*jets);
271  copy = shallowcopy.first;
272  copyaux = shallowcopy.second;
273  bool setLinks = xAOD::setOriginalObjectLink(*jets, *copy);
274  if (!setLinks) {
275  ATH_MSG_WARNING("Failed to set original object links on " << jetkey_tmp);
276  }
277  } else { // use the user-supplied collection instead
278  ATH_MSG_DEBUG("Not retrieving jet collection, using existing one provided by user");
279  jets=copy;
280  }
281 
282  if(jets->size()==0) {
283  ATH_MSG_DEBUG("Large R jet collection is empty");
284  return StatusCode::SUCCESS;
285  }
286 
287  // Calibrate the jets - only insitu for data for now
289 
290 
291  if (!isData() && !m_JetTruthLabelName.empty()){
292  ATH_MSG_DEBUG("Checking if decorator for JetTruthLabelingTool is available:");
293  std::string fatjetcoll = m_fatJets;
294  m_label_truthKey = fatjetcoll+"."+m_JetTruthLabelName;
296  ATH_MSG_DEBUG("Reading JetTruthLabelingTool truthKey:" << m_label_truthKey << " isAvailable " << labelHandle_truthKey.isAvailable());
297  // Truth Labeling (MC only)
298  if (!labelHandle_truthKey.isAvailable() && !m_isPHYSLITE) ATH_CHECK(m_jetTruthLabelingTool->decorate(*copy));
299  }
300 
301 
302  for (const auto jet : *copy) {
303 
304  ATH_CHECK( this->FillJet(*jet, true, true, doLargeRdecorations) );
305  //
306  // For OR, selected if it passed cuts
307  if ( acc_baseline(*jet) ){
308  dec_selected(*jet) = 1;
309  }
310  else{
311  dec_selected(*jet) = 0;
312  }
313  }
314  if (recordSG) {
315  ATH_CHECK( evtStore()->record(copy, "STCalib" + jetkey_tmp + m_currentSyst.name()) );
316  ATH_CHECK( evtStore()->record(copyaux, "STCalib" + jetkey_tmp + m_currentSyst.name() + "Aux.") );
317  }
318  return StatusCode::SUCCESS;
319  }

◆ GetInDetLargeD0GSFTracks()

const xAOD::TrackParticleContainer & ST::SUSYObjDef_xAOD::GetInDetLargeD0GSFTracks ( const EventContext &  ctx) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 3094 of file SUSYObjDef_xAOD.cxx.

3094  {
3096 
3097  if ( !tracks.isValid() ) {
3098  throw std::runtime_error("Unable to fetch LargeD0 GSF tracks.");
3099  }
3100  return *tracks;
3101 }

◆ GetInDetLargeD0Tracks()

const xAOD::TrackParticleContainer & ST::SUSYObjDef_xAOD::GetInDetLargeD0Tracks ( const EventContext &  ctx) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 3082 of file SUSYObjDef_xAOD.cxx.

3082  {
3084 
3085  if ( !tracks.isValid() ) {
3086  throw std::runtime_error("Unable to fetch LargeD0 tracks.");
3087  }
3088 
3089  //const xAOD::TrackParticleContainer out = *tracks;
3090 
3091  return *tracks;
3092 }

◆ GetJets()

StatusCode ST::SUSYObjDef_xAOD::GetJets ( xAOD::JetContainer *&  copy,
xAOD::ShallowAuxContainer *&  copyaux,
const bool  recordSG = true,
const std::string &  jetkey = "",
const xAOD::JetContainer containerToBeCopied = nullptr 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 74 of file Jets.cxx.

75  {
76  if (!m_tool_init) {
77  ATH_MSG_ERROR("SUSYTools was not initialized!!");
78  return StatusCode::FAILURE;
79  }
80 
81  if (m_isPHYSLITE && jetkey.find("AnalysisJets") == std::string::npos){
82  ATH_MSG_ERROR("You are running on PHYSLITE derivation. Please change the Jets container to 'AnalysisJets'");
83  return StatusCode::FAILURE;
84  }
85 
86  ATH_MSG_DEBUG("Default jetkey: " << m_defaultJets);
87  ATH_MSG_DEBUG("Function argument jetkey: " << jetkey);
88 
89  // load default regular & btag jet keys
90  std::string jetkey_tmp = m_defaultJets; // use default for regular jetkey_tmp
91 
92  // override default if user is passing a jetkey
93  if (!jetkey.empty()) {
94  jetkey_tmp = jetkey;
95  }
96 
97  // final settings
98  ATH_MSG_DEBUG("Key for retrieving jet collection: jetkey = " << jetkey_tmp);
99 
100  const xAOD::JetContainer* jets = nullptr;
101  if (copy==nullptr) { // empty container provided
102  if (containerToBeCopied != nullptr) {
103  jets = containerToBeCopied;
104  }
105  else {
106  ATH_MSG_DEBUG("Retrieve jet collection: " << jetkey_tmp);
107  ATH_CHECK( evtStore()->retrieve(jets, jetkey_tmp) );
108  }
109  std::pair<xAOD::JetContainer*, xAOD::ShallowAuxContainer*> shallowcopy = xAOD::shallowCopyContainer(*jets);
110  copy = shallowcopy.first;
111  copyaux = shallowcopy.second;
112  bool setLinks = xAOD::setOriginalObjectLink(*jets, *copy);
113  if (!setLinks) {
114  ATH_MSG_WARNING("Failed to set original object links on " << jetkey_tmp);
115  }
116  } else { // use the user-supplied collection instead
117  ATH_MSG_DEBUG("Not retrieving jet collecton, using existing one provided by user");
118  jets = copy;
119  }
120 
121  // Calibrate the jets
123 
124  // Add isHS labels to jets (required for JvtEfficiencyTools)
125  if (!isData()) {
127  }
128 
129  // Calculate Jvt scores (required by METSignificance)
130  for (const auto jet : *copy) {
131  dec_jvt(*jet) = m_jetJvtMomentTool->updateJvt(*jet);
132  }
133 
134  // Re-calculate NNJvt scores
136 
137  // Update the jets
138  for (const auto jet : *copy) {
139  ATH_CHECK( this->FillJet(*jet) );
140  }
141 
142  for (const auto jet : *copy) {
143  // Update the JVT decorations if needed
144  if( m_doFwdJVT){
145  dec_passJvt(*jet) = acc_passFJvt(*jet) && acc_passJvt(*jet);
146  dec_fjvt(*jet) = acc_fjvt(*jet);
147 
148  //new state for OR . 0=non-baseline objects, 1=for baseline jets not passing JVT, 2=for any other baseline object
149  if ( acc_baseline(*jet) ){
150  if( acc_passJvt(*jet) ) dec_selected(*jet) = 2;
151  else dec_selected(*jet) = 1;
152  }
153  else{
154  dec_selected(*jet) = 0;
155  }
156  }
157  this->IsBadJet(*jet);
158  this->IsSignalJet(*jet, m_jetPt, m_jetEta);
159  if (!isData())this->IsTruthBJet(*jet);
160  }
161  if (recordSG) {
162  std::string auxname = copyaux->name();
163  if (auxname.compare("UNKNOWN")==0) copyaux->setName(std::string("STCalib" + jetkey_tmp + m_currentSyst.name() + "AuxCopy").c_str());
164  ATH_CHECK( evtStore()->record(copy, "STCalib" + jetkey_tmp + m_currentSyst.name()) );
165  ATH_CHECK( evtStore()->record(copyaux, "STCalib" + jetkey_tmp + m_currentSyst.name() + "Aux.") );
166  }
167  return StatusCode::SUCCESS;
168  }

◆ GetJetsSyst()

StatusCode ST::SUSYObjDef_xAOD::GetJetsSyst ( const xAOD::JetContainer calibjets,
xAOD::JetContainer *&  copy,
xAOD::ShallowAuxContainer *&  copyaux,
const bool  recordSG = true,
const std::string &  jetkey = "" 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 322 of file Jets.cxx.

323  {
324  if (!m_tool_init) {
325  ATH_MSG_ERROR("SUSYTools was not initialized!!");
326  return StatusCode::FAILURE;
327  }
328 
329  std::string jetkey_tmp = jetkey;
330  if (jetkey.empty()) {
331  jetkey_tmp = m_defaultJets;
332  }
333 
334  std::pair<xAOD::JetContainer*, xAOD::ShallowAuxContainer*> shallowcopy = xAOD::shallowCopyContainer(calibjets);
335  copy = shallowcopy.first;
336  copyaux = shallowcopy.second;
337 
338  bool setLinks = xAOD::setOriginalObjectLink(calibjets, *copy);
339  if (!setLinks) {
340  ATH_MSG_WARNING("Failed to set original object links on " << jetkey_tmp);
341  }
342 
343  // ghost associate the muons to the jets (needed by MET muon-jet OR later)
344  ATH_MSG_VERBOSE("Run muon-to-jet ghost association");
345  const xAOD::MuonContainer* muons = nullptr;
346  // Do a little guessing
347  if (jetkey!="AnalysisJets"){
348  ATH_CHECK( evtStore()->retrieve(muons, "Muons") );
349  } else {
350  ATH_CHECK( evtStore()->retrieve(muons, "AnalysisMuons") );
351  }
352  met::addGhostMuonsToJets(*muons, *copy);
353 
354  // Update the jets
355  for (const auto jet : *copy) {
356  ATH_CHECK( this->FillJet(*jet, false) );
357  }
358 
359  for (const auto jet : *copy) {
360  // Update the JVT decorations if needed
361  if( m_doFwdJVT){
362  dec_passJvt(*jet) = acc_passFJvt(*jet) && acc_passJvt(*jet);
363 
364  //new state for OR . 0=non-baseline objects, 1=for baseline jets not passing JVT, 2=for any other baseline object
365  if ( acc_baseline(*jet) ){
366  if( acc_passJvt(*jet) ) dec_selected(*jet) = 2;
367  else dec_selected(*jet) = 1;
368  }
369  else{
370  dec_selected(*jet) = 0;
371  }
372  }
373  this->IsBadJet(*jet);
374  this->IsSignalJet(*jet, m_jetPt, m_jetEta);
375  if (!isData())this->IsTruthBJet(*jet);
376  }
377  if (recordSG) {
378  ATH_CHECK( evtStore()->record(copy, "STCalib" + jetkey_tmp + m_currentSyst.name()) );
379  ATH_CHECK( evtStore()->record(copyaux, "STCalib" + jetkey_tmp + m_currentSyst.name() + "Aux.") );
380  }
381  return StatusCode::SUCCESS;
382  }

◆ getKey()

SG::sgkey_t asg::AsgTool::getKey ( const void *  ptr) const
inherited

Get the (hashed) key of an object that is in the event store.

This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the SG::sgkey_t key for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.

In order to allow tools to efficiently perform this operation, they can use this helper function.

See also
asg::AsgTool::getName
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The hashed key of the object in the store. If not found, an invalid (zero) key.

Definition at line 119 of file AsgTool.cxx.

119  {
120 
121 #ifdef XAOD_STANDALONE
122  // In case we use @c xAOD::TEvent, we have a direct function call
123  // for this.
124  return evtStore()->event()->getKey( ptr );
125 #else
126  const SG::DataProxy* proxy = evtStore()->proxy( ptr );
127  return ( proxy == nullptr ? 0 : proxy->sgkey() );
128 #endif // XAOD_STANDALONE
129  }

◆ getMCShowerType()

int ST::SUSYObjDef_xAOD::getMCShowerType ( const std::string &  sample_name = "",
const std::string &  tagger = "" 
) const
inlinefinaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 428 of file SUSYObjDef_xAOD.h.

428 { return ST::getMCShowerType(sample_name, tagger); }

◆ GetMET()

StatusCode ST::SUSYObjDef_xAOD::GetMET ( xAOD::MissingETContainer met,
const xAOD::JetContainer jet,
const xAOD::ElectronContainer elec = nullptr,
const xAOD::MuonContainer muon = nullptr,
const xAOD::PhotonContainer gamma = nullptr,
const xAOD::TauJetContainer taujet = nullptr,
bool  doTST = true,
bool  doJVTCut = true,
const xAOD::IParticleContainer invis = nullptr 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 23 of file MET.cxx.

30  {
31  if (!m_tool_init) {
32  ATH_MSG_ERROR("SUSYTools was not initialized!!");
33  return StatusCode::FAILURE;
34  }
35 
36  const xAOD::MissingETContainer* metcore(nullptr);
37  if ( evtStore()->retrieve( metcore, m_inputMETCore ).isFailure() ) {
38  ATH_MSG_WARNING( "Unable to retrieve MET core container: " << m_inputMETCore );
39  return StatusCode::FAILURE;
40  }
41  const xAOD::MissingETAssociationMap* metMap(nullptr);
42  if ( evtStore()->retrieve(metMap, m_inputMETMap).isFailure() ) {
43  ATH_MSG_WARNING("Unable to retrieve MissingETAssociationMap: " << m_inputMETMap);
44  return StatusCode::FAILURE;
45  }
46  // Helper keeps track of object selection flags for this map
47  xAOD::MissingETAssociationHelper metHelper(&(*metMap));
48 
49  std::string softTerm = "SoftClus";
50  if (doTST) {
51  softTerm = "PVSoftTrk";
52  } else if (doJVTCut) {
53  ATH_MSG_WARNING( "Requested CST MET and a JVT cut. This is not a recommended configuration - please consider switching to TST." );
54  }
55 
56  metHelper.resetObjSelectionFlags();
57 
58  // allow creation of proxy MET by flagging objects for "neutrino/ification" as already selected
59  if (invis) {
60  ATH_CHECK( m_metMaker->markInvisible(invis, metHelper, &met) );
61  }
62 
63  if (elec) {
64  ATH_MSG_VERBOSE("Build electron MET");
66  for (const xAOD::Electron* el : *elec) {
67  // pass baseline selection
68  if (acc_baseline(*el)) {
69  bool veto(false);
70  if (invis) {
71  for (const xAOD::IParticle* ipart : *invis) {
72  if (ipart == el) {veto = true; break;}
73  }
74  }
75  if (!veto) metelectron.push_back(el);
76  }
77  }
78  ATH_CHECK( m_metMaker->rebuildMET(m_eleTerm, xAOD::Type::Electron, &met, metelectron.asDataVector(), metHelper) );
79  }
80 
81  if (gamma) {
82  ATH_MSG_VERBOSE("Build photon MET");
84  for (const xAOD::Photon* ph : *gamma) {
85  // pass baseline selection
86  if (acc_baseline(*ph)) {
87  bool veto(false);
88  if (invis) {
89  for (const xAOD::IParticle* ipart : *invis) {
90  if (ipart == ph) {veto = true; break;}
91  }
92  }
93  if (!veto) metgamma.push_back(ph);
94  }
95  }
96  ATH_CHECK( m_metMaker->rebuildMET(m_gammaTerm, xAOD::Type::Photon, &met, metgamma.asDataVector(), metHelper) );
97  }
98 
99  if (taujet) {
100  ATH_MSG_VERBOSE("Build tau MET");
102  for (const xAOD::TauJet* tau : *taujet) {
103  // pass baseline selection
104  if (acc_baseline(*tau)) {
105  bool veto(false);
106  if (invis) {
107  for (const xAOD::IParticle* ipart : *invis) {
108  if (ipart == tau) {veto = true; break;}
109  }
110  }
111  if (!veto) mettau.push_back(tau);
112  }
113  }
114  ATH_CHECK( m_metMaker->rebuildMET(m_tauTerm, xAOD::Type::Tau, &met, mettau.asDataVector(), metHelper) );
115  }
116 
117  if (muon) {
118  ATH_MSG_VERBOSE("Build muon MET");
120  for (const xAOD::Muon* mu : *muon) {
121  bool veto(false);
122  // pass baseline selection
123  if (acc_baseline(*mu)) {
124  if (invis) {
125  for (const xAOD::IParticle* ipart : *invis) {
126  if (ipart == mu) {veto = true; break;}
127  }
128  }
129  if (!veto) metmuon.push_back(mu);
130  }
131  }
132  ATH_CHECK( m_metMaker->rebuildMET(m_muonTerm, xAOD::Type::Muon, &met, metmuon.asDataVector(), metHelper) );
133  }
134 
135  if (!jet) {
136  ATH_MSG_WARNING("Invalid jet container specified for MET rebuilding!");
137  return StatusCode::SUCCESS;
138  }
139 
140  ATH_MSG_VERBOSE("Build jet/soft MET");
141  ATH_CHECK( m_metMaker->rebuildJetMET(m_jetTerm, softTerm, &met, jet, metcore, metHelper, doJVTCut) );
142 
143  if (!isData()) {
144  m_metSystTool->setRandomSeed(static_cast<int>(1e6*met[softTerm]->phi()));
145  ATH_MSG_VERBOSE("Original soft term " << met[softTerm]->name() << " (met: " << met[softTerm]->met() << ")" );
146  if ( m_metSystTool->applyCorrection(*met[softTerm], metHelper) != CP::CorrectionCode::Ok ) {
147  ATH_MSG_WARNING("GetMET: Failed to apply MET soft term systematics.");
148  }
149  ATH_MSG_VERBOSE("New soft term value: " << met[softTerm]->met() );
150  }
151 
152  ATH_MSG_VERBOSE("Build MET sum");
153  ATH_CHECK( met::buildMETSum(m_outMETTerm, &met, met[softTerm]->source()) );
154  ATH_MSG_VERBOSE( "Rebuilt MET: Missing Et (x,y): (" << met[m_outMETTerm]->mpx() << "," << met[m_outMETTerm]->mpy() << ")");
155  ATH_MSG_VERBOSE( "Done rebuilding MET." );
156 
157  return StatusCode::SUCCESS;
158 }

◆ GetMETSig()

StatusCode ST::SUSYObjDef_xAOD::GetMETSig ( xAOD::MissingETContainer met,
double &  metSignificance,
bool  doTST = true,
bool  doJVTCut = true 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 240 of file MET.cxx.

242  {
243 
244  std::string softTerm = "SoftClus";
245  if (doTST) {
246  softTerm = "PVSoftTrk";
247  } else if (doJVTCut) {
248  ATH_MSG_WARNING( "Requested CST MET and a JVT cut. This is not a recommended configuration - please consider switching to TST." );
249  }
250 
251  const xAOD::EventInfo* evtInfo = nullptr;
252  ATH_CHECK( evtStore()->retrieve( evtInfo, "EventInfo" ) );
254  metSignificance = m_metSignif->GetSignificance();
255  ATH_MSG_VERBOSE( "Obtained MET Significance: " << metSignificance );
256 
257  return StatusCode::SUCCESS;
258 }

◆ GetMuons()

StatusCode ST::SUSYObjDef_xAOD::GetMuons ( xAOD::MuonContainer *&  copy,
xAOD::ShallowAuxContainer *&  copyaux,
const bool  recordSG = true,
const std::string &  muonkey = "Muons",
const std::string &  lrtmuonkey = "MuonsLRT",
const xAOD::MuonContainer containerToBeCopied = nullptr 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 101 of file Muons.cxx.

102 {
103  if (!m_tool_init) {
104  ATH_MSG_ERROR("SUSYTools was not initialized!!");
105  return StatusCode::FAILURE;
106  }
107 
108  // Initializing prompt/LRT OR procedure
109  auto outputCol = std::make_unique<xAOD::MuonContainer>();
110  std::unique_ptr<xAOD::MuonAuxContainer> outputAuxCol;
111  outputAuxCol = std::make_unique<xAOD::MuonAuxContainer>();
112  outputCol->setStore(outputAuxCol.get());
113  ATH_CHECK( m_outMuonLocation.initialize() );
114 
115  if (bool(m_muLRT) && !lrtmuonkey.empty() && evtStore()->contains<xAOD::MuonContainer>(lrtmuonkey)){
116  ATH_MSG_DEBUG("Applying prompt/LRT muon OR procedure");
117 
118  // First identify if merged container has already been made (for instances where GetMuons() is called more than once)
119  if (evtStore()->contains<xAOD::MuonContainer>("StdWithLRTMuons")) {
120  ATH_MSG_DEBUG("Merged prompt/LRT container already created in TStore");
121  } else {
122  ATH_MSG_DEBUG("Creating merged prompt/LRT container in TStore");
123 
124  // Retrieve prompt and LRT muons from TStore
125  ATH_CHECK( evtStore()->retrieve(prompt_muons, muonkey) );
126  ATH_CHECK( evtStore()->retrieve(lrt_muons, lrtmuonkey) );
127 
128  // Remove LRT muons as flagged by filter for uncertainty
129  auto filtered_muons = std::make_unique<xAOD::MuonContainer>();
130  std::unique_ptr<xAOD::MuonAuxContainer> filtered_muons_aux = std::make_unique<xAOD::MuonAuxContainer>();
131  filtered_muons->setStore(filtered_muons_aux.get());
132  ATH_CHECK(prepareLRTMuons(lrt_muons, filtered_muons.get()));
133 
134  // Check overlap between prompt and LRT collections
135  std::vector<bool> writePromptMuon;
136  std::vector<bool> writeLRTMuon;
137  m_muonLRTORTool->checkOverlap(*prompt_muons, *filtered_muons, writePromptMuon, writeLRTMuon);
138 
139  // Decorate muons with prompt/LRT
140  for (const xAOD::Muon* mu : *prompt_muons) dec_isLRT(*mu) = 0;
141  for (const xAOD::Muon* mu : *filtered_muons) dec_isLRT(*mu) = 1;
142 
143  // Create merged StdWithLRTMuons container
144  outputCol->reserve(prompt_muons->size() + filtered_muons->size());
145  ATH_CHECK(MergeMuons(*prompt_muons, writePromptMuon, outputCol.get()) );
146  ATH_CHECK(MergeMuons(*filtered_muons, writeLRTMuon, outputCol.get()) );
147 
148  // Save merged StdWithLRTMuons container to TStore
149  ATH_CHECK(evtStore()->record(std::move(outputCol), m_outMuonLocation.key()));
150  ATH_CHECK(evtStore()->record(std::move(outputAuxCol), m_outMuonLocation.key() + "Aux.") );
151 
152  }
153  } else if (!lrtmuonkey.empty()) {
154  if (evtStore()->contains<xAOD::MuonContainer>(lrtmuonkey) == false && bool(m_muLRT) == true) ATH_MSG_WARNING("prompt/LRT OR procedure attempted but " << lrtmuonkey << " not in ROOT file, check config!");
155  ATH_MSG_DEBUG("Not applying prompt/LRT muon OR procedure");
156  }
157 
158  if (m_isPHYSLITE && muonkey.find("AnalysisMuons")==std::string::npos){
159  ATH_MSG_ERROR("You are running on PHYSLITE derivation. Please change the Muons container to 'AnalysisMuons'");
160  return StatusCode::FAILURE;
161  }
162 
163  const xAOD::MuonContainer* muons = nullptr;
164  if (bool(m_muLRT) && evtStore()->contains<xAOD::MuonContainer>(lrtmuonkey)){
165  ATH_MSG_DEBUG("Using container: " << m_outMuonLocation.key());
166  ATH_CHECK( evtStore()->retrieve(muons, m_outMuonLocation.key()));
167  }
168  else {
169  if (copy==nullptr) { // empty container provided
170  ATH_MSG_DEBUG("Empty container provided");
171  if (containerToBeCopied != nullptr) {
172  ATH_MSG_DEBUG("Containter to be copied not nullptr");
173  muons = containerToBeCopied;
174  }
175  else {
176  ATH_MSG_DEBUG("Getting Muons collection");
177  ATH_CHECK( evtStore()->retrieve(muons, muonkey) );
178  }
179  }
180  }
181 
182  if (copy==nullptr) { // empty container provided
183  std::pair<xAOD::MuonContainer*, xAOD::ShallowAuxContainer*> shallowcopy = xAOD::shallowCopyContainer(*muons);
184  copy = shallowcopy.first;
185  copyaux = shallowcopy.second;
186  bool setLinks = xAOD::setOriginalObjectLink(*muons, *copy);
187  if (!setLinks) {
188  ATH_MSG_WARNING("Failed to set original object links on " << muonkey);
189  }
190  } else { // use the user-supplied collection instead
191  ATH_MSG_DEBUG("Not retrieving muon collection, using existing one provided by user");
192  muons=copy; // this does nothing
193  }
194 
195  for (const auto muon : *copy) {
199  this->IsBadMuon(*muon, m_badmuQoverP);
200  }
201  if (recordSG) {
202  ATH_CHECK( evtStore()->record(copy, "STCalib" + muonkey + m_currentSyst.name()) );
203  ATH_CHECK( evtStore()->record(copyaux, "STCalib" + muonkey + m_currentSyst.name() + "Aux.") );
204  }
205  return StatusCode::SUCCESS;
206 }

◆ GetMuonTriggerEfficiency()

double ST::SUSYObjDef_xAOD::GetMuonTriggerEfficiency ( const xAOD::Muon mu,
const std::string &  trigExpr,
const bool  isdata = false 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 533 of file Muons.cxx.

533  {
534 
535  double eff(1.);
536 
538  ATH_MSG_WARNING("Problem retrieving signal muon trigger efficiency for " << trigExpr );
539  }
540  else{
541  ATH_MSG_DEBUG("Got efficiency " << eff << " for " << trigExpr );
542  }
543  return eff;
544 }

◆ getName()

const std::string & asg::AsgTool::getName ( const void *  ptr) const
inherited

Get the name of an object that is / should be in the event store.

This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the std::string name for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.

In order to allow tools to efficiently perform this operation, they can use this helper function.

See also
asg::AsgTool::getKey
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The string name of the object in the store. If not found, an empty string.

Definition at line 106 of file AsgTool.cxx.

106  {
107 
108 #ifdef XAOD_STANDALONE
109  // In case we use @c xAOD::TEvent, we have a direct function call
110  // for this.
111  return evtStore()->event()->getName( ptr );
112 #else
113  const SG::DataProxy* proxy = evtStore()->proxy( ptr );
114  static const std::string dummy = "";
115  return ( proxy == nullptr ? dummy : proxy->name() );
116 #endif // XAOD_STANDALONE
117  }

◆ GetPhotons()

StatusCode ST::SUSYObjDef_xAOD::GetPhotons ( xAOD::PhotonContainer *&  copy,
xAOD::ShallowAuxContainer *&  copyaux,
const bool  recordSG = true,
const std::string &  photonkey = "Photons",
const xAOD::PhotonContainer containerToBeCopied = nullptr 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 33 of file Photons.cxx.

34 {
35  if (!m_tool_init) {
36  ATH_MSG_ERROR("SUSYTools was not initialized!!");
37  return StatusCode::FAILURE;
38  }
39 
40  if (m_isPHYSLITE && photonkey.find("AnalysisPhotons")==std::string::npos){
41  ATH_MSG_ERROR("You are running on PHYSLITE derivation. Please change the Photons container to 'AnalysisPhotons'");
42  return StatusCode::FAILURE;
43  }
44 
45  const xAOD::PhotonContainer* photons = nullptr;
46  if (copy==nullptr) { // empty container provided
47  if (containerToBeCopied != nullptr) {
48  photons = containerToBeCopied;
49  }
50  else {
51  ATH_CHECK( evtStore()->retrieve(photons, photonkey) );
52  }
53  std::pair<xAOD::PhotonContainer*, xAOD::ShallowAuxContainer*> shallowcopy = xAOD::shallowCopyContainer(*photons);
54  copy = shallowcopy.first;
55  copyaux = shallowcopy.second;
56  bool setLinks = xAOD::setOriginalObjectLink(*photons, *copy);
57  if (!setLinks) {
58  ATH_MSG_WARNING("Failed to set original object links on " << photonkey);
59  }
60  } else { // use the user-supplied collection instead
61  ATH_MSG_DEBUG("Not retrieving photon collecton, using existing one provided by user");
62  photons=copy;
63  }
64 
65  for (const auto photon : *copy) {
68  }
69 
70  if (recordSG) {
71  ATH_CHECK( evtStore()->record(copy, "STCalib" + photonkey + m_currentSyst.name()) );
72  ATH_CHECK( evtStore()->record(copyaux, "STCalib" + photonkey + m_currentSyst.name() + "Aux.") );
73  }
74  return StatusCode::SUCCESS;
75 }

◆ GetPileupWeight()

float ST::SUSYObjDef_xAOD::GetPileupWeight ( )
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 2995 of file SUSYObjDef_xAOD.cxx.

2995  {
2996 
2997  const xAOD::EventInfo* evtInfo = GetEventInfo();
2998  float pu_weight = m_prwTool->getCombinedWeight(*evtInfo);
2999 
3000  if(!isfinite(pu_weight)) pu_weight = 1.;
3001 
3002  return pu_weight;
3003 }

◆ GetPileupWeightHash()

ULong64_t ST::SUSYObjDef_xAOD::GetPileupWeightHash ( )
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 3020 of file SUSYObjDef_xAOD.cxx.

3020  {
3021  const xAOD::EventInfo* evtInfo = GetEventInfo();
3022  return m_prwTool->getPRWHash( *evtInfo );
3023 }

◆ GetPileupWeightPrescaledTrigger()

float ST::SUSYObjDef_xAOD::GetPileupWeightPrescaledTrigger ( const std::string &  trigger_expr)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 3005 of file SUSYObjDef_xAOD.cxx.

3005  {
3006  /* This requires the setup of the PRW tool using your own prescaled lumicalc
3007  files with syntax "HLT_PrescaledTriggerA.lumicalc.root:HLT_PrescaledTriggerA".
3008  For further informations, please refer to:
3009  https://twiki.cern.ch/twiki/bin/view/AtlasProtected/ExtendedPileupReweighting#Prescaling%20MC
3010  */
3011 
3012  const xAOD::EventInfo* evtInfo = GetEventInfo();
3013  float pu_weight = m_prwTool->getCombinedWeight(*evtInfo,trigger_expr);
3014 
3015  if(!isfinite(pu_weight)) pu_weight = 1.;
3016 
3017  return pu_weight;
3018 }

◆ GetPrimVtx()

const xAOD::Vertex * ST::SUSYObjDef_xAOD::GetPrimVtx ( ) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 2926 of file SUSYObjDef_xAOD.cxx.

2926  {
2927  const xAOD::VertexContainer* vertices = nullptr;
2928  if ( evtStore()->retrieve( vertices, "PrimaryVertices" ).isSuccess() ) {
2929  for ( const auto vx : *vertices ) {
2930  if (vx->vertexType() == xAOD::VxType::PriVtx) {
2931  ATH_MSG_DEBUG("PrimaryVertex found with z=" << vx->z());
2932  return vx;
2933  }
2934  }
2935  } else {
2936  ATH_MSG_WARNING("Failed to retrieve VertexContainer \"PrimaryVertices\", returning nullptr");
2937  }
2938  return nullptr;
2939 }

◆ getProperty() [1/2]

template<typename T >
const T* ST::ISUSYObjDef_xAODTool::getProperty ( const std::string &  name)
inlineinherited

Definition at line 239 of file ISUSYObjDef_xAODTool.h.

239  {
240  return dynamic_cast<asg::AsgTool&>(*this).getProperty<T>(name);
241  }

◆ getProperty() [2/2]

template<class T >
const T* asg::AsgTool::getProperty ( const std::string &  name) const
inherited

Get one of the tool's properties.

◆ GetRandomRunNumber()

unsigned int ST::SUSYObjDef_xAOD::GetRandomRunNumber ( bool  muDependentRRN = true)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 3044 of file SUSYObjDef_xAOD.cxx.

3044  {
3045 
3046  const xAOD::EventInfo* evtInfo = GetEventInfo();
3047  if (randomrunnumber.isAvailable(*(evtInfo)) && muDependentRRN) {
3048  return randomrunnumber(*(evtInfo));
3049  }
3050  else if (!muDependentRRN) {
3051  return m_prwTool->getRandomRunNumber( *evtInfo, muDependentRRN );
3052  }
3053  ATH_MSG_ERROR ( "Failed to find RandomRunNumber decoration! You need to call ApplyPRWTool() beforehand!" );
3054  return 0;
3055 }

◆ GetRunNumber()

unsigned int ST::SUSYObjDef_xAOD::GetRunNumber ( ) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 3066 of file SUSYObjDef_xAOD.cxx.

3066  {
3067 
3068  const xAOD::EventInfo* evtInfo = GetEventInfo();
3069 
3070  // For data, we can just directly use the run number
3071  if (isData()) { return evtInfo->runNumber(); }
3072 
3073  // else it's MC as we need the RRN assigned by the PRW tool
3074  if (!randomrunnumber.isAvailable(*(evtInfo))) {
3075  ATH_MSG_ERROR ( "Failed to find RandomRunNumber decoration! You need to call ApplyPRWTool() beforehand!" );
3076  }
3077  return randomrunnumber(*(evtInfo));
3078 
3079 }

◆ getSherpaVjetsNjetsWeight() [1/2]

float ST::SUSYObjDef_xAOD::getSherpaVjetsNjetsWeight ( ) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 2895 of file SUSYObjDef_xAOD.cxx.

2895  {
2896 
2897  //Retrieve the truth jets
2898  if( evtStore()->contains<xAOD::JetContainer>("AntiKt4TruthWZJets") ){
2899  return getSherpaVjetsNjetsWeight("AntiKt4TruthWZJets");
2900  }
2901  else if( evtStore()->contains<xAOD::JetContainer>("AntiKt4TruthJets")){
2902  return getSherpaVjetsNjetsWeight("AntiKt4TruthJets" );
2903  }
2904  else{
2905  ATH_MSG_WARNING("No TruthJetContainer found! Dummy null weight retrieved.");
2906  }
2907  return 0.;
2908 }

◆ getSherpaVjetsNjetsWeight() [2/2]

float ST::SUSYObjDef_xAOD::getSherpaVjetsNjetsWeight ( const std::string &  jetContainer) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 2910 of file SUSYObjDef_xAOD.cxx.

2910  {
2911 
2912  if(jetContainer=="AntiKt4TruthWZJets"){
2913  return m_pmgSHnjetWeighterWZ->getWeight();
2914  }
2915  else if (jetContainer=="AntiKt4TruthJets"){
2916  return m_pmgSHnjetWeighter->getWeight();
2917  }
2918  else{
2919  ATH_MSG_WARNING(jetContainer << " is no supported by PMGSherpa22VJetsWeightTool! Please check...");
2920  }
2921  return 1.;
2922 
2923 }

◆ GetSignalElecSF()

float ST::SUSYObjDef_xAOD::GetSignalElecSF ( const xAOD::Electron el,
const bool  recoSF = true,
const bool  idSF = true,
const bool  triggerSF = true,
const bool  isoSF = true,
const std::string &  trigExpr = "singleLepton",
const bool  ecidsSF = false,
const bool  cidSF = false 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 420 of file Electrons.cxx.

427  {
428 
429  if ((m_eleId == "VeryLooseLLH" || m_eleId == "LooseLLH" || m_eleId == "Loose" || m_eleId == "Medium" || m_eleId == "Tight") && (idSF || triggerSF || isoSF)) {
430  ATH_MSG_ERROR("No signal electron ID or trigger scale factors provided for the selected working point!");
431  ATH_MSG_ERROR("I will now die messily.");
432  }
433 
434  //shortcut keys for trigger SF config
435  std::string singleLepStr = "singleLepton";
436  std::string diLepStr = "diLepton";
437  std::string multiLepStr = "multiLepton";
438 
439  float sf(1.);
440 
441  if (recoSF) {
442  double reco_sf(1.);
443 
445  switch (result) {
447  sf *= reco_sf;
448  break;
450  ATH_MSG_ERROR( "Failed to retrieve signal electron reco SF");
451  break;
453  ATH_MSG_VERBOSE( "OutOfValidityRange found for signal electron reco SF");
454  break;
455  default:
456  ATH_MSG_WARNING( "Don't know what to do for signal electron reco SF");
457  }
458  }
459 
460  if (idSF) {
461  double id_sf(1.);
462 
464  switch (result) {
466  sf *= id_sf;
467  break;
469  ATH_MSG_ERROR( "Failed to retrieve signal electron id SF");
470  break;
472  ATH_MSG_VERBOSE( "OutOfValidityRange found for signal electron id SF");
473  break;
474  default:
475  ATH_MSG_WARNING( "Don't know what to do for signal electron id SF");
476  }
477  }
478 
479  if (triggerSF) {
480 
481  std::vector<std::string> trigMChains={};
482  std::string theExpr ("");
483  if(trigExpr==singleLepStr) {
484  if (this->treatAsYear()==2015) trigMChains = m_v_trigs15_cache_singleEle;
485  else if (this->treatAsYear()==2016) trigMChains = m_v_trigs16_cache_singleEle;
486  else if (this->treatAsYear()==2017) trigMChains = m_v_trigs17_cache_singleEle;
487  else if (this->treatAsYear()==2018) trigMChains = m_v_trigs18_cache_singleEle;
488  else if (this->treatAsYear()==2022) trigMChains = m_v_trigs22_cache_singleEle;
489  else if (this->treatAsYear()==2023) trigMChains = m_v_trigs23_cache_singleEle;
490  else trigMChains = m_v_trigs24_cache_singleEle;
492  }
493  else{
494  ATH_MSG_WARNING( "Only single lepton trigger SFs are supported in GetSignalElecSF(). Use GetTriggerGlobalEfficiencySF() for dilepton or multilepton triggers!");
495  }
496 
497  //check matching
498  this->TrigMatch({&el}, trigMChains);
499 
500  if(!acc_trigmatched(el)){
501  ATH_MSG_DEBUG( "Electron was not matched to trigger " << theExpr << " - scale factor does not apply (year " << this->treatAsYear() << ") Returning 1." );
502  }
503  else{ //is trig-matched electron, go for it!
504  if (trigExpr==multiLepStr || trigExpr==diLepStr) {
505  ATH_MSG_WARNING( "The dilepton or multilepton trigger SFs are not supported in GetSignalElecSF(). Use GetTriggerGlobalEfficiencySF()!");
506  }
507  else {
508  double trig_sf = GetEleTriggerEfficiencySF( el , theExpr );
509  sf *= trig_sf;
510  }
511  }
512  }
513 
514  if (isoSF) {
515  double iso_sf(1.);
517  if (acc_isolHighPt(el) && el.pt()>m_eleIsoHighPtThresh)
519  else
521 
522  switch (result) {
524  sf *= iso_sf;
525  break;
527  ATH_MSG_ERROR( "Failed to retrieve signal electron iso SF");
528  break;
530  ATH_MSG_VERBOSE( "OutOfValidityRange found for signal electron iso SF");
531  break;
532  default:
533  ATH_MSG_WARNING( "Don't know what to do for signal electron iso SF");
534  }
535  }
536 
537  // Charge flip SF: combined ECIDs & charge ID
538  if ( ecidsSF || cidSF ) {
539  double chf_sf(1.);
540  // 1. ECIDs SF
541  if ( ecidsSF ) {
542  sf *= chf_sf;
543  ATH_MSG_WARNING( "ECID SF ARE NOT YET SUPPORTED IN R22" );
544  }
545  // 2. CID SF
546  if ( cidSF ) {
547  sf *= chf_sf;
548  dec_sfChIDEff(el) = chf_sf;
549  ATH_MSG_WARNING( "CID SF ARE NOT YET SUPPORTED IN R22" );
550  }
551  }
552 
553  dec_effscalefact(el) = sf;
554  return sf;
555 }

◆ GetSignalMuonSF()

float ST::SUSYObjDef_xAOD::GetSignalMuonSF ( const xAOD::Muon mu,
const bool  recoSF = true,
const bool  isoSF = true,
const bool  doBadMuonHP = true,
const bool  warnOVR = true 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 480 of file Muons.cxx.

481 {
482  float sf(1.);
483 
484  if (recoSF) {
485  float sf_reco(1.);
487  if(warnOVR) ATH_MSG_WARNING(" GetSignalMuonSF: Reco getEfficiencyScaleFactor out of validity range");
488  }
489  ATH_MSG_VERBOSE( "MuonReco ScaleFactor " << sf_reco );
490  sf *= sf_reco;
491 
492  float sf_ttva(1.);
493  if(m_doTTVAsf){
495  if(warnOVR) ATH_MSG_WARNING(" GetSignalMuonSF: TTVA getEfficiencyScaleFactor out of validity range");
496  }
497  ATH_MSG_VERBOSE( "MuonTTVA ScaleFactor " << sf_ttva );
498  sf *= sf_ttva;
499  }
500 
501  float sf_badHighPt(1.);
502  if(m_muId == 4 && doBadMuonHP){
504  if(warnOVR) ATH_MSG_WARNING(" GetSignalMuonSF: BadMuonHighPt getEfficiencyScaleFactor out of validity range");
505  }
506  ATH_MSG_VERBOSE( "MuonBadMuonHighPt ScaleFactor " << sf_badHighPt );
507  sf *= sf_badHighPt;
508  }
509  }
510 
511 
512  if (isoSF) {
513  float sf_iso(1.);
514  if (acc_isolHighPt(mu) && mu.pt()>m_muIsoHighPtThresh) {
516  if(warnOVR) ATH_MSG_WARNING(" GetSignalMuonSF: high-pt Iso getEfficiencyScaleFactor out of validity range");
517  }
518  } else if (acc_isol(mu) && mu.pt()<m_muIsoHighPtThresh) {
520  if(warnOVR) ATH_MSG_WARNING(" GetSignalMuonSF: Iso getEfficiencyScaleFactor out of validity range");
521  }
522  }
523  ATH_MSG_VERBOSE( "MuonIso ScaleFactor " << sf_iso );
524  sf *= sf_iso;
525  }
526 
527 
528  dec_effscalefact(mu) = sf;
529  return sf;
530 }

◆ GetSignalPhotonSF()

double ST::SUSYObjDef_xAOD::GetSignalPhotonSF ( const xAOD::Photon ph,
const bool  effSF = true,
const bool  isoSF = true,
const bool  triggerSF = false 
) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 206 of file Photons.cxx.

207 {
208  double sf(1.);
209 
210  if (effSF) {
211 
212  double sf_eff = 1.;
213 
215  if (res == CP::CorrectionCode::OutOfValidityRange) ATH_MSG_WARNING(" GetSignalPhotonSF: EfficiencyScaleFactor out of validity range");
216 
217  sf *= sf_eff;
218  }
219 
220  if (isoSF) {
221 
222  double sf_iso = 1.;
223 
225  if (res == CP::CorrectionCode::OutOfValidityRange) ATH_MSG_WARNING(" GetSignalPhotonSF: IsolationScaleFactor out of validity range");
226 
227  sf *= sf_iso;
228  }
229 
230  if (triggerSF) {
231 
232  double sf_trigger = 1.;
233 
235  if (res == CP::CorrectionCode::OutOfValidityRange) ATH_MSG_WARNING(" GetSignalPhotonSF: TriggerScaleFactor out of validity range");
236 
237  sf *= sf_trigger;
238  }
239 
240  ATH_MSG_VERBOSE( "ScaleFactor " << sf );
241 
242  dec_effscalefact(ph) = sf;
243  return sf;
244 }

◆ GetSignalPhotonSFsys()

double ST::SUSYObjDef_xAOD::GetSignalPhotonSFsys ( const xAOD::Photon ph,
const CP::SystematicSet systConfig,
const bool  effSF = true,
const bool  isoSF = true,
const bool  triggerSF = false 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 247 of file Photons.cxx.

248 {
249  double sf(1.);
250 
251  //Set the new systematic variation
253  if (ret != StatusCode::SUCCESS) {
254  ATH_MSG_ERROR("Cannot configure AsgPhotonEfficiencyCorrectionTool (reco) for systematic var. " << systConfig.name() );
255  }
256 
258  if (ret != StatusCode::SUCCESS) {
259  ATH_MSG_ERROR("Cannot configure AsgPhotonEfficiencyCorrectionTool (iso) for systematic var. " << systConfig.name() );
260  }
261 
263  if (ret != StatusCode::SUCCESS) {
264  ATH_MSG_ERROR("Cannot configure AsgPhotonEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.name() );
265  }
266 
267  if (effSF) {
268 
269  double sf_eff = 1.;
270 
272  if (res == CP::CorrectionCode::OutOfValidityRange) ATH_MSG_WARNING(" GetSignalPhotonSF: getEfficiencyScaleFactor out of validity range");
273 
274  sf *= sf_eff;
275  }
276 
277  if (isoSF) {
278 
279  double sf_iso = 1.;
280 
282  if (res == CP::CorrectionCode::OutOfValidityRange) ATH_MSG_WARNING(" GetSignalPhotonSF: getEfficiencyScaleFactor out of validity range");
283 
284  sf *= sf_iso;
285  }
286 
287  if (triggerSF) {
288 
289  double sf_trigger = 1.;
290 
292  if (res == CP::CorrectionCode::OutOfValidityRange) ATH_MSG_WARNING(" GetSignalPhotonSF: getEfficiencyScaleFactor out of validity range");
293 
294  sf *= sf_trigger;
295  }
296 
297  //Roll back to current sys
299  if (ret != StatusCode::SUCCESS) {
300  ATH_MSG_ERROR("Cannot configure AsgPhotonEfficiencyCorrectionTool back to default.");
301  }
302 
304  if (ret != StatusCode::SUCCESS) {
305  ATH_MSG_ERROR("Cannot configure AsgPhotonEfficiencyCorrectionTool (iso) for systematic var. " << systConfig.name() );
306  }
307 
309  if (ret != StatusCode::SUCCESS) {
310  ATH_MSG_ERROR("Cannot configure AsgPhotonEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.name() );
311  }
312 
313  ATH_MSG_VERBOSE( "ScaleFactor " << sf );
314 
315  dec_effscalefact(ph) = sf;
316  return sf;
317 }

◆ GetSignalTauSF()

double ST::SUSYObjDef_xAOD::GetSignalTauSF ( const xAOD::TauJet tau,
const bool  idSF = true,
const bool  triggerSF = true,
const std::string &  trigExpr = "tau25_medium1_tracktwo" 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 130 of file Taus.cxx.

134 {
135  double sf(1.);
136 
137  if (acc_signal(tau)) {
138  if (idSF) {
140  ATH_MSG_WARNING("Failed to retrieve tau efficiency scale factor.");
141  }
142  ATH_MSG_VERBOSE(" Retrieved tau SF " << sf);
143  }
144 
145  if (triggerSF) {
146  double trig_sf = GetTauTriggerEfficiencySF(tau, trigExpr);
147 
148  if (trig_sf > -90) {
149  sf *= trig_sf;
150  ATH_MSG_VERBOSE(" Retrieved tau trig SF " << trig_sf);
151  }
152  }
153  }
154 
155  dec_effscalefact(tau) = sf;
156  return sf;
157 }

◆ GetSignalTauSFsys()

double ST::SUSYObjDef_xAOD::GetSignalTauSFsys ( const xAOD::TauJet tau,
const CP::SystematicSet systConfig,
const bool  idSF = true,
const bool  triggerSF = true,
const std::string &  trigExpr = "tau25_medium1_tracktwo" 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 160 of file Taus.cxx.

165 {
166  double sf(1.);
167 
168  //Set the new systematic variation
170  if (ret != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure TauEfficiencyCorrectionsTool for systematic var. " << systConfig.name() ); }
171 
172  for (auto& tool : m_tauTrigEffTool) {
173  ret = tool->applySystematicVariation(systConfig);
174  if (ret != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure " << tool->name() << " for systematic var. " << systConfig.name()); }
175  }
176 
177  sf *= GetSignalTauSF(tau, idSF, triggerSF, trigExpr);
178 
179  //Roll back to default
181  if (ret != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure TauEfficiencyCorrectionsTool back to default"); }
182 
183  for (auto& tool : m_tauTrigEffTool) {
184  ret = tool->applySystematicVariation(m_currentSyst);
185  if (ret != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure " << tool->name() << " back to default"); }
186  }
187 
188  dec_effscalefact(tau) = sf;
189 
190  return sf;
191 }

◆ GetSumOfWeights()

double ST::SUSYObjDef_xAOD::GetSumOfWeights ( int  channel)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 3040 of file SUSYObjDef_xAOD.cxx.

3040  {
3042 }

◆ getSystInfo()

ST::SystInfo ST::SUSYObjDef_xAOD::getSystInfo ( const CP::SystematicVariation sys) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 2577 of file SUSYObjDef_xAOD.cxx.

2577  {
2578 
2579  SystInfo sysInfo;
2580  sysInfo.affectsKinematics = false;
2581  sysInfo.affectsWeights = false;
2582  sysInfo.affectedWeights.clear();
2583  sysInfo.systset.insert(sys);
2584 
2587  sysInfo.affectsWeights = true;
2588  sysInfo.affectsType = SystObjType::Jet;
2589  sysInfo.affectedWeights.insert(ST::Weights::Jet::JVT);
2590  }
2591  }
2592 
2593  if (!m_jetfJvtEfficiencyTool.empty()) {
2595  sysInfo.affectsWeights = true;
2596  sysInfo.affectsType = SystObjType::Jet;
2597  sysInfo.affectedWeights.insert(ST::Weights::Jet::FJVT);
2598  }
2599  }
2600 
2601  if (!m_jetUncertaintiesTool.empty()) {
2603  sysInfo.affectsKinematics = true;
2604  sysInfo.affectsType = SystObjType::Jet;
2605  }
2606  }
2609  sysInfo.affectsKinematics = true;
2610  sysInfo.affectsType = SystObjType::Jet;
2611  }
2612  }
2613 
2616  sysInfo.affectsKinematics = true;
2617  sysInfo.affectsType = SystObjType::Jet;
2618  }
2619  }
2622  sysInfo.affectsKinematics = true;
2623  sysInfo.affectsType = SystObjType::Jet;
2624  }
2625  }
2626 
2627  if (!m_fatjetFFSmearingTool.empty()) {
2629  dummy.insert(sys);
2631  sysInfo.affectsKinematics = true;
2632  sysInfo.affectsType = SystObjType::Jet;
2633  }
2634  }
2635 
2638  sysInfo.affectsKinematics = true;
2639  sysInfo.affectsType = SystObjType::Jet;
2640  }
2641  }
2644  sysInfo.affectsKinematics = true;
2645  sysInfo.affectsType = SystObjType::Jet;
2646  }
2647  }
2650  sysInfo.affectsKinematics = true;
2651  sysInfo.affectsType = SystObjType::Jet;
2652  }
2653  }
2654 
2655  if (!m_muonCalibTool.empty()) {
2657  sysInfo.affectsKinematics = true;
2658  sysInfo.affectsType = SystObjType::Muon;
2659  }
2660  }
2663  sysInfo.affectsWeights = true;
2664  sysInfo.affectsType = SystObjType::Electron;
2665  sysInfo.affectedWeights.insert(ST::Weights::Electron::Trigger);
2666  }
2667  }
2670  sysInfo.affectsWeights = true;
2671  sysInfo.affectsType = SystObjType::Electron;
2672  sysInfo.affectedWeights.insert(ST::Weights::Electron::Trigger);
2673  }
2674  }
2675  if (!m_muonEfficiencySFTool.empty()) {
2677  sysInfo.affectsWeights = true;
2678  sysInfo.affectsType = SystObjType::Muon;
2679  sysInfo.affectedWeights.insert(ST::Weights::Muon::Reconstruction);
2680  }
2681  }
2684  sysInfo.affectsWeights = true;
2685  sysInfo.affectsType = SystObjType::Muon;
2686  sysInfo.affectedWeights.insert(ST::Weights::Muon::Reconstruction);
2687  }
2688  }
2691  sysInfo.affectsWeights = true;
2692  sysInfo.affectsType = SystObjType::Muon;
2693  sysInfo.affectedWeights.insert(ST::Weights::Muon::Reconstruction);
2694  }
2695  }
2696  if (!m_muonIsolationSFTool.empty()) {
2698  sysInfo.affectsWeights = true;
2699  sysInfo.affectsType = SystObjType::Muon;
2700  sysInfo.affectedWeights.insert(ST::Weights::Muon::Isolation);
2701  }
2702  }
2703  if (!m_muonTriggerSFTool.empty()) {
2705  sysInfo.affectsWeights = true;
2706  sysInfo.affectsType = SystObjType::Muon;
2707  sysInfo.affectedWeights.insert(ST::Weights::Muon::Trigger);
2708  }
2709  }
2712  sysInfo.affectsWeights = true;
2713  sysInfo.affectsType = SystObjType::Electron;
2714  sysInfo.affectedWeights.insert(ST::Weights::Electron::Reconstruction);
2715  }
2716  }
2719  sysInfo.affectsWeights = true;
2720  sysInfo.affectsType = SystObjType::Electron;
2721  sysInfo.affectedWeights.insert(ST::Weights::Electron::ID);
2722  }
2723  }
2726  sysInfo.affectsWeights = true;
2727  sysInfo.affectsType = SystObjType::Electron;
2728  sysInfo.affectedWeights.insert(ST::Weights::Electron::Trigger);
2729  }
2730  }
2733  sysInfo.affectsWeights = true;
2734  sysInfo.affectsType = SystObjType::Electron;
2735  sysInfo.affectedWeights.insert(ST::Weights::Electron::Trigger);
2736  }
2737  }
2740  sysInfo.affectsWeights = true;
2741  sysInfo.affectsType = SystObjType::Electron;
2742  sysInfo.affectedWeights.insert(ST::Weights::Electron::Isolation);
2743  }
2744  }
2747  sysInfo.affectsWeights = true;
2748  sysInfo.affectsType = SystObjType::Electron;
2749  sysInfo.affectedWeights.insert(ST::Weights::Electron::Isolation);
2750  }
2751  }
2752  if (!m_egammaCalibTool.empty()) {
2754  sysInfo.affectsKinematics = true;
2755  if (sys.basename().compare(0, 3, "EG_") == 0) {
2756  sysInfo.affectsType = SystObjType::Egamma;
2757  } else if (sys.basename().compare(0, 3, "PH_") == 0) {
2758  sysInfo.affectsType = SystObjType::Photon;
2759  } else if (sys.basename().compare(0, 3, "EL_") == 0) {
2760  sysInfo.affectsType = SystObjType::Electron;
2761  }
2762  }
2763  }
2764  if (!isData() && !m_isoCorrTool.empty()) {
2766  sysInfo.affectsWeights = false;
2767  sysInfo.affectsKinematics = true;
2768  sysInfo.affectsType = SystObjType::Photon;
2769  }
2770  }
2771  if (!isData() && !m_photonEfficiencySFTool.empty()) {
2773  sysInfo.affectsWeights = true;
2774  sysInfo.affectsType = SystObjType::Photon;
2775  sysInfo.affectedWeights.insert(ST::Weights::Photon::Reconstruction);
2776  }
2777  }
2778  if (!isData() && !m_photonIsolationSFTool.empty()) {
2780  sysInfo.affectsWeights = true;
2781  sysInfo.affectsType = SystObjType::Photon;
2782  sysInfo.affectedWeights.insert(ST::Weights::Photon::Isolation);
2783  }
2784  }
2785  if (!isData() && !m_photonTriggerSFTool.empty()) {
2787  sysInfo.affectsWeights = true;
2788  sysInfo.affectsType = SystObjType::Photon;
2789  sysInfo.affectedWeights.insert(ST::Weights::Photon::Trigger);
2790  }
2791  }
2794  sysInfo.affectsWeights = true;
2795  sysInfo.affectsType = SystObjType::Photon;
2796  sysInfo.affectedWeights.insert(ST::Weights::Photon::Trigger);
2797  }
2798  }
2799  if ( !m_btagEffTool.empty() ) {
2801  sysInfo.affectsWeights = true;
2802  sysInfo.affectsType = SystObjType::BTag;
2803  sysInfo.affectedWeights.insert(ST::Weights::Jet::Btag);
2804  }
2805  }
2806  if ( !m_btagEffTool_trkJet.empty() ) {
2808  sysInfo.affectsWeights = true;
2809  sysInfo.affectsType = SystObjType::BTag;
2810  sysInfo.affectedWeights.insert(ST::Weights::Jet::Btag_Track);
2811  }
2812  }
2813  if (!m_tauSmearingTool.empty()) {
2815  sysInfo.affectsKinematics = true;
2816  sysInfo.affectsType = SystObjType::Tau;
2817  }
2818  }
2819  if (!m_tauEffTool.empty()) {
2821  sysInfo.affectsWeights = true;
2822  sysInfo.affectsType = SystObjType::Tau;
2823  sysInfo.affectedWeights.insert(ST::Weights::Tau::Reconstruction);
2824  }
2825  }
2826  for(const auto &tool : m_tauTrigEffTool) {
2827  if(tool->isAffectedBySystematic(sys)) {
2828  sysInfo.affectsWeights = true;
2829  sysInfo.affectsType = SystObjType::Tau;
2830  sysInfo.affectedWeights.insert(ST::Weights::Tau::Trigger);
2831  break;
2832  }
2833  }
2834  if (!m_metSystTool.empty()) {
2836  sysInfo.affectsKinematics = true;
2837  switch (met::getSystType(sys)) {
2838  case met::SOFTCALO:
2839  sysInfo.affectsType = SystObjType::MET_CST;
2840  break;
2841  case met::SOFTTRK:
2842  sysInfo.affectsType = SystObjType::MET_TST;
2843  break;
2844  case met::JETTRK:
2845  sysInfo.affectsType = SystObjType::MET_Track;
2846  break;
2847  default:
2848  ATH_MSG_ERROR("Unsupported systematic!");
2849  }
2850  }
2851  }
2852  if (!m_prwTool.empty()) {
2854  sysInfo.affectsWeights = true;
2855  sysInfo.affectsType = SystObjType::EventWeight;
2856  }
2857  }
2858 
2859  if (!m_LRTuncTool.empty()){
2861  sysInfo.affectsKinematics = true;
2862  sysInfo.affectsType = SystObjType::LRT_Object;
2863  }
2864  }
2865 
2866  std::string affectedType;
2867  switch (sysInfo.affectsType) {
2868  case Unknown : affectedType = "UNKNOWN"; break;
2869  case Jet : affectedType = "JET"; break;
2870  case Egamma : affectedType = "EGAMMA"; break;
2871  case Electron : affectedType = "ELECTRON"; break;
2872  case Photon : affectedType = "PHOTON"; break;
2873  case Muon : affectedType = "MUON"; break;
2874  case Tau : affectedType = "TAU"; break;
2875  case BTag : affectedType = "BTAG"; break;
2876  case MET_TST : affectedType = "MET_TST"; break;
2877  case MET_CST : affectedType = "MET_CST"; break;
2878  case MET_Track : affectedType = "MET_Track"; break;
2879  case EventWeight : affectedType = "EVENT WEIGHT"; break;
2880  case LRT_Object : affectedType = "LRT_OBJECT"; break;
2881  }
2882 
2883  ATH_MSG_VERBOSE("Variation " << sys.name() << " affects "
2884  << ( sysInfo.affectsWeights ? "weights " : "" )
2885  << ( sysInfo.affectsKinematics ? "kinematics " : "" )
2886  << "for " << affectedType );
2887 
2888  return sysInfo;
2889 
2890 }

◆ getSystInfoList()

std::vector< ST::SystInfo > ST::SUSYObjDef_xAOD::getSystInfoList ( ) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 2542 of file SUSYObjDef_xAOD.cxx.

2542  {
2543  if (!m_tool_init) {
2544  ATH_MSG_ERROR("SUSYTools was not initialized!!");
2545  return vector<ST::SystInfo>();
2546  }
2547 
2548  ATH_MSG_INFO("Extracting systematics info list");
2549 
2550  // Now we can look at systematics:
2552  const CP::SystematicSet& recommendedSystematics = registry.recommendedSystematics();
2553 
2554  vector<SystInfo> sysInfoList;
2555  sysInfoList.reserve(recommendedSystematics.size() * 2); // allow for continuous systematics
2556 
2557  // this is the nominal set
2558  SystInfo infodef;
2559  infodef.affectsKinematics = false;
2560  infodef.affectsWeights = false;
2561  infodef.affectsType = Unknown;
2562  infodef.affectedWeights.clear();
2563  sysInfoList.push_back(infodef);
2564 
2565 
2566  // add all recommended systematics
2567  for (const auto& systSet : CP::make_systematics_vector(recommendedSystematics)) {
2568  for (const auto& sys : systSet) {
2569  sysInfoList.push_back(getSystInfo(sys));
2570  }
2571  }
2572 
2573  ATH_MSG_INFO("Returning list of " << sysInfoList.size() << " systematic variations");
2574  return sysInfoList;
2575 }

◆ getTauConfig()

void ST::SUSYObjDef_xAOD::getTauConfig ( const std::string &  tauConfigPath,
std::vector< float > &  pT_window,
std::vector< float > &  eta_window,
bool &  eleOLR,
bool &  muVeto,
bool &  muOLR 
) const
protected

Definition at line 1842 of file SUSYObjDef_xAOD.cxx.

1842  {
1843 
1844  if(tauConfigPath.empty()) return;
1845 
1846  TEnv rEnv;
1847  auto filename = PathResolverFindCalibFile(tauConfigPath);
1848  rEnv.ReadFile(filename.c_str(), kEnvAll);
1849 
1850  std::vector<std::string> cuts;
1851  if (rEnv.Defined("SelectionCuts")) {
1852  cuts = split(rEnv.GetValue("SelectionCuts", " "), " ");
1853  } else {
1854  auto *l = rEnv.GetTable();
1855  for( Int_t i = 0; i < l->GetEntries(); ++i ) {
1856  cuts.push_back( l->At(i)->GetName() );
1857  }
1858  }
1859 
1860  //default OR settings
1861  eleOLR=false;
1862  muOLR=false;
1863  muVeto=false;
1864 
1865  static const std::string trueBool = "TRUE";
1866 
1867  // Now find the pT and eta window
1868  std::vector<std::string> v_pT_window;
1869  std::vector<std::string> v_eta_window;
1870  pT_window.clear();
1871  eta_window.clear();
1872  float pT_min = -99.0;
1873  float pT_max = -99.0;
1874  float eta_min = -99.0;
1875  float eta_max = -99.0;
1876  for (const auto& cut : cuts) {
1877  if(cut == "PtRegion") {
1878  v_pT_window = split(rEnv.GetValue("PtRegion", ""), ";");
1879  std::transform(std::begin(v_pT_window),
1880  std::end(v_pT_window),
1881  std::back_inserter(pT_window),
1882  [](const std::string& s) { return std::stof(s); }
1883  );
1884  } else if (cut == "PtMin") {
1885  pT_min = rEnv.GetValue("PtMin", NAN);
1886  } else if (cut == "PtMax") {
1887  pT_max = rEnv.GetValue("PtMax", NAN);
1888  } else if (cut == "AbsEtaRegion") {
1889  v_eta_window = split(rEnv.GetValue("AbsEtaRegion", ""), ";");
1890  std::transform(std::begin(v_eta_window),
1891  std::end(v_eta_window),
1892  std::back_inserter(eta_window),
1893  [](const std::string& s) { return std::stof(s); }
1894  );
1895  } else if (cut == "AbsEtaMin") {
1896  eta_min = rEnv.GetValue("AbsEtaMin", NAN);
1897  } else if (cut == "AbsEtaMax") {
1898  eta_max = rEnv.GetValue("AbsEtaMax", NAN);
1899  }
1900 
1901  //OR settings
1902  else if (cut == "EleOLR"){
1903  eleOLR = (rEnv.GetValue("EleOLR", "FALSE") == trueBool);
1904  }
1905  else if (cut == "MuonVeto"){
1906  muVeto = (rEnv.GetValue("MuonVeto", "FALSE") == trueBool);
1907  }
1908  else if (cut == "MuonOLR"){
1909  muOLR = (rEnv.GetValue("MuonOLR", "FALSE") == trueBool);
1910  }
1911  }
1912 
1913  if(pT_window.empty()) {
1914  if(pT_min == pT_min) {
1915  // fails on NaN
1916  pT_window.push_back(pT_min);
1917  } else {
1918  pT_window.push_back(-std::numeric_limits<float>::infinity());
1919  }
1920 
1921  if(pT_max == pT_max) {
1922  // fails on NaN
1923  pT_window.push_back(pT_max);
1924  } else {
1925  pT_window.push_back(std::numeric_limits<float>::infinity());
1926  }
1927  }
1928 
1929  if(eta_window.empty()) {
1930  if(eta_min == eta_min) {
1931  // fails on NaN
1932  eta_window.push_back(eta_min);
1933  } else {
1934  eta_window.push_back(-std::numeric_limits<float>::infinity());
1935  }
1936 
1937  if(eta_max == eta_max) {
1938  // fails on NaN
1939  eta_window.push_back(eta_max);
1940  } else {
1941  eta_window.push_back(std::numeric_limits<float>::infinity());
1942  }
1943  }
1944 }

◆ GetTaus()

StatusCode ST::SUSYObjDef_xAOD::GetTaus ( xAOD::TauJetContainer *&  copy,
xAOD::ShallowAuxContainer *&  copyaux,
const bool  recordSG = true,
const std::string &  taukey = "TauJets",
const xAOD::TauJetContainer containerToBeCopied = nullptr 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 31 of file Taus.cxx.

33 {
34  if (!m_tool_init) {
35  ATH_MSG_ERROR("SUSYTools was not initialized!!");
36  return StatusCode::FAILURE;
37  }
38 
39  if (m_isPHYSLITE && taukey.find("AnalysisTauJets")==std::string::npos){
40  ATH_MSG_ERROR("You are running on PHYSLITE derivation. Please change the Taus container to 'AnalysisTauJets'");
41  return StatusCode::FAILURE;
42  }
43 
44  const xAOD::TauJetContainer* taus = nullptr;
45  if (copy==nullptr) { // empty container provided
46  if (containerToBeCopied != nullptr) {
47  taus = containerToBeCopied;
48  }
49  else {
50  ATH_CHECK( evtStore()->retrieve(taus, taukey) );
51  }
52  std::pair<xAOD::TauJetContainer*, xAOD::ShallowAuxContainer*> shallowcopy = xAOD::shallowCopyContainer(*taus);
53  copy = shallowcopy.first;
54  copyaux = shallowcopy.second;
55  bool setLinks = xAOD::setOriginalObjectLink(*taus, *copy);
56  if (!setLinks) {
57  ATH_MSG_WARNING("Failed to set original object links on " << taukey);
58  }
59  } else { // use the user-supplied collection instead
60  ATH_MSG_DEBUG("Not retrieving tau collecton, using existing one provided by user");
61  taus=copy;
62  }
63 
64  for (const auto tau : *copy) {
65  ATH_CHECK( this->FillTau(*tau) );
66  this->IsSignalTau(*tau, m_tauPt, m_tauEta);
67  }
68  if (recordSG) {
69  ATH_CHECK( evtStore()->record(copy, "STCalib" + taukey + m_currentSyst.name()) );
70  ATH_CHECK( evtStore()->record(copyaux, "STCalib" + taukey + m_currentSyst.name() + "Aux.") );
71  }
72  return StatusCode::SUCCESS;
73 }

◆ GetTauTriggerEfficiencySF()

double ST::SUSYObjDef_xAOD::GetTauTriggerEfficiencySF ( const xAOD::TauJet tau,
const std::string &  trigExpr = "tau25_medium1_tracktwo" 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 194 of file Taus.cxx.

194  {
195 
196  double eff(1.);
197 
198  auto map_it = m_tau_trig_support.find(trigExpr);
199  if (map_it == m_tau_trig_support.end()) {
200  ATH_MSG_WARNING("The trigger item requested (" << trigExpr << ") is not supported! Please check. Setting SF to 1.");
201  return eff;
202  }
203 
204  // trigger matching (dR=0.2)
205  std::vector<std::string> chains;
206  for (auto part : std::views::split(map_it->second, ',')) chains.emplace_back(&*part.begin(), std::ranges::distance(part));
207  bool match = false;
208  for (const std::string& chain : chains)
209  if (m_trigMatchingTool->match({&tau}, chain, 0.2)) {
210  match = true;
211  break;
212  }
213  if (!match) {
214  ATH_MSG_VERBOSE("Tau did not match trigger " << trigExpr);
215  return eff;
216  }
217 
218  int trigIdx = std::distance(std::begin(m_tau_trig_support), map_it);
219  if (m_tauTrigEffTool.at(trigIdx)->getEfficiencyScaleFactor(tau, eff) != CP::CorrectionCode::Ok) {
220  ATH_MSG_ERROR("Some problem found to retrieve SF for trigger item requested (" << trigExpr << ")");
221  eff = -99;
222  }
223 
224  return eff;
225 }

◆ GetTotalElectronSF()

float ST::SUSYObjDef_xAOD::GetTotalElectronSF ( const xAOD::ElectronContainer electrons,
const bool  recoSF = true,
const bool  idSF = true,
const bool  triggerSF = true,
const bool  isoSF = true,
const std::string &  trigExpr = "singleLepton",
const bool  ecidsSF = false,
const bool  cidSF = false 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 627 of file Electrons.cxx.

627  {
628  float sf(1.);
629 
630  for (const xAOD::Electron* electron : electrons) {
631  if (!acc_passOR(*electron)) continue;
632  if (acc_signal(*electron)) { sf *= this->GetSignalElecSF(*electron, recoSF, idSF, triggerSF, isoSF, trigExpr, ecidsSF, cidSF); }
633  else { this->GetSignalElecSF(*electron, recoSF, idSF, triggerSF, isoSF, trigExpr, ecidsSF, cidSF); }
634  }
635 
636  return sf;
637 }

◆ GetTotalElectronSFsys()

float ST::SUSYObjDef_xAOD::GetTotalElectronSFsys ( const xAOD::ElectronContainer electrons,
const CP::SystematicSet systConfig,
const bool  recoSF = true,
const bool  idSF = true,
const bool  triggerSF = true,
const bool  isoSF = true,
const std::string &  trigExpr = "singleLepton",
const bool  ecidsSF = false,
const bool  cidSF = false 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 640 of file Electrons.cxx.

640  {
641  float sf(1.);
642 
643  //Set the new systematic variation
644  StatusCode ret(StatusCode::SUCCESS);
647  if (ret != StatusCode::SUCCESS) {
648  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (reco) for systematic var. " << systConfig.name() );
649  }
650  }
651 
654  if (ret != StatusCode::SUCCESS) {
655  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (id) for systematic var. " << systConfig.name() );
656  }
657  }
658 
661  if (ret != StatusCode::SUCCESS) {
662  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.name() );
663  }
664  }
665 
668  if (ret != StatusCode::SUCCESS) {
669  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (iso) for systematic var. " << systConfig.name() );
670  }
671  }
672 
675  if (ret != StatusCode::SUCCESS) {
676  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (iso high-pt) for systematic var. " << systConfig.name() );
677  }
678  }
679 
682  if (ret != StatusCode::SUCCESS) {
683  ATH_MSG_ERROR("Cannot configure ElectronChargeEfficiencyCorrectionTool for systematic var. " << systConfig.name() );
684  }
685  }
686 
687 
688  //Get the total SF for new config
689  sf = GetTotalElectronSF(electrons, recoSF, idSF, triggerSF, isoSF, trigExpr, ecidsSF, cidSF);
690 
691  //Roll back to default
694  if (ret != StatusCode::SUCCESS) {
695  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (reco) back to default.");
696  }
697  }
698 
701  if (ret != StatusCode::SUCCESS) {
702  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (id) back to default.");
703  }
704  }
705 
708  if (ret != StatusCode::SUCCESS) {
709  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (trigger) back to default.");
710  }
711  }
712 
715  if (ret != StatusCode::SUCCESS) {
716  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (iso) back to default.");
717  }
718  }
719 
722  if (ret != StatusCode::SUCCESS) {
723  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (iso high-pt) back to default.");
724  }
725  }
726 
729  if (ret != StatusCode::SUCCESS) {
730  ATH_MSG_ERROR("Cannot configure ElectronChargeEfficiencyCorrectionTool back to default.");
731  }
732  }
733 
734  return sf;
735 }

◆ GetTotalJetSF()

double ST::SUSYObjDef_xAOD::GetTotalJetSF ( const xAOD::JetContainer jets,
const bool  btagSF = true,
const bool  jvtSF = true,
const bool  fjvtSF = false 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 1131 of file Jets.cxx.

1131  {
1132 
1133  double totalSF = 1.;
1134  if (btagSF) totalSF *= BtagSF(jets);
1135 
1136  if (jvtSF && m_applyJVTCut) totalSF *= JVT_SF(jets);
1137 
1138  if (fjvtSF) totalSF *= FJVT_SF(jets);
1139 
1140  return totalSF;
1141  }

◆ GetTotalJetSFsys()

double ST::SUSYObjDef_xAOD::GetTotalJetSFsys ( const xAOD::JetContainer jets,
const CP::SystematicSet systConfig,
const bool  btagSF = true,
const bool  jvtSF = true,
const bool  fjvtSF = false 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 1144 of file Jets.cxx.

1144  {
1145 
1146  double totalSF = 1.;
1147  if (btagSF) totalSF *= BtagSFsys(jets, systConfig);
1148 
1149  if (jvtSF && m_applyJVTCut) totalSF *= JVT_SFsys(jets, systConfig);
1150 
1151  if (fjvtSF) totalSF *= FJVT_SFsys(jets, systConfig);
1152 
1153  return totalSF;
1154  }

◆ GetTotalMuonSF()

double ST::SUSYObjDef_xAOD::GetTotalMuonSF ( const xAOD::MuonContainer muons,
const bool  recoSF = true,
const bool  isoSF = true,
const std::string &  trigExpr = "HLT_mu20_iloose_L1MU15_OR_HLT_mu50",
const bool  bmhptSF = true 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 602 of file Muons.cxx.

602  {
603  double sf(1.);
604 
606  for (const xAOD::Muon* muon : muons) {
607  if( !acc_passOR(*muon) ) continue;
608  if (acc_signal(*muon)) {
609  sfmuons.push_back(muon);
610  if (recoSF || isoSF) { sf *= this->GetSignalMuonSF(*muon, recoSF, isoSF, bmhptSF); }
611  } else { // decorate baseline muons as well
612  if (recoSF || isoSF) { this->GetSignalMuonSF(*muon, recoSF, isoSF, bmhptSF, false); } //avoid OVR warnings in this case
613  }
614  }
615 
616  sf *= GetTotalMuonTriggerSF(*sfmuons.asDataVector(), trigExpr);
617 
618  return sf;
619 }

◆ GetTotalMuonSFsys()

double ST::SUSYObjDef_xAOD::GetTotalMuonSFsys ( const xAOD::MuonContainer muons,
const CP::SystematicSet systConfig,
const bool  recoSF = true,
const bool  isoSF = true,
const std::string &  trigExpr = "HLT_mu20_iloose_L1MU15_OR_HLT_mu50",
const bool  bmhptSF = true 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 622 of file Muons.cxx.

622  {
623  double sf(1.);
624  //Set the new systematic variation
626  if ( ret != StatusCode::SUCCESS) {
627  ATH_MSG_ERROR("Cannot configure MuonEfficiencyScaleFactors for systematic var. " << systConfig.name() );
628  }
629 
631  if ( ret != StatusCode::SUCCESS) {
632  ATH_MSG_ERROR("Cannot configure MuonBadMuonHighPtScaleFactors for systematic var. " << systConfig.name() );
633  }
634 
636  if ( ret != StatusCode::SUCCESS) {
637  ATH_MSG_ERROR("Cannot configure MuonTTVAEfficiencyScaleFactors for systematic var. " << systConfig.name() );
638  }
639 
641  if ( ret != StatusCode::SUCCESS) {
642  ATH_MSG_ERROR("Cannot configure MuonIsolationScaleFactors for systematic var. " << systConfig.name() );
643  }
644 
646  if ( ret != StatusCode::SUCCESS) {
647  ATH_MSG_ERROR("Cannot configure MuonHighPtIsolationScaleFactors for systematic var. " << systConfig.name() );
648  }
649 
651  if ( ret != StatusCode::SUCCESS) {
652  ATH_MSG_ERROR("Cannot configure MuonTriggerScaleFactors for systematic var. " << systConfig.name() );
653  }
654 
656  if (ret != StatusCode::SUCCESS) {
657  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.name() );
658  }
659 
661  if (ret != StatusCode::SUCCESS) {
662  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.name() );
663  }
664 
665  sf = GetTotalMuonSF(muons, recoSF, isoSF, trigExpr, bmhptSF);
666 
667  //Roll back to default
669  if ( ret != StatusCode::SUCCESS) {
670  ATH_MSG_ERROR("Cannot configure MuonEfficiencyScaleFactors back to default.");
671  }
672 
674  if ( ret != StatusCode::SUCCESS) {
675  ATH_MSG_ERROR("Cannot configure MuonBadMuonHighPtScaleFactors back to default.");
676  }
677 
679  if ( ret != StatusCode::SUCCESS) {
680  ATH_MSG_ERROR("Cannot configure MuonTTVAEfficiencyScaleFactors back to default.");
681  }
682 
684  if ( ret != StatusCode::SUCCESS) {
685  ATH_MSG_ERROR("Cannot configure MuonIsolationScaleFactors back to default.");
686  }
687 
689  if ( ret != StatusCode::SUCCESS) {
690  ATH_MSG_ERROR("Cannot configure MuonIsolationScaleFactors back to default.");
691  }
692 
694  if ( ret != StatusCode::SUCCESS) {
695  ATH_MSG_ERROR("Cannot configure MuonTriggerScaleFactors back to default.");
696  }
697 
699  if (ret != StatusCode::SUCCESS) {
700  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (trigger) back to default.");
701  }
702 
704  if (ret != StatusCode::SUCCESS) {
705  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (trigger) back to default.");
706  }
707 
708  return sf;
709 }

◆ GetTotalMuonTriggerSF()

double ST::SUSYObjDef_xAOD::GetTotalMuonTriggerSF ( const xAOD::MuonContainer sfmuons,
const std::string &  trigExpr 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 547 of file Muons.cxx.

547  {
548 
549  if (trigExpr.empty() || sfmuons.empty()) return 1.;
550 
551 
552  double trig_sf = 1.;
553 
554  int mulegs = 0;
555  const char *tmp = trigExpr.c_str();
556  while( (tmp = strstr(tmp, "mu")) ){
557  mulegs++;
558  tmp++;
559  }
560 
561  bool isdimuon = (trigExpr.find("2mu") != std::string::npos);
562  bool isOR = (trigExpr.find("OR") != std::string::npos);
563 
564  if((!isdimuon && mulegs<2) || (isdimuon && sfmuons.size()==2) || (mulegs>=2 && isOR)){ //Case 1: the tool takes easy care of the single, standard-dimuon and OR-of-single chains
565  if (m_muonTriggerSFTool->getTriggerScaleFactor( sfmuons, trig_sf, trigExpr ) == CP::CorrectionCode::Ok) {
566  ATH_MSG_DEBUG( "MuonTrig ScaleFactor " << trig_sf );
567  }
568  else{
569  ATH_MSG_DEBUG( "MuonTrig FAILED SOMEHOW");
570  }
571  }
572  else if(mulegs!=2 && isOR){ //Case 2: not supported. Not efficiency defined for (at least) one leg. Sorry...
573  ATH_MSG_WARNING( "SF for " << trigExpr << " are only supported for two muon events!");
574  }
575  else{ //Case 3: let's go the hard way...
576  //Following https://twiki.cern.ch/twiki/bin/view/Atlas/TrigMuonEfficiency
577  std::string newtrigExpr = TString(trigExpr).Copy().ReplaceAll("HLT_2","").Data();
578 
579  //redefine dimuon triggers here (2mu14 --> mu14_mu14)
580  if (isdimuon) { newtrigExpr += "_"+newtrigExpr; }
581  newtrigExpr = std::regex_replace(newtrigExpr, std::regex("HLT_"), "");
582 
583  for (auto part : std::views::split(newtrigExpr, '_')) {
584  std::string mutrig(&*part.begin(), std::ranges::distance(part));
585  double dataFactor = 1.;
586  double mcFactor = 1.;
587 
588  for (const xAOD::Muon* mu : sfmuons) {
589  // No need for additional trigger matching
590  dataFactor *= (1 - GetMuonTriggerEfficiency(*mu, "HLT_"+mutrig, true));
591  mcFactor *= (1 - GetMuonTriggerEfficiency(*mu, "HLT_"+mutrig, false));
592  }
593  if( (1-mcFactor) > 0. )
594  trig_sf *= (1-dataFactor)/(1-mcFactor);
595  }
596  }
597 
598  return trig_sf;
599 }

◆ GetTotalPhotonSF()

double ST::SUSYObjDef_xAOD::GetTotalPhotonSF ( const xAOD::PhotonContainer photons,
const bool  effSF = true,
const bool  isoSF = true,
const bool  triggerSF = false 
) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 320 of file Photons.cxx.

321 {
322  double sf(1.);
323 
324  for (const xAOD::Photon* photon : photons) {
325  if (acc_signal(*photon) && acc_passOR(*photon)) { sf *= this->GetSignalPhotonSF(*photon, effSF, isoSF, triggerSF); }
326  }
327 
328  return sf;
329 }

◆ GetTotalPhotonSFsys()

double ST::SUSYObjDef_xAOD::GetTotalPhotonSFsys ( const xAOD::PhotonContainer photons,
const CP::SystematicSet systConfig,
const bool  effSF = true,
const bool  isoSF = true,
const bool  triggerSF = false 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 332 of file Photons.cxx.

333 {
334  double sf(1.);
335 
336  for (const xAOD::Photon* photon : photons) {
337  if (acc_signal(*photon) && acc_passOR(*photon)) { sf *= this->GetSignalPhotonSFsys(*photon, systConfig, effSF, isoSF, triggerSF); }
338  }
339 
340  return sf;
341 }

◆ GetTotalTauSF()

double ST::SUSYObjDef_xAOD::GetTotalTauSF ( const xAOD::TauJetContainer taus,
const bool  idSF = true,
const bool  triggerSF = true,
const std::string &  trigExpr = "tau25_medium1_tracktwo" 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 228 of file Taus.cxx.

228  {
229 
230  double sf(1.);
231 
232  for (const xAOD::TauJet* tau : taus) {
233  // check existence of OR information
234  if (!acc_passOR.isAvailable(*tau)) {
235  ATH_MSG_WARNING("Tau does not have Overlap Removal decision set. You should only call GetTotalTauSF with taus that have been passed through OR. SF will NOT be applied!");
236  break;
237  }
238 
239  // Call this for all taus, which will add the decoration
240  double tmpSF = GetSignalTauSF(*tau, idSF, triggerSF, trigExpr);
241  if (acc_signal(*tau) && acc_passOR(*tau)) {
242  sf *= tmpSF;
243  }
244  }
245 
246  return sf;
247 }

◆ GetTotalTauSFsys()

double ST::SUSYObjDef_xAOD::GetTotalTauSFsys ( const xAOD::TauJetContainer taus,
const CP::SystematicSet systConfig,
const bool  idSF = true,
const bool  triggerSF = true,
const std::string &  trigExpr = "tau25_medium1_tracktwo" 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 250 of file Taus.cxx.

250  {
251  double sf(1.);
252 
253  //Set the new systematic variation
255  if (ret != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure TauEfficiencyCorrectionsTool for systematic var. " << systConfig.name() ); }
256 
257  for (auto& tool : m_tauTrigEffTool) {
258  ret = tool->applySystematicVariation(systConfig);
259  if (ret != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure " << tool->name() << " for systematic var. " << systConfig.name()); }
260  }
261 
262  sf = GetTotalTauSF(taus, idSF, triggerSF, trigExpr);
263 
264  //Roll back to default
266  if (ret != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure TauEfficiencyCorrectionsTool back to default"); }
267 
268  for (auto& tool : m_tauTrigEffTool) {
269  ret = tool->applySystematicVariation(m_currentSyst);
270  if (ret != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure " << tool->name() << " back to default"); }
271  }
272 
273  return sf;
274 }

◆ GetTrackJets()

StatusCode ST::SUSYObjDef_xAOD::GetTrackJets ( xAOD::JetContainer *&  copy,
xAOD::ShallowAuxContainer *&  copyaux,
const bool  recordSG = true,
const std::string &  jetkey = "",
const xAOD::JetContainer containerToBeCopied = nullptr 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 170 of file Jets.cxx.

171  {
172  if (!m_tool_init) {
173  ATH_MSG_ERROR("SUSYTools was not initialized!!");
174  return StatusCode::FAILURE;
175  }
176 
177  ATH_MSG_DEBUG("Default jetkey (trkjet): " << m_defaultTrackJets);
178  ATH_MSG_DEBUG("Function argument jetkey (trkjet): " << jetkey);
179 
180  // load default regular & btag jet keys
181  std::string jetkey_tmp = m_defaultTrackJets;
182 
183  // override default if user is passing a jetkey
184  if (!jetkey.empty()) {
185  jetkey_tmp = jetkey;
186  }
187 
188  // final settings
189  ATH_MSG_DEBUG("Key for retrieving trkjet collection (as well as bjet info): jetkey = " << jetkey_tmp);
190 
191  const xAOD::JetContainer* jets = nullptr;
192  if (copy==nullptr) { // empty container provided
193  if (containerToBeCopied != nullptr) {
194  jets = containerToBeCopied;
195  }
196  else {
197  ATH_MSG_DEBUG("Retrieve jet collection: " << jetkey_tmp);
198  ATH_CHECK( evtStore()->retrieve(jets, jetkey_tmp) );
199  }
200  std::pair<xAOD::JetContainer*, xAOD::ShallowAuxContainer*> shallowcopy = xAOD::shallowCopyContainer(*jets);
201  copy = shallowcopy.first;
202  copyaux = shallowcopy.second;
203  bool setLinks = xAOD::setOriginalObjectLink(*jets, *copy);
204  if (!setLinks) {
205  ATH_MSG_WARNING("Failed to set original object links on " << jetkey_tmp);
206  }
207  } else { // use the user-supplied collection instead
208  ATH_MSG_DEBUG("Not retrieving jet collection, using existing one provided by user");
209  jets = copy;
210  }
211 
212  //disable - notfortrackjets? // Calibrate the jets
213  //disable - notfortrackjets? ATH_CHECK(m_jetCalibTool->applyCalibration(*copy));
214 
215  // Update the jets
216  for (const auto jet : *copy) {
217  ATH_CHECK( this->FillTrackJet(*jet) );
218  }
219 
220  if (copy->size() > 1 && m_defaultTrackJets == "AntiKtVR30Rmax4Rmin02TrackJets") {
221  // Use iterators to avoid pairing the jets twice
222  for (xAOD::JetContainer::const_iterator j1 = copy->begin()+1; j1!= copy->end();++j1) {
223  const xAOD::Jet* jet1 = (*j1);
224  if (!acc_signal(*jet1)) continue;
225  for (xAOD::JetContainer::const_iterator j2 = copy->begin(); j2 != j1; ++j2) {
226  const xAOD::Jet* jet2 = (*j2);
227  if (!acc_baseline(*jet2)) continue;
228  //Reference to the use method in P4Helper: deltaR2( const xAOD::IParticle& p4, const xAOD::IParticle& , bool useRapidity=true )
229  float dr_jets = xAOD::P4Helpers::deltaR(jet1,jet2, false);
230  const xAOD::Jet* to_check = acc_VRradius(*jet1) < acc_VRradius(*jet2) ? jet1 : jet2;
231  if( dr_jets < acc_VRradius(*to_check)) dec_passDRcut(*to_check) = false;
232  //break the loop at this point???
233  }
234  }
235  }
236  if (recordSG) {
237  ATH_CHECK( evtStore()->record(copy, "STCalib" + jetkey_tmp + m_currentSyst.name()) );
238  ATH_CHECK( evtStore()->record(copyaux, "STCalib" + jetkey_tmp + m_currentSyst.name() + "Aux.") );
239  }
240  return StatusCode::SUCCESS;
241  }

◆ GetTrackMET()

StatusCode ST::SUSYObjDef_xAOD::GetTrackMET ( xAOD::MissingETContainer met,
const xAOD::JetContainer jet,
const xAOD::ElectronContainer elec = nullptr,
const xAOD::MuonContainer muon = nullptr 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 161 of file MET.cxx.

164  {
165  if (!m_tool_init) {
166  ATH_MSG_ERROR("SUSYTools was not initialized!!");
167  return StatusCode::FAILURE;
168  }
169 
170  const xAOD::MissingETContainer* metcore(nullptr);
171  if ( evtStore()->retrieve( metcore, m_inputMETCore ).isFailure() ) {
172  ATH_MSG_WARNING( "Unable to retrieve MET core container: " << m_inputMETCore );
173  return StatusCode::FAILURE;
174  }
175  const xAOD::MissingETAssociationMap* metMap(nullptr);
176  if ( evtStore()->retrieve(metMap, m_inputMETMap).isFailure() ) {
177  ATH_MSG_WARNING("Unable to retrieve MissingETAssociationMap: " << m_inputMETMap);
178  return StatusCode::FAILURE;
179  }
180  // Helper keeps track of object selection flags for this map
181  xAOD::MissingETAssociationHelper metHelper(&(*metMap));
182 
183  metHelper.resetObjSelectionFlags();
184 
185  if (elec) {
186  ATH_MSG_VERBOSE("Build electron MET");
188  for (const xAOD::Electron* el : *elec) {
189  // pass baseline selection
190  if (acc_baseline(*el)) metelectron.push_back(el);
191  }
192  ATH_CHECK( m_metMaker->rebuildMET(m_eleTerm, xAOD::Type::Electron, &met, metelectron.asDataVector(), metHelper) );
193  }
194 
195  if (muon) {
196  ATH_MSG_VERBOSE("Build muon MET");
198  for (const xAOD::Muon* mu : *muon) {
199  // pass baseline selection
200  if (acc_baseline(*mu)) metmuon.push_back(mu);
201  }
202  ATH_CHECK( m_metMaker->rebuildMET(m_muonTerm, xAOD::Type::Muon, &met, metmuon.asDataVector(), metHelper) );
203  }
204 
205  if (!jet) {
206  ATH_MSG_WARNING("Invalid jet container specified for MET rebuilding!");
207  return StatusCode::SUCCESS;
208  }
209  ATH_MSG_VERBOSE("Build jet/soft MET_Track");
210 
211  std::string softTerm = "PVSoftTrk";
212  ATH_CHECK( m_metMaker->rebuildTrackMET(m_jetTerm, softTerm, &met, jet, metcore, metHelper, true) );
213 
214  if (!isData()) {
215  m_metSystTool->setRandomSeed(static_cast<int>(1e6*met[softTerm]->phi()));
216 
217  if (m_trkMETsyst) {
218  ATH_MSG_VERBOSE("Apply trkMET systematics");
219  if ( m_metSystTool->applyCorrection(*met[softTerm],metHelper) != CP::CorrectionCode::Ok )
220  ATH_MSG_WARNING("GetMET: Failed to apply MET track (PVSoftTrk) systematics.");
221  }
222 
223  if (m_trkJetsyst) {
224  ATH_MSG_VERBOSE("Apply Ref Jet trkMET systematics");
226  ATH_MSG_WARNING("GetMET: Failed to apply MET track (RefJet) systematics.");
227  }
228 
229  }
230 
231  ATH_MSG_VERBOSE("Build MET sum");
232  ATH_CHECK( met::buildMETSum("Track", &met, met[softTerm]->source()) );
233  ATH_MSG_VERBOSE( "Done rebuilding MET." );
234 
235  ATH_MSG_VERBOSE( "Track MET: Missing Et (x,y): (" << met["Track"]->mpx() << "," << met["Track"]->mpy() << ")");
236 
237  return StatusCode::SUCCESS;
238 }

◆ GetTrigChainGroup()

const Trig::ChainGroup * ST::SUSYObjDef_xAOD::GetTrigChainGroup ( const std::string &  tr_item) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 315 of file Trigger.cxx.

315  {
316  return m_trigDecTool->getChainGroup(tr_item);
317 }

◆ GetTriggerFeatures()

Trig::FeatureContainer ST::SUSYObjDef_xAOD::GetTriggerFeatures ( const std::string &  chainName = "EF_.*",
unsigned int  condition = TrigDefs::Physics 
) const

Definition at line 426 of file Trigger.cxx.

427  {
429  }

◆ GetTriggerGlobalEfficiency() [1/2]

double ST::SUSYObjDef_xAOD::GetTriggerGlobalEfficiency ( const xAOD::ElectronContainer electrons,
const xAOD::MuonContainer muons,
const std::string &  trigExpr = "diLepton" 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 586 of file Trigger.cxx.

586  {
587 
588  double trig_eff(1.);
589  double trig_eff_data(1.);
590 
591  if (trigExpr!="multiLepton" && trigExpr!="diLepton") {
592  ATH_MSG_ERROR( "Failed to retrieve multi-lepton trigger efficiency");
593  return trig_eff;
594  }
595 
596  std::vector<const xAOD::Electron*> elec_trig;
597  for (const xAOD::Electron* electron : electrons) {
598  if (!acc_passOR(*electron)) continue;
599  if (!acc_signal(*electron)) continue;
600  elec_trig.push_back(electron);
601  }
602 
603  std::vector<const xAOD::Muon*> muon_trig;
604  for (const xAOD::Muon* muon : muons) {
605  if (!acc_passOR(*muon)) continue;
606  if (!acc_signal(*muon)) continue;
607  muon_trig.push_back(muon);
608  }
609 
610  bool matched = false;
611  if ((elec_trig.size()+muon_trig.size())>1 && trigExpr=="diLepton") {
613  ATH_MSG_ERROR ("trigGlobEffCorrTool::Trigger matching could not be checked, interrupting execution.");
614  }
615  } else if ((elec_trig.size()+muon_trig.size())>2 && trigExpr=="multiLepton") {
617  ATH_MSG_ERROR ("trigGlobEffCorrTool::Trigger matching could not be checked, interrupting execution.");
618  }
619  }
620 
622  if ((elec_trig.size()+muon_trig.size())>1 && trigExpr=="diLepton" && matched) {
623  result = m_trigGlobalEffCorrTool_diLep->getEfficiency( elec_trig, muon_trig, trig_eff_data, trig_eff);
624  }
625  else if ((elec_trig.size()+muon_trig.size())>2 && trigExpr=="multiLepton" && matched) {
626  result = m_trigGlobalEffCorrTool_multiLep->getEfficiency( elec_trig, muon_trig, trig_eff_data, trig_eff);
627  }
628 
629  switch (result) {
631  ATH_MSG_ERROR( "Failed to retrieve multi-lepton trigger efficiency");
632  return 1.;
634  ATH_MSG_VERBOSE( "OutOfValidityRange found for multi-lepton trigger efficiency");
635  return 1.;
636  default:
637  break;
638  }
639 
640  if (isData()) return trig_eff_data;
641  else return trig_eff;
642 }

◆ GetTriggerGlobalEfficiency() [2/2]

double ST::SUSYObjDef_xAOD::GetTriggerGlobalEfficiency ( const xAOD::PhotonContainer photons,
const std::string &  trigExpr = "diPhoton" 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 647 of file Trigger.cxx.

647  {
648 
649  double trig_eff(1.);
650  double trig_eff_data(1.);
651 
652  if (trigExpr!="diPhoton") {
653  ATH_MSG_ERROR( "Failed to retrieve diphoton trigger efficiency");
654  return trig_eff;
655  }
656 
657  std::vector<const xAOD::Photon*> ph_trig;
658  for (const xAOD::Photon* photon : photons) {
659  if (!acc_passOR(*photon)) continue;
660  if (!acc_signal(*photon)) continue;
661  ph_trig.push_back(photon);
662  }
663 
665  if (ph_trig.size()>1) {
666  result = m_trigGlobalEffCorrTool_diPhoton->getEfficiency(ph_trig, trig_eff_data, trig_eff);
667  }
668 
669  switch (result) {
671  ATH_MSG_ERROR( "Failed to retrieve diphoton trigger efficiency");
672  return 1.;
674  ATH_MSG_VERBOSE( "OutOfValidityRange found for diphoton trigger efficiency");
675  return 1.;
676  default:
677  break;
678  }
679 
680  if (isData()) return trig_eff_data;
681  else return trig_eff;
682 }

◆ GetTriggerGlobalEfficiencySF() [1/2]

double ST::SUSYObjDef_xAOD::GetTriggerGlobalEfficiencySF ( const xAOD::ElectronContainer electrons,
const xAOD::MuonContainer muons,
const std::string &  trigExpr = "diLepton" 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 431 of file Trigger.cxx.

431  {
432 
433  double trig_sf(1.);
434 
435  if (trigExpr!="multiLepton" && trigExpr!="diLepton") {
436  ATH_MSG_ERROR( "Failed to retrieve multi-lepton trigger SF");
437  return trig_sf;
438  }
439 
440  std::vector<const xAOD::Electron*> elec_trig;
441  for (const xAOD::Electron* electron : electrons) {
442  if (!acc_passOR(*electron)) continue;
443  if (!acc_signal(*electron)) continue;
444  elec_trig.push_back(electron);
445  }
446 
447  std::vector<const xAOD::Muon*> muon_trig;
448  for (const xAOD::Muon* muon : muons) {
449  if (!acc_passOR(*muon)) continue;
450  if (!acc_signal(*muon)) continue;
451  muon_trig.push_back(muon);
452  }
453 
454  bool matched = false;
455  if ((elec_trig.size()+muon_trig.size())>1 && trigExpr=="diLepton") {
457  ATH_MSG_ERROR ("trigGlobEffCorrTool::Trigger matching could not be checked, interrupting execution.");
458  }
459  } else if ((elec_trig.size()+muon_trig.size())>2 && trigExpr=="multiLepton") {
461  ATH_MSG_ERROR ("trigGlobEffCorrTool::Trigger matching could not be checked, interrupting execution.");
462  }
463  }
464 
466  if ((elec_trig.size()+muon_trig.size())>1 && trigExpr=="diLepton" && matched) {
467  result = m_trigGlobalEffCorrTool_diLep->getEfficiencyScaleFactor( elec_trig, muon_trig, trig_sf);
468  }
469  else if ((elec_trig.size()+muon_trig.size())>2 && trigExpr=="multiLepton" && matched) {
470  result = m_trigGlobalEffCorrTool_multiLep->getEfficiencyScaleFactor( elec_trig, muon_trig, trig_sf);
471  }
472 
473  switch (result) {
475  ATH_MSG_ERROR( "Failed to retrieve multi-lepton trigger SF");
476  return 1.;
478  ATH_MSG_VERBOSE( "OutOfValidityRange found for multi-lepton trigger SF");
479  return 1.;
480  default:
481  break;
482  }
483 
484  return trig_sf;
485 }

◆ GetTriggerGlobalEfficiencySF() [2/2]

double ST::SUSYObjDef_xAOD::GetTriggerGlobalEfficiencySF ( const xAOD::PhotonContainer photons,
const std::string &  trigExpr = "diPhoton" 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 529 of file Trigger.cxx.

529  {
530 
531  double trig_sf(1.);
532 
533  if (trigExpr!="diPhoton") {
534  ATH_MSG_ERROR( "Failed to retrieve diphoton trigger SF");
535  return trig_sf;
536  }
537 
538  std::vector<const xAOD::Photon*> ph_trig;
539  for (const xAOD::Photon* photon : photons) {
540  if (!acc_passOR(*photon)) continue;
541  if (!acc_signal(*photon)) continue;
542  ph_trig.push_back(photon);
543  }
544 
546  if (ph_trig.size()>1) {
548  }
549 
550  switch (result) {
552  ATH_MSG_ERROR( "Failed to retrieve diphoton trigger SF");
553  return 1.;
555  ATH_MSG_VERBOSE( "OutOfValidityRange found for diphoton trigger SF");
556  return 1.;
557  default:
558  break;
559  }
560 
561  return trig_sf;
562 }

◆ GetTriggerGlobalEfficiencySFsys() [1/2]

double ST::SUSYObjDef_xAOD::GetTriggerGlobalEfficiencySFsys ( const xAOD::ElectronContainer electrons,
const xAOD::MuonContainer muons,
const CP::SystematicSet systConfig,
const std::string &  trigExpr = "diLepton" 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 487 of file Trigger.cxx.

487  {
488 
489  double sf(1.);
490 
491  //Set the new systematic variation
492  if (trigExpr == "diLepton") {
494  if (ret != StatusCode::SUCCESS) {
495  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (dilepton trigger) for systematic var. " << systConfig.name() );
496  }
497  }
498 
499  if (trigExpr == "multiLepton") {
501  if (ret != StatusCode::SUCCESS) {
502  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (multi-lepton trigger) for systematic var. " << systConfig.name() );
503  }
504  }
505 
506  //Get the SF for new config
507  sf = GetTriggerGlobalEfficiencySF (electrons, muons, trigExpr);
508 
509  //Roll back to default
510  if (trigExpr == "diLepton") {
512  if (ret != StatusCode::SUCCESS) {
513  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (dilepton trigger) back to default.");
514  }
515  }
516  if (trigExpr == "multiLepton") {
518  if (ret != StatusCode::SUCCESS) {
519  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (multi-lepton trigger) back to default.");
520  }
521  }
522 
523  return sf;
524 }

◆ GetTriggerGlobalEfficiencySFsys() [2/2]

double ST::SUSYObjDef_xAOD::GetTriggerGlobalEfficiencySFsys ( const xAOD::PhotonContainer photons,
const CP::SystematicSet systConfig,
const std::string &  trigExpr = "diPhoton" 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 564 of file Trigger.cxx.

564  {
565 
566  double sf(1.);
567 
568  //Set the new systematic variation
570  if (ret != StatusCode::SUCCESS) {
571  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (diphoton trigger) for systematic var. " << systConfig.name() );
572  }
573 
574  //Get the SF for new config
575  sf = GetTriggerGlobalEfficiencySF (photons, trigExpr);
576 
577  //Roll back to default
579  if (ret != StatusCode::SUCCESS) {
580  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (diphoton trigger) back to default.");
581  }
582 
583  return sf;
584 }

◆ GetTriggerOR()

std::vector< std::string > ST::SUSYObjDef_xAOD::GetTriggerOR ( const std::string &  trigExpr) const

Definition at line 320 of file Trigger.cxx.

320  {
321 
322  static const std::string delOR = "_OR_";
323  std::vector<std::string> trigchains = {};
324  std::string newtrigExpr = TString(trigExpr).Copy().ReplaceAll("||",delOR).Data();
325  newtrigExpr = TString(trigExpr).Copy().ReplaceAll(" ","").Data();
326 
327  size_t pos = 0;
328  while ((pos = newtrigExpr.find(delOR)) != std::string::npos) {
329  trigchains.push_back( "HLT_"+newtrigExpr.substr(0, pos) );
330  newtrigExpr.erase(0, pos + delOR.length());
331  }
332  if(pos==std::string::npos)
333  trigchains.push_back("HLT_"+newtrigExpr);
334 
335  return trigchains;
336  }

◆ GetTriggerTokens()

void ST::SUSYObjDef_xAOD::GetTriggerTokens ( std::string  trigExpr,
std::vector< std::string > &  v_trigs15_cache,
std::vector< std::string > &  v_trigs16_cache,
std::vector< std::string > &  v_trigs17_cache,
std::vector< std::string > &  v_trigs18_cache,
std::vector< std::string > &  v_trigs22_cache,
std::vector< std::string > &  v_trigs23_cache,
std::vector< std::string > &  v_trigs24_cache 
) const

Definition at line 338 of file Trigger.cxx.

338  {
339 
340  // e.g. 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
341 
342  static const std::string del15 = "_2015_";
343  static const std::string del16 = "_2016_";
344  static const std::string del17 = "_2017_";
345 
346  size_t pos = 0;
347  std::string token15, token16, token17, token18, token22, token23, token24;
348 
349  //get trigger tokens for 2015, 2016, 2017, 2018 and 2022, 2023, 2024
350  if ( (pos = trigExpr.find(del15)) != std::string::npos) {
351  trigExpr.erase(0, pos + del15.length());
352 
353  pos = 0;
354  while ((pos = trigExpr.find(del16)) != std::string::npos) {
355  token15 = trigExpr.substr(0, pos);
356  token16 = trigExpr.erase(0, pos + del16.length() + del17.length() - 1);
357  // 2016-2018 use exact the same trigger string
358  token17 = token16;
359  token18 = token16;
360  }
361  }
362 
363  // Find year positions (or npos if not present)
364  size_t p22 = trigExpr.find("2022");
365  size_t p23 = trigExpr.find("2023");
366  size_t p24 = trigExpr.find("2024");
367 
368  auto next_pos = [&](size_t self) {
369  size_t next = std::string::npos;
370 
371  if (self == p22) {
372  if (p23 > self && p23 < next) next = p23;
373  if (p24 > self && p24 < next) next = p24;
374  }
375  else if (self == p23) {
376  if (p22 > self && p22 < next) next = p22;
377  if (p24 > self && p24 < next) next = p24;
378  }
379  else if (self == p24) {
380  if (p22 > self && p22 < next) next = p22;
381  if (p23 > self && p23 < next) next = p23;
382  }
383 
384  return next;
385  };
386 
387  // Extract 2022,2023,2024 block
388  if (p22 != std::string::npos) {size_t end = next_pos(p22); token22 = trigExpr.substr(p22, end - p22);}
389  if (p23 != std::string::npos) {size_t end = next_pos(p23); token23 = trigExpr.substr(p23, end - p23);}
390  if (p24 != std::string::npos) {size_t end = next_pos(p24); token24 = trigExpr.substr(p24, end - p24);}
391 
392  // Remove trailing underscores from tokens if present
393  std::string* toks[] = { &token22, &token23, &token24 };
394  for (auto t : toks) {
395  while (!t->empty() && t->back() == '_') t->pop_back();
396  }
397 
398  //Redefine in case of custom user input
399  if(!m_isRun3){
400  if(token15.empty()) token15 = trigExpr;
401  if(token16.empty()) token16 = trigExpr;
402  if(token17.empty()) token17 = trigExpr;
403  if(token18.empty()) token18 = trigExpr;
404  }
405  else{
406  if(token22.empty()) token22 = trigExpr;
407  if(token23.empty()) token23 = trigExpr;
408  if(token24.empty()) token24 = trigExpr;
409  }
410 
411  //get trigger chains for matching in 2015 and 2018
412  if(!m_isRun3){
413  v_trigs15_cache = GetTriggerOR(token15);
414  v_trigs16_cache = GetTriggerOR(token16);
415  v_trigs17_cache = GetTriggerOR(token17);
416  v_trigs18_cache = GetTriggerOR(token18);
417  }
418  //get trigger chains for matching in 2022
419  else{
420  v_trigs22_cache = GetTriggerOR(token22);
421  v_trigs23_cache = GetTriggerOR(token23);
422  v_trigs24_cache = GetTriggerOR(token24);
423  }
424  }

◆ GetTrigPrescale()

float ST::SUSYObjDef_xAOD::GetTrigPrescale ( const std::string &  tr_item) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 310 of file Trigger.cxx.

310  {
311  return m_trigDecTool->getPrescale(tr_item);
312 }

◆ handle()

void asg::AsgMetadataTool::handle ( const Incident &  inc)
protectedvirtualinherited

Function receiving incidents from IncidentSvc/TEvent.

Reimplemented in Trig::TrigDecisionTool.

Definition at line 135 of file AsgMetadataTool.cxx.

135  {
136 
137  // Tell the user what's happening:
138  ATH_MSG_VERBOSE( "Callback received with incident: " << inc.type() );
139 
140  // Call the appropriate member function:
141  if( inc.type() == IncidentType::BeginInputFile ) {
142  m_beginInputFileCalled = true;
143  if( beginInputFile().isFailure() ) {
144  ATH_MSG_FATAL( "Failed to call beginInputFile()" );
145  throw std::runtime_error( "Couldn't call beginInputFile()" );
146  }
147  } else if( inc.type() == IncidentType::EndInputFile ) {
148  if( endInputFile().isFailure() ) {
149  ATH_MSG_FATAL( "Failed to call endInputFile()" );
150  throw std::runtime_error( "Couldn't call endInputFile()" );
151  }
152  } else if( inc.type() == IncidentType::BeginEvent ) {
153  // If the tool didn't catch the begin input file incident for the
154  // first input file of the job, then call the appropriate function
155  // now.
156  if( ! m_beginInputFileCalled ) {
157  m_beginInputFileCalled = true;
158  if( beginInputFile().isFailure() ) {
159  ATH_MSG_FATAL( "Failed to call beginInputFile()" );
160  throw std::runtime_error( "Couldn't call beginInputFile()" );
161  }
162  }
163  if( beginEvent().isFailure() ) {
164  ATH_MSG_FATAL( "Failed to call beginEvent()" );
165  throw std::runtime_error( "Couldn't call beginEvent()" );
166  }
167 
168  #ifdef XAOD_STANDALONE
169  } else if( inc.type() == IncidentType::MetaDataStop ) {
170  if( metaDataStop().isFailure() ) {
171  ATH_MSG_FATAL( "Failed to call metaDataStop()" );
172  throw std::runtime_error( "Couldn't call metaDataStop()" );
173  }
174 
175  #endif // XAOD_STANDALONE
176  } else {
177  ATH_MSG_WARNING( "Unknown incident type received in AsgMetaDataTool: " << inc.type() );
178  }
179 
180  return;
181  }

◆ initialize()

StatusCode ST::SUSYObjDef_xAOD::initialize ( )
finaloverridevirtual

Dummy implementation of the initialisation function.

It's here to allow the dual-use tools to skip defining an initialisation function. Since many are doing so...

Reimplemented from asg::AsgTool.

Definition at line 885 of file SUSYObjDef_xAOD.cxx.

885  {
886 
887  if (m_tool_init) {
888  ATH_MSG_ERROR("Initialising for a second time -- something is wrong!");
889  return StatusCode::FAILURE;
890  }
891 
892  // Greet the user:
893  ATH_MSG_INFO( "Initialising... " );
894 
895  bool autoconf(false);
896 #ifndef XAOD_STANDALONE // For now metadata is Athena-only
897  if ( m_dataSource < 0 ) {
898  autoconf = true;
899  ATH_MSG_INFO("Autoconfiguring: dataSource, mcCampaign, isPHYSLITE");
900  std::string projectName = "";
901  ATH_CHECK( AthAnalysisHelper::retrieveMetadata("/TagInfo", "project_name", projectName, inputMetaStore() ) );
902  if ( projectName == "IS_SIMULATION" ) {
903  std::string simFlavour = "";
904  ATH_CHECK( AthAnalysisHelper::retrieveMetadata("/Simulation/Parameters", "SimulationFlavour", simFlavour, inputMetaStore() ) );
905  TString s(simFlavour); s.ToUpper();
906  m_dataSource = s.Contains("ATLFAST") ? AtlfastII : FullSim;
907  } else if (projectName.compare(0, 4, "data") == 0 ) {
908  m_dataSource = Data;
909  } else {
910  ATH_MSG_ERROR("Failed to autoconfigure -- project_name matches neither IS_SIMULATION nor data!");
911  return StatusCode::FAILURE;
912  }
913 
914  }
915 #endif
916 
918 
919  //Read configuration from file (stored as Property)
920  ATH_CHECK( readConfig() );
921 
922  if (m_dataSource < 0) {
923  ATH_MSG_FATAL( "Data source incorrectly configured!!" );
924  ATH_MSG_FATAL("You must set the DataSource property to Data, FullSim or AtlfastII !!");
925  if (autoconf) ATH_MSG_FATAL("Autoconfiguration seems to have failed!");
926  // if(m_useLeptonTrigger<0) ATH_MSG_ERROR( "UseLeptonTrigger not set");
927  ATH_MSG_FATAL( "Exiting... " );
928  return StatusCode::FAILURE;
929  }
930  ATH_MSG_DEBUG( "Configured: IsData: " << isData() );
931  ATH_MSG_DEBUG( "Configured: IsAtlfast: " << isAtlfast() );
932 
933  switch (m_jetInputType) {
937  break;
938  default:
940  return StatusCode::FAILURE;
941  }
942 
943  if (m_inputMETSuffix.empty()){
945  }
947  ATH_MSG_INFO( "Configured for jet collection: " << m_defaultJets );
948 
949  m_defaultTruthJets = "AntiKt4TruthJets";
950  const xAOD::FileMetaData* fmd = nullptr;
951  std::string dataType;
952  if ( inputMetaStore()->contains<xAOD::FileMetaData>("FileMetaData") && inputMetaStore()->retrieve(fmd,"FileMetaData").isSuccess() )
954  if ( dataType.compare("StreamDAOD_PHYS")==0 || dataType.compare("StreamDAOD_PHYSLITE")==0 ) m_defaultTruthJets = "AntiKt4TruthDressedWZJets";
955  if ( dataType.compare("StreamDAOD_PHYSLITE")==0) m_isPHYSLITE = true;
956 
957  ATH_MSG_INFO( "Configured for truth jet collection: " << m_defaultTruthJets );
958 
959  m_inputMETCore = m_isPHYSLITE? "MET_Core_AnalysisMET":"MET_Core_" + m_inputMETSuffix;
960  m_inputMETMap = m_isPHYSLITE? "METAssoc_AnalysisMET":"METAssoc_" + m_inputMETSuffix;
961 
962  ATH_MSG_DEBUG ( "Build MET Core: " << m_inputMETCore);
963  ATH_MSG_DEBUG ( "Build MET with map: " << m_inputMETMap);
964 
965  m_jetCleanDFName = TString::Format("DFCommonJets_jetClean_%s", m_badJetCut.c_str());
967 
968  // the decorations are named like DFCommonElectronsLHTight, DFCommonElectronsDNNTight or DFCommonElectronsDNNTightNoCF
969  m_eleIdBaselineDFName = m_eleIdBaseline.find("DNN") == std::string::npos ? "DFCommonElectronsLH" : "DFCommonElectronsDNN";
970  m_eleIdBaselineDFName += TString(m_eleIdBaseline).ReplaceAll("LooseAndBLayer","LooseBL").ReplaceAll("LLH","").ReplaceAll("DNNnoCF","").ReplaceAll("DNN","").Data();
971  if (m_eleIdBaseline.find("noCF") != std::string::npos)
972  m_eleIdBaselineDFName += "NoCF";
974 
975  m_eleIdDFName = m_eleId.find("DNN") == std::string::npos ? "DFCommonElectronsLH" : "DFCommonElectronsDNN";
976  m_eleIdDFName += TString(m_eleId).ReplaceAll("LooseAndBLayer","LooseBL").ReplaceAll("LLH","").ReplaceAll("DNNnoCF","").ReplaceAll("DNN","").Data();
977  if (m_eleId.find("noCF") != std::string::npos)
978  m_eleIdDFName += "NoCF";
980 
981  m_photonIdBaselineDFName = "DFCommonPhotonsIsEM";
982  m_photonIdBaselineDFName += TString(m_photonIdBaseline).Data();
984 
985  m_photonIdDFName = "DFCommonPhotonsIsEM";
986  m_photonIdDFName += TString(m_photonId).Data();
988 
989  // autoconfigure PRW tool if m_autoconfigPRW==true
990  if (m_autoconfigPRWPath == "dev/PileupReweighting/share/")
992  else
993  // need to set a full path if you don't use the one in CVMFS
995 
996  // Read Handles
999 
1000  // Write Handles
1002  ATH_CHECK( m_outMuonLocation.initialize() );
1003 
1004  ATH_CHECK( this->SUSYToolsInit() );
1005 
1006  ATH_MSG_VERBOSE("Done with tool retrieval");
1007 
1008  m_tool_init = true;
1009 
1010  // Return gracefully:
1011  return StatusCode::SUCCESS;
1012 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ inputMetaStore()

AsgMetadataTool::MetaStorePtr_t asg::AsgMetadataTool::inputMetaStore ( ) const
inherited

Accessor for the input metadata store.

Definition at line 93 of file AsgMetadataTool.cxx.

93  {
94 
95 #ifdef XAOD_STANDALONE
96  return &m_inputMetaStore;
97 #else // XAOD_STANDALONE
98  return m_inputMetaStore;
99 #endif // XAOD_STANDALONE
100  }

◆ isAtlfast()

bool ST::SUSYObjDef_xAOD::isAtlfast ( ) const
inlinefinaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 158 of file SUSYObjDef_xAOD.h.

158 {return m_dataSource == AtlfastII;}

◆ IsBadJet()

bool ST::SUSYObjDef_xAOD::IsBadJet ( const xAOD::Jet input) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 746 of file Jets.cxx.

746  {
747 
748  if ( !acc_passOR(input) ) return false;
749 
750  float ptcut = 20e3;
751  if ( m_jetPt < ptcut ) ptcut = m_jetPt;
752 
753  bool isPileup = !acc_passJvt(input);
754 
755  if ( input.pt() <= ptcut || isPileup ) return false;
756 
757  if (m_acc_jetClean.isAvailable(input)) {
758  dec_bad(input) = !m_acc_jetClean(input);
759  } else {
760  ATH_MSG_VERBOSE("DFCommon jet cleaning variable not available ... setting 'bad' decorator to 0.");
761  dec_bad(input) = 0;
762  // the jet cleaning decisions are only calculable at AOD now
763  // dec_bad(input) = m_jetCleaningTool.empty() ? false : !m_jetCleaningTool->keep(input);
764  }
765 
766  ATH_MSG_VERBOSE( "JET isbad?: " << static_cast<int>(acc_bad(input)));
767 
768  return acc_bad(input);
769  }

◆ IsBadMuon()

bool ST::SUSYObjDef_xAOD::IsBadMuon ( const xAOD::Muon input,
const float  qopcut 
) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 405 of file Muons.cxx.

406 {
407  const static SG::Decorator<char> dec_bad("bad");
408  dec_bad(input) = false;
409 
410  const static SG::Decorator<char> dec_bad_highPt("bad_highPt");
411  dec_bad_highPt(input) = false;
412 
413  const xAOD::TrackParticle* track;
414  if (input.muonType() == xAOD::Muon::SiliconAssociatedForwardMuon) {
415  track = input.trackParticle(xAOD::Muon::CombinedTrackParticle);
416  if (!track) return false; // don't treat SAF muons without CB track further
417  }
418  else{
419  track = input.primaryTrackParticle();
420  if (!track){
421  ATH_MSG_WARNING("Non-SAF muon without a track; cannot test IsBadMuon criteria");
422  return false;
423  }
424  }
425 
426  float Rerr = Amg::error(track->definingParametersCovMatrix(), 4) / std::abs(track->qOverP());
427  ATH_MSG_VERBOSE( "Track momentum error (%): " << Rerr * 100 );
428  bool isbad = Rerr > qopcut;
429  bool isbadHighPt = Rerr > qopcut;
430 
431  //new recommendation from MCP
432  isbad |= m_muonSelectionTool->isBadMuon(input);
433 
434  //new recommendation from MCP (at HighPT)
435  isbadHighPt |= m_muonSelectionHighPtTool->isBadMuon(input);
436 
437  dec_bad(input) = isbad;
438  dec_bad_highPt(input) = isbadHighPt;
439 
440  ATH_MSG_VERBOSE( "MUON isbad?: " << isbad );
441  return isbad;
442 }

◆ IsBJet()

bool ST::SUSYObjDef_xAOD::IsBJet ( const xAOD::Jet input) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 772 of file Jets.cxx.

772  {
773 
774  bool isbjet = bool(m_btagSelTool->accept(input));
775  dec_bjet(input) = isbjet;
776 
777  if (SetBtagWeightDecorations(input, m_btagSelTool, m_BtagTagger).isFailure())
778  ANA_MSG_ERROR("Couldn't set b-tag decorations for jet, is-b = " << (isbjet?"true":"false") << ", pT = " << input.pt()/1000.);
779 
780  return isbjet;
781  }

◆ IsBJetContinuous()

int ST::SUSYObjDef_xAOD::IsBJetContinuous ( const xAOD::Jet input) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 794 of file Jets.cxx.

794  {
796  // Cheatsheet:
797  // returns 6 if between 65% and 0%
798  // returns 5 if between 70% and 65%
799  // returns 4 if between 77% and 70%
800  // returns 3 if between 85% and 77%
801  // returns 2 if between 90% and 85%
802  // returns 1 if between 100% and 90%
803  // returns 0 if smaller than -1e4-> should never happen
804  // return -1 if bigger than 1e4 or not in b-tagging acceptance
806 
807  int isbjet = m_btagSelTool->getQuantile(input);
808  dec_bjet(input) = isbjet;
809 
810  if(SetBtagWeightDecorations(input, m_btagSelTool, m_BtagTagger).isFailure())
811  ANA_MSG_ERROR("Couldn't set continuous b-tag decorations for jet, is-b = " << isbjet << ", pT = " << input.pt()/1000.);
812 
813  return isbjet;
814  }

◆ IsBJetLoose()

bool ST::SUSYObjDef_xAOD::IsBJetLoose ( const xAOD::Jet input) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 681 of file Jets.cxx.

681  {
682  bool isbjet_loose = false;
683  if (m_orBJetPtUpperThres < 0 || m_orBJetPtUpperThres > input.pt())
684  isbjet_loose = bool(m_btagSelTool_OR->accept(input)); //note : b-tag applies only to jet with eta < 2.5
685  return isbjet_loose;
686  }

◆ IsCosmicMuon()

bool ST::SUSYObjDef_xAOD::IsCosmicMuon ( const xAOD::Muon input,
const float  z0cut,
const float  d0cut 
) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 444 of file Muons.cxx.

445 {
446  dec_cosmic(input) = false;
447 
448  const xAOD::TrackParticle* track(nullptr);
449  if (input.muonType() == xAOD::Muon::SiliconAssociatedForwardMuon) {
450  track = input.trackParticle(xAOD::Muon::CombinedTrackParticle);
451  if (!track){
452  ATH_MSG_VERBOSE("WARNING: SAF muon without CB track found. Not possible to check cosmic muon criteria");
453  return false; // don't treat SAF muons without CB track further
454  }
455  }
456  else {
457  track = input.primaryTrackParticle();
458  if (!track){
459  ATH_MSG_WARNING("Non-SAF muon without primary track particle found. Not possible to check cosmic muon criteria");
460  return false;
461  }
462  }
463 
464  double mu_d0 = track->d0();
465  const xAOD::Vertex* pv = this->GetPrimVtx();
466  double primvertex_z = pv ? pv->z() : 0;
467  double mu_z0_exPV = track->z0() + track->vz() - primvertex_z;
468 
469  bool isCosmicMuon = (std::abs(mu_z0_exPV) >= z0cut || std::abs(mu_d0) >= d0cut);
470 
471  if (isCosmicMuon) {
472  ATH_MSG_VERBOSE("COSMIC PV Z = " << primvertex_z << ", track z0 = " << mu_z0_exPV << ", track d0 = " << mu_d0);
473  }
474 
475  dec_cosmic(input) = isCosmicMuon;
476  return isCosmicMuon;
477 }

◆ isData()

bool ST::SUSYObjDef_xAOD::isData ( ) const
inlinefinaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 157 of file SUSYObjDef_xAOD.h.

157 {return m_dataSource == Data;}

◆ IsHighPtMuon()

bool ST::SUSYObjDef_xAOD::IsHighPtMuon ( const xAOD::Muon input) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 386 of file Muons.cxx.

390 {
391  if (input.pt() < 3e3){
392  ATH_MSG_DEBUG("No HighPt check supported for muons below 3GeV! False.");
393  dec_passedHighPtCuts(input) = false;
394  return false;
395  }
396 
397  bool isHighPt=false;
398  isHighPt = bool(m_muonSelectionHighPtTool->accept(input));
399  dec_passedHighPtCuts(input) = isHighPt;
400 
401  return isHighPt;
402 }

◆ IsMETTrigPassed() [1/2]

bool ST::SUSYObjDef_xAOD::IsMETTrigPassed ( const std::string &  triggerName,
bool  j400_OR = false,
const std::string &  L1_name = "L1_XE50" 
) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 63 of file Trigger.cxx.

63  {
64  // NB - this now applies to the entire function...
65 
66  // First check if we're affected by the L1_XE50 bug
67  bool L1_pass = m_trigDecTool->isPassed(L1_name);
68  bool HLT_noalg_L1J400 = m_trigDecTool->isPassed("HLT_noalg_L1J400");
69  if (!L1_pass && j400_OR && HLT_noalg_L1J400) {
70  return emulateHLT(triggerName);
71  }
72  else if (L1_pass) {
73  // See if the TDT knows about this
74  {
75  std::scoped_lock lock (m_triggerCacheMutex);
76  if (isTrigInTDT(lock, triggerName) ) return m_trigDecTool->isPassed(triggerName);
77  }
78  return emulateHLT(triggerName);
79  }
80  return false;
81 }

◆ IsMETTrigPassed() [2/2]

bool ST::SUSYObjDef_xAOD::IsMETTrigPassed ( unsigned int  runnumber = 0,
bool  j400_OR = false 
) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 30 of file Trigger.cxx.

30  {
31 
32  // Returns MET trigger decision for recommended lowest unprescaled evolution described in
33  // https://twiki.cern.ch/twiki/bin/viewauth/Atlas/LowestUnprescaled
34  // For period vs run number, see https://atlas-tagservices.cern.ch/tagservices/RunBrowser/runBrowserReport/rBR_Period_Report.php
35 
36  // if no runNumber specified, just read it from the current event
37  unsigned int rn;
38  if(runnumber>0){
39  rn = runnumber;
40  }
41  else{
42  rn = GetRunNumber(); // it takes care of dealing with data and MC
43  }
44 
45  int year = treatAsYear(rn);
46 
47  if (year == 2015) return IsMETTrigPassed("HLT_xe70_mht",j400_OR); //2015
48  else if(year == 2016 && rn >= 296939 && rn <= 302872 ) return IsMETTrigPassed("HLT_xe90_mht_L1XE50",j400_OR); //2016 A-D3
49  else if(year == 2016 && rn >= 302919 && rn <= 303892 ) return IsMETTrigPassed("HLT_xe100_mht_L1XE50",j400_OR); //2016 D4-F1
50  else if(year == 2016 && rn >= 303943) return IsMETTrigPassed("HLT_xe110_mht_L1XE50",j400_OR); //2016 F2-(open)
51  else if(year == 2017 && rn >= 325713 && rn <= 331975 ) return IsMETTrigPassed("HLT_xe110_pufit_L1XE55", false,"L1_XE55"); // 2017 B1-D5
52  else if(year == 2017 && rn >= 332303 ) return IsMETTrigPassed("HLT_xe110_pufit_L1XE50", false); // 2017 D6-(open)
53  else if(year == 2018 && rn >= 348885 && rn <= 350013 ) return IsMETTrigPassed("HLT_xe110_pufit_xe70_L1XE50", false); // 2018 B-C5
54  else if(year == 2018 && rn >= 350067 ) return IsMETTrigPassed("HLT_xe110_pufit_xe65_L1XE50", false); // 2018 C5-(open)
55  else if(year == 2022) return IsMETTrigPassed("HLT_xe65_cell_xe90_pfopufit_L1XE50",false); // 2022
56  else if(year == 2023) return IsMETTrigPassed("HLT_xe65_cell_xe90_pfopufit_L1XE50",false); // 2023
57  else if(year == 2024) return IsMETTrigPassed("HLT_xe65_cell_xe105_nn_L1jXE100",false,"L1_jXE100"); // 2024
58 
59  return false;
60 }

◆ isNominal()

bool ST::SUSYObjDef_xAOD::isNominal ( const CP::SystematicSet syst) const

Definition at line 2111 of file SUSYObjDef_xAOD.cxx.

2111  {
2112  return syst.name().empty();
2113 }

◆ isPrompt()

bool ST::SUSYObjDef_xAOD::isPrompt ( const xAOD::IParticle part) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 24 of file Truth.cxx.

24  {
25 
26  const int type = acc_truthType(*part);
27  int origin = acc_truthOrigin(*part);
28  int originbkg = 0;
29  if(acc_bkgTruthOrigin.isAvailable(*part)){ //only in SUSY2,3,5 for the moment!
30  originbkg = acc_bkgTruthOrigin(*part);
31  }
32  else{
33  ATH_MSG_DEBUG("::isPrompt() : No bkgTruthOrigin decoration available. Returning false by default.");
34  return false;
35  }
36 
37  //Electrons
38  if( part->type() == xAOD::Type::Electron ){
39  switch(type){
41  if(origin != MCTruthPartClassifier::PhotonConv) return false;
42  if(originbkg == MCTruthPartClassifier::FSRPhot || originbkg == MCTruthPartClassifier::BremPhot) return true;
43  origin = originbkg;
44  /* FALLTHRU */
45  case MCTruthPartClassifier::IsoElectron:
46  return (origin == MCTruthPartClassifier::top
49  || origin == MCTruthPartClassifier::Higgs
54  || origin == MCTruthPartClassifier::NuRMu
56  || origin == MCTruthPartClassifier::LQ
57  || origin == MCTruthPartClassifier::SUSY);
58  default:
59  return false;
60  }
61  // NB: will classify a few muon/quark brems as prompt electrons, but a small effect
62  }
63  if( part->type() == xAOD::Type::Muon ){
65  }
66  else{
67  ATH_MSG_DEBUG("::isPrompt() : Only Electrons supported at the moment!");
68  }
69 
70  //Photons ... ?
71  //Taus ... ?
72  return false;
73 }

◆ IsSignalElectron()

bool ST::SUSYObjDef_xAOD::IsSignalElectron ( const xAOD::Electron input,
const float  etcut,
const float  d0sigcut,
const float  z0cut,
const float  etacut = DUMMYDEF 
) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 362 of file Electrons.cxx.

363 {
364  if (!acc_baseline(input)) return false;
365 
366  dec_passSignalID(input) = false;
367 
368  if (m_eleIdExpert) {
369  if ( !m_elecSelLikelihood.empty() && m_elecSelLikelihood->accept(&input) ) dec_passSignalID(input) = true;
370  }
371  else {
372  if (m_acc_eleId.isAvailable(input)) {
373  dec_passSignalID(input) = m_acc_eleId(input);
374  } else {
375  ATH_MSG_VERBOSE ("DFCommonElectronsLHxxx variables are not found. Calculating the ID from LH tool..");
376  if ( !m_elecSelLikelihood.empty() && m_elecSelLikelihood->accept(&input) ) dec_passSignalID(input) = true;
377  }
378  }
379 
380  //overwrite ID selection if forced by user
381  if(m_force_noElId) dec_passSignalID(input) = true;
382 
383  if (!acc_passSignalID(input)) return false;
384 
385  if (input.p4().Perp2() <= etcut * etcut || input.p4().Perp2() == 0) return false; // eT cut (might be necessary for leading electron to pass trigger)
386  if ( etacut==DUMMYDEF ){
387  if(std::abs(input.caloCluster()->etaBE(2)) > m_eleEta ) return false;
388  }
389  else if ( std::abs(input.caloCluster()->etaBE(2)) > etacut ) return false;
390 
391  if (m_eleCrackVeto){
392  if ( std::abs( input.caloCluster()->etaBE(2) ) >1.37 && std::abs( input.caloCluster()->etaBE(2) ) <1.52) {
393  return false;
394  }
395  }
396 
397  if (acc_d0sig(input) != 0) {
398  if (d0sigcut > 0.0 && std::abs(acc_d0sig(input)) > d0sigcut) return false; // transverse IP cut
399  }
400 
401  if (z0cut > 0.0 && std::abs(acc_z0sinTheta(input)) > z0cut) return false; // longitudinal IP cut
402 
403 
404  ATH_MSG_VERBOSE( "IsSignalElectron: " << m_eleId << " " << acc_passSignalID(input) << " d0sig " << acc_d0sig(input) << " z0 sin(theta) " << acc_z0sinTheta(input) );
405 
406  if (m_doElIsoSignal) {
407  if ( !( (acc_isol(input) && input.pt()<m_eleIsoHighPtThresh) || (acc_isolHighPt(input) && input.pt()>m_eleIsoHighPtThresh)) ) return false;
408  ATH_MSG_VERBOSE( "IsSignalElectron: passed isolation" );
409  }
410 
411  if(m_eleChID_signal && !acc_passChID(input)) return false; //add charge flip check to signal definition
412 
413  dec_signal(input) = true;
414 
415  ATH_MSG_VERBOSE( "IsSignalElectron: passed selection" );
416  return true;
417 }

◆ IsSignalJet()

bool ST::SUSYObjDef_xAOD::IsSignalJet ( const xAOD::Jet input,
const float  ptcut,
const float  etacut 
) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 694 of file Jets.cxx.

694  {
695  if ( !acc_baseline(input) || !acc_passOR(input) ) return false;
696 
697  if ( input.pt() <= ptcut || std::abs(input.eta()) >= etacut) return false;
698 
699  bool isgoodjet = !acc_bad(input) && acc_passJvt(input);
700 
701  dec_signal(input) = isgoodjet;
702 
703  // For JVT calculation
704  dec_signal_less_JVT(input) = !acc_bad(input);
705 
706 
707  if (m_debug) {
708  float emfrac, hecf, LArQuality, HECQuality, Timing, fracSamplingMax, NegativeE, AverageLArQF;
709  std::vector<float> sumpttrk_vec;
710 
711  input.getAttribute(xAOD::JetAttribute::EMFrac, emfrac);
712  input.getAttribute(xAOD::JetAttribute::HECFrac, hecf);
713  input.getAttribute(xAOD::JetAttribute::LArQuality, LArQuality);
714  input.getAttribute(xAOD::JetAttribute::HECQuality, HECQuality);
715  input.getAttribute(xAOD::JetAttribute::Timing, Timing);
716  input.getAttribute(xAOD::JetAttribute::SumPtTrkPt500, sumpttrk_vec);
717  input.getAttribute(xAOD::JetAttribute::FracSamplingMax, fracSamplingMax);
718  input.getAttribute(xAOD::JetAttribute::NegativeE, NegativeE);
719  input.getAttribute(xAOD::JetAttribute::AverageLArQF, AverageLArQF);
720 
721  float sumpttrk;
722  if (!sumpttrk_vec.empty() && this->GetPrimVtx()) {
723  sumpttrk = sumpttrk_vec[this->GetPrimVtx()->index()];
724  } else {
725  sumpttrk = 0.;
726  }
727 
728  ATH_MSG_INFO( "JET pt: " << input.pt() );
729  ATH_MSG_INFO( "JET eta: " << input.eta() );
730  ATH_MSG_INFO( "JET emfrac: " << emfrac );
731  ATH_MSG_INFO( "JET hecfrac: " << hecf );
732  ATH_MSG_INFO( "JET LArQuality: " << LArQuality );
733  ATH_MSG_INFO( "JET HECQuality: " << HECQuality );
734  ATH_MSG_INFO( "JET Timing: " << Timing );
735  ATH_MSG_INFO( "JET sumpttrk: " << sumpttrk );
736  ATH_MSG_INFO( "JET fracSamplingMax: " << fracSamplingMax );
737  ATH_MSG_INFO( "JET AverageLArQF: " << AverageLArQF );
738  }
739 
740  ATH_MSG_VERBOSE( "JET isbad?: " << static_cast<int>(acc_bad(input)));
741 
742  return isgoodjet;
743  }

◆ IsSignalMuon()

bool ST::SUSYObjDef_xAOD::IsSignalMuon ( const xAOD::Muon input,
const float  ptcut,
const float  d0sigcut,
const float  z0cut,
const float  etacut = DUMMYDEF 
) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 344 of file Muons.cxx.

345 {
346  if (!acc_baseline(input)) return false;
347  if (!acc_passSignalID(input)) return false;
348 
349  if (input.pt() <= ptcut || input.pt() == 0) return false; // pT cut (might be necessary for leading muon to pass trigger)
350  if ( etacut==DUMMYDEF ){
351  if(std::abs(input.eta()) > m_muEta ) return false;
352  }
353  else if ( std::abs(input.eta()) > etacut ) return false;
354 
355  if (z0cut > 0.0 && std::abs(acc_z0sinTheta(input)) > z0cut) return false; // longitudinal IP cut
356  if (acc_d0sig(input) != 0) {
357  if (d0sigcut > 0.0 && std::abs(acc_d0sig(input)) > d0sigcut) return false; // transverse IP cut
358  }
359 
360  if (m_doMuIsoSignal) {
361  if ( !( (acc_isol(input) && input.pt()<m_muIsoHighPtThresh) || (acc_isolHighPt(input) && input.pt()>m_muIsoHighPtThresh)) ) return false;
362  ATH_MSG_VERBOSE( "IsSignalMuon: passed isolation");
363  }
364 
365  //set HighPtMuon decoration
366  IsHighPtMuon(input);
367 
368  dec_signal(input) = true;
369 
370  if (m_muId == 4) { //i.e. HighPt muons
371  ATH_MSG_VERBOSE( "IsSignalMuon: mu pt " << input.pt()
372  << " signal? " << static_cast<int>(acc_signal(input))
373  << " isolation? " << static_cast<int>(acc_isol(input))
374  << " passedHighPtCuts? " << static_cast<int>(acc_passedHighPtCuts(input)));
375  } else {
376  ATH_MSG_VERBOSE( "IsSignalMuon: mu pt " << input.pt()
377  << " signal? " << static_cast<int>( acc_signal(input))
378  << " isolation? " << static_cast<int>( acc_isol(input)));
379  // Don't show HighPtFlag ... we didn't set it!
380  }
381 
382  return acc_signal(input);
383 }

◆ IsSignalPhoton()

bool ST::SUSYObjDef_xAOD::IsSignalPhoton ( const xAOD::Photon input,
const float  ptcut,
const float  etacut = DUMMYDEF 
) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 167 of file Photons.cxx.

168 {
169  dec_signal(input) = false;
170 
171  if ( !acc_baseline(input) ) return false;
172 
173  if ( !m_egammaAmbiguityTool->accept(input) ) return false;
174 
175  if ( input.pt() < ptcut ) return false;
176  if ( etacut==DUMMYDEF ){
177  if(std::abs(input.caloCluster()->etaBE(2)) > m_photonEta ) return false;
178  }
179  else if ( std::abs(input.caloCluster()->etaBE(2)) > etacut ) return false;
180 
181  if (m_photonCrackVeto){
182  if ( std::abs( input.caloCluster()->etaBE(2) ) >1.37 && std::abs( input.caloCluster()->etaBE(2) ) <1.52) {
183  return false;
184  }
185  }
186 
187  if (acc_isol(input) || !m_doPhIsoSignal) {
188  ATH_MSG_VERBOSE( "IsSignalPhoton: passed isolation");
189  } else return false;
190 
191  bool passID = false;
192  if (m_acc_photonId.isAvailable(input)) {
193  passID = m_acc_photonId(input);
194  } else {
195  ATH_MSG_VERBOSE ("DFCommonPhotonsIsEMxxx variables are not found. Calculating the ID from Photon ID tool..");
196  passID = bool(m_photonSelIsEM->accept(&input));
197  }
198  if ( !passID ) return false;
199 
200  dec_signal(input) = true;
201 
202  return true;
203 }

◆ IsSignalTau()

bool ST::SUSYObjDef_xAOD::IsSignalTau ( const xAOD::TauJet input,
const float  ptcut,
const float  etacut 
) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 112 of file Taus.cxx.

112  {
113 
114  dec_signal(input) = false;
115 
116  if ( !acc_baseline(input) ) return false;
117 
118  if (input.pt() <= ptcut) return false;
119 
120  if (std::abs(input.eta()) >= etacut) return false;
121 
122  if (!m_tauSelTool->accept( input )) return false;
123 
124  dec_signal(input) = true;
125 
126  return true;
127 }

◆ IsTrackBJet()

bool ST::SUSYObjDef_xAOD::IsTrackBJet ( const xAOD::Jet input) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 783 of file Jets.cxx.

783  {
784 
785  bool isbjet = bool(m_btagSelTool_trkJet->accept(input));
786  dec_bjet(input) = isbjet;
787 
789  ANA_MSG_ERROR("Couldn't set b-tag decorations for trackjet, is-b = " << (isbjet?"true":"false") << ", pT = " << input.pt()/1000.);
790 
791  return isbjet;
792  }

◆ IsTrackBJetContinuous()

int ST::SUSYObjDef_xAOD::IsTrackBJetContinuous ( const xAOD::Jet input) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 816 of file Jets.cxx.

816  {
817 
818  int isbjet = m_btagSelTool_trkJet->getQuantile(input);
819  dec_bjet(input) = isbjet;
820 
822  ANA_MSG_ERROR("Couldn't set continuous b-tag decorations for trackjet, is-b = " << isbjet << ", pT = " << input.pt()/1000.);
823 
824  return isbjet;
825  }

◆ isTrigInTDT()

bool ST::SUSYObjDef_xAOD::isTrigInTDT ( std::scoped_lock< std::mutex > &  lock,
const std::string &  triggerName 
) const
private

Definition at line 83 of file Trigger.cxx.

85 {
86  auto mapItr = m_checkedTriggers.find(triggerName);
87  if ( mapItr == m_checkedTriggers.end() ) {
88  const auto *cg = m_trigDecTool->getChainGroup(triggerName);
89  return m_checkedTriggers[triggerName] = cg->getListOfTriggers().size() != 0;
90  }
91  else {
92  return mapItr->second;
93  }
94 }

◆ IsTrigMatched() [1/4]

bool ST::SUSYObjDef_xAOD::IsTrigMatched ( const std::initializer_list< const xAOD::IParticle * > &  v,
const std::string &  tr_item 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 233 of file Trigger.cxx.

233  {
234  return m_trigMatchingTool->match(v, tr_item);
235 }

◆ IsTrigMatched() [2/4]

bool ST::SUSYObjDef_xAOD::IsTrigMatched ( const std::vector< const xAOD::IParticle * > &  v,
const std::string &  tr_item 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 228 of file Trigger.cxx.

228  {
229  return m_trigMatchingTool->match(v, tr_item);
230 }

◆ IsTrigMatched() [3/4]

bool ST::SUSYObjDef_xAOD::IsTrigMatched ( const xAOD::IParticle part,
const std::string &  tr_item 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 218 of file Trigger.cxx.

218  {
219  return this->IsTrigMatched({part}, tr_item);
220 }

◆ IsTrigMatched() [4/4]

bool ST::SUSYObjDef_xAOD::IsTrigMatched ( const xAOD::IParticle part1,
const xAOD::IParticle part2,
const std::string &  tr_item 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 223 of file Trigger.cxx.

223  {
224  return this->IsTrigMatched({part1, part2}, tr_item);
225 }

◆ IsTrigPassed()

bool ST::SUSYObjDef_xAOD::IsTrigPassed ( const std::string &  tr_item,
unsigned int  condition = TrigDefs::Physics 
) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 213 of file Trigger.cxx.

213  {
214  return m_trigDecTool->isPassed(tr_item, condition);
215 }

◆ IsTruthBJet()

bool ST::SUSYObjDef_xAOD::IsTruthBJet ( const xAOD::Jet input) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 301 of file Truth.cxx.

301  {
302  //Method to set correctly the IsBjet decoration needed by the JetUncertainties tool
303  bool isBjet = false;
304  if (acc_signal(input)) {
305 
306  int truthlabel(-1);
307  if (!input.getAttribute("HadronConeExclTruthLabelID", truthlabel)) {
308  ATH_MSG_ERROR("Failed to get jet truth label!");
309  }
310 
311  isBjet = std::abs(truthlabel) == 5;
312  }
313 
314  const static SG::Decorator<char> dec_bjet_jetunc("bjet_jetunc"); //added for JetUncertainties usage
315  dec_bjet_jetunc(input) = isBjet;
316 
317  return isBjet;
318 }

◆ isVariation()

bool ST::SUSYObjDef_xAOD::isVariation ( const CP::SystematicSet syst) const

Definition at line 2126 of file SUSYObjDef_xAOD.cxx.

2126  {
2127  // returns true if _any_ of the systematics affect kinematics. ignores effect on weights.
2128  for (const auto& sys : systSet) {
2129  auto info = getSystInfo(sys);
2130  if(info.affectsKinematics) { return true; }
2131  }
2132  return false;
2133 }

◆ isWeight()

bool ST::SUSYObjDef_xAOD::isWeight ( const CP::SystematicSet systSet) const

Definition at line 2115 of file SUSYObjDef_xAOD.cxx.

2115  {
2116  // returns true if all systematics do _not_ affect kinematics and _any_ of them affects the weight
2117  bool affectsWeights = false;
2118  for (const auto& sys : systSet) {
2119  auto info = getSystInfo(sys);
2120  if(info.affectsKinematics) { return false; }
2121  affectsWeights = affectsWeights or info.affectsWeights;
2122  }
2123  return affectsWeights;
2124 }

◆ JetPassJVT()

bool ST::SUSYObjDef_xAOD::JetPassJVT ( xAOD::Jet input)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 688 of file Jets.cxx.

688  {
689  char pass_jvt = !m_applyJVTCut || m_jetNNJvtSelectionTool->accept(&input);
690  dec_passJvt(input) = pass_jvt;
691  return pass_jvt;
692  }

◆ JVT_SF()

double ST::SUSYObjDef_xAOD::JVT_SF ( const xAOD::JetContainer jets)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 989 of file Jets.cxx.

989  {
990 
991  float totalSF = 1.;
992  if (!m_applyJVTCut) return totalSF;
993 
995  for (const xAOD::Jet* jet : *jets) {
996  // Only jets that were good for every cut except JVT
997  if (acc_signal_less_JVT(*jet) && acc_passOR(*jet)) {
998  jvtjets.push_back(jet);
999  }
1000  }
1001 
1002  for (const xAOD::Jet* jet : jvtjets) {
1003  float current_sf = 0;
1004 
1005  // the SF are only applied for HS jets and implicitely requires the presence of the isHS decoration
1007  if (acc_passJvt(*jet)) {
1009  }
1010  else {
1012  }
1013 
1014  switch (result) {
1016  // this is probably not right, should report an error here
1017  ATH_MSG_ERROR("Inexplicably failed JVT calibration" );
1018  break;
1020  // no NNJvt SF for jet, that is ok e.g. for jets with |eta| > 2.5
1021  ATH_MSG_VERBOSE( "Skip SF application in SUSYTools_xAOD::JVT_SF as jet outside validate range" );
1022  break;
1023  default:
1024  ATH_MSG_VERBOSE( "Retrieve SF for jet in SUSYTools_xAOD::JVT_SF with value " << current_sf );
1025  totalSF *= current_sf;
1026  }
1027 
1028  }
1029 
1030  ATH_MSG_VERBOSE( "Retrieve total SF for jet container in SUSYTools_xAOD::JVT_SF with value " << totalSF );
1031 
1032  return totalSF;
1033  }

◆ JVT_SFsys()

double ST::SUSYObjDef_xAOD::JVT_SFsys ( const xAOD::JetContainer jets,
const CP::SystematicSet systConfig 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 1036 of file Jets.cxx.

1036  {
1037 
1038  float totalSF = 1.;
1039  if (!m_applyJVTCut) return totalSF;
1040 
1041  //Set the new systematic variation
1043  if ( ret != StatusCode::SUCCESS) {
1044  ATH_MSG_ERROR("Cannot configure NNjvtEfficiencyTool for systematic var. " << systConfig.name() );
1045  }
1046 
1047  // Delegate
1048  totalSF = SUSYObjDef_xAOD::JVT_SF( jets );
1049 
1050  // }
1051  if (m_applyJVTCut) {
1053  if ( ret != StatusCode::SUCCESS) {
1054  ATH_MSG_ERROR("Cannot configure NNjvtEfficiencyTool for systematic var. " << systConfig.name() );
1055  }
1056  }
1057 
1058  return totalSF;
1059  }

◆ MergeElectrons()

StatusCode ST::SUSYObjDef_xAOD::MergeElectrons ( const xAOD::ElectronContainer electrons,
xAOD::ElectronContainer outputCol,
const std::set< const xAOD::Electron * > &  ElectronsToRemove 
) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 61 of file Electrons.cxx.

61  {
62 
63  if (electrons.empty()) return StatusCode::SUCCESS;
64  for (const xAOD::Electron* electron: electrons) {
65  if (ElectronsToRemove.find(electron) != ElectronsToRemove.end()){
66  ATH_MSG_DEBUG( "Removing electron from output collection (isLRT?) : ("<< static_cast<int>(acc_isLRT(*electron)) << ")" );
67  ATH_MSG_DEBUG( "ELECTRON cl eta: " << electron->caloCluster()->eta());
68  ATH_MSG_DEBUG( "ELECTRON cl phi: " << electron->caloCluster()->phi());
69  continue;
70  // add electron into output
71  } else {
72  ATH_MSG_DEBUG( "Adding electron to output collection (isLRT?) : (" << static_cast<int>(acc_isLRT(*electron)) << ")" );
73  ATH_MSG_DEBUG( "ELECTRON cl eta: " << electron->caloCluster()->eta());
74  ATH_MSG_DEBUG( "ELECTRON cl phi: " << electron->caloCluster()->phi());
75  auto newElectron = new xAOD::Electron(*electron);
76 
77  if ( getOriginalObject(*electron) != nullptr ) {
79  } else {
80  setOriginalObjectLink(*electron, *newElectron);
81  }
82 
83  outputCol->push_back(newElectron);
84  }
85  }
86  return StatusCode::SUCCESS;
87 }

◆ MergeMuons()

StatusCode ST::SUSYObjDef_xAOD::MergeMuons ( const xAOD::MuonContainer muons,
const std::vector< bool > &  writeMuon,
xAOD::MuonContainer outputCol 
) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 56 of file Muons.cxx.

56  {
57  if (muons.empty()) return StatusCode::SUCCESS;
58  for (const xAOD::Muon* muon: muons) {
59  // add muon into output
60  if (writeMuon.at(muon->index())){
61  auto newMuon = new xAOD::Muon(*muon);
62 
63  if ( getOriginalObject(*muon) != nullptr ) {
65  } else {
66  setOriginalObjectLink(*muon, *newMuon);
67  }
68  outputCol->push_back(newMuon);
69  }
70  }
71  return StatusCode::SUCCESS;
72 }

◆ metaDataStop()

StatusCode asg::AsgMetadataTool::metaDataStop ( )
protectedvirtualinherited

Function called when the tool should write out its metadata.

Dummy implementation that can be overridden by the derived tool.

Reimplemented in BookkeeperTool, BookkeeperDumperTool, xAODMaker::TriggerMenuMetaDataTool, and xAODMaker::TruthMetaDataTool.

Definition at line 209 of file AsgMetadataTool.cxx.

209  {
210 
211  // Return gracefully:
212  return StatusCode::SUCCESS;
213  }

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msg_level_name()

const std::string & asg::AsgTool::msg_level_name ( ) const
inherited

A deprecated function for getting the message level's name.

Instead of using this, weirdly named function, user code should get the string name of the current minimum message level (in case they really need it...), with:

MSG::name( msg().level() )

This function's name doesn't follow the ATLAS coding rules, and as such will be removed in the not too distant future.

Returns
The string name of the current minimum message level that's printed

Definition at line 101 of file AsgTool.cxx.

101  {
102 
103  return MSG::name( msg().level() );
104  }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ NearbyLeptonCorrections()

StatusCode ST::SUSYObjDef_xAOD::NearbyLeptonCorrections ( xAOD::ElectronContainer electrons = nullptr,
xAOD::MuonContainer muons = nullptr 
) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 2977 of file SUSYObjDef_xAOD.cxx.

2977  {
2978  // This getCloseByIsoCorrection is computationally less expensive and actually corrects the isoaltion
2979  // variables from the contribution of the close by leptons
2980  if (m_isoCloseByTool->getCloseByIsoCorrection(Gaudi::Hive::currentContext(), electrons,muons) != CP::CorrectionCode::Ok) {
2981  return StatusCode::FAILURE;
2982  }
2983  // All done, all good :-)
2984  return StatusCode::SUCCESS;
2985 }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ outputMetaStore()

AsgMetadataTool::MetaStorePtr_t asg::AsgMetadataTool::outputMetaStore ( ) const
inherited

Accessor for the output metadata store.

Definition at line 102 of file AsgMetadataTool.cxx.

102  {
103 
104 #ifdef XAOD_STANDALONE
105  return &m_outputMetaStore;
106 #else // XAOD_STANDALONE
107  return m_outputMetaStore;
108 #endif // XAOD_STANDALONE
109  }

◆ OverlapRemoval()

StatusCode ST::SUSYObjDef_xAOD::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 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 2942 of file SUSYObjDef_xAOD.cxx.

2945 {
2946 
2947  if (this->GetPrimVtx() == nullptr) {
2948  ATH_MSG_WARNING( "Will now call the OR tool on an event without a primary vertex, and it will likely crash. Please require a PV earlier in your analysis code!");
2949  }
2950 
2951  ATH_CHECK( m_orToolbox.masterTool->removeOverlaps(electrons, muons, jets, taujet, gamma, fatjets) );
2952 
2953  /*
2954  // Count number of objects after overlap removal
2955  int Nel = 0;
2956  for (const auto& el : *electrons) {
2957  if (dec_passOR( *el )) Nel++;
2958  }
2959 
2960  int Nmu = 0;
2961  for (const auto& mu : *muons) {
2962  if (dec_passOR( *mu )) Nmu++;
2963  }
2964 
2965  int Njet = 0;
2966  for (const auto& jet : *jets) {
2967  if (dec_passOR( *jet )) Njet++;
2968  }
2969 
2970  ATH_MSG_VERBOSE( "After overlap removal: Nel=" << Nel << ", Nmu=" << Nmu << ", Njet=" << Njet );
2971  */
2972 
2973  return StatusCode::SUCCESS;
2974 }

◆ prepareLRTElectrons()

StatusCode ST::SUSYObjDef_xAOD::prepareLRTElectrons ( const xAOD::ElectronContainer inMuons,
xAOD::ElectronContainer copy 
) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 90 of file Electrons.cxx.

90  {
91  for (const xAOD::Electron *electron: *inElectrons){
92  const xAOD::TrackParticle* idtrack = electron->trackParticle();
93 
94  // Save electron if the id track passes the LRT filter
95  if ( acc_lrtFilter.isAvailable(*idtrack) )
96  {
97  if ( static_cast<int>(acc_lrtFilter(*idtrack) ) ){
98  std::unique_ptr<xAOD::Electron> copyElectron = std::make_unique<xAOD::Electron>(*electron);
99 
100  // transfer original electron link
101 
102  setOriginalObjectLink(*electron, *copyElectron);
103  copy->push_back( std::move(copyElectron) );
104  }
105  }
106  else // Keep electron if flag is not available
107  {
108  std::unique_ptr<xAOD::Electron> copyElectron = std::make_unique<xAOD::Electron>(*electron);
109 
110  setOriginalObjectLink(*electron, *copyElectron);
111  copy->push_back( std::move(copyElectron) );
112  }
113  }
114  return StatusCode::SUCCESS;
115 }

◆ prepareLRTMuons()

StatusCode ST::SUSYObjDef_xAOD::prepareLRTMuons ( const xAOD::MuonContainer inMuons,
xAOD::MuonContainer copy 
) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 74 of file Muons.cxx.

74  {
75  for (const xAOD::Muon *muon: *inMuons){
76  const xAOD::TrackParticle* idtrack = muon->trackParticle(xAOD::Muon::InnerDetectorTrackParticle);
77 
78  // Save muon if the id track passes the LRT filter
79  if ( acc_lrtFilter.isAvailable(*idtrack) )
80  {
81  if ( static_cast<int>(acc_lrtFilter(*idtrack) ) ){
82  std::unique_ptr<xAOD::Muon> copyMuon = std::make_unique<xAOD::Muon>(*muon);
83 
84  // transfer original muon link
85  setOriginalObjectLink(*muon, *copyMuon);
86  copy->push_back( std::move(copyMuon) );
87  }
88  }
89  else // Keep muon if flag is not available
90  {
91  std::unique_ptr<xAOD::Muon> copyMuon = std::make_unique<xAOD::Muon>(*muon);
92 
93  setOriginalObjectLink(*muon, *copyMuon);
94  copy->push_back( std::move(copyMuon) );
95  }
96 
97  }
98  return StatusCode::SUCCESS;
99 }

◆ print() [1/2]

void asg::AsgTool::print ( ) const
virtualinherited

◆ print() [2/2]

virtual void asg::IAsgTool::print ( ) const
pure virtualinherited

◆ readConfig()

StatusCode ST::SUSYObjDef_xAOD::readConfig ( )
finaloverrideprotectedvirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 1335 of file SUSYObjDef_xAOD.cxx.

1336 {
1337  ATH_MSG_INFO( "***** ***** ***** *****" );
1338  ATH_MSG_INFO( "Configuring from file " << m_configFile );
1339 
1340  TEnv rEnv;
1341  int success = -1;
1342  success = rEnv.ReadFile(m_configFile.c_str(), kEnvAll);
1343  if (success != 0) return StatusCode::FAILURE;
1344 
1345  ATH_MSG_INFO( "Config file opened" );
1346 
1348  m_jetInputType = xAOD::JetInput::Type(rEnv.GetValue("Jet.InputType", 9));
1349  ATH_MSG_INFO( "readConfig(): Loaded property Jet.InputType with value " << static_cast<int>(m_jetInputType));
1350  }
1351  // Remove the item from the table
1352  rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject("Jet.InputType") );
1353 
1354  if (m_muId == static_cast<int>(xAOD::Muon::Quality(xAOD::Muon::VeryLoose))) {
1355  int muIdTmp = rEnv.GetValue("Muon.Id", 1);
1356  m_muId = (muIdTmp<4 ? static_cast<int>(xAOD::Muon::Quality(muIdTmp)) : muIdTmp);
1357  ATH_MSG_INFO( "readConfig(): Loaded property Muon.Id with value " << m_muId);
1358  // Remove the item from the table
1359  rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject("Muon.Id") );
1360  }
1361  if (m_muIdBaseline == static_cast<int>(xAOD::Muon::Quality(xAOD::Muon::VeryLoose))) {
1362  int muIdTmp = rEnv.GetValue("MuonBaseline.Id", 1);
1363  m_muIdBaseline = (muIdTmp<4 ? static_cast<int>(xAOD::Muon::Quality(muIdTmp)) : muIdTmp);
1364  ATH_MSG_INFO( "readConfig(): Loaded property MuonBaseline.Id with value " << m_muIdBaseline);
1365  // Remove the item from the table
1366  rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject("MuonBaseline.Id") );
1367  }
1368 
1369  // Deprecation warning
1370  std::string prop = rEnv.GetValue("Jet.JVT_WP", "");
1371  if ( !prop.empty() ) {
1372  ATH_MSG_WARNING("readConfig(): Found deprecated property name Jet.JVT_WP. Please move to using Jet.JvtWP. Propagating for now.");
1373  rEnv.SetValue("Jet.JvtWP", prop.c_str());
1374  rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject("Jet.JVT_WP") );
1375  }
1376 
1377  //load config file to Properties map (only booleans for now)
1378  m_conf_to_prop["IsRun3"] = "IsRun3";
1379  m_conf_to_prop["StrictConfigCheck"] = "StrictConfigCheck";
1380  m_conf_to_prop["Btag.enable"] = "UseBtagging";
1381  m_conf_to_prop["BtagTrkJet.enable"] = "UseBtaggingTrkJet";
1382  m_conf_to_prop["Ele.CrackVeto"] = "EleCrackVeto";
1383  m_conf_to_prop["EleBaseline.CrackVeto"] = "EleBaselineCrackVeto";
1384  m_conf_to_prop["Ele.ForceNoId"] = "EleForceNoId";
1385  m_conf_to_prop["Ele.AllowRun3TrigSFFallback"] = "EleAllowRun3TrigSFFallback";
1386  m_conf_to_prop["Muon.ForceNoId"] = "MuonForceNoId";
1387  m_conf_to_prop["Muon.TTVASF"] = "MuonTTVASF";
1388  m_conf_to_prop["Muon.passedHighPt"] = "MuonRequireHighPtCuts";
1389  m_conf_to_prop["PhotonBaseline.CrackVeto"] = "PhotonBaselineCrackVeto";
1390  m_conf_to_prop["Photon.CrackVeto"] = "PhotonCrackVeto";
1391  m_conf_to_prop["Photon.AllowLate"] = "PhotonAllowLate";
1392 
1393  m_conf_to_prop["FwdJet.doJVT"] = "FwdJetDoJVT";
1394 
1395  m_conf_to_prop["OR.DoBoostedElectron"] = "DoBoostedElectronOR";
1396  m_conf_to_prop["OR.DoBoostedMuon"] = "DoBoostedMuonOR";
1397  m_conf_to_prop["OR.DoMuonJetGhostAssociation"] = "ORDoMuonJetGhostAssociation";
1398  m_conf_to_prop["OR.DoTau"] = "DoTauOR";
1399  m_conf_to_prop["OR.DoPhoton"] = "DoPhotonOR";
1400  m_conf_to_prop["OR.DoEleJet"] = "DoEleJetOR";
1401  m_conf_to_prop["OR.DoElEl"] = "DoElElOR";
1402  m_conf_to_prop["OR.DoElMu"] = "DoElMuOR";
1403  m_conf_to_prop["OR.DoMuonJet"] = "DoMuonJetOR";
1404  m_conf_to_prop["OR.Bjet"] = "DoBjetOR";
1405  m_conf_to_prop["OR.ElBjet"] = "DoElBjetOR";
1406  m_conf_to_prop["OR.MuBjet"] = "DoMuBjetOR";
1407  m_conf_to_prop["OR.TauBjet"] = "DoTauBjetOR";
1408  m_conf_to_prop["OR.DoFatJets"] = "DoFatJetOR";
1409  m_conf_to_prop["OR.RemoveCaloMuons"] = "ORRemoveCaloMuons";
1410  m_conf_to_prop["OR.MuJetApplyRelPt"] = "ORMuJetApplyRelPt";
1411  m_conf_to_prop["OR.InputLabel"] = "ORInputLabel";
1412  m_conf_to_prop["Trigger.UpstreamMatching"] = "TriggerUpstreamMatching";
1413 
1414  m_conf_to_prop["SigLep.RequireIso"] = "SigLepRequireIso";
1415  m_conf_to_prop["SigEl.RequireIso"] = "SigElRequireIso";
1416  m_conf_to_prop["SigMu.RequireIso"] = "SigMuRequireIso";
1417  m_conf_to_prop["SigPh.RequireIso"] = "SigPhRequireIso";
1418  m_conf_to_prop["SigLepPh.IsoCloseByOR"] = "SigLepPhIsoCloseByOR";
1419  m_conf_to_prop["MET.RemoveOverlappingCaloTaggedMuons"] = "METRemoveORCaloTaggedMuons";
1420  m_conf_to_prop["MET.DoSetMuonJetEMScale"] = "METDoSetMuonJetEMScale";
1421  m_conf_to_prop["MET.DoRemoveMuonJets"] = "METDoRemoveMuonJets";
1422  m_conf_to_prop["MET.DoUseGhostMuons"] = "METUseGhostMuons";
1423  m_conf_to_prop["MET.DoMuonEloss"] = "METDoMuonEloss";
1424 
1425  m_conf_to_prop["MET.DoTrkSyst"] = "METDoTrkSyst";
1426  m_conf_to_prop["MET.DoCaloSyst"] = "METDoCaloSyst";
1427 
1428  m_conf_to_prop["Tau.DoTruthMatching"] = "TauDoTruthMatching";
1429  //
1430 
1431  configFromFile(m_slices["ele"], "Slices.Ele", rEnv, true);
1432  configFromFile(m_slices["pho"], "Slices.Pho", rEnv, true);
1433  configFromFile(m_slices["mu"], "Slices.Mu", rEnv, true);
1434  configFromFile(m_slices["tau"], "Slices.Tau", rEnv, true);
1435  configFromFile(m_slices["jet"], "Slices.Jet", rEnv, true);
1436  configFromFile(m_slices["bjet"], "Slices.BJet", rEnv, true);
1437  configFromFile(m_slices["fjet"], "Slices.FJet", rEnv, true);
1438  configFromFile(m_slices["tjet"], "Slices.TJet", rEnv, true);
1439  configFromFile(m_slices["met"], "Slices.MET", rEnv, true);
1440  //
1441  configFromFile(m_isRun3, "IsRun3", rEnv, false);
1442  //
1443  configFromFile(m_eleBaselinePt, "EleBaseline.Pt", rEnv, 10000.);
1444  configFromFile(m_eleBaselineEta, "EleBaseline.Eta", rEnv, 2.47);
1445  configFromFile(m_eleIdBaseline, "EleBaseline.Id", rEnv, "LooseAndBLayerLLH");
1446  configFromFile(m_eleBaselineIso_WP, "EleBaseline.Iso", rEnv, "None");
1447  configFromFile(m_eleConfigBaseline, "EleBaseline.Config", rEnv, "None");
1448  configFromFile(m_eleBaselineCrackVeto, "EleBaseline.CrackVeto", rEnv, false);
1449  configFromFile(m_force_noElId, "Ele.ForceNoId", rEnv, false);
1450 
1451  //
1452  configFromFile(m_elePt, "Ele.Et", rEnv, 25000.);
1453  configFromFile(m_eleEta, "Ele.Eta", rEnv, 2.47);
1454  configFromFile(m_eleCrackVeto, "Ele.CrackVeto", rEnv, false);
1455  configFromFile(m_eleIso_WP, "Ele.Iso", rEnv, "Loose_VarRad");
1456  configFromFile(m_eleIsoHighPt_WP, "Ele.IsoHighPt", rEnv, "HighPtCaloOnly");
1457  configFromFile(m_eleIsoHighPtThresh, "Ele.IsoHighPtThresh", rEnv, 200e3);
1458  configFromFile(m_eleChID_WP, "Ele.CFT", rEnv, "None"); // Loose is the only one supported for the moment, and not many clients yet.
1459  configFromFile(m_eleChIso, "Ele.CFTIso", rEnv, true); // use charge ID SFs without iso applied
1460  configFromFile(m_eleChID_signal, "Ele.CFTSignal", rEnv, !m_eleChID_WP.empty()); // Require ECID as part of the signal lepton definition
1461  configFromFile(m_eleId, "Ele.Id", rEnv, "TightLLH");
1462  configFromFile(m_eleLRT, "Ele.LRTOR", rEnv, false);
1463  configFromFile(m_eleLRT_strat, "Ele.LRTORStrat", rEnv, 0);
1464  configFromFile(m_eleConfig, "Ele.Config", rEnv, "None");
1465  configFromFile(m_eled0sig, "Ele.d0sig", rEnv, 5.);
1466  configFromFile(m_elez0, "Ele.z0", rEnv, 0.5);
1467  configFromFile(m_elebaselined0sig, "EleBaseline.d0sig", rEnv, -99.);
1468  configFromFile(m_elebaselinez0, "EleBaseline.z0", rEnv, 0.5);
1469  configFromFile(m_eleIdExpert, "Ele.IdExpert", rEnv, false);
1470  configFromFile(m_EG_corrModel, "Ele.EffNPcorrModel", rEnv, "TOTAL");
1471  configFromFile(m_EG_corrFNList, "Ele.EffCorrFNList", rEnv, "None");
1472  configFromFile(m_electronTriggerSFStringSingle, "Ele.TriggerSFStringSingle", rEnv, "SINGLE_E_2015_e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose_2016_2018_e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0");
1473  configFromFile(m_eleEffMapFilePath, "Ele.EffMapFilePath", rEnv, "ElectronEfficiencyCorrection/2015_2025/rel22.2/2025_Run3_Consolidated_Recommendation_v4/map2.txt");
1474  configFromFile(m_eleAllowRun3TrigSFFallback, "Ele.AllowRun3TrigSFFallback", rEnv, false);
1475  configFromFile(m_eleForceFullSimCalib, "Ele.ForceFullSimCalib", rEnv, false);
1476 
1477  configFromFile(m_trig2015combination_singleLep, "Trig.Singlelep2015", rEnv, "e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose || mu20_iloose_L1MU15_OR_mu40");
1478  configFromFile(m_trig2016combination_singleLep, "Trig.Singlelep2016", rEnv, "e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0 || mu26_ivarmedium_OR_mu50");
1479  configFromFile(m_trig2017combination_singleLep, "Trig.Singlelep2017", rEnv, "e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0 || mu26_ivarmedium_OR_mu50");
1480  configFromFile(m_trig2018combination_singleLep, "Trig.Singlelep2018", rEnv, "e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0 || mu26_ivarmedium_OR_mu50");
1481  configFromFile(m_trig2022combination_singleLep, "Trig.Singlelep2022", rEnv, "e26_lhtight_ivarloose_L1EM22VHI_OR_e60_lhmedium_L1EM22VHI_OR_e140_lhloose_L1EM22VHI || HLT_mu24_ivarmedium_L1MU14FCH_OR_HLT_mu50_L1MU14FCH");
1482  configFromFile(m_trig2023combination_singleLep, "Trig.Singlelep2023", rEnv, "e26_lhtight_ivarloose_L1eEM26M_OR_e60_lhmedium_L1eEM26M_OR_e140_lhloose_L1eEM26M || HLT_mu24_ivarmedium_L1MU14FCH_OR_HLT_mu50_L1MU14FCH");
1483  configFromFile(m_trig2024combination_singleLep, "Trig.Singlelep2024", rEnv, "e26_lhtight_ivarloose_L1eEM26M_OR_e60_lhmedium_L1eEM26M_OR_e140_lhloose_L1eEM26M || HLT_mu24_ivarmedium_L1MU14FCH_OR_HLT_mu50_L1MU14FCH");
1484  configFromFile(m_trigNToys_diLep, "Trig.DilepNToys", rEnv, 250); // 0 means calculate from formula instead - needs to be supported for the trigger combination
1485  configFromFile(m_trig2015combination_diLep, "Trig.Dilep2015", rEnv, "e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose || mu20_iloose_L1MU15_OR_mu40 || 2e12_lhloose_L12EM10VH || e17_lhloose_mu14 || e7_lhmedium_mu24 || mu18_mu8noL1 || 2mu10");
1486  configFromFile(m_trig2016combination_diLep, "Trig.Dilep2016", rEnv, "e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0 || mu26_ivarmedium_OR_mu50 || 2e17_lhvloose_nod0 || e17_lhloose_nod0_mu14 || e7_lhmedium_nod0_mu24 || e26_lhmedium_nod0_L1EM22VHI_mu8noL1 || mu22_mu8noL1 || 2mu14");
1487  configFromFile(m_trig2017combination_diLep, "Trig.Dilep2017", rEnv, "e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0 || mu26_ivarmedium_OR_mu50 || 2e24_lhvloose_nod0 || e17_lhloose_nod0_mu14 || e7_lhmedium_nod0_mu24 || e26_lhmedium_nod0_mu8noL1 || mu22_mu8noL1 || 2mu14");
1488  configFromFile(m_trig2018combination_diLep, "Trig.Dilep2018", rEnv, "e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0 || mu26_ivarmedium_OR_mu50 || 2e24_lhvloose_nod0 || e17_lhloose_nod0_mu14 || e7_lhmedium_nod0_mu24 || e26_lhmedium_nod0_mu8noL1 || mu22_mu8noL1 || 2mu14");
1489  // configFromFile(m_trig2022combination_diLep, "Trig.Dilep2022", rEnv, "");
1490  configFromFile(m_trigNToys_multiLep, "Trig.MultiNToys", rEnv, 250); // 0 means calculate from formula instead - needs to be supported for the trigger combination
1491  configFromFile(m_trig2015combination_multiLep, "Trig.Multi2015", rEnv, "e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose || mu20_iloose_L1MU15_OR_mu40 || 2e12_lhloose_L12EM10VH || e17_lhloose_2e9_lhloose || 2e12_lhloose_mu10 || e12_lhloose_2mu10 || e17_lhloose_mu14 || e7_lhmedium_mu24 || mu18_mu8noL1 || 2mu10 || 3mu6");
1492  configFromFile(m_trig2016combination_multiLep, "Trig.Multi2016", rEnv, "e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0 || mu26_ivarmedium_OR_mu50 || 2e17_lhvloose_nod0 || e17_lhloose_nod0_mu14 || e7_lhmedium_nod0_mu24 || e26_lhmedium_nod0_L1EM22VHI_mu8noL1 || e17_lhloose_nod0_2e9_lhloose_nod0 || e12_lhloose_nod0_2mu10 || 2e12_lhloose_nod0_mu10 || mu22_mu8noL1 || 2mu14 || 3mu6");
1493  configFromFile(m_trig2017combination_multiLep, "Trig.Multi2017", rEnv, "e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0 || mu26_ivarmedium_OR_mu50 || 2e24_lhvloose_nod0 || e17_lhloose_nod0_mu14 || e7_lhmedium_nod0_mu24 || e26_lhmedium_nod0_mu8noL1 || e24_lhvloose_nod0_2e12_lhvloose_nod0_L1EM20VH_3EM10VH || e12_lhloose_nod0_2mu10 || 2e12_lhloose_nod0_mu10 || mu22_mu8noL1 || 2mu14 || 3mu6");
1494  configFromFile(m_trig2018combination_multiLep, "Trig.Multi2018", rEnv, "e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0 || mu26_ivarmedium_OR_mu50 || 2e24_lhvloose_nod0 || e17_lhloose_nod0_mu14 || e7_lhmedium_nod0_mu24 || e26_lhmedium_nod0_mu8noL1 || e24_lhvloose_nod0_2e12_lhvloose_nod0_L1EM20VH_3EM10VH || e12_lhloose_nod0_2mu10 || 2e12_lhloose_nod0_mu10 || mu22_mu8noL1 || 2mu14 || 3mu6");
1495  // configFromFile(m_trig2022combination_multiLep, "Trig.Multi2022", rEnv, "");
1496  configFromFile(m_trigNToys_diPhoton, "Trig.DiphotonNToys", rEnv, 250); // 0 means calculate from formula instead - needs to be supported for the trigger combination
1497  configFromFile(m_trig2015combination_diPhoton, "Trig.Diphoton2015", rEnv, "g35_loose_g25_loose");
1498  configFromFile(m_trig2016combination_diPhoton, "Trig.Diphotonp2016", rEnv, "g35_loose_g25_loose");
1499  configFromFile(m_trig2017combination_diPhoton, "Trig.Diphotonp2017", rEnv, "g35_medium_g25_medium_L12EM20VH");
1500  configFromFile(m_trig2018combination_diPhoton, "Trig.Diphotonp2018", rEnv, "g35_medium_g25_medium_L12EM20VH");
1501  // configFromFile(m_trig2018combination_diPhoton, "Trig.Diphotonp2022", rEnv, "");
1502  //
1503  configFromFile(m_muBaselinePt, "MuonBaseline.Pt", rEnv, 10000.);
1504  configFromFile(m_muBaselineEta, "MuonBaseline.Eta", rEnv, 2.7);
1505  configFromFile(m_force_noMuId, "Muon.ForceNoId", rEnv, false);
1506  configFromFile(m_muBaselineIso_WP, "MuonBaseline.Iso", rEnv, "None");
1507  configFromFile(m_doTTVAsf, "Muon.TTVASF", rEnv, true);
1508  //
1509  configFromFile(m_muPt, "Muon.Pt", rEnv, 25000.);
1510  configFromFile(m_muEta, "Muon.Eta", rEnv, 2.7);
1511  configFromFile(m_muIso_WP, "Muon.Iso", rEnv, "Loose_VarRad");
1512  configFromFile(m_muIsoHighPt_WP, "Muon.IsoHighPt", rEnv, "Loose_VarRad");
1513  configFromFile(m_muIsoHighPtThresh, "Muon.IsoHighPtThresh", rEnv, 200e3);
1514  configFromFile(m_mud0sig, "Muon.d0sig", rEnv, 3.);
1515  configFromFile(m_muz0, "Muon.z0", rEnv, 0.5);
1516  configFromFile(m_mubaselined0sig, "MuonBaseline.d0sig", rEnv, -99.);
1517  configFromFile(m_mubaselinez0, "MuonBaseline.z0", rEnv, 0.5);
1518  configFromFile(m_murequirepassedHighPtCuts, "Muon.passedHighPt", rEnv, false);
1519  configFromFile(m_muHighPtExtraSmear, "Muon.HighPtExtraSmear", rEnv, false);
1520  configFromFile(m_muEffCorrForce1D, "Muon.EffCorrForce1D", rEnv, false);
1521  //
1522  configFromFile(m_muTriggerSFCalibRelease, "Muon.TriggerSFCalibRelease" ,rEnv, "None");
1523  configFromFile(m_muTriggerSFCalibFilename, "Muon.TriggerSFCalibFilename",rEnv, "None");
1524  //
1525  configFromFile(m_muCosmicz0, "MuonCosmic.z0", rEnv, 1.);
1526  configFromFile(m_muCosmicd0, "MuonCosmic.d0", rEnv, 0.2);
1527  //
1528  // LRT muons
1529  configFromFile(m_muLRT, "Muon.LRTOR", rEnv, false);
1530  //
1531  configFromFile(m_badmuQoverP, "BadMuon.qoverp", rEnv, 0.4);
1532  //
1533  configFromFile(m_muCalibrationMode, "Muon.CalibrationMode", rEnv, 0); // 0: correctData_CB
1534  //
1535  configFromFile(m_photonBaselinePt, "PhotonBaseline.Pt", rEnv, 25000.);
1536  configFromFile(m_photonBaselineEta, "PhotonBaseline.Eta", rEnv, 2.37);
1537  configFromFile(m_photonIdBaseline, "PhotonBaseline.Id", rEnv, "Tight");
1538  configFromFile(m_photonBaselineCrackVeto, "PhotonBaseline.CrackVeto", rEnv, true);
1539  configFromFile(m_photonBaselineIso_WP, "PhotonBaseline.Iso", rEnv, "None");
1540  //
1541  configFromFile(m_photonPt, "Photon.Pt", rEnv, 130000.);
1542  configFromFile(m_photonEta, "Photon.Eta", rEnv, 2.37);
1543  configFromFile(m_photonId, "Photon.Id", rEnv, "Tight");
1544  configFromFile(m_photonIso_WP, "Photon.Iso", rEnv, "FixedCutTight");
1545  configFromFile(m_photonTriggerName, "Photon.TriggerName", rEnv, "DI_PH_2015_2016_g20_tight_2016_g22_tight_2017_2018_g20_tight_icalovloose_L1EM15VHI"); // for symmetric diphoton triggers
1546  configFromFile(m_photonCrackVeto, "Photon.CrackVeto", rEnv, true);
1547  configFromFile(m_photonAllowLate, "Photon.AllowLate", rEnv, false);
1548  //
1549  configFromFile(m_tauPrePtCut, "Tau.PrePtCut", rEnv, 0.);
1550  configFromFile(m_tauPt, "Tau.Pt", rEnv, 20000.);
1551  configFromFile(m_tauEta, "Tau.Eta", rEnv, 2.5);
1552  configFromFile(m_tauId, "Tau.Id", rEnv, "Medium");
1553  configFromFile(m_tauConfigPath, "Tau.ConfigPath", rEnv, "default");
1554  configFromFile(m_tauIdBaseline, "TauBaseline.Id", rEnv, "Medium");
1555  configFromFile(m_tauConfigPathBaseline, "TauBaseline.ConfigPath", rEnv, "default");
1556  configFromFile(m_tauDoTTM, "Tau.DoTruthMatching", rEnv, false);
1557  //
1558  configFromFile(m_tauSmearingToolRecommendationTag,"Tau.SmearingToolRecommendationTag", rEnv, "2025-prerec");
1559  configFromFile(m_tauSmearingToolGenerator,"Tau.SmearingToolGenerator", rEnv, "PoPy");
1560  configFromFile(m_tauEffToolRecommendationTag,"Tau.EffToolRecommendationTag", rEnv, "2025-prerec");
1561  configFromFile(m_ApplyMVATESQualityCheck, "Tau.MVATESQualityCheck", rEnv, true);
1562  //
1563  configFromFile(m_jetPt, "Jet.Pt", rEnv, 20000.);
1564  configFromFile(m_jetEta, "Jet.Eta", rEnv, 2.8);
1565  configFromFile(m_JvtWP, "Jet.JvtWP", rEnv, "FixedEffPt"); // https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/PileupJetRecommendations
1566  configFromFile(m_JvtPtMax, "Jet.JvtPtMax", rEnv, 60.0e3);
1567  configFromFile(m_JvtConfigRun2, "Jet.JvtConfigRun2", rEnv, "JetJvtEfficiency/May2024/NNJvtSFFile_Run2_EMPFlow.root", true); // empty string means dummy SF
1568  configFromFile(m_JvtConfigRun3, "Jet.JvtConfigRun3", rEnv, "JetJvtEfficiency/May2024/NNJvtSFFile_Run3_EMPFlow.root", true); // empty string means dummy SF
1569  configFromFile(m_jetUncertaintiesConfig, "Jet.UncertConfig", rEnv, getDefaultJetUncConfig() ); // https://twiki.cern.ch/twiki/bin/view/AtlasProtected/JetUncertaintiesRel22/
1570  configFromFile(m_jetUncertaintiesAnalysisFile, "Jet.AnalysisFile", rEnv, "default"); // https://twiki.cern.ch/twiki/bin/view/AtlasProtected/JetUncertaintiesRel21Summer2018SmallR
1571  configFromFile(m_jetUncertaintiesCalibArea, "Jet.UncertCalibArea", rEnv, "default"); // Defaults to default area set by tool
1572  configFromFile(m_jetUncertaintiesMCType, "Jet.UncertMCType", rEnv, "", true); // empty string means the MCType is guessed
1573  configFromFile(m_jetUncertaintiesPDsmearing, "Jet.UncertPDsmearing", rEnv, true); // for non "SimpleJER" config, run the PDSmear systematics. This are labelled with an __2 if they are being used, but otherwise will have the same tree name as the JET_JER systematic trees.
1574  configFromFile(m_fatJets, "Jet.LargeRcollection", rEnv, "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets"); // set to "None" to turn off large jets
1575  configFromFile(m_fatJetUncConfig, "Jet.LargeRuncConfig", rEnv, "rel22/Spring2025_PreRec/R10_CategoryJES_FullJER_FullJMS.config");
1576  configFromFile(m_fatJetUncertaintiesPDsmearing, "Jet.LargeRUncertPDsmearing", rEnv, true); // for non "SimpleJER" config, run the PDSmear systematics. This are labelled with an __2 if they are being used, but otherwise will have the same tree name as the JET_JER systematic trees.
1577  configFromFile(m_fatJetUncVars, "Jet.LargeRuncVars", rEnv, "default"); // do all if not specified
1578  configFromFile(m_WtagConfig, "Jet.WtaggerConfig", rEnv, "SmoothedContainedWTagger_AntiKt10UFOCSSKSoftDrop_FixedSignalEfficiency80_20220221.dat");
1579  configFromFile(m_ZtagConfig, "Jet.ZtaggerConfig", rEnv, "SmoothedContainedZTagger_AntiKt10UFOCSSKSoftDrop_FixedSignalEfficiency80_20220221.dat");
1580  configFromFile(m_WZTaggerCalibArea, "Jet.WZTaggerCalibArea", rEnv, "Winter2024_R22_PreRecs/SmoothedWZTaggers/");
1581  configFromFile(m_ToptagConfig, "Jet.ToptaggerConfig", rEnv, "DNNTagger_AntiKt10UFOSD_TopInclusive80_Oct30.dat");
1582  configFromFile(m_JetTruthLabelName, "Jet.JetTruthLabelName", rEnv, "R10TruthLabel_R21Precision_2022v1");
1583  configFromFile(m_TopTaggerCalibArea, "Jet.TopTaggerCalibArea", rEnv, "Winter2024_R22_PreRecs/JSSWTopTaggerDNN/");
1584  configFromFile(m_jesConfig, "Jet.JESConfig", rEnv, m_isRun3 ? "AntiKt4EMPFlow_MC23a_PreRecR22_Phase2_CalibConfig_ResPU_EtaJES_GSC_241208_InSitu.config" : "PreRec_R22_PFlow_ResPU_EtaJES_GSC_February23_230215.config"); //https://twiki.cern.ch/twiki/bin/view/AtlasProtected/ApplyJetCalibrationR22
1585  configFromFile(m_jesConfigAFII, "Jet.JESConfigAFII", rEnv, m_isRun3 ? "AntiKt4EMPFlow_MC23a_PreRecR22_Phase2_CalibConfig_ResPU_EtaJES_GSC_241208_InSitu.config" : "PreRec_R22_PFlow_ResPU_EtaJES_GSC_February23_230215.config");
1586  configFromFile(m_jesConfigJMS, "Jet.JESConfigJMS", rEnv, "JES_JMS_MC16Recommendation_Consolidated_MC_only_EMTopo_July2019_Rel21.config");
1587  configFromFile(m_jesConfigJMSData, "Jet.JESConfigJMSData", rEnv, "JES_JMS_MC16Recommendation_Consolidated_data_only_EMTopo_Sep2019_Rel21.config");
1588  configFromFile(m_jesConfigFat, "Jet.JESConfigFat", rEnv, "JES_MC20PreRecommendation_R10_UFO_CSSK_SoftDrop_JMS_R21Insitu_26Nov2024.config");
1589  configFromFile(m_jesConfigFatData, "Jet.JESConfigFatData", rEnv, "JES_MC20PreRecommendation_R10_UFO_CSSK_SoftDrop_JMS_R21Insitu_26Nov2024.config");
1590  configFromFile(m_jesCalibSeq, "Jet.CalibSeq", rEnv, "JetArea_Residual_EtaJES_GSC_Insitu");
1591  configFromFile(m_jesCalibSeqJMS, "Jet.CalibSeqJMS", rEnv, "JetArea_Residual_EtaJES_GSC");
1592  configFromFile(m_jesCalibSeqFat, "Jet.CalibSeqFat", rEnv, "EtaJES_JMS");
1593  configFromFile(m_jesCalibArea, "Jet.CalibArea", rEnv, m_isRun3 ? "00-04-83" : "00-04-82");
1594  //
1595  configFromFile(m_defaultTrackJets, "TrackJet.Coll", rEnv, "AntiKtVR30Rmax4Rmin02TrackJets");
1596  configFromFile(m_trkJetPt, "TrackJet.Pt", rEnv, 20000.);
1597  configFromFile(m_trkJetEta, "TrackJet.Eta", rEnv, 2.8);
1598  //
1599  configFromFile(m_badJetCut, "BadJet.Cut", rEnv, "LooseBad");
1600  //
1601  configFromFile(m_doFwdJVT, "FwdJet.doJVT", rEnv, false); // https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/PileupJetRecommendations
1602  configFromFile(m_fJvtWP, "FwdJet.JvtWP", rEnv, "Loose");
1603  configFromFile(m_fJvtPtMax, "FwdJet.JvtPtMax", rEnv, 60e3);
1604  configFromFile(m_fJvtEtaMin, "FwdJet.JvtEtaMin", rEnv, 2.5);
1605  configFromFile(m_fJvtConfigRun2, "FwdJet.JvtConfigRun2", rEnv, "JetJvtEfficiency/May2024/fJvtSFFile_Run2_EMPFlow.root", true); // empty string means dummy SF
1606  configFromFile(m_fJvtConfigRun3, "FwdJet.JvtConfigRun3", rEnv, "JetJvtEfficiency/May2024/fJvtSFFile_Run2_EMPFlow.root", true); // empty string means dummy SF
1607  configFromFile(m_JMScalib, "Jet.JMSCalib", rEnv, false);
1608  //
1609  configFromFile(m_useBtagging, "Btag.enable", rEnv, true);
1610  configFromFile(m_BtagTagger, "Btag.Tagger", rEnv, "GN2v01");
1611  configFromFile(m_BtagWP, "Btag.WP", rEnv, "Continuous");
1612  configFromFile(m_BtagMinPt, "Btag.MinPt", rEnv, -1.); // Not calibrated below 20
1613 
1614  configFromFile(m_bTaggingCalibrationFilePath, "Btag.CalibPath", rEnv, m_isRun3 ? "xAODBTaggingEfficiency/13p6TeV/MC23_2025-06-17_GN2v01_v4.root": "xAODBTaggingEfficiency/13TeV/MC20_2025-06-17_GN2v01_v4.root");
1615  configFromFile(m_BtagSystStrategy, "Btag.SystStrategy", rEnv, "SFEigen");
1616  configFromFile(m_EigenvectorReductionB, "Btag.EigenvectorReductionB", rEnv, "Loose");
1617  configFromFile(m_EigenvectorReductionC, "Btag.EigenvectorReductionC", rEnv, "Loose");
1618  configFromFile(m_EigenvectorReductionLight, "Btag.EigenvectorReductionLight", rEnv, "Loose");
1619 
1620  configFromFile(m_useBtagging_trkJet, "BtagTrkJet.enable", rEnv, true);
1621  configFromFile(m_BtagTagger_trkJet, "BtagTrkJet.Tagger", rEnv, "DL1r");
1622  configFromFile(m_BtagWP_trkJet, "BtagTrkJet.WP", rEnv, "FixedCutBEff_77");
1623  configFromFile(m_BtagMinPt_trkJet, "BtagTrkJet.MinPt", rEnv, -1.); // Not calibrated below 10
1624  configFromFile(m_BtagKeyOverride, "Btag.KeyOverride", rEnv, "", true);
1625  //
1626  configFromFile(m_orDoBoostedElectron, "OR.DoBoostedElectron", rEnv, true);
1627  configFromFile(m_orBoostedElectronC1, "OR.BoostedElectronC1", rEnv, -999.); // set to positive number to override default
1628  configFromFile(m_orBoostedElectronC2, "OR.BoostedElectronC2", rEnv, -999.); // set to positive number to override default - specify in MeV (i.e. "10*GeV" will nor work in the config file)
1629  configFromFile(m_orBoostedElectronMaxConeSize, "OR.BoostedElectronMaxConeSize", rEnv, -999.); // set to positive number to override default
1630  configFromFile(m_orDoBoostedMuon, "OR.DoBoostedMuon", rEnv, true);
1631  configFromFile(m_orBoostedMuonC1, "OR.BoostedMuonC1", rEnv, -999.); // set to positive number to override default
1632  configFromFile(m_orBoostedMuonC2, "OR.BoostedMuonC2", rEnv, -999.); // set to positive number to override default - specify in MeV (i.e. "10*GeV" will nor work in the config file)
1633  configFromFile(m_orBoostedMuonMaxConeSize, "OR.BoostedMuonMaxConeSize", rEnv, -999.); // set to positive number to override default
1634  configFromFile(m_orDoMuonJetGhostAssociation, "OR.DoMuonJetGhostAssociation", rEnv, true);
1635  configFromFile(m_orDoTau, "OR.DoTau", rEnv, false);
1636  configFromFile(m_orDoPhoton, "OR.DoPhoton", rEnv, false);
1637  configFromFile(m_orDoEleJet, "OR.EleJet", rEnv, true);
1638  configFromFile(m_orDoElEl, "OR.ElEl", rEnv, false);
1639  configFromFile(m_orDoElMu, "OR.ElMu", rEnv, false);
1640  configFromFile(m_orDoMuonJet, "OR.MuonJet", rEnv, true);
1641  configFromFile(m_orDoBjet, "OR.Bjet", rEnv, false);
1642  configFromFile(m_orDoElBjet, "OR.ElBjet", rEnv, false);
1643  configFromFile(m_orDoMuBjet, "OR.MuBjet", rEnv, false);
1644  configFromFile(m_orDoTauBjet, "OR.TauBjet", rEnv, false);
1645  configFromFile(m_orApplyRelPt, "OR.MuJetApplyRelPt", rEnv, false);
1646  configFromFile(m_orMuJetPtRatio, "OR.MuJetPtRatio", rEnv, -999.);
1647  configFromFile(m_orMuJetTrkPtRatio, "OR.MuJetTrkPtRatio", rEnv, -999.);
1648  configFromFile(m_orRemoveCaloMuons, "OR.RemoveCaloMuons", rEnv, true);
1649  configFromFile(m_orMuJetInnerDR, "OR.MuJetInnerDR", rEnv, -999.);
1650  configFromFile(m_orBtagWP, "OR.BtagWP", rEnv, "FixedCutBEff_85");
1651  configFromFile(m_orInputLabel, "OR.InputLabel", rEnv, "selected"); //"baseline"
1652  configFromFile(m_orPhotonFavoured, "OR.PhotonFavoured", rEnv, false);
1653  configFromFile(m_orBJetPtUpperThres, "OR.BJetPtUpperThres", rEnv, -1.); // upper pt threshold of b-jet in OR in unit of MeV, -1 means no pt threshold
1654  configFromFile(m_orLinkOverlapObjects, "OR.LinkOverlapObjects", rEnv, false);
1655  //
1656  configFromFile(m_orDoFatjets, "OR.DoFatJets", rEnv, false);
1657  configFromFile(m_EleFatJetDR, "OR.EleFatJetDR", rEnv, -999.);
1658  configFromFile(m_JetFatJetDR, "OR.JetFatJetDR", rEnv, -999.);
1659  //
1660  configFromFile(m_useTRUTH3, "Truth.UseTRUTH3", rEnv, true);
1662  configFromFile(m_upstreamTriggerMatching, "Trigger.UpstreamMatching", rEnv, false);
1663  configFromFile(m_trigMatchingPrefix, "Trigger.MatchingPrefix", rEnv, "", true);
1664  //
1665  configFromFile(m_doIsoSignal, "SigLep.RequireIso", rEnv, true);
1666  configFromFile(m_doElIsoSignal, "SigEl.RequireIso", rEnv, m_doIsoSignal);
1667  configFromFile(m_doMuIsoSignal, "SigMu.RequireIso", rEnv, m_doIsoSignal);
1668  configFromFile(m_doPhIsoSignal, "SigPh.RequireIso", rEnv, m_doIsoSignal);
1669  configFromFile(m_useSigLepForIsoCloseByOR, "SigLepPh.UseSigLepForIsoCloseByOR", rEnv, false);
1670  configFromFile(m_IsoCloseByORpassLabel, "SigLepPh.IsoCloseByORpassLabel", rEnv, "None");
1671 
1672  //
1673  configFromFile(m_eleTerm, "MET.EleTerm", rEnv, "RefEle");
1674  configFromFile(m_gammaTerm, "MET.GammaTerm", rEnv, "RefGamma");
1675  configFromFile(m_tauTerm, "MET.TauTerm", rEnv, "RefTau");
1676  configFromFile(m_jetTerm, "MET.JetTerm", rEnv, "RefJet");
1677  configFromFile(m_muonTerm, "MET.MuonTerm", rEnv, "Muons");
1678  configFromFile(m_inputMETSuffix, "MET.InputSuffix", rEnv, "", true); // May be empty
1679  configFromFile(m_outMETTerm, "MET.OutputTerm", rEnv, "Final");
1680  configFromFile(m_metRemoveOverlappingCaloTaggedMuons, "MET.RemoveOverlappingCaloTaggedMuons", rEnv, true);
1681  configFromFile(m_metDoSetMuonJetEMScale, "Met.DoSetMuonJetEMScale", rEnv, true);
1682  configFromFile(m_metDoRemoveMuonJets, "MET.DoRemoveMuonJets", rEnv, true);
1683  configFromFile(m_metUseGhostMuons, "MET.UseGhostMuons", rEnv, false);
1684  configFromFile(m_metDoMuonEloss, "MET.DoMuonEloss", rEnv, false);
1685  configFromFile(m_metGreedyPhotons, "MET.DoGreedyPhotons", rEnv, false);
1686  configFromFile(m_metVeryGreedyPhotons, "MET.DoVeryGreedyPhotons", rEnv, false);
1687 
1688  configFromFile(m_trkMETsyst, "MET.DoTrkSyst", rEnv, true);
1689  configFromFile(m_caloMETsyst, "MET.DoCaloSyst", rEnv, false);
1690  configFromFile(m_trkJetsyst, "MET.DoTrkJetSyst", rEnv, false);
1691  configFromFile(m_metsysConfigPrefix, "METSys.ConfigPrefix", rEnv, "METUtilities/R22_PreRecs");
1692  configFromFile(m_metJetSelection, "MET.JetSelection", rEnv, "Tight"); // Loose, Tight (default), Tighter, Tenacious
1693  configFromFile(m_softTermParam, "METSig.SoftTermParam", rEnv, met::Random);
1694  configFromFile(m_treatPUJets, "METSig.TreatPUJets", rEnv, true);
1695  configFromFile(m_doPhiReso, "METSig.DoPhiReso", rEnv, false);
1696  //
1697  configFromFile(m_prwActualMu2017File, "PRW.ActualMu2017File", rEnv, "GoodRunsLists/data17_13TeV/20180619/physics_25ns_Triggerno17e33prim.actualMu.OflLumi-13TeV-010.root");
1698  configFromFile(m_prwActualMu2018File, "PRW.ActualMu2018File", rEnv, "GoodRunsLists/data18_13TeV/20190318/physics_25ns_Triggerno17e33prim.actualMu.OflLumi-13TeV-010.root");
1699  configFromFile(m_prwActualMu2022File, "PRW.ActualMu2022File", rEnv, "GoodRunsLists/data22_13p6TeV/20250321/purw.actualMu.root");
1700  configFromFile(m_prwActualMu2023File, "PRW.ActualMu2023File", rEnv, "GoodRunsLists/data23_13p6TeV/20250321/purw.actualMu.root");
1701  configFromFile(m_prwActualMu2024File, "PRW.ActualMu2024File", rEnv, "GoodRunsLists/data24_13p6TeV/20241118/purw.actualMu.root");
1702  configFromFile(m_prwDataSF, "PRW.DataSF", rEnv, 1./1.03); // default for mc16, see: https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/ExtendedPileupReweighting#Tool_Properties
1703  configFromFile(m_prwDataSF_UP, "PRW.DataSF_UP", rEnv, 1./0.99); // mc16 uncertainty? defaulting to the value in PRWtool
1704  configFromFile(m_prwDataSF_DW, "PRW.DataSF_DW", rEnv, 1./1.07); // mc16 uncertainty? defaulting to the value in PRWtool
1705  configFromFile(m_runDepPrescaleWeightPRW, "PRW.UseRunDependentPrescaleWeight", rEnv, false); // If set to true, the prescale weight is the luminosity-average prescale over the lumiblocks in the unprescaled lumicalc file in the PRW tool.
1706  configFromFile(m_autoconfigPRWPath, "PRW.autoconfigPRWPath", rEnv, "dev/PileupReweighting/share/");
1707  configFromFile(m_autoconfigPRWFile, "PRW.autoconfigPRWFile", rEnv, "None");
1708  configFromFile(m_autoconfigPRWCombinedmode, "PRW.autoconfigPRWCombinedmode", rEnv, false);
1709  configFromFile(m_autoconfigPRWRPVmode, "PRW.autoconfigPRWRPVmode", rEnv, false);
1710  configFromFile(m_autoconfigPRWRtags, "PRW.autoconfigPRWRtags", rEnv, "mc20a:r13167_r14859,mc20d:r13144_r14860,mc20e:r13145_r14861,mc21a:r13752_r13829,mc23a:r14622_r14932_r15540,mc23c:r14799_r14908,mc23d:r15224_r15530,mc23e:r16083"); // Tag details here: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasProductionGroup
1711  configFromFile(m_commonPRWFileMC20a, "PRW.commonPRWFileMC20a", rEnv, "PileupReweighting/mc20_common/mc20a.284500.physlite.prw.v1.root");
1712  configFromFile(m_commonPRWFileMC20d, "PRW.commonPRWFileMC20d", rEnv, "PileupReweighting/mc20_common/mc20d.300000.physlite.prw.v1.root");
1713  configFromFile(m_commonPRWFileMC20e, "PRW.commonPRWFileMC20e", rEnv, "PileupReweighting/mc20_common/mc20e.310000.physlite.prw.v1.root");
1714  configFromFile(m_commonPRWFileMC21a, "PRW.commonPRWFileMC21a", rEnv, "PileupReweighting/mc21_common/mc21a.410000.physlite.prw.v1.root");
1715  configFromFile(m_commonPRWFileMC23a, "PRW.commonPRWFileMC23a", rEnv, "PileupReweighting/mc23_common/mc23a.410000.physlite.prw.v2.root");
1716  configFromFile(m_commonPRWFileMC23c, "PRW.commonPRWFileMC23c", rEnv, "PileupReweighting/mc23_common/mc23c.450000.physlite.prw.v1.root");
1717  configFromFile(m_commonPRWFileMC23d, "PRW.commonPRWFileMC23d", rEnv, "PileupReweighting/mc23_common/mc23d.450000.physlite.prw.v1.root");
1718  configFromFile(m_commonPRWFileMC23e, "PRW.commonPRWFileMC23e", rEnv, "PileupReweighting/mc23_common/mc23e.470000.physlite.prw.v1.root");
1719  //
1720  configFromFile(m_strictConfigCheck, "StrictConfigCheck", rEnv, false);
1721 
1722  // By now rEnv should be empty!
1723  if (rEnv.GetTable() && rEnv.GetTable()->GetSize()>0){
1724  ATH_MSG_ERROR("Found " << rEnv.GetTable()->GetSize() << " unparsed environment options:");
1725  rEnv.Print();
1726  ATH_MSG_ERROR("Please fix your configuration!");
1727  return StatusCode::FAILURE;
1728  }
1729 
1730  // Set up the correct configuration files for the large-R jet tagging corresponding to the input tagger config
1731  if (!m_WtagConfig.empty()) {
1732  if (m_WtagConfig.find("Efficiency50") != std::string::npos){
1733  m_WTagUncConfig = "R10_SF_LCTopo_WTag_SigEff50.config";
1734  }
1735  else if (m_WtagConfig.find("Efficiency80") != std::string::npos){
1736  m_WTagUncConfig = "R10_SF_LCTopo_WTag_SigEff80.config";
1737  }
1738  else {
1739  ATH_MSG_ERROR("You have specified a large-R W-tag config without a matching uncertainties file. Please fix this. Currently the 50% and 80% WPs are supported");
1740  }
1741  }
1742  if (!m_ZtagConfig.empty()) {
1743  if (m_ZtagConfig.find("Efficiency50") != std::string::npos){
1744  m_ZTagUncConfig = "R10_SF_LCTopo_ZTag_SigEff50.config";
1745  }
1746  else if (m_ZtagConfig.find("Efficiency80") != std::string::npos){
1747  m_ZTagUncConfig = "R10_SF_LCTopo_ZTag_SigEff80.config";
1748  }
1749  else {
1750  ATH_MSG_ERROR("You have specified a large-R Z-tag config without a matching uncertainties file. Please fix this. Currently the 50% and 80% WPs are supported");
1751  }
1752  }
1753  std::string TopTagEff = "";
1754  std::string TopTagType = "";
1755  if (!m_ToptagConfig.empty()) {
1756  if (m_ToptagConfig.find("50") != std::string::npos){
1757  TopTagEff = "50";
1758  }
1759  else if (m_ToptagConfig.find("80") != std::string::npos){
1760  TopTagEff = "80";
1761  }
1762  else {
1763  ATH_MSG_ERROR("You have specified a large-R Top-tag config without a matching uncertainties file. Please fix this. Currently the 50% and 80% WPs are supported");
1764  }
1765  //
1766  if (m_ToptagConfig.find("Inclusive") != std::string::npos){
1767  TopTagType = "Inclusive";
1768  }
1769  else if (m_ToptagConfig.find("Contained") != std::string::npos){
1770  TopTagType = "Contained";
1771  }
1772  else {
1773  ATH_MSG_ERROR("You have specified a large-R Top-tag config without a matching uncertainties file. Please fix this. Currently the contained and inclusive WPs are supported");
1774  }
1775  m_TopTagUncConfig = "R10_SF_LCTopo_TopTag"+TopTagType+"_SigEff"+TopTagEff+".config";
1776  }
1777 
1778  //** validate configuration
1780 
1781  //** cache trigger chains for electron matching
1783 
1784  //** cache trigger chains for matching (both electrons and muons)
1786 
1794 
1800 
1806 
1807  return StatusCode::SUCCESS;
1808 }

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ resetSystematics()

StatusCode ST::SUSYObjDef_xAOD::resetSystematics ( )
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 2103 of file SUSYObjDef_xAOD.cxx.

2103  {
2105 }

◆ setBoolProperty()

StatusCode ST::SUSYObjDef_xAOD::setBoolProperty ( const std::string &  name,
const bool &  property 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 879 of file SUSYObjDef_xAOD.cxx.

879  {
880  m_bool_prop_set.insert(name);
881  return this->setProperty(name, property);
882 }

◆ SetBtagWeightDecorations()

StatusCode ST::SUSYObjDef_xAOD::SetBtagWeightDecorations ( const xAOD::Jet input,
const asg::AnaToolHandle< IBTaggingSelectionTool > &  btagSelTool,
const std::string &  btagTagger 
) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 1156 of file Jets.cxx.

1156  {
1157  double weight = 0.;
1158  if ( btagSelTool->getTaggerWeight(input, weight, false/*useVetoWP=false*/) != CP::CorrectionCode::Ok ) {
1159  ATH_MSG_ERROR( btagSelTool->name() << ": could not retrieve b-tag weight (" << btagTagger << ")." );
1160  return StatusCode::FAILURE;
1161  }
1162  dec_btag_weight(input) = weight;
1163  ATH_MSG_DEBUG( btagSelTool->name() << " b-tag weight: " << weight );
1164 
1165  double btag_pb(-10), btag_pc(-10), btag_pu(-10), btag_ptau(-10);
1166  // following name change is needed given different name is used for GN2v00 in derivation and in CDI
1167  std::string actualTagger = btagTagger;
1168  if (btagTagger == "GN2v00LegacyWP" || btagTagger == "GN2v00NewAliasWP"){
1169  actualTagger = "GN2v00";
1170  }
1171  xAOD::BTaggingUtilities::getBTagging(input)->pb(actualTagger, btag_pb);
1172  xAOD::BTaggingUtilities::getBTagging(input)->pc(actualTagger, btag_pc);
1173  xAOD::BTaggingUtilities::getBTagging(input)->pu(actualTagger, btag_pu);
1174  xAOD::BTaggingUtilities::getBTagging(input)->pu(actualTagger, btag_ptau);
1175  dec_btag_pb(input) = btag_pb;
1176  dec_btag_pc(input) = btag_pc;
1177  dec_btag_pu(input) = btag_pu;
1178  dec_btag_ptau(input) = btag_ptau;
1179  ATH_MSG_DEBUG( btagSelTool->name() << " b-tag " << btagTagger << "-type pb: " << btag_pb );
1180  ATH_MSG_DEBUG( btagSelTool->name() << " b-tag " << btagTagger << "-type pc: " << btag_pc );
1181  ATH_MSG_DEBUG( btagSelTool->name() << " b-tag " << btagTagger << "-type pu: " << btag_pu );
1182  ATH_MSG_DEBUG( btagSelTool->name() << " b-tag " << btagTagger << "-type ptau: " << btag_ptau );
1183  // backwards compatibility
1184  if ( btagSelTool->name().find("DL1")!=std::string::npos ) {
1185  dec_btag_dl1pb(input) = btag_pb;
1186  dec_btag_dl1pc(input) = btag_pc;
1187  dec_btag_dl1pu(input) = btag_pu;
1188  }
1189  else {
1190  dec_btag_dl1pb(input) = -10;
1191  dec_btag_dl1pc(input) = -10;
1192  dec_btag_dl1pu(input) = -10;
1193  }
1194  return StatusCode::SUCCESS;
1195  }

◆ setDataSource()

void ST::SUSYObjDef_xAOD::setDataSource ( int  source)

Definition at line 1207 of file SUSYObjDef_xAOD.cxx.

1207  {
1208  if (source == 0) m_dataSource = Data;
1209  else if (source == 1) m_dataSource = FullSim;
1210  else if (source == 2) m_dataSource = AtlfastII;
1211  else ATH_MSG_ERROR("Trying to set data source to unknown type (" << source << ")");
1212 }

◆ setUseIncidents()

void asg::AsgMetadataTool::setUseIncidents ( const bool  flag)
inlineprotectedinherited

Definition at line 132 of file AsgMetadataTool.h.

133  {
135  }

◆ split()

const std::vector< std::string > ST::SUSYObjDef_xAOD::split ( const std::string &  s,
const std::string &  delim 
) const
protected

Definition at line 1811 of file SUSYObjDef_xAOD.cxx.

1811  {
1812  assert(delim.length() == 1);
1813  std::vector<std::string> retval;
1814  retval.reserve(std::count(s.begin(), s.end(), delim[0]) + 1);
1815  // if only 1
1816  if (s.find(delim)==std::string::npos) {
1817  retval.emplace_back(s);
1818  return retval;
1819  }
1820  // if need to split
1821  size_t last = 0;
1822  size_t next = 0;
1823  bool gothere=false;
1824  while ((next = s.find(delim, last)) != std::string::npos) {
1825  retval.emplace_back(s.substr(last, next - last));
1826  last = next + delim.length();
1827  gothere=true;
1828  }
1829  if(gothere)
1830  retval.emplace_back(s.substr(last));
1831 
1832  return retval;
1833 }

◆ SUSYToolsInit()

StatusCode SUSYObjDef_xAOD::SUSYToolsInit ( )
private

Definition at line 113 of file SUSYToolsInit.cxx.

114 {
115  if (m_dataSource < 0) {
116  ATH_MSG_FATAL("Data source incorrectly configured!!");
117  ATH_MSG_FATAL("You must set the DataSource property to Data, FullSim or AtlfastII !!");
118  ATH_MSG_FATAL("Expect segfaults if you're not checking status codes, which you should be !!");
119  return StatusCode::FAILURE;
120  }
121 
122  if (m_subtool_init) {
123  ATH_MSG_INFO("SUSYTools subtools already created. Ignoring this call.");
124  ATH_MSG_INFO("Note: No longer necessary to explicitly call SUSYToolsInit. Will avoid creating tools again.");
125  return StatusCode::SUCCESS;
126  }
127 
128  // /////////////////////////////////////////////////////////////////////////////////////////
129  // Initialise PileupReweighting Tool
130 
131  if (!m_prwTool.isUserConfigured()) {
132  ATH_MSG_DEBUG("Will now init the PRW tool");
133  std::vector<std::string> file_conf;
134  for (UInt_t i = 0; i < m_prwConfFiles.size(); i++) {
135  ATH_MSG_INFO("Adding PRW file: " << m_prwConfFiles.at(i));
136  file_conf.push_back(m_prwConfFiles.at(i));
137  }
138 
139  std::vector<std::string> file_ilumi;
140  for (UInt_t i = 0; i < m_prwLcalcFiles.size(); i++) {
141  ATH_MSG_INFO("Adding ilumicalc file: " << m_prwLcalcFiles.at(i));
142  file_ilumi.push_back(m_prwLcalcFiles.at(i));
143  }
144 
145  m_prwTool.setTypeAndName("CP::PileupReweightingTool/PrwTool");
146  ATH_CHECK( m_prwTool.setProperty("ConfigFiles", file_conf) );
147  ATH_CHECK( m_prwTool.setProperty("LumiCalcFiles", file_ilumi) );
148  ATH_CHECK( m_prwTool.setProperty("DataScaleFactor", m_prwDataSF) ); // 1./1.03 -> default for mc16, see: https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/ExtendedPileupReweighting#Tool_Properties
149  ATH_CHECK( m_prwTool.setProperty("DataScaleFactorUP", m_prwDataSF_UP) ); // 1. -> old value (mc15), as the one for mc16 is still missing
150  ATH_CHECK( m_prwTool.setProperty("DataScaleFactorDOWN", m_prwDataSF_DW) ); // 1./1.18 -> old value (mc15), as the one for mc16 is still missing
151  ATH_CHECK( m_prwTool.setProperty("TrigDecisionTool", m_trigDecTool.getHandle()) );
152  ATH_CHECK( m_prwTool.setProperty("UseRunDependentPrescaleWeight", m_runDepPrescaleWeightPRW) );
153  ATH_CHECK( m_prwTool.setProperty("OutputLevel", MSG::WARNING) );
155  } else {
156  ATH_MSG_INFO("Using user-configured PRW tool");
158  }
159 
161  // Initialize LRT systematics tool
162  if (!m_LRTuncTool.isUserConfigured() && !isData())
163  {
164  ATH_MSG_INFO("Initializing LRT uncertainty tool");
165  m_LRTuncTool.setTypeAndName("InDet::InclusiveTrackFilterTool/LRTUncTool");
166  ATH_CHECK( m_LRTuncTool.setProperty("Seed", 1) );
167  if (m_isRun3) {
168  if (m_mcCampaign == "mc23d" || m_mcCampaign == "mc23e")
169  ATH_MSG_WARNING("Please note that current ID recommendations only cover mc23a and not (yet) mc23d/e!");
170  ATH_CHECK( m_LRTuncTool.setProperty("calibFileLRTEff", "InDetTrackSystematicsTools/CalibData_25.2_2025-v00/LargeD0TrackingRecommendations_mc23a.root") );
171  }
172  else
173  ATH_CHECK( m_LRTuncTool.setProperty("calibFileLRTEff", "InDetTrackSystematicsTools/CalibData_24.0_2023-v00/LargeD0TrackingRecommendations_20230824.root") );
175  } else {
176  ATH_MSG_INFO("Using user-configured LRT uncertainty tool");
178  }
179 
180  std::string toolName; // to be used for tool init below, keeping explicit string constants a minimum /CO
181 
182  std::string jetname,jetcoll,fatjetcoll;
183  if (m_slices["jet"]) {
185  // Initialise jet calibration tool
186 
187  // pick the right config file for the JES tool : https://twiki.cern.ch/twiki/bin/view/AtlasProtected/ApplyJetCalibrationR22
189  jetcoll = jetname + "Jets";
190 
192  toolName = "JetCalibTool_" + jetname;
193  m_jetCalibTool.setTypeAndName("JetCalibrationTool/"+toolName);
194  std::string JES_config_file, calibseq;
195 
197  ATH_MSG_ERROR("Unknown (unsupported) jet collection is used, (m_jetInputType = " << m_jetInputType << ")");
198  return StatusCode::FAILURE;
199  }
200 
201  std::string JESconfig = isAtlfast() ? m_jesConfigAFII : m_jesConfig;
202  if(isAtlfast() && m_isRun3) {
203  ATH_MSG_WARNING("Jet JES/JER recommendations currently not available for fast sim in Run 3, falling back to full sim version");
204  JESconfig = m_jesConfig;
205  }
206 
207  calibseq = m_jesCalibSeq;
208  JES_config_file = JESconfig;
209 
210  // remove Insitu if it's in the string if not data
211  if (!isData()) {
212  std::string insitu("_Insitu");
213  auto found = calibseq.find(insitu);
214  if(found != std::string::npos){
215  calibseq.erase(found, insitu.length());
216  }
217  }
218 
219  // JMS calibration (if requested)
220  if (m_JMScalib){
221  ATH_MSG_ERROR("JMS calibration is not supported yet for R22. Please modify your settings.");
222  return StatusCode::FAILURE;
223  }
224 
225  // now instantiate the tool
226  ATH_CHECK( m_jetCalibTool.setProperty("JetCollection", jetname) );
227  ATH_CHECK( m_jetCalibTool.setProperty("ConfigFile", JES_config_file) );
228  ATH_CHECK( m_jetCalibTool.setProperty("CalibSequence", calibseq) );
230  ATH_CHECK( m_jetCalibTool.setProperty("IsData", isData()) );
231  ATH_CHECK( m_jetCalibTool.setProperty("OutputLevel", this->msg().level()) );
234  }
235 
236  if (m_slices["fjet"]) {
237  //same for fat groomed jets
238  fatjetcoll = m_fatJets;
239 
240  if(fatjetcoll == "AnalysisLargeRJets") {
241  ATH_MSG_DEBUG("Fall back to calibration for AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets, original name for AnalysisLargeRJets");
242  fatjetcoll = "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets";
243  }
244  if (fatjetcoll.size()>3)fatjetcoll.erase(fatjetcoll.size()-4,4);
245  if (!m_jetFatCalibTool.isUserConfigured() && !m_fatJets.empty()) {
246  toolName = "JetFatCalibTool_" + m_fatJets;
247  m_jetFatCalibTool.setTypeAndName("JetCalibrationTool/"+toolName);
248 
249  std::string jesConfigFat = m_jesConfigFat;
250  std::string jesCalibSeqFat = m_jesCalibSeqFat;
251  // add Insitu if data
252  if(isData()) jesCalibSeqFat += "_Insitu";
253 
254  // now instantiate the tool
255  ATH_CHECK( m_jetFatCalibTool.setProperty("JetCollection", fatjetcoll) );
256  ATH_CHECK( m_jetFatCalibTool.setProperty("ConfigFile", jesConfigFat) );
257  ATH_CHECK( m_jetFatCalibTool.setProperty("CalibSequence", jesCalibSeqFat) );
258  // always set to false : https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/ApplyJetCalibrationR21
260  ATH_CHECK( m_jetFatCalibTool.setProperty("OutputLevel", this->msg().level()) );
263  }
264 
265  if (m_slices["fjet"]) {
267  // Initialise Boson taggers: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/BoostedJetTaggingRecommendationFullRun2#Higgs_taggers
268  if (!m_WTaggerTool.isUserConfigured() && !m_WtagConfig.empty()) {
269  m_WTaggerTool.setTypeAndName("SmoothedWZTagger/WTagger");
270  ATH_CHECK( m_WTaggerTool.setProperty("ContainerName", m_fatJets) );
274  ATH_CHECK( m_WTaggerTool.setProperty("TruthBosonContainerName", "TruthBoson") ); // Set this if you are using a TRUTH3 style truth boson container;
275  ATH_CHECK( m_WTaggerTool.setProperty("TruthTopQuarkContainerName", "TruthTop") ); // Set this if you are using a TRUTH3 style truth boson container;
276 #ifndef XAOD_STANDALONE
277  ATH_CHECK( m_WTaggerTool.setProperty("SuppressOutputDependence", true) );
278 #endif
279  ATH_CHECK( m_WTaggerTool.setProperty("OutputLevel", this->msg().level()) );
281 
282  // Retrieving DecorationName (needed to access tagging results downstream):
283  std::string WConfigPath = PathResolverFindCalibFile("BoostedJetTaggers/"+m_WZTaggerCalibArea+"/"+m_WtagConfig);
284  if ( m_WconfigReader.ReadFile( WConfigPath.c_str(), EEnvLevel(0) ) ) {
285  ATH_MSG_ERROR( "Error while reading large-R config file : " << WConfigPath );
286  return StatusCode::FAILURE;
287  }
288  else ATH_MSG_DEBUG( "Successfully read large-R config file : " << WConfigPath );
289 
290  m_WDecorName = m_WconfigReader.GetValue("DecorationName" ,"");
291  ANA_MSG_DEBUG( "Found DecorationName in large-R config file : " << m_WDecorName );
292 
294 
295  if (!m_ZTaggerTool.isUserConfigured() && !m_ZtagConfig.empty()) {
296  m_ZTaggerTool.setTypeAndName("SmoothedWZTagger/ZTagger");
297  ATH_CHECK( m_ZTaggerTool.setProperty("ContainerName", m_fatJets) );
301  ATH_CHECK( m_ZTaggerTool.setProperty("TruthBosonContainerName", "TruthBoson") ); // Set this if you are using a TRUTH3 style truth boson container;
302  ATH_CHECK( m_ZTaggerTool.setProperty("TruthTopQuarkContainerName", "TruthTop") ); // Set this if you are using a TRUTH3 style truth boson container;
303 #ifndef XAOD_STANDALONE
304  ATH_CHECK( m_ZTaggerTool.setProperty("SuppressOutputDependence", true) );
305 #endif
306  ATH_CHECK( m_ZTaggerTool.setProperty("OutputLevel", this->msg().level()) );
308 
309  // Retrieving DecorationName (needed to access tagging results downstream):
310  std::string ZConfigPath = PathResolverFindCalibFile("BoostedJetTaggers/"+m_WZTaggerCalibArea+"/"+m_ZtagConfig);
311  if ( m_ZconfigReader.ReadFile( ZConfigPath.c_str(), EEnvLevel(0) ) ) {
312  ATH_MSG_ERROR( "Error while reading large-R config file : " << ZConfigPath );
313  return StatusCode::FAILURE;
314  }
315  else ATH_MSG_DEBUG( "Successfully read large-R config file : " << ZConfigPath );
316 
317  m_ZDecorName = m_ZconfigReader.GetValue("DecorationName" ,"");
318  ANA_MSG_DEBUG( "Found DecorationName in large-R config file : " << m_ZDecorName );
319 
321 
322  if (!m_TopTaggerTool.isUserConfigured() && !m_ToptagConfig.empty()) {
323  m_TopTaggerTool.setTypeAndName("JSSWTopTaggerDNN/TopTagger");
324  ATH_CHECK( m_TopTaggerTool.setProperty("ContainerName", m_fatJets) );
328  ATH_CHECK( m_TopTaggerTool.setProperty("TruthBosonContainerName", "TruthBoson") ); // Set this if you are using a TRUTH3 style truth boson container;
329  ATH_CHECK( m_TopTaggerTool.setProperty("TruthTopQuarkContainerName", "TruthTop") ); // Set this if you are using a TRUTH3 style truth boson container;
330 #ifndef XAOD_STANDALONE
331  ATH_CHECK( m_TopTaggerTool.setProperty("SuppressOutputDependence", true) );
332 #endif
333  ATH_CHECK( m_TopTaggerTool.setProperty("OutputLevel", this->msg().level()) );
335 
336  // Retrieving DecorationName (needed to access tagging results downstream):
337  std::string TopConfigPath = PathResolverFindCalibFile("BoostedJetTaggers/"+m_TopTaggerCalibArea+"/"+m_ToptagConfig);
338  if ( m_TopconfigReader.ReadFile( TopConfigPath.c_str(), EEnvLevel(0) ) ) {
339  ATH_MSG_ERROR( "Error while reading large-R config file : " << TopConfigPath );
340  return StatusCode::FAILURE;
341  }
342  else ATH_MSG_DEBUG( "Successfully read large-R config file : " << TopConfigPath );
343 
344  m_TopDecorName = m_TopconfigReader.GetValue("DecorationName" ,"");
345  ANA_MSG_DEBUG( "Found DecorationName in large-R config file : " << m_TopDecorName );
346 
348 
350  // Initialise JetTruthLabelingTool: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/JetUncertaintiesRel21Summer2019LargeR#AnalysisBase_21_2_114_and_newer
351  if(!isData()) {
352  m_label_truthKey = fatjetcoll+"."+m_JetTruthLabelName;
353  ATH_CHECK(m_label_truthKey.initialize());
354 
356  m_jetTruthLabelingTool.setTypeAndName("JetTruthLabelingTool/ST_JetTruthLabelingTool");
357  ATH_CHECK( m_jetTruthLabelingTool.setProperty("RecoJetContainer", m_fatJets) );
359  ATH_CHECK( m_jetTruthLabelingTool.setProperty("UseTRUTH3", m_useTRUTH3) ); // Set this to false only if you have the FULL !TruthParticles container in your input file
360  ATH_CHECK( m_jetTruthLabelingTool.setProperty("TruthParticleContainerName", "TruthParticles") );
361  ATH_CHECK( m_jetTruthLabelingTool.setProperty("TruthBosonContainerName", "TruthBoson") ); // Set this if you are using a TRUTH3 style truth boson container
362  ATH_CHECK( m_jetTruthLabelingTool.setProperty("TruthTopQuarkContainerName", "TruthTop") ); // Set this if you are using a TRUTH3 style truth top quark container
363  ATH_CHECK( m_jetTruthLabelingTool.setProperty("OutputLevel", this->msg().level()) );
366  }
367  }
368 
369  if (m_slices["jet"] || m_slices["fjet"]) {
370 
371 
373  // Initialise jet uncertainty tool
374  // https://twiki.cern.ch/twiki/bin/view/AtlasProtected/JetUncertaintiesRel22
375  ATH_MSG_INFO("Set up Jet Uncertainty tool...");
376 
377  // if not set, derive the MCType from the simulation type and MC campaign
378  if (m_jetUncertaintiesMCType.empty()) m_jetUncertaintiesMCType = m_isRun3 ? (isAtlfast() ? "MC23AF3" : "MC23") : (isAtlfast() ? "AF3" : "MC20");
379 
380  // large-R jets use MC20AF3 instead of AF3
382  if (m_fatJetUncertaintiesMCType == "AF3") {
383  m_fatJetUncertaintiesMCType = "MC20AF3";
384  }
385 
387  std::string jetdef("AntiKt4" + xAOD::JetInput::typeName(xAOD::JetInput::Type(m_jetInputType)));
388 
389  if(jetdef !="AntiKt4EMPFlow"){
390  ATH_MSG_WARNING("Jet Uncertaintes recommendations only exist for PFlow jets, falling back to AntiKt4EMPFlow");
391  jetdef = "AntiKt4EMPFlow";
392  }
393  toolName = "JetUncertaintiesTool_" + jetdef;
394 
395  m_jetUncertaintiesTool.setTypeAndName("JetUncertaintiesTool/"+toolName);
396 
397  ATH_CHECK( m_jetUncertaintiesTool.setProperty("JetDefinition", jetdef) );
399  ATH_CHECK( m_jetUncertaintiesTool.setProperty("IsData", false) ); // Never use the PDSmearing for the nominal tool.
403  ATH_CHECK( m_jetUncertaintiesTool.setProperty("OutputLevel", this->msg().level()) );
406 
407  ATH_MSG_INFO("Set up Jet PD Smear Uncertainty tool...");
408 
410  std::string jetdef("AntiKt4" + xAOD::JetInput::typeName(xAOD::JetInput::Type(m_jetInputType)));
411 
412  if(jetdef !="AntiKt4EMPFlow"){
413  ATH_MSG_WARNING("Jet Uncertaintes recommendations only exist for PFlow jets, falling back to AntiKt4EMPFlow");
414  jetdef = "AntiKt4EMPFlow";
415  }
416  toolName = "JetUncertaintiesPDSmearTool_" + jetdef;
417 
418  m_jetUncertaintiesPDSmearTool.setTypeAndName("JetUncertaintiesTool/"+toolName);
419 
420  // If, for some reason, you're trying to use the PDSmear, with the reduced set return an error (you shouldn't do this, you're just going to duplicate the SimpleJER results.
421  bool JERUncPDsmearing = isData() ? isData() : m_jetUncertaintiesPDsmearing;
422  if (m_jetUncertaintiesConfig.find("SimpleJER") != std::string::npos && JERUncPDsmearing){
423  ATH_MSG_ERROR("You are trying to use the SimpleJER set, with PDsmearing. There is no functionality for this. Please fix your config file. Either run with PDSmear set to false, or run with the AllJER or FullJER sets.");
424  return StatusCode::FAILURE;
425  }
426  ATH_CHECK( m_jetUncertaintiesPDSmearTool.setProperty("JetDefinition", jetdef) );
428  ATH_CHECK( m_jetUncertaintiesPDSmearTool.setProperty("IsData", true) ); // Set to True by default for PDSmear-named tool.
429  ATH_CHECK( m_jetUncertaintiesPDSmearTool.setProperty("PseudoDataJERsmearingMode", true) );
432  ATH_CHECK( m_jetUncertaintiesPDSmearTool.setProperty("OutputLevel", this->msg().level()) );
434  } else{
435  ATH_MSG_DEBUG("Do not retrieve the jet PD Smearing tool if it is not configured");
436  //ATH_CHECK( m_jetUncertaintiesPDSmearTool.retrieve() );
437  }
438  }
439 
440  if (m_slices["fjet"]) {
441 
442  // JetUncertaintiesTool handles JES, JER and JMS uncertainties for large-R jets
444 
445  ATH_MSG_INFO("Set up Large-R Jet Uncertainty tool...");
446 
447  // Print warning about missing large-R jets uncertainties for FastSim in mc23
448  if (m_isRun3 && isAtlfast())
449  ATH_MSG_WARNING("Uncertainties for large-R jets in mc23 and fast simulation not yet available; be aware uncertainties might be not complete!");
450 
451  toolName = "JetUncertaintiesTool_" + m_fatJets;
452  m_fatjetUncertaintiesTool.setTypeAndName("JetUncertaintiesTool/"+toolName);
453 
454  ATH_CHECK( m_fatjetUncertaintiesTool.setProperty("JetDefinition", fatjetcoll) );
459 
460  //Restrict variables to be shifted if (required)
461  if( m_fatJetUncVars != "default" ){
462  std::vector<std::string> shift_vars = {};
463 
464  std::string temp(m_fatJetUncVars);
465  do {
466  auto pos = temp.find(',');
467  shift_vars.push_back(temp.substr(0, pos));
468  if (pos == std::string::npos)
469  temp = "";
470  else
471  temp = temp.substr(pos + 1);
472 
473  }
474  while (!temp.empty() );
475 
476  ATH_CHECK( m_fatjetUncertaintiesTool.setProperty("VariablesToShift", shift_vars) );
477  }
478 
479  ATH_CHECK( m_fatjetUncertaintiesTool.setProperty("OutputLevel", this->msg().level()) );
482 
483 
485 
486  ATH_MSG_INFO("Set up Jet PD Smear Uncertainty tool...");
487 
488  toolName = "JetUncertaintiesPDSmearTool_" + m_fatJets;
489  m_fatjetUncertaintiesPDSmearTool.setTypeAndName("JetUncertaintiesTool/"+toolName);
490 
491  // If, for some reason, you're trying to use the PDSmear, with the reduced set return an error (you shouldn't do this, you're just going to duplicate the SimpleJER results.
492  bool JERUncPDsmearing = isData() ? isData() : m_fatJetUncertaintiesPDsmearing;
493  if (m_fatJetUncConfig.find("SimpleJER") != std::string::npos && JERUncPDsmearing){
494  ATH_MSG_ERROR("You are trying to use the SimpleJER set, with PDsmearing. There is no functionality for this. Please fix your config file. Either run with PDSmear set to false, or run with the AllJER or FullJER sets.");
495  return StatusCode::FAILURE;
496  }
497  ATH_CHECK( m_fatjetUncertaintiesPDSmearTool.setProperty("JetDefinition", fatjetcoll) );
499  ATH_CHECK( m_fatjetUncertaintiesPDSmearTool.setProperty("IsData", true) ); // Set to True by default for PDSmear-named tool.
500  ATH_CHECK( m_fatjetUncertaintiesPDSmearTool.setProperty("PseudoDataJERsmearingMode", true) );
503  ATH_CHECK( m_fatjetUncertaintiesPDSmearTool.setProperty("OutputLevel", this->msg().level()) );
505  } else{
506  ATH_MSG_DEBUG("Do not retrieve the jet PD Smearing tool if it is not configured");
507  }
508 
509 
510  // FFSmearingTool handles JMR uncertainties for large-R jets
511  if (!m_fatjetFFSmearingTool.isUserConfigured() && !m_fatJets.empty() && !m_fatJetUncConfig.empty()) {
512 
513  ATH_MSG_INFO("Set up Large-R FFJetSmearingTool ...");
514 
515  toolName = "FFJetSmearingTool_" + m_fatJets;
516  m_fatjetFFSmearingTool.setTypeAndName("CP::FFJetSmearingTool/"+toolName);
517 
518  ATH_CHECK( m_fatjetFFSmearingTool.setProperty("MassDef", "UFO") );
520  ATH_CHECK( m_fatjetFFSmearingTool.setProperty("ConfigFile", "rel22/Spring2025_PreRec/R10_FullJMR.config") );
521  ATH_CHECK( m_fatjetFFSmearingTool.setProperty("OutputLevel", this->msg().level()) );
524 
525  // Need to keep track of systematics of FFJetSmearingTool
526  if (!m_fatJets.empty()) {
527  // m_fatjetFFSmearingSyst = CP::make_systematics_vector(m_fatjetFFSmearingTool->recommendedSystematics());
528  ATH_MSG_INFO("The following uncertainties have been defined for the m_fatjetFFSmearingTool");
529  for (auto & sysSet : m_fatjetFFSmearingTool->recommendedSystematics()){
530  m_fatjetFFSmearingSyst.push_back(CP::SystematicSet({sysSet}));
531  ATH_MSG_INFO(" - " << sysSet.name());
532  }
533  }
534 
535  ATH_MSG_INFO(" Won't initialise Wtagger uncertainty tool for fat jets until we get rec for UFO");
536  // Won't initialise Wtagger uncertainty tool for fat jets until we get rec for UFO
537  /*
538  if (!m_WTagjetUncertaintiesTool.isUserConfigured() && !m_fatJets.empty() && !m_WtagConfig.empty() && !m_WTagUncConfig.empty()) {
539 
540  toolName = "WTagJetUncertaintiesTool_" + m_fatJets;
541  m_WTagjetUncertaintiesTool.setTypeAndName("JetUncertaintiesTool/"+toolName);
542  ATH_CHECK( m_WTagjetUncertaintiesTool.setProperty("JetDefinition", fatjetcoll) );
543  ATH_CHECK( m_WTagjetUncertaintiesTool.setProperty("MCType", "MC16") );
544  ATH_CHECK( m_WTagjetUncertaintiesTool.setProperty("IsData", isData()) );
545  ATH_CHECK( m_WTagjetUncertaintiesTool.setProperty("ConfigFile", "rel21/Fall2020/"+m_WTagUncConfig) );
546  ATH_CHECK( m_WTagjetUncertaintiesTool.setProperty("OutputLevel", this->msg().level()) );
547  ATH_CHECK( m_WTagjetUncertaintiesTool.retrieve() );
548  } else if (m_WTagjetUncertaintiesTool.isUserConfigured()) ATH_CHECK(m_WTagjetUncertaintiesTool.retrieve());
549  */
550  ATH_MSG_INFO(" Won't initialise Ztagger uncertainty tool for fat jets until we get rec for UFO");
551  // Won't initialise Ztagger uncertainty tool for fat jets until we get rec for UFO
552  /*
553  if (!m_ZTagjetUncertaintiesTool.isUserConfigured() && !m_fatJets.empty() && !m_ZtagConfig.empty() && !m_ZTagUncConfig.empty()) {
554 
555  toolName = "ZTagJetUncertaintiesTool_" + m_fatJets;
556  m_ZTagjetUncertaintiesTool.setTypeAndName("JetUncertaintiesTool/"+toolName);
557  ATH_CHECK( m_ZTagjetUncertaintiesTool.setProperty("JetDefinition", fatjetcoll) );
558  ATH_CHECK( m_ZTagjetUncertaintiesTool.setProperty("ConfigFile", "rel21/Fall2020/"+m_ZTagUncConfig) );
559  ATH_CHECK( m_ZTagjetUncertaintiesTool.setProperty("MCType", "MC16") );
560  ATH_CHECK( m_ZTagjetUncertaintiesTool.setProperty("IsData", isData()) );
561  ATH_CHECK( m_ZTagjetUncertaintiesTool.setProperty("OutputLevel", this->msg().level()) );
562  ATH_CHECK( m_ZTagjetUncertaintiesTool.retrieve() );
563  } else if (m_ZTagjetUncertaintiesTool.isUserConfigured()) ATH_CHECK(m_ZTagjetUncertaintiesTool.retrieve());
564  */
565  ATH_MSG_INFO(" Won't initialise top-tagger uncertainty tool for fat jets until we get rec for UFO");
566  // Won't initialise top-tagger uncertainty tool for fat jets until we get rec for UFO
567  /*
568  if (!m_TopTagjetUncertaintiesTool.isUserConfigured() && !m_fatJets.empty() && !m_ToptagConfig.empty() && !m_TopTagUncConfig.empty()) {
569 
570  toolName = "TopTagJetUncertaintiesTool_" + m_fatJets;
571  m_TopTagjetUncertaintiesTool.setTypeAndName("JetUncertaintiesTool/"+toolName);
572  ATH_CHECK( m_TopTagjetUncertaintiesTool.setProperty("JetDefinition", fatjetcoll) );
573  ATH_CHECK( m_TopTagjetUncertaintiesTool.setProperty("MCType", "MC16") );
574  ATH_CHECK( m_TopTagjetUncertaintiesTool.setProperty("IsData", isData()) );
575  ATH_CHECK( m_TopTagjetUncertaintiesTool.setProperty("ConfigFile", "rel21/Fall2020/"+m_TopTagUncConfig) );
576  ATH_CHECK( m_TopTagjetUncertaintiesTool.setProperty("OutputLevel", this->msg().level()) );
577  ATH_CHECK( m_TopTagjetUncertaintiesTool.retrieve() );
578  } else if (m_TopTagjetUncertaintiesTool.isUserConfigured()) ATH_CHECK(m_TopTagjetUncertaintiesTool.retrieve());
579  */
580  }
581 
582 
583  // tagger SF and uncertainties
584  // https://twiki.cern.ch/twiki/bin/view/AtlasProtected/BoostedJetTaggingRecommendationFullRun2
585  // To be implemented here
586 
587  if (m_slices["jet"]) {
589  // Initialise jet cleaning tools
590 
591  // see https://twiki.cern.ch/twiki/bin/view/AtlasProtected/HowToCleanJetsR22
593  toolName = "JetCleaningTool";
594  m_jetCleaningTool.setTypeAndName("JetCleaningTool/"+toolName);
596  ATH_CHECK( m_jetCleaningTool.setProperty("DoUgly", false) );
597  ATH_CHECK( m_jetCleaningTool.setProperty("OutputLevel", this->msg().level()) );
600 
602  // Initialise jet pileup labeling tool (required for labels used by JvtEfficiencyTools)
603 
605  toolName = "PileupLabelingTool";
606  m_jetPileupLabelingTool.setTypeAndName("JetPileupLabelingTool/"+toolName);
609  #ifndef XAOD_STANDALONE
610  ATH_CHECK( m_jetPileupLabelingTool.setProperty("SuppressInputDependence", true) );
611  ATH_CHECK( m_jetPileupLabelingTool.setProperty("SuppressOutputDependence", true) );
612  #endif
613  ATH_CHECK( m_jetPileupLabelingTool.setProperty("OutputLevel", this->msg().level()) );
616 
618  // Initialise jet Jvt moment tool
619 
621  toolName = "JvtMomentTool";
622  m_jetJvtMomentTool.setTypeAndName("JetVertexTaggerTool/"+toolName);
624  #ifndef XAOD_STANDALONE
625  ATH_CHECK( m_jetJvtMomentTool.setProperty("SuppressInputDependence", true) );
626  ATH_CHECK( m_jetJvtMomentTool.setProperty("SuppressOutputDependence", true) );
627  #endif
628  ATH_CHECK( m_jetJvtMomentTool.setProperty("OutputLevel", this->msg().level()) );
631 
633  // Initialise jet NNJvt moment tool
634 
635  m_applyJVTCut = !m_JvtWP.empty();
637  toolName = "NNJvtMomentTool";
638  m_jetNNJvtMomentTool.setTypeAndName("JetPileupTag::JetVertexNNTagger/"+toolName);
640  #ifndef XAOD_STANDALONE
641  ATH_CHECK( m_jetNNJvtMomentTool.setProperty("SuppressInputDependence", true) );
642  ATH_CHECK( m_jetNNJvtMomentTool.setProperty("SuppressOutputDependence", true) );
643  #endif
644  ATH_CHECK( m_jetNNJvtMomentTool.setProperty("OutputLevel", this->msg().level()) );
647 
649  // Initialise jet NNJvt selection tool
650 
652  toolName = "NNJvtSelectionTool";
653  m_jetNNJvtSelectionTool.setTypeAndName("CP::NNJvtSelectionTool/"+toolName);
657  ATH_CHECK( m_jetNNJvtSelectionTool.setProperty("JvtMomentName", "NNJvt") );
658  ATH_CHECK( m_jetNNJvtSelectionTool.setProperty("OutputLevel", this->msg().level()) );
661 
663  // Initialise jet NNJvt efficiency tool (scale factors)
664 
666  toolName = "NNJvtEfficiencyTool";
667  m_jetNNJvtEfficiencyTool.setTypeAndName("CP::NNJvtEfficiencyTool/"+toolName);
672  ATH_CHECK( m_jetNNJvtEfficiencyTool.setProperty("OutputLevel", this->msg().level()) );
675 
677  // Initialise jet fJvt selection tool
678 
680  toolName = "fJvtSelectionTool";
681  m_jetfJvtSelectionTool.setTypeAndName("CP::FJvtSelectionTool/"+toolName);
685  ATH_CHECK( m_jetfJvtSelectionTool.setProperty("JvtMomentName", "DFCommonJets_fJvt") );
686  ATH_CHECK( m_jetfJvtSelectionTool.setProperty("OutputLevel", this->msg().level()) );
689 
691  // Initialise jet fJvt efficiency tool for scale factors (scale factors)
692 
694  toolName = "fJvtEfficiencyTool";
695  m_jetfJvtEfficiencyTool.setTypeAndName("CP::FJvtEfficiencyTool/"+toolName);
700  ATH_CHECK( m_jetfJvtEfficiencyTool.setProperty("OutputLevel", this->msg().level()) );
703  }
704 
705 
706  if (m_slices["mu"]) {
708  // Check muon baseline ID
709 
710  std::string muQualBaseline = "";
711  switch (m_muIdBaseline) {
712  case xAOD::Muon::VeryLoose: muQualBaseline = "VeryLoose";
713  ATH_MSG_WARNING("No muon scale factors are available for VeryLoose working point.");
714  break;
715  case xAOD::Muon::Loose: muQualBaseline = "Loose"; break;
716  case xAOD::Muon::Medium: muQualBaseline = "Medium"; break;
717  case xAOD::Muon::Tight: muQualBaseline = "Tight"; break;
718  case 4: muQualBaseline = "HighPt"; break;
719  case 5: muQualBaseline = "LowPt"; break;
720  case 6: muQualBaseline = "LowPtMVA"; break;
721  case 7: muQualBaseline = "HighPt3Layers"; break;
722  default:
723  ATH_MSG_ERROR("Invalid muon working point provided: " << m_muIdBaseline << ". Cannot initialise!");
724  return StatusCode::FAILURE;
725  break;
726  }
727 
729  // Initialise muon calibration tool
730  // https://twiki.cern.ch/twiki/bin/view/AtlasProtected/MuonMomentumCorrectionsSubgroup#CP_MuonCalibrationAndSmearingToo
731  // Please not that for AthAnalysis we need to configure the MuonCalibTool within METSignificance manually and just can't pass the handle
732  // Hence, any changes here should also be propagated to the METSignificance setup further below
733 
735  m_muonCalibTool.setTypeAndName("CP::MuonCalibTool/ST_MuonCalibrationTool");
736  if (m_isRun3) ATH_CHECK( m_muonCalibTool.setProperty("IsRun3Geo", true ));
738  ATH_CHECK( m_muonCalibTool.setProperty("OutputLevel", this->msg().level()) );
739  ATH_CHECK( m_muonCalibTool.setProperty("release", "Recs2025_03_26_Run2Run3" ));
740  int IdBaselineInt = m_muIdBaseline;
741  if (IdBaselineInt == 4) {
742  ATH_CHECK( m_muonCalibTool.setProperty("do2StationsHighPt", true) );
743  }
746  } else ATH_CHECK( m_muonCalibTool.retrieve() );
747 
749  // Initialise muon selection tool
750 
752  toolName = "MuonSelectionTool_Baseline_" + muQualBaseline;
753  m_muonSelectionToolBaseline.setTypeAndName("CP::MuonSelectionTool/"+toolName);
754  if (m_isRun3) ATH_CHECK( m_muonSelectionToolBaseline.setProperty("IsRun3Geo", true ));
755 
756  if (m_muBaselineEta<m_muEta){ // Test for inconsistent configuration
757  ATH_MSG_ERROR( "Requested a baseline eta cut for muons (" << m_muBaselineEta <<
758  ") that is tighter than the signal cut (" << m_muEta << "). Please check your config." );
759  return StatusCode::FAILURE;
760  }
761  int IdBaselineInt = m_muIdBaseline;
763  if (IdBaselineInt == 6){
765  ATH_CHECK( m_muonSelectionToolBaseline.setProperty( "UseMVALowPt", true));
766  } else if (IdBaselineInt == 7){
768  ATH_CHECK( m_muonSelectionToolBaseline.setProperty( "Use2stationMuonsHighPt", false));
770  ATH_CHECK( m_muonSelectionToolBaseline.setProperty("OutputLevel", this->msg().level()) );
773 
774 
775  std::string muQual = "";
776  switch (m_muId) {
777  case xAOD::Muon::VeryLoose: muQual = "VeryLoose";
778  ATH_MSG_WARNING("No muon scale factors are available for VeryLoose working point.");
779  break;
780  case xAOD::Muon::Loose: muQual = "Loose"; break;
781  case xAOD::Muon::Medium: muQual = "Medium"; break;
782  case xAOD::Muon::Tight: muQual = "Tight"; break;
783  case 4: muQual = "HighPt"; break;
784  case 5: muQual = "LowPt"; break;
785  case 6: muQual = "LowPtMVA"; break;
786  case 7: muQual = "HighPt3Layers"; break;
787  default:
788  ATH_MSG_ERROR("Invalid muon working point provided: " << m_muId << ". Cannot initialise!");
789  return StatusCode::FAILURE;
790  break;
791  }
792 
794  toolName = "MuonSelectionTool_" + muQual;
795  m_muonSelectionTool.setTypeAndName("CP::MuonSelectionTool/"+toolName);
796  if (m_isRun3) ATH_CHECK( m_muonSelectionTool.setProperty("IsRun3Geo", true ));
798  int IdInt = m_muId;
799  if (IdInt == 6){
800  ATH_CHECK( m_muonSelectionTool.setProperty( "MuQuality", 5 ) );
801  ATH_CHECK( m_muonSelectionTool.setProperty( "UseMVALowPt", true));
802  } else if (IdInt == 7){
803  ATH_CHECK( m_muonSelectionTool.setProperty( "MuQuality", 4 ) );
804  ATH_CHECK( m_muonSelectionTool.setProperty( "Use2stationMuonsHighPt", false));
805  } else ATH_CHECK(m_muonSelectionTool.setProperty( "MuQuality", m_muId ));
806  ATH_CHECK( m_muonSelectionTool.setProperty("OutputLevel", this->msg().level()) );
809 
810 
811  if (!m_muonSelectionHighPtTool.isUserConfigured()) { //Fixed to HighPt WP
812  toolName = "MuonSelectionHighPtTool_" + muQual;
813  m_muonSelectionHighPtTool.setTypeAndName("CP::MuonSelectionTool/"+toolName);
814  if (m_isRun3) ATH_CHECK( m_muonSelectionHighPtTool.setProperty("IsRun3Geo", true ));
816  ATH_CHECK( m_muonSelectionHighPtTool.setProperty( "MuQuality", 4 ) );
817  ATH_CHECK( m_muonSelectionHighPtTool.setProperty("OutputLevel", this->msg().level()) );
820 
821 
823  // Initialise prompt/LRT muon OR tool
825  toolName = "MuonLRTOverlapRemovalTool";
826  m_muonLRTORTool.setTypeAndName("CP::MuonLRTOverlapRemovalTool/"+toolName);
828  if (m_isRun3) ATH_CHECK( m_muonLRTORTool.setProperty("UseRun3WP", true ));
829  ATH_CHECK( m_muonLRTORTool.setProperty("OutputLevel", this->msg().level()) );
831  } else ATH_CHECK( m_muonLRTORTool.retrieve() );
832 
834  // Initialise muon efficiency tools
836  toolName = "MuonEfficiencyScaleFactors_" + muQual;
837  m_muonEfficiencySFTool.setTypeAndName("CP::MuonEfficiencyScaleFactors/"+toolName);
838  ATH_CHECK( m_muonEfficiencySFTool.setProperty("WorkingPoint", muQual) );
839  ATH_CHECK( m_muonEfficiencySFTool.setProperty("CalibrationRelease", m_isRun3? "250418_Preliminary_r24run3":"230213_Preliminary_r22run2") );
840  ATH_CHECK( m_muonEfficiencySFTool.setProperty("OutputLevel", this->msg().level()) );
843 
844 
846  toolName = "MuonEfficiencyScaleFactorsBMHighPt_" + muQual;
847  m_muonEfficiencyBMHighPtSFTool.setTypeAndName("CP::MuonEfficiencyScaleFactors/"+toolName);
848  ATH_CHECK( m_muonEfficiencyBMHighPtSFTool.setProperty("WorkingPoint", "BadMuonVeto_HighPt") );
849  ATH_CHECK( m_muonEfficiencyBMHighPtSFTool.setProperty("CalibrationRelease", m_isRun3? "220817_Preliminary_r22run3":"230213_Preliminary_r22run2") ); //BadMuonVeto_HighPt currently not available for 240711_Preliminary_r24run3
850  ATH_CHECK( m_muonEfficiencyBMHighPtSFTool.setProperty("OutputLevel", this->msg().level()) );
853 
854 
855  if (m_doTTVAsf && m_mud0sig<0 && m_muz0<0){
856  ATH_MSG_WARNING("Requested TTVA SFs without d0sig and z0 cuts. Disabling scale factors as they will not make sense.");
857  m_doTTVAsf=false;
858  }
859 
861  toolName = "MuonTTVAEfficiencyScaleFactors";
862  m_muonTTVAEfficiencySFTool.setTypeAndName("CP::MuonEfficiencyScaleFactors/"+toolName);
863  ATH_CHECK( m_muonTTVAEfficiencySFTool.setProperty("WorkingPoint", "TTVA") );
864  ATH_CHECK( m_muonTTVAEfficiencySFTool.setProperty("CalibrationRelease", m_isRun3? "250418_Preliminary_r24run3":"230213_Preliminary_r22run2") );
865  ATH_CHECK( m_muonTTVAEfficiencySFTool.setProperty("OutputLevel", this->msg().level()) );
868 
869 
870 
872  // Initialise muon isolation tool
873  if (!m_muonIsolationSFTool.isUserConfigured() && !m_muIso_WP.empty() && !isData()) {
874  toolName = "MuonIsolationScaleFactors_" + m_muIso_WP;
875 
876  std::string tmp_muIso_WP = m_muIso_WP;
877  if ( !check_isOption(m_muIso_WP, m_mu_iso_support) ) { //check if supported
878  ATH_MSG_WARNING("Your selected muon Iso WP ("
879  << m_muIso_WP
880  << ") does not have SFs defined. Will try to find an appropriate fall-back.");
881  if (m_mu_iso_fallback.count(m_muIso_WP) > 0){
882  tmp_muIso_WP = m_mu_iso_fallback[m_muIso_WP];
883  ATH_MSG_WARNING("Your selected muon Iso WP ("
884  << m_muIso_WP
885  << " is not supported, and does not have SFs available. Falling back to "
886  << tmp_muIso_WP
887  << " for SF determination.");
888  } else {
889  ATH_MSG_ERROR("*** The muon isolation WP you selected (" << m_muIso_WP << ") is not currentely supported, and no known fall-back option for SFs exists. Sorry! ***");
890  return StatusCode::FAILURE;
891  }
892  }
893 
894  m_muonIsolationSFTool.setTypeAndName("CP::MuonEfficiencyScaleFactors/"+toolName);
895  ATH_CHECK( m_muonIsolationSFTool.setProperty("WorkingPoint", tmp_muIso_WP + "Iso") );
896  ATH_CHECK( m_muonIsolationSFTool.setProperty("CalibrationRelease", m_isRun3? "250418_Preliminary_r24run3":"230213_Preliminary_r22run2") );
897  ATH_CHECK( m_muonIsolationSFTool.setProperty("OutputLevel", this->msg().level()) );
899 
901 
902 
904  toolName = "MuonHighPtIsolationScaleFactors_" + m_muIsoHighPt_WP;
905 
906  std::string tmp_muIsoHighPt_WP = m_muIsoHighPt_WP;
907  if ( !check_isOption(m_muIsoHighPt_WP, m_mu_iso_support) ) { //check if supported
908  ATH_MSG_WARNING("Your selected muon high-pt Iso WP ("
910  << ") does not have SFs defined. Will try to find an appropriate fall-back.");
911  if (m_mu_iso_fallback.count(m_muIsoHighPt_WP) > 0){
912  tmp_muIsoHighPt_WP = m_mu_iso_fallback[m_muIsoHighPt_WP];
913  ATH_MSG_WARNING("Your selected muon high-pt Iso WP ("
915  << " is not supported, and does not have SFs available. Falling back to "
916  << tmp_muIsoHighPt_WP
917  << " for SF determination.");
918  } else {
919  ATH_MSG_ERROR("*** The muon isolation WP you selected (" << m_muIsoHighPt_WP << ") is not currentely supported, and no known fall-back option for SFs exists. Sorry! ***");
920  return StatusCode::FAILURE;
921  }
922  }
923 
924  m_muonHighPtIsolationSFTool.setTypeAndName("CP::MuonEfficiencyScaleFactors/"+toolName);
925  // Use for the low-pt WP a dedicated set of isolation scale-factors having an extra uncertainty in place
926  ATH_CHECK( m_muonHighPtIsolationSFTool.setProperty("WorkingPoint", tmp_muIsoHighPt_WP + "Iso") );
927  ATH_CHECK( m_muonHighPtIsolationSFTool.setProperty("CalibrationRelease", m_isRun3? "250418_Preliminary_r24run3":"230213_Preliminary_r22run2") );
928  ATH_CHECK( m_muonHighPtIsolationSFTool.setProperty("OutputLevel", this->msg().level()) );
930 
932 
933 
935  // Initialise muon trigger scale factor tools
936 
938  toolName = "MuonTriggerScaleFactors_" + muQual;
939  m_muonTriggerSFTool.setTypeAndName("CP::MuonTriggerScaleFactors/"+toolName);
940  if ( muQual=="LowPt" ) {
941  ATH_MSG_WARNING("You're using the LowPt muon selection, which is not supported yet in terms of muon trigger scale facorts. TEMPORAIRLY configuring the muonTriggerSFTool for Medium muons. Beware!");
942  ATH_CHECK( m_muonTriggerSFTool.setProperty("MuonQuality", "Medium" ) );
943  }
944  else ATH_CHECK( m_muonTriggerSFTool.setProperty("MuonQuality", muQual) );
945  //ATH_CHECK( m_muonTriggerSFTool.setProperty("Isolation", m_muIso_WP)); This property has been depreacted long time ago
946  ATH_CHECK( m_muonTriggerSFTool.setProperty("AllowZeroSF", true) );
947  ATH_CHECK( m_muonTriggerSFTool.setProperty("OutputLevel", this->msg().level()) );
952  } else if (m_muonTriggerSFTool.isUserConfigured()) {
955  }
956  }
957 
958  if (m_slices["ele"]) {
959  // /////////////////////////////////////////////////////////////////////////////////////////
960  // Initialise electron selector tools
961 
962  // Signal Electrons
964  toolName = "EleSelLikelihood_" + m_eleId;
965 
966  if (m_eleId.find("DNN") != std::string::npos) {
967  m_elecSelLikelihood.setTypeAndName("AsgElectronSelectorTool/"+toolName);
968  }
969  else {
970  m_elecSelLikelihood.setTypeAndName("AsgElectronLikelihoodTool/"+toolName);
971  }
972 
973  if (! m_eleConfig.empty() ){
974  ATH_MSG_INFO("Overriding specified Ele.Id working point in favour of configuration file");
976  } else if ( !check_isOption(m_eleId, m_el_id_support) ) { //check if supported
977  ATH_MSG_ERROR("Invalid electron ID selected: " << m_eleId);
978  return StatusCode::FAILURE;
979  }
980  else if (m_eleId == "VeryLooseLLH" || m_eleId == "LooseLLH") {
981  ATH_MSG_WARNING(" ****************************************************************************");
982  ATH_MSG_WARNING(" CAUTION: Setting " << m_eleId << " as signal electron ID");
983  ATH_MSG_WARNING(" These may be used for loose electron CRs but no scale factors are provided.");
984  ATH_MSG_WARNING(" ****************************************************************************");
986  } else {
988  }
989 
990  ATH_CHECK( m_elecSelLikelihood.setProperty("OutputLevel", this->msg().level()) );
993 
994  // Baseline Electrons
996  toolName = "EleSelLikelihoodBaseline_" + m_eleIdBaseline;
997 
998  if (m_eleIdBaseline.find("DNN") != std::string::npos) {
999  m_elecSelLikelihoodBaseline.setTypeAndName("AsgElectronSelectorTool/"+toolName);
1000  }
1001  else {
1002  m_elecSelLikelihoodBaseline.setTypeAndName("AsgElectronLikelihoodTool/"+toolName);
1003  }
1004 
1005  if (! m_eleConfigBaseline.empty() ){
1006  ATH_MSG_INFO("Overriding specified EleBaseline.Id working point in favour of configuration file");
1008  } else if ( !check_isOption(m_eleIdBaseline, m_el_id_support) ) { //check if supported
1009  ATH_MSG_ERROR("Invalid electron ID selected: " << m_eleIdBaseline);
1010  return StatusCode::FAILURE;
1011  } else {
1013  }
1014 
1015  ATH_CHECK( m_elecSelLikelihoodBaseline.setProperty("OutputLevel", this->msg().level()) );
1018  }
1019 
1021  // Initialise prompt/LRT electron OR tool
1023  toolName = "ElectronLRTOverlapRemovalTool";
1024  m_elecLRTORTool.setTypeAndName("CP::ElectronLRTOverlapRemovalTool/"+toolName);
1025  ATH_MSG_DEBUG("Setting ElectronLRTOverlapRemovalTool strategy to "<<m_eleLRT_strat);
1026  ATH_CHECK( m_elecLRTORTool.setProperty("overlapStrategy", m_eleLRT_strat) );
1028  } else ATH_CHECK( m_elecLRTORTool.retrieve() );
1029 
1030  if (m_slices["pho"]) {
1031  // /////////////////////////////////////////////////////////////////////////////////////////
1032  // Initialise photon selector tools
1033 
1035  toolName = "PhotonSelIsEM_" + m_photonId;
1036  m_photonSelIsEM.setTypeAndName("AsgPhotonIsEMSelector/"+toolName);
1037 
1038  if (!check_isOption(m_photonId, m_ph_id_support)){ //check if supported
1039  ATH_MSG_ERROR("Invalid photon ID selected: " << m_photonId);
1040  return StatusCode::FAILURE;
1041  }
1042 
1043  ATH_CHECK( m_photonSelIsEM.setProperty("WorkingPoint", m_photonId+"Photon") );
1044  ATH_CHECK( m_photonSelIsEM.setProperty("OutputLevel", this->msg().level()) );
1046  } else ATH_CHECK( m_photonSelIsEM.retrieve() );
1047 
1049  toolName = "PhotonSelIsEMBaseline_" + m_photonIdBaseline;
1050  m_photonSelIsEMBaseline.setTypeAndName("AsgPhotonIsEMSelector/"+toolName);
1051 
1052  if(!check_isOption(m_photonIdBaseline, m_ph_id_support)){ //check if supported
1053  ATH_MSG_ERROR("Invalid photon ID selected: " << m_photonIdBaseline);
1054  return StatusCode::FAILURE;
1055  }
1056 
1057  ATH_CHECK( m_photonSelIsEMBaseline.setProperty("WorkingPoint", m_photonIdBaseline+"Photon") );
1058  ATH_CHECK( m_photonSelIsEMBaseline.setProperty("OutputLevel", this->msg().level()) );
1061  }
1062 
1063  if (m_slices["ele"]||m_slices["pho"]) {
1065  // Initialise DeadHVCellRemovalTool
1066  // https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/EGammaIdentificationRun2#Removal_of_Electron_Photon_clust
1067 
1068  ATH_MSG_DEBUG("Setup AsgDeadHVCellRemovalTool/deadHVTool");
1069  m_deadHVTool.setTypeAndName("AsgDeadHVCellRemovalTool/deadHVTool");
1071  }
1072 
1073  if (m_slices["ele"]) {
1075  // Initialise electron efficiency tool
1076 
1078  if (!isData()) {
1079  if (isAtlfast()) data_type = PATCore::ParticleDataType::Fast;
1080  else data_type = PATCore::ParticleDataType::Full;
1081  ATH_MSG_DEBUG( "Setting data type to " << data_type);
1082  }
1083 
1084  m_eleEffMapFilePathRun2 = "ElectronEfficiencyCorrection/2015_2018/rel21.2/Precision_Summer2020_v1/map4.txt";
1085 
1086  if(!m_isRun3) {
1087  ATH_MSG_INFO( "Running on Run2 samples; Using egamma SF tools from R21 map ");
1089  }
1090 
1091  toolName = "AsgElectronEfficiencyCorrectionTool_reco";
1093 
1094  //-- get KEYS supported by egamma SF tools
1095  std::vector<std::string> eSF_keys = getElSFkeys( m_isRun3? m_eleEffMapFilePath : m_eleEffMapFilePathRun2);
1096 
1097  if (m_eleId.find("NoPix") != std::string::npos || m_eleId == "VeryLooseLLH" || m_eleId == "LooseLLH" || m_eleId == "Medium") {
1098  ATH_MSG_WARNING("Not configuring electron ID and trigger scale factors for " << m_eleId);
1099  }
1100  else {
1101  // This needs to be formatted for the scale factors: no _Rel20, no LH label, etc.
1102  std::string eleId = TString(m_eleId).ReplaceAll("AndBLayer", "BLayer").ReplaceAll("LLH", "").Data();
1103 
1104  if (m_eleId.find("DNN") != std::string::npos) {
1105  eleId = TString(eleId).ReplaceAll("DNNnoCF", "").ReplaceAll("DNN", "").ReplaceAll("Loose", "LooseBLayer").Data();
1106  ATH_MSG_WARNING("Electron DNN ID working point " << m_eleId << " doesn't have SFs yet, fall back to " << eleId);
1107  }
1108 
1109  // electron id
1110  toolName = "AsgElectronEfficiencyCorrectionTool_id_" + m_eleId;
1112 
1113  // override map file use if correction file list is set for WP
1114  std::map<std::string,std::string> corrFNList;
1115  if ( !m_EG_corrFNList.empty() ) {
1116  for ( const auto& WP_fname : split( m_EG_corrFNList, "," ) ) {
1117  std::string WP = WP_fname.substr(0,WP_fname.find(":"));
1118  std::string fname = WP_fname.substr(WP_fname.find(":")+1);
1119  corrFNList[WP] = fname;
1120  ATH_MSG_WARNING( "Correction file list defined for WP " << WP << ": " << fname << "." );
1121  ATH_MSG_WARNING( "Will use correction file rather than central map file." );
1122  }
1123  }
1124 
1125  // electron iso
1126  std::string EleIso("");
1127  if (std::find(eSF_keys.begin(), eSF_keys.end(), eleId+"_"+m_eleIso_WP) != eSF_keys.end()){
1128  EleIso = m_eleIso_WP;
1129  } else if (std::find(eSF_keys.begin(), eSF_keys.end(), eleId+"_"+m_el_iso_fallback[m_eleIso_WP]) != eSF_keys.end()){
1130  //--- Check to see if the only issue is an unknown isolation working point
1131  EleIso = m_el_iso_fallback[m_eleIso_WP];
1132  ATH_MSG_WARNING("(AsgElectronEfficiencyCorrectionTool_iso_*) Your selected electron Iso WP ("
1133  << m_eleIso_WP
1134  << ") does not have iso SFs defined. Falling back to "
1136  << " for SF calculations");
1137  }
1138  else{
1139  ATH_MSG_ERROR("*** THE ELECTRON ISOLATION SF YOU SELECTED (" << m_eleIso_WP << ") GOT NO SUPPORT ***");
1140  return StatusCode::FAILURE;
1141  }
1142 
1143  toolName = "AsgElectronEfficiencyCorrectionTool_iso_" + m_eleId + EleIso;
1144 
1145  // if running with correction file list
1146  if ( (!m_EG_corrFNList.empty()) && corrFNList.find(EleIso)!=corrFNList.end() ) { // overriding central map file
1147  CONFIG_EG_EFF_TOOL( m_elecEfficiencySFTool_iso, toolName, corrFNList[EleIso] );
1148  }
1149  // can't do the iso tool via the macro, it needs two properties set
1150  else { // default: use map file
1152  if ( !check_isOption(EleIso, m_el_iso_support) ) { //check if supported
1153  ATH_MSG_WARNING( "(" << toolName << ") Your electron Iso WP: " << EleIso<< " is no longer supported. This will almost certainly cause a crash now.");
1154  }
1155 
1156  m_elecEfficiencySFTool_iso.setTypeAndName("AsgElectronEfficiencyCorrectionTool/"+toolName);
1157 
1158  if ( m_EG_corrFNList.empty() ) {
1160  } else {
1161  ATH_CHECK( m_elecEfficiencySFTool_iso.setProperty("CorrectionFileNameList", corrFNList) );
1162  }
1164  ATH_CHECK( m_elecEfficiencySFTool_iso.setProperty("IsoKey", EleIso) );
1165  if (!isData() && ((EleIso.find("TightTrackOnly_VarRad")!=std::string::npos)||
1166  (EleIso.find("TightTrackOnly_FixedRad")!=std::string::npos)||
1167  (EleIso.find("Tight_VarRad")!=std::string::npos)||
1168  (EleIso.find("Loose_VarRad")!=std::string::npos))) {
1169  if (isAtlfast()) ATH_MSG_WARNING("(AsgElectronEfficiencyCorrectionTool/"+toolName+"). Your selected electron Iso WP (" + EleIso + ") don't have AFII SF. Falling back to FullSim");
1171  }
1172  else if (!isData()){
1173  ATH_CHECK( m_elecEfficiencySFTool_iso.setProperty("ForceDataType", static_cast<int>(data_type)));
1174  }
1176  ATH_CHECK( m_elecEfficiencySFTool_iso.setProperty("OutputLevel", this->msg().level()) );
1179  }
1180 
1181  // electron iso high-pt
1182  std::string EleIsohighPt("");
1183  if (std::find(eSF_keys.begin(), eSF_keys.end(), eleId+"_"+m_eleIsoHighPt_WP) != eSF_keys.end()){
1184  EleIsohighPt = m_eleIsoHighPt_WP;
1185  } else if (std::find(eSF_keys.begin(), eSF_keys.end(), eleId+"_"+m_el_iso_fallback[m_eleIsoHighPt_WP]) != eSF_keys.end()){
1186  //--- Check to see if the only issue is an unknown isolation working point
1187  EleIsohighPt = m_el_iso_fallback[m_eleIsoHighPt_WP];
1188  ATH_MSG_WARNING("(AsgElectronEfficiencyCorrectionTool_iso_*) Your selected high-pT electron Iso WP ("
1190  << ") does not have iso SFs defined. Falling back to "
1192  << " for SF calculations");
1193  }
1194  else{
1195  ATH_MSG_ERROR("*** THE HIGH PT ELECTRON ISOLATION SF YOU SELECTED (" << m_eleIsoHighPt_WP << ") GOT NO SUPPORT");
1196  return StatusCode::FAILURE;
1197  }
1198 
1199  toolName = "AsgElectronEfficiencyCorrectionTool_isoHigPt_" + m_eleId + EleIsohighPt;
1200 
1201  // if running with correction file list
1202  if ( (!m_EG_corrFNList.empty()) && corrFNList.find(EleIsohighPt)!=corrFNList.end() ) { // overriding central map file
1203  CONFIG_EG_EFF_TOOL( m_elecEfficiencySFTool_isoHighPt, toolName, corrFNList[EleIsohighPt] );
1204  }
1205  // can't do the iso tool via the macro, it needs two properties set
1206  else { // default: use map file
1208 
1209  if ( !check_isOption(EleIsohighPt, m_el_iso_support) ) { //check if supported
1210  ATH_MSG_WARNING( "(" << toolName << ") Your electron high-pt Iso WP: " << EleIsohighPt << " is no longer supported. This will almost certainly cause a crash now.");
1211  }
1212 
1213  m_elecEfficiencySFTool_isoHighPt.setTypeAndName("AsgElectronEfficiencyCorrectionTool/"+toolName);
1214 
1217  ATH_CHECK( m_elecEfficiencySFTool_isoHighPt.setProperty("IsoKey", EleIsohighPt) );
1218  if (!isData()) {
1219  ATH_CHECK (m_elecEfficiencySFTool_isoHighPt.setProperty("ForceDataType", (int) data_type) );
1220  }
1222  ATH_CHECK( m_elecEfficiencySFTool_isoHighPt.setProperty("OutputLevel", this->msg().level()) );
1225  }
1226 
1227  // electron triggers - first SFs (but we need to massage the id string since all combinations are not supported)
1228 
1229  //single lepton
1230 
1231  if(m_isRun3 && eleId.find("LooseBLayer") != std::string::npos) ATH_MSG_WARNING("Replacing 'LooseBLayer' with 'Loose' for Electron ID while configuring single-ele trigger SF using: " << m_eleEffMapFilePath);
1232  std::string triggerEleID = m_isRun3? TString(eleId).ReplaceAll("LooseBLayer", "Loose").Data() : eleId;
1233  std::string triggerEleIso= m_eleIso_WP;
1234 
1235  // This is an hack to work with ElectronEfficiencyCorrection/2015_2025/rel22.2/2022_Summer_Prerecom_v1/map4.txt to allow
1236 
1238  bool pass_isRun3TrigSFFallback = true;
1239  if (triggerEleID.find("Medium") != std::string::npos && triggerEleIso.find("Loose") != std::string::npos) {triggerEleID = "Loose";}
1240  else if (triggerEleID.find("Medium") != std::string::npos && triggerEleIso.find("Tight") != std::string::npos) {triggerEleID = "Tight"; triggerEleIso = "Tight_VarRad";}
1241  else if (triggerEleID.find("Medium") != std::string::npos && triggerEleIso.find("HighPtCaloOnly") != std::string::npos) {triggerEleID = "Tight"; triggerEleIso = "Tight_VarRad";}
1242  else if (triggerEleID.find("Tight") != std::string::npos && triggerEleIso.find("Loose") != std::string::npos) {triggerEleID = "Loose";}
1243  else if (triggerEleID.find("Tight") != std::string::npos && triggerEleIso.find("Tight") != std::string::npos) {triggerEleIso= "Tight_VarRad";}
1244  else if (triggerEleID.find("Tight") != std::string::npos && triggerEleIso.find("HighPtCaloOnly") != std::string::npos) {triggerEleID = "Tight"; triggerEleIso = "Tight_VarRad";}
1245  else if (triggerEleID.find("Loose") != std::string::npos && triggerEleIso.find("Tight") != std::string::npos) {triggerEleID = "Loose"; triggerEleIso = "Loose_VarRad";}
1246  else if (triggerEleID.find("Loose") != std::string::npos && triggerEleIso.find("HighPtCaloOnly") != std::string::npos) {triggerEleID = "Loose"; triggerEleIso = "Loose_VarRad";}
1247  else {pass_isRun3TrigSFFallback=false;}
1248  if(pass_isRun3TrigSFFallback){
1249  ATH_MSG_INFO(" ************** This is only for testing/studying purpose! ************** ");
1250  ATH_MSG_INFO(" ************** For official recommendation, please get in contact with the SUSY Bkg Forum ************** ");
1251  ATH_MSG_INFO("In the current map ("<<m_eleEffMapFilePath<<"), the only supported Electron ID working-points supported for Electron Trigger Scale Factor are 'Loose_Loose_VarRad' and 'Tight_Tight_VarRad' ");
1252  ATH_MSG_INFO("Only for single-lepton trigger scale factor, fall back to Electron ID: -> "<< triggerEleID << " with Isolation: " << triggerEleIso);
1253  }
1254  }
1255 
1256  // The L1 seed changed from 2023 and beyond, so we need to adjust the trigger key accordingly, the SF are now derived by year so we need to change the year in the key as well.
1257 
1258  if(m_isRun3){
1259  // Find year positions (or npos if not present)
1260  size_t p22 = m_electronTriggerSFStringSingle.find("2022");
1261  size_t p23 = m_electronTriggerSFStringSingle.find("2023");
1262  size_t p24 = m_electronTriggerSFStringSingle.find("2024");
1263 
1264  auto next_pos = [&](size_t self) {
1265  size_t next = std::string::npos;
1266 
1267  if (self == p22) {
1268  if (p23 > self && p23 < next) next = p23;
1269  if (p24 > self && p24 < next) next = p24;
1270  }
1271  else if (self == p23) {
1272  if (p22 > self && p22 < next) next = p22;
1273  if (p24 > self && p24 < next) next = p24;
1274  }
1275  else if (self == p24) {
1276  if (p22 > self && p22 < next) next = p22;
1277  if (p23 > self && p23 < next) next = p23;
1278  }
1279 
1280  return next;
1281  };
1282  std::string SFStringSingle22="";
1283  std::string SFStringSingle23="";
1284  std::string SFStringSingle24="";
1285 
1286  // Extract 2022,2023,2025 block
1287  if (p22 != std::string::npos) {size_t end = next_pos(p22); SFStringSingle22 = m_electronTriggerSFStringSingle.substr(p22, end - p22);}
1288  if (p23 != std::string::npos) {size_t end = next_pos(p23); SFStringSingle23 = m_electronTriggerSFStringSingle.substr(p23, end - p23);}
1289  if (p24 != std::string::npos) {size_t end = next_pos(p24); SFStringSingle24 = m_electronTriggerSFStringSingle.substr(p24, end - p24);}
1290 
1291  // Remove trailing underscores from tokens if present
1292  std::string* toks[] = { &SFStringSingle22, &SFStringSingle23, &SFStringSingle24 };
1293  for (auto t : toks) {
1294  while (!t->empty() && t->back() == '_') t->pop_back();
1295  }
1296 
1297  if(m_mcCampaign == "mc23a") m_electronTriggerSFStringSingle = SFStringSingle22;
1298  else if(m_mcCampaign == "mc23d") m_electronTriggerSFStringSingle = SFStringSingle23;
1299  else if(m_mcCampaign == "mc23e") m_electronTriggerSFStringSingle = SFStringSingle24;
1300  else {
1301  ATH_MSG_WARNING("Unknown or unsupported mcCampaign for Run 3: " << m_mcCampaign << ". Please contact the SUSY Bkg Forum for assistance.");
1302  ATH_MSG_WARNING("Falling back to 2024 trigger SFs for single-electron triggers.");
1303  m_electronTriggerSFStringSingle = SFStringSingle24;
1304  }
1305  }
1306 
1307 
1308  ATH_MSG_INFO("eSF_keys: " << m_electronTriggerSFStringSingle<< "_"<<triggerEleID<<"_"<<triggerEleIso);
1309 
1310  if (std::find(eSF_keys.begin(), eSF_keys.end(), m_electronTriggerSFStringSingle+"_"+triggerEleID+"_"+triggerEleIso) != eSF_keys.end()){
1311  triggerEleIso = m_eleIso_WP;
1312  } else if (std::find(eSF_keys.begin(), eSF_keys.end(), m_electronTriggerSFStringSingle+"_"+triggerEleID+"_"+m_el_iso_fallback[triggerEleIso]) != eSF_keys.end()){
1313  //--- Check to see if the only issue is an unknown isolation working point
1314  triggerEleIso = m_el_iso_fallback[triggerEleIso];
1315  ATH_MSG_WARNING("(AsgElectronEfficiencyCorrectionTool_trig_singleLep_*) Your selected electron Iso WP ("
1316  << m_eleIso_WP
1317  << ") does not have trigger SFs defined. Falling back to "
1318  << triggerEleIso
1319  << " for SF calculations");
1320  }
1321  else{
1322  ATH_MSG_ERROR("*** THE SINGLE ELECTRON TRIGGER SF YOU SELECTED (" << m_electronTriggerSFStringSingle << ") GOT NO SUPPORT FOR YOUR ID+ISO WPs (" << m_eleId << "+" << m_eleIso_WP << ") ***");
1323  return StatusCode::FAILURE;
1324  }
1325 
1326  toolName = "AsgElectronEfficiencyCorrectionTool_trig_singleLep_" + triggerEleID;
1328  m_elecEfficiencySFTool_trig_singleLep.setTypeAndName("AsgElectronEfficiencyCorrectionTool/"+toolName);
1332  ATH_CHECK( m_elecEfficiencySFTool_trig_singleLep.setProperty("IsoKey", triggerEleIso) );
1334  if (!isData()) {
1336  }
1337  ATH_CHECK( m_elecEfficiencySFTool_trig_singleLep.setProperty("OutputLevel", this->msg().level()) );
1340 
1341 
1342  toolName = "AsgElectronEfficiencyCorrectionTool_trigEff_singleLep_" + triggerEleID;
1344  m_elecEfficiencySFTool_trigEff_singleLep.setTypeAndName("AsgElectronEfficiencyCorrectionTool/"+toolName);
1350  if (!isData()) {
1352  }
1353  ATH_CHECK( m_elecEfficiencySFTool_trigEff_singleLep.setProperty("OutputLevel", this->msg().level()) );
1356 
1357  if (!m_isRun3){
1358  //mixed-leptons
1359  std::map<std::string,std::string> electronTriggerSFMapMixedLepton {
1360  // legs, Trigger keys,
1361  {"e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose,e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0", m_electronTriggerSFStringSingle},
1362  {"e24_lhvloose_nod0_L1EM20VH,e17_lhvloose_nod0,e12_lhloose_L1EM10VH","DI_E_2015_e12_lhloose_L1EM10VH_2016_e17_lhvloose_nod0_2017_2018_e24_lhvloose_nod0_L1EM20VH"},
1363  {"e26_lhmedium_nod0_L1EM22VHI,e26_lhmedium_nod0","MULTI_L_2015_e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose_2016_e26_lhmedium_nod0_L1EM22VHI_2017_2018_e26_lhmedium_nod0"},
1364  {"e17_lhloose,e17_lhloose_nod0","MULTI_L_2015_e17_lhloose_2016_2018_e17_lhloose_nod0"},
1365  {"e12_lhloose,e12_lhloose_nod0","MULTI_L_2015_e12_lhloose_2016_2018_e12_lhloose_nod0"},
1366  {"e7_lhmedium,e7_lhmedium_nod0","MULTI_L_2015_e7_lhmedium_2016_2018_e7_lhmedium_nod0"},
1367  {"e9_lhloose,e9_lhloose_nod0,e12_lhvloose_nod0_L1EM10VH","TRI_E_2015_e9_lhloose_2016_e9_lhloose_nod0_2017_2018_e12_lhvloose_nod0_L1EM10VH"}
1368 
1369  };
1370 
1371  // 2e17 trigger is used in 2017 or 2018?
1373  if (triglist_2017to2018.find("2e17_lhvloose_nod0_L12EM15VHI") != std::string::npos) {
1374  electronTriggerSFMapMixedLepton["e17_lhvloose_nod0_L1EM15VHI"] = "DI_E_2015_e12_lhloose_L1EM10VH_2016_e17_lhvloose_nod0_2017_2018_e17_lhvloose_nod0_L1EM15VHI";
1375  }
1376 
1377  std::string triggerMixedEleIso("");
1378 
1379  for(auto const& item : electronTriggerSFMapMixedLepton){
1380 
1381  if (std::find(eSF_keys.begin(), eSF_keys.end(), item.second+"_"+eleId+"_"+m_eleIso_WP) != eSF_keys.end()){
1382  triggerMixedEleIso = m_eleIso_WP;
1383  } else if (std::find(eSF_keys.begin(), eSF_keys.end(), item.second+"_"+eleId+"_"+m_el_iso_fallback[m_eleIso_WP]) != eSF_keys.end()){
1384  //--- Check to see if the only issue is an unknown isolation working point
1385  triggerMixedEleIso = m_el_iso_fallback[m_eleIso_WP];
1386  ATH_MSG_WARNING("(AsgElectronEfficiencyCorrectionTool_trig_mixLep_*) Your selected electron Iso WP ("
1387  << m_eleIso_WP
1388  << ") does not have trigger SFs defined. Falling back to "
1389  << triggerMixedEleIso
1390  << " for SF calculations");
1391  } else {
1392  ATH_MSG_ERROR("*** THE MIXED ELECTRON TRIGGER SF YOU SELECTED (" << item.second << ") GOT NO SUPPORT FOR YOUR ID+ISO WPs (" << m_eleId << "+" << m_eleIso_WP << "). The fallback options failed as well sorry! ***");
1393  return StatusCode::FAILURE;
1394  }
1395 
1396  ATH_MSG_VERBOSE ("Selected WP: " << item.second << "_" << eleId << "_" << triggerMixedEleIso);
1397 
1398  toolName = "AsgElectronEfficiencyCorrectionTool_trig_mixLep_" + (item.first).substr(0,8) + m_eleId;
1399  auto t_sf = m_elecEfficiencySFTool_trig_mixLep.emplace(m_elecEfficiencySFTool_trig_mixLep.end(), "AsgElectronEfficiencyCorrectionTool/"+toolName);
1400  ATH_CHECK( t_sf->setProperty("MapFilePath", m_isRun3? m_eleEffMapFilePath : m_eleEffMapFilePathRun2) );
1401  ATH_CHECK( t_sf->setProperty("TriggerKey", item.second) );
1402  ATH_CHECK( t_sf->setProperty("IdKey", eleId) );
1403  ATH_CHECK( t_sf->setProperty("IsoKey", triggerMixedEleIso) );
1404  ATH_CHECK( t_sf->setProperty("CorrelationModel", m_EG_corrModel) );
1405  if (!isData()) {
1406  ATH_CHECK( t_sf->setProperty("ForceDataType", (int) (data_type==PATCore::ParticleDataType::Fast)? PATCore::ParticleDataType::Full : data_type) );
1407  }
1408  ATH_CHECK( t_sf->setProperty("OutputLevel", this->msg().level()) );
1409  ATH_CHECK( t_sf->initialize() );
1410  m_elecTrigSFTools.push_back(t_sf->getHandle());
1411  #ifndef XAOD_STANDALONE
1412  m_legsPerTool[toolName] = item.first;
1413  #else
1414  m_legsPerTool["ToolSvc."+toolName] = item.first;
1415  #endif
1416 
1417  toolName = "AsgElectronEfficiencyCorrectionTool_trigEff_mixLep_" + (item.first).substr(0,8) + m_eleId;
1418  auto t_eff = m_elecEfficiencySFTool_trigEff_mixLep.emplace(m_elecEfficiencySFTool_trigEff_mixLep.end(), "AsgElectronEfficiencyCorrectionTool/"+toolName);
1419  ATH_CHECK( t_eff->setProperty("MapFilePath", m_isRun3? m_eleEffMapFilePath : m_eleEffMapFilePathRun2) );
1420  ATH_CHECK( t_eff->setProperty("TriggerKey", "Eff_"+item.second) );
1421  ATH_CHECK( t_eff->setProperty("IdKey", eleId) );
1422  ATH_CHECK( t_eff->setProperty("IsoKey", triggerMixedEleIso) );
1423  ATH_CHECK( t_eff->setProperty("CorrelationModel", m_EG_corrModel) );
1424  if (!isData()) {
1425  ATH_CHECK( t_eff->setProperty("ForceDataType", (int) (data_type==PATCore::ParticleDataType::Fast)? PATCore::ParticleDataType::Full : data_type) );
1426  }
1427  ATH_CHECK( t_eff->setProperty("OutputLevel", this->msg().level()) );
1428  ATH_CHECK( t_eff->initialize() );
1429  m_elecTrigEffTools.push_back(t_eff->getHandle());
1430  #ifndef XAOD_STANDALONE
1431  m_legsPerTool[toolName] = item.first;
1432  #else
1433  m_legsPerTool["ToolSvc."+toolName] = item.first;
1434  #endif
1435 
1436  }
1437  }
1438  else ATH_MSG_WARNING("*** THE ELECTRON TRIGGER SF MIXED AND SF DILEP ARE CURRENTY NOT SUPPORTED IN RUN3 ***");
1439 
1440  ATH_MSG_WARNING("*** THE ELECTRON CHARGE FLIP SF ARE CURRENTY NOT SUPPORTED ***");
1441  // all the iinitialisation of the related tools have been cleaned up
1442 
1443  }
1444 
1445  if (m_slices["pho"]) {
1446  // /////////////////////////////////////////////////////////////////////////////////////////
1447  // Initialise photon efficiency tool
1448 
1450  m_photonEfficiencySFTool.setTypeAndName("AsgPhotonEfficiencyCorrectionTool/AsgPhotonEfficiencyCorrectionTool_" + m_photonId);
1451 
1452  if (m_photonId != "Tight" ) {
1453  ATH_MSG_WARNING( "No Photon efficiency available for " << m_photonId << ", using Tight instead..." );
1454  }
1455 
1456  ATH_CHECK( m_photonEfficiencySFTool.setProperty("MapFilePath", "PhotonEfficiencyCorrection/2015_2025/rel22.2/2024_FinalRun2_Recommendation_v1/map1.txt") );
1457  ATH_CHECK( m_photonEfficiencySFTool.setProperty("ForceDataType", isAtlfast()? (m_isRun3? 1: 3) : 1) ); // Set data type: 1 for FULLSIM, 3 for AtlFast. For Run3 pre-rec only FullSim SFs are available
1458  ATH_CHECK( m_photonEfficiencySFTool.setProperty("OutputLevel", this->msg().level()) );
1461 
1463  m_photonIsolationSFTool.setTypeAndName("AsgPhotonEfficiencyCorrectionTool/AsgPhotonEfficiencyCorrectionTool_isol" + m_photonIso_WP);
1464 
1465  if (m_photonIso_WP != "FixedCutTight" && m_photonIso_WP != "FixedCutLoose" && m_photonIso_WP != "TightCaloOnly") {
1466  ATH_MSG_WARNING( "No Photon efficiency available for " << m_photonIso_WP);
1467  }
1468 
1469  ATH_CHECK( m_photonIsolationSFTool.setProperty("MapFilePath", "PhotonEfficiencyCorrection/2015_2025/rel22.2/2022_Summer_Prerecom_v1/map1.txt") );
1470  ATH_CHECK( m_photonIsolationSFTool.setProperty("IsoKey", m_photonIso_WP != "TightCaloOnly" ? m_photonIso_WP.substr(8) : m_photonIso_WP )); // Set isolation WP: Loose,Tight,TightCaloOnly
1471  ATH_CHECK( m_photonIsolationSFTool.setProperty("ForceDataType", 1) ); // Set data type: 1 for FULLSIM, 3 for AF2
1472  ATH_CHECK( m_photonIsolationSFTool.setProperty("OutputLevel", this->msg().level()) );
1475 
1476  // trigger scale factors
1478  m_photonTriggerSFTool.setTypeAndName("AsgPhotonEfficiencyCorrectionTool/AsgPhotonEfficiencyCorrectionTool_trig" + m_photonTriggerName);
1479 
1480  // Fallback to TightCaloOnly if Tight is selected
1481  std::string photonIso_forTrigSF = m_photonIso_WP;
1482  if (m_photonIso_WP == "FixedCutTight") {
1483  ATH_MSG_WARNING( "No Photon trigger SF available for " << m_photonIso_WP << ", using TightCaloOnly instead... Use at your own risk" );
1484  photonIso_forTrigSF = "TightCaloOnly";
1485  } else { // isolation WP supported: Loose or TightCaloOnly, removing "FixedCut" suffix..
1486  photonIso_forTrigSF = TString(m_photonIso_WP).ReplaceAll("FixedCut","").Data();
1487  }
1488 
1489  // "symmetric" diphoton triggers (year dependent)
1490  ATH_CHECK( m_photonTriggerSFTool.setProperty("MapFilePath", "PhotonEfficiencyCorrection/2015_2018/rel21.2/Summer2020_Rec_v1/map3.txt") );
1491  ATH_CHECK( m_photonTriggerSFTool.setProperty("IsoKey", photonIso_forTrigSF )); // Set isolation WP: Loose,TightCaloOnly
1493  ATH_CHECK( m_photonTriggerSFTool.setProperty("ForceDataType", 1) ); // Set data type: 1 for FULLSIM, 3 for AF2
1494  ATH_CHECK( m_photonTriggerSFTool.setProperty("OutputLevel", this->msg().level()) );
1496 
1497  // "asymmetric" diphoton triggers
1498  std::map<std::string,std::string> diphotonTriggerSFMapAsymmetric {
1499  // legs, Trigger keys,
1500  {"g25_loose,g25_medium_L1EM20VH", "DI_PH_2015_g25_loose_2016_g25_loose_2017_g25_medium_L1EM20VH_2018_g25_medium_L1EM20VH"},
1501  {"g35_loose,g35_medium_L1EM20VH", "DI_PH_2015_g35_loose_2016_g35_loose_2017_g35_medium_L1EM20VH_2018_g35_medium_L1EM20VH"},
1502  };
1503 
1504  for(auto const& item : diphotonTriggerSFMapAsymmetric){
1505 
1506  toolName = "AsgPhotonEfficiencyCorrectionTool_trigSF_asymm_diphoton_" + (item.first).substr(0,9) + photonIso_forTrigSF;
1507  auto ph_trigSF = m_photonEfficiencySFTool_trigSF_AsymDiphoton.emplace(m_photonEfficiencySFTool_trigSF_AsymDiphoton.end(), "AsgPhotonEfficiencyCorrectionTool/"+toolName);
1508  ATH_CHECK( ph_trigSF->setProperty("MapFilePath", "PhotonEfficiencyCorrection/2015_2018/rel21.2/Summer2020_Rec_v1/map3.txt") );
1509  ATH_CHECK( ph_trigSF->setProperty("IsoKey", photonIso_forTrigSF) );
1510  ATH_CHECK( ph_trigSF->setProperty("TriggerKey", item.second) );
1511  ATH_CHECK( ph_trigSF->setProperty("ForceDataType", 1) ); // Set DataType: 1 for FullSim and 3 for AFII
1512  ATH_CHECK( ph_trigSF->setProperty("OutputLevel", this->msg().level()) );
1513  ATH_CHECK( ph_trigSF->initialize() );
1514  m_photonTrigSFTools.push_back(ph_trigSF->getHandle());
1515  #ifndef XAOD_STANDALONE
1516  m_legsPerTool_ph[toolName] = item.first;
1517  #else
1518  m_legsPerTool_ph["ToolSvc."+toolName] = item.first;
1519  #endif
1520 
1521  toolName = "AsgPhotonEfficiencyCorrectionTool_trigEff_asymm_diphoton_" + (item.first).substr(0,9) + photonIso_forTrigSF;
1522  auto ph_trigEff = m_photonEfficiencySFTool_trigEff_AsymDiphoton.emplace(m_photonEfficiencySFTool_trigEff_AsymDiphoton.end(), "AsgPhotonEfficiencyCorrectionTool/"+toolName);
1523  ATH_CHECK( ph_trigEff->setProperty("MapFilePath", "PhotonEfficiencyCorrection/2015_2018/rel21.2/Summer2020_Rec_v1/map3.txt") );
1524  ATH_CHECK( ph_trigEff->setProperty("IsoKey", photonIso_forTrigSF) );
1525  ATH_CHECK( ph_trigEff->setProperty("TriggerKey", "Eff_"+item.second) );
1526  ATH_CHECK( ph_trigEff->setProperty("ForceDataType", 1) ); // Set DataType: 1 for FullSim and 3 for AFII
1527  ATH_CHECK( ph_trigEff->setProperty("OutputLevel", this->msg().level()) );
1528  ATH_CHECK( ph_trigEff->initialize() );
1529  m_photonTrigEffTools.push_back(ph_trigEff->getHandle());
1530  #ifndef XAOD_STANDALONE
1531  m_legsPerTool_ph[toolName] = item.first;
1532  #else
1533  m_legsPerTool_ph["ToolSvc."+toolName] = item.first;
1534  #endif
1535 
1536  }
1537  }
1538  }
1539 
1540  }
1541  if (m_slices["ele"] || m_slices["pho"]) {
1543  // Initialize the EgammaAmbiguityTool
1544 
1546  m_egammaAmbiguityTool.setTypeAndName("EGammaAmbiguityTool/EGammaAmbiguityTool");
1547  ATH_CHECK( m_egammaAmbiguityTool.setProperty("OutputLevel", this->msg().level()) );
1550  }
1551 
1552 
1553  if (m_slices["ele"]) {
1554  //disable ///////////////////////////////////////////////////////////////////////////////////////////
1555  //disable // Initialize the AsgElectronChargeIDSelector
1556 
1557  //disable if (!m_elecChargeIDSelectorTool.isUserConfigured()) {
1558 
1559  //disable // For the selector, can use the nice function
1560  //disable std::string eleId = EG_WP(m_eleId);
1561  //disable m_elecChargeIDSelectorTool.setTypeAndName("AsgElectronChargeIDSelectorTool/ElectronChargeIDSelectorTool_"+eleId);
1562  //disable //default cut value for https://twiki.cern.ch/twiki/bin/view/AtlasProtected/ElectronChargeFlipTaggerTool
1563  //disable float BDTcut = -0.337671; // Loose 97%
1564  //disable if (m_eleChID_WP != "Loose" && !m_eleChID_WP.empty()) {
1565  //disable ATH_MSG_ERROR("Only Loose WP is supported in R21. Invalid ChargeIDSelector WP selected : " << m_eleChID_WP);
1566  //disable return StatusCode::FAILURE;
1567  //disable }
1568 
1569  //disable ATH_CHECK( m_elecChargeIDSelectorTool.setProperty("TrainingFile", "ElectronPhotonSelectorTools/ChargeID/ECIDS_20180731rel21Summer2018.root"));
1570  //disable ATH_CHECK( m_elecChargeIDSelectorTool.setProperty("CutOnBDT", BDTcut));
1571  //disable ATH_CHECK( m_elecChargeIDSelectorTool.setProperty("OutputLevel", this->msg().level()) );
1572  //disable ATH_CHECK( m_elecChargeIDSelectorTool.retrieve() );
1573  //disable } else ATH_CHECK( m_elecChargeIDSelectorTool.retrieve() );
1574 
1575 
1577  // Initialise egamma calibration tool
1578 
1580  m_egammaCalibTool.setTypeAndName("CP::EgammaCalibrationAndSmearingTool/EgammaCalibrationAndSmearingTool");
1581  ATH_MSG_DEBUG( "Initialising EgcalibTool " );
1582  ATH_CHECK( m_egammaCalibTool.setProperty("ESModel", m_isRun3 ? "es2024_Run3_v0" : "es2023_R22_Run2_v1") );
1583  ATH_CHECK( m_egammaCalibTool.setProperty("decorrelationModel", "1NP_v1") );
1584  // allows to bypass (intended) abort from of egamma calibration tool when configured for fastSim
1585  if (m_eleForceFullSimCalib) {
1586  ATH_MSG_WARNING( "Forcing EgcalibTool to use calibrations for full simulation" );
1587  ATH_CHECK( m_egammaCalibTool.setProperty("useFastSim", false) );
1588  }
1589  else {
1590  ATH_MSG_INFO("is Fast Sim:" << isAtlfast());
1591  ATH_CHECK( m_egammaCalibTool.setProperty("useFastSim", isAtlfast() ? 1 : 0) );
1592  }
1593  ATH_CHECK( m_egammaCalibTool.setProperty("OutputLevel", this->msg().level()) );
1595  } else ATH_CHECK( m_egammaCalibTool.retrieve() );
1596  }
1597 
1598 
1599  if (m_slices["tau"]) {
1601 
1603  // Initialise path to tau config file and config reader
1604 
1605  std::string inputfile = "";
1606  if (!m_tauConfigPath.empty() && (m_tauConfigPath!="default")) inputfile = m_tauConfigPath;
1607  else if (m_tauId == "rnn001") inputfile = "SUSYTools/tau_selection_rnn001.conf";
1608  else if (m_tauId == "VeryLoose") inputfile = "SUSYTools/tau_selection_veryloose.conf";
1609  else if (m_tauId == "Loose") inputfile = "SUSYTools/tau_selection_loose.conf";
1610  else if (m_tauId == "Medium") inputfile = "SUSYTools/tau_selection_medium.conf";
1611  else if (m_tauId == "Tight") inputfile = "SUSYTools/tau_selection_tight.conf";
1612  else {
1613  ATH_MSG_ERROR("Invalid tau ID selected: " << m_tauId);
1614  return StatusCode::FAILURE;
1615  }
1616 
1617  // Read in the config file so we can retrieve the fields later when configuring the efficiency tools
1618  if ( m_tauConfigReader.ReadFile( PathResolverFindCalibFile(inputfile).c_str(), EEnvLevel(0) ) ) {
1619  ATH_MSG_ERROR( "Error while reading tau config file : " << inputfile );
1620  return StatusCode::FAILURE;
1621  }
1622  else ATH_MSG_DEBUG( "Successfully read tau config file : " << inputfile );
1623 
1624 
1626  // Initialise tau selection tools
1627 
1628  if (!m_tauSelTool.isUserConfigured()) {
1629  toolName = "TauSelectionTool_" + m_tauId;
1630  m_tauSelTool.setTypeAndName("TauAnalysisTools::TauSelectionTool/"+toolName);
1631  ATH_CHECK( m_tauSelTool.setProperty("ConfigPath", inputfile) );
1632  ATH_CHECK( m_tauSelTool.setProperty("OutputLevel", this->msg().level()) );
1634  } else ATH_CHECK( m_tauSelTool.retrieve() );
1635 
1636 
1638  std::string inputfile = "";
1640  else if (m_tauIdBaseline == "rnn001") inputfile = "SUSYTools/tau_selection_rnn001.conf";
1641  else if (m_tauIdBaseline == "VeryLoose") inputfile = "SUSYTools/tau_selection_veryloose.conf";
1642  else if (m_tauIdBaseline == "Loose") inputfile = "SUSYTools/tau_selection_loose.conf";
1643  else if (m_tauIdBaseline == "Medium") inputfile = "SUSYTools/tau_selection_medium.conf";
1644  else if (m_tauIdBaseline == "Tight") inputfile = "SUSYTools/tau_selection_tight.conf";
1645  else {
1646  ATH_MSG_ERROR("Invalid baseline tau ID selected: " << m_tauIdBaseline);
1647  return StatusCode::FAILURE;
1648  }
1649  toolName = "TauSelectionToolBaseline_" + m_tauIdBaseline;
1650  m_tauSelToolBaseline.setTypeAndName("TauAnalysisTools::TauSelectionTool/"+toolName);
1652 
1653  ATH_CHECK( m_tauSelToolBaseline.setProperty("OutputLevel", this->msg().level()) );
1656 
1657 
1659  // Initialise tau efficiency tool
1660 
1661  if (!m_tauEffTool.isUserConfigured() && !isData()) {
1662  toolName = "TauEffTool_" + m_tauId;
1663  m_tauEffTool.setTypeAndName("TauAnalysisTools::TauEfficiencyCorrectionsTool/"+toolName);
1664 
1665  std::vector<int> correction_types;
1666  // Read out the tau ID from the config file and map into the enum from tau CP
1667  std::string jetIDWP = m_tauConfigReader.GetValue("JetIDWP" ,"");
1668  ANA_MSG_DEBUG( "Found JetIDWP in tau config file : " << jetIDWP );
1669  int jet_id_lvl;
1670  if (jetIDWP == "JETIDNONE") jet_id_lvl = (int)TauAnalysisTools::JetID::JETIDNONE;
1671  else if (jetIDWP == "JETIDRNNVERYLOOSE") jet_id_lvl = (int)TauAnalysisTools::JetID::JETIDRNNVERYLOOSE;
1672  else if (jetIDWP == "JETIDRNNLOOSE") jet_id_lvl = (int)TauAnalysisTools::JetID::JETIDRNNLOOSE;
1673  else if (jetIDWP == "JETIDRNNMEDIUM") jet_id_lvl = (int)TauAnalysisTools::JetID::JETIDRNNMEDIUM;
1674  else if (jetIDWP == "JETIDRNNTIGHT") jet_id_lvl = (int)TauAnalysisTools::JetID::JETIDRNNTIGHT;
1675  else {
1676  ATH_MSG_ERROR("Invalid Tau ID in tau config file " << jetIDWP);
1677  return StatusCode::FAILURE;
1678  }
1679  // Add retrieval of reco and ID SFs
1680  correction_types.insert(correction_types.end(), {TauAnalysisTools::EfficiencyCorrectionType::SFRecoHadTau,
1681  TauAnalysisTools::EfficiencyCorrectionType::SFJetIDHadTau});
1682 
1683  // Read out the (optional) Ele OR from the config file and map into the enum from tau CP
1684  std::string eleIDWP = m_tauConfigReader.GetValue("EleIDWP" ,"");
1685  ANA_MSG_DEBUG( "Found EleIDWP in tau config file : " << eleIDWP );
1686  int ele_id_lvl = -1;
1687  if (eleIDWP == "ELEIDRNNLOOSE") ele_id_lvl = (int)TauAnalysisTools::EleID::ELEIDRNNLOOSE;
1688  else if (eleIDWP == "ELEIDRNNMEDIUM") ele_id_lvl = (int)TauAnalysisTools::EleID::ELEIDRNNMEDIUM;
1689  else if (eleIDWP == "ELEIDRNNTIGHT") ele_id_lvl = (int)TauAnalysisTools::EleID::ELEIDRNNTIGHT;
1690  else {
1691  ATH_MSG_INFO("No or invalid Ele OR in tau config file " << eleIDWP << " will not apply SFs for electro veto" );
1692  }
1693  // Add retrieval of electron veto SFs if its applied
1694  if (ele_id_lvl != -1 )
1695  correction_types.insert(correction_types.end(), {TauAnalysisTools::EfficiencyCorrectionType::SFEleIDHadTau,
1696  TauAnalysisTools::EfficiencyCorrectionType::SFEleIDElectron});
1697 
1698  ATH_CHECK( m_tauEffTool.setProperty("JetIDLevel", jet_id_lvl) );
1699  ATH_CHECK( m_tauEffTool.setProperty("EleIDLevel", ele_id_lvl) );
1700  ATH_CHECK( m_tauEffTool.setProperty("EfficiencyCorrectionTypes", correction_types) );
1701  ATH_CHECK( m_tauEffTool.setProperty("OutputLevel", this->msg().level()) );
1702  ATH_CHECK( m_tauEffTool.setProperty("useFastSim", isAtlfast()) );
1704  if (m_isRun3){ ATH_CHECK( m_tauEffTool.setProperty("Campaign", "mc23") );}
1705  else { ATH_CHECK( m_tauEffTool.setProperty("Campaign", "mc20") );}
1708 
1709 
1711  // Initialise tau trigger efficiency tool(s)
1712 
1713  if (!isData()) {
1714  int iTauID = (int) TauAnalysisTools::JETIDNONE;
1715  if (m_tauId == "rnn001") iTauID = (int) TauAnalysisTools::JETIDNONE;
1716  else if (m_tauId == "VeryLoose") iTauID = (int) TauAnalysisTools::JETIDRNNVERYLOOSE;
1717  else if (m_tauId == "Loose") iTauID = (int) TauAnalysisTools::JETIDRNNLOOSE;
1718  else if (m_tauId == "Medium") iTauID = (int) TauAnalysisTools::JETIDRNNMEDIUM;
1719  else if (m_tauId == "Tight") iTauID = (int) TauAnalysisTools::JETIDRNNTIGHT;
1720  else {
1721  ATH_MSG_ERROR("Invalid tau ID selected: " << m_tauId);
1722  return StatusCode::FAILURE;
1723  }
1724 
1725  // map format: SF file name, corresponding single-tau leg (comma-separated in case of OR)
1726  m_tau_trig_support = {
1727  {"HLT_tau25_medium1_tracktwo", "HLT_tau25_medium1_tracktwo"},
1728  {"HLT_tau35_medium1_tracktwo", "HLT_tau35_medium1_tracktwo"},
1729  {"HLT_tau50L1TAU12_medium1_tracktwo", "HLT_tau50_medium1_tracktwo_L1TAU12"},
1730  {"HLT_tau60_medium1_tracktwo", "HLT_tau60_medium1_tracktwo"},
1731  {"HLT_tau80L1TAU60_medium1_tracktwo", "HLT_tau80_medium1_tracktwo_L1TAU60"},
1732  {"HLT_tau125_medium1_tracktwo", "HLT_tau125_medium1_tracktwo"},
1733  {"HLT_tau160_medium1_tracktwo", "HLT_tau160_medium1_tracktwo"},
1734  {"HLT_tau160L1TAU100_medium1_tracktwo", "HLT_tau160_medium1_tracktwo_L1TAU100"},
1735  // whole 2018 data taking period
1736  {"HLT_tau25_medium1_tracktwoEF", "HLT_tau25_medium1_tracktwoEF"},
1737  {"HLT_tau35_medium1_tracktwoEF", "HLT_tau35_medium1_tracktwoEF"},
1738  {"HLT_tau60_medium1_tracktwoEF", "HLT_tau60_medium1_tracktwoEF"},
1739  {"HLT_tau80L1TAU60_medium1_tracktwoEF", "HLT_tau80_medium1_tracktwoEF_L1TAU60"},
1740  {"HLT_tau160L1TAU100_medium1_tracktwoEF", "HLT_tau160_medium1_tracktwoEF_L1TAU100"},
1741  };
1742 
1743  if (m_isRun3){
1744  m_tau_trig_support = {
1745  // 2022, 2023
1746  {"HLT_tau25_mediumRNN_tracktwoMVA", "HLT_tau25_mediumRNN_tracktwoMVA"},
1747  {"HLT_tau35_mediumRNN_tracktwoMVA", "HLT_tau35_mediumRNN_tracktwoMVA"},
1748  // 2022, 2023 75-1800 bunches
1749  {"HLT_tau160_mediumRNN_tracktwoMVA", "HLT_tau160_mediumRNN_tracktwoMVA_L1TAU100"},
1750  // 2023 from 400 bunches
1751  {"HLT_tau160_mediumRNN_tracktwoMVA", "HLT_tau160_mediumRNN_tracktwoMVA_L1eTAU140"}
1752  };
1753  }
1754 
1755  for(auto const& trigger : m_tau_trig_support) {
1756  toolName = "TauTrigEffTool_" + m_tauId + "_" + trigger.first;
1757  auto tau_trigSF = m_tauTrigEffTool.emplace(m_tauTrigEffTool.end(), "TauAnalysisTools::TauEfficiencyCorrectionsTool/"+toolName);
1758  ATH_CHECK( tau_trigSF->setProperty("EfficiencyCorrectionTypes", std::vector<int>({TauAnalysisTools::SFTriggerHadTau})) );
1759  ATH_CHECK( tau_trigSF->setProperty("TriggerName", trigger.first) );
1760  ATH_CHECK( tau_trigSF->setProperty("JetIDLevel", iTauID) );
1761  ATH_CHECK( tau_trigSF->setProperty("OutputLevel", this->msg().level()) );
1762  ATH_CHECK( tau_trigSF->setProperty("useFastSim", isAtlfast()) );
1763  ATH_CHECK( tau_trigSF->setProperty("RecommendationTag", m_tauEffToolRecommendationTag) );
1764  if (m_isRun3){ ATH_CHECK( tau_trigSF->setProperty("Campaign", m_mcCampaign) );}
1765  else { ATH_CHECK( tau_trigSF->setProperty("Campaign", "mc20") );}
1766  ATH_CHECK( tau_trigSF->initialize() );
1767  }
1768  }
1769 
1770 
1772  // Initialise tau smearing tool
1773 
1775  m_tauSmearingTool.setTypeAndName("TauAnalysisTools::TauSmearingTool/TauSmearingTool");
1777  if (m_isRun3){ ATH_CHECK( m_tauSmearingTool.setProperty("Campaign", "mc23") );}
1778  else { ATH_CHECK( m_tauSmearingTool.setProperty("Campaign", "mc20") );}
1781  ATH_CHECK( m_tauSmearingTool.setProperty("useFastSim", isAtlfast()) );
1782  ATH_CHECK( m_tauSmearingTool.setProperty("OutputLevel", this->msg().level()) );
1784  } else ATH_CHECK( m_tauSmearingTool.retrieve() );
1785 
1786 
1788  // Initialise tau truth matching tool
1789 
1791  m_tauTruthMatch.setTypeAndName("TauAnalysisTools::TauTruthMatchingTool/TauTruthMatch");
1792  ATH_CHECK( m_tauTruthMatch.setProperty("TruthJetContainerName", m_defaultTruthJets ) );
1793  ATH_CHECK( m_tauTruthMatch.setProperty("OutputLevel", this->msg().level()) );
1796 
1797 
1798  }
1799 
1800 
1801  if (m_slices["bjet"]) {
1803  // Initialise B-tagging tools
1804 
1805  // btagSelectionTool
1806  std::string jetcollBTag = jetcoll;
1807  if (jetcoll == "AntiKt4LCTopoJets") {
1808  ATH_MSG_WARNING(" *** HACK *** Treating LCTopoJets jets as EMTopo -- use at your own risk!");
1809  jetcollBTag = "AntiKt4EMTopoJets";
1810  }
1811 
1812  // print a warning if there is indication that the user supplied a CDI file not matching to the sample being processed
1813  // see --> https://twiki.cern.ch/twiki/bin/view/AtlasProtected/BTagRel22HighLevelSummary
1814  if( (m_bTaggingCalibrationFilePath.find(!m_isRun3 ? "MC20" : "MC23") == std::string::npos) && (m_bTaggingCalibrationFilePath.find(!m_isRun3 ? "MC20" : "MC21") == std::string::npos) ) {
1815  ATH_MSG_WARNING( "You are using a "<<(!m_isRun3 ? "Run3":"Run2")<<" CDI file while running on "<<(!m_isRun3 ? "Run2":"Run3")<<" sample; Please updates your CDI file to the correct version for "<<(!m_isRun3 ? "Run2":"Run3"));
1816  }
1817 
1818  if (m_useBtagging && !m_btagSelTool.isUserConfigured() && !m_BtagWP.empty()) {
1819  if (jetcollBTag.find("AntiKt4EMTopoJets") == std::string::npos && jetcollBTag.find("AntiKt4EMPFlowJets")==std::string::npos) {
1820  ATH_MSG_WARNING("** Only AntiKt4EMTopoJets and AntiKt4EMPFlowJets are supported with FTAG scale factors!");
1821  return StatusCode::FAILURE;
1822  }
1823 
1824  toolName = "BTagSel_" + jetcollBTag + m_BtagTagger + m_BtagWP;
1825 
1826  m_btagSelTool.setTypeAndName("BTaggingSelectionTool/"+toolName);
1827  ATH_CHECK( m_btagSelTool.setProperty("TaggerName", m_BtagTagger ) );
1828  ATH_CHECK( m_btagSelTool.setProperty("OperatingPoint", m_BtagWP ) );
1829  ATH_CHECK( m_btagSelTool.setProperty("JetAuthor", jetcollBTag ) );
1831  ATH_CHECK( m_btagSelTool.setProperty("FlvTagCutDefinitionsFileName", m_bTaggingCalibrationFilePath) );
1832  // Read from BTagging object. This will be needed until the input file is produced from
1833  // a derivation release that includes !80336.
1834  ATH_CHECK( m_btagSelTool.setProperty("readFromBTaggingObject", true ) );
1835  ATH_CHECK( m_btagSelTool.setProperty("OutputLevel", this->msg().level()) );
1838 
1839 
1841  if (jetcoll != "AntiKt4EMTopoJets" && jetcoll != "AntiKt4EMPFlowJets") {
1842  ATH_MSG_WARNING("** Only AntiKt4EMTopoJets and AntiKt4EMPFlowJets are supported with FTAG scale factors!");
1843  return StatusCode::FAILURE;
1844  }
1845 
1846  toolName = "BTagSelOR_" + jetcollBTag + m_orBtagWP;
1847  m_btagSelTool_OR.setTypeAndName("BTaggingSelectionTool/"+toolName);
1849  ATH_CHECK( m_btagSelTool_OR.setProperty("OperatingPoint", m_orBtagWP ) );
1850  ATH_CHECK( m_btagSelTool_OR.setProperty("JetAuthor", jetcollBTag ) );
1852  ATH_CHECK( m_btagSelTool_OR.setProperty("FlvTagCutDefinitionsFileName", m_bTaggingCalibrationFilePath) );
1853  // Read from BTagging object. This will be needed until the input file is produced from
1854  // a derivation release that includes !80336.
1855  ATH_CHECK( m_btagSelTool_OR.setProperty("readFromBTaggingObject", true ) );
1856  ATH_CHECK( m_btagSelTool_OR.setProperty("OutputLevel", this->msg().level()) );
1859 
1860 
1861  std::string trkjetcoll = m_defaultTrackJets;
1862  const std::string& BTagColl_TrkJet = trkjetcoll;
1863  if (m_slices["tjet"]) {
1864  if ( m_useBtagging_trkJet && m_defaultTrackJets.empty()) {
1865  m_useBtagging_trkJet = false;
1866  ATH_MSG_INFO("TrackJet collection set to None: disabling btagging for TrackJets.");
1867  }
1868 
1870  if (trkjetcoll.find("AntiKt2PV0TrackJets")==std::string::npos && trkjetcoll.find("AntiKtVR30Rmax4Rmin02TrackJets")==std::string::npos) {
1871  ATH_MSG_WARNING("** Only AntiKt2PV0TrackJets and AntiKtVR30Rmax4Rmin02TrackJets are supported with FTAG scale factors!");
1872  return StatusCode::FAILURE;
1873  }
1874 
1875  toolName = "BTagSel_" + trkjetcoll + m_BtagTagger_trkJet + m_BtagWP_trkJet;
1876 
1877  m_btagSelTool_trkJet.setTypeAndName("BTaggingSelectionTool/"+toolName);
1881  ATH_CHECK( m_btagSelTool_trkJet.setProperty("JetAuthor", BTagColl_TrkJet ) );
1883  ATH_CHECK( m_btagSelTool_trkJet.setProperty("FlvTagCutDefinitionsFileName", m_bTaggingCalibrationFilePath) );
1884  // Read from BTagging object. This will be needed until the input file is produced from
1885  // a derivation release that includes !80336.
1886  ATH_CHECK( m_btagSelTool_trkJet.setProperty("readFromBTaggingObject", true ) );
1887  ATH_CHECK( m_btagSelTool_trkJet.setProperty("OutputLevel", this->msg().level()) );
1890  }
1891 
1892  // Set MCshowerType for FTAG MC/MC SFs
1893  // https://twiki.cern.ch/twiki/bin/view/AtlasProtected/BTagCalibrationRecommendationsRelease21#MC_MC_Scale_Factors_for_Analysis
1894  std::string MCshowerID;
1895  if(m_showerType==-1){
1896  ATH_MSG_ERROR( "Error! m_showerType=-1, which is an error case for FTAG MC/MC SFs." );
1897  return StatusCode::FAILURE;
1898  }
1899  if(m_BtagTagger=="DL1dv01"){
1900  if(!m_isRun3){
1901  MCshowerID= "default"; // Powheg+Pythia8 (410470) - PhPy8EG_A14
1902  if (m_showerType == 1) MCshowerID = "411233"; // PowhegHerwig7
1903  else if (m_showerType == 2) MCshowerID = "600666"; // PhH7EG_H7UE - 601414
1904  else if (m_showerType == 3) MCshowerID = "410250"; // Sherpa_221
1905  else if (m_showerType == 4) MCshowerID = "700122"; // Sh_2210
1906  else if (m_showerType == 5) MCshowerID = "700122"; // Sh_2211
1907  else if (m_showerType == 6) MCshowerID = "700660"; // Sh_2212 - 700660
1908  else if (m_showerType == 7) MCshowerID = "410464"; // aMcAtNloPy8
1909  else if (m_showerType == 8) MCshowerID = "412116"; // aMcAtNloHerwig7
1910  else if (m_showerType != 0){
1911  ATH_MSG_WARNING("Unknown ShowerID detected! Using default FTAG MC-MC SFs (Powheg+Pythia8). Please check if these are applicable for this sample!");
1912  }
1913  }
1914  else{
1915  MCshowerID= "default"; // Powheg+Pythia8 (601229) - PhPy8EG_A14
1916  if (m_showerType == 2) MCshowerID = "601414"; // POWHEG+Herwig721 - PhH7EG_A14
1917  else if (m_showerType == 6) MCshowerID = "700660"; // Sherpa 2.2.12 - Sh_2212
1918  else if (m_showerType != 0){
1919  ATH_MSG_WARNING("Unknown ShowerID detected! Using default FTAG MC-MC SFs (Powheg+Pythia8). Please check if these are applicable for this sample!");
1920  }
1921  }
1922  } else if (m_BtagTagger=="GN2v01"){
1923  if(!m_isRun3){
1924  MCshowerID= "default"; // PowhegPythia8EvtGen (410470)
1925  if (m_showerType == 2) MCshowerID = "411233"; // POWHEGHERWIG7 - 411233
1926  else if (m_showerType == 3) MCshowerID = "600666"; // PhH7EG_H7UE - 600666
1927  else if (m_showerType == 4) MCshowerID = "700660"; // Sh_2210 FTAGAnalysisConfig uses this, but docs say only 11-16 can be used
1928  else if (m_showerType == 5) MCshowerID = "700660"; // Sh_2211
1929  else if (m_showerType == 6) MCshowerID = "700660"; // Sh_2212
1930  else if (m_showerType == 7) MCshowerID = "700660"; // Sh_2214
1931  else if (m_showerType == 8) {
1932  ATH_MSG_WARNING("Unknown Sherpa version detected! Using FTAG MC-MC SFs for Sherpa 2.2.11-2.2.16. Please check if these are applicable for this sample!");
1933  MCshowerID = "700660"; // Unknown Sherpa Version. This is to handle Sh_blank (e.g. DSID 701050). The examples I've found are all 2.2.16, but that's not guaranteed.
1934  }
1935  else if (m_showerType != 0){
1936  ATH_MSG_WARNING("Unknown ShowerID detected! Using default FTAG MC-MC SFs (Powheg+Pythia8). Please check if these are applicable for this sample!");
1937  }
1938  }
1939  else {
1940  MCshowerID= "default"; // PowhegPythia8EvtGen (601229)
1941  if (m_showerType == 3) MCshowerID = "601414"; // PhH7EG_H7UE - 601414
1942  else if (m_showerType == 5) MCshowerID = "700808"; // Sh_2211
1943  else if (m_showerType == 6) MCshowerID = "700808"; // Sh_2212
1944  else if (m_showerType == 7) MCshowerID = "700808"; // Sh_2214
1945  else if (m_showerType == 8) {
1946  ATH_MSG_WARNING("Unknown Sherpa version detected! Using FTAG MC-MC SFs for Sherpa 2.2.11-2.2.16. Please check if these are applicable for this sample!");
1947  MCshowerID = "700660"; // Unknown Sherpa Version
1948  }
1949  else if (m_showerType != 0){
1950  ATH_MSG_WARNING("Unknown ShowerID detected! Using default FTAG MC-MC SFs (Powheg+Pythia8). Please check if these are applicable for this sample!");
1951  }
1952  }
1953  } else {
1954  ATH_MSG_WARNING("Unknown b-tagger detected! Only DL1dv01 and GN2v01 are supported. Falling back to default FTAG MC-MC SFs (Powheg+Pythia8). Please check if these are applicable for this sample!");
1955  MCshowerID= "default";
1956  }
1957 
1958  // btagEfficiencyTool
1959  if (m_useBtagging && !m_btagEffTool.isUserConfigured() && !m_BtagWP.empty()) {
1960  if (jetcoll != "AntiKt4EMTopoJets" && jetcoll != "AntiKt4EMPFlowJets") {
1961  ATH_MSG_WARNING("** Only AntiKt4EMTopoJets and AntiKt4EMPFlowJets are supported with FTAG scale factors!");
1962  return StatusCode::FAILURE;
1963  }
1964 
1965  toolName = "BTagSF_" + jetcollBTag + m_BtagTagger + m_BtagWP;
1966  m_btagEffTool.setTypeAndName("BTaggingEfficiencyTool/"+toolName);
1967  ATH_CHECK( m_btagEffTool.setProperty("TaggerName", m_BtagTagger ) );
1969  ATH_CHECK( m_btagEffTool.setProperty("OperatingPoint", m_BtagWP ) );
1970  ATH_CHECK( m_btagEffTool.setProperty("JetAuthor", jetcollBTag ) );
1971  // Read from BTagging object. This will be needed until the input file is produced from
1972  // a derivation release that includes !80336.
1973  ATH_CHECK( m_btagEffTool.setProperty("readFromBTaggingObject", true) );
1975  ATH_CHECK( m_btagEffTool.setProperty("SystematicsStrategy", m_BtagSystStrategy ) );
1976  ATH_CHECK( m_btagEffTool.setProperty("EfficiencyBCalibrations", MCshowerID ));
1977  ATH_CHECK( m_btagEffTool.setProperty("EfficiencyCCalibrations", MCshowerID ));
1978  ATH_CHECK( m_btagEffTool.setProperty("EfficiencyTCalibrations", MCshowerID ));
1979  ATH_CHECK( m_btagEffTool.setProperty("EfficiencyLightCalibrations", MCshowerID ));
1980  ATH_CHECK( m_btagEffTool.setProperty("EigenvectorReductionB", m_EigenvectorReductionB ));
1981  ATH_CHECK( m_btagEffTool.setProperty("EigenvectorReductionC", m_EigenvectorReductionC ));
1982  ATH_CHECK( m_btagEffTool.setProperty("EigenvectorReductionLight", m_EigenvectorReductionLight ));
1983  ATH_CHECK( m_btagEffTool.setProperty("OutputLevel", this->msg().level()) );
1985  } else ATH_CHECK( m_btagEffTool.retrieve() );
1986 
1987 
1988  if (m_slices["tjet"]) {
1990  if (trkjetcoll.find("AntiKt2PV0TrackJets")==std::string::npos && trkjetcoll.find("AntiKtVR30Rmax4Rmin02TrackJets")==std::string::npos) {
1991  ATH_MSG_WARNING("** Only AntiKt2PV0TrackJets and AntiKtVR30Rmax4Rmin02TrackJets are supported with FTAG scale factors!");
1992  return StatusCode::FAILURE;
1993  }
1994 
1995  toolName = "BTagSF_" + trkjetcoll;
1996  m_btagEffTool_trkJet.setTypeAndName("BTaggingEfficiencyTool/"+toolName);
2000  ATH_CHECK( m_btagEffTool_trkJet.setProperty("JetAuthor", BTagColl_TrkJet ) );
2002  ATH_CHECK( m_btagEffTool_trkJet.setProperty("SystematicsStrategy", m_BtagSystStrategy ) );
2003  ATH_CHECK( m_btagEffTool_trkJet.setProperty("EfficiencyBCalibrations", MCshowerID ));
2004  ATH_CHECK( m_btagEffTool_trkJet.setProperty("EfficiencyCCalibrations", MCshowerID ));
2005  ATH_CHECK( m_btagEffTool_trkJet.setProperty("EfficiencyTCalibrations", MCshowerID ));
2006  ATH_CHECK( m_btagEffTool_trkJet.setProperty("EfficiencyLightCalibrations", MCshowerID ));
2009  ATH_CHECK( m_btagEffTool_trkJet.setProperty("EigenvectorReductionLight", m_EigenvectorReductionLight ));
2010  ATH_CHECK( m_btagEffTool_trkJet.setProperty("OutputLevel", this->msg().level()) );
2013  }
2014  }
2015 
2016 
2017  if (m_slices["met"]) {
2019  // Initialise MET tools
2020 
2021  if (!m_metMaker.isUserConfigured()) {
2022  toolName = m_doFwdJVT ? m_metJetSelection+"_fJVT" : m_metJetSelection+"_NOfJVT";
2023  m_metMaker.setTypeAndName("met::METMaker/METMaker_ST_"+toolName);
2024 
2026  ATH_CHECK( m_metMaker.setProperty("DoSetMuonJetEMScale", m_metDoSetMuonJetEMScale) );
2027  ATH_CHECK( m_metMaker.setProperty("DoRemoveMuonJets", m_metDoRemoveMuonJets) );
2028  ATH_CHECK( m_metMaker.setProperty("UseGhostMuons", m_metUseGhostMuons) );
2029  ATH_CHECK( m_metMaker.setProperty("DoMuonEloss", m_metDoMuonEloss) );
2030  ATH_CHECK( m_metMaker.setProperty("GreedyPhotons", m_metGreedyPhotons) );
2031  ATH_CHECK( m_metMaker.setProperty("VeryGreedyPhotons", m_metVeryGreedyPhotons) );
2032 
2033  // set the jet selection if default empty string is overridden through config file
2034  if (m_metJetSelection.size()) {
2035  ATH_CHECK( m_metMaker.setProperty("JetSelection", m_metJetSelection) );
2036  }
2038  ATH_CHECK( m_metMaker.setProperty("DoPFlow", true) );
2039  }
2040 
2041  ATH_CHECK( m_metMaker.setProperty("OutputLevel", this->msg().level()) );
2043  } else ATH_CHECK( m_metMaker.retrieve() );
2044 
2045 
2047  m_metSystTool.setTypeAndName("met::METSystematicsTool/METSystTool");
2049 
2050  if (m_trkMETsyst && m_caloMETsyst){
2051  ATH_MSG_ERROR( "Can only have CST *or* TST configured for MET maker. Please unset either METDoCaloSyst or METDoTrkSyst in your config file" );
2052  return StatusCode::FAILURE;
2053  }
2054 
2055  if (m_trkMETsyst) {
2056  ATH_CHECK( m_metSystTool.setProperty("ConfigSoftCaloFile", "") );
2057  ATH_CHECK( m_metSystTool.setProperty("ConfigSoftTrkFile", "TrackSoftTerms-pflow_Dec24.config") );
2058  }
2059 
2060  if (m_caloMETsyst) {
2061  ATH_MSG_WARNING( "CST is no longer recommended by Jet/MET group");
2062  ATH_CHECK( m_metSystTool.setProperty("ConfigSoftTrkFile", "") );
2063  }
2064 
2065  if (m_trkJetsyst) {
2066  ATH_CHECK( m_metSystTool.setProperty("ConfigJetTrkFile", "JetTrackSyst.config") );
2067  }
2068 
2069  ATH_CHECK( m_metSystTool.setProperty("OutputLevel", this->msg().level()) );
2071  } else ATH_CHECK( m_metSystTool.retrieve());
2072 
2073 
2074  if (!m_metSignif.isUserConfigured()) {
2075  // See https://twiki.cern.ch/twiki/bin/view/AtlasProtected/MetSignificance
2076  m_metSignif.setTypeAndName("met::METSignificance/metSignificance_"+jetname);
2077 #ifndef XAOD_STANDALONE // Athena and AthAnalysis; need to take into account that MuonCalibTool is private tool
2081  if(jetname != "AntiKt4EMPFlow")
2082  ATH_MSG_WARNING("METSignificance recommendations only exist for AntiKt4EMPFlow jets, falling back to this.");
2083  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "JetCollection", "AntiKt4EMPFlow"));
2084  // This is the only recommended set of jet resolutions for use with R22+ MET Significance until "Consolidated" recommendations are available
2085  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "JetCalibConfig", "JES_data2017_2016_2015_Recommendation_PFlow_Aug2018_rel21.config") );
2086  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "JetCalibSequence", "JetArea_Residual_EtaJES_GSC_Smear") );
2087  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "JetCalibArea", "00-04-81") );
2088  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "EgammaESModel", m_isRun3 ? "es2024_Run3_v0" : "es2023_R22_Run2_v1") );
2089  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "EgammaDecorrelationModel", "1NP_v1") );
2090  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "EgammaUseFastsim", isAtlfast()) );
2091  // setup a dedicated new muon calib tool for passing down to METSignificance
2092  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "MuonCalibTool", "CP::MuonCalibTool/calibTool"));
2093  if (m_isRun3)
2094  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "calibTool.IsRun3Geo", true));
2096  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "calibTool.OutputLevel",this->msg().level()));
2097  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "calibTool.release", "Recs2025_03_26_Run2Run3"));
2098  int IdBaselineInt = m_muIdBaseline;
2099  if (IdBaselineInt == 4)
2100  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "calibTool.do2StationsHighPt", true));
2101  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "calibTool.doExtraSmearing", m_muHighPtExtraSmear));
2102  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "OutputLevel", this->msg().level()));
2103 #else // AnalysisBase; can just pass the jet/egamma/muon calib tools configured above
2104  ATH_CHECK( m_metSignif.setProperty("SoftTermParam", m_softTermParam) );
2105  ATH_CHECK( m_metSignif.setProperty("TreatPUJets", m_treatPUJets) );
2106  ATH_CHECK( m_metSignif.setProperty("DoPhiReso", m_doPhiReso) );
2107  if(jetname != "AntiKt4EMPFlow")
2108  ATH_MSG_WARNING("METSignificance recommendations only exist for AntiKt4EMPFlow jets, falling back to this.");
2109  ATH_CHECK( m_metSignif.setProperty( "JetCollection", "AntiKt4EMPFlow"));
2110  // This is the only recommended set of jet resolutions for use with R22+ MET Significance until "Consolidated" recommendations are available
2111  ATH_CHECK( m_metSignif.setProperty( "JetCalibConfig", "JES_data2017_2016_2015_Recommendation_PFlow_Aug2018_rel21.config") );
2112  ATH_CHECK( m_metSignif.setProperty( "JetCalibSequence", "JetArea_Residual_EtaJES_GSC_Smear") );
2113  ATH_CHECK( m_metSignif.setProperty( "JetCalibArea", "00-04-81") );
2114  ATH_CHECK( m_metSignif.setProperty("egammaCalibTool", m_egammaCalibTool.getHandle()) );
2115  // just pass the muon calib tool
2117  ATH_CHECK( m_metSignif.setProperty("OutputLevel", this->msg().level()) );
2118 #endif
2120  } else ATH_CHECK( m_metSignif.retrieve() );
2121  }
2122 
2123 
2125 // Initialise trigger tools
2126 
2128 
2129  // The decision tool
2130  m_trigDecTool.setTypeAndName("Trig::TrigDecisionTool/TrigDecisionTool");
2131  ATH_CHECK( m_trigDecTool.setProperty("TrigDecisionKey", "xTrigDecision") );
2132  if (m_isRun3) {
2133  ATH_CHECK( m_trigDecTool.setProperty("NavigationFormat", "TrigComposite") );
2134  ATH_CHECK( m_trigDecTool.setProperty("HLTSummary", "HLTNav_Summary_DAODSlimmed") );
2135  }
2136  ATH_CHECK( m_trigDecTool.setProperty("OutputLevel", this->msg().level()) );
2137 
2138 #ifndef XAOD_STANDALONE // Athena and AthAnalysis
2139  // Clear the default tool handle to cause a fallback on the config service
2140  ATH_CHECK( m_trigDecTool.setProperty("ConfigTool", ""));
2141 #else // AnalysisBase
2142  m_trigConfTool.setTypeAndName("TrigConf::xAODConfigTool/xAODConfigTool");
2145 #endif
2146 
2148 
2149  } else ATH_CHECK( m_trigDecTool.retrieve() );
2150 
2151  if (m_isRun3) {
2153  m_trigDRScoringTool.setTypeAndName("Trig::DRScoringTool/TrigDRScoringTool");
2154  ATH_CHECK( m_trigDRScoringTool.setProperty("OutputLevel", this->msg().level()) );
2157  }
2158 
2161  m_trigMatchingTool.setTypeAndName("Trig::MatchFromCompositeTool/TrigMatchFromCompositeTool");
2163  ATH_CHECK( m_trigMatchingTool.setProperty("RemapBrokenLinks", true) );
2164  }
2165  else {
2166  if (m_isRun3){
2167  m_trigMatchingTool.setTypeAndName("Trig::R3MatchingTool/TrigR3MatchingTool");
2170  }
2171  else {
2172  m_trigMatchingTool.setTypeAndName("Trig::MatchingTool/TrigMatchingTool");
2174  }
2175  }
2176  ATH_CHECK( m_trigMatchingTool.setProperty("OutputLevel", this->msg().level()) );
2179 
2181 // Initialise trigGlobalEfficiencyCorrection tool
2182 
2184 
2185  std::string no2e17("");
2186  if (m_trig2017combination_diLep.find("||2e17_lhvloose_nod0_L12EM15VHI") != std::string::npos) {
2187  auto pos_2e17 = m_trig2017combination_diLep.find("||2e17_lhvloose_nod0_L12EM15VHI");
2188  no2e17 = m_trig2017combination_diLep.substr(0, pos_2e17) + m_trig2017combination_diLep.substr(pos_2e17+31, m_trig2017combination_diLep.size());
2189  } else if (m_trig2017combination_diLep.find("2e17_lhvloose_nod0_L12EM15VHI||") != std::string::npos) {
2190  auto pos_2e17 = m_trig2017combination_diLep.find("2e17_lhvloose_nod0_L12EM15VHI||");
2191  no2e17 = m_trig2017combination_diLep.substr(0, pos_2e17) + m_trig2017combination_diLep.substr(pos_2e17+31, m_trig2017combination_diLep.size());
2192  } else {
2193  no2e17 = m_trig2017combination_diLep;
2194  }
2195  ATH_MSG_DEBUG( "TrigGlobalEfficiencyCorrectionTool/TrigGlobal_diLep: no2e17 trigger string: " << no2e17 );
2196 
2197  std::map<std::string,std::string> triggers_diLep;
2198  triggers_diLep["2015"] = m_trig2015combination_diLep;
2199  triggers_diLep["2016"] = m_trig2016combination_diLep;
2200  triggers_diLep["324320-326695"] = m_trig2017combination_diLep; // 2017 before accidental prescale of L12EM15VHI
2201  triggers_diLep["326834-328393"] = no2e17; // 2017 during accidental prescale
2202  triggers_diLep["329385-340453"] = m_trig2017combination_diLep; // 2017 after accidental prescale
2203  triggers_diLep["2018"] = m_trig2018combination_diLep;
2204 
2205  m_trigGlobalEffCorrTool_diLep.setTypeAndName("TrigGlobalEfficiencyCorrectionTool/TrigGlobal_diLep");
2207  ATH_CHECK( m_trigGlobalEffCorrTool_diLep.setProperty("ElectronScaleFactorTools", m_elecTrigSFTools) );
2209  ATH_CHECK( m_trigGlobalEffCorrTool_diLep.setProperty("TriggerCombination", triggers_diLep) );
2213  ATH_CHECK( m_trigGlobalEffCorrTool_diLep.setProperty("OutputLevel", this->msg().level()) );
2216 
2217 
2219 
2220  std::string no2e17("");
2221  if (m_trig2017combination_multiLep.find("||2e17_lhvloose_nod0_L12EM15VHI") != std::string::npos) {
2222  auto pos_2e17 = m_trig2017combination_multiLep.find("||2e17_lhvloose_nod0_L12EM15VHI");
2223  no2e17 = m_trig2017combination_multiLep.substr(0, pos_2e17) + m_trig2017combination_multiLep.substr(pos_2e17+31, m_trig2017combination_multiLep.size());
2224  } else if (m_trig2017combination_multiLep.find("2e17_lhvloose_nod0_L12EM15VHI||") != std::string::npos) {
2225  auto pos_2e17 = m_trig2017combination_multiLep.find("2e17_lhvloose_nod0_L12EM15VHI||");
2226  no2e17 = m_trig2017combination_multiLep.substr(0, pos_2e17) + m_trig2017combination_multiLep.substr(pos_2e17+31, m_trig2017combination_multiLep.size());
2227  } else {
2229  }
2230  ATH_MSG_DEBUG( "TrigGlobalEfficiencyCorrectionTool/TrigGlobal_multiLep: no2e17 trigger string: " << no2e17 );
2231 
2232  std::map<std::string,std::string> triggers_multiLep;
2233  triggers_multiLep["2015"] = m_trig2015combination_multiLep;
2234  triggers_multiLep["2016"] = m_trig2016combination_multiLep;
2235  triggers_multiLep["324320-326695"] = m_trig2017combination_multiLep; // 2017 before accidental prescale of L12EM15VHI
2236  triggers_multiLep["326834-328393"] = no2e17; // 2017 during accidental prescale
2237  triggers_multiLep["329385-340453"] = m_trig2017combination_multiLep; // 2017 after accidental prescale
2238  triggers_multiLep["2018"] = m_trig2018combination_multiLep;
2239 
2240  m_trigGlobalEffCorrTool_multiLep.setTypeAndName("TrigGlobalEfficiencyCorrectionTool/TrigGlobal_multiLep");
2244  ATH_CHECK( m_trigGlobalEffCorrTool_multiLep.setProperty("TriggerCombination", triggers_multiLep) );
2248  ATH_CHECK( m_trigGlobalEffCorrTool_multiLep.setProperty("OutputLevel", this->msg().level()) );
2251 
2252 
2254  m_trigGlobalEffCorrTool_diPhoton.setTypeAndName("TrigGlobalEfficiencyCorrectionTool/TrigGlobal_diPhoton");
2263  ATH_CHECK( m_trigGlobalEffCorrTool_diPhoton.setProperty("OutputLevel", this->msg().level()) );
2266 
2267 
2268  if (m_slices["ele"] || m_slices["pho"] || m_slices["mu"]) {
2269  // /////////////////////////////////////////////////////////////////////////////////////////
2270  // Initialise Isolation Correction Tool
2271 
2272  if ( !m_isoCorrTool.isUserConfigured() ) {
2273  m_isoCorrTool.setTypeAndName("CP::IsolationCorrectionTool/IsoCorrTool");
2274  ATH_CHECK( m_isoCorrTool.setProperty( "ToolVer", "REL22") );
2275  ATH_CHECK( m_isoCorrTool.setProperty( "IsMC", !isData()) );
2276  ATH_CHECK( m_isoCorrTool.setProperty( "AFII_corr", isAtlfast()) );
2277  ATH_CHECK( m_isoCorrTool.setProperty( "Apply_SC_leakcorr", false) );
2278  ATH_CHECK( m_isoCorrTool.setProperty( "FixTimingIssueInCore", true) ); // Similar to https://gitlab.cern.ch/atlas/athena/-/merge_requests/83939
2279  ATH_CHECK( m_isoCorrTool.setProperty( "CorrFile", "IsolationCorrections/v6/isolation_ptcorrections_rel22_mc20.root") );
2280  ATH_CHECK( m_isoCorrTool.setProperty( "OutputLevel", this->msg().level()) );
2282  } else ATH_CHECK( m_isoCorrTool.retrieve() );
2283 
2284 
2285  // /////////////////////////////////////////////////////////////////////////////////////////
2286  // Initialise Isolation Tool
2287  if (!m_isoTool.isUserConfigured()) {
2288  m_isoTool.setTypeAndName("CP::IsolationSelectionTool/IsoTool");
2289  ATH_CHECK( m_isoTool.setProperty("ElectronWP", m_eleIso_WP.empty() ? "Loose_VarRad" : m_eleIso_WP) );
2290  ATH_CHECK( m_isoTool.setProperty("MuonWP", m_muIso_WP.empty() ? "Loose_VarRad" : m_muIso_WP) );
2291  ATH_CHECK( m_isoTool.setProperty("PhotonWP", m_photonIso_WP.empty() ? "FixedCutTight" : m_photonIso_WP ) );
2292  ATH_CHECK( m_isoTool.setProperty("OutputLevel", this->msg().level()) );
2294  } else ATH_CHECK( m_isoTool.retrieve() );
2295 
2296  //disable if (!m_isoToolLowPtPLV.isUserConfigured()) {
2297  //disable m_isoToolLowPtPLV.setTypeAndName("CP::IsolationLowPtPLVTool/IsoToolLowPtPLV");
2298  //disable ATH_CHECK( m_isoToolLowPtPLV.setProperty("OutputLevel", this->msg().level()) );
2299  //disable ATH_CHECK( m_isoToolLowPtPLV.retrieve() );
2300  //disable } else ATH_CHECK( m_isoToolLowPtPLV.retrieve() );
2301 
2302 
2304  m_isoBaselineTool.setTypeAndName("CP::IsolationSelectionTool/IsoBaselineTool");
2305  ATH_CHECK( m_isoBaselineTool.setProperty("ElectronWP", m_eleBaselineIso_WP.empty() ? "Loose_VarRad" : m_eleBaselineIso_WP ) );
2306  ATH_CHECK( m_isoBaselineTool.setProperty("MuonWP", m_muBaselineIso_WP.empty() ? "Loose_VarRad" : m_muBaselineIso_WP ) );
2307  ATH_CHECK( m_isoBaselineTool.setProperty("PhotonWP", m_photonBaselineIso_WP.empty() ? "FixedCutTight" : m_photonBaselineIso_WP ) );
2308  ATH_CHECK( m_isoBaselineTool.setProperty("OutputLevel", this->msg().level()) );
2310  } else ATH_CHECK( m_isoBaselineTool.retrieve() );
2311 
2312 
2314  m_isoHighPtTool.setTypeAndName("CP::IsolationSelectionTool/IsoHighPtTool");
2315  ATH_CHECK( m_isoHighPtTool.setProperty("ElectronWP", m_eleIsoHighPt_WP.empty() ? "Loose_VarRad" : m_eleIsoHighPt_WP) );
2316  ATH_CHECK( m_isoHighPtTool.setProperty("MuonWP", m_muIsoHighPt_WP.empty() ? "Loose_VarRad" : m_muIsoHighPt_WP ) );
2317  ATH_CHECK( m_isoHighPtTool.setProperty("PhotonWP", m_photonIso_WP.empty() ? "FixedCutTight" : m_photonIso_WP ) );
2318  ATH_CHECK( m_isoHighPtTool.setProperty("OutputLevel", this->msg().level()) );
2320  } else ATH_CHECK( m_isoHighPtTool.retrieve() );
2321 
2322 
2323  // /////////////////////////////////////////////////////////////////////////////////////////
2324  // Initialise IsolationCloseByCorrectionTool Tool
2326  m_isoCloseByTool.setTypeAndName("CP::IsolationCloseByCorrectionTool/IsoCloseByTool");
2327  // Actually we could debate about what is the proper tool to choose if the users have different baseline & signal islation WP's
2329  ATH_CHECK( m_isoCloseByTool.setProperty("PassoverlapDecorator", m_IsoCloseByORpassLabel) );
2330  ATH_CHECK( m_isoCloseByTool.setProperty("SelectionDecorator", m_useSigLepForIsoCloseByOR ? "signal" : "baseline") );
2331  // Make this propery configurable as well?
2332  ATH_CHECK( m_isoCloseByTool.setProperty("BackupPrefix", "ORIG") );
2333  // The isolation selection decorator is updated as well by the tool
2334  ATH_CHECK( m_isoCloseByTool.setProperty("IsolationSelectionDecorator", "isol") );
2335 
2336  ATH_CHECK( m_isoCloseByTool.setProperty("OutputLevel", this->msg().level()) );
2337 #ifndef XAOD_ANALYSIS
2338  ATH_CHECK( m_isoCloseByTool.setProperty("ParticleCaloExtensionTool", "") );
2339 #endif
2341  } else ATH_CHECK( m_isoCloseByTool.retrieve() );
2342  }
2343 
2344 
2345 // /////////////////////////////////////////////////////////////////////////////////////////
2346 // Initialise Overlap Removal Tool
2347  if ( m_orToolbox.masterTool.empty() ){
2348 
2349  // set up the master tool
2350  std::string suffix = "";
2351  if (m_orDoTau) suffix += "Tau";
2352  if (m_orDoPhoton) suffix += "Gamma";
2353  if (m_orDoBjet) suffix += "Bjet";
2354  std::string toolName = "ORTool" + suffix;
2355  ATH_MSG_INFO("SUSYTools: Autoconfiguring " << toolName);
2356 
2357  std::string bJetLabel = "";
2358  //overwrite lepton flags if the global is false (yes?)
2359  if (!m_orDoBjet || !m_useBtagging) {
2360  m_orDoElBjet = false;
2361  m_orDoMuBjet = false;
2362  m_orDoTauBjet = false;
2363  }
2365  bJetLabel = "bjet_loose";
2366  }
2367 
2368  // Set the generic flags
2369  ORUtils::ORFlags orFlags(toolName, m_orInputLabel, "passOR");
2370  orFlags.bJetLabel = bJetLabel;
2371  orFlags.boostedLeptons = (m_orDoBoostedElectron || m_orDoBoostedMuon);
2372  orFlags.outputPassValue = true;
2373  orFlags.linkOverlapObjects = m_orLinkOverlapObjects;
2374  if (m_orDoElEl) {
2375  orFlags.doEleEleOR = true;
2376  } else orFlags.doEleEleOR = false;
2377  orFlags.doElectrons = true;
2378  orFlags.doMuons = true;
2379  orFlags.doJets = true;
2380  orFlags.doTaus = m_orDoTau;
2381  orFlags.doPhotons = m_orDoPhoton;
2382  orFlags.doFatJets = m_orDoFatjets;
2383 
2384  //set up all recommended tools
2386 
2387  // We don't currently have a good way to determine here which object
2388  // definitions are disabled, so we currently just configure all overlap
2389  // tools and disable the pointer safety checks
2390  ATH_CHECK( m_orToolbox.setGlobalProperty("OutputLevel", this->msg().level()) );
2391  ATH_CHECK( m_orToolbox.masterTool.setProperty("RequireExpectedPointers", false) );
2392 
2393  // Override boosted OR sliding cone options
2396 
2397  //add custom tau-jet OR tool
2398  if(m_orDoTau){
2399  m_orToolbox.tauJetORT.setTypeAndName("ORUtils::TauJetOverlapTool/" + orFlags.masterName + ".TauJetORT");
2401  }
2402 
2403  // override sliding cone params if sliding dR is on and the user-provided parameter values are non-negative
2404  if (m_orDoBoostedElectron) {
2408  }
2409  if (m_orDoBoostedMuon) {
2413  }
2414 
2415  // and switch off lep-bjet check if not requested
2416  if (!m_orDoElBjet) {
2417  ATH_CHECK(m_orToolbox.eleJetORT.setProperty("BJetLabel", ""));
2418  }
2419  if (!m_orDoMuBjet) {
2420  ATH_CHECK(m_orToolbox.muJetORT.setProperty("BJetLabel", ""));
2421  }
2422 
2423  // propagate the mu-jet ghost-association option which might be set by the user (default is true)
2425 
2426  // propagate mu-jet OR settings if requested
2428  if(m_orApplyRelPt){
2431  }
2433 
2434  // propagate the calo muon setting for EleMuORT
2436 
2437  // Use electron-muon DR matching to remove electrons within DR < 0.01 of Muons.
2438  if (m_orDoElMu){
2439  ATH_CHECK(m_orToolbox.eleMuORT.setProperty("UseDRMatching", m_orDoElMu) );
2440  }
2441 
2442  // propagate the fatjets OR settings
2443  if(m_orDoFatjets){
2446  }
2447 
2448  // Make sure that we deal with prorities correctly
2449  ATH_CHECK(m_orToolbox.eleJetORT.setProperty("EnableUserPriority", true));
2450  ATH_CHECK(m_orToolbox.muJetORT.setProperty("EnableUserPriority", true));
2451  if (m_orDoTau) ATH_CHECK(m_orToolbox.tauJetORT.setProperty("EnableUserPriority", true));
2452  if (m_orDoPhoton) ATH_CHECK(m_orToolbox.phoJetORT.setProperty("EnableUserPriority", true));
2453 
2454  if ( m_orPhotonFavoured ) {
2455  ATH_CHECK(m_orToolbox.phoEleORT.setProperty("SwapContainerPrecedence", true));
2456  ATH_CHECK(m_orToolbox.phoMuORT.setProperty("SwapContainerPrecedence", true));
2457  }
2458 
2459  if (!m_orDoEleJet){
2460  // Disable the electron removal part of e-j overlap removal
2461  ATH_CHECK( m_orToolbox.eleJetORT.setProperty("OuterDR",-1.) );
2462  ATH_CHECK( m_orToolbox.eleJetORT.setProperty("SlidingDRMaxCone",-1.) );
2463  }
2464  if (!m_orDoMuonJet){
2465  // Disable the muon removal part of m-j overlap removal
2466  ATH_CHECK( m_orToolbox.muJetORT.setProperty("OuterDR",-1.) );
2467  ATH_CHECK( m_orToolbox.muJetORT.setProperty("SlidingDRMaxCone",-1.) );
2468  }
2469 
2471 
2472  }
2473  // Done with the OR toolbox setup!
2474 
2475 // /////////////////////////////////////////////////////////////////////////////////////////
2476 // Initialise PMG Tools
2478  m_pmgSHnjetWeighter.setTypeAndName("PMGTools::PMGSherpa22VJetsWeightTool/PMGSHVjetReweighter");
2479  ATH_CHECK( m_pmgSHnjetWeighter.setProperty( "TruthJetContainer", "AntiKt4TruthJets"));
2480  ATH_CHECK( m_pmgSHnjetWeighter.setProperty("OutputLevel", this->msg().level()) );
2483 
2484 
2486  m_pmgSHnjetWeighterWZ.setTypeAndName("PMGTools::PMGSherpa22VJetsWeightTool/PMGSHVjetReweighterWZ");
2487  ATH_CHECK( m_pmgSHnjetWeighterWZ.setProperty( "TruthJetContainer", "AntiKt4TruthWZJets"));
2488  ATH_CHECK( m_pmgSHnjetWeighterWZ.setProperty("OutputLevel", this->msg().level()) );
2491 
2492 
2493  // prevent these initialiation snippets from being run again
2494  m_subtool_init = true;
2495 
2496  ATH_MSG_INFO("Done initialising SUSYTools");
2497 
2498  return StatusCode::SUCCESS;
2499 }

◆ sysInitialize()

StatusCode asg::AsgMetadataTool::sysInitialize ( )
virtualinherited

Function initialising the tool in the correct way in Athena.

This function is used to set up the callbacks from IncidentSvc in Athena at the right time during initialisation, without the user having to do anything special in his/her code.

Reimplemented from AthCommonDataStore< AthCommonMsg< AlgTool > >.

Definition at line 115 of file AsgMetadataTool.cxx.

115  {
116 
117 #ifndef XAOD_STANDALONE
118  if (m_useIncidents) {
119  // Connect to the IncidentSvc:
120  ServiceHandle< IIncidentSvc > incSvc( "IncidentSvc", name() );
121  ATH_CHECK( incSvc.retrieve() );
122 
123  // Set up the right callbacks: don't rethrow exceptions, any failure and we should end
124  incSvc->addListener( this, IncidentType::BeginEvent, 0, false );
125  }
126  // Let the base class do its thing:
127  ATH_CHECK( AlgTool::sysInitialize() );
128 
129 #endif // not XAOD_STANDALONE
130 
131  // Return gracefully:
132  return StatusCode::SUCCESS;
133  }

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ treatAsYear()

int ST::SUSYObjDef_xAOD::treatAsYear ( const int  runNumber = -1) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 3123 of file SUSYObjDef_xAOD.cxx.

3123  {
3124  // Use the run number we are passed if we are passed one, otherwise
3125  // use the run number from the GetRunNumber function
3126  int theRunNumber = runNumber>0?runNumber:GetRunNumber();
3127  if (theRunNumber<290000) return 2015;
3128  else if (theRunNumber<320000) return 2016;
3129  else if (theRunNumber<342000) return 2017;
3130  else if (theRunNumber<400000) return 2018;
3131  else if (theRunNumber<445000) return 2022;
3132  else if (theRunNumber<465000) return 2023;
3133  return 2024;
3134 }

◆ TrigMatch() [1/10]

void ST::SUSYObjDef_xAOD::TrigMatch ( const std::initializer_list< const xAOD::IParticle * > &  v,
const std::initializer_list< std::string > &  items 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 267 of file Trigger.cxx.

267  {
268  for(const auto& p : v) {
269  this->TrigMatch(p, items);
270  }
271 }

◆ TrigMatch() [2/10]

void ST::SUSYObjDef_xAOD::TrigMatch ( const std::initializer_list< const xAOD::IParticle * > &  v,
const std::string &  item 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 305 of file Trigger.cxx.

305  {
306  return this->TrigMatch(v, {item});
307 }

◆ TrigMatch() [3/10]

void ST::SUSYObjDef_xAOD::TrigMatch ( const std::initializer_list< const xAOD::IParticle * > &  v,
const std::vector< std::string > &  items 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 274 of file Trigger.cxx.

274  {
275  for(const auto& p : v) {
276  this->TrigMatch(p, items);
277  }
278 }

◆ TrigMatch() [4/10]

void ST::SUSYObjDef_xAOD::TrigMatch ( const xAOD::IParticle p,
const std::initializer_list< std::string > &  items 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 250 of file Trigger.cxx.

250  {
251  this->TrigMatch(p, items.begin(), items.end());
252 }

◆ TrigMatch() [5/10]

void ST::SUSYObjDef_xAOD::TrigMatch ( const xAOD::IParticle p,
const std::string &  item 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 295 of file Trigger.cxx.

295  {
296  return this->TrigMatch(p, {item});
297 }

◆ TrigMatch() [6/10]

void ST::SUSYObjDef_xAOD::TrigMatch ( const xAOD::IParticle p,
const std::vector< std::string > &  items 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 255 of file Trigger.cxx.

255  {
256  dec_trigmatched(*p) = 0;
257 
258  for(const auto& item: items) {
259  auto result = static_cast<int>(this->IsTrigMatched(p, item));
260  dec_trigmatched(*p) += result;
261  const SG::Decorator<char> dec(item);
262  dec(*p) = result;
263  }
264 }

◆ TrigMatch() [7/10]

void ST::SUSYObjDef_xAOD::TrigMatch ( const xAOD::IParticle p,
std::initializer_list< std::string >::iterator  i1,
std::initializer_list< std::string >::iterator  i2 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 238 of file Trigger.cxx.

238  {
239  dec_trigmatched(*p) = 0;
240 
241  for(const auto *it = i1; it != i2; ++it) {
242  auto result = static_cast<int>(this->IsTrigMatched(p, *it));
243  dec_trigmatched(*p) += result;
244  const SG::Decorator<char> dec(*it);
245  dec(*p) = result;
246  }
247 }

◆ TrigMatch() [8/10]

void ST::SUSYObjDef_xAOD::TrigMatch ( const xAOD::IParticleContainer v,
const std::initializer_list< std::string > &  items 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 288 of file Trigger.cxx.

288  {
289  for(const auto p : *v) {
290  this->TrigMatch(p, items);
291  }
292 }

◆ TrigMatch() [9/10]

void ST::SUSYObjDef_xAOD::TrigMatch ( const xAOD::IParticleContainer v,
const std::string &  item 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 300 of file Trigger.cxx.

300  {
301  return this->TrigMatch(v, {item});
302 }

◆ TrigMatch() [10/10]

void ST::SUSYObjDef_xAOD::TrigMatch ( const xAOD::IParticleContainer v,
const std::vector< std::string > &  items 
)
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 281 of file Trigger.cxx.

281  {
282  for(const auto p : *v) {
283  this->TrigMatch(p, items);
284  }
285 }

◆ TrigSingleLep()

std::string ST::SUSYObjDef_xAOD::TrigSingleLep ( ) const
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 2101 of file SUSYObjDef_xAOD.cxx.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

◆ validConfig()

StatusCode ST::SUSYObjDef_xAOD::validConfig ( bool  strict = false) const
protected

baseline vs signal pt check

WP check

check pt and eta range

Definition at line 1946 of file SUSYObjDef_xAOD.cxx.

1946  {
1947  // Validate configuration (i.e. that signal settings are tighter than baseline, etc)
1948  // :: Throw SC::FAILURE if strict mode is enabled, just a WARNING if not
1949 
1950  // Electrons
1951  if( m_elePt < m_eleBaselinePt ){
1952  ATH_MSG_WARNING("Your electron pt configuration is inconsistent! Signal : " << m_elePt << " < Baseline : " << m_eleBaselinePt);
1953  if(strict) return StatusCode::FAILURE;
1954  }
1955  if( m_eleEta > m_eleBaselineEta ){
1956  ATH_MSG_WARNING("Your electron eta configuration is inconsistent! Signal : " << m_eleEta << " < Baseline : " << m_eleBaselineEta);
1957  if(strict) return StatusCode::FAILURE;
1958  }
1959 
1961  ATH_MSG_WARNING("Your electron ID configuration is inconsistent! Signal : " << m_eleId << " looser than Baseline : " << m_eleIdBaseline);
1962  if(strict) return StatusCode::FAILURE;
1963  }
1965  ATH_MSG_WARNING("Your electron crack removal is inconsistent! Signal : " << m_eleCrackVeto << " while Baseline : " << m_eleBaselineCrackVeto);
1966  if(strict) return StatusCode::FAILURE;
1967  }
1968 
1969  // Muons
1970  if( m_muPt < m_muBaselinePt ){
1971  ATH_MSG_WARNING("Your muon pt configuration is inconsistent! Signal : " << m_muPt << " < Baseline : " << m_muBaselinePt);
1972  if(strict) return StatusCode::FAILURE;
1973  }
1974  if( m_muEta > m_muBaselineEta ){
1975  ATH_MSG_WARNING("Your muon eta configuration is inconsistent! Signal : " << m_muEta << " < Baseline : " << m_muBaselineEta);
1976  if(strict) return StatusCode::FAILURE;
1977  }
1978  if( m_muId > m_muIdBaseline ){
1979  ATH_MSG_WARNING("Your muon ID configuration is inconsistent! Signal : " << m_muId << " < Baseline : " << m_muIdBaseline);
1980  if(strict) return StatusCode::FAILURE;
1981  }
1982 
1983  // Photons
1985  ATH_MSG_WARNING("Your photon pt configuration is inconsistent! Signal : " << m_photonPt << " < Baseline : " << m_photonBaselinePt);
1986  if(strict) return StatusCode::FAILURE;
1987  }
1989  ATH_MSG_WARNING("Your photon eta configuration is inconsistent! Signal : " << m_photonEta << " < Baseline : " << m_photonBaselineEta);
1990  if(strict) return StatusCode::FAILURE;
1991  }
1992  if( m_photonId=="Loose" && m_photonIdBaseline=="Tight" ){
1993  ATH_MSG_WARNING("Your photon ID configuration is inconsistent! Signal : " << m_photonId << " < Baseline : " << m_photonIdBaseline);
1994  if(strict) return StatusCode::FAILURE;
1995  }
1997  ATH_MSG_WARNING("Your photon crack removal is inconsistent! Signal : " << m_photonCrackVeto << " while Baseline : " << m_photonBaselineCrackVeto);
1998  if(strict) return StatusCode::FAILURE;
1999  }
2000 
2001  // Jets
2002  if ( m_jetPt < 20e3 ){
2003  ATH_MSG_WARNING("Your minimum signal jet pt is less than 20 GeV! Jet.Pt : " << m_jetPt << ". This is NOT supported by the jet group!");
2004  }
2005 
2006  //Btagging //OR-wp looser than signal-wp?
2007  if( m_BtagWP.compare(0, m_BtagWP.size()-3, m_orBtagWP, 0, m_BtagWP.size()-3) == 0 ){ //same tagger WP (FixedCutBEff_XX or HybBEff_XX)
2008  if( atoi(m_BtagWP.substr(m_BtagWP.size()-2, m_BtagWP.size()).c_str()) > atoi(m_orBtagWP.substr(m_orBtagWP.size()-2, m_orBtagWP.size()).c_str()) ){
2009  ATH_MSG_WARNING("Your btagging configuration is inconsistent! Signal : " << m_BtagWP << " is looser than OR-Baseline : " << m_orBtagWP);
2010  }
2011  }
2012  if (m_BtagMinPt < 20e3 || m_BtagMinPt_trkJet < 10e3) {
2013  ATH_MSG_WARNING("You btagging MinPt settings are inconsistent! EM(Topo|PFlow)Jets: not calibrated below 20 GeV (Btag.MinPt: " << m_BtagMinPt/1000. << " GeV set), VRTrackJets: not calibrated below 10 GeV (BtagTrkJet.MinPt: " << m_BtagMinPt_trkJet/1000. << " GeV set).");
2014  }
2015 
2016  //Taus
2018  if(m_tauPrePtCut > 0 and m_tauPrePtCut > m_tauPt) {
2019  ATH_MSG_WARNING("Your tau pt configuration is inconsistent! Signal pt cut : " << m_tauPt << " < Baseline (pre) pt cut : " << m_tauPrePtCut);
2020  if(strict) return StatusCode::FAILURE;
2021  }
2024  ATH_MSG_WARNING("Your tau ID configuration is inconsistent! Signal : " << m_tauId << " looser than Baseline : " << m_tauIdBaseline);
2025  if(strict) return StatusCode::FAILURE;
2026  }
2027 
2029  std::vector<float> pT_window;
2030  std::vector<float> eta_window;
2031  bool elOLR=false;
2032  bool muVeto=false;
2033  bool muOLR=false;
2034 
2035  if(!m_tauConfigPathBaseline.empty()) { //baseline taus
2036 
2037  std::string theConfig = m_tauConfigPathBaseline;
2038  if( m_tauConfigPathBaseline=="default" ){
2039  if (m_tauId == "rnn001") theConfig = "SUSYTools/tau_selection_rnn001.conf";
2040  else if (m_tauId == "VeryLoose") theConfig = "SUSYTools/tau_selection_veryloose.conf";
2041  else if (m_tauId == "Loose") theConfig = "SUSYTools/tau_selection_loose.conf";
2042  else if (m_tauId == "Medium") theConfig = "SUSYTools/tau_selection_medium.conf";
2043  else if (m_tauId == "Tight") theConfig = "SUSYTools/tau_selection_tight.conf";
2044  }
2045 
2046  //read config
2047  getTauConfig(theConfig, pT_window, eta_window, elOLR, muVeto, muOLR);
2048 
2049  //pt-eta checks
2050  if( m_tauPrePtCut > 0 and (m_tauPrePtCut != 1000*pT_window[0] or (pT_window[1] > 0 and m_tauPrePtCut > 1000*pT_window[1]))) {
2051  ATH_MSG_WARNING("Your baseline tau pt configuration is inconsistent! pre pT cut : " << m_tauPrePtCut << " / TauSelectionTool window (in MeV) : [" << 1000*pT_window[0] << ", " << 1000*pT_window[1] << "]");
2052  if(strict) return StatusCode::FAILURE;
2053  }
2054 
2055  if( m_tauPt > 0 and (m_tauPt != 1000*pT_window[0] or (pT_window[1] > 0 and m_tauPt > 1000*pT_window[1]))) {
2056  ATH_MSG_WARNING("Your baseline tau pt configuration is inconsistent! pT cut : " << m_tauPt << " / TauSelectionTool window (in Mev) : [" << 1000*pT_window[0] << ", " << 1000*pT_window[1] << "]");
2057  if(strict) return StatusCode::FAILURE;
2058  }
2059 
2060  if( m_tauEta > 0 and m_tauEta != eta_window[eta_window.size()-1]) { // eta window can have 4 entries
2061  ATH_MSG_WARNING("Your baseline tau eta configuration is inconsistent! eta cut : " << m_tauEta << " != TauSelectionTool max eta : " << eta_window[eta_window.size()-1]);
2062  if(strict) return StatusCode::FAILURE;
2063  }
2064  }
2065 
2066  if(!m_tauConfigPath.empty()) { //signal taus
2067 
2068  std::string theConfig = m_tauConfigPath;
2069  if( m_tauConfigPath=="default" ){
2070  if (m_tauId == "rnn001") theConfig = "SUSYTools/tau_selection_rnn001.conf";
2071  else if (m_tauId == "VeryLoose") theConfig = "SUSYTools/tau_selection_veryloose.conf";
2072  else if (m_tauId == "Loose") theConfig = "SUSYTools/tau_selection_loose.conf";
2073  else if (m_tauId == "Medium") theConfig = "SUSYTools/tau_selection_medium.conf";
2074  else if (m_tauId == "Tight") theConfig = "SUSYTools/tau_selection_tight.conf";
2075  }
2076 
2077  getTauConfig(theConfig, pT_window, eta_window, elOLR, muVeto, muOLR);
2078 
2079  if( m_tauPrePtCut > 0 and (m_tauPrePtCut != 1000*pT_window[0] or (pT_window[1] > 0 and m_tauPrePtCut > 1000*pT_window[1]))) {
2080  ATH_MSG_WARNING("Your tau pt configuration is inconsistent! pre pT cut : " << m_tauPrePtCut << " / TauSelectionTool window (in MeV) : [" << 1000*pT_window[0] << ", " << 1000*pT_window[1] << "]");
2081  if(strict) return StatusCode::FAILURE;
2082  }
2083 
2084  if( m_tauPt > 0 and (m_tauPt != 1000*pT_window[0] or (pT_window[1] > 0 and m_tauPt > 1000*pT_window[1]))) {
2085  ATH_MSG_WARNING("Your tau pt configuration is inconsistent! pT cut : " << m_tauPt << " / TauSelectionTool window (in Mev) : [" << 1000*pT_window[0] << ", " << 1000*pT_window[1] << "]");
2086  if(strict) return StatusCode::FAILURE;
2087  }
2088 
2089  if( m_tauEta > 0 and m_tauEta != eta_window[eta_window.size()-1]) { // eta window can have 4 entries
2090  ATH_MSG_WARNING("Your tau eta configuration is inconsistent! eta cut : " << m_tauEta << " != TauSelectionTool max eta : " << eta_window[eta_window.size()-1]);
2091  if(strict) return StatusCode::FAILURE;
2092  }
2093  }
2094 
2095 
2096  return StatusCode::SUCCESS;
2097 }

Member Data Documentation

◆ ATLAS_THREAD_SAFE [1/2]

std::map<std::string, std::function<bool()> > m_metTriggerFuncs ST::SUSYObjDef_xAOD::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 443 of file SUSYObjDef_xAOD.h.

◆ ATLAS_THREAD_SAFE [2/2]

std::map<std::string, bool> m_checkedTriggers ST::SUSYObjDef_xAOD::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 445 of file SUSYObjDef_xAOD.h.

◆ lrt_electrons

const xAOD::ElectronContainer* ST::SUSYObjDef_xAOD::lrt_electrons = nullptr

Definition at line 212 of file SUSYObjDef_xAOD.h.

◆ lrt_muons

const xAOD::MuonContainer* ST::SUSYObjDef_xAOD::lrt_muons = nullptr

Definition at line 206 of file SUSYObjDef_xAOD.h.

◆ m_acc_eleId

SG::ConstAccessor<char> ST::SUSYObjDef_xAOD::m_acc_eleId
protected

Definition at line 999 of file SUSYObjDef_xAOD.h.

◆ m_acc_eleIdBaseline

SG::ConstAccessor<char> ST::SUSYObjDef_xAOD::m_acc_eleIdBaseline
protected

Definition at line 998 of file SUSYObjDef_xAOD.h.

◆ m_acc_jetClean

SG::ConstAccessor<char> ST::SUSYObjDef_xAOD::m_acc_jetClean
protected

Definition at line 1002 of file SUSYObjDef_xAOD.h.

◆ m_acc_photonId

SG::ConstAccessor<char> ST::SUSYObjDef_xAOD::m_acc_photonId
protected

Definition at line 1001 of file SUSYObjDef_xAOD.h.

◆ m_acc_photonIdBaseline

SG::ConstAccessor<char> ST::SUSYObjDef_xAOD::m_acc_photonIdBaseline
protected

Definition at line 1000 of file SUSYObjDef_xAOD.h.

◆ m_applyJVTCut

bool ST::SUSYObjDef_xAOD::m_applyJVTCut
protected

Definition at line 825 of file SUSYObjDef_xAOD.h.

◆ m_ApplyMVATESQualityCheck

bool ST::SUSYObjDef_xAOD::m_ApplyMVATESQualityCheck
protected

Definition at line 738 of file SUSYObjDef_xAOD.h.

◆ m_autoconfigPRW

bool ST::SUSYObjDef_xAOD::m_autoconfigPRW
protected

Definition at line 596 of file SUSYObjDef_xAOD.h.

◆ m_autoconfigPRWCombinedmode

bool ST::SUSYObjDef_xAOD::m_autoconfigPRWCombinedmode
protected

Definition at line 599 of file SUSYObjDef_xAOD.h.

◆ m_autoconfigPRWFile

std::string ST::SUSYObjDef_xAOD::m_autoconfigPRWFile
protected

Definition at line 598 of file SUSYObjDef_xAOD.h.

◆ m_autoconfigPRWPath

std::string ST::SUSYObjDef_xAOD::m_autoconfigPRWPath
protected

Definition at line 597 of file SUSYObjDef_xAOD.h.

◆ m_autoconfigPRWRPVmode

bool ST::SUSYObjDef_xAOD::m_autoconfigPRWRPVmode
protected

Definition at line 600 of file SUSYObjDef_xAOD.h.

◆ m_autoconfigPRWRtags

std::string ST::SUSYObjDef_xAOD::m_autoconfigPRWRtags
protected

Definition at line 601 of file SUSYObjDef_xAOD.h.

◆ m_badJetCut

std::string ST::SUSYObjDef_xAOD::m_badJetCut
protected

Definition at line 544 of file SUSYObjDef_xAOD.h.

◆ m_badmuQoverP

double ST::SUSYObjDef_xAOD::m_badmuQoverP
protected

Definition at line 717 of file SUSYObjDef_xAOD.h.

◆ m_beginInputFileCalled

bool asg::AsgMetadataTool::m_beginInputFileCalled
privateinherited

Flag helping to discover when the tool misses the opening of the first input file.

Definition at line 126 of file AsgMetadataTool.h.

◆ m_bool_prop_set

std::set<std::string> ST::SUSYObjDef_xAOD::m_bool_prop_set
private

Definition at line 439 of file SUSYObjDef_xAOD.h.

◆ m_btagEffTool

asg::AnaToolHandle<IBTaggingEfficiencyTool> ST::SUSYObjDef_xAOD::m_btagEffTool
protected

Definition at line 927 of file SUSYObjDef_xAOD.h.

◆ m_btagEffTool_trkJet

asg::AnaToolHandle<IBTaggingEfficiencyTool> ST::SUSYObjDef_xAOD::m_btagEffTool_trkJet
protected

Definition at line 930 of file SUSYObjDef_xAOD.h.

◆ m_bTaggingCalibrationFilePath

std::string ST::SUSYObjDef_xAOD::m_bTaggingCalibrationFilePath
protected

Definition at line 827 of file SUSYObjDef_xAOD.h.

◆ m_BtagKeyOverride

std::string ST::SUSYObjDef_xAOD::m_BtagKeyOverride
protected

Definition at line 680 of file SUSYObjDef_xAOD.h.

◆ m_BtagMinPt

double ST::SUSYObjDef_xAOD::m_BtagMinPt
protected

Definition at line 679 of file SUSYObjDef_xAOD.h.

◆ m_BtagMinPt_trkJet

double ST::SUSYObjDef_xAOD::m_BtagMinPt_trkJet
protected

Definition at line 687 of file SUSYObjDef_xAOD.h.

◆ m_btagSelTool

asg::AnaToolHandle<IBTaggingSelectionTool> ST::SUSYObjDef_xAOD::m_btagSelTool
protected

Definition at line 928 of file SUSYObjDef_xAOD.h.

◆ m_btagSelTool_OR

asg::AnaToolHandle<IBTaggingSelectionTool> ST::SUSYObjDef_xAOD::m_btagSelTool_OR
protected

Definition at line 929 of file SUSYObjDef_xAOD.h.

◆ m_btagSelTool_trkJet

asg::AnaToolHandle<IBTaggingSelectionTool> ST::SUSYObjDef_xAOD::m_btagSelTool_trkJet
protected

Definition at line 931 of file SUSYObjDef_xAOD.h.

◆ m_BtagSystStrategy

std::string ST::SUSYObjDef_xAOD::m_BtagSystStrategy
protected

Definition at line 681 of file SUSYObjDef_xAOD.h.

◆ m_BtagTagger

std::string ST::SUSYObjDef_xAOD::m_BtagTagger
protected

Definition at line 678 of file SUSYObjDef_xAOD.h.

◆ m_BtagTagger_trkJet

std::string ST::SUSYObjDef_xAOD::m_BtagTagger_trkJet
protected

Definition at line 686 of file SUSYObjDef_xAOD.h.

◆ m_BtagWP

std::string ST::SUSYObjDef_xAOD::m_BtagWP
protected

Definition at line 677 of file SUSYObjDef_xAOD.h.

◆ m_BtagWP_trkJet

std::string ST::SUSYObjDef_xAOD::m_BtagWP_trkJet
protected

Definition at line 685 of file SUSYObjDef_xAOD.h.

◆ m_caloMETsyst

bool ST::SUSYObjDef_xAOD::m_caloMETsyst
protected

Definition at line 589 of file SUSYObjDef_xAOD.h.

◆ m_commonPRWFileMC20a

std::string ST::SUSYObjDef_xAOD::m_commonPRWFileMC20a
protected

Definition at line 606 of file SUSYObjDef_xAOD.h.

◆ m_commonPRWFileMC20d

std::string ST::SUSYObjDef_xAOD::m_commonPRWFileMC20d
protected

Definition at line 607 of file SUSYObjDef_xAOD.h.

◆ m_commonPRWFileMC20e

std::string ST::SUSYObjDef_xAOD::m_commonPRWFileMC20e
protected

Definition at line 608 of file SUSYObjDef_xAOD.h.

◆ m_commonPRWFileMC21a

std::string ST::SUSYObjDef_xAOD::m_commonPRWFileMC21a
protected

Definition at line 609 of file SUSYObjDef_xAOD.h.

◆ m_commonPRWFileMC23a

std::string ST::SUSYObjDef_xAOD::m_commonPRWFileMC23a
protected

Definition at line 610 of file SUSYObjDef_xAOD.h.

◆ m_commonPRWFileMC23c

std::string ST::SUSYObjDef_xAOD::m_commonPRWFileMC23c
protected

Definition at line 611 of file SUSYObjDef_xAOD.h.

◆ m_commonPRWFileMC23d

std::string ST::SUSYObjDef_xAOD::m_commonPRWFileMC23d
protected

Definition at line 612 of file SUSYObjDef_xAOD.h.

◆ m_commonPRWFileMC23e

std::string ST::SUSYObjDef_xAOD::m_commonPRWFileMC23e
protected

Definition at line 613 of file SUSYObjDef_xAOD.h.

◆ m_conf_to_prop

std::map<std::string, std::string> ST::SUSYObjDef_xAOD::m_conf_to_prop
private

Definition at line 436 of file SUSYObjDef_xAOD.h.

◆ m_configFile

std::string ST::SUSYObjDef_xAOD::m_configFile
protected

Definition at line 522 of file SUSYObjDef_xAOD.h.

◆ m_currentSyst

CP::SystematicSet ST::SUSYObjDef_xAOD::m_currentSyst
protected

Definition at line 820 of file SUSYObjDef_xAOD.h.

◆ m_dataSource

int ST::SUSYObjDef_xAOD::m_dataSource
protected

Definition at line 519 of file SUSYObjDef_xAOD.h.

◆ m_deadHVTool

asg::AnaToolHandle<IAsgDeadHVCellRemovalTool> ST::SUSYObjDef_xAOD::m_deadHVTool
protected

Definition at line 906 of file SUSYObjDef_xAOD.h.

◆ m_debug

bool ST::SUSYObjDef_xAOD::m_debug
protected

Definition at line 540 of file SUSYObjDef_xAOD.h.

◆ m_defaultJets

std::string ST::SUSYObjDef_xAOD::m_defaultJets
protected

Definition at line 814 of file SUSYObjDef_xAOD.h.

◆ m_defaultSyst

CP::SystematicSet ST::SUSYObjDef_xAOD::m_defaultSyst = CP::SystematicSet()
protected

Definition at line 819 of file SUSYObjDef_xAOD.h.

◆ m_defaultTrackJets

std::string ST::SUSYObjDef_xAOD::m_defaultTrackJets
protected

Definition at line 815 of file SUSYObjDef_xAOD.h.

◆ m_defaultTruthJets

std::string ST::SUSYObjDef_xAOD::m_defaultTruthJets
protected

Definition at line 817 of file SUSYObjDef_xAOD.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_doElIsoSignal

bool ST::SUSYObjDef_xAOD::m_doElIsoSignal
protected

Definition at line 797 of file SUSYObjDef_xAOD.h.

◆ m_doFwdJVT

bool ST::SUSYObjDef_xAOD::m_doFwdJVT
protected

Definition at line 752 of file SUSYObjDef_xAOD.h.

◆ m_doIsoSignal

bool ST::SUSYObjDef_xAOD::m_doIsoSignal
protected

Definition at line 796 of file SUSYObjDef_xAOD.h.

◆ m_doModifiedEleId

bool ST::SUSYObjDef_xAOD::m_doModifiedEleId
protected

Definition at line 527 of file SUSYObjDef_xAOD.h.

◆ m_doMuIsoSignal

bool ST::SUSYObjDef_xAOD::m_doMuIsoSignal
protected

Definition at line 799 of file SUSYObjDef_xAOD.h.

◆ m_doPhiReso

bool ST::SUSYObjDef_xAOD::m_doPhiReso
protected

Definition at line 594 of file SUSYObjDef_xAOD.h.

◆ m_doPhIsoSignal

bool ST::SUSYObjDef_xAOD::m_doPhIsoSignal
protected

Definition at line 798 of file SUSYObjDef_xAOD.h.

◆ m_doTTVAsf

bool ST::SUSYObjDef_xAOD::m_doTTVAsf
protected

Definition at line 526 of file SUSYObjDef_xAOD.h.

◆ m_EG_corrFNList

std::string ST::SUSYObjDef_xAOD::m_EG_corrFNList
protected

Definition at line 824 of file SUSYObjDef_xAOD.h.

◆ m_EG_corrModel

std::string ST::SUSYObjDef_xAOD::m_EG_corrModel
protected

Definition at line 823 of file SUSYObjDef_xAOD.h.

◆ m_egammaAmbiguityTool

asg::AnaToolHandle<IEGammaAmbiguityTool> ST::SUSYObjDef_xAOD::m_egammaAmbiguityTool
protected

Definition at line 916 of file SUSYObjDef_xAOD.h.

◆ m_egammaCalibTool

asg::AnaToolHandle<CP::IEgammaCalibrationAndSmearingTool> ST::SUSYObjDef_xAOD::m_egammaCalibTool
protected

Combined electron collection.


Definition at line 901 of file SUSYObjDef_xAOD.h.

◆ m_EigenvectorReductionB

std::string ST::SUSYObjDef_xAOD::m_EigenvectorReductionB
protected

Definition at line 682 of file SUSYObjDef_xAOD.h.

◆ m_EigenvectorReductionC

std::string ST::SUSYObjDef_xAOD::m_EigenvectorReductionC
protected

Definition at line 683 of file SUSYObjDef_xAOD.h.

◆ m_EigenvectorReductionLight

std::string ST::SUSYObjDef_xAOD::m_EigenvectorReductionLight
protected

Definition at line 684 of file SUSYObjDef_xAOD.h.

◆ m_el_id_support

std::vector<std::string> ST::SUSYObjDef_xAOD::m_el_id_support
protected

Definition at line 629 of file SUSYObjDef_xAOD.h.

◆ m_el_iso_fallback

std::map<std::string, std::string> ST::SUSYObjDef_xAOD::m_el_iso_fallback
protected

Definition at line 637 of file SUSYObjDef_xAOD.h.

◆ m_el_iso_support

std::vector<std::string> ST::SUSYObjDef_xAOD::m_el_iso_support
protected

Definition at line 633 of file SUSYObjDef_xAOD.h.

◆ m_eleAllowRun3TrigSFFallback

bool ST::SUSYObjDef_xAOD::m_eleAllowRun3TrigSFFallback
protected

Definition at line 702 of file SUSYObjDef_xAOD.h.

◆ m_eleBaselineCrackVeto

bool ST::SUSYObjDef_xAOD::m_eleBaselineCrackVeto
protected

Definition at line 692 of file SUSYObjDef_xAOD.h.

◆ m_elebaselined0sig

double ST::SUSYObjDef_xAOD::m_elebaselined0sig
protected

Definition at line 698 of file SUSYObjDef_xAOD.h.

◆ m_eleBaselineEta

double ST::SUSYObjDef_xAOD::m_eleBaselineEta
protected

Definition at line 691 of file SUSYObjDef_xAOD.h.

◆ m_eleBaselineIso_WP

std::string ST::SUSYObjDef_xAOD::m_eleBaselineIso_WP
protected

Definition at line 649 of file SUSYObjDef_xAOD.h.

◆ m_eleBaselinePt

double ST::SUSYObjDef_xAOD::m_eleBaselinePt
protected

Definition at line 690 of file SUSYObjDef_xAOD.h.

◆ m_elebaselinez0

double ST::SUSYObjDef_xAOD::m_elebaselinez0
protected

Definition at line 699 of file SUSYObjDef_xAOD.h.

◆ m_elecChargeEffCorrTool

asg::AnaToolHandle<IAsgElectronEfficiencyCorrectionTool> ST::SUSYObjDef_xAOD::m_elecChargeEffCorrTool
protected

Definition at line 918 of file SUSYObjDef_xAOD.h.

◆ m_elecChargeIDSelectorTool

asg::AnaToolHandle<IAsgElectronLikelihoodTool> ST::SUSYObjDef_xAOD::m_elecChargeIDSelectorTool
protected

Definition at line 917 of file SUSYObjDef_xAOD.h.

◆ m_elecEfficiencySFTool_chf

asg::AnaToolHandle<IAsgElectronEfficiencyCorrectionTool> ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_chf
protected

Definition at line 891 of file SUSYObjDef_xAOD.h.

◆ m_elecEfficiencySFTool_id

asg::AnaToolHandle<IAsgElectronEfficiencyCorrectionTool> ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_id
protected

Definition at line 886 of file SUSYObjDef_xAOD.h.

◆ m_elecEfficiencySFTool_iso

asg::AnaToolHandle<IAsgElectronEfficiencyCorrectionTool> ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_iso
protected

Definition at line 889 of file SUSYObjDef_xAOD.h.

◆ m_elecEfficiencySFTool_isoHighPt

asg::AnaToolHandle<IAsgElectronEfficiencyCorrectionTool> ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_isoHighPt
protected

Definition at line 890 of file SUSYObjDef_xAOD.h.

◆ m_elecEfficiencySFTool_reco

asg::AnaToolHandle<IAsgElectronEfficiencyCorrectionTool> ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_reco
protected

Combined muon collection.


Definition at line 885 of file SUSYObjDef_xAOD.h.

◆ m_elecEfficiencySFTool_trig_mixLep

std::vector<asg::AnaToolHandle<IAsgElectronEfficiencyCorrectionTool> > ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_trig_mixLep
protected

Definition at line 893 of file SUSYObjDef_xAOD.h.

◆ m_elecEfficiencySFTool_trig_singleLep

asg::AnaToolHandle<IAsgElectronEfficiencyCorrectionTool> ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_trig_singleLep
protected

Definition at line 887 of file SUSYObjDef_xAOD.h.

◆ m_elecEfficiencySFTool_trigEff_mixLep

std::vector<asg::AnaToolHandle<IAsgElectronEfficiencyCorrectionTool> > ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_trigEff_mixLep
protected

Definition at line 894 of file SUSYObjDef_xAOD.h.

◆ m_elecEfficiencySFTool_trigEff_singleLep

asg::AnaToolHandle<IAsgElectronEfficiencyCorrectionTool> ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_trigEff_singleLep
protected

Definition at line 888 of file SUSYObjDef_xAOD.h.

◆ m_eleChID_signal

bool ST::SUSYObjDef_xAOD::m_eleChID_signal
protected

Definition at line 664 of file SUSYObjDef_xAOD.h.

◆ m_eleChID_WP

std::string ST::SUSYObjDef_xAOD::m_eleChID_WP
protected

Definition at line 660 of file SUSYObjDef_xAOD.h.

◆ m_eleChIso

bool ST::SUSYObjDef_xAOD::m_eleChIso
protected

Definition at line 663 of file SUSYObjDef_xAOD.h.

◆ m_elecLRTORTool

asg::AnaToolHandle<CP::IElectronLRTOverlapRemovalTool> ST::SUSYObjDef_xAOD::m_elecLRTORTool
protected

Definition at line 897 of file SUSYObjDef_xAOD.h.

◆ m_eleConfig

std::string ST::SUSYObjDef_xAOD::m_eleConfig
protected

Definition at line 647 of file SUSYObjDef_xAOD.h.

◆ m_eleConfigBaseline

std::string ST::SUSYObjDef_xAOD::m_eleConfigBaseline
protected

Definition at line 648 of file SUSYObjDef_xAOD.h.

◆ m_eleCrackVeto

bool ST::SUSYObjDef_xAOD::m_eleCrackVeto
protected

Definition at line 695 of file SUSYObjDef_xAOD.h.

◆ m_elecSelLikelihood

asg::AnaToolHandle<IAsgElectronLikelihoodTool> ST::SUSYObjDef_xAOD::m_elecSelLikelihood
protected

Definition at line 902 of file SUSYObjDef_xAOD.h.

◆ m_elecSelLikelihoodBaseline

asg::AnaToolHandle<IAsgElectronLikelihoodTool> ST::SUSYObjDef_xAOD::m_elecSelLikelihoodBaseline
protected

Definition at line 903 of file SUSYObjDef_xAOD.h.

◆ m_elecTrigEffTools

ToolHandleArray<IAsgElectronEfficiencyCorrectionTool> ST::SUSYObjDef_xAOD::m_elecTrigEffTools
protected

Definition at line 896 of file SUSYObjDef_xAOD.h.

◆ m_elecTrigSFTools

ToolHandleArray<IAsgElectronEfficiencyCorrectionTool> ST::SUSYObjDef_xAOD::m_elecTrigSFTools
protected

Definition at line 895 of file SUSYObjDef_xAOD.h.

◆ m_electronTriggerSFStringSingle

std::string ST::SUSYObjDef_xAOD::m_electronTriggerSFStringSingle
protected

Definition at line 641 of file SUSYObjDef_xAOD.h.

◆ m_eled0sig

double ST::SUSYObjDef_xAOD::m_eled0sig
protected

Definition at line 696 of file SUSYObjDef_xAOD.h.

◆ m_eleEffMapFilePath

std::string ST::SUSYObjDef_xAOD::m_eleEffMapFilePath
protected

Definition at line 700 of file SUSYObjDef_xAOD.h.

◆ m_eleEffMapFilePathRun2

std::string ST::SUSYObjDef_xAOD::m_eleEffMapFilePathRun2
protected

Definition at line 701 of file SUSYObjDef_xAOD.h.

◆ m_eleEta

double ST::SUSYObjDef_xAOD::m_eleEta
protected

Definition at line 694 of file SUSYObjDef_xAOD.h.

◆ m_EleFatJetDR

double ST::SUSYObjDef_xAOD::m_EleFatJetDR
protected

Definition at line 793 of file SUSYObjDef_xAOD.h.

◆ m_eleForceFullSimCalib

bool ST::SUSYObjDef_xAOD::m_eleForceFullSimCalib
protected

Definition at line 703 of file SUSYObjDef_xAOD.h.

◆ m_eleId

std::string ST::SUSYObjDef_xAOD::m_eleId
protected

Definition at line 645 of file SUSYObjDef_xAOD.h.

◆ m_eleIdBaseline

std::string ST::SUSYObjDef_xAOD::m_eleIdBaseline
protected

Definition at line 646 of file SUSYObjDef_xAOD.h.

◆ m_eleIdBaselineDFName

std::string ST::SUSYObjDef_xAOD::m_eleIdBaselineDFName
protected

Definition at line 992 of file SUSYObjDef_xAOD.h.

◆ m_eleIdDFName

std::string ST::SUSYObjDef_xAOD::m_eleIdDFName
protected

Definition at line 993 of file SUSYObjDef_xAOD.h.

◆ m_eleIdExpert

bool ST::SUSYObjDef_xAOD::m_eleIdExpert
protected

Definition at line 650 of file SUSYObjDef_xAOD.h.

◆ m_eleIso_WP

std::string ST::SUSYObjDef_xAOD::m_eleIso_WP
protected

Definition at line 657 of file SUSYObjDef_xAOD.h.

◆ m_eleIsoHighPt_WP

std::string ST::SUSYObjDef_xAOD::m_eleIsoHighPt_WP
protected

Definition at line 658 of file SUSYObjDef_xAOD.h.

◆ m_eleIsoHighPtThresh

double ST::SUSYObjDef_xAOD::m_eleIsoHighPtThresh
protected

Definition at line 659 of file SUSYObjDef_xAOD.h.

◆ m_eleLRT

bool ST::SUSYObjDef_xAOD::m_eleLRT
protected

Definition at line 661 of file SUSYObjDef_xAOD.h.

◆ m_eleLRT_strat

int ST::SUSYObjDef_xAOD::m_eleLRT_strat
protected

Definition at line 662 of file SUSYObjDef_xAOD.h.

◆ m_elePt

double ST::SUSYObjDef_xAOD::m_elePt
protected

Definition at line 693 of file SUSYObjDef_xAOD.h.

◆ m_eleTerm

std::string ST::SUSYObjDef_xAOD::m_eleTerm
protected

Definition at line 569 of file SUSYObjDef_xAOD.h.

◆ m_elez0

double ST::SUSYObjDef_xAOD::m_elez0
protected

Definition at line 697 of file SUSYObjDef_xAOD.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_fatjetFFSmearingSyst

std::vector<CP::SystematicSet> ST::SUSYObjDef_xAOD::m_fatjetFFSmearingSyst
protected

Definition at line 821 of file SUSYObjDef_xAOD.h.

◆ m_fatjetFFSmearingTool

asg::AnaToolHandle<ICPJetCorrectionTool> ST::SUSYObjDef_xAOD::m_fatjetFFSmearingTool
protected

Definition at line 838 of file SUSYObjDef_xAOD.h.

◆ m_fatJets

std::string ST::SUSYObjDef_xAOD::m_fatJets
protected

Definition at line 816 of file SUSYObjDef_xAOD.h.

◆ m_fatJetUncConfig

std::string ST::SUSYObjDef_xAOD::m_fatJetUncConfig
protected

Definition at line 546 of file SUSYObjDef_xAOD.h.

◆ m_fatJetUncertaintiesMCType

std::string ST::SUSYObjDef_xAOD::m_fatJetUncertaintiesMCType
protected

Definition at line 535 of file SUSYObjDef_xAOD.h.

◆ m_fatJetUncertaintiesPDsmearing

bool ST::SUSYObjDef_xAOD::m_fatJetUncertaintiesPDsmearing
protected

Definition at line 547 of file SUSYObjDef_xAOD.h.

◆ m_fatjetUncertaintiesPDSmearTool

asg::AnaToolHandle<ICPJetUncertaintiesTool> ST::SUSYObjDef_xAOD::m_fatjetUncertaintiesPDSmearTool
protected

Definition at line 837 of file SUSYObjDef_xAOD.h.

◆ m_fatjetUncertaintiesTool

asg::AnaToolHandle<ICPJetUncertaintiesTool> ST::SUSYObjDef_xAOD::m_fatjetUncertaintiesTool
protected

Definition at line 836 of file SUSYObjDef_xAOD.h.

◆ m_fatJetUncVars

std::string ST::SUSYObjDef_xAOD::m_fatJetUncVars
protected

Definition at line 548 of file SUSYObjDef_xAOD.h.

◆ m_fJvtConfigRun2

std::string ST::SUSYObjDef_xAOD::m_fJvtConfigRun2
protected

Definition at line 756 of file SUSYObjDef_xAOD.h.

◆ m_fJvtConfigRun3

std::string ST::SUSYObjDef_xAOD::m_fJvtConfigRun3
protected

Definition at line 757 of file SUSYObjDef_xAOD.h.

◆ m_fJvtEtaMin

double ST::SUSYObjDef_xAOD::m_fJvtEtaMin
protected

Definition at line 755 of file SUSYObjDef_xAOD.h.

◆ m_fJvtPtMax

double ST::SUSYObjDef_xAOD::m_fJvtPtMax
protected

Definition at line 754 of file SUSYObjDef_xAOD.h.

◆ m_fJvtWP

std::string ST::SUSYObjDef_xAOD::m_fJvtWP
protected

Definition at line 753 of file SUSYObjDef_xAOD.h.

◆ m_force_noElId

bool ST::SUSYObjDef_xAOD::m_force_noElId
protected

Definition at line 524 of file SUSYObjDef_xAOD.h.

◆ m_force_noMuId

bool ST::SUSYObjDef_xAOD::m_force_noMuId
protected

Definition at line 525 of file SUSYObjDef_xAOD.h.

◆ m_gammaTerm

std::string ST::SUSYObjDef_xAOD::m_gammaTerm
protected

Definition at line 570 of file SUSYObjDef_xAOD.h.

◆ m_GSFLRTCollectionName

SG::ReadHandleKey<xAOD::TrackParticleContainer> ST::SUSYObjDef_xAOD::m_GSFLRTCollectionName {this, "GSFLRTCollectionName", "LRTGSFTrackParticles", "GSF LRT collection name"}
private

Definition at line 482 of file SUSYObjDef_xAOD.h.

◆ m_inputMetaStore

MetaStore_t asg::AsgMetadataTool::m_inputMetaStore
privateinherited

Object accessing the input metadata store.

Definition at line 119 of file AsgMetadataTool.h.

◆ m_inputMETCore

std::string ST::SUSYObjDef_xAOD::m_inputMETCore
protected

Definition at line 576 of file SUSYObjDef_xAOD.h.

◆ m_inputMETMap

std::string ST::SUSYObjDef_xAOD::m_inputMETMap
protected

Definition at line 575 of file SUSYObjDef_xAOD.h.

◆ m_inputMETRef

std::string ST::SUSYObjDef_xAOD::m_inputMETRef
protected

Definition at line 577 of file SUSYObjDef_xAOD.h.

◆ m_inputMETSuffix

std::string ST::SUSYObjDef_xAOD::m_inputMETSuffix
protected

Definition at line 574 of file SUSYObjDef_xAOD.h.

◆ m_isoBaselineTool

asg::AnaToolHandle<CP::IIsolationSelectionTool> ST::SUSYObjDef_xAOD::m_isoBaselineTool
protected

Definition at line 978 of file SUSYObjDef_xAOD.h.

◆ m_IsoCloseByORpassLabel

std::string ST::SUSYObjDef_xAOD::m_IsoCloseByORpassLabel
protected

Definition at line 802 of file SUSYObjDef_xAOD.h.

◆ m_isoCloseByTool

asg::AnaToolHandle<CP::IIsolationCloseByCorrectionTool> ST::SUSYObjDef_xAOD::m_isoCloseByTool
protected

Definition at line 980 of file SUSYObjDef_xAOD.h.

◆ m_isoCorrTool

asg::AnaToolHandle<CP::IIsolationCorrectionTool> ST::SUSYObjDef_xAOD::m_isoCorrTool
protected

Definition at line 975 of file SUSYObjDef_xAOD.h.

◆ m_isoHighPtTool

asg::AnaToolHandle<CP::IIsolationSelectionTool> ST::SUSYObjDef_xAOD::m_isoHighPtTool
protected

Definition at line 979 of file SUSYObjDef_xAOD.h.

◆ m_isoTool

asg::AnaToolHandle<CP::IIsolationSelectionTool> ST::SUSYObjDef_xAOD::m_isoTool
protected

Definition at line 976 of file SUSYObjDef_xAOD.h.

◆ m_isPHYSLITE

bool ST::SUSYObjDef_xAOD::m_isPHYSLITE
protected

Definition at line 808 of file SUSYObjDef_xAOD.h.

◆ m_isRun3

bool ST::SUSYObjDef_xAOD::m_isRun3
protected

Definition at line 807 of file SUSYObjDef_xAOD.h.

◆ m_jesCalibArea

std::string ST::SUSYObjDef_xAOD::m_jesCalibArea
protected

Definition at line 869 of file SUSYObjDef_xAOD.h.

◆ m_jesCalibSeq

std::string ST::SUSYObjDef_xAOD::m_jesCalibSeq
protected

Definition at line 866 of file SUSYObjDef_xAOD.h.

◆ m_jesCalibSeqFat

std::string ST::SUSYObjDef_xAOD::m_jesCalibSeqFat
protected

Definition at line 868 of file SUSYObjDef_xAOD.h.

◆ m_jesCalibSeqJMS

std::string ST::SUSYObjDef_xAOD::m_jesCalibSeqJMS
protected

Definition at line 867 of file SUSYObjDef_xAOD.h.

◆ m_jesConfig

std::string ST::SUSYObjDef_xAOD::m_jesConfig
protected

Definition at line 860 of file SUSYObjDef_xAOD.h.

◆ m_jesConfigAFII

std::string ST::SUSYObjDef_xAOD::m_jesConfigAFII
protected

Definition at line 863 of file SUSYObjDef_xAOD.h.

◆ m_jesConfigFat

std::string ST::SUSYObjDef_xAOD::m_jesConfigFat
protected

Definition at line 864 of file SUSYObjDef_xAOD.h.

◆ m_jesConfigFatData

std::string ST::SUSYObjDef_xAOD::m_jesConfigFatData
protected

Definition at line 865 of file SUSYObjDef_xAOD.h.

◆ m_jesConfigJMS

std::string ST::SUSYObjDef_xAOD::m_jesConfigJMS
protected

Definition at line 861 of file SUSYObjDef_xAOD.h.

◆ m_jesConfigJMSData

std::string ST::SUSYObjDef_xAOD::m_jesConfigJMSData
protected

Definition at line 862 of file SUSYObjDef_xAOD.h.

◆ m_jetCalibTool

asg::AnaToolHandle<IJetCalibrationTool> ST::SUSYObjDef_xAOD::m_jetCalibTool
protected

Definition at line 832 of file SUSYObjDef_xAOD.h.

◆ m_jetCleanDFName

std::string ST::SUSYObjDef_xAOD::m_jetCleanDFName
protected

Definition at line 996 of file SUSYObjDef_xAOD.h.

◆ m_jetCleaningTool

asg::AnaToolHandle<IJetSelector> ST::SUSYObjDef_xAOD::m_jetCleaningTool
protected

Definition at line 839 of file SUSYObjDef_xAOD.h.

◆ m_jetEta

double ST::SUSYObjDef_xAOD::m_jetEta
protected

Definition at line 742 of file SUSYObjDef_xAOD.h.

◆ m_jetFatCalibTool

asg::AnaToolHandle<IJetCalibrationTool> ST::SUSYObjDef_xAOD::m_jetFatCalibTool
protected

Definition at line 833 of file SUSYObjDef_xAOD.h.

◆ m_JetFatJetDR

double ST::SUSYObjDef_xAOD::m_JetFatJetDR
protected

Definition at line 794 of file SUSYObjDef_xAOD.h.

◆ m_jetfJvtEfficiencyTool

asg::AnaToolHandle<CP::IJvtEfficiencyTool> ST::SUSYObjDef_xAOD::m_jetfJvtEfficiencyTool
protected

Definition at line 847 of file SUSYObjDef_xAOD.h.

◆ m_jetfJvtSelectionTool

asg::AnaToolHandle<IAsgSelectionTool> ST::SUSYObjDef_xAOD::m_jetfJvtSelectionTool
protected

Definition at line 846 of file SUSYObjDef_xAOD.h.

◆ m_jetInputType

int ST::SUSYObjDef_xAOD::m_jetInputType
protected

Definition at line 520 of file SUSYObjDef_xAOD.h.

◆ m_jetJvt

double ST::SUSYObjDef_xAOD::m_jetJvt
protected

Definition at line 743 of file SUSYObjDef_xAOD.h.

◆ m_jetJvtMomentTool

asg::AnaToolHandle<JetVertexTaggerTool> ST::SUSYObjDef_xAOD::m_jetJvtMomentTool
protected

Definition at line 842 of file SUSYObjDef_xAOD.h.

◆ m_jetNNJvtEfficiencyTool

asg::AnaToolHandle<CP::IJvtEfficiencyTool> ST::SUSYObjDef_xAOD::m_jetNNJvtEfficiencyTool
protected

Definition at line 845 of file SUSYObjDef_xAOD.h.

◆ m_jetNNJvtMomentTool

asg::AnaToolHandle<JetPileupTag::JetVertexNNTagger> ST::SUSYObjDef_xAOD::m_jetNNJvtMomentTool
protected

Definition at line 843 of file SUSYObjDef_xAOD.h.

◆ m_jetNNJvtSelectionTool

asg::AnaToolHandle<IAsgSelectionTool> ST::SUSYObjDef_xAOD::m_jetNNJvtSelectionTool
protected

Definition at line 844 of file SUSYObjDef_xAOD.h.

◆ m_jetPileupLabelingTool

asg::AnaToolHandle<JetPileupLabelingTool> ST::SUSYObjDef_xAOD::m_jetPileupLabelingTool
protected

Definition at line 841 of file SUSYObjDef_xAOD.h.

◆ m_jetPt

double ST::SUSYObjDef_xAOD::m_jetPt
protected

Definition at line 741 of file SUSYObjDef_xAOD.h.

◆ m_jetTerm

std::string ST::SUSYObjDef_xAOD::m_jetTerm
protected

Definition at line 572 of file SUSYObjDef_xAOD.h.

◆ m_jetTruthLabelingTool

asg::AnaToolHandle<JetTruthLabelingTool> ST::SUSYObjDef_xAOD::m_jetTruthLabelingTool
protected

Definition at line 852 of file SUSYObjDef_xAOD.h.

◆ m_JetTruthLabelName

std::string ST::SUSYObjDef_xAOD::m_JetTruthLabelName
protected

Definition at line 564 of file SUSYObjDef_xAOD.h.

◆ m_jetUncertaintiesAnalysisFile

std::string ST::SUSYObjDef_xAOD::m_jetUncertaintiesAnalysisFile
protected

Definition at line 532 of file SUSYObjDef_xAOD.h.

◆ m_jetUncertaintiesCalibArea

std::string ST::SUSYObjDef_xAOD::m_jetUncertaintiesCalibArea
protected

Definition at line 533 of file SUSYObjDef_xAOD.h.

◆ m_jetUncertaintiesConfig

std::string ST::SUSYObjDef_xAOD::m_jetUncertaintiesConfig
protected

Prefix for trigger matchiing container name.

Definition at line 531 of file SUSYObjDef_xAOD.h.

◆ m_jetUncertaintiesMCType

std::string ST::SUSYObjDef_xAOD::m_jetUncertaintiesMCType
protected

Definition at line 534 of file SUSYObjDef_xAOD.h.

◆ m_jetUncertaintiesPDsmearing

bool ST::SUSYObjDef_xAOD::m_jetUncertaintiesPDsmearing
protected

Definition at line 536 of file SUSYObjDef_xAOD.h.

◆ m_jetUncertaintiesPDSmearTool

asg::AnaToolHandle<ICPJetUncertaintiesTool> ST::SUSYObjDef_xAOD::m_jetUncertaintiesPDSmearTool
protected

Definition at line 835 of file SUSYObjDef_xAOD.h.

◆ m_jetUncertaintiesTool

asg::AnaToolHandle<ICPJetUncertaintiesTool> ST::SUSYObjDef_xAOD::m_jetUncertaintiesTool
protected

Definition at line 834 of file SUSYObjDef_xAOD.h.

◆ m_JMScalib

bool ST::SUSYObjDef_xAOD::m_JMScalib
protected

Definition at line 759 of file SUSYObjDef_xAOD.h.

◆ m_JvtConfigRun2

std::string ST::SUSYObjDef_xAOD::m_JvtConfigRun2
protected

Definition at line 746 of file SUSYObjDef_xAOD.h.

◆ m_JvtConfigRun3

std::string ST::SUSYObjDef_xAOD::m_JvtConfigRun3
protected

Definition at line 747 of file SUSYObjDef_xAOD.h.

◆ m_JvtPtMax

double ST::SUSYObjDef_xAOD::m_JvtPtMax
protected

Definition at line 745 of file SUSYObjDef_xAOD.h.

◆ m_JvtWP

std::string ST::SUSYObjDef_xAOD::m_JvtWP
protected

Definition at line 744 of file SUSYObjDef_xAOD.h.

◆ m_label_truthKey

SG::ReadDecorHandleKey<xAOD::JetContainer> ST::SUSYObjDef_xAOD::m_label_truthKey
protected

Definition at line 857 of file SUSYObjDef_xAOD.h.

◆ m_legsPerTool

std::map<std::string,std::string> ST::SUSYObjDef_xAOD::m_legsPerTool
protected

Definition at line 829 of file SUSYObjDef_xAOD.h.

◆ m_legsPerTool_ph

std::map<std::string,std::string> ST::SUSYObjDef_xAOD::m_legsPerTool_ph
protected

Definition at line 830 of file SUSYObjDef_xAOD.h.

◆ m_LRTCollectionName

SG::ReadHandleKey<xAOD::TrackParticleContainer> ST::SUSYObjDef_xAOD::m_LRTCollectionName {this, "LRTCollectionName", "InDetLargeD0TrackParticles", "LRT collection name"}
private

Definition at line 481 of file SUSYObjDef_xAOD.h.

◆ m_LRTuncTool

asg::AnaToolHandle<InDet::IInclusiveTrackFilterTool> ST::SUSYObjDef_xAOD::m_LRTuncTool
protected

Definition at line 984 of file SUSYObjDef_xAOD.h.

◆ m_mcCampaign

std::string ST::SUSYObjDef_xAOD::m_mcCampaign
protected

Definition at line 602 of file SUSYObjDef_xAOD.h.

◆ m_mcChannel

int ST::SUSYObjDef_xAOD::m_mcChannel
protected

Definition at line 603 of file SUSYObjDef_xAOD.h.

◆ m_metDoMuonEloss

bool ST::SUSYObjDef_xAOD::m_metDoMuonEloss
protected

Definition at line 583 of file SUSYObjDef_xAOD.h.

◆ m_metDoRemoveMuonJets

bool ST::SUSYObjDef_xAOD::m_metDoRemoveMuonJets
protected

Definition at line 581 of file SUSYObjDef_xAOD.h.

◆ m_metDoSetMuonJetEMScale

bool ST::SUSYObjDef_xAOD::m_metDoSetMuonJetEMScale
protected

Definition at line 580 of file SUSYObjDef_xAOD.h.

◆ m_metGreedyPhotons

bool ST::SUSYObjDef_xAOD::m_metGreedyPhotons
protected

Definition at line 584 of file SUSYObjDef_xAOD.h.

◆ m_metJetSelection

std::string ST::SUSYObjDef_xAOD::m_metJetSelection
protected

Definition at line 810 of file SUSYObjDef_xAOD.h.

◆ m_metMaker

asg::AnaToolHandle<IMETMaker> ST::SUSYObjDef_xAOD::m_metMaker
protected

Definition at line 933 of file SUSYObjDef_xAOD.h.

◆ m_metRemoveOverlappingCaloTaggedMuons

bool ST::SUSYObjDef_xAOD::m_metRemoveOverlappingCaloTaggedMuons
protected

Definition at line 579 of file SUSYObjDef_xAOD.h.

◆ m_metSignif

asg::AnaToolHandle<IMETSignificance> ST::SUSYObjDef_xAOD::m_metSignif
protected

Definition at line 935 of file SUSYObjDef_xAOD.h.

◆ m_metsysConfigPrefix

std::string ST::SUSYObjDef_xAOD::m_metsysConfigPrefix
protected

Definition at line 586 of file SUSYObjDef_xAOD.h.

◆ m_metSystTool

asg::AnaToolHandle<IMETSystematicsTool> ST::SUSYObjDef_xAOD::m_metSystTool
protected

Definition at line 934 of file SUSYObjDef_xAOD.h.

◆ m_metUseGhostMuons

bool ST::SUSYObjDef_xAOD::m_metUseGhostMuons
protected

Definition at line 582 of file SUSYObjDef_xAOD.h.

◆ m_metVeryGreedyPhotons

bool ST::SUSYObjDef_xAOD::m_metVeryGreedyPhotons
protected

Definition at line 585 of file SUSYObjDef_xAOD.h.

◆ m_mu_id_support

int ST::SUSYObjDef_xAOD::m_mu_id_support
protected

Definition at line 631 of file SUSYObjDef_xAOD.h.

◆ m_mu_iso_fallback

std::map<std::string, std::string> ST::SUSYObjDef_xAOD::m_mu_iso_fallback
protected

Definition at line 638 of file SUSYObjDef_xAOD.h.

◆ m_mu_iso_support

std::vector<std::string> ST::SUSYObjDef_xAOD::m_mu_iso_support
protected

Definition at line 634 of file SUSYObjDef_xAOD.h.

◆ m_mubaselined0sig

double ST::SUSYObjDef_xAOD::m_mubaselined0sig
protected

Definition at line 712 of file SUSYObjDef_xAOD.h.

◆ m_muBaselineEta

double ST::SUSYObjDef_xAOD::m_muBaselineEta
protected

Definition at line 707 of file SUSYObjDef_xAOD.h.

◆ m_muBaselineIso_WP

std::string ST::SUSYObjDef_xAOD::m_muBaselineIso_WP
protected

Definition at line 669 of file SUSYObjDef_xAOD.h.

◆ m_muBaselinePt

double ST::SUSYObjDef_xAOD::m_muBaselinePt
protected

Definition at line 706 of file SUSYObjDef_xAOD.h.

◆ m_mubaselinez0

double ST::SUSYObjDef_xAOD::m_mubaselinez0
protected

Definition at line 713 of file SUSYObjDef_xAOD.h.

◆ m_muCalibrationMode

int ST::SUSYObjDef_xAOD::m_muCalibrationMode
protected

Definition at line 718 of file SUSYObjDef_xAOD.h.

◆ m_muCosmicd0

double ST::SUSYObjDef_xAOD::m_muCosmicd0
protected

Definition at line 716 of file SUSYObjDef_xAOD.h.

◆ m_muCosmicz0

double ST::SUSYObjDef_xAOD::m_muCosmicz0
protected

Definition at line 715 of file SUSYObjDef_xAOD.h.

◆ m_mud0sig

double ST::SUSYObjDef_xAOD::m_mud0sig
protected

Definition at line 710 of file SUSYObjDef_xAOD.h.

◆ m_muEffCorrForce1D

bool ST::SUSYObjDef_xAOD::m_muEffCorrForce1D
protected

Definition at line 674 of file SUSYObjDef_xAOD.h.

◆ m_muEta

double ST::SUSYObjDef_xAOD::m_muEta
protected

Definition at line 709 of file SUSYObjDef_xAOD.h.

◆ m_muHighPtExtraSmear

bool ST::SUSYObjDef_xAOD::m_muHighPtExtraSmear
protected

Definition at line 673 of file SUSYObjDef_xAOD.h.

◆ m_muId

int ST::SUSYObjDef_xAOD::m_muId
protected

Definition at line 651 of file SUSYObjDef_xAOD.h.

◆ m_muIdBaseline

int ST::SUSYObjDef_xAOD::m_muIdBaseline
protected

Definition at line 652 of file SUSYObjDef_xAOD.h.

◆ m_muIso_WP

std::string ST::SUSYObjDef_xAOD::m_muIso_WP
protected

Definition at line 670 of file SUSYObjDef_xAOD.h.

◆ m_muIsoHighPt_WP

std::string ST::SUSYObjDef_xAOD::m_muIsoHighPt_WP
protected

Definition at line 671 of file SUSYObjDef_xAOD.h.

◆ m_muIsoHighPtThresh

double ST::SUSYObjDef_xAOD::m_muIsoHighPtThresh
protected

Definition at line 672 of file SUSYObjDef_xAOD.h.

◆ m_muLRT

bool ST::SUSYObjDef_xAOD::m_muLRT
protected

Definition at line 719 of file SUSYObjDef_xAOD.h.

◆ m_muonCalibTool

asg::AnaToolHandle<CP::IMuonCalibrationAndSmearingTool> ST::SUSYObjDef_xAOD::m_muonCalibTool
protected

Definition at line 874 of file SUSYObjDef_xAOD.h.

◆ m_muonEfficiencyBMHighPtSFTool

asg::AnaToolHandle<CP::IMuonEfficiencyScaleFactors> ST::SUSYObjDef_xAOD::m_muonEfficiencyBMHighPtSFTool
protected

Definition at line 876 of file SUSYObjDef_xAOD.h.

◆ m_muonEfficiencySFTool

asg::AnaToolHandle<CP::IMuonEfficiencyScaleFactors> ST::SUSYObjDef_xAOD::m_muonEfficiencySFTool
protected

Definition at line 875 of file SUSYObjDef_xAOD.h.

◆ m_muonHighPtIsolationSFTool

asg::AnaToolHandle<CP::IMuonEfficiencyScaleFactors> ST::SUSYObjDef_xAOD::m_muonHighPtIsolationSFTool
protected

Definition at line 879 of file SUSYObjDef_xAOD.h.

◆ m_muonIsolationSFTool

asg::AnaToolHandle<CP::IMuonEfficiencyScaleFactors> ST::SUSYObjDef_xAOD::m_muonIsolationSFTool
protected

Definition at line 878 of file SUSYObjDef_xAOD.h.

◆ m_muonLRTORTool

asg::AnaToolHandle<CP::IMuonLRTOverlapRemovalTool> ST::SUSYObjDef_xAOD::m_muonLRTORTool
protected

Definition at line 882 of file SUSYObjDef_xAOD.h.

◆ m_muonSelectionHighPtTool

asg::AnaToolHandle<CP::IMuonSelectionTool> ST::SUSYObjDef_xAOD::m_muonSelectionHighPtTool
protected

Definition at line 872 of file SUSYObjDef_xAOD.h.

◆ m_muonSelectionTool

asg::AnaToolHandle<CP::IMuonSelectionTool> ST::SUSYObjDef_xAOD::m_muonSelectionTool
protected

Definition at line 871 of file SUSYObjDef_xAOD.h.

◆ m_muonSelectionToolBaseline

asg::AnaToolHandle<CP::IMuonSelectionTool> ST::SUSYObjDef_xAOD::m_muonSelectionToolBaseline
protected

Definition at line 873 of file SUSYObjDef_xAOD.h.

◆ m_muonTerm

std::string ST::SUSYObjDef_xAOD::m_muonTerm
protected

Definition at line 573 of file SUSYObjDef_xAOD.h.

◆ m_muonTriggerSFTool

asg::AnaToolHandle<CP::IMuonTriggerScaleFactors> ST::SUSYObjDef_xAOD::m_muonTriggerSFTool
protected

Definition at line 880 of file SUSYObjDef_xAOD.h.

◆ m_muonTrigSFTools

ToolHandleArray<CP::IMuonTriggerScaleFactors> ST::SUSYObjDef_xAOD::m_muonTrigSFTools
protected

Definition at line 881 of file SUSYObjDef_xAOD.h.

◆ m_muonTTVAEfficiencySFTool

asg::AnaToolHandle<CP::IMuonEfficiencyScaleFactors> ST::SUSYObjDef_xAOD::m_muonTTVAEfficiencySFTool
protected

Definition at line 877 of file SUSYObjDef_xAOD.h.

◆ m_muPt

double ST::SUSYObjDef_xAOD::m_muPt
protected

Definition at line 708 of file SUSYObjDef_xAOD.h.

◆ m_murequirepassedHighPtCuts

bool ST::SUSYObjDef_xAOD::m_murequirepassedHighPtCuts
protected

Definition at line 714 of file SUSYObjDef_xAOD.h.

◆ m_muTriggerSFCalibFilename

std::string ST::SUSYObjDef_xAOD::m_muTriggerSFCalibFilename
protected

Definition at line 676 of file SUSYObjDef_xAOD.h.

◆ m_muTriggerSFCalibRelease

std::string ST::SUSYObjDef_xAOD::m_muTriggerSFCalibRelease
protected

Definition at line 675 of file SUSYObjDef_xAOD.h.

◆ m_muz0

double ST::SUSYObjDef_xAOD::m_muz0
protected

Definition at line 711 of file SUSYObjDef_xAOD.h.

◆ m_orApplyRelPt

bool ST::SUSYObjDef_xAOD::m_orApplyRelPt
protected

Definition at line 780 of file SUSYObjDef_xAOD.h.

◆ m_orBJetPtUpperThres

double ST::SUSYObjDef_xAOD::m_orBJetPtUpperThres
protected

Definition at line 789 of file SUSYObjDef_xAOD.h.

◆ m_orBoostedElectronC1

double ST::SUSYObjDef_xAOD::m_orBoostedElectronC1
protected

Definition at line 773 of file SUSYObjDef_xAOD.h.

◆ m_orBoostedElectronC2

double ST::SUSYObjDef_xAOD::m_orBoostedElectronC2
protected

Definition at line 774 of file SUSYObjDef_xAOD.h.

◆ m_orBoostedElectronMaxConeSize

double ST::SUSYObjDef_xAOD::m_orBoostedElectronMaxConeSize
protected

Definition at line 775 of file SUSYObjDef_xAOD.h.

◆ m_orBoostedMuonC1

double ST::SUSYObjDef_xAOD::m_orBoostedMuonC1
protected

Definition at line 777 of file SUSYObjDef_xAOD.h.

◆ m_orBoostedMuonC2

double ST::SUSYObjDef_xAOD::m_orBoostedMuonC2
protected

Definition at line 778 of file SUSYObjDef_xAOD.h.

◆ m_orBoostedMuonMaxConeSize

double ST::SUSYObjDef_xAOD::m_orBoostedMuonMaxConeSize
protected

Definition at line 779 of file SUSYObjDef_xAOD.h.

◆ m_orBtagWP

std::string ST::SUSYObjDef_xAOD::m_orBtagWP
protected

Definition at line 786 of file SUSYObjDef_xAOD.h.

◆ m_orDoBjet

bool ST::SUSYObjDef_xAOD::m_orDoBjet
protected

Definition at line 768 of file SUSYObjDef_xAOD.h.

◆ m_orDoBoostedElectron

bool ST::SUSYObjDef_xAOD::m_orDoBoostedElectron
protected

Definition at line 772 of file SUSYObjDef_xAOD.h.

◆ m_orDoBoostedMuon

bool ST::SUSYObjDef_xAOD::m_orDoBoostedMuon
protected

Definition at line 776 of file SUSYObjDef_xAOD.h.

◆ m_orDoElBjet

bool ST::SUSYObjDef_xAOD::m_orDoElBjet
protected

Definition at line 769 of file SUSYObjDef_xAOD.h.

◆ m_orDoEleJet

bool ST::SUSYObjDef_xAOD::m_orDoEleJet
protected

Definition at line 764 of file SUSYObjDef_xAOD.h.

◆ m_orDoElEl

bool ST::SUSYObjDef_xAOD::m_orDoElEl
protected

Definition at line 765 of file SUSYObjDef_xAOD.h.

◆ m_orDoElMu

bool ST::SUSYObjDef_xAOD::m_orDoElMu
protected

Definition at line 766 of file SUSYObjDef_xAOD.h.

◆ m_orDoFatjets

bool ST::SUSYObjDef_xAOD::m_orDoFatjets
protected

Definition at line 792 of file SUSYObjDef_xAOD.h.

◆ m_orDoMuBjet

bool ST::SUSYObjDef_xAOD::m_orDoMuBjet
protected

Definition at line 770 of file SUSYObjDef_xAOD.h.

◆ m_orDoMuonJet

bool ST::SUSYObjDef_xAOD::m_orDoMuonJet
protected

Definition at line 767 of file SUSYObjDef_xAOD.h.

◆ m_orDoMuonJetGhostAssociation

bool ST::SUSYObjDef_xAOD::m_orDoMuonJetGhostAssociation
protected

Definition at line 784 of file SUSYObjDef_xAOD.h.

◆ m_orDoPhoton

bool ST::SUSYObjDef_xAOD::m_orDoPhoton
protected

Definition at line 763 of file SUSYObjDef_xAOD.h.

◆ m_orDoTau

bool ST::SUSYObjDef_xAOD::m_orDoTau
protected

Overlap removal options.

Definition at line 762 of file SUSYObjDef_xAOD.h.

◆ m_orDoTauBjet

bool ST::SUSYObjDef_xAOD::m_orDoTauBjet
protected

Definition at line 771 of file SUSYObjDef_xAOD.h.

◆ m_orInputLabel

std::string ST::SUSYObjDef_xAOD::m_orInputLabel
protected

Definition at line 787 of file SUSYObjDef_xAOD.h.

◆ m_orLinkOverlapObjects

bool ST::SUSYObjDef_xAOD::m_orLinkOverlapObjects
protected

Definition at line 790 of file SUSYObjDef_xAOD.h.

◆ m_orMuJetInnerDR

double ST::SUSYObjDef_xAOD::m_orMuJetInnerDR
protected

Definition at line 783 of file SUSYObjDef_xAOD.h.

◆ m_orMuJetPtRatio

double ST::SUSYObjDef_xAOD::m_orMuJetPtRatio
protected

Definition at line 781 of file SUSYObjDef_xAOD.h.

◆ m_orMuJetTrkPtRatio

double ST::SUSYObjDef_xAOD::m_orMuJetTrkPtRatio
protected

Definition at line 782 of file SUSYObjDef_xAOD.h.

◆ m_orPhotonFavoured

bool ST::SUSYObjDef_xAOD::m_orPhotonFavoured
protected

Definition at line 788 of file SUSYObjDef_xAOD.h.

◆ m_orRemoveCaloMuons

bool ST::SUSYObjDef_xAOD::m_orRemoveCaloMuons
protected

Definition at line 785 of file SUSYObjDef_xAOD.h.

◆ m_orToolbox

ORUtils::ToolBox ST::SUSYObjDef_xAOD::m_orToolbox
protected

Definition at line 987 of file SUSYObjDef_xAOD.h.

◆ m_outElectronLocation

SG::WriteHandleKey<xAOD::ElectronContainer> ST::SUSYObjDef_xAOD::m_outElectronLocation {this, "OutputElectronLocation", "StdWithLRTElectrons", "name of the muon container to write"}
protected

Definition at line 898 of file SUSYObjDef_xAOD.h.

◆ m_outMETTerm

std::string ST::SUSYObjDef_xAOD::m_outMETTerm
protected

Definition at line 578 of file SUSYObjDef_xAOD.h.

◆ m_outMuonLocation

SG::WriteHandleKey<xAOD::MuonContainer> ST::SUSYObjDef_xAOD::m_outMuonLocation {this, "OutputMuonLocation", "StdWithLRTMuons", "name of the muon container to write"}
protected

Definition at line 883 of file SUSYObjDef_xAOD.h.

◆ m_outputMetaStore

MetaStore_t asg::AsgMetadataTool::m_outputMetaStore
privateinherited

Object accessing the output metadata store.

Definition at line 121 of file AsgMetadataTool.h.

◆ m_ph_id_support

std::vector<std::string> ST::SUSYObjDef_xAOD::m_ph_id_support
protected

Definition at line 630 of file SUSYObjDef_xAOD.h.

◆ m_photonAllowLate

bool ST::SUSYObjDef_xAOD::m_photonAllowLate
protected

Definition at line 727 of file SUSYObjDef_xAOD.h.

◆ m_photonBaselineCrackVeto

bool ST::SUSYObjDef_xAOD::m_photonBaselineCrackVeto
protected

Definition at line 725 of file SUSYObjDef_xAOD.h.

◆ m_photonBaselineEta

double ST::SUSYObjDef_xAOD::m_photonBaselineEta
protected

Definition at line 722 of file SUSYObjDef_xAOD.h.

◆ m_photonBaselineIso_WP

std::string ST::SUSYObjDef_xAOD::m_photonBaselineIso_WP
protected

Definition at line 666 of file SUSYObjDef_xAOD.h.

◆ m_photonBaselinePt

double ST::SUSYObjDef_xAOD::m_photonBaselinePt
protected

Definition at line 721 of file SUSYObjDef_xAOD.h.

◆ m_photonCrackVeto

bool ST::SUSYObjDef_xAOD::m_photonCrackVeto
protected

Definition at line 726 of file SUSYObjDef_xAOD.h.

◆ m_photonEfficiencySFTool

asg::AnaToolHandle<IAsgPhotonEfficiencyCorrectionTool> ST::SUSYObjDef_xAOD::m_photonEfficiencySFTool
protected

Definition at line 907 of file SUSYObjDef_xAOD.h.

◆ m_photonEfficiencySFTool_trigEff_AsymDiphoton

std::vector<asg::AnaToolHandle<IAsgPhotonEfficiencyCorrectionTool> > ST::SUSYObjDef_xAOD::m_photonEfficiencySFTool_trigEff_AsymDiphoton
protected

Definition at line 912 of file SUSYObjDef_xAOD.h.

◆ m_photonEfficiencySFTool_trigSF_AsymDiphoton

std::vector<asg::AnaToolHandle<IAsgPhotonEfficiencyCorrectionTool> > ST::SUSYObjDef_xAOD::m_photonEfficiencySFTool_trigSF_AsymDiphoton
protected

Definition at line 911 of file SUSYObjDef_xAOD.h.

◆ m_photonEta

double ST::SUSYObjDef_xAOD::m_photonEta
protected

Definition at line 723 of file SUSYObjDef_xAOD.h.

◆ m_photonId

std::string ST::SUSYObjDef_xAOD::m_photonId
protected

Definition at line 653 of file SUSYObjDef_xAOD.h.

◆ m_photonIdBaseline

std::string ST::SUSYObjDef_xAOD::m_photonIdBaseline
protected

Definition at line 654 of file SUSYObjDef_xAOD.h.

◆ m_photonIdBaselineDFName

std::string ST::SUSYObjDef_xAOD::m_photonIdBaselineDFName
protected

Definition at line 994 of file SUSYObjDef_xAOD.h.

◆ m_photonIdDFName

std::string ST::SUSYObjDef_xAOD::m_photonIdDFName
protected

Definition at line 995 of file SUSYObjDef_xAOD.h.

◆ m_photonIso_WP

std::string ST::SUSYObjDef_xAOD::m_photonIso_WP
protected

Definition at line 667 of file SUSYObjDef_xAOD.h.

◆ m_photonIsolationSFTool

asg::AnaToolHandle<IAsgPhotonEfficiencyCorrectionTool> ST::SUSYObjDef_xAOD::m_photonIsolationSFTool
protected

Definition at line 908 of file SUSYObjDef_xAOD.h.

◆ m_photonPt

double ST::SUSYObjDef_xAOD::m_photonPt
protected

Definition at line 724 of file SUSYObjDef_xAOD.h.

◆ m_photonSelIsEM

asg::AnaToolHandle<IAsgPhotonIsEMSelector> ST::SUSYObjDef_xAOD::m_photonSelIsEM
protected

Definition at line 904 of file SUSYObjDef_xAOD.h.

◆ m_photonSelIsEMBaseline

asg::AnaToolHandle<IAsgPhotonIsEMSelector> ST::SUSYObjDef_xAOD::m_photonSelIsEMBaseline
protected

Definition at line 905 of file SUSYObjDef_xAOD.h.

◆ m_photonTrigEffTools

ToolHandleArray<IAsgPhotonEfficiencyCorrectionTool> ST::SUSYObjDef_xAOD::m_photonTrigEffTools
protected

Definition at line 914 of file SUSYObjDef_xAOD.h.

◆ m_photonTriggerName

std::string ST::SUSYObjDef_xAOD::m_photonTriggerName
protected

Definition at line 668 of file SUSYObjDef_xAOD.h.

◆ m_photonTriggerSFTool

asg::AnaToolHandle<IAsgPhotonEfficiencyCorrectionTool> ST::SUSYObjDef_xAOD::m_photonTriggerSFTool
protected

Definition at line 909 of file SUSYObjDef_xAOD.h.

◆ m_photonTrigSFTools

ToolHandleArray<IAsgPhotonEfficiencyCorrectionTool> ST::SUSYObjDef_xAOD::m_photonTrigSFTools
protected

Definition at line 913 of file SUSYObjDef_xAOD.h.

◆ m_pmgSHnjetWeighter

asg::AnaToolHandle<IWeightTool> ST::SUSYObjDef_xAOD::m_pmgSHnjetWeighter
protected

Definition at line 989 of file SUSYObjDef_xAOD.h.

◆ m_pmgSHnjetWeighterWZ

asg::AnaToolHandle<IWeightTool> ST::SUSYObjDef_xAOD::m_pmgSHnjetWeighterWZ
protected

Definition at line 990 of file SUSYObjDef_xAOD.h.

◆ m_prwActualMu2017File

std::string ST::SUSYObjDef_xAOD::m_prwActualMu2017File
protected

Definition at line 617 of file SUSYObjDef_xAOD.h.

◆ m_prwActualMu2018File

std::string ST::SUSYObjDef_xAOD::m_prwActualMu2018File
protected

Definition at line 618 of file SUSYObjDef_xAOD.h.

◆ m_prwActualMu2022File

std::string ST::SUSYObjDef_xAOD::m_prwActualMu2022File
protected

Definition at line 619 of file SUSYObjDef_xAOD.h.

◆ m_prwActualMu2023File

std::string ST::SUSYObjDef_xAOD::m_prwActualMu2023File
protected

Definition at line 620 of file SUSYObjDef_xAOD.h.

◆ m_prwActualMu2024File

std::string ST::SUSYObjDef_xAOD::m_prwActualMu2024File
protected

Definition at line 621 of file SUSYObjDef_xAOD.h.

◆ m_prwConfFiles

std::vector<std::string> ST::SUSYObjDef_xAOD::m_prwConfFiles
protected

Definition at line 615 of file SUSYObjDef_xAOD.h.

◆ m_prwDataSF

double ST::SUSYObjDef_xAOD::m_prwDataSF
protected

Definition at line 623 of file SUSYObjDef_xAOD.h.

◆ m_prwDataSF_DW

double ST::SUSYObjDef_xAOD::m_prwDataSF_DW
protected

Definition at line 625 of file SUSYObjDef_xAOD.h.

◆ m_prwDataSF_UP

double ST::SUSYObjDef_xAOD::m_prwDataSF_UP
protected

Definition at line 624 of file SUSYObjDef_xAOD.h.

◆ m_prwLcalcFiles

std::vector<std::string> ST::SUSYObjDef_xAOD::m_prwLcalcFiles
protected

Definition at line 616 of file SUSYObjDef_xAOD.h.

◆ m_prwTool

asg::AnaToolHandle<CP::IPileupReweightingTool> ST::SUSYObjDef_xAOD::m_prwTool
protected

Definition at line 982 of file SUSYObjDef_xAOD.h.

◆ m_runDepPrescaleWeightPRW

bool ST::SUSYObjDef_xAOD::m_runDepPrescaleWeightPRW
protected

Definition at line 626 of file SUSYObjDef_xAOD.h.

◆ m_runECIS

bool ST::SUSYObjDef_xAOD::m_runECIS
protected

Definition at line 665 of file SUSYObjDef_xAOD.h.

◆ m_showerType

int ST::SUSYObjDef_xAOD::m_showerType
protected

Definition at line 812 of file SUSYObjDef_xAOD.h.

◆ m_slices

std::map<std::string,bool> ST::SUSYObjDef_xAOD::m_slices
protected

Definition at line 806 of file SUSYObjDef_xAOD.h.

◆ m_softTermParam

int ST::SUSYObjDef_xAOD::m_softTermParam
protected

Definition at line 592 of file SUSYObjDef_xAOD.h.

◆ m_strictConfigCheck

bool ST::SUSYObjDef_xAOD::m_strictConfigCheck
protected

Definition at line 542 of file SUSYObjDef_xAOD.h.

◆ m_subtool_init

bool ST::SUSYObjDef_xAOD::m_subtool_init
protected

Definition at line 567 of file SUSYObjDef_xAOD.h.

◆ m_tau_id_support

std::vector<std::string> ST::SUSYObjDef_xAOD::m_tau_id_support
protected

Definition at line 632 of file SUSYObjDef_xAOD.h.

◆ m_tau_trig_support

std::map<std::string, std::string> ST::SUSYObjDef_xAOD::m_tau_trig_support
protected

Definition at line 643 of file SUSYObjDef_xAOD.h.

◆ m_tauConfigPath

std::string ST::SUSYObjDef_xAOD::m_tauConfigPath
protected

Definition at line 732 of file SUSYObjDef_xAOD.h.

◆ m_tauConfigPathBaseline

std::string ST::SUSYObjDef_xAOD::m_tauConfigPathBaseline
protected

Definition at line 733 of file SUSYObjDef_xAOD.h.

◆ m_tauConfigReader

TEnv ST::SUSYObjDef_xAOD::m_tauConfigReader
protected

Definition at line 739 of file SUSYObjDef_xAOD.h.

◆ m_tauDoTTM

bool ST::SUSYObjDef_xAOD::m_tauDoTTM
protected

Definition at line 734 of file SUSYObjDef_xAOD.h.

◆ m_tauEffTool

asg::AnaToolHandle<TauAnalysisTools::ITauEfficiencyCorrectionsTool> ST::SUSYObjDef_xAOD::m_tauEffTool
protected

Definition at line 924 of file SUSYObjDef_xAOD.h.

◆ m_tauEffToolRecommendationTag

std::string ST::SUSYObjDef_xAOD::m_tauEffToolRecommendationTag
protected

Definition at line 736 of file SUSYObjDef_xAOD.h.

◆ m_tauEta

double ST::SUSYObjDef_xAOD::m_tauEta
protected

Definition at line 731 of file SUSYObjDef_xAOD.h.

◆ m_tauId

std::string ST::SUSYObjDef_xAOD::m_tauId
protected

Definition at line 655 of file SUSYObjDef_xAOD.h.

◆ m_tauIdBaseline

std::string ST::SUSYObjDef_xAOD::m_tauIdBaseline
protected

Definition at line 656 of file SUSYObjDef_xAOD.h.

◆ m_tauJetORtool

asg::AnaToolHandle<ORUtils::IOverlapTool> ST::SUSYObjDef_xAOD::m_tauJetORtool
protected

Definition at line 986 of file SUSYObjDef_xAOD.h.

◆ m_tauPrePtCut

double ST::SUSYObjDef_xAOD::m_tauPrePtCut
protected

Definition at line 729 of file SUSYObjDef_xAOD.h.

◆ m_tauPt

double ST::SUSYObjDef_xAOD::m_tauPt
protected

Definition at line 730 of file SUSYObjDef_xAOD.h.

◆ m_tauSelTool

asg::AnaToolHandle<TauAnalysisTools::ITauSelectionTool> ST::SUSYObjDef_xAOD::m_tauSelTool
protected

Definition at line 920 of file SUSYObjDef_xAOD.h.

◆ m_tauSelToolBaseline

asg::AnaToolHandle<TauAnalysisTools::ITauSelectionTool> ST::SUSYObjDef_xAOD::m_tauSelToolBaseline
protected

Definition at line 921 of file SUSYObjDef_xAOD.h.

◆ m_tauSmearingTool

asg::AnaToolHandle<TauAnalysisTools::ITauSmearingTool> ST::SUSYObjDef_xAOD::m_tauSmearingTool
protected

Definition at line 922 of file SUSYObjDef_xAOD.h.

◆ m_tauSmearingToolGenerator

std::string ST::SUSYObjDef_xAOD::m_tauSmearingToolGenerator
protected

Definition at line 737 of file SUSYObjDef_xAOD.h.

◆ m_tauSmearingToolRecommendationTag

std::string ST::SUSYObjDef_xAOD::m_tauSmearingToolRecommendationTag
protected

Definition at line 735 of file SUSYObjDef_xAOD.h.

◆ m_tauTerm

std::string ST::SUSYObjDef_xAOD::m_tauTerm
protected

Definition at line 571 of file SUSYObjDef_xAOD.h.

◆ m_tauTrigEffTool

std::vector<asg::AnaToolHandle<TauAnalysisTools::ITauEfficiencyCorrectionsTool> > ST::SUSYObjDef_xAOD::m_tauTrigEffTool
protected

Definition at line 925 of file SUSYObjDef_xAOD.h.

◆ m_tauTruthMatch

asg::AnaToolHandle<TauAnalysisTools::ITauTruthMatchingTool> ST::SUSYObjDef_xAOD::m_tauTruthMatch
protected

Definition at line 923 of file SUSYObjDef_xAOD.h.

◆ m_tool_init

bool ST::SUSYObjDef_xAOD::m_tool_init
protected

Definition at line 566 of file SUSYObjDef_xAOD.h.

◆ m_TopconfigReader

TEnv ST::SUSYObjDef_xAOD::m_TopconfigReader
protected

Definition at line 552 of file SUSYObjDef_xAOD.h.

◆ m_TopDecorName

std::string ST::SUSYObjDef_xAOD::m_TopDecorName
protected

Definition at line 555 of file SUSYObjDef_xAOD.h.

◆ m_ToptagConfig

std::string ST::SUSYObjDef_xAOD::m_ToptagConfig
protected

Definition at line 558 of file SUSYObjDef_xAOD.h.

◆ m_TopTaggerCalibArea

std::string ST::SUSYObjDef_xAOD::m_TopTaggerCalibArea
protected

Definition at line 560 of file SUSYObjDef_xAOD.h.

◆ m_TopTaggerTool

asg::AnaToolHandle<JSSWTopTaggerDNN> ST::SUSYObjDef_xAOD::m_TopTaggerTool
protected

Definition at line 851 of file SUSYObjDef_xAOD.h.

◆ m_TopTagjetUncertaintiesTool

asg::AnaToolHandle<ICPJetUncertaintiesTool> ST::SUSYObjDef_xAOD::m_TopTagjetUncertaintiesTool
protected

Definition at line 855 of file SUSYObjDef_xAOD.h.

◆ m_TopTagUncConfig

std::string ST::SUSYObjDef_xAOD::m_TopTagUncConfig
protected

Definition at line 563 of file SUSYObjDef_xAOD.h.

◆ m_treatPUJets

bool ST::SUSYObjDef_xAOD::m_treatPUJets
protected

Definition at line 593 of file SUSYObjDef_xAOD.h.

◆ m_trig2015combination_diLep

std::string ST::SUSYObjDef_xAOD::m_trig2015combination_diLep
protected

Definition at line 946 of file SUSYObjDef_xAOD.h.

◆ m_trig2015combination_diPhoton

std::string ST::SUSYObjDef_xAOD::m_trig2015combination_diPhoton
protected

Definition at line 962 of file SUSYObjDef_xAOD.h.

◆ m_trig2015combination_multiLep

std::string ST::SUSYObjDef_xAOD::m_trig2015combination_multiLep
protected

Definition at line 954 of file SUSYObjDef_xAOD.h.

◆ m_trig2015combination_singleLep

std::string ST::SUSYObjDef_xAOD::m_trig2015combination_singleLep
protected

Definition at line 937 of file SUSYObjDef_xAOD.h.

◆ m_trig2016combination_diLep

std::string ST::SUSYObjDef_xAOD::m_trig2016combination_diLep
protected

Definition at line 947 of file SUSYObjDef_xAOD.h.

◆ m_trig2016combination_diPhoton

std::string ST::SUSYObjDef_xAOD::m_trig2016combination_diPhoton
protected

Definition at line 963 of file SUSYObjDef_xAOD.h.

◆ m_trig2016combination_multiLep

std::string ST::SUSYObjDef_xAOD::m_trig2016combination_multiLep
protected

Definition at line 955 of file SUSYObjDef_xAOD.h.

◆ m_trig2016combination_singleLep

std::string ST::SUSYObjDef_xAOD::m_trig2016combination_singleLep
protected

Definition at line 938 of file SUSYObjDef_xAOD.h.

◆ m_trig2017combination_diLep

std::string ST::SUSYObjDef_xAOD::m_trig2017combination_diLep
protected

Definition at line 948 of file SUSYObjDef_xAOD.h.

◆ m_trig2017combination_diPhoton

std::string ST::SUSYObjDef_xAOD::m_trig2017combination_diPhoton
protected

Definition at line 964 of file SUSYObjDef_xAOD.h.

◆ m_trig2017combination_multiLep

std::string ST::SUSYObjDef_xAOD::m_trig2017combination_multiLep
protected

Definition at line 956 of file SUSYObjDef_xAOD.h.

◆ m_trig2017combination_singleLep

std::string ST::SUSYObjDef_xAOD::m_trig2017combination_singleLep
protected

Definition at line 939 of file SUSYObjDef_xAOD.h.

◆ m_trig2018combination_diLep

std::string ST::SUSYObjDef_xAOD::m_trig2018combination_diLep
protected

Definition at line 949 of file SUSYObjDef_xAOD.h.

◆ m_trig2018combination_diPhoton

std::string ST::SUSYObjDef_xAOD::m_trig2018combination_diPhoton
protected

Definition at line 965 of file SUSYObjDef_xAOD.h.

◆ m_trig2018combination_multiLep

std::string ST::SUSYObjDef_xAOD::m_trig2018combination_multiLep
protected

Definition at line 957 of file SUSYObjDef_xAOD.h.

◆ m_trig2018combination_singleLep

std::string ST::SUSYObjDef_xAOD::m_trig2018combination_singleLep
protected

Definition at line 940 of file SUSYObjDef_xAOD.h.

◆ m_trig2022combination_diLep

std::string ST::SUSYObjDef_xAOD::m_trig2022combination_diLep
protected

Definition at line 950 of file SUSYObjDef_xAOD.h.

◆ m_trig2022combination_diPhoton

std::string ST::SUSYObjDef_xAOD::m_trig2022combination_diPhoton
protected

Definition at line 966 of file SUSYObjDef_xAOD.h.

◆ m_trig2022combination_multiLep

std::string ST::SUSYObjDef_xAOD::m_trig2022combination_multiLep
protected

Definition at line 958 of file SUSYObjDef_xAOD.h.

◆ m_trig2022combination_singleLep

std::string ST::SUSYObjDef_xAOD::m_trig2022combination_singleLep
protected

Definition at line 941 of file SUSYObjDef_xAOD.h.

◆ m_trig2023combination_singleLep

std::string ST::SUSYObjDef_xAOD::m_trig2023combination_singleLep
protected

Definition at line 942 of file SUSYObjDef_xAOD.h.

◆ m_trig2024combination_singleLep

std::string ST::SUSYObjDef_xAOD::m_trig2024combination_singleLep
protected

Definition at line 943 of file SUSYObjDef_xAOD.h.

◆ m_trigConfTool

asg::AnaToolHandle<TrigConf::ITrigConfigTool> ST::SUSYObjDef_xAOD::m_trigConfTool
protected

Definition at line 969 of file SUSYObjDef_xAOD.h.

◆ m_trigDecTool

asg::AnaToolHandle<Trig::TrigDecisionTool> ST::SUSYObjDef_xAOD::m_trigDecTool
protected

Definition at line 970 of file SUSYObjDef_xAOD.h.

◆ m_trigDRScoringTool

asg::AnaToolHandle<Trig::IMatchScoringTool> ST::SUSYObjDef_xAOD::m_trigDRScoringTool
protected

Definition at line 973 of file SUSYObjDef_xAOD.h.

◆ m_triggerCacheMutex

std::mutex ST::SUSYObjDef_xAOD::m_triggerCacheMutex
mutableprivate

Definition at line 446 of file SUSYObjDef_xAOD.h.

◆ m_trigGlobalEffCorrTool_diLep

asg::AnaToolHandle<ITrigGlobalEfficiencyCorrectionTool> ST::SUSYObjDef_xAOD::m_trigGlobalEffCorrTool_diLep
protected

Definition at line 951 of file SUSYObjDef_xAOD.h.

◆ m_trigGlobalEffCorrTool_diPhoton

asg::AnaToolHandle<ITrigGlobalEfficiencyCorrectionTool> ST::SUSYObjDef_xAOD::m_trigGlobalEffCorrTool_diPhoton
protected

Definition at line 967 of file SUSYObjDef_xAOD.h.

◆ m_trigGlobalEffCorrTool_multiLep

asg::AnaToolHandle<ITrigGlobalEfficiencyCorrectionTool> ST::SUSYObjDef_xAOD::m_trigGlobalEffCorrTool_multiLep
protected

Definition at line 959 of file SUSYObjDef_xAOD.h.

◆ m_trigMatchingPrefix

std::string ST::SUSYObjDef_xAOD::m_trigMatchingPrefix
protected

Use composite trigger matching tool if matching was done upstream.

Definition at line 529 of file SUSYObjDef_xAOD.h.

◆ m_trigMatchingTool

asg::AnaToolHandle<Trig::IMatchingTool> ST::SUSYObjDef_xAOD::m_trigMatchingTool
protected

Definition at line 971 of file SUSYObjDef_xAOD.h.

◆ m_trigMatchScoringTool

asg::AnaToolHandle<Trig::IMatchScoringTool> ST::SUSYObjDef_xAOD::m_trigMatchScoringTool
protected

Definition at line 972 of file SUSYObjDef_xAOD.h.

◆ m_trigNToys_diLep

int ST::SUSYObjDef_xAOD::m_trigNToys_diLep
protected

Definition at line 945 of file SUSYObjDef_xAOD.h.

◆ m_trigNToys_diPhoton

int ST::SUSYObjDef_xAOD::m_trigNToys_diPhoton
protected

Definition at line 961 of file SUSYObjDef_xAOD.h.

◆ m_trigNToys_multiLep

int ST::SUSYObjDef_xAOD::m_trigNToys_multiLep
protected

Definition at line 953 of file SUSYObjDef_xAOD.h.

◆ m_trkJetEta

double ST::SUSYObjDef_xAOD::m_trkJetEta
protected

Definition at line 750 of file SUSYObjDef_xAOD.h.

◆ m_trkJetPt

double ST::SUSYObjDef_xAOD::m_trkJetPt
protected

Definition at line 749 of file SUSYObjDef_xAOD.h.

◆ m_trkJetsyst

bool ST::SUSYObjDef_xAOD::m_trkJetsyst
protected

Definition at line 590 of file SUSYObjDef_xAOD.h.

◆ m_trkMETsyst

bool ST::SUSYObjDef_xAOD::m_trkMETsyst
protected

Definition at line 588 of file SUSYObjDef_xAOD.h.

◆ m_upstreamTriggerMatching

bool ST::SUSYObjDef_xAOD::m_upstreamTriggerMatching
protected

Definition at line 528 of file SUSYObjDef_xAOD.h.

◆ m_useBtagging

bool ST::SUSYObjDef_xAOD::m_useBtagging
protected

Definition at line 538 of file SUSYObjDef_xAOD.h.

◆ m_useBtagging_trkJet

bool ST::SUSYObjDef_xAOD::m_useBtagging_trkJet
protected

Definition at line 539 of file SUSYObjDef_xAOD.h.

◆ m_useCommonPRWFiles

bool ST::SUSYObjDef_xAOD::m_useCommonPRWFiles
protected

Definition at line 605 of file SUSYObjDef_xAOD.h.

◆ m_useIncidents

bool asg::AsgMetadataTool::m_useIncidents
privateinherited

Definition at line 128 of file AsgMetadataTool.h.

◆ m_useSigLepForIsoCloseByOR

bool ST::SUSYObjDef_xAOD::m_useSigLepForIsoCloseByOR
protected

Definition at line 801 of file SUSYObjDef_xAOD.h.

◆ m_useTRUTH3

bool ST::SUSYObjDef_xAOD::m_useTRUTH3
protected

Definition at line 804 of file SUSYObjDef_xAOD.h.

◆ m_v_trigs15_cache_diLep

std::vector<std::string> ST::SUSYObjDef_xAOD::m_v_trigs15_cache_diLep
private

Definition at line 468 of file SUSYObjDef_xAOD.h.

◆ m_v_trigs15_cache_multiLep

std::vector<std::string> ST::SUSYObjDef_xAOD::m_v_trigs15_cache_multiLep
private

Definition at line 474 of file SUSYObjDef_xAOD.h.

◆ m_v_trigs15_cache_singleEle

std::vector<std::string> ST::SUSYObjDef_xAOD::m_v_trigs15_cache_singleEle
private

Definition at line 452 of file SUSYObjDef_xAOD.h.

◆ m_v_trigs15_cache_singleLep

std::vector<std::string> ST::SUSYObjDef_xAOD::m_v_trigs15_cache_singleLep
private

Definition at line 460 of file SUSYObjDef_xAOD.h.

◆ m_v_trigs16_cache_diLep

std::vector<std::string> ST::SUSYObjDef_xAOD::m_v_trigs16_cache_diLep
private

Definition at line 469 of file SUSYObjDef_xAOD.h.

◆ m_v_trigs16_cache_multiLep

std::vector<std::string> ST::SUSYObjDef_xAOD::m_v_trigs16_cache_multiLep
private

Definition at line 475 of file SUSYObjDef_xAOD.h.

◆ m_v_trigs16_cache_singleEle

std::vector<std::string> ST::SUSYObjDef_xAOD::m_v_trigs16_cache_singleEle
private

Definition at line 453 of file SUSYObjDef_xAOD.h.

◆ m_v_trigs16_cache_singleLep

std::vector<std::string> ST::SUSYObjDef_xAOD::m_v_trigs16_cache_singleLep
private

Definition at line 461 of file SUSYObjDef_xAOD.h.

◆ m_v_trigs17_cache_diLep

std::vector<std::string> ST::SUSYObjDef_xAOD::m_v_trigs17_cache_diLep
private

Definition at line 470 of file SUSYObjDef_xAOD.h.

◆ m_v_trigs17_cache_multiLep

std::vector<std::string> ST::SUSYObjDef_xAOD::m_v_trigs17_cache_multiLep
private

Definition at line 476 of file SUSYObjDef_xAOD.h.

◆ m_v_trigs17_cache_singleEle

std::vector<std::string> ST::SUSYObjDef_xAOD::m_v_trigs17_cache_singleEle
private

Definition at line 454 of file SUSYObjDef_xAOD.h.

◆ m_v_trigs17_cache_singleLep

std::vector<std::string> ST::SUSYObjDef_xAOD::m_v_trigs17_cache_singleLep
private

Definition at line 462 of file SUSYObjDef_xAOD.h.

◆ m_v_trigs18_cache_diLep

std::vector<std::string> ST::SUSYObjDef_xAOD::m_v_trigs18_cache_diLep
private

Definition at line 471 of file SUSYObjDef_xAOD.h.

◆ m_v_trigs18_cache_multiLep

std::vector<std::string> ST::SUSYObjDef_xAOD::m_v_trigs18_cache_multiLep
private

Definition at line 477 of file SUSYObjDef_xAOD.h.

◆ m_v_trigs18_cache_singleEle

std::vector<std::string> ST::SUSYObjDef_xAOD::m_v_trigs18_cache_singleEle
private

Definition at line 455 of file SUSYObjDef_xAOD.h.

◆ m_v_trigs18_cache_singleLep

std::vector<std::string> ST::SUSYObjDef_xAOD::m_v_trigs18_cache_singleLep
private

Definition at line 463 of file SUSYObjDef_xAOD.h.

◆ m_v_trigs22_cache_diLep

std::vector<std::string> ST::SUSYObjDef_xAOD::m_v_trigs22_cache_diLep
private

Definition at line 472 of file SUSYObjDef_xAOD.h.

◆ m_v_trigs22_cache_multiLep

std::vector<std::string> ST::SUSYObjDef_xAOD::m_v_trigs22_cache_multiLep
private

Definition at line 478 of file SUSYObjDef_xAOD.h.

◆ m_v_trigs22_cache_singleEle

std::vector<std::string> ST::SUSYObjDef_xAOD::m_v_trigs22_cache_singleEle
private

Definition at line 456 of file SUSYObjDef_xAOD.h.

◆ m_v_trigs22_cache_singleLep

std::vector<std::string> ST::SUSYObjDef_xAOD::m_v_trigs22_cache_singleLep
private

Definition at line 464 of file SUSYObjDef_xAOD.h.

◆ m_v_trigs23_cache_singleEle

std::vector<std::string> ST::SUSYObjDef_xAOD::m_v_trigs23_cache_singleEle
private

Definition at line 457 of file SUSYObjDef_xAOD.h.

◆ m_v_trigs23_cache_singleLep

std::vector<std::string> ST::SUSYObjDef_xAOD::m_v_trigs23_cache_singleLep
private

Definition at line 465 of file SUSYObjDef_xAOD.h.

◆ m_v_trigs24_cache_singleEle

std::vector<std::string> ST::SUSYObjDef_xAOD::m_v_trigs24_cache_singleEle
private

Definition at line 458 of file SUSYObjDef_xAOD.h.

◆ m_v_trigs24_cache_singleLep

std::vector<std::string> ST::SUSYObjDef_xAOD::m_v_trigs24_cache_singleLep
private

Definition at line 466 of file SUSYObjDef_xAOD.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ m_WconfigReader

TEnv ST::SUSYObjDef_xAOD::m_WconfigReader
protected

Definition at line 550 of file SUSYObjDef_xAOD.h.

◆ m_WDecorName

std::string ST::SUSYObjDef_xAOD::m_WDecorName
protected

Definition at line 553 of file SUSYObjDef_xAOD.h.

◆ m_WtagConfig

std::string ST::SUSYObjDef_xAOD::m_WtagConfig
protected

Definition at line 556 of file SUSYObjDef_xAOD.h.

◆ m_WTaggerTool

asg::AnaToolHandle<SmoothedWZTagger> ST::SUSYObjDef_xAOD::m_WTaggerTool
protected

Definition at line 849 of file SUSYObjDef_xAOD.h.

◆ m_WTagjetUncertaintiesTool

asg::AnaToolHandle<ICPJetUncertaintiesTool> ST::SUSYObjDef_xAOD::m_WTagjetUncertaintiesTool
protected

Definition at line 853 of file SUSYObjDef_xAOD.h.

◆ m_WTagUncConfig

std::string ST::SUSYObjDef_xAOD::m_WTagUncConfig
protected

Definition at line 561 of file SUSYObjDef_xAOD.h.

◆ m_WZTaggerCalibArea

std::string ST::SUSYObjDef_xAOD::m_WZTaggerCalibArea
protected

Definition at line 559 of file SUSYObjDef_xAOD.h.

◆ m_ZconfigReader

TEnv ST::SUSYObjDef_xAOD::m_ZconfigReader
protected

Definition at line 551 of file SUSYObjDef_xAOD.h.

◆ m_ZDecorName

std::string ST::SUSYObjDef_xAOD::m_ZDecorName
protected

Definition at line 554 of file SUSYObjDef_xAOD.h.

◆ m_ZtagConfig

std::string ST::SUSYObjDef_xAOD::m_ZtagConfig
protected

Definition at line 557 of file SUSYObjDef_xAOD.h.

◆ m_ZTaggerTool

asg::AnaToolHandle<SmoothedWZTagger> ST::SUSYObjDef_xAOD::m_ZTaggerTool
protected

Definition at line 850 of file SUSYObjDef_xAOD.h.

◆ m_ZTagjetUncertaintiesTool

asg::AnaToolHandle<ICPJetUncertaintiesTool> ST::SUSYObjDef_xAOD::m_ZTagjetUncertaintiesTool
protected

Definition at line 854 of file SUSYObjDef_xAOD.h.

◆ m_ZTagUncConfig

std::string ST::SUSYObjDef_xAOD::m_ZTagUncConfig
protected

Definition at line 562 of file SUSYObjDef_xAOD.h.

◆ prompt_electrons

const xAOD::ElectronContainer* ST::SUSYObjDef_xAOD::prompt_electrons = nullptr

Definition at line 211 of file SUSYObjDef_xAOD.h.

◆ prompt_muons

const xAOD::MuonContainer* ST::SUSYObjDef_xAOD::prompt_muons = nullptr

Definition at line 205 of file SUSYObjDef_xAOD.h.


The documentation for this class was generated from the following files:
ST::SUSYObjDef_xAOD::m_WDecorName
std::string m_WDecorName
Definition: SUSYObjDef_xAOD.h:553
ST::SUSYObjDef_xAOD::m_v_trigs15_cache_singleLep
std::vector< std::string > m_v_trigs15_cache_singleLep
Definition: SUSYObjDef_xAOD.h:460
LArG4FSStartPointFilter.part
part
Definition: LArG4FSStartPointFilter.py:21
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
ST::SUSYObjDef_xAOD::m_applyJVTCut
bool m_applyJVTCut
Definition: SUSYObjDef_xAOD.h:825
ST::SUSYObjDef_xAOD::m_orBoostedMuonC1
double m_orBoostedMuonC1
Definition: SUSYObjDef_xAOD.h:777
ST::SUSYObjDef_xAOD::m_autoconfigPRWCombinedmode
bool m_autoconfigPRWCombinedmode
Definition: SUSYObjDef_xAOD.h:599
ST::SUSYObjDef_xAOD::GetTauTriggerEfficiencySF
double GetTauTriggerEfficiencySF(const xAOD::TauJet &tau, const std::string &trigExpr="tau25_medium1_tracktwo") override final
Definition: Taus.cxx:194
ST::SUSYObjDef_xAOD::m_muonEfficiencySFTool
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonEfficiencySFTool
Definition: SUSYObjDef_xAOD.h:875
asg::AnaToolHandle::initialize
StatusCode initialize()
initialize the tool
ST::SUSYObjDef_xAOD::m_badJetCut
std::string m_badJetCut
Definition: SUSYObjDef_xAOD.h:544
ST::SUSYObjDef_xAOD::emulateHLT
bool emulateHLT(const std::string &triggerName) const
Definition: Trigger.cxx:97
bJetLabel
const std::string bJetLabel
Definition: OverlapRemovalTester.cxx:70
ST::SUSYObjDef_xAOD::m_isoHighPtTool
asg::AnaToolHandle< CP::IIsolationSelectionTool > m_isoHighPtTool
Definition: SUSYObjDef_xAOD.h:979
ST::SUSYObjDef_xAOD::m_photonIdBaselineDFName
std::string m_photonIdBaselineDFName
Definition: SUSYObjDef_xAOD.h:994
ST::SUSYObjDef_xAOD::m_autoconfigPRWRtags
std::string m_autoconfigPRWRtags
Definition: SUSYObjDef_xAOD.h:601
ST::SUSYObjDef_xAOD::m_outElectronLocation
SG::WriteHandleKey< xAOD::ElectronContainer > m_outElectronLocation
Definition: SUSYObjDef_xAOD.h:898
xAOD::TrackParticle_v1::pt
virtual double pt() const override final
The transverse momentum ( ) of the particle.
Definition: TrackParticle_v1.cxx:75
CP::IMuonLRTOverlapRemovalTool::defaultStrategy
@ defaultStrategy
Definition: IMuonLRTOverlapRemovalTool.h:38
ST::SUSYObjDef_xAOD::m_GSFLRTCollectionName
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_GSFLRTCollectionName
Definition: SUSYObjDef_xAOD.h:482
ST::SUSYObjDef_xAOD::m_orBoostedElectronC1
double m_orBoostedElectronC1
Definition: SUSYObjDef_xAOD.h:773
xAOD::numberOfPixelHoles
@ numberOfPixelHoles
number of pixel layers on track with absence of hits [unit8_t].
Definition: TrackingPrimitives.h:262
JetPileupLabelingTool::decorate
StatusCode decorate(const xAOD::JetContainer &jets) const override
Decorate hard-scatter and pileup labels to a jet collection.
Definition: JetPileupLabelingTool.cxx:43
ST::SUSYObjDef_xAOD::m_orBoostedMuonC2
double m_orBoostedMuonC2
Definition: SUSYObjDef_xAOD.h:778
LikeEnum::Loose
@ Loose
Definition: LikelihoodEnums.h:12
ST::SUSYObjDef_xAOD::m_acc_photonIdBaseline
SG::ConstAccessor< char > m_acc_photonIdBaseline
Definition: SUSYObjDef_xAOD.h:1000
TrigJetMonitorAlgorithm.jetcoll
jetcoll
Definition: TrigJetMonitorAlgorithm.py:1225
ST::SUSYObjDef_xAOD::m_photonBaselinePt
double m_photonBaselinePt
Definition: SUSYObjDef_xAOD.h:721
ST::SUSYObjDef_xAOD::IsHighPtMuon
bool IsHighPtMuon(const xAOD::Muon &input) const override final
Definition: Muons.cxx:386
ST::SUSYObjDef_xAOD::MergeElectrons
StatusCode MergeElectrons(const xAOD::ElectronContainer &electrons, xAOD::ElectronContainer *outputCol, const std::set< const xAOD::Electron * > &ElectronsToRemove) const override final
Definition: Electrons.cxx:61
NuRMu
@ NuRMu
Definition: TruthClasses.h:73
temp
Definition: JetEventDict.h:21
ST::SUSYObjDef_xAOD::m_deadHVTool
asg::AnaToolHandle< IAsgDeadHVCellRemovalTool > m_deadHVTool
Definition: SUSYObjDef_xAOD.h:906
ST::SUSYObjDef_xAOD::m_eleIdExpert
bool m_eleIdExpert
Definition: SUSYObjDef_xAOD.h:650
ST::SUSYObjDef_xAOD::m_doPhiReso
bool m_doPhiReso
Definition: SUSYObjDef_xAOD.h:594
IDTPM::nPixelDeadSensors
float nPixelDeadSensors(const U &p)
Definition: TrackParametersHelper.h:642
ST::SUSYObjDef_xAOD::m_jetfJvtEfficiencyTool
asg::AnaToolHandle< CP::IJvtEfficiencyTool > m_jetfJvtEfficiencyTool
Definition: SUSYObjDef_xAOD.h:847
ST::SUSYObjDef_xAOD::m_tauSelTool
asg::AnaToolHandle< TauAnalysisTools::ITauSelectionTool > m_tauSelTool
Definition: SUSYObjDef_xAOD.h:920
xAOD::muon
@ muon
Definition: TrackingPrimitives.h:196
isGaugino
bool isGaugino(const T &p)
Definition: AtlasPID.h:504
ST::SUSYObjDef_xAOD::m_ZconfigReader
TEnv m_ZconfigReader
Definition: SUSYObjDef_xAOD.h:551
ST::SUSYObjDef_xAOD::GetEleTriggerEfficiencySF
double GetEleTriggerEfficiencySF(const xAOD::Electron &el, const std::string &trigExpr="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") const override final
Definition: Electrons.cxx:558
ST::SUSYObjDef_xAOD::m_trig2022combination_multiLep
std::string m_trig2022combination_multiLep
Definition: SUSYObjDef_xAOD.h:958
ST::SUSYObjDef_xAOD::m_doTTVAsf
bool m_doTTVAsf
Definition: SUSYObjDef_xAOD.h:526
ST::SUSYObjDef_xAOD::m_commonPRWFileMC23e
std::string m_commonPRWFileMC23e
Definition: SUSYObjDef_xAOD.h:613
CP::SystematicVariation::CONTINUOUS
@ CONTINUOUS
Definition: SystematicVariation.h:79
ST::SUSYObjDef_xAOD::m_fJvtWP
std::string m_fJvtWP
Definition: SUSYObjDef_xAOD.h:753
asg::AsgTool
Base class for the dual-use tool implementation classes.
Definition: AsgTool.h:47
ST::SUSYObjDef_xAOD::GetTotalTauSF
double GetTotalTauSF(const xAOD::TauJetContainer &taus, const bool idSF=true, const bool triggerSF=true, const std::string &trigExpr="tau25_medium1_tracktwo") override final
Definition: Taus.cxx:228
ST::SUSYObjDef_xAOD::m_metDoSetMuonJetEMScale
bool m_metDoSetMuonJetEMScale
Definition: SUSYObjDef_xAOD.h:580
ST::SUSYObjDef_xAOD::m_v_trigs18_cache_diLep
std::vector< std::string > m_v_trigs18_cache_diLep
Definition: SUSYObjDef_xAOD.h:471
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
ST::SUSYObjDef_xAOD::BtagSF
float BtagSF(const xAOD::JetContainer *jets) override final
Definition: Jets.cxx:827
ST::SUSYObjDef_xAOD::m_ZTagjetUncertaintiesTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_ZTagjetUncertaintiesTool
Definition: SUSYObjDef_xAOD.h:854
IAsgPhotonEfficiencyCorrectionTool::getEfficiencyScaleFactor
virtual CP::CorrectionCode getEfficiencyScaleFactor(const xAOD::Egamma &, double &) const =0
Get the "photon scale factor" as a return value.
ST::SUSYObjDef_xAOD::m_muBaselineEta
double m_muBaselineEta
Definition: SUSYObjDef_xAOD.h:707
ST::SUSYObjDef_xAOD::m_trigGlobalEffCorrTool_multiLep
asg::AnaToolHandle< ITrigGlobalEfficiencyCorrectionTool > m_trigGlobalEffCorrTool_multiLep
Definition: SUSYObjDef_xAOD.h:959
ST::SUSYObjDef_xAOD::IsTrackBJetContinuous
int IsTrackBJetContinuous(const xAOD::Jet &input) const override final
Definition: Jets.cxx:816
ST::SUSYObjDef_xAOD::IsTruthBJet
bool IsTruthBJet(const xAOD::Jet &input) const override final
Definition: Truth.cxx:301
xAOD::Electron
Electron_v1 Electron
Definition of the current "egamma version".
Definition: Event/xAOD/xAODEgamma/xAODEgamma/Electron.h:17
xAOD::Egamma
Egamma_v1 Egamma
Definition of the current "egamma version".
Definition: Egamma.h:17
ST::SUSYObjDef_xAOD::m_jetTerm
std::string m_jetTerm
Definition: SUSYObjDef_xAOD.h:572
ST::SUSYObjDef_xAOD::m_trig2022combination_diPhoton
std::string m_trig2022combination_diPhoton
Definition: SUSYObjDef_xAOD.h:966
ST::SUSYObjDef_xAOD::m_trigNToys_diLep
int m_trigNToys_diLep
Definition: SUSYObjDef_xAOD.h:945
ST::SUSYObjDef_xAOD::m_triggerCacheMutex
std::mutex m_triggerCacheMutex
Definition: SUSYObjDef_xAOD.h:446
CP::IIsolationCorrectionTool::applySystematicVariation
virtual StatusCode applySystematicVariation(const CP::SystematicSet &systConfig)=0
effects: configure this tool for the given list of systematic variations.
ST::SUSYObjDef_xAOD::m_jetUncertaintiesCalibArea
std::string m_jetUncertaintiesCalibArea
Definition: SUSYObjDef_xAOD.h:533
asg::AsgMetadataTool::beginEvent
virtual StatusCode beginEvent()
Function called when a new events is loaded.
Definition: AsgMetadataTool.cxx:201
ST::SUSYObjDef_xAOD::m_prwActualMu2022File
std::string m_prwActualMu2022File
Definition: SUSYObjDef_xAOD.h:619
ST::SUSYObjDef_xAOD::m_jesConfigAFII
std::string m_jesConfigAFII
Definition: SUSYObjDef_xAOD.h:863
ST::SUSYObjDef_xAOD::m_BtagSystStrategy
std::string m_BtagSystStrategy
Definition: SUSYObjDef_xAOD.h:681
ST::SUSYObjDef_xAOD::m_tauEffToolRecommendationTag
std::string m_tauEffToolRecommendationTag
Definition: SUSYObjDef_xAOD.h:736
get_generator_info.result
result
Definition: get_generator_info.py:21
ST::SUSYObjDef_xAOD::m_tauIdBaseline
std::string m_tauIdBaseline
Definition: SUSYObjDef_xAOD.h:656
ST::SUSYObjDef_xAOD::IsSignalElectron
bool IsSignalElectron(const xAOD::Electron &input, const float etcut, const float d0sigcut, const float z0cut, const float etacut=DUMMYDEF) const override final
Definition: Electrons.cxx:362
hotSpotInTAG.suffix
string suffix
Definition: hotSpotInTAG.py:185
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:407
xAOD::JetAttribute::LArQuality
@ LArQuality
Definition: JetAttributes.h:83
LikeEnum::VeryLoose
@ VeryLoose
Definition: LikelihoodEnums.h:11
runLayerRecalibration.chain
chain
Definition: runLayerRecalibration.py:175
NuREle
@ NuREle
Definition: TruthClasses.h:72
ST::SUSYObjDef_xAOD::m_showerType
int m_showerType
Definition: SUSYObjDef_xAOD.h:812
ST::SUSYObjDef_xAOD::m_elecChargeEffCorrTool
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecChargeEffCorrTool
Definition: SUSYObjDef_xAOD.h:918
ST::SUSYObjDef_xAOD::prepareLRTMuons
StatusCode prepareLRTMuons(const xAOD::MuonContainer *inMuons, xAOD::MuonContainer *copy) const override final
Definition: Muons.cxx:74
ST::SUSYObjDef_xAOD::m_photonTrigEffTools
ToolHandleArray< IAsgPhotonEfficiencyCorrectionTool > m_photonTrigEffTools
Definition: SUSYObjDef_xAOD.h:914
ST::SUSYObjDef_xAOD::m_acc_eleId
SG::ConstAccessor< char > m_acc_eleId
Definition: SUSYObjDef_xAOD.h:999
ORUtils::ToolBox::eleMuORT
OverlapHandle_t eleMuORT
Definition: ToolBox.h:70
ST::SUSYObjDef_xAOD::JVT_SFsys
double JVT_SFsys(const xAOD::JetContainer *jets, const CP::SystematicSet &systConfig) override final
Definition: Jets.cxx:1036
ST::SUSYObjDef_xAOD::m_mu_id_support
int m_mu_id_support
Definition: SUSYObjDef_xAOD.h:631
ST::SUSYObjDef_xAOD::m_eleIsoHighPt_WP
std::string m_eleIsoHighPt_WP
Definition: SUSYObjDef_xAOD.h:658
ST::SUSYObjDef_xAOD::m_BtagWP
std::string m_BtagWP
Definition: SUSYObjDef_xAOD.h:677
ST::SUSYObjDef_xAOD::m_eleAllowRun3TrigSFFallback
bool m_eleAllowRun3TrigSFFallback
Definition: SUSYObjDef_xAOD.h:702
ST::SUSYObjDef_xAOD::m_egammaCalibTool
asg::AnaToolHandle< CP::IEgammaCalibrationAndSmearingTool > m_egammaCalibTool
Combined electron collection.
Definition: SUSYObjDef_xAOD.h:901
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:24
ST::SUSYObjDef_xAOD::GetTotalMuonTriggerSF
double GetTotalMuonTriggerSF(const xAOD::MuonContainer &sfmuons, const std::string &trigExpr) override final
Definition: Muons.cxx:547
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
ST::SUSYObjDef_xAOD::m_trig2016combination_diPhoton
std::string m_trig2016combination_diPhoton
Definition: SUSYObjDef_xAOD.h:963
xAOD::JetAttribute::FracSamplingMax
@ FracSamplingMax
Definition: JetAttributes.h:116
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
ST::SUSYObjDef_xAOD::m_acc_eleIdBaseline
SG::ConstAccessor< char > m_acc_eleIdBaseline
Definition: SUSYObjDef_xAOD.h:998
CP::IMuonTriggerScaleFactors::getTriggerEfficiency
virtual CorrectionCode getTriggerEfficiency(const xAOD::Muon &mu, Double_t &efficiency, const std::string &trigger, Bool_t dataType) const =0
ST::SUSYObjDef_xAOD::split
const std::vector< std::string > split(const std::string &s, const std::string &delim) const
Definition: SUSYObjDef_xAOD.cxx:1811
ST::SUSYObjDef_xAOD::prompt_electrons
const xAOD::ElectronContainer * prompt_electrons
Definition: SUSYObjDef_xAOD.h:211
ST::SUSYObjDef_xAOD::m_metDoRemoveMuonJets
bool m_metDoRemoveMuonJets
Definition: SUSYObjDef_xAOD.h:581
CP::make_systematics_vector
std::vector< CP::SystematicSet > make_systematics_vector(const SystematicSet &systematics)
utility functions for working with systematics
Definition: SystematicsUtil.cxx:25
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:138
ST::SUSYObjDef_xAOD::m_outMETTerm
std::string m_outMETTerm
Definition: SUSYObjDef_xAOD.h:578
WBosonLRSM
@ WBosonLRSM
Definition: TruthClasses.h:71
ST::SUSYObjDef_xAOD::m_label_truthKey
SG::ReadDecorHandleKey< xAOD::JetContainer > m_label_truthKey
Definition: SUSYObjDef_xAOD.h:857
CP::IJvtEfficiencyTool::getEfficiencyScaleFactor
virtual CorrectionCode getEfficiencyScaleFactor(const xAOD::Jet &jet, float &sf) const =0
Calculate the efficiency scale factor for the provided jet.
ST::SUSYObjDef_xAOD::m_v_trigs23_cache_singleLep
std::vector< std::string > m_v_trigs23_cache_singleLep
Definition: SUSYObjDef_xAOD.h:465
ST::SUSYObjDef_xAOD::m_conf_to_prop
std::map< std::string, std::string > m_conf_to_prop
Definition: SUSYObjDef_xAOD.h:436
ST::SUSYObjDef_xAOD::m_orMuJetInnerDR
double m_orMuJetInnerDR
Definition: SUSYObjDef_xAOD.h:783
ST::SUSYObjDef_xAOD::m_muonEfficiencyBMHighPtSFTool
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonEfficiencyBMHighPtSFTool
Definition: SUSYObjDef_xAOD.h:876
CP::IIsolationCorrectionTool::applyCorrection
virtual CP::CorrectionCode applyCorrection(xAOD::Egamma &)=0
ST::SUSYObjDef_xAOD::m_muBaselinePt
double m_muBaselinePt
Definition: SUSYObjDef_xAOD.h:706
ST::SUSYObjDef_xAOD::m_pmgSHnjetWeighterWZ
asg::AnaToolHandle< IWeightTool > m_pmgSHnjetWeighterWZ
Definition: SUSYObjDef_xAOD.h:990
ST::SUSYObjDef_xAOD::IsBJet
bool IsBJet(const xAOD::Jet &input) const override final
Definition: Jets.cxx:772
ST::SUSYObjDef_xAOD::m_v_trigs15_cache_multiLep
std::vector< std::string > m_v_trigs15_cache_multiLep
Definition: SUSYObjDef_xAOD.h:474
ST::SUSYObjDef_xAOD::m_legsPerTool
std::map< std::string, std::string > m_legsPerTool
Definition: SUSYObjDef_xAOD.h:829
ST::SUSYObjDef_xAOD::m_ZTagUncConfig
std::string m_ZTagUncConfig
Definition: SUSYObjDef_xAOD.h:562
ST::SUSYObjDef_xAOD::m_orDoElBjet
bool m_orDoElBjet
Definition: SUSYObjDef_xAOD.h:769
IAsgDeadHVCellRemovalTool::accept
virtual bool accept(const xAOD::Egamma *part) const =0
ST::SUSYObjDef_xAOD::m_tauSmearingToolGenerator
std::string m_tauSmearingToolGenerator
Definition: SUSYObjDef_xAOD.h:737
TauAnalysisTools::JETIDRNNTIGHT
@ JETIDRNNTIGHT
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:22
ST::MET_TST
@ MET_TST
Definition: ISUSYObjDef_xAODTool.h:81
ST::SUSYObjDef_xAOD::m_trigGlobalEffCorrTool_diPhoton
asg::AnaToolHandle< ITrigGlobalEfficiencyCorrectionTool > m_trigGlobalEffCorrTool_diPhoton
Definition: SUSYObjDef_xAOD.h:967
asg::AnaToolHandle::retrieve
StatusCode retrieve()
initialize the tool
ST::SUSYObjDef_xAOD::m_photonBaselineCrackVeto
bool m_photonBaselineCrackVeto
Definition: SUSYObjDef_xAOD.h:725
ST::SUSYObjDef_xAOD::m_fatJetUncertaintiesPDsmearing
bool m_fatJetUncertaintiesPDsmearing
Definition: SUSYObjDef_xAOD.h:547
ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_reco
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_reco
Combined muon collection.
Definition: SUSYObjDef_xAOD.h:885
SG::VIEW_ELEMENTS
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
Definition: OwnershipPolicy.h:18
ST::SUSYObjDef_xAOD::m_useCommonPRWFiles
bool m_useCommonPRWFiles
Definition: SUSYObjDef_xAOD.h:605
ST::SUSYObjDef_xAOD::getTauConfig
void getTauConfig(const std::string &tauConfigPath, std::vector< float > &pT_window, std::vector< float > &eta_window, bool &eleOLR, bool &muVeto, bool &muOLR) const
Definition: SUSYObjDef_xAOD.cxx:1842
ST::SUSYObjDef_xAOD::m_elecSelLikelihood
asg::AnaToolHandle< IAsgElectronLikelihoodTool > m_elecSelLikelihood
Definition: SUSYObjDef_xAOD.h:902
ST::SUSYObjDef_xAOD::m_v_trigs24_cache_singleEle
std::vector< std::string > m_v_trigs24_cache_singleEle
Definition: SUSYObjDef_xAOD.h:458
ST::SUSYObjDef_xAOD::GetTriggerOR
std::vector< std::string > GetTriggerOR(const std::string &trigExpr) const
Definition: Trigger.cxx:320
ST::SUSYObjDef_xAOD::FillMuon
StatusCode FillMuon(xAOD::Muon &input, const float ptcut, const float etacut) override final
Definition: Muons.cxx:208
ST::SUSYObjDef_xAOD::m_orMuJetPtRatio
double m_orMuJetPtRatio
Definition: SUSYObjDef_xAOD.h:781
CP::SystematicSet::size
size_t size() const
returns: size of the set
Definition: SystematicSet.h:71
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_trig_mixLep
std::vector< asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > > m_elecEfficiencySFTool_trig_mixLep
Definition: SUSYObjDef_xAOD.h:893
ST::SUSYObjDef_xAOD::GetTotalMuonSF
double GetTotalMuonSF(const xAOD::MuonContainer &muons, const bool recoSF=true, const bool isoSF=true, const std::string &trigExpr="HLT_mu20_iloose_L1MU15_OR_HLT_mu50", const bool bmhptSF=true) override final
Definition: Muons.cxx:602
ST::EventWeight
@ EventWeight
Definition: ISUSYObjDef_xAODTool.h:84
IMETSystematicsTool::applyCorrection
virtual CP::CorrectionCode applyCorrection(xAOD::MissingET &met, const xAOD::MissingETAssociationHelper &helper) const =0
TauAnalysisTools::JETIDRNNMEDIUM
@ JETIDRNNMEDIUM
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:21
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
IsoCloseByCorrectionTest.WP
WP
Definition: IsoCloseByCorrectionTest.py:56
IWeightTool::getWeight
virtual double getWeight() const =0
returns: the value that was calculated from the usual Athena storegate
ST::SUSYObjDef_xAOD::m_jetNNJvtMomentTool
asg::AnaToolHandle< JetPileupTag::JetVertexNNTagger > m_jetNNJvtMomentTool
Definition: SUSYObjDef_xAOD.h:843
ST::SUSYObjDef_xAOD::m_muTriggerSFCalibRelease
std::string m_muTriggerSFCalibRelease
Definition: SUSYObjDef_xAOD.h:675
ST::SUSYObjDef_xAOD::IsBadMuon
bool IsBadMuon(const xAOD::Muon &input, const float qopcut) const override final
Definition: Muons.cxx:405
ST::SUSYObjDef_xAOD::lrt_muons
const xAOD::MuonContainer * lrt_muons
Definition: SUSYObjDef_xAOD.h:206
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
ST::SUSYObjDef_xAOD::m_EigenvectorReductionC
std::string m_EigenvectorReductionC
Definition: SUSYObjDef_xAOD.h:683
StateLessPT_NewConfig.Format
Format
Definition: StateLessPT_NewConfig.py:149
CP::IJvtEfficiencyTool::getInefficiencyScaleFactor
virtual CorrectionCode getInefficiencyScaleFactor(const xAOD::Jet &jet, float &sf) const =0
Calculate the inefficiency scale factor for the provided jet.
ST::SUSYObjDef_xAOD::m_fJvtConfigRun2
std::string m_fJvtConfigRun2
Definition: SUSYObjDef_xAOD.h:756
ST::SUSYObjDef_xAOD::m_doElIsoSignal
bool m_doElIsoSignal
Definition: SUSYObjDef_xAOD.h:797
PATCore::ParticleDataType::Fast
@ Fast
Definition: PATCoreEnums.h:22
ST::SUSYObjDef_xAOD::m_photonTriggerSFTool
asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > m_photonTriggerSFTool
Definition: SUSYObjDef_xAOD.h:909
ST::SUSYObjDef_xAOD::m_isoBaselineTool
asg::AnaToolHandle< CP::IIsolationSelectionTool > m_isoBaselineTool
Definition: SUSYObjDef_xAOD.h:978
ST::SUSYObjDef_xAOD::m_elecTrigEffTools
ToolHandleArray< IAsgElectronEfficiencyCorrectionTool > m_elecTrigEffTools
Definition: SUSYObjDef_xAOD.h:896
ST::SUSYObjDef_xAOD::m_JvtConfigRun2
std::string m_JvtConfigRun2
Definition: SUSYObjDef_xAOD.h:746
ST::SUSYObjDef_xAOD::m_tauSmearingTool
asg::AnaToolHandle< TauAnalysisTools::ITauSmearingTool > m_tauSmearingTool
Definition: SUSYObjDef_xAOD.h:922
ST::SUSYObjDef_xAOD::m_muPt
double m_muPt
Definition: SUSYObjDef_xAOD.h:708
ST::SUSYObjDef_xAOD::m_v_trigs17_cache_singleEle
std::vector< std::string > m_v_trigs17_cache_singleEle
Definition: SUSYObjDef_xAOD.h:454
TauAnalysisTools::ITauSmearingTool::applyCorrection
virtual CP::CorrectionCode applyCorrection(xAOD::TauJet &xTau) const =0
Declare the interface that the class provides.
ST::SUSYObjDef_xAOD::m_jetInputType
int m_jetInputType
Definition: SUSYObjDef_xAOD.h:520
ST::SUSYObjDef_xAOD::IsCosmicMuon
bool IsCosmicMuon(const xAOD::Muon &input, const float z0cut, const float d0cut) const override final
Definition: Muons.cxx:444
xAOD::TrackingHelpers::d0significance
double d0significance(const xAOD::TrackParticle *tp, double d0_uncert_beam_spot_2)
Definition: TrackParticlexAODHelpers.cxx:42
ST::SUSYObjDef_xAOD::m_el_iso_support
std::vector< std::string > m_el_iso_support
Definition: SUSYObjDef_xAOD.h:633
xAOD::TruthEventBase_v1::truthParticle
const TruthParticle * truthParticle(size_t index) const
Get a pointer to one of the truth particles.
Definition: TruthEventBase_v1.cxx:50
asg::AnaToolHandle::setTypeAndName
void setTypeAndName(const std::string &val_typeAndName)
set the value of type and name
ORUtils::recommendedTools
StatusCode recommendedTools(const ORFlags &flags, ToolBox &toolBox)
Pre-configured standard recommended OR tools.
Definition: OverlapRemovalInit.cxx:50
ST::SUSYObjDef_xAOD::m_trig2015combination_singleLep
std::string m_trig2015combination_singleLep
Definition: SUSYObjDef_xAOD.h:937
ST::SUSYObjDef_xAOD::configFromFile
void configFromFile(bool &property, const std::string &propname, TEnv &rEnv, bool defaultValue)
Definition: SUSYObjDef_xAOD.cxx:1258
skel.it
it
Definition: skel.GENtoEVGEN.py:407
CP::IPileupReweightingTool::GetSumOfEventWeights
virtual Double_t GetSumOfEventWeights(Int_t channel)=0
possible alternative to using the EventBookkeepers info ... assuming you made your PRW Config file!...
ST::SUSYObjDef_xAOD::m_metRemoveOverlappingCaloTaggedMuons
bool m_metRemoveOverlappingCaloTaggedMuons
Definition: SUSYObjDef_xAOD.h:579
ReadBchFromCrest.begin
begin
Definition: ReadBchFromCrest.py:80
ST::SUSYObjDef_xAOD::m_metMaker
asg::AnaToolHandle< IMETMaker > m_metMaker
Definition: SUSYObjDef_xAOD.h:933
ST::SUSYObjDef_xAOD::FillElectron
StatusCode FillElectron(xAOD::Electron &input, const float etcut, const float etacut) override final
Definition: Electrons.cxx:223
ST::SUSYObjDef_xAOD::m_trig2018combination_diPhoton
std::string m_trig2018combination_diPhoton
Definition: SUSYObjDef_xAOD.h:965
ST::SUSYObjDef_xAOD::m_trigNToys_diPhoton
int m_trigNToys_diPhoton
Definition: SUSYObjDef_xAOD.h:961
CP::SystematicSet
Class to wrap a set of SystematicVariations.
Definition: SystematicSet.h:31
ST::SUSYObjDef_xAOD::m_trigMatchScoringTool
asg::AnaToolHandle< Trig::IMatchScoringTool > m_trigMatchScoringTool
Definition: SUSYObjDef_xAOD.h:972
ST::SUSYObjDef_xAOD::GetTotalElectronSF
float GetTotalElectronSF(const xAOD::ElectronContainer &electrons, const bool recoSF=true, const bool idSF=true, const bool triggerSF=true, const bool isoSF=true, const std::string &trigExpr="singleLepton", const bool ecidsSF=false, const bool cidSF=false) override final
Definition: Electrons.cxx:627
ST::SUSYObjDef_xAOD::m_TopTaggerTool
asg::AnaToolHandle< JSSWTopTaggerDNN > m_TopTaggerTool
Definition: SUSYObjDef_xAOD.h:851
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
defineDB.jets
jets
Definition: JetTagCalibration/share/defineDB.py:24
IMETMaker::rebuildJetMET
virtual StatusCode rebuildJetMET(const std::string &metJetKey, const std::string &metSoftKey, xAOD::MissingETContainer *metCont, const xAOD::JetContainer *jets, const xAOD::MissingETContainer *metCoreCont, xAOD::MissingETAssociationHelper &helper, bool doJetJVT) const =0
ST::SUSYObjDef_xAOD::m_orBtagWP
std::string m_orBtagWP
Definition: SUSYObjDef_xAOD.h:786
ST::SUSYObjDef_xAOD::m_elePt
double m_elePt
Definition: SUSYObjDef_xAOD.h:693
CP::IPileupReweightingTool::apply
virtual StatusCode apply(const xAOD::EventInfo &eventInfo, bool mu_dependent=true)=0
Decorates with: MC: PileupWeight (CombinedWeight[*UnrepresentedDataWeight if action=2]),...
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
CP::IIsolationCloseByCorrectionTool::getCloseByIsoCorrection
virtual CorrectionCode getCloseByIsoCorrection(const EventContext &ctx, const xAOD::ElectronContainer *Electrons=nullptr, const xAOD::MuonContainer *Muons=nullptr, const xAOD::PhotonContainer *Photons=nullptr) const =0
downloadSingle.dataType
string dataType
Definition: downloadSingle.py:18
asg::AsgMetadataTool::inputMetaStore
MetaStorePtr_t inputMetaStore() const
Accessor for the input metadata store.
Definition: AsgMetadataTool.cxx:93
TauAnalysisTools::ITauSelectionTool::accept
virtual asg::AcceptData accept(const xAOD::IParticle *p) const =0
Get the decision using a generic IParticle pointer.
ParticleTest.tp
tp
Definition: ParticleTest.py:25
TauAnalysisTools::JETIDRNNLOOSE
@ JETIDRNNLOOSE
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:20
ST::SUSYObjDef_xAOD::m_muId
int m_muId
Definition: SUSYObjDef_xAOD.h:651
ST::SUSYObjDef_xAOD::m_photonIso_WP
std::string m_photonIso_WP
Definition: SUSYObjDef_xAOD.h:667
ST::SUSYObjDef_xAOD::prepareLRTElectrons
StatusCode prepareLRTElectrons(const xAOD::ElectronContainer *inMuons, xAOD::ElectronContainer *copy) const override final
Definition: Electrons.cxx:90
DataVector::get
const T * get(size_type n) const
Access an element, as an rvalue.
ST::SUSYObjDef_xAOD::m_fJvtEtaMin
double m_fJvtEtaMin
Definition: SUSYObjDef_xAOD.h:755
ST::SUSYObjDef_xAOD::m_v_trigs18_cache_singleLep
std::vector< std::string > m_v_trigs18_cache_singleLep
Definition: SUSYObjDef_xAOD.h:463
CP::SystematicSet::name
std::string name() const
returns: the systematics joined into a single string.
Definition: SystematicSet.cxx:277
ST::SUSYObjDef_xAOD::GetSignalElecSF
float GetSignalElecSF(const xAOD::Electron &el, const bool recoSF=true, const bool idSF=true, const bool triggerSF=true, const bool isoSF=true, const std::string &trigExpr="singleLepton", const bool ecidsSF=false, const bool cidSF=false) override final
Definition: Electrons.cxx:420
ST::SUSYObjDef_xAOD::m_doPhIsoSignal
bool m_doPhIsoSignal
Definition: SUSYObjDef_xAOD.h:798
xAOD::EventInfo_v1::beamPosSigmaX
float beamPosSigmaX() const
The width of the beam spot in the X direction.
ST::SUSYObjDef_xAOD::m_muonTTVAEfficiencySFTool
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonTTVAEfficiencySFTool
Definition: SUSYObjDef_xAOD.h:877
ST::SUSYObjDef_xAOD::m_el_iso_fallback
std::map< std::string, std::string > m_el_iso_fallback
Definition: SUSYObjDef_xAOD.h:637
ANA_MSG_ERROR
#define ANA_MSG_ERROR(xmsg)
Macro printing error messages.
Definition: Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:294
ST::SUSYObjDef_xAOD::m_force_noElId
bool m_force_noElId
Definition: SUSYObjDef_xAOD.h:524
PhotonConv
@ PhotonConv
Definition: TruthClasses.h:59
CP::IMuonCalibrationAndSmearingTool::applyCorrection
virtual CorrectionCode applyCorrection(xAOD::Muon &mu) const =0
Declare the interface that the class provides.
xAOD::ShallowAuxContainer::name
const char * name() const
Get the name of the container instance.
Definition: ShallowAuxContainer.cxx:600
IBTaggingSelectionTool::getTaggerWeight
virtual CP::CorrectionCode getTaggerWeight(const xAOD::Jet &jet, double &tagweight) const =0
ST::SUSYObjDef_xAOD::m_mubaselined0sig
double m_mubaselined0sig
Definition: SUSYObjDef_xAOD.h:712
ST::SUSYObjDef_xAOD::m_BtagMinPt
double m_BtagMinPt
Definition: SUSYObjDef_xAOD.h:679
LArG4GenerateShowerLib.condition
condition
Definition: LArG4GenerateShowerLib.py:19
ST::SUSYObjDef_xAOD::m_commonPRWFileMC21a
std::string m_commonPRWFileMC21a
Definition: SUSYObjDef_xAOD.h:609
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:157
xAOD::numberOfPixelHits
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
Definition: TrackingPrimitives.h:260
ST::SUSYObjDef_xAOD::m_prwActualMu2024File
std::string m_prwActualMu2024File
Definition: SUSYObjDef_xAOD.h:621
CP::IIsolationSelectionTool::accept
virtual asg::AcceptData accept(const xAOD::Photon &x) const =0
Declare the interface that the class provides.
asg::AsgTool::getProperty
const T * getProperty(const std::string &name) const
Get one of the tool's properties.
ST::SUSYObjDef_xAOD::m_fatjetFFSmearingSyst
std::vector< CP::SystematicSet > m_fatjetFFSmearingSyst
Definition: SUSYObjDef_xAOD.h:821
ST::SUSYObjDef_xAOD::m_trkJetsyst
bool m_trkJetsyst
Definition: SUSYObjDef_xAOD.h:590
ST::SUSYObjDef_xAOD::IsSignalPhoton
bool IsSignalPhoton(const xAOD::Photon &input, const float ptcut, const float etacut=DUMMYDEF) const override final
Definition: Photons.cxx:167
IMETSignificance::GetSignificance
virtual double GetSignificance() const =0
ST::SUSYObjDef_xAOD::m_photonEta
double m_photonEta
Definition: SUSYObjDef_xAOD.h:723
isSquark
bool isSquark(const T &p)
PDG rule 11d Fundamental supersymmetric particles are identified by adding a nonzero n to the particl...
Definition: AtlasPID.h:458
xAOD::numberOfTRTHits
@ numberOfTRTHits
number of TRT hits [unit8_t].
Definition: TrackingPrimitives.h:276
ST::SUSYObjDef_xAOD::m_orDoTau
bool m_orDoTau
Overlap removal options.
Definition: SUSYObjDef_xAOD.h:762
hotSpotInTAG.amiTag
amiTag
Definition: hotSpotInTAG.py:101
ST::SUSYObjDef_xAOD::m_v_trigs18_cache_singleEle
std::vector< std::string > m_v_trigs18_cache_singleEle
Definition: SUSYObjDef_xAOD.h:455
xAOD::EgammaParameters::BADCLUSELECTRON
const uint32_t BADCLUSELECTRON
Definition: EgammaDefs.h:116
ST::SUSYObjDef_xAOD::m_prwTool
asg::AnaToolHandle< CP::IPileupReweightingTool > m_prwTool
Definition: SUSYObjDef_xAOD.h:982
ST::SUSYObjDef_xAOD::m_muBaselineIso_WP
std::string m_muBaselineIso_WP
Definition: SUSYObjDef_xAOD.h:669
ST::SUSYObjDef_xAOD::m_trig2016combination_multiLep
std::string m_trig2016combination_multiLep
Definition: SUSYObjDef_xAOD.h:955
ST::SUSYObjDef_xAOD::m_inputMETSuffix
std::string m_inputMETSuffix
Definition: SUSYObjDef_xAOD.h:574
ST::SUSYObjDef_xAOD::m_WTaggerTool
asg::AnaToolHandle< SmoothedWZTagger > m_WTaggerTool
Definition: SUSYObjDef_xAOD.h:849
asg::AsgMetadataTool::m_beginInputFileCalled
bool m_beginInputFileCalled
Flag helping to discover when the tool misses the opening of the first input file.
Definition: AsgMetadataTool.h:126
CP::IEgammaCalibrationAndSmearingTool::applyCorrection
virtual CP::CorrectionCode applyCorrection(xAOD::Egamma &) const =0
SG::ConstAccessor< bool >
ST::SUSYObjDef_xAOD::m_eleConfigBaseline
std::string m_eleConfigBaseline
Definition: SUSYObjDef_xAOD.h:648
python.RatesEmulationExample.lock
lock
Definition: RatesEmulationExample.py:148
ST::SUSYObjDef_xAOD::GetPrimVtx
const xAOD::Vertex * GetPrimVtx() const override final
Definition: SUSYObjDef_xAOD.cxx:2926
ST::ISUSYObjDef_xAODTool::Undefined
@ Undefined
Definition: ISUSYObjDef_xAODTool.h:477
ST::SUSYObjDef_xAOD::GetTriggerTokens
void GetTriggerTokens(std::string, std::vector< std::string > &, std::vector< std::string > &, std::vector< std::string > &, std::vector< std::string > &, std::vector< std::string > &, std::vector< std::string > &, std::vector< std::string > &) const
Definition: Trigger.cxx:338
met::JETTRK
@ JETTRK
Definition: IMETSystematicsTool.h:52
asg::AsgMetadataTool::endInputFile
virtual StatusCode endInputFile()
Function called when the currently open input file got completely processed.
Definition: AsgMetadataTool.cxx:193
ST::SUSYObjDef_xAOD::m_v_trigs22_cache_singleLep
std::vector< std::string > m_v_trigs22_cache_singleLep
Definition: SUSYObjDef_xAOD.h:464
ST::SUSYObjDef_xAOD::m_bTaggingCalibrationFilePath
std::string m_bTaggingCalibrationFilePath
Definition: SUSYObjDef_xAOD.h:827
NuRTau
@ NuRTau
Definition: TruthClasses.h:74
asg::AsgMetadataTool::m_outputMetaStore
MetaStore_t m_outputMetaStore
Object accessing the output metadata store.
Definition: AsgMetadataTool.h:121
ST::SUSYObjDef_xAOD::m_eled0sig
double m_eled0sig
Definition: SUSYObjDef_xAOD.h:696
ST::SUSYObjDef_xAOD::m_v_trigs22_cache_singleEle
std::vector< std::string > m_v_trigs22_cache_singleEle
Definition: SUSYObjDef_xAOD.h:456
ORUtils::ToolBox::eleFatJetORT
OverlapHandle_t eleFatJetORT
Definition: ToolBox.h:79
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ST::SUSYObjDef_xAOD::m_metDoMuonEloss
bool m_metDoMuonEloss
Definition: SUSYObjDef_xAOD.h:583
ST::SUSYObjDef_xAOD::m_photonTrigSFTools
ToolHandleArray< IAsgPhotonEfficiencyCorrectionTool > m_photonTrigSFTools
Definition: SUSYObjDef_xAOD.h:913
ST::SUSYObjDef_xAOD::m_orDoFatjets
bool m_orDoFatjets
Definition: SUSYObjDef_xAOD.h:792
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
ST::SUSYObjDef_xAOD::m_trigMatchingTool
asg::AnaToolHandle< Trig::IMatchingTool > m_trigMatchingTool
Definition: SUSYObjDef_xAOD.h:971
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
ST::SUSYObjDef_xAOD::m_jetUncertaintiesPDSmearTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_jetUncertaintiesPDSmearTool
Definition: SUSYObjDef_xAOD.h:835
ST::SUSYObjDef_xAOD::FillJet
StatusCode FillJet(xAOD::Jet &input, const bool doCalib=true, bool isFat=false, bool doLargeRdecorations=false) override final
Definition: Jets.cxx:384
dbg::ptr
void * ptr(T *p)
Definition: SGImplSvc.cxx:74
beamspotman.tokens
tokens
Definition: beamspotman.py:1280
CP::SystematicVariation
Definition: SystematicVariation.h:47
ZBoson
@ ZBoson
Definition: TruthClasses.h:67
ST::BTag
@ BTag
Definition: ISUSYObjDef_xAODTool.h:80
MuonR4::to_string
std::string to_string(const SectorProjector proj)
Definition: MsTrackSeeder.cxx:66
ST::SUSYObjDef_xAOD::IsSignalMuon
bool IsSignalMuon(const xAOD::Muon &input, const float ptcut, const float d0sigcut, const float z0cut, const float etacut=DUMMYDEF) const override final
Definition: Muons.cxx:344
ST::SUSYObjDef_xAOD::m_elebaselined0sig
double m_elebaselined0sig
Definition: SUSYObjDef_xAOD.h:698
python.AtlRunQueryAMI.year
year
Definition: AtlRunQueryAMI.py:225
Trig::TrigDecisionToolCore::features
FeatureContainer features(const Trig::ChainGroup *group, unsigned int condition=TrigDefs::Physics) const
Runs 1, 2.
Definition: DecisionAccess.cxx:92
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:41
ST::SUSYObjDef_xAOD::m_debug
bool m_debug
Definition: SUSYObjDef_xAOD.h:540
ST::SUSYObjDef_xAOD::m_elecLRTORTool
asg::AnaToolHandle< CP::IElectronLRTOverlapRemovalTool > m_elecLRTORTool
Definition: SUSYObjDef_xAOD.h:897
TauAnalysisTools::JETIDNONE
@ JETIDNONE
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:14
asg::AnaToolHandle::setProperty
StatusCode setProperty(const std::string &property, const T2 &value)
set the given property of the tool.
xAOD::JetInput::typeName
const std::string & typeName(Type id)
Definition: JetContainerInfo.cxx:199
ST::SUSYObjDef_xAOD::m_trig2017combination_diPhoton
std::string m_trig2017combination_diPhoton
Definition: SUSYObjDef_xAOD.h:964
x
#define x
ST::SUSYObjDef_xAOD::GetSignalPhotonSFsys
double GetSignalPhotonSFsys(const xAOD::Photon &ph, const CP::SystematicSet &systConfig, const bool effSF=true, const bool isoSF=true, const bool triggerSF=false) override final
Definition: Photons.cxx:247
ST::SUSYObjDef_xAOD::m_doMuIsoSignal
bool m_doMuIsoSignal
Definition: SUSYObjDef_xAOD.h:799
ST::SUSYObjDef_xAOD::m_muonTerm
std::string m_muonTerm
Definition: SUSYObjDef_xAOD.h:573
ST::SUSYObjDef_xAOD::m_mu_iso_support
std::vector< std::string > m_mu_iso_support
Definition: SUSYObjDef_xAOD.h:634
ST::SUSYObjDef_xAOD::m_tau_id_support
std::vector< std::string > m_tau_id_support
Definition: SUSYObjDef_xAOD.h:632
PATCore::ParticleDataType::Data
@ Data
Definition: PATCoreEnums.h:22
HepMC::is_same_particle
bool is_same_particle(const T1 &p1, const T2 &p2)
Method to establish if two particles in the GenEvent actually represent the same particle.
Definition: MagicNumbers.h:367
dq_defect_bulk_create_defects.line
line
Definition: dq_defect_bulk_create_defects.py:27
xAOD::JetInput::LCTopo
@ LCTopo
Definition: JetContainerInfo.h:55
ST::SUSYObjDef_xAOD::m_muCosmicd0
double m_muCosmicd0
Definition: SUSYObjDef_xAOD.h:716
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
xAOD::numberOfBLayerHits
@ numberOfBLayerHits
these are the hits in the first pixel layer, i.e.
Definition: TrackingPrimitives.h:232
mapkey::sys
@ sys
Definition: TElectronEfficiencyCorrectionTool.cxx:42
CP::IMuonLRTOverlapRemovalTool::checkOverlap
virtual void checkOverlap(const xAOD::MuonContainer &promptCollection, const xAOD::MuonContainer &lrtCollection, std::vector< bool > &promptMuonsSelectedToKeep, std::vector< bool > &lrtMuonsSelectedToKeep) const =0
check the overlap between the prompt and LRT muon collections.
Pythia8_A14_NNPDF23LO_forMGHT_EvtGen.ptcut
float ptcut
Definition: Pythia8_A14_NNPDF23LO_forMGHT_EvtGen.py:9
xAOD::Muon_v1
Class describing a Muon.
Definition: Muon_v1.h:38
ST::SUSYObjDef_xAOD::m_fatJetUncVars
std::string m_fatJetUncVars
Definition: SUSYObjDef_xAOD.h:548
ST::SUSYObjDef_xAOD::m_orDoBjet
bool m_orDoBjet
Definition: SUSYObjDef_xAOD.h:768
ST::SUSYObjDef_xAOD::m_eleEffMapFilePath
std::string m_eleEffMapFilePath
Definition: SUSYObjDef_xAOD.h:700
xAOD::EventInfo_v1::runNumber
uint32_t runNumber() const
The current event's run number.
ST::SUSYObjDef_xAOD::m_orDoPhoton
bool m_orDoPhoton
Definition: SUSYObjDef_xAOD.h:763
ST::SUSYObjDef_xAOD::m_tool_init
bool m_tool_init
Definition: SUSYObjDef_xAOD.h:566
asg::AnaToolHandle::declarePropertyFor
void declarePropertyFor(T2 *tool, const std::string &name, const std::string &description="")
declare as property on the given tool
XMLtoHeader.count
count
Definition: XMLtoHeader.py:84
ST::SUSYObjDef_xAOD::m_jetJvtMomentTool
asg::AnaToolHandle< JetVertexTaggerTool > m_jetJvtMomentTool
Definition: SUSYObjDef_xAOD.h:842
ICPJetCorrectionTool::applyCorrection
virtual CP::CorrectionCode applyCorrection(xAOD::Jet &jet_reco) const =0
Apply a systematic variation of get a new copy.
ST::SUSYObjDef_xAOD::m_eleIdBaseline
std::string m_eleIdBaseline
Definition: SUSYObjDef_xAOD.h:646
ST::SUSYObjDef_xAOD::m_eleTerm
std::string m_eleTerm
Definition: SUSYObjDef_xAOD.h:569
xAOD::MissingETAssociationMap_v1
Definition: MissingETAssociationMap_v1.h:29
ST::SUSYObjDef_xAOD::isVariation
bool isVariation(const CP::SystematicSet &syst) const
Definition: SUSYObjDef_xAOD.cxx:2126
ST::SUSYObjDef_xAOD::BtagSF_trkJet
float BtagSF_trkJet(const xAOD::JetContainer *trkjets) override final
Definition: Jets.cxx:908
PATCore::ParticleDataType::DataType
DataType
Definition: PATCoreEnums.h:22
ST::SUSYObjDef_xAOD::m_orToolbox
ORUtils::ToolBox m_orToolbox
Definition: SUSYObjDef_xAOD.h:987
ST::SUSYObjDef_xAOD::m_mcChannel
int m_mcChannel
Definition: SUSYObjDef_xAOD.h:603
ST::SUSYObjDef_xAOD::m_tauConfigPath
std::string m_tauConfigPath
Definition: SUSYObjDef_xAOD.h:732
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:92
WBoson
@ WBoson
Definition: TruthClasses.h:66
ST::SUSYObjDef_xAOD::m_LRTCollectionName
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_LRTCollectionName
Definition: SUSYObjDef_xAOD.h:481
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
ST::SUSYObjDef_xAOD::m_photonBaselineEta
double m_photonBaselineEta
Definition: SUSYObjDef_xAOD.h:722
TauAnalysisTools::ELEIDRNNLOOSE
@ ELEIDRNNLOOSE
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:42
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
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
ST::SUSYObjDef_xAOD::m_v_trigs15_cache_singleEle
std::vector< std::string > m_v_trigs15_cache_singleEle
Definition: SUSYObjDef_xAOD.h:452
ST::SUSYObjDef_xAOD::m_muonLRTORTool
asg::AnaToolHandle< CP::IMuonLRTOverlapRemovalTool > m_muonLRTORTool
Definition: SUSYObjDef_xAOD.h:882
xAOD::FileMetaData_v1::simFlavour
@ simFlavour
Fast or Full sim [string].
Definition: FileMetaData_v1.h:76
ST::SUSYObjDef_xAOD::m_gammaTerm
std::string m_gammaTerm
Definition: SUSYObjDef_xAOD.h:570
FSRPhot
@ FSRPhot
Definition: TruthClasses.h:96
ST::SUSYObjDef_xAOD::m_commonPRWFileMC20d
std::string m_commonPRWFileMC20d
Definition: SUSYObjDef_xAOD.h:607
ST::SUSYObjDef_xAOD::GetInDetLargeD0GSFTracks
const xAOD::TrackParticleContainer & GetInDetLargeD0GSFTracks(const EventContext &ctx) const override final
Definition: SUSYObjDef_xAOD.cxx:3094
ORUtils::ToolBox::setGlobalProperty
StatusCode setGlobalProperty(const std::string &property, const T &value)
Apply a global property to all tools.
Definition: ToolBox.h:104
ST::SUSYObjDef_xAOD::m_acc_jetClean
SG::ConstAccessor< char > m_acc_jetClean
Definition: SUSYObjDef_xAOD.h:1002
ST::SUSYObjDef_xAOD::m_JvtPtMax
double m_JvtPtMax
Definition: SUSYObjDef_xAOD.h:745
dqt_zlumi_pandas.weight
int weight
Definition: dqt_zlumi_pandas.py:190
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
PrepareReferenceFile.regex
regex
Definition: PrepareReferenceFile.py:43
IMETMaker::rebuildTrackMET
virtual StatusCode rebuildTrackMET(const std::string &metJetKey, const std::string &metSoftKey, xAOD::MissingETContainer *metCont, const xAOD::JetContainer *jets, const xAOD::MissingETContainer *metCoreCont, xAOD::MissingETAssociationHelper &helper, bool doJetJVT) const =0
ST::SUSYObjDef_xAOD::IsTrackBJet
bool IsTrackBJet(const xAOD::Jet &input) const override final
Definition: Jets.cxx:783
ST::SUSYObjDef_xAOD::m_btagEffTool_trkJet
asg::AnaToolHandle< IBTaggingEfficiencyTool > m_btagEffTool_trkJet
Definition: SUSYObjDef_xAOD.h:930
LArCellBinning_test.retval
def retval
Definition: LArCellBinning_test.py:112
ST::SUSYObjDef_xAOD::FillTrackJet
StatusCode FillTrackJet(xAOD::Jet &input) override final
Definition: Jets.cxx:644
ORUtils::ToolBox::muJetORT
OverlapHandle_t muJetORT
Definition: ToolBox.h:72
CP::IMuonSelectionTool::isBadMuon
virtual bool isBadMuon(const xAOD::Muon &) const =0
Returns true if a CB muon fails some loose quaility requirements designed to remove pathological trac...
ST::SUSYObjDef_xAOD::FJVT_SFsys
double FJVT_SFsys(const xAOD::JetContainer *jets, const CP::SystematicSet &systConfig) override final
Definition: Jets.cxx:1107
met::buildMETSum
StatusCode buildMETSum(const std::string &totalName, xAOD::MissingETContainer *metCont)
Definition: METHelpers.cxx:64
xAOD::EventInfo_v1::mcChannelNumber
uint32_t mcChannelNumber() const
The MC generator's channel number.
ST::SUSYObjDef_xAOD::m_v_trigs17_cache_diLep
std::vector< std::string > m_v_trigs17_cache_diLep
Definition: SUSYObjDef_xAOD.h:470
ST::SUSYObjDef_xAOD::m_trkJetPt
double m_trkJetPt
Definition: SUSYObjDef_xAOD.h:749
ST::SUSYObjDef_xAOD::m_slices
std::map< std::string, bool > m_slices
Definition: SUSYObjDef_xAOD.h:806
ST::SUSYObjDef_xAOD::m_orLinkOverlapObjects
bool m_orLinkOverlapObjects
Definition: SUSYObjDef_xAOD.h:790
PATCore::ParticleDataType::Full
@ Full
Definition: PATCoreEnums.h:22
ST::SUSYObjDef_xAOD::m_eleEffMapFilePathRun2
std::string m_eleEffMapFilePathRun2
Definition: SUSYObjDef_xAOD.h:701
xAOD::JetConstitScaleMomentum
@ JetConstitScaleMomentum
Definition: JetTypes.h:29
ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_isoHighPt
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_isoHighPt
Definition: SUSYObjDef_xAOD.h:890
ST::SUSYObjDef_xAOD::m_trig2018combination_singleLep
std::string m_trig2018combination_singleLep
Definition: SUSYObjDef_xAOD.h:940
HiggsMSSM
@ HiggsMSSM
Definition: TruthClasses.h:69
ST::SUSYObjDef_xAOD::m_orBoostedMuonMaxConeSize
double m_orBoostedMuonMaxConeSize
Definition: SUSYObjDef_xAOD.h:779
ST::SUSYObjDef_xAOD::m_photonEfficiencySFTool
asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > m_photonEfficiencySFTool
Definition: SUSYObjDef_xAOD.h:907
ORUtils::ToolBox::eleJetORT
OverlapHandle_t eleJetORT
Definition: ToolBox.h:71
PyPoolBrowser.item
item
Definition: PyPoolBrowser.py:129
ST::Egamma
@ Egamma
Definition: ISUSYObjDef_xAODTool.h:75
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
CP::IMuonTriggerScaleFactors::getTriggerScaleFactor
virtual CorrectionCode getTriggerScaleFactor(const xAOD::MuonContainer &mucont, Double_t &triggersf, const std::string &trigger) const =0
ST::SUSYObjDef_xAOD::m_tau_trig_support
std::map< std::string, std::string > m_tau_trig_support
Definition: SUSYObjDef_xAOD.h:643
ST::SUSYObjDef_xAOD::m_trigGlobalEffCorrTool_diLep
asg::AnaToolHandle< ITrigGlobalEfficiencyCorrectionTool > m_trigGlobalEffCorrTool_diLep
Definition: SUSYObjDef_xAOD.h:951
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
ST::SUSYObjDef_xAOD::m_WZTaggerCalibArea
std::string m_WZTaggerCalibArea
Definition: SUSYObjDef_xAOD.h:559
ST::SUSYObjDef_xAOD::m_isPHYSLITE
bool m_isPHYSLITE
Definition: SUSYObjDef_xAOD.h:808
ST::SUSYObjDef_xAOD::m_prwLcalcFiles
std::vector< std::string > m_prwLcalcFiles
Definition: SUSYObjDef_xAOD.h:616
ST::SUSYObjDef_xAOD::m_prwDataSF_DW
double m_prwDataSF_DW
Definition: SUSYObjDef_xAOD.h:625
ST::SUSYObjDef_xAOD::m_orDoBoostedMuon
bool m_orDoBoostedMuon
Definition: SUSYObjDef_xAOD.h:776
PhotonHelpers::passOQquality
bool passOQquality(const xAOD::Photon &ph)
Helper to ease the implemmantation of the pass Quality requirements.
Definition: PhotonHelpers.cxx:12
CP::CorrectionCode::OutOfValidityRange
@ OutOfValidityRange
Input object is out of validity range.
Definition: CorrectionCode.h:37
ST::SUSYObjDef_xAOD::m_el_id_support
std::vector< std::string > m_el_id_support
Definition: SUSYObjDef_xAOD.h:629
CP::CorrectionCode::Error
@ Error
Some error happened during the object correction.
Definition: CorrectionCode.h:36
setProperty
void setProperty(columnar::PythonToolHandle &self, const std::string &key, nb::object value)
Definition: NanobindBindings.cxx:67
ST::SUSYObjDef_xAOD::m_defaultJets
std::string m_defaultJets
Definition: SUSYObjDef_xAOD.h:814
ST::SUSYObjDef_xAOD::m_useBtagging
bool m_useBtagging
Definition: SUSYObjDef_xAOD.h:538
xAOD::JetAttribute::HECQuality
@ HECQuality
Definition: JetAttributes.h:80
ST::SUSYObjDef_xAOD::m_ph_id_support
std::vector< std::string > m_ph_id_support
Definition: SUSYObjDef_xAOD.h:630
ST::Photon
@ Photon
Definition: ISUSYObjDef_xAODTool.h:77
met
Definition: IMETSignificance.h:24
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:209
ST::SUSYObjDef_xAOD::SUSYToolsInit
StatusCode SUSYToolsInit()
Definition: SUSYToolsInit.cxx:113
ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_trigEff_mixLep
std::vector< asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > > m_elecEfficiencySFTool_trigEff_mixLep
Definition: SUSYObjDef_xAOD.h:894
met::addGhostMuonsToJets
void addGhostMuonsToJets(const xAOD::MuonContainer &muons, xAOD::JetContainer &jets)
Definition: METHelpers.cxx:34
ST::SUSYObjDef_xAOD::m_TopTaggerCalibArea
std::string m_TopTaggerCalibArea
Definition: SUSYObjDef_xAOD.h:560
ST::SUSYObjDef_xAOD::isWeight
bool isWeight(const CP::SystematicSet &systSet) const
Definition: SUSYObjDef_xAOD.cxx:2115
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
ST::SUSYObjDef_xAOD::m_jetEta
double m_jetEta
Definition: SUSYObjDef_xAOD.h:742
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ST::SUSYObjDef_xAOD::m_fatJetUncConfig
std::string m_fatJetUncConfig
Definition: SUSYObjDef_xAOD.h:546
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ST::SUSYObjDef_xAOD::IsBJetContinuous
int IsBJetContinuous(const xAOD::Jet &input) const override final
Definition: Jets.cxx:794
ST::SUSYObjDef_xAOD::GetRunNumber
unsigned int GetRunNumber() const override final
Definition: SUSYObjDef_xAOD.cxx:3066
IAsgSelectionTool::accept
virtual asg::AcceptData accept(const xAOD::IParticle *) const =0
The main accept method: the actual cuts are applied here.
ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_id
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_id
Definition: SUSYObjDef_xAOD.h:886
CheckAppliedSFs.e3
e3
Definition: CheckAppliedSFs.py:264
SG::ReadDecorHandle
Handle class for reading a decoration on an object.
Definition: StoreGate/StoreGate/ReadDecorHandle.h:94
ST::SUSYObjDef_xAOD::readConfig
StatusCode readConfig() override final
Definition: SUSYObjDef_xAOD.cxx:1335
xAOD::BTagging_v1::pc
bool pc(const std::string &taggername, double &value) const
Definition: BTagging_v1.cxx:367
IAsgEGammaIsEMSelector::accept
virtual asg::AcceptData accept(const xAOD::IParticle *part) const =0
accept with pointer to IParticle so as to not hide the IAsgSelectionTool one
doubleTestComp.j1
j1
Definition: doubleTestComp.py:21
ST::SUSYObjDef_xAOD::m_tauConfigReader
TEnv m_tauConfigReader
Definition: SUSYObjDef_xAOD.h:739
ST::SUSYObjDef_xAOD::m_elez0
double m_elez0
Definition: SUSYObjDef_xAOD.h:697
ST::SUSYObjDef_xAOD::m_IsoCloseByORpassLabel
std::string m_IsoCloseByORpassLabel
Definition: SUSYObjDef_xAOD.h:802
ST::SUSYObjDef_xAOD::lrt_electrons
const xAOD::ElectronContainer * lrt_electrons
Definition: SUSYObjDef_xAOD.h:212
ST::SUSYObjDef_xAOD::m_tauSmearingToolRecommendationTag
std::string m_tauSmearingToolRecommendationTag
Definition: SUSYObjDef_xAOD.h:735
SG::Decorator< char >
ST::SUSYObjDef_xAOD::m_jetUncertaintiesConfig
std::string m_jetUncertaintiesConfig
Prefix for trigger matchiing container name.
Definition: SUSYObjDef_xAOD.h:531
ST::SUSYObjDef_xAOD::m_jetCalibTool
asg::AnaToolHandle< IJetCalibrationTool > m_jetCalibTool
Definition: SUSYObjDef_xAOD.h:832
TrigVtx::gamma
@ gamma
Definition: TrigParticleTable.h:27
fillPileUpNoiseLumi.next
next
Definition: fillPileUpNoiseLumi.py:52
ST::SUSYObjDef_xAOD::m_mu_iso_fallback
std::map< std::string, std::string > m_mu_iso_fallback
Definition: SUSYObjDef_xAOD.h:638
ST::SUSYObjDef_xAOD::m_v_trigs22_cache_multiLep
std::vector< std::string > m_v_trigs22_cache_multiLep
Definition: SUSYObjDef_xAOD.h:478
ST::SUSYObjDef_xAOD::m_photonEfficiencySFTool_trigEff_AsymDiphoton
std::vector< asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > > m_photonEfficiencySFTool_trigEff_AsymDiphoton
Definition: SUSYObjDef_xAOD.h:912
ST::SUSYObjDef_xAOD::m_trigNToys_multiLep
int m_trigNToys_multiLep
Definition: SUSYObjDef_xAOD.h:953
ST::SUSYObjDef_xAOD::m_BtagTagger
std::string m_BtagTagger
Definition: SUSYObjDef_xAOD.h:678
lumiFormat.i
int i
Definition: lumiFormat.py:85
ST::SUSYObjDef_xAOD::m_photonEfficiencySFTool_trigSF_AsymDiphoton
std::vector< asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > > m_photonEfficiencySFTool_trigSF_AsymDiphoton
Definition: SUSYObjDef_xAOD.h:911
ST::SUSYObjDef_xAOD::isNominal
bool isNominal(const CP::SystematicSet &syst) const
Definition: SUSYObjDef_xAOD.cxx:2111
ST::SUSYObjDef_xAOD::GetMuonTriggerEfficiency
double GetMuonTriggerEfficiency(const xAOD::Muon &mu, const std::string &trigExpr, const bool isdata=false) override final
Definition: Muons.cxx:533
ST::SUSYObjDef_xAOD::m_orDoEleJet
bool m_orDoEleJet
Definition: SUSYObjDef_xAOD.h:764
ST::SUSYObjDef_xAOD::m_orPhotonFavoured
bool m_orPhotonFavoured
Definition: SUSYObjDef_xAOD.h:788
xAOD::P4Helpers::deltaR
double deltaR(double rapidity1, double phi1, double rapidity2, double phi2)
from bare bare rapidity,phi
Definition: xAODP4Helpers.h:150
ST::SUSYObjDef_xAOD::m_jesCalibArea
std::string m_jesCalibArea
Definition: SUSYObjDef_xAOD.h:869
ST::SUSYObjDef_xAOD::m_eleChIso
bool m_eleChIso
Definition: SUSYObjDef_xAOD.h:663
IDTPM::nSCTHits
float nSCTHits(const U &p)
Definition: TrackParametersHelper.h:393
ST::ISUSYObjDef_xAODTool::Data
@ Data
Definition: ISUSYObjDef_xAODTool.h:478
xAOD::EgammaParameters::AuthorAmbiguous
const uint16_t AuthorAmbiguous
Object Reconstructed by standard cluster-based algorithm.
Definition: EgammaDefs.h:32
ST::SUSYObjDef_xAOD::m_trig2017combination_singleLep
std::string m_trig2017combination_singleLep
Definition: SUSYObjDef_xAOD.h:939
IDTPM::nTRTHits
float nTRTHits(const U &p)
Definition: TrackParametersHelper.h:446
xAOD::JetAttribute::EMFrac
@ EMFrac
Definition: JetAttributes.h:112
ORUtils::ToolBox::jetFatJetORT
OverlapHandle_t jetFatJetORT
Definition: ToolBox.h:80
Generate_dsid_ranseed.dsid
dsid
Definition: Generate_dsid_ranseed.py:6
ST::SUSYObjDef_xAOD::m_muonIsolationSFTool
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonIsolationSFTool
Definition: SUSYObjDef_xAOD.h:878
ST::SUSYObjDef_xAOD::m_jetCleanDFName
std::string m_jetCleanDFName
Definition: SUSYObjDef_xAOD.h:996
ST::SUSYObjDef_xAOD::m_jesCalibSeq
std::string m_jesCalibSeq
Definition: SUSYObjDef_xAOD.h:866
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
met::getSystType
SystType getSystType(const CP::SystematicVariation &systematic)
Definition: IMETSystematicsTool.h:55
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition: AthCommonDataStore.h:145
ST::SUSYObjDef_xAOD::m_jetUncertaintiesTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_jetUncertaintiesTool
Definition: SUSYObjDef_xAOD.h:834
ST::SUSYObjDef_xAOD::m_muEta
double m_muEta
Definition: SUSYObjDef_xAOD.h:709
ST::SUSYObjDef_xAOD::IsSignalJet
bool IsSignalJet(const xAOD::Jet &input, const float ptcut, const float etacut) const override final
Definition: Jets.cxx:694
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:37
CONFIG_EG_EFF_TOOL_KEY
#define CONFIG_EG_EFF_TOOL_KEY(TOOLHANDLE, TOOLNAME, KEYNAME, KEY, MAP)
Definition: SUSYToolsInit.cxx:100
ST::SUSYObjDef_xAOD::m_autoconfigPRW
bool m_autoconfigPRW
Definition: SUSYObjDef_xAOD.h:596
ST::SUSYObjDef_xAOD::m_orApplyRelPt
bool m_orApplyRelPt
Definition: SUSYObjDef_xAOD.h:780
xAOD::TauJet_v3
Class describing a tau jet.
Definition: TauJet_v3.h:41
asg::AsgMetadataTool::beginInputFile
virtual StatusCode beginInputFile()
Function called when a new input file is opened.
Definition: AsgMetadataTool.cxx:185
ST::SUSYObjDef_xAOD::m_v_trigs17_cache_singleLep
std::vector< std::string > m_v_trigs17_cache_singleLep
Definition: SUSYObjDef_xAOD.h:462
master.flag
bool flag
Definition: master.py:29
ST::SUSYObjDef_xAOD::m_muTriggerSFCalibFilename
std::string m_muTriggerSFCalibFilename
Definition: SUSYObjDef_xAOD.h:676
ST::SUSYObjDef_xAOD::m_muonCalibTool
asg::AnaToolHandle< CP::IMuonCalibrationAndSmearingTool > m_muonCalibTool
Definition: SUSYObjDef_xAOD.h:874
ST::SUSYObjDef_xAOD::m_ZTaggerTool
asg::AnaToolHandle< SmoothedWZTagger > m_ZTaggerTool
Definition: SUSYObjDef_xAOD.h:850
ST::SUSYObjDef_xAOD::m_orDoMuBjet
bool m_orDoMuBjet
Definition: SUSYObjDef_xAOD.h:770
CP::IPileupReweightingTool::getCorrectedAverageInteractionsPerCrossing
virtual float getCorrectedAverageInteractionsPerCrossing(const xAOD::EventInfo &eventInfo, bool includedDataScaleFactor=false)=0
ST::SUSYObjDef_xAOD::m_trig2017combination_multiLep
std::string m_trig2017combination_multiLep
Definition: SUSYObjDef_xAOD.h:956
ST::SUSYObjDef_xAOD::m_orRemoveCaloMuons
bool m_orRemoveCaloMuons
Definition: SUSYObjDef_xAOD.h:785
res
std::pair< std::vector< unsigned int >, bool > res
Definition: JetGroupProductTest.cxx:11
ST::SUSYObjDef_xAOD::m_prwDataSF
double m_prwDataSF
Definition: SUSYObjDef_xAOD.h:623
ST::SUSYObjDef_xAOD::FJVT_SF
double FJVT_SF(const xAOD::JetContainer *jets) override final
Definition: Jets.cxx:1061
Amg::transform
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
Definition: GeoPrimitivesHelpers.h:156
met::Random
@ Random
Definition: IMETSignificance.h:27
xAOD::VxType::PriVtx
@ PriVtx
Primary vertex.
Definition: TrackingPrimitives.h:572
ST::SUSYObjDef_xAOD::m_jesConfigJMS
std::string m_jesConfigJMS
Definition: SUSYObjDef_xAOD.h:861
ST::SUSYObjDef_xAOD::m_tauTerm
std::string m_tauTerm
Definition: SUSYObjDef_xAOD.h:571
CalibDbCompareRT.dummy
dummy
Definition: CalibDbCompareRT.py:59
ST::SUSYObjDef_xAOD::m_jetJvt
double m_jetJvt
Definition: SUSYObjDef_xAOD.h:743
ST::SUSYObjDef_xAOD::m_eleIdDFName
std::string m_eleIdDFName
Definition: SUSYObjDef_xAOD.h:993
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
plotBeamSpotVert.cuts
string cuts
Definition: plotBeamSpotVert.py:92
IMETMaker::rebuildMET
virtual StatusCode rebuildMET(const std::string &metKey, xAOD::Type::ObjectType metType, xAOD::MissingETContainer *metCont, const xAOD::IParticleContainer *collection, xAOD::MissingETAssociationHelper &helper, MissingETBase::UsageHandler::Policy objScale=MissingETBase::UsageHandler::PhysicsObject) const =0
python.BunchSpacingUtils.rn
rn
Definition: BunchSpacingUtils.py:85
ftag::defaults::tagger
const std::string tagger
Definition: ToolDefaults.h:11
xAOD::JetAttribute::Timing
@ Timing
Definition: JetAttributes.h:90
ORUtils::ToolBox::initialize
StatusCode initialize()
Attach and initialize all tools.
Definition: ToolBox.cxx:35
ST::SUSYObjDef_xAOD::m_jetUncertaintiesMCType
std::string m_jetUncertaintiesMCType
Definition: SUSYObjDef_xAOD.h:534
ST::SUSYObjDef_xAOD::m_commonPRWFileMC20e
std::string m_commonPRWFileMC20e
Definition: SUSYObjDef_xAOD.h:608
asg::AsgMetadataTool::metaDataStop
virtual StatusCode metaDataStop()
Function called when the tool should write out its metadata.
Definition: AsgMetadataTool.cxx:209
ST::SUSYObjDef_xAOD::check_isTighter
bool check_isTighter(const std::string &wp1, const std::string &wp, const std::vector< std::string > &list) const
Definition: SUSYObjDef_xAOD.cxx:1220
AAH::setProperty
static StatusCode setProperty(const GaudiHandleBase &toolHandle, const std::string &property, const int &value, bool override=true)
Definition: AthAnalysisHelper.h:401
ST::SUSYObjDef_xAOD::m_jetUncertaintiesAnalysisFile
std::string m_jetUncertaintiesAnalysisFile
Definition: SUSYObjDef_xAOD.h:532
LQ
@ LQ
Definition: TruthClasses.h:75
ST::SUSYObjDef_xAOD::m_legsPerTool_ph
std::map< std::string, std::string > m_legsPerTool_ph
Definition: SUSYObjDef_xAOD.h:830
ST::SUSYObjDef_xAOD::m_WconfigReader
TEnv m_WconfigReader
Definition: SUSYObjDef_xAOD.h:550
ST::SUSYObjDef_xAOD::m_jetfJvtSelectionTool
asg::AnaToolHandle< IAsgSelectionTool > m_jetfJvtSelectionTool
Definition: SUSYObjDef_xAOD.h:846
ST::SUSYObjDef_xAOD::m_photonSelIsEM
asg::AnaToolHandle< IAsgPhotonIsEMSelector > m_photonSelIsEM
Definition: SUSYObjDef_xAOD.h:904
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
ST::SUSYObjDef_xAOD::m_trig2016combination_diLep
std::string m_trig2016combination_diLep
Definition: SUSYObjDef_xAOD.h:947
ST::SUSYObjDef_xAOD::m_jetUncertaintiesPDsmearing
bool m_jetUncertaintiesPDsmearing
Definition: SUSYObjDef_xAOD.h:536
ST::SUSYObjDef_xAOD::m_metSystTool
asg::AnaToolHandle< IMETSystematicsTool > m_metSystTool
Definition: SUSYObjDef_xAOD.h:934
MSG::name
const std::string & name(Level lvl)
Convenience function for translating message levels to strings.
Definition: MsgLevel.cxx:19
ST::SUSYObjDef_xAOD::prompt_muons
const xAOD::MuonContainer * prompt_muons
Definition: SUSYObjDef_xAOD.h:205
ST::SUSYObjDef_xAOD::m_BtagMinPt_trkJet
double m_BtagMinPt_trkJet
Definition: SUSYObjDef_xAOD.h:687
python.getProblemFolderFromLogs.el
dictionary el
Definition: getProblemFolderFromLogs.py:48
ST::SUSYObjDef_xAOD::m_v_trigs15_cache_diLep
std::vector< std::string > m_v_trigs15_cache_diLep
Definition: SUSYObjDef_xAOD.h:468
ST::SUSYObjDef_xAOD::m_orDoElEl
bool m_orDoElEl
Definition: SUSYObjDef_xAOD.h:765
ST::SUSYObjDef_xAOD::m_muIsoHighPtThresh
double m_muIsoHighPtThresh
Definition: SUSYObjDef_xAOD.h:672
ST::SUSYObjDef_xAOD::m_jetPileupLabelingTool
asg::AnaToolHandle< JetPileupLabelingTool > m_jetPileupLabelingTool
Definition: SUSYObjDef_xAOD.h:841
ST::SUSYObjDef_xAOD::m_trigMatchingPrefix
std::string m_trigMatchingPrefix
Use composite trigger matching tool if matching was done upstream.
Definition: SUSYObjDef_xAOD.h:529
ST::SUSYObjDef_xAOD::m_eleChID_signal
bool m_eleChID_signal
Definition: SUSYObjDef_xAOD.h:664
ORUtils::ToolBox::tauJetORT
OverlapHandle_t tauJetORT
Definition: ToolBox.h:75
ST::SUSYObjDef_xAOD::m_metUseGhostMuons
bool m_metUseGhostMuons
Definition: SUSYObjDef_xAOD.h:582
ST::SUSYObjDef_xAOD::m_WTagjetUncertaintiesTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_WTagjetUncertaintiesTool
Definition: SUSYObjDef_xAOD.h:853
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
ST::SUSYObjDef_xAOD::m_tauSelToolBaseline
asg::AnaToolHandle< TauAnalysisTools::ITauSelectionTool > m_tauSelToolBaseline
Definition: SUSYObjDef_xAOD.h:921
ST::SUSYObjDef_xAOD::isData
bool isData() const override final
Definition: SUSYObjDef_xAOD.h:157
xAOD::FileMetaData_v1::mcProcID
@ mcProcID
Same as mc_channel_number [float].
Definition: FileMetaData_v1.h:74
ST::SUSYObjDef_xAOD::m_prwDataSF_UP
double m_prwDataSF_UP
Definition: SUSYObjDef_xAOD.h:624
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
ST::SUSYObjDef_xAOD::m_bool_prop_set
std::set< std::string > m_bool_prop_set
Definition: SUSYObjDef_xAOD.h:439
ST::SUSYObjDef_xAOD::m_trig2018combination_diLep
std::string m_trig2018combination_diLep
Definition: SUSYObjDef_xAOD.h:949
ST::SUSYObjDef_xAOD::m_jesConfigFat
std::string m_jesConfigFat
Definition: SUSYObjDef_xAOD.h:864
ST::SUSYObjDef_xAOD::m_runECIS
bool m_runECIS
Definition: SUSYObjDef_xAOD.h:665
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
ST::SUSYObjDef_xAOD::m_trig2022combination_diLep
std::string m_trig2022combination_diLep
Definition: SUSYObjDef_xAOD.h:950
IsoMuon
@ IsoMuon
Definition: TruthClasses.h:15
diffPoolFiles.strict
strict
Definition: diffPoolFiles.py:68
ST::SUSYObjDef_xAOD::IsBadJet
bool IsBadJet(const xAOD::Jet &input) const override final
Definition: Jets.cxx:746
ST::SUSYObjDef_xAOD::m_eleIdBaselineDFName
std::string m_eleIdBaselineDFName
Definition: SUSYObjDef_xAOD.h:992
CP::IMuonSelectionTool::accept
virtual asg::AcceptData accept(const xAOD::Muon &mu) const =0
Decide whether the muon in question is a "good muon" or not.
ST::SUSYObjDef_xAOD::IsTrigMatched
bool IsTrigMatched(const xAOD::IParticle *part, const std::string &tr_item) override final
Definition: Trigger.cxx:218
ST::SUSYObjDef_xAOD::m_muIso_WP
std::string m_muIso_WP
Definition: SUSYObjDef_xAOD.h:670
xAOD::numberOfSCTHoles
@ numberOfSCTHoles
number of SCT holes [unit8_t].
Definition: TrackingPrimitives.h:271
ST::ISUSYObjDef_xAODTool::FullSim
@ FullSim
Definition: ISUSYObjDef_xAODTool.h:479
ST::SUSYObjDef_xAOD::isAtlfast
bool isAtlfast() const override final
Definition: SUSYObjDef_xAOD.h:158
ST::SUSYObjDef_xAOD::m_trig2015combination_multiLep
std::string m_trig2015combination_multiLep
Definition: SUSYObjDef_xAOD.h:954
DeMoUpdate.tmp
string tmp
Definition: DeMoUpdate.py:1167
PlotSFuncertainty.wp
wp
Definition: PlotSFuncertainty.py:112
ST::SUSYObjDef_xAOD::m_btagSelTool_trkJet
asg::AnaToolHandle< IBTaggingSelectionTool > m_btagSelTool_trkJet
Definition: SUSYObjDef_xAOD.h:931
SG::AuxElement::index
size_t index() const
Return the index of this element within its container.
ST::SUSYObjDef_xAOD::m_fatjetUncertaintiesTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_fatjetUncertaintiesTool
Definition: SUSYObjDef_xAOD.h:836
ICPJetUncertaintiesTool::applyCorrection
virtual CP::CorrectionCode applyCorrection(xAOD::Jet &input) const =0
ST::SUSYObjDef_xAOD::m_jesCalibSeqJMS
std::string m_jesCalibSeqJMS
Definition: SUSYObjDef_xAOD.h:867
IBTaggingEfficiencyTool::getScaleFactor
virtual CP::CorrectionCode getScaleFactor(const xAOD::Jet &jet, float &sf)=0
Declare the interface that the class provides.
TauAnalysisTools::ELEIDRNNMEDIUM
@ ELEIDRNNMEDIUM
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:43
xAOD::JetInput::Type
Type
Definition: JetContainerInfo.h:54
IDTPM::nSCTHoles
float nSCTHoles(const U &p)
Definition: TrackParametersHelper.h:403
ST::SUSYObjDef_xAOD::m_WTagUncConfig
std::string m_WTagUncConfig
Definition: SUSYObjDef_xAOD.h:561
DataVector
Derived DataVector<T>.
Definition: DataVector.h:795
xAOD::JetInput::EMPFlow
@ EMPFlow
Definition: JetContainerInfo.h:64
ST::SUSYObjDef_xAOD::m_runDepPrescaleWeightPRW
bool m_runDepPrescaleWeightPRW
Definition: SUSYObjDef_xAOD.h:626
ST::SUSYObjDef_xAOD::SetBtagWeightDecorations
StatusCode SetBtagWeightDecorations(const xAOD::Jet &input, const asg::AnaToolHandle< IBTaggingSelectionTool > &btagSelTool, const std::string &btagTagger) const override final
Definition: Jets.cxx:1156
ST::SUSYObjDef_xAOD::m_prwActualMu2017File
std::string m_prwActualMu2017File
Definition: SUSYObjDef_xAOD.h:617
ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_trigEff_singleLep
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_trigEff_singleLep
Definition: SUSYObjDef_xAOD.h:888
ST::SUSYObjDef_xAOD::GetEventInfo
const xAOD::EventInfo * GetEventInfo() const override final
Definition: SUSYObjDef_xAOD.cxx:2987
ST::SUSYObjDef_xAOD::m_orDoElMu
bool m_orDoElMu
Definition: SUSYObjDef_xAOD.h:766
ST::SUSYObjDef_xAOD::m_tauJetORtool
asg::AnaToolHandle< ORUtils::IOverlapTool > m_tauJetORtool
Definition: SUSYObjDef_xAOD.h:986
ST::SUSYObjDef_xAOD::m_jetPt
double m_jetPt
Definition: SUSYObjDef_xAOD.h:741
Trig::TrigDecisionTool::isPassed
virtual bool isPassed(const std::string &chain, unsigned int condition) const
true if given chain passed
Definition: TrigDecisionTool.cxx:270
ST::SUSYObjDef_xAOD::m_photonBaselineIso_WP
std::string m_photonBaselineIso_WP
Definition: SUSYObjDef_xAOD.h:666
xAOD::FileMetaData_v1
Class holding file-level metadata about an xAOD file.
Definition: FileMetaData_v1.h:34
isSUSY
bool isSUSY(const T &p)
Definition: AtlasPID.h:623
TrigConf::name
Definition: HLTChainList.h:35
ST::SUSYObjDef_xAOD::m_eleId
std::string m_eleId
Definition: SUSYObjDef_xAOD.h:645
ST::SUSYObjDef_xAOD::m_muIdBaseline
int m_muIdBaseline
Definition: SUSYObjDef_xAOD.h:652
DeMoScan.runnumber
runnumber
Definition: DeMoScan.py:264
CP::IElectronLRTOverlapRemovalTool::checkOverlap
virtual void checkOverlap(const xAOD::ElectronContainer &promptCollection, const xAOD::ElectronContainer &lrtCollection, std::set< const xAOD::Electron * > &ElectronsToRemove) const =0
Check the overlap between the prompt and LRT electron collections.
Trk::Combined
@ Combined
Definition: Tracking/TrkTools/TrkTrackSummaryTool/TrkTrackSummaryTool/TrackSummaryTool.h:32
part2
Definition: part2.py:1
ST::SUSYObjDef_xAOD::m_eleIso_WP
std::string m_eleIso_WP
Definition: SUSYObjDef_xAOD.h:657
met::SOFTTRK
@ SOFTTRK
Definition: IMETSystematicsTool.h:51
ST::SUSYObjDef_xAOD::m_photonAllowLate
bool m_photonAllowLate
Definition: SUSYObjDef_xAOD.h:727
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
IAsgElectronEfficiencyCorrectionTool::getEfficiencyScaleFactor
virtual CP::CorrectionCode getEfficiencyScaleFactor(const xAOD::Electron &inputObject, double &efficiencyScaleFactor) const =0
ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_iso
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_iso
Definition: SUSYObjDef_xAOD.h:889
ST::SUSYObjDef_xAOD::m_prwConfFiles
std::vector< std::string > m_prwConfFiles
Definition: SUSYObjDef_xAOD.h:615
ST::SUSYObjDef_xAOD::m_metJetSelection
std::string m_metJetSelection
Definition: SUSYObjDef_xAOD.h:810
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
xAOD::EventInfo_v1::beamPosSigmaY
float beamPosSigmaY() const
The width of the beam spot in the Y direction.
ORUtils::ToolBox::phoMuORT
OverlapHandle_t phoMuORT
Definition: ToolBox.h:77
CP::IReentrantSystematicsTool::recommendedSystematics
virtual SystematicSet recommendedSystematics() const =0
the list of all systematics this tool recommends to use
ST::SUSYObjDef_xAOD::m_tauTruthMatch
asg::AnaToolHandle< TauAnalysisTools::ITauTruthMatchingTool > m_tauTruthMatch
Definition: SUSYObjDef_xAOD.h:923
LikeEnum::Tight
@ Tight
Definition: LikelihoodEnums.h:15
ST::SUSYObjDef_xAOD::m_eleLRT
bool m_eleLRT
Definition: SUSYObjDef_xAOD.h:661
ST::SUSYObjDef_xAOD::m_trig2022combination_singleLep
std::string m_trig2022combination_singleLep
Definition: SUSYObjDef_xAOD.h:941
TauAnalysisTools::ITauEfficiencyCorrectionsTool::getEfficiencyScaleFactor
virtual CP::CorrectionCode getEfficiencyScaleFactor(const xAOD::TauJet &xTau, double &eff, unsigned int iRunNumber=0)=0
Declare the interface that the class provides.
ST::SUSYObjDef_xAOD::m_fJvtPtMax
double m_fJvtPtMax
Definition: SUSYObjDef_xAOD.h:754
ST::SUSYObjDef_xAOD::EG_WP
std::string EG_WP(const std::string &wp) const
Definition: SUSYObjDef_xAOD.cxx:1227
xAOD::BTagging_v1::pu
bool pu(const std::string &taggername, double &value) const
Definition: BTagging_v1.cxx:353
ST::SUSYObjDef_xAOD::m_inputMETCore
std::string m_inputMETCore
Definition: SUSYObjDef_xAOD.h:576
ORUtils::ToolBox::phoEleORT
OverlapHandle_t phoEleORT
Definition: ToolBox.h:76
xAOD::EventInfo_v1::averageInteractionsPerCrossing
float averageInteractionsPerCrossing() const
Average interactions per crossing for all BCIDs - for out-of-time pile-up.
Definition: EventInfo_v1.cxx:397
ST::SUSYObjDef_xAOD::check_isOption
bool check_isOption(const std::string &wp, const std::vector< std::string > &list) const
Definition: SUSYObjDef_xAOD.cxx:1215
IMETSystematicsTool::setRandomSeed
virtual void setRandomSeed(unsigned long seed) const =0
xAOD::MissingETContainer_v1
Container for xAOD::MissingET_v1 objects.
Definition: MissingETContainer_v1.h:21
ST::SUSYObjDef_xAOD::m_trig2024combination_singleLep
std::string m_trig2024combination_singleLep
Definition: SUSYObjDef_xAOD.h:943
ST::SUSYObjDef_xAOD::m_eleForceFullSimCalib
bool m_eleForceFullSimCalib
Definition: SUSYObjDef_xAOD.h:703
ST::SUSYObjDef_xAOD::m_elecSelLikelihoodBaseline
asg::AnaToolHandle< IAsgElectronLikelihoodTool > m_elecSelLikelihoodBaseline
Definition: SUSYObjDef_xAOD.h:903
ST::SUSYObjDef_xAOD::m_subtool_init
bool m_subtool_init
Definition: SUSYObjDef_xAOD.h:567
ST::SUSYObjDef_xAOD::m_trigConfTool
asg::AnaToolHandle< TrigConf::ITrigConfigTool > m_trigConfTool
Definition: SUSYObjDef_xAOD.h:969
ST::SUSYObjDef_xAOD::GetSignalPhotonSF
double GetSignalPhotonSF(const xAOD::Photon &ph, const bool effSF=true, const bool isoSF=true, const bool triggerSF=false) const override final
Definition: Photons.cxx:206
IEGammaAmbiguityTool::accept
virtual bool accept(const xAOD::Egamma &egamma) const =0
Accept or reject egamma object based on ambiguity resolution.
ST::SUSYObjDef_xAOD::m_EigenvectorReductionLight
std::string m_EigenvectorReductionLight
Definition: SUSYObjDef_xAOD.h:684
xAOD::Muon
Muon_v1 Muon
Reference the current persistent version:
Definition: Event/xAOD/xAODMuon/xAODMuon/Muon.h:13
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
ST::SUSYObjDef_xAOD::m_v_trigs24_cache_singleLep
std::vector< std::string > m_v_trigs24_cache_singleLep
Definition: SUSYObjDef_xAOD.h:466
ST::SUSYObjDef_xAOD::m_ToptagConfig
std::string m_ToptagConfig
Definition: SUSYObjDef_xAOD.h:558
ST::Muon
@ Muon
Definition: ISUSYObjDef_xAODTool.h:78
ST::SUSYObjDef_xAOD::m_tauEffTool
asg::AnaToolHandle< TauAnalysisTools::ITauEfficiencyCorrectionsTool > m_tauEffTool
Definition: SUSYObjDef_xAOD.h:924
asg::AsgMetadataTool::m_inputMetaStore
MetaStore_t m_inputMetaStore
Object accessing the input metadata store.
Definition: AsgMetadataTool.h:119
TauAnalysisTools::ELEIDRNNTIGHT
@ ELEIDRNNTIGHT
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:44
xAOD::JetAttribute::AverageLArQF
@ AverageLArQF
Definition: JetAttributes.h:85
ST::SUSYObjDef_xAOD::m_tauPt
double m_tauPt
Definition: SUSYObjDef_xAOD.h:730
ST::SUSYObjDef_xAOD::m_muonSelectionToolBaseline
asg::AnaToolHandle< CP::IMuonSelectionTool > m_muonSelectionToolBaseline
Definition: SUSYObjDef_xAOD.h:873
ST::SUSYObjDef_xAOD::m_trkMETsyst
bool m_trkMETsyst
Definition: SUSYObjDef_xAOD.h:588
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
CP::IPileupReweightingTool::getRandomRunNumber
virtual int getRandomRunNumber(const xAOD::EventInfo &eventInfo, bool mu_dependent=true)=0
Get a random run number for this MC event, mu_dependency is recommended ... jetetmiss seem to like it...
ST::SUSYObjDef_xAOD::m_caloMETsyst
bool m_caloMETsyst
Definition: SUSYObjDef_xAOD.h:589
ST::SUSYObjDef_xAOD::m_JMScalib
bool m_JMScalib
Definition: SUSYObjDef_xAOD.h:759
ST::SUSYObjDef_xAOD::IsMETTrigPassed
bool IsMETTrigPassed(unsigned int runnumber=0, bool j400_OR=false) const override final
Definition: Trigger.cxx:30
ST::SUSYObjDef_xAOD::m_muz0
double m_muz0
Definition: SUSYObjDef_xAOD.h:711
ST::SUSYObjDef_xAOD::m_JvtWP
std::string m_JvtWP
Definition: SUSYObjDef_xAOD.h:744
Amg::error
double error(const Amg::MatrixX &mat, int index)
return diagonal error of the matrix caller should ensure the matrix is symmetric and the index is in ...
Definition: EventPrimitivesHelpers.h:40
ST::SUSYObjDef_xAOD::getSherpaVjetsNjetsWeight
float getSherpaVjetsNjetsWeight() const override final
Definition: SUSYObjDef_xAOD.cxx:2895
ST::SUSYObjDef_xAOD::TrigMatch
void TrigMatch(const xAOD::IParticle *p, std::initializer_list< std::string >::iterator, std::initializer_list< std::string >::iterator) override final
Definition: Trigger.cxx:238
xAOD::JetAttribute::SumPtTrkPt500
@ SumPtTrkPt500
Definition: JetAttributes.h:108
ST::SUSYObjDef_xAOD::m_useBtagging_trkJet
bool m_useBtagging_trkJet
Definition: SUSYObjDef_xAOD.h:539
xAOD::FileMetaData_v1::amiTag
@ amiTag
AMI tag used to process the file the last time [string].
Definition: FileMetaData_v1.h:58
ST::SUSYObjDef_xAOD::m_force_noMuId
bool m_force_noMuId
Definition: SUSYObjDef_xAOD.h:525
SUSY
@ SUSY
Definition: TruthClasses.h:77
HeavyBoson
@ HeavyBoson
Definition: TruthClasses.h:70
threshold
Definition: chainparser.cxx:74
ST::SUSYObjDef_xAOD::m_doFwdJVT
bool m_doFwdJVT
Definition: SUSYObjDef_xAOD.h:752
AtlCoolConsole.tool
tool
Definition: AtlCoolConsole.py:452
ST::SUSYObjDef_xAOD::FillTau
StatusCode FillTau(xAOD::TauJet &input) override final
Definition: Taus.cxx:77
ST::SUSYObjDef_xAOD::m_isoCloseByTool
asg::AnaToolHandle< CP::IIsolationCloseByCorrectionTool > m_isoCloseByTool
Definition: SUSYObjDef_xAOD.h:980
ST::SUSYObjDef_xAOD::m_muEffCorrForce1D
bool m_muEffCorrForce1D
Definition: SUSYObjDef_xAOD.h:674
ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_trig_singleLep
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_trig_singleLep
Definition: SUSYObjDef_xAOD.h:887
ST::SUSYObjDef_xAOD::m_trig2018combination_multiLep
std::string m_trig2018combination_multiLep
Definition: SUSYObjDef_xAOD.h:957
CP::IPileupReweightingTool::getDataWeight
virtual float getDataWeight(const xAOD::EventInfo &eventInfo, const TString &trigger, bool mu_dependent=true)=0
Get the dataWeight used to 'unprescale' data collected from a given trigger combination....
ST::SUSYObjDef_xAOD::m_btagSelTool_OR
asg::AnaToolHandle< IBTaggingSelectionTool > m_btagSelTool_OR
Definition: SUSYObjDef_xAOD.h:929
xAOD::TruthEventBase_v1::nTruthParticles
size_t nTruthParticles() const
Get the number of truth particles.
SmoothedWZTagger::tag
virtual StatusCode tag(const xAOD::Jet &jet) const override
Decorate single jet with tagging info.
Definition: SmoothedWZTagger.cxx:177
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
python.ElectronD3PDObject.matched
matched
Definition: ElectronD3PDObject.py:138
ST::SUSYObjDef_xAOD::m_commonPRWFileMC20a
std::string m_commonPRWFileMC20a
Definition: SUSYObjDef_xAOD.h:606
checkTriggerxAOD.found
found
Definition: checkTriggerxAOD.py:328
ST::SUSYObjDef_xAOD::m_muonSelectionHighPtTool
asg::AnaToolHandle< CP::IMuonSelectionTool > m_muonSelectionHighPtTool
Definition: SUSYObjDef_xAOD.h:872
TrigJetMonitorAlgorithm.items
items
Definition: TrigJetMonitorAlgorithm.py:71
ST::SUSYObjDef_xAOD::m_photonId
std::string m_photonId
Definition: SUSYObjDef_xAOD.h:653
ST::SUSYObjDef_xAOD::m_fJvtConfigRun3
std::string m_fJvtConfigRun3
Definition: SUSYObjDef_xAOD.h:757
ST::SUSYObjDef_xAOD::m_ApplyMVATESQualityCheck
bool m_ApplyMVATESQualityCheck
Definition: SUSYObjDef_xAOD.h:738
xAOD::MissingETAssociationHelper
Definition: MissingETAssociationHelper.h:22
IBTaggingSelectionTool::getQuantile
virtual int getQuantile(const xAOD::IParticle *) const =0
Decide in which quantile of the tagger weight distribution the jet belongs The return value represent...
ST::SUSYObjDef_xAOD::m_trkJetEta
double m_trkJetEta
Definition: SUSYObjDef_xAOD.h:750
ST::SUSYObjDef_xAOD::m_BtagWP_trkJet
std::string m_BtagWP_trkJet
Definition: SUSYObjDef_xAOD.h:685
CP::IPileupReweightingTool::getCorrectedActualInteractionsPerCrossing
virtual float getCorrectedActualInteractionsPerCrossing(const xAOD::EventInfo &eventInfo, bool includedDataScaleFactor=false)=0
Get the actual mu of a lumiblock ...
xAOD::Electron_v1
Definition: Electron_v1.h:34
ST::SUSYObjDef_xAOD::m_fatjetUncertaintiesPDSmearTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_fatjetUncertaintiesPDSmearTool
Definition: SUSYObjDef_xAOD.h:837
ST::SUSYObjDef_xAOD::m_fatjetFFSmearingTool
asg::AnaToolHandle< ICPJetCorrectionTool > m_fatjetFFSmearingTool
Definition: SUSYObjDef_xAOD.h:838
xAOD::ShallowAuxContainer::setName
void setName(const char *name)
Set the name of the container instance.
Definition: ShallowAuxContainer.cxx:605
IMETMaker::markInvisible
virtual StatusCode markInvisible(const xAOD::IParticleContainer *collection, xAOD::MissingETAssociationHelper &helper, xAOD::MissingETContainer *metCont) const =0
met::SOFTCALO
@ SOFTCALO
Definition: IMETSystematicsTool.h:50
ST::SUSYObjDef_xAOD::m_dataSource
int m_dataSource
Definition: SUSYObjDef_xAOD.h:519
ST::SUSYObjDef_xAOD::m_badmuQoverP
double m_badmuQoverP
Definition: SUSYObjDef_xAOD.h:717
xAOD::shallowCopyContainer
std::pair< std::unique_ptr< T >, std::unique_ptr< ShallowAuxContainer > > shallowCopyContainer(const T &cont, [[maybe_unused]] const EventContext &ctx)
Function making a shallow copy of a constant container.
Definition: ShallowCopy.h:110
ST::SUSYObjDef_xAOD::m_outMuonLocation
SG::WriteHandleKey< xAOD::MuonContainer > m_outMuonLocation
Definition: SUSYObjDef_xAOD.h:883
ST::Electron
@ Electron
Definition: ISUSYObjDef_xAODTool.h:76
isSlepton
bool isSlepton(const T &p)
Definition: AtlasPID.h:482
ST::Jet
@ Jet
Definition: ISUSYObjDef_xAODTool.h:74
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:16
ST::SUSYObjDef_xAOD::m_EleFatJetDR
double m_EleFatJetDR
Definition: SUSYObjDef_xAOD.h:793
ST::SUSYObjDef_xAOD::m_elebaselinez0
double m_elebaselinez0
Definition: SUSYObjDef_xAOD.h:699
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
ST::SUSYObjDef_xAOD::m_muCosmicz0
double m_muCosmicz0
Definition: SUSYObjDef_xAOD.h:715
xAOD::Photon
Photon_v1 Photon
Definition of the current "egamma version".
Definition: Event/xAOD/xAODEgamma/xAODEgamma/Photon.h:17
TauAnalysisTools::ITauTruthMatchingTool::getTruth
virtual const xAOD::TruthParticle * getTruth(const xAOD::TauJet &xTau)=0
PathResolverFindCalibFile
std::string PathResolverFindCalibFile(const std::string &logical_file_name)
Definition: PathResolver.cxx:321
ST::SUSYObjDef_xAOD::getSystInfo
ST::SystInfo getSystInfo(const CP::SystematicVariation &sys) const override final
Definition: SUSYObjDef_xAOD.cxx:2577
Muon
struct TBPatternUnitContext Muon
InDet::TrkOrigin::isPileup
bool isPileup(int origin)
from pileup
Definition: InDetTrackTruthOriginDefs.h:49
xAOD::JetInput::EMTopo
@ EMTopo
Definition: JetContainerInfo.h:56
xAOD::BTaggingUtilities::getBTagging
const BTagging * getBTagging(const SG::AuxElement &part)
Access the default xAOD::BTagging object associated to an object.
Definition: BTaggingUtilities.cxx:37
python.copyTCTOutput.chains
chains
Definition: copyTCTOutput.py:78
ST::SUSYObjDef_xAOD::m_btagSelTool
asg::AnaToolHandle< IBTaggingSelectionTool > m_btagSelTool
Definition: SUSYObjDef_xAOD.h:928
ST::MET_CST
@ MET_CST
Definition: ISUSYObjDef_xAODTool.h:82
ST::SUSYObjDef_xAOD::m_orDoTauBjet
bool m_orDoTauBjet
Definition: SUSYObjDef_xAOD.h:771
ST::SUSYObjDef_xAOD::m_jetNNJvtSelectionTool
asg::AnaToolHandle< IAsgSelectionTool > m_jetNNJvtSelectionTool
Definition: SUSYObjDef_xAOD.h:844
xAOD::numberOfTRTOutliers
@ numberOfTRTOutliers
number of TRT outliers [unit8_t].
Definition: TrackingPrimitives.h:277
Trig::TrigDecisionToolCore::getPrescale
float getPrescale(const Trig::ChainGroup *chaingroup, unsigned int condition=TrigDefs::Physics) const
Definition: ConfigurationAccess.cxx:88
python.AthDsoLogger.fname
string fname
Definition: AthDsoLogger.py:66
asg::ToolStore::remove
static StatusCode remove(const IAsgTool *tool)
Remove the specified tool from the store.
Definition: ToolStore.cxx:77
ST::SUSYObjDef_xAOD::m_orMuJetTrkPtRatio
double m_orMuJetTrkPtRatio
Definition: SUSYObjDef_xAOD.h:782
ST::SUSYObjDef_xAOD::FillPhoton
StatusCode FillPhoton(xAOD::Photon &input, const float ptcut, const float etacut) override final
Definition: Photons.cxx:78
python.PyAthena.v
v
Definition: PyAthena.py:154
ST::SUSYObjDef_xAOD::m_v_trigs16_cache_diLep
std::vector< std::string > m_v_trigs16_cache_diLep
Definition: SUSYObjDef_xAOD.h:469
ST::SUSYObjDef_xAOD::m_muonTriggerSFTool
asg::AnaToolHandle< CP::IMuonTriggerScaleFactors > m_muonTriggerSFTool
Definition: SUSYObjDef_xAOD.h:880
ST::SUSYObjDef_xAOD::m_eleCrackVeto
bool m_eleCrackVeto
Definition: SUSYObjDef_xAOD.h:695
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
ST::SUSYObjDef_xAOD::m_mubaselinez0
double m_mubaselinez0
Definition: SUSYObjDef_xAOD.h:713
ORUtils::ToolBox::masterTool
MasterHandle_t masterTool
Master overlap removal tool handle.
Definition: ToolBox.h:64
xAOD::EgammaParameters::BADCLUSPHOTON
const uint32_t BADCLUSPHOTON
Definition: EgammaDefs.h:124
DeMoAtlasDataLoss.runNumber
string runNumber
Definition: DeMoAtlasDataLoss.py:64
ST::SUSYObjDef_xAOD::GetSignalTauSF
double GetSignalTauSF(const xAOD::TauJet &tau, const bool idSF=true, const bool triggerSF=true, const std::string &trigExpr="tau25_medium1_tracktwo") override final
Definition: Taus.cxx:130
ST::SUSYObjDef_xAOD::getElSFkeys
std::vector< std::string > getElSFkeys(const std::string &mapFile) const
Definition: SUSYObjDef_xAOD.cxx:1239
ST::SUSYObjDef_xAOD::m_jesConfigJMSData
std::string m_jesConfigJMSData
Definition: SUSYObjDef_xAOD.h:862
ST::SUSYObjDef_xAOD::m_trig2016combination_singleLep
std::string m_trig2016combination_singleLep
Definition: SUSYObjDef_xAOD.h:938
CP::CorrectionCode::Ok
@ Ok
The correction was done successfully.
Definition: CorrectionCode.h:38
ITrigGlobalEfficiencyCorrectionTool::getEfficiencyScaleFactor
virtual CP::CorrectionCode getEfficiencyScaleFactor(const std::vector< const xAOD::IParticle * > &particles, double &efficiencyScaleFactor)=0
ST::SUSYObjDef_xAOD::m_btagEffTool
asg::AnaToolHandle< IBTaggingEfficiencyTool > m_btagEffTool
Definition: SUSYObjDef_xAOD.h:927
Trig::TrigDecisionTool::finalize
StatusCode finalize()
Definition: TrigDecisionTool.cxx:234
ST::SUSYObjDef_xAOD::m_fatJets
std::string m_fatJets
Definition: SUSYObjDef_xAOD.h:816
ST::SUSYObjDef_xAOD::m_elecChargeIDSelectorTool
asg::AnaToolHandle< IAsgElectronLikelihoodTool > m_elecChargeIDSelectorTool
Definition: SUSYObjDef_xAOD.h:917
ST::SUSYObjDef_xAOD::m_muCalibrationMode
int m_muCalibrationMode
Definition: SUSYObjDef_xAOD.h:718
asg::AnaToolHandle::getHandle
const ToolHandle< T > & getHandle() const noexcept
the tool handle we wrap
ST::SUSYObjDef_xAOD::m_softTermParam
int m_softTermParam
Definition: SUSYObjDef_xAOD.h:592
xAOD::EventInfo_v1::beamPosSigmaXY
float beamPosSigmaXY() const
The beam spot shape's X-Y correlation.
xAOD::photon
@ photon
Definition: TrackingPrimitives.h:200
ST::SUSYObjDef_xAOD::m_strictConfigCheck
bool m_strictConfigCheck
Definition: SUSYObjDef_xAOD.h:542
ST::SUSYObjDef_xAOD::m_orBoostedElectronMaxConeSize
double m_orBoostedElectronMaxConeSize
Definition: SUSYObjDef_xAOD.h:775
a
TList * a
Definition: liststreamerinfos.cxx:10
ST::SUSYObjDef_xAOD::FindSusyHP
StatusCode FindSusyHP(int &pdgid1, int &pdgid2) const
Definition: Truth.cxx:76
ST::SUSYObjDef_xAOD::m_eleBaselineIso_WP
std::string m_eleBaselineIso_WP
Definition: SUSYObjDef_xAOD.h:649
ST::SUSYObjDef_xAOD::m_inputMETMap
std::string m_inputMETMap
Definition: SUSYObjDef_xAOD.h:575
ST::SUSYObjDef_xAOD::m_BtagTagger_trkJet
std::string m_BtagTagger_trkJet
Definition: SUSYObjDef_xAOD.h:686
ST::SUSYObjDef_xAOD::m_autoconfigPRWRPVmode
bool m_autoconfigPRWRPVmode
Definition: SUSYObjDef_xAOD.h:600
ITrigGlobalEfficiencyCorrectionTool::checkTriggerMatching
virtual CP::CorrectionCode checkTriggerMatching(bool &matched, const std::vector< const xAOD::IParticle * > &particles)=0
h
ST::SUSYObjDef_xAOD::m_tauId
std::string m_tauId
Definition: SUSYObjDef_xAOD.h:655
python.CaloAddPedShiftConfig.int
int
Definition: CaloAddPedShiftConfig.py:45
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
ST::SUSYObjDef_xAOD::FindSusyHardProc
static bool FindSusyHardProc(const xAOD::TruthParticleContainer *truthP, int &pdgid1, int &pdgid2, bool isTruth3=false)
Definition: Truth.cxx:126
ST::SUSYObjDef_xAOD::validConfig
StatusCode validConfig(bool strict=false) const
Definition: SUSYObjDef_xAOD.cxx:1946
xAOD::Photon_v1
Definition: Photon_v1.h:37
asg::AsgMetadataTool
Base class for dual-use tools that provide file metadata access.
Definition: AsgMetadataTool.h:48
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
ST::SUSYObjDef_xAOD::m_EG_corrModel
std::string m_EG_corrModel
Definition: SUSYObjDef_xAOD.h:823
JetTruthLabelingTool::decorate
StatusCode decorate(const xAOD::JetContainer &jets) const override
decorate truth label to a jet collection
Definition: JetTruthLabelingTool.cxx:317
LikeEnum::Medium
@ Medium
Definition: LikelihoodEnums.h:14
ST::SUSYObjDef_xAOD::m_v_trigs18_cache_multiLep
std::vector< std::string > m_v_trigs18_cache_multiLep
Definition: SUSYObjDef_xAOD.h:477
trigbs_mixBSevents.input
input
Definition: trigbs_mixBSevents.py:56
ST::SUSYObjDef_xAOD::m_JetFatJetDR
double m_JetFatJetDR
Definition: SUSYObjDef_xAOD.h:794
ST::SUSYObjDef_xAOD::m_configFile
std::string m_configFile
Definition: SUSYObjDef_xAOD.h:522
ST::SUSYObjDef_xAOD::m_JetTruthLabelName
std::string m_JetTruthLabelName
Definition: SUSYObjDef_xAOD.h:564
ST::SUSYObjDef_xAOD::JVT_SF
double JVT_SF(const xAOD::JetContainer *jets) override final
Definition: Jets.cxx:989
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
ST::SUSYObjDef_xAOD::m_orDoBoostedElectron
bool m_orDoBoostedElectron
Definition: SUSYObjDef_xAOD.h:772
xAOD::numberOfSCTDeadSensors
@ numberOfSCTDeadSensors
number of dead SCT sensors crossed [unit8_t].
Definition: TrackingPrimitives.h:274
ST::SUSYObjDef_xAOD::m_photonSelIsEMBaseline
asg::AnaToolHandle< IAsgPhotonIsEMSelector > m_photonSelIsEMBaseline
Definition: SUSYObjDef_xAOD.h:905
ITrigGlobalEfficiencyCorrectionTool::getEfficiency
virtual CP::CorrectionCode getEfficiency(const std::vector< const xAOD::IParticle * > &particles, double &efficiencyData, double &efficiencyMc)=0
ST::SUSYObjDef_xAOD::GetSignalMuonSF
float GetSignalMuonSF(const xAOD::Muon &mu, const bool recoSF=true, const bool isoSF=true, const bool doBadMuonHP=true, const bool warnOVR=true) override final
Definition: Muons.cxx:480
CP::SystematicRegistry
This module implements the central registry for handling systematic uncertainties with CP tools.
Definition: SystematicRegistry.h:25
ConstDataVector
DataVector adapter that acts like it holds const pointers.
Definition: ConstDataVector.h:76
ST::SUSYObjDef_xAOD::m_photonPt
double m_photonPt
Definition: SUSYObjDef_xAOD.h:724
ORUtils::ORFlags
A struct of global config options used to simplify the config helper interface.
Definition: OverlapRemovalInit.h:29
ST::SUSYObjDef_xAOD::m_metVeryGreedyPhotons
bool m_metVeryGreedyPhotons
Definition: SUSYObjDef_xAOD.h:585
ST::SUSYObjDef_xAOD::GetTriggerGlobalEfficiencySF
double GetTriggerGlobalEfficiencySF(const xAOD::ElectronContainer &electrons, const xAOD::MuonContainer &muons, const std::string &trigExpr="diLepton") override final
Definition: Trigger.cxx:431
xAOD::setOriginalObjectLink
bool setOriginalObjectLink(const IParticle &original, IParticle &copy)
This function should be used by CP tools when they make a deep copy of an object in their correctedCo...
Definition: IParticleHelpers.cxx:30
ST::SUSYObjDef_xAOD::m_trigDecTool
asg::AnaToolHandle< Trig::TrigDecisionTool > m_trigDecTool
Definition: SUSYObjDef_xAOD.h:970
ST::SUSYObjDef_xAOD::m_isRun3
bool m_isRun3
Definition: SUSYObjDef_xAOD.h:807
ST::SUSYObjDef_xAOD::m_metsysConfigPrefix
std::string m_metsysConfigPrefix
Definition: SUSYObjDef_xAOD.h:586
ST::SUSYObjDef_xAOD::m_defaultTrackJets
std::string m_defaultTrackJets
Definition: SUSYObjDef_xAOD.h:815
ST::SUSYObjDef_xAOD::m_eleEta
double m_eleEta
Definition: SUSYObjDef_xAOD.h:694
ST::SUSYObjDef_xAOD::m_prwActualMu2023File
std::string m_prwActualMu2023File
Definition: SUSYObjDef_xAOD.h:620
FullCPAlgorithmsTest_CA.inputfile
dictionary inputfile
Definition: FullCPAlgorithmsTest_CA.py:62
ST::LRT_Object
@ LRT_Object
Definition: ISUSYObjDef_xAODTool.h:85
ST::SUSYObjDef_xAOD::m_jesCalibSeqFat
std::string m_jesCalibSeqFat
Definition: SUSYObjDef_xAOD.h:868
CP::SystematicRegistry::recommendedSystematics
const SystematicSet & recommendedSystematics() const
returns: the recommended set of systematics
Definition: SystematicRegistry.cxx:38
python.TriggerAPI.TriggerAPISession.chainName
chainName
Definition: TriggerAPISession.py:426
ST::SUSYObjDef_xAOD::m_TopTagUncConfig
std::string m_TopTagUncConfig
Definition: SUSYObjDef_xAOD.h:563
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
IJetCalibrationTool::applyCalibration
virtual StatusCode applyCalibration(xAOD::JetContainer &jets) const =0
Apply calibration to a jet container.
ST::SUSYObjDef_xAOD::applySystematicVariation
StatusCode applySystematicVariation(const CP::SystematicSet &systConfig) override final
Definition: SUSYObjDef_xAOD.cxx:2149
Higgs
@ Higgs
Definition: TruthClasses.h:68
CP::CorrectionCode
Return value from object correction CP tools.
Definition: CorrectionCode.h:31
ST::SUSYObjDef_xAOD::m_currentSyst
CP::SystematicSet m_currentSyst
Definition: SUSYObjDef_xAOD.h:820
CP::IPileupReweightingTool::getCombinedWeight
virtual float getCombinedWeight(const xAOD::EventInfo &eventInfo, bool correctUnrepresented=false)=0
Return combined pileup weight.
ST::SUSYObjDef_xAOD::m_treatPUJets
bool m_treatPUJets
Definition: SUSYObjDef_xAOD.h:593
ST::SUSYObjDef_xAOD::m_jesConfig
std::string m_jesConfig
Definition: SUSYObjDef_xAOD.h:860
xAOD::EgammaParameters::electron
@ electron
Definition: EgammaEnums.h:18
python.changerun.pv
pv
Definition: changerun.py:79
ST::SUSYObjDef_xAOD::m_tauConfigPathBaseline
std::string m_tauConfigPathBaseline
Definition: SUSYObjDef_xAOD.h:733
xAOD::EgammaParameters::AuthorPhoton
const uint16_t AuthorPhoton
Object Reconstructed by standard cluster-based algorithm.
Definition: EgammaDefs.h:28
ST::ISUSYObjDef_xAODTool::AtlfastII
@ AtlfastII
Definition: ISUSYObjDef_xAODTool.h:480
CaloCellTimeCorrFiller.filename
filename
Definition: CaloCellTimeCorrFiller.py:23
ST::SUSYObjDef_xAOD::m_autoconfigPRWPath
std::string m_autoconfigPRWPath
Definition: SUSYObjDef_xAOD.h:597
ST::SUSYObjDef_xAOD::m_photonIdDFName
std::string m_photonIdDFName
Definition: SUSYObjDef_xAOD.h:995
ST::SUSYObjDef_xAOD::m_jetFatCalibTool
asg::AnaToolHandle< IJetCalibrationTool > m_jetFatCalibTool
Definition: SUSYObjDef_xAOD.h:833
ST::SUSYObjDef_xAOD::m_electronTriggerSFStringSingle
std::string m_electronTriggerSFStringSingle
Definition: SUSYObjDef_xAOD.h:641
ST::SUSYObjDef_xAOD::m_jetNNJvtEfficiencyTool
asg::AnaToolHandle< CP::IJvtEfficiencyTool > m_jetNNJvtEfficiencyTool
Definition: SUSYObjDef_xAOD.h:845
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:629
CP::IMuonEfficiencyScaleFactors::getEfficiencyScaleFactor
virtual CorrectionCode getEfficiencyScaleFactor(const xAOD::Muon &mu, float &sf, const xAOD::EventInfo *info=0) const =0
Retrieve the Scale factor.
ST::SUSYObjDef_xAOD::BtagSFsys
float BtagSFsys(const xAOD::JetContainer *jets, const CP::SystematicSet &systConfig) override final
Definition: Jets.cxx:888
ST::SUSYObjDef_xAOD::m_tauEta
double m_tauEta
Definition: SUSYObjDef_xAOD.h:731
python.SystemOfUnits.s
float s
Definition: SystemOfUnits.py:147
IDTPM::nSCTDeadSensors
float nSCTDeadSensors(const U &p)
Definition: TrackParametersHelper.h:678
ST::SUSYObjDef_xAOD::m_v_trigs17_cache_multiLep
std::vector< std::string > m_v_trigs17_cache_multiLep
Definition: SUSYObjDef_xAOD.h:476
ST::SUSYObjDef_xAOD::m_v_trigs23_cache_singleEle
std::vector< std::string > m_v_trigs23_cache_singleEle
Definition: SUSYObjDef_xAOD.h:457
ST::SUSYObjDef_xAOD::m_trig2017combination_diLep
std::string m_trig2017combination_diLep
Definition: SUSYObjDef_xAOD.h:948
ST::SUSYObjDef_xAOD::m_trigDRScoringTool
asg::AnaToolHandle< Trig::IMatchScoringTool > m_trigDRScoringTool
Definition: SUSYObjDef_xAOD.h:973
ST::SUSYObjDef_xAOD::m_trig2015combination_diLep
std::string m_trig2015combination_diLep
Definition: SUSYObjDef_xAOD.h:946
ST::SUSYObjDef_xAOD::m_jetTruthLabelingTool
asg::AnaToolHandle< JetTruthLabelingTool > m_jetTruthLabelingTool
Definition: SUSYObjDef_xAOD.h:852
ST::SUSYObjDef_xAOD::m_eleLRT_strat
int m_eleLRT_strat
Definition: SUSYObjDef_xAOD.h:662
ORUtils::ToolBox::phoJetORT
OverlapHandle_t phoJetORT
Definition: ToolBox.h:78
ST::SUSYObjDef_xAOD::m_ZDecorName
std::string m_ZDecorName
Definition: SUSYObjDef_xAOD.h:554
xAOD::numberOfSCTHits
@ numberOfSCTHits
number of hits in SCT [unit8_t].
Definition: TrackingPrimitives.h:269
ST::SUSYObjDef_xAOD::m_metSignif
asg::AnaToolHandle< IMETSignificance > m_metSignif
Definition: SUSYObjDef_xAOD.h:935
xAODType::Tau
@ Tau
The object is a tau (jet)
Definition: ObjectType.h:49
ST::SUSYObjDef_xAOD::m_autoconfigPRWFile
std::string m_autoconfigPRWFile
Definition: SUSYObjDef_xAOD.h:598
ST::SUSYObjDef_xAOD::m_v_trigs16_cache_singleLep
std::vector< std::string > m_v_trigs16_cache_singleLep
Definition: SUSYObjDef_xAOD.h:461
ST::SUSYObjDef_xAOD::m_jesConfigFatData
std::string m_jesConfigFatData
Definition: SUSYObjDef_xAOD.h:865
CxxUtils::atoi
int atoi(std::string_view str)
Helper functions to unpack numbers decoded in string into integers and doubles The strings are requir...
Definition: Control/CxxUtils/Root/StringUtils.cxx:85
ST::SUSYObjDef_xAOD::m_eleBaselinePt
double m_eleBaselinePt
Definition: SUSYObjDef_xAOD.h:690
SG::ConstAccessor::isAvailable
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
IBTaggingSelectionTool::accept
virtual asg::AcceptData accept(const xAOD::IParticle *p) const =0
Declare the interface that the class provides.
xAOD::JetAttribute::HECFrac
@ HECFrac
Definition: JetAttributes.h:113
ST::SUSYObjDef_xAOD::m_commonPRWFileMC23c
std::string m_commonPRWFileMC23c
Definition: SUSYObjDef_xAOD.h:611
dqt_zlumi_alleff_HIST.eff
int eff
Definition: dqt_zlumi_alleff_HIST.py:113
copySelective.source
string source
Definition: copySelective.py:31
ST::Unknown
@ Unknown
Definition: ISUSYObjDef_xAODTool.h:73
CP::IPileupReweightingTool::getPRWHash
virtual ULong64_t getPRWHash(const xAOD::EventInfo &eventInfo)=0
return the prw hash used for fast updates of weights at the post-processing level ....
ST::SUSYObjDef_xAOD::m_v_trigs16_cache_multiLep
std::vector< std::string > m_v_trigs16_cache_multiLep
Definition: SUSYObjDef_xAOD.h:475
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:801
PhotonHelpers::passOQqualityDelayed
bool passOQqualityDelayed(const xAOD::Photon &ph)
Helpers to ease the implementation of the pass Quality requirements.
Definition: PhotonHelpers.cxx:29
Trig::TrigDecisionToolCore::getChainGroup
const Trig::ChainGroup * getChainGroup(const std::vector< std::string > &patterns, TrigDefs::Group props=TrigDefs::Group::Default) const
Create/get chain group (.
Definition: ChainGroupFunctions.cxx:38
xAOD::numberOfPixelDeadSensors
@ numberOfPixelDeadSensors
number of dead pixel sensors crossed [unit8_t].
Definition: TrackingPrimitives.h:267
ST::SUSYObjDef_xAOD::m_eleConfig
std::string m_eleConfig
Definition: SUSYObjDef_xAOD.h:647
top
@ top
Definition: TruthClasses.h:64
TauAnalysisTools::JETIDRNNVERYLOOSE
@ JETIDRNNVERYLOOSE
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:19
ST::SUSYObjDef_xAOD::m_muHighPtExtraSmear
bool m_muHighPtExtraSmear
Definition: SUSYObjDef_xAOD.h:673
xAOD::track
@ track
Definition: TrackingPrimitives.h:513
calibdata.copy
bool copy
Definition: calibdata.py:26
ST::SUSYObjDef_xAOD::m_photonTriggerName
std::string m_photonTriggerName
Definition: SUSYObjDef_xAOD.h:668
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:44
veto
std::vector< std::string > veto
these patterns are anded
Definition: listroot.cxx:191
ST::SUSYObjDef_xAOD::m_TopTagjetUncertaintiesTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_TopTagjetUncertaintiesTool
Definition: SUSYObjDef_xAOD.h:855
IBTaggingEfficiencyTool::getInefficiencyScaleFactor
virtual CP::CorrectionCode getInefficiencyScaleFactor(const xAOD::Jet &jet, float &sf)=0
ST::SUSYObjDef_xAOD::m_EigenvectorReductionB
std::string m_EigenvectorReductionB
Definition: SUSYObjDef_xAOD.h:682
ST::SUSYObjDef_xAOD::m_orBoostedElectronC2
double m_orBoostedElectronC2
Definition: SUSYObjDef_xAOD.h:774
xAOD::getOriginalObject
const IParticle * getOriginalObject(const IParticle &copy)
This function can be used to conveniently get a pointer back to the original object from which a copy...
Definition: IParticleHelpers.cxx:140
xAODType::BTag
@ BTag
The object is a b-tagging object.
Definition: ObjectType.h:60
ST::Tau
@ Tau
Definition: ISUSYObjDef_xAODTool.h:79
ST::SUSYObjDef_xAOD::m_trig2023combination_singleLep
std::string m_trig2023combination_singleLep
Definition: SUSYObjDef_xAOD.h:942
ST::SUSYObjDef_xAOD::m_muLRT
bool m_muLRT
Definition: SUSYObjDef_xAOD.h:719
InDet::IInclusiveTrackFilterTool::accept
virtual bool accept(const xAOD::TrackParticle *) const =0
JetVertexTaggerTool::updateJvt
float updateJvt(const xAOD::Jet &jet) const override
Calculate the updated JVT.
Definition: JetVertexTaggerTool.cxx:200
ST::SUSYObjDef_xAOD::m_tauPrePtCut
double m_tauPrePtCut
Definition: SUSYObjDef_xAOD.h:729
ST::SUSYObjDef_xAOD::MergeMuons
StatusCode MergeMuons(const xAOD::MuonContainer &muons, const std::vector< bool > &writeMuon, xAOD::MuonContainer *outputCol) const override final
Definition: Muons.cxx:56
Trig::ChainGroup::getListOfTriggers
std::vector< std::string > getListOfTriggers() const
Definition: ChainGroup.cxx:467
ST::SUSYObjDef_xAOD::m_v_trigs22_cache_diLep
std::vector< std::string > m_v_trigs22_cache_diLep
Definition: SUSYObjDef_xAOD.h:472
ST::SUSYObjDef_xAOD::m_orInputLabel
std::string m_orInputLabel
Definition: SUSYObjDef_xAOD.h:787
IAsgElectronLikelihoodTool::accept
virtual asg::AcceptData accept(const xAOD::IParticle *part) const =0
accept with pointer to IParticle so as to not hide the IAsgSelectionTool one
JetPileupTag::JetVertexNNTagger::decorate
virtual StatusCode decorate(const xAOD::JetContainer &jetCont) const override
Decorate a jet collection without otherwise modifying it.
Definition: JetVertexNNTagger.cxx:352
ST::SUSYObjDef_xAOD::m_ZtagConfig
std::string m_ZtagConfig
Definition: SUSYObjDef_xAOD.h:557
ST::SUSYObjDef_xAOD::m_eleBaselineCrackVeto
bool m_eleBaselineCrackVeto
Definition: SUSYObjDef_xAOD.h:692
CP::IIsolationCorrectionTool::isAffectedBySystematic
virtual bool isAffectedBySystematic(const CP::SystematicVariation &systematic) const =0
Declare the interface that this class provides.
ST::SUSYObjDef_xAOD::m_mud0sig
double m_mud0sig
Definition: SUSYObjDef_xAOD.h:710
Trig::IMatchingTool::match
virtual bool match(const xAOD::IParticle &recoObject, const std::string &chain, double matchThreshold=0.1, bool rerun=false) const =0
single object trigger matching. matchThreshold is typically the deltaR requirement to obtain positive...
ST::SUSYObjDef_xAOD::m_muIsoHighPt_WP
std::string m_muIsoHighPt_WP
Definition: SUSYObjDef_xAOD.h:671
ST::SUSYObjDef_xAOD::m_murequirepassedHighPtCuts
bool m_murequirepassedHighPtCuts
Definition: SUSYObjDef_xAOD.h:714
ST::SUSYObjDef_xAOD::m_muonHighPtIsolationSFTool
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonHighPtIsolationSFTool
Definition: SUSYObjDef_xAOD.h:879
ST::SUSYObjDef_xAOD::m_photonIdBaseline
std::string m_photonIdBaseline
Definition: SUSYObjDef_xAOD.h:654
ST::SUSYObjDef_xAOD::treatAsYear
int treatAsYear(const int runNumber=-1) const override final
Definition: SUSYObjDef_xAOD.cxx:3123
CONFIG_EG_EFF_TOOL
#define CONFIG_EG_EFF_TOOL(TOOLHANDLE, TOOLNAME, CORRFILE)
Definition: SUSYToolsInit.cxx:88
SG::DataProxy
Definition: DataProxy.h:45
CaloNoise_fillDB.mu
mu
Definition: CaloNoise_fillDB.py:51
ST::SUSYObjDef_xAOD::m_metGreedyPhotons
bool m_metGreedyPhotons
Definition: SUSYObjDef_xAOD.h:584
xAOD::bool
setBGCode setTAP setLVL2ErrorBits bool
Definition: TrigDecision_v1.cxx:60
CP::ISystematicsTool::applySystematicVariation
virtual StatusCode applySystematicVariation(const SystematicSet &systConfig)=0
effects: configure this tool for the given list of systematic variations.
ST::SUSYObjDef_xAOD::m_muonTrigSFTools
ToolHandleArray< CP::IMuonTriggerScaleFactors > m_muonTrigSFTools
Definition: SUSYObjDef_xAOD.h:881
ST::SUSYObjDef_xAOD::m_jetCleaningTool
asg::AnaToolHandle< IJetSelector > m_jetCleaningTool
Definition: SUSYObjDef_xAOD.h:839
Amg::distance
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
Definition: GeoPrimitivesHelpers.h:54
ST::SUSYObjDef_xAOD::m_photonCrackVeto
bool m_photonCrackVeto
Definition: SUSYObjDef_xAOD.h:726
ST::SUSYObjDef_xAOD::autoconfigurePileupRWTool
StatusCode autoconfigurePileupRWTool(const std::string &PRWfilesDir="dev/PileupReweighting/share/", const std::string &PRWfileName="", bool usePathResolver=true, bool RPVLLmode=false, bool Combinedmode=false, const std::string &HFFilter="")
Definition: SUSYObjDef_xAOD.cxx:1014
ST::SUSYObjDef_xAOD::m_BtagKeyOverride
std::string m_BtagKeyOverride
Definition: SUSYObjDef_xAOD.h:680
asg::AnaToolHandle::empty
bool empty() const
whether this ToolHandle is completely empty, i.e.
ST::SUSYObjDef_xAOD::m_commonPRWFileMC23a
std::string m_commonPRWFileMC23a
Definition: SUSYObjDef_xAOD.h:610
ST::SUSYObjDef_xAOD::m_orDoMuonJetGhostAssociation
bool m_orDoMuonJetGhostAssociation
Definition: SUSYObjDef_xAOD.h:784
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
ST::SUSYObjDef_xAOD::m_isoCorrTool
asg::AnaToolHandle< CP::IIsolationCorrectionTool > m_isoCorrTool
Definition: SUSYObjDef_xAOD.h:975
ST::SUSYObjDef_xAOD::m_defaultTruthJets
std::string m_defaultTruthJets
Definition: SUSYObjDef_xAOD.h:817
python.ParticleTypeUtil.info
def info
Definition: ParticleTypeUtil.py:87
ST::SUSYObjDef_xAOD::m_tauDoTTM
bool m_tauDoTTM
Definition: SUSYObjDef_xAOD.h:734
ST::SUSYObjDef_xAOD::m_elecTrigSFTools
ToolHandleArray< IAsgElectronEfficiencyCorrectionTool > m_elecTrigSFTools
Definition: SUSYObjDef_xAOD.h:895
ST::SUSYObjDef_xAOD::m_tauTrigEffTool
std::vector< asg::AnaToolHandle< TauAnalysisTools::ITauEfficiencyCorrectionsTool > > m_tauTrigEffTool
Definition: SUSYObjDef_xAOD.h:925
ST::SUSYObjDef_xAOD::m_mcCampaign
std::string m_mcCampaign
Definition: SUSYObjDef_xAOD.h:602
xAOD::Jet
Jet_v1 Jet
Definition of the current "jet version".
Definition: Event/xAOD/xAODJet/xAODJet/Jet.h:17
ST::SUSYObjDef_xAOD::m_TopDecorName
std::string m_TopDecorName
Definition: SUSYObjDef_xAOD.h:555
ST::SUSYObjDef_xAOD::m_orDoMuonJet
bool m_orDoMuonJet
Definition: SUSYObjDef_xAOD.h:767
Trk::split
@ split
Definition: LayerMaterialProperties.h:38
ST::SUSYObjDef_xAOD::m_v_trigs16_cache_singleEle
std::vector< std::string > m_v_trigs16_cache_singleEle
Definition: SUSYObjDef_xAOD.h:453
BkgElectron
@ BkgElectron
Definition: TruthClasses.h:13
ST::SUSYObjDef_xAOD::m_commonPRWFileMC23d
std::string m_commonPRWFileMC23d
Definition: SUSYObjDef_xAOD.h:612
DataVector::empty
bool empty() const noexcept
Returns true if the collection is empty.
ST::SUSYObjDef_xAOD::GetInDetLargeD0Tracks
const xAOD::TrackParticleContainer & GetInDetLargeD0Tracks(const EventContext &ctx) const override final
Definition: SUSYObjDef_xAOD.cxx:3082
xAOD::FileMetaData_v1::dataType
@ dataType
Data type that's in the file [string].
Definition: FileMetaData_v1.h:64
doubleTestComp.j2
j2
Definition: doubleTestComp.py:22
xAOD::JetInput::Uncategorized
@ Uncategorized
Definition: JetContainerInfo.h:100
ST::SUSYObjDef_xAOD::m_upstreamTriggerMatching
bool m_upstreamTriggerMatching
Definition: SUSYObjDef_xAOD.h:528
ST::SUSYObjDef_xAOD::m_fatJetUncertaintiesMCType
std::string m_fatJetUncertaintiesMCType
Definition: SUSYObjDef_xAOD.h:535
InDetDD::electrons
@ electrons
Definition: InDetDD_Defs.h:17
ST::SUSYObjDef_xAOD::m_LRTuncTool
asg::AnaToolHandle< InDet::IInclusiveTrackFilterTool > m_LRTuncTool
Definition: SUSYObjDef_xAOD.h:984
ST::MET_Track
@ MET_Track
Definition: ISUSYObjDef_xAODTool.h:83
IMETSignificance::varianceMET
virtual StatusCode varianceMET(xAOD::MissingETContainer *metCont, float avgmu, const std::string &jetTermName, const std::string &softTermName, const std::string &totalMETName)=0
xAOD::JetAttribute::NegativeE
@ NegativeE
Definition: JetAttributes.h:84
ST::SUSYObjDef_xAOD::m_WtagConfig
std::string m_WtagConfig
Definition: SUSYObjDef_xAOD.h:556
ST::SUSYObjDef_xAOD::m_useTRUTH3
bool m_useTRUTH3
Definition: SUSYObjDef_xAOD.h:804
ST::SUSYObjDef_xAOD::m_EG_corrFNList
std::string m_EG_corrFNList
Definition: SUSYObjDef_xAOD.h:824
ST::SUSYObjDef_xAOD::m_acc_photonId
SG::ConstAccessor< char > m_acc_photonId
Definition: SUSYObjDef_xAOD.h:1001
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
match
bool match(std::string s1, std::string s2)
match the individual directories of two strings
Definition: hcg.cxx:357
ST::SUSYObjDef_xAOD::IsSignalTau
bool IsSignalTau(const xAOD::TauJet &input, const float ptcut, const float etacut) const override final
Definition: Taus.cxx:112
ST::SUSYObjDef_xAOD::m_photonIsolationSFTool
asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > m_photonIsolationSFTool
Definition: SUSYObjDef_xAOD.h:908
ST::SUSYObjDef_xAOD::isTrigInTDT
bool isTrigInTDT(std::scoped_lock< std::mutex > &lock, const std::string &triggerName) const
Definition: Trigger.cxx:83
fitman.k
k
Definition: fitman.py:528
ST::SUSYObjDef_xAOD::m_muonSelectionTool
asg::AnaToolHandle< CP::IMuonSelectionTool > m_muonSelectionTool
Definition: SUSYObjDef_xAOD.h:871
ST::SUSYObjDef_xAOD::m_useSigLepForIsoCloseByOR
bool m_useSigLepForIsoCloseByOR
Definition: SUSYObjDef_xAOD.h:801
JSSWTopTaggerDNN::tag
virtual StatusCode tag(const xAOD::Jet &jet) const override
Decorate single jet with tagging info.
Definition: JSSWTopTaggerDNN.cxx:381
ST::SUSYObjDef_xAOD::m_eleBaselineEta
double m_eleBaselineEta
Definition: SUSYObjDef_xAOD.h:691
BremPhot
@ BremPhot
Definition: TruthClasses.h:92
CP::SystematicRegistry::getInstance
static SystematicRegistry & getInstance()
Get the singleton instance of the registry for the curren thread.
Definition: SystematicRegistry.cxx:25
AthAnalysisHelper::retrieveMetadata
static std::string retrieveMetadata(const std::string &folder, const std::string &key, const ServiceHandle< StoreGateSvc > &inputMetaStore)
method that always returns as a string you can use from, e.g, pyROOT with evt = ROOT....
Definition: AthAnalysisHelper.h:254
ST::SUSYObjDef_xAOD::m_egammaAmbiguityTool
asg::AnaToolHandle< IEGammaAmbiguityTool > m_egammaAmbiguityTool
Definition: SUSYObjDef_xAOD.h:916
ST::SUSYObjDef_xAOD::m_TopconfigReader
TEnv m_TopconfigReader
Definition: SUSYObjDef_xAOD.h:552
ST::SUSYObjDef_xAOD::m_prwActualMu2018File
std::string m_prwActualMu2018File
Definition: SUSYObjDef_xAOD.h:618
ST::SUSYObjDef_xAOD::m_doIsoSignal
bool m_doIsoSignal
Definition: SUSYObjDef_xAOD.h:796
ST::SUSYObjDef_xAOD::getDefaultJetUncConfig
std::string getDefaultJetUncConfig()
Definition: SUSYObjDef_xAOD.cxx:1835
xAOD::BTagging_v1::pb
bool pb(const std::string &taggername, double &value) const
Definition: BTagging_v1.cxx:360
ServiceHandle< IIncidentSvc >
ST::SUSYObjDef_xAOD::m_eleIsoHighPtThresh
double m_eleIsoHighPtThresh
Definition: SUSYObjDef_xAOD.h:659
ST::SUSYObjDef_xAOD::m_orBJetPtUpperThres
double m_orBJetPtUpperThres
Definition: SUSYObjDef_xAOD.h:789
ST::SUSYObjDef_xAOD::m_eleChID_WP
std::string m_eleChID_WP
Definition: SUSYObjDef_xAOD.h:660
ANA_MSG_DEBUG
#define ANA_MSG_DEBUG(xmsg)
Macro printing debug messages.
Definition: Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:288
ST::SUSYObjDef_xAOD::m_trig2015combination_diPhoton
std::string m_trig2015combination_diPhoton
Definition: SUSYObjDef_xAOD.h:962
CP::ISystematicsTool::isAffectedBySystematic
virtual bool isAffectedBySystematic(const SystematicVariation &systematic) const =0
Declare the interface that this class provides.
asg::AsgMetadataTool::m_useIncidents
bool m_useIncidents
Definition: AsgMetadataTool.h:128
ST::SUSYObjDef_xAOD::m_isoTool
asg::AnaToolHandle< CP::IIsolationSelectionTool > m_isoTool
Definition: SUSYObjDef_xAOD.h:976
ST::SUSYObjDef_xAOD::m_JvtConfigRun3
std::string m_JvtConfigRun3
Definition: SUSYObjDef_xAOD.h:747
ST::SUSYObjDef_xAOD::m_defaultSyst
CP::SystematicSet m_defaultSyst
Definition: SUSYObjDef_xAOD.h:819
ST::SUSYObjDef_xAOD::IsBJetLoose
bool IsBJetLoose(const xAOD::Jet &input) const override final
Definition: Jets.cxx:681
asg::AnaToolHandle::isUserConfigured
bool isUserConfigured() const
whether this tool handle has been configured by the user
ST::SUSYObjDef_xAOD::m_pmgSHnjetWeighter
asg::AnaToolHandle< IWeightTool > m_pmgSHnjetWeighter
Definition: SUSYObjDef_xAOD.h:989