ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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 > &) 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 > &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
 
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_tauSmearingToolGenerator
 
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
 
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 > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &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_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_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 474 of file ISUSYObjDef_xAODTool.h.

474  {
475  Undefined = -1,
476  Data,
477  FullSim,
478  AtlfastII
479  };

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

◆ ~SUSYObjDef_xAOD()

ST::SUSYObjDef_xAOD::~SUSYObjDef_xAOD ( )

Definition at line 3124 of file SUSYObjDef_xAOD.cxx.

3124  {
3125 
3126 #ifdef XAOD_STANDALONE
3127  // remove all tools from the asg::ToolStore (and delete them)
3128  // so that they don't get re-used if we set up another SUSYTools
3129  // instance, e.g. when processing two datasets in one EventLoop
3130  // job
3131  if (!m_trigDecTool.empty()){
3132  if (asg::ToolStore::contains<Trig::TrigDecisionTool>("ToolSvc.TrigDecisionTool") ){
3133  // Ignore both of these so that we are safe if others have cleaned up
3134  m_trigDecTool->finalize().ignore();
3135  asg::ToolStore::remove("ToolSvc.TrigDecisionTool").ignore();
3136  }
3137  }
3138 #endif
3139 }

Member Function Documentation

◆ ApplyLRTUncertainty()

StatusCode ST::SUSYObjDef_xAOD::ApplyLRTUncertainty ( )
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 3091 of file SUSYObjDef_xAOD.cxx.

3091  {
3092 
3093  // Don't apply variations for data
3094  if (isData()) return StatusCode::SUCCESS;
3095 
3096  const EventContext& ctx = Gaudi::Hive::currentContext();
3097 
3098  // Loop over tracks and call LRT uncertainty tool
3099  ATH_MSG_DEBUG ( "Applying LRT filter tool decorations for uncertainty");
3101  for(const auto trk: inTracks) dec_lrtFilter(*trk) = m_LRTuncTool->accept(trk);
3102 
3103  // Loop over GSF LRT tracks and call uncertainty tool
3104  const xAOD::TrackParticleContainer inGSFTracks = GetInDetLargeD0GSFTracks(ctx);
3105  for(const auto trk: inGSFTracks) dec_lrtFilter(*trk) = m_LRTuncTool->accept(trk);
3106 
3107  return StatusCode::SUCCESS;
3108 }

◆ ApplyPRWTool()

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

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 3046 of file SUSYObjDef_xAOD.cxx.

3046  {
3047 
3048  const xAOD::EventInfo* evtInfo = GetEventInfo();
3049  if(!randomrunnumber.isAvailable(*evtInfo))
3050  ATH_CHECK( m_prwTool->apply( *evtInfo, muDependentRRN ) );
3051  return StatusCode::SUCCESS;
3052 }

◆ applySystematicVariation()

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

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 2137 of file SUSYObjDef_xAOD.cxx.

2138 {
2139  if (!m_tool_init) {
2140  ATH_MSG_ERROR("SUSYTools was not initialized!!");
2141  return StatusCode::FAILURE;
2142  }
2143 
2144  ATH_MSG_DEBUG(" in SUSYObjDef_xAOD::applySystematicVariation \"" << systConfig.name() << "\" size " << systConfig.size());
2145 
2146  m_currentSyst = systConfig;
2147 
2148  // NB: SystematicSet typically has only one component (see SUSYToolsTester macro)
2149  if (!m_jetUncertaintiesTool.empty() && systConfig.name().find("PseudoData") == std::string::npos) {
2151  if ( ret != StatusCode::SUCCESS) {
2152  ATH_MSG_VERBOSE("Cannot configure JetUncertaintiesTool for systematic var. " << systConfig.name() );
2153  } else {
2154  ATH_MSG_VERBOSE("Configured JetUncertaintiesTool for systematic var. " << systConfig.name() );
2155  }
2156  }
2157  if (!m_jetUncertaintiesPDSmearTool.empty() && systConfig.name().find("PseudoData") != std::string::npos) {
2159  if ( ret != StatusCode::SUCCESS) {
2160  ATH_MSG_VERBOSE("Cannot configure JetUncertaintiesPDSmearTool for systematic var. " << systConfig.name() );
2161  } else {
2162  ATH_MSG_VERBOSE("Configured JetUncertaintiesPDSmearTool for systematic var. " << systConfig.name() );
2163  }
2164  }
2165  if (!m_WTagjetUncertaintiesTool.empty() && !m_WTagUncConfig.empty()) {
2167  if ( ret != StatusCode::SUCCESS) {
2168  ATH_MSG_VERBOSE("Cannot configure (Fat)JetUncertaintiesTool (WTag) for systematic var. " << systConfig.name() );
2169  } else {
2170  ATH_MSG_VERBOSE("Configured (Fat)JetUncertaintiesTool (WTag) for systematic var. " << systConfig.name() );
2171  }
2172  }
2173  if (!m_ZTagjetUncertaintiesTool.empty() && !m_ZTagUncConfig.empty()) {
2175  if ( ret != StatusCode::SUCCESS) {
2176  ATH_MSG_VERBOSE("Cannot configure (Fat)JetUncertaintiesTool (ZTag) for systematic var. " << systConfig.name() );
2177  } else {
2178  ATH_MSG_VERBOSE("Configured (Fat)JetUncertaintiesTool (ZTag) for systematic var. " << systConfig.name() );
2179  }
2180  }
2181 
2184  if ( ret != StatusCode::SUCCESS) {
2185  ATH_MSG_VERBOSE("Cannot configure (Fat)JetUncertaintiesTool (TopTag) for systematic var. " << systConfig.name() );
2186  } else {
2187  ATH_MSG_VERBOSE("Configured (Fat)JetUncertaintiesTool (TopTag) for systematic var. " << systConfig.name() );
2188  }
2189  }
2190  if (!m_fatjetUncertaintiesTool.empty() && systConfig.name().find("PseudoData") == std::string::npos) {
2192  if ( ret != StatusCode::SUCCESS) {
2193  ATH_MSG_VERBOSE("Cannot configure (Fat)JetUncertaintiesTool (main) for systematic var. " << systConfig.name() );
2194  } else {
2195  ATH_MSG_VERBOSE("Configured (Fat)JetUncertaintiesTool (main) for systematic var. " << systConfig.name() );
2196  }
2197  }
2198  if (!m_fatjetUncertaintiesPDSmearTool.empty() && systConfig.name().find("PseudoData") != std::string::npos) {
2200  if ( ret != StatusCode::SUCCESS) {
2201  ATH_MSG_VERBOSE("Cannot configure FatJetUncertaintiesPDSmearTool for systematic var. " << systConfig.name() );
2202  } else {
2203  ATH_MSG_VERBOSE("Configured FatJetUncertaintiesPDSmearTool for systematic var. " << systConfig.name() );
2204  }
2205  }
2208  if ( ret != StatusCode::SUCCESS) {
2209  ATH_MSG_VERBOSE("Cannot configure (Fat)JetFFSmearingTool (main) for systematic var. " << systConfig.name() );
2210  } else {
2211  ATH_MSG_VERBOSE("Configured (Fat)JetFFSmearingTool (main) for systematic var. " << systConfig.name() );
2212  }
2213  }
2216  if ( ret != StatusCode::SUCCESS) {
2217  ATH_MSG_VERBOSE("Cannot configure NNJvtEfficiency for systematic var. " << systConfig.name() );
2218  } else {
2219  ATH_MSG_VERBOSE("Configured NNJvtEfficiency for systematic var. " << systConfig.name() );
2220  }
2221  }
2222  if (!m_jetfJvtEfficiencyTool.empty()) {
2224  if ( ret != StatusCode::SUCCESS) {
2225  ATH_MSG_VERBOSE("Cannot configure fJvtEfficiency for systematic var. " << systConfig.name() );
2226  } else {
2227  ATH_MSG_VERBOSE("Configured fJvtEfficiency for systematic var. " << systConfig.name() );
2228  }
2229  }
2230  if (!m_muonCalibTool.empty()) {
2232  if (ret != StatusCode::SUCCESS) {
2233  ATH_MSG_ERROR("Cannot configure MuonCalibTool for systematic var. " << systConfig.name() );
2234  return ret;
2235  } else {
2236  ATH_MSG_VERBOSE("MuonCalibTool configured for systematic var. " << systConfig.name() );
2237  }
2238  }
2239  if (!m_muonEfficiencySFTool.empty()) {
2241  if ( ret != StatusCode::SUCCESS) {
2242  ATH_MSG_ERROR("Cannot configure MuonEfficiencyScaleFactors for systematic var. " << systConfig.name() );
2243  return ret;
2244  } else {
2245  ATH_MSG_VERBOSE("MuonEfficiencyScaleFactors configured for systematic var. " << systConfig.name() );
2246  }
2247  }
2250  if ( ret != StatusCode::SUCCESS) {
2251  ATH_MSG_ERROR("Cannot configure MuonBadMuonHighPtScaleFactors for systematic var. " << systConfig.name() );
2252  return ret;
2253  } else {
2254  ATH_MSG_VERBOSE("MuonBadMuonHighPtScaleFactors configured for systematic var. " << systConfig.name() );
2255  }
2256  }
2259  if ( ret != StatusCode::SUCCESS) {
2260  ATH_MSG_ERROR("Cannot configure MuonTTVAEfficiencyScaleFactors for systematic var. " << systConfig.name() );
2261  return ret;
2262  } else {
2263  ATH_MSG_VERBOSE("MuonTTVAEfficiencyScaleFactors configured for systematic var. " << systConfig.name() );
2264  }
2265  }
2266  if (!m_muonIsolationSFTool.empty()) {
2268  if ( ret != StatusCode::SUCCESS) {
2269  ATH_MSG_ERROR("Cannot configure MuonIsolationScaleFactors for systematic var. " << systConfig.name() );
2270  return ret;
2271  } else {
2272  ATH_MSG_VERBOSE("MuonIsolationScaleFactors configured for systematic var. " << systConfig.name() );
2273  }
2274  }
2275  if (!m_muonTriggerSFTool.empty()) {
2277  if ( ret != StatusCode::SUCCESS) {
2278  ATH_MSG_ERROR("Cannot configure MuonTriggerScaleFactors for systematic var. " << systConfig.name() );
2279  return ret;
2280  } else {
2281  ATH_MSG_VERBOSE("MuonTriggerScaleFactors configured for systematic var. " << systConfig.name() );
2282  }
2283  }
2286  if (ret != StatusCode::SUCCESS) {
2287  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (reco) for systematic var. " << systConfig.name() );
2288  return ret;
2289  } else {
2290  ATH_MSG_VERBOSE("AsgElectronEfficiencyCorrectionTool (reco) configured for systematic var. " << systConfig.name() );
2291  }
2292  }
2295  if (ret != StatusCode::SUCCESS) {
2296  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (id) for systematic var. " << systConfig.name() );
2297  return ret;
2298  } else {
2299  ATH_MSG_VERBOSE("AsgElectronEfficiencyCorrectionTool (id) configured for systematic var. " << systConfig.name() );
2300  }
2301  }
2304  if (ret != StatusCode::SUCCESS) {
2305  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.name() );
2306  return ret;
2307  } else {
2308  ATH_MSG_VERBOSE("AsgElectronEfficiencyCorrectionTool (trigger) configured for systematic var. " << systConfig.name() );
2309  }
2310  }
2313  if (ret != StatusCode::SUCCESS) {
2314  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (trigger SFTool) for systematic var. " << systConfig.name() );
2315  return ret;
2316  } else {
2317  ATH_MSG_VERBOSE("AsgElectronEfficiencyCorrectionTool (trigger SFTool) configured for systematic var. " << systConfig.name() );
2318  }
2319  }
2322  for(auto &sfop : m_elecTrigEffTools){
2323  StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2324  if (ret1 != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure m_elecTrigEffTools (dilepton trigger) for systematic var. " << systConfig.name() ); return ret1; }
2325  }
2326  for(auto &sfop : m_elecTrigSFTools){
2327  StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2328  if (ret1 != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure m_elecTrigSFTools (dilepton trigger) for systematic var. " << systConfig.name() ); return ret1; }
2329  }
2330  for(auto &sfop : m_muonTrigSFTools){
2331  StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2332  if (ret1 != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure m_muonTrigSFTools (dilepton trigger) for systematic var. " << systConfig.name() ); return ret1; }
2333  }
2334  if (ret != StatusCode::SUCCESS) {
2335  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (dilepton trigger) for systematic var. " << systConfig.name() );
2336  return ret;
2337  } else {
2338  ATH_MSG_VERBOSE("TrigGlobalEfficiencyCorrectionTool (dilepton trigger) configured for systematic var. " << systConfig.name() );
2339  }
2340  }
2343  for(auto &sfop : m_elecTrigEffTools){
2344  StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2345  if (ret1 != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure m_elecTrigEffTools (multilep trigger) for systematic var. " << systConfig.name() ); return ret1; }
2346  }
2347  for(auto &sfop : m_elecTrigSFTools){
2348  StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2349  if (ret1 != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure m_elecTrigSFTools (multilep trigger) for systematic var. " << systConfig.name() ); return ret1; }
2350  }
2351  for(auto &sfop : m_muonTrigSFTools){
2352  StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2353  if (ret1 != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure m_muonTrigSFTools (multilep trigger) for systematic var. " << systConfig.name() ); return ret1; }
2354  }
2355  if (ret != StatusCode::SUCCESS) {
2356  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (multi-lepton trigger) for systematic var. " << systConfig.name() );
2357  return ret;
2358  } else {
2359  ATH_MSG_VERBOSE("TrigGlobalEfficiencyCorrectionTool (multi-lepton trigger) configured for systematic var. " << systConfig.name() );
2360  }
2361  }
2364  if (ret != StatusCode::SUCCESS) {
2365  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (iso) for systematic var. " << systConfig.name() );
2366  return ret;
2367  } else {
2368  ATH_MSG_VERBOSE("AsgElectronEfficiencyCorrectionTool (iso) configured for systematic var. " << systConfig.name() );
2369  }
2370  }
2373  if (ret != StatusCode::SUCCESS) {
2374  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (iso high-pt) for systematic var. " << systConfig.name() );
2375  return ret;
2376  } else {
2377  ATH_MSG_VERBOSE("AsgElectronEfficiencyCorrectionTool (iso high-pt) configured for systematic var. " << systConfig.name() );
2378  }
2379  }
2380  if (!m_elecChargeEffCorrTool.empty()) {
2382  if (ret != StatusCode::SUCCESS) {
2383  ATH_MSG_ERROR("Cannot configure ElectronChargeEffCorrectionTool for systematic var. " << systConfig.name() );
2384  return ret;
2385  } else {
2386  ATH_MSG_VERBOSE("ElectronChargeEffCorrectionTool configured for systematic var. " << systConfig.name() );
2387  }
2388  }
2389  if (!isData() && !m_photonEfficiencySFTool.empty()) {
2391  if (ret != StatusCode::SUCCESS) {
2392  ATH_MSG_ERROR("Cannot configure AsgPhotonEfficiencyCorrectionTool (reco) for systematic var. " << systConfig.name() );
2393  return ret;
2394  } else {
2395  ATH_MSG_VERBOSE("AsgPhotonEfficiencyCorrectionTool (reco) configured for systematic var. " << systConfig.name() );
2396  }
2397  }
2398  if (!isData() && !m_photonIsolationSFTool.empty()) {
2400  if (ret != StatusCode::SUCCESS) {
2401  ATH_MSG_ERROR("Cannot configure AsgPhotonEfficiencyCorrectionTool (iso) for systematic var. " << systConfig.name() );
2402  return ret;
2403  } else {
2404  ATH_MSG_VERBOSE("AsgPhotonEfficiencyCorrectionTool configured (iso) for systematic var. " << systConfig.name() );
2405  }
2406  }
2407  if (!isData() && !m_photonTriggerSFTool.empty()) {
2409  if (ret != StatusCode::SUCCESS) {
2410  ATH_MSG_ERROR("Cannot configure AsgPhotonEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.name() );
2411  return ret;
2412  } else {
2413  ATH_MSG_VERBOSE("AsgPhotonEfficiencyCorrectionTool configured (trigger) for systematic var. " << systConfig.name() );
2414  }
2415  }
2418  for(auto &sfop : m_photonTrigEffTools){
2419  StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2420  if (ret1 != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure m_photonTrigEffTools (diphoton trigger) for systematic var. " << systConfig.name() ); return ret1; }
2421  }
2422  for(auto &sfop : m_photonTrigSFTools){
2423  StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2424  if (ret1 != StatusCode::SUCCESS) { ATH_MSG_ERROR("Cannot configure m_photonTrigSFTools (diphoton trigger) for systematic var. " << systConfig.name() ); return ret1; }
2425  }
2426  if (ret != StatusCode::SUCCESS) {
2427  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (diphoton trigger) for systematic var. " << systConfig.name() );
2428  return ret;
2429  } else {
2430  ATH_MSG_VERBOSE("TrigGlobalEfficiencyCorrectionTool (diphoton trigger) configured for systematic var. " << systConfig.name() );
2431  }
2432  }
2433  if (!m_egammaCalibTool.empty()) {
2435  if (ret != StatusCode::SUCCESS) {
2436  ATH_MSG_ERROR("Cannot configure EgammaCalibrationAndSmearingTool for systematic var. " << systConfig.name() );
2437  return ret;
2438  } else {
2439  ATH_MSG_VERBOSE("EgammaCalibrationAndSmearingTool configured for systematic var. " << systConfig.name() );
2440  }
2441  }
2442  if (!m_isoCorrTool.empty()) {
2444  if (ret != StatusCode::SUCCESS) {
2445  ATH_MSG_ERROR("Cannot configure IsolationCorrectionTool for systematic var. " << systConfig.name() );
2446  return ret;
2447  } else {
2448  ATH_MSG_VERBOSE("IsolationCorrectionTool configured for systematic var. " << systConfig.name() );
2449  }
2450  }
2451  if (!m_btagEffTool.empty()) {
2452  //if ( systConfig.size() > 0 && m_btagEffTool->isAffectedBySystematic(*systConfig.begin()) ) {
2454  if ( ret != StatusCode::SUCCESS) {
2455  ATH_MSG_ERROR("Cannot configure xAODBTaggingEfficiency for systematic var. " << systConfig.name() );
2456  return ret;
2457  } else {
2458  ATH_MSG_VERBOSE("Configured xAODBTaggingEfficiency for systematic var. " << systConfig.name() );
2459  }
2460  //}
2461  }
2462  if (!m_btagEffTool_trkJet.empty()) {
2464  if ( ret != StatusCode::SUCCESS) {
2465  ATH_MSG_ERROR("Cannot configure xAODBTaggingEfficiency (track jets) for systematic var. " << systConfig.name() );
2466  return ret;
2467  } else {
2468  ATH_MSG_VERBOSE("Configured xAODBTaggingEfficiency (track jets) for systematic var. " << systConfig.name() );
2469  }
2470  }
2471  if (!m_tauSmearingTool.empty()) {
2473  if ( ret != StatusCode::SUCCESS) {
2474  ATH_MSG_ERROR("Cannot configure TauSmearingTool for systematic var. " << systConfig.name() );
2475  return ret;
2476  } else {
2477  ATH_MSG_VERBOSE("Configured TauSmearingTool for systematic var. " << systConfig.name() );
2478  }
2479  }
2480  if (!m_tauEffTool.empty()) {
2482  if ( ret != StatusCode::SUCCESS) {
2483  ATH_MSG_ERROR("Cannot configure TauEfficiencyCorrectionsTool for systematic var. " << systConfig.name() );
2484  return ret;
2485  } else {
2486  ATH_MSG_VERBOSE("Configured TauEfficiencyCorrectionsTool for systematic var. " << systConfig.name() );
2487  }
2488  }
2489  for(auto &tool : m_tauTrigEffTool) {
2490  StatusCode ret = tool->applySystematicVariation(systConfig);
2491  if (ret != StatusCode::SUCCESS) {
2492  ATH_MSG_ERROR("Cannot configure " << tool->name() << " for systematic var. " << systConfig.name() );
2493  return ret;
2494  } else {
2495  ATH_MSG_VERBOSE("Configured " << tool->name() << " for systematic var. " << systConfig.name() );
2496  }
2497  }
2498  if (!m_metSystTool.empty()) {
2500  if ( ret != StatusCode::SUCCESS) {
2501  ATH_MSG_ERROR("Cannot configure METSystematicsTool for systematic var. " << systConfig.name() );
2502  return ret;
2503  } else {
2504  ATH_MSG_VERBOSE("Configured METSystematicsTool for systematic var. " << systConfig.name() );
2505  }
2506  }
2507  if (!m_prwTool.empty()) {
2508  StatusCode ret = m_prwTool->applySystematicVariation(systConfig);
2509  if ( ret != StatusCode::SUCCESS) {
2510  ATH_MSG_ERROR("Cannot configure PileupReweightingTool for systematic var. " << systConfig.name() );
2511  return ret;
2512  } else {
2513  ATH_MSG_VERBOSE("Configured PileupReweightingTool for systematic var. " << systConfig.name() );
2514  }
2515  }
2516 
2517  if (!m_LRTuncTool.empty()) {
2519  if ( ret != StatusCode::SUCCESS) {
2520  ATH_MSG_ERROR("Cannot configure InDetTrackFilterTool for systematic var. " << systConfig.name() );
2521  return ret;
2522  } else {
2523  ATH_MSG_VERBOSE("Configured InDetTrackFilterTool for systematic var. " << systConfig.name() );
2524  }
2525  }
2526 
2527  return StatusCode::SUCCESS;
2528 }

◆ 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 1008 of file SUSYObjDef_xAOD.cxx.

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

◆ 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 196 of file AsgMetadataTool.cxx.

196  {
197 
198  // Return gracefully:
199  return StatusCode::SUCCESS;
200  }

◆ 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, xAODMaker::FileMetaDataTool, BookkeeperDumperTool, Trig::TrigDecisionTool, xAODMaker::TriggerMenuMetaDataTool, xAODMaker::TruthMetaDataTool, Trig::xAODBunchCrossingTool, TauAnalysisTools::TauEfficiencyCorrectionsTool, and TauAnalysisTools::TauSmearingTool.

Definition at line 180 of file AsgMetadataTool.cxx.

180  {
181 
182  // Return gracefully:
183  return StatusCode::SUCCESS;
184  }

◆ 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 1209 of file SUSYObjDef_xAOD.cxx.

1209  {
1210  //check if the selected WP is supported
1211  return (std::find(list.begin(), list.end(),wp) != list.end());
1212 }

◆ 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 1214 of file SUSYObjDef_xAOD.cxx.

1214  {
1215  //check if WP1 is tighter than WP2
1216  //it is assumed that both WPs are supported
1217  return (std::find(list.begin(),list.end(),wp1) > std::find(list.begin(), list.end(),wp2));
1218 }

◆ configFromFile() [1/4]

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

Definition at line 1252 of file SUSYObjDef_xAOD.cxx.

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

◆ configFromFile() [2/4]

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

Definition at line 1267 of file SUSYObjDef_xAOD.cxx.

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

◆ configFromFile() [3/4]

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

Definition at line 1283 of file SUSYObjDef_xAOD.cxx.

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

◆ 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 1299 of file SUSYObjDef_xAOD.cxx.

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

◆ currentSystematic()

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

Definition at line 2095 of file SUSYObjDef_xAOD.cxx.

2095  {
2096  return m_currentSyst;
2097 }

◆ currentSystematicIsNominal()

bool ST::SUSYObjDef_xAOD::currentSystematicIsNominal ( ) const

Definition at line 2123 of file SUSYObjDef_xAOD.cxx.

2123  {
2124  return isNominal(m_currentSyst);
2125 }

◆ currentSystematicIsVariation()

bool ST::SUSYObjDef_xAOD::currentSystematicIsVariation ( ) const

Definition at line 2127 of file SUSYObjDef_xAOD.cxx.

2127  {
2128  return isVariation(m_currentSyst);
2129 }

◆ currentSystematicIsWeight()

bool ST::SUSYObjDef_xAOD::currentSystematicIsWeight ( ) const

Definition at line 2131 of file SUSYObjDef_xAOD.cxx.

2131  {
2132  return isWeight(m_currentSyst);
2133 }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  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 > &  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 > &  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 > &  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 > &  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 1221 of file SUSYObjDef_xAOD.cxx.

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

◆ 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, xAODMaker::FileMetaDataTool, BookkeeperDumperTool, xAODMaker::TriggerMenuMetaDataTool, and xAODMaker::TruthMetaDataTool.

Definition at line 188 of file AsgMetadataTool.cxx.

188  {
189 
190  // Return gracefully:
191  return StatusCode::SUCCESS;
192  }

◆ 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  ATH_CHECK(m_WTaggerTool->tag(input));
416  ATH_CHECK(m_ZTaggerTool->tag(input));
417  ATH_CHECK(m_TopTaggerTool->tag(input));
418 
419  // Retrieve large-R tagging results for W/Z/top
420  if (!m_WtagConfig.empty()) {
421  // Only tag jets if they are inside the kinematic range
422  if ( !acc_wValidKinRange(input) ) {
423  ATH_MSG_VERBOSE("Large-R W candidate jet outside of recommended tagging range. Will set score to 0.");
424  dec_wtagged(input) = 0;
425  }
426  else dec_wtagged(input) = acc_wtagged(input);
427  }
428  if (!m_ZtagConfig.empty()) {
429  // Only tag jets if they are inside the kinematic range
430  if ( !acc_zValidKinRange(input) ) {
431  ATH_MSG_VERBOSE("Large-R Z candidate jet outside of recommended tagging range. Will set score to 0.");
432  dec_ztagged(input) = 0;
433  }
434  else dec_ztagged(input) = acc_ztagged(input);
435  }
436  if (!m_ToptagConfig.empty()) {
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 207 of file Muons.cxx.

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

◆ 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 
113  ATH_MSG_ERROR("FillPhoton: EgammaCalibTool applyCorrection failed");
114 
116  ATH_MSG_ERROR("FillPhoton: IsolationCorrectionTool applyCorrection failed");
117 
118  ATH_MSG_VERBOSE( "FillPhoton: post-calibration pt=" << input.pt() );
119 
120  if (input.pt() < ptcut || std::abs(input.caloCluster()->etaBE(2)) >= etacut) return StatusCode::SUCCESS;
121 
123  if ( std::abs( input.caloCluster()->etaBE(2) ) >1.37 && std::abs( input.caloCluster()->etaBE(2) ) <1.52) {
124  return StatusCode::SUCCESS;
125  }
126  }
127 
128  //Object quality cut as described at https://twiki.cern.ch/twiki/bin/view/AtlasProtected/EGammaIdentificationRun2#Object_quality_cut
130  return StatusCode::SUCCESS;
131 
132  //Photon quality as in https://twiki.cern.ch/twiki/bin/view/AtlasProtected/EGammaIdentificationRun2#Photon_cleaning
133  bool passPhCleaning = false;
134  if (acc_passPhCleaning.isAvailable(input) && acc_passPhCleaningNoTime.isAvailable(input)) {
135  if ( (!m_photonAllowLate && acc_passPhCleaning(input)) || (m_photonAllowLate && acc_passPhCleaningNoTime(input)) ) passPhCleaning = true;
136  } else {
137  ATH_MSG_VERBOSE ("DFCommonPhotonsCleaning is not found in DAOD..");
138  if ( (!m_photonAllowLate && PhotonHelpers::passOQquality(input)) ||
139  ( m_photonAllowLate && PhotonHelpers::passOQqualityDelayed(input)) ) passPhCleaning = true;
140  }
141  if (!passPhCleaning) return StatusCode::SUCCESS;
142 
143 
144  bool passBaseID = false;
145  if (m_acc_photonIdBaseline.isAvailable(input)) {
146  passBaseID = bool(m_acc_photonIdBaseline(input));
147  } else {
148  passBaseID = bool(m_photonSelIsEMBaseline->accept(&input));
149  }
150  if (!passBaseID) return StatusCode::SUCCESS;
151 
152  //--- Do baseline isolation check
153  if ( !( m_photonBaselineIso_WP.empty() ) && !( m_isoBaselineTool->accept(input) ) ) return StatusCode::SUCCESS;
154 
155  dec_baseline(input) = true;
156  dec_selected(input) = 2;
157  if (!m_photonIso_WP.empty()) dec_isol(input) = bool(m_isoTool->accept(input));
158 
159  ATH_MSG_VERBOSE("FillPhoton: passed baseline selection.");
160  return StatusCode::SUCCESS;
161 }

◆ FillTau()

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

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 76 of file Taus.cxx.

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

◆ 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 3023 of file SUSYObjDef_xAOD.cxx.

3023  {
3024  const xAOD::EventInfo* evtInfo = GetEventInfo();
3025  return m_prwTool->getCorrectedActualInteractionsPerCrossing( *evtInfo, includeDataSF );
3026 }

◆ GetCorrectedAverageInteractionsPerCrossing()

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

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 3018 of file SUSYObjDef_xAOD.cxx.

3018  {
3019  const xAOD::EventInfo* evtInfo = GetEventInfo();
3020  return m_prwTool->getCorrectedAverageInteractionsPerCrossing( *evtInfo, includeDataSF );
3021 }

◆ GetDataWeight()

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

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 3013 of file SUSYObjDef_xAOD.cxx.

3013  {
3014  const xAOD::EventInfo* evtInfo = GetEventInfo();
3015  return m_prwTool->getDataWeight( *evtInfo, trig );
3016 }

◆ getDefaultJetUncConfig()

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

Definition at line 1823 of file SUSYObjDef_xAOD.cxx.

1823  {
1824  if (m_isRun3)
1825  return isAtlfast() ? "rel22/Winter2025_AF3_PreRec/R4_CategoryReduction_FullJER.config" : "rel22/Winter2025_PreRec/R4_CategoryReduction_FullJER.config";
1826  else
1827  return isAtlfast() ? "rel22/Fall2024_PreRec/R4_CategoryReduction_FullJER.config" : "rel22/Summer2023_PreRec/R4_CategoryReduction_FullJER.config";
1828 }

◆ 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) {
212  this->IsSignalElectron(*electron, m_elePt, m_eled0sig, m_elez0, m_eleEta);
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 590 of file Electrons.cxx.

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

◆ 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 556 of file Electrons.cxx.

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

◆ getElSFkeys()

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

Definition at line 1233 of file SUSYObjDef_xAOD.cxx.

1233  {
1234 
1235  if( mapFile.empty() )
1236  return {};
1237 
1238  std::vector<std::string> theKeys;
1239 
1240  std::string filename = PathResolverFindCalibFile(mapFile);
1241  std::ifstream input( filename );
1242  for( std::string line; getline( input, line ); ){
1243  std::vector<std::string> tokens = split((const std::string)line,"=");
1244  if(tokens.size()){
1245  theKeys.push_back(tokens.at(0));
1246  }
1247  }
1248 
1249  return theKeys;
1250 }

◆ GetEventInfo()

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

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 2975 of file SUSYObjDef_xAOD.cxx.

2975  {
2976  const xAOD::EventInfo* evtInfo = nullptr;
2977  if ( evtStore()->retrieve( evtInfo, "EventInfo" ).isFailure() ) {
2978  throw std::runtime_error("Unable to fetch EventInfo.");
2979  }
2980  return evtInfo;
2981 }

◆ 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 3082 of file SUSYObjDef_xAOD.cxx.

3082  {
3084 
3085  if ( !tracks.isValid() ) {
3086  throw std::runtime_error("Unable to fetch LargeD0 GSF tracks.");
3087  }
3088  return *tracks;
3089 }

◆ GetInDetLargeD0Tracks()

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

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 3070 of file SUSYObjDef_xAOD.cxx.

3070  {
3072 
3073  if ( !tracks.isValid() ) {
3074  throw std::runtime_error("Unable to fetch LargeD0 tracks.");
3075  }
3076 
3077  //const xAOD::TrackParticleContainer out = *tracks;
3078 
3079  return *tracks;
3080 }

◆ 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 100 of file Muons.cxx.

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

◆ 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 532 of file Muons.cxx.

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

◆ 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) {
67  this->IsSignalPhoton(*photon, m_photonPt, m_photonEta);
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 2983 of file SUSYObjDef_xAOD.cxx.

2983  {
2984 
2985  const xAOD::EventInfo* evtInfo = GetEventInfo();
2986  float pu_weight = m_prwTool->getCombinedWeight(*evtInfo);
2987 
2988  if(!isfinite(pu_weight)) pu_weight = 1.;
2989 
2990  return pu_weight;
2991 }

◆ GetPileupWeightHash()

ULong64_t ST::SUSYObjDef_xAOD::GetPileupWeightHash ( )
finaloverridevirtual

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 3008 of file SUSYObjDef_xAOD.cxx.

3008  {
3009  const xAOD::EventInfo* evtInfo = GetEventInfo();
3010  return m_prwTool->getPRWHash( *evtInfo );
3011 }

◆ GetPileupWeightPrescaledTrigger()

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

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 2993 of file SUSYObjDef_xAOD.cxx.

2993  {
2994  /* This requires the setup of the PRW tool using your own prescaled lumicalc
2995  files with syntax "HLT_PrescaledTriggerA.lumicalc.root:HLT_PrescaledTriggerA".
2996  For further informations, please refer to:
2997  https://twiki.cern.ch/twiki/bin/view/AtlasProtected/ExtendedPileupReweighting#Prescaling%20MC
2998  */
2999 
3000  const xAOD::EventInfo* evtInfo = GetEventInfo();
3001  float pu_weight = m_prwTool->getCombinedWeight(*evtInfo,trigger_expr);
3002 
3003  if(!isfinite(pu_weight)) pu_weight = 1.;
3004 
3005  return pu_weight;
3006 }

◆ GetPrimVtx()

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

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 2914 of file SUSYObjDef_xAOD.cxx.

2914  {
2915  const xAOD::VertexContainer* vertices = nullptr;
2916  if ( evtStore()->retrieve( vertices, "PrimaryVertices" ).isSuccess() ) {
2917  for ( const auto vx : *vertices ) {
2918  if (vx->vertexType() == xAOD::VxType::PriVtx) {
2919  ATH_MSG_DEBUG("PrimaryVertex found with z=" << vx->z());
2920  return vx;
2921  }
2922  }
2923  } else {
2924  ATH_MSG_WARNING("Failed to retrieve VertexContainer \"PrimaryVertices\", returning nullptr");
2925  }
2926  return nullptr;
2927 }

◆ getProperty() [1/2]

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

Definition at line 237 of file ISUSYObjDef_xAODTool.h.

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

◆ 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 3032 of file SUSYObjDef_xAOD.cxx.

3032  {
3033 
3034  const xAOD::EventInfo* evtInfo = GetEventInfo();
3035  if (randomrunnumber.isAvailable(*(evtInfo)) && muDependentRRN) {
3036  return randomrunnumber(*(evtInfo));
3037  }
3038  else if (!muDependentRRN) {
3039  return m_prwTool->getRandomRunNumber( *evtInfo, muDependentRRN );
3040  }
3041  ATH_MSG_ERROR ( "Failed to find RandomRunNumber decoration! You need to call ApplyPRWTool() beforehand!" );
3042  return 0;
3043 }

◆ GetRunNumber()

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

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 3054 of file SUSYObjDef_xAOD.cxx.

3054  {
3055 
3056  const xAOD::EventInfo* evtInfo = GetEventInfo();
3057 
3058  // For data, we can just directly use the run number
3059  if (isData()) { return evtInfo->runNumber(); }
3060 
3061  // else it's MC as we need the RRN assigned by the PRW tool
3062  if (!randomrunnumber.isAvailable(*(evtInfo))) {
3063  ATH_MSG_ERROR ( "Failed to find RandomRunNumber decoration! You need to call ApplyPRWTool() beforehand!" );
3064  }
3065  return randomrunnumber(*(evtInfo));
3066 
3067 }

◆ getSherpaVjetsNjetsWeight() [1/2]

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

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 2883 of file SUSYObjDef_xAOD.cxx.

2883  {
2884 
2885  //Retrieve the truth jets
2886  if( evtStore()->contains<xAOD::JetContainer>("AntiKt4TruthWZJets") ){
2887  return getSherpaVjetsNjetsWeight("AntiKt4TruthWZJets");
2888  }
2889  else if( evtStore()->contains<xAOD::JetContainer>("AntiKt4TruthJets")){
2890  return getSherpaVjetsNjetsWeight("AntiKt4TruthJets" );
2891  }
2892  else{
2893  ATH_MSG_WARNING("No TruthJetContainer found! Dummy null weight retrieved.");
2894  }
2895  return 0.;
2896 }

◆ getSherpaVjetsNjetsWeight() [2/2]

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

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 2898 of file SUSYObjDef_xAOD.cxx.

2898  {
2899 
2900  if(jetContainer=="AntiKt4TruthWZJets"){
2901  return m_pmgSHnjetWeighterWZ->getWeight();
2902  }
2903  else if (jetContainer=="AntiKt4TruthJets"){
2904  return m_pmgSHnjetWeighter->getWeight();
2905  }
2906  else{
2907  ATH_MSG_WARNING(jetContainer << " is no supported by PMGSherpa22VJetsWeightTool! Please check...");
2908  }
2909  return 1.;
2910 
2911 }

◆ 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 trigMChains = m_v_trigs22_cache_singleEle;
490  }
491  else{
492  ATH_MSG_WARNING( "Only single lepton trigger SFs are supported in GetSignalElecSF(). Use GetTriggerGlobalEfficiencySF() for dilepton or multilepton triggers!");
493  }
494 
495  //check matching
496  this->TrigMatch({&el}, trigMChains);
497 
498  if(!acc_trigmatched(el)){
499  ATH_MSG_DEBUG( "Electron was not matched to trigger " << theExpr << " - scale factor does not apply (year " << this->treatAsYear() << ") Returning 1." );
500  }
501  else{ //is trig-matched electron, go for it!
502  if (trigExpr==multiLepStr || trigExpr==diLepStr) {
503  ATH_MSG_WARNING( "The dilepton or multilepton trigger SFs are not supported in GetSignalElecSF(). Use GetTriggerGlobalEfficiencySF()!");
504  }
505  else {
506  double trig_sf = GetEleTriggerEfficiencySF( el , theExpr );
507  sf *= trig_sf;
508  }
509  }
510  }
511 
512  if (isoSF) {
513  double iso_sf(1.);
515  if (acc_isolHighPt(el) && el.pt()>m_eleIsoHighPtThresh)
517  else
519 
520  switch (result) {
522  sf *= iso_sf;
523  break;
525  ATH_MSG_ERROR( "Failed to retrieve signal electron iso SF");
526  break;
528  ATH_MSG_VERBOSE( "OutOfValidityRange found for signal electron iso SF");
529  break;
530  default:
531  ATH_MSG_WARNING( "Don't know what to do for signal electron iso SF");
532  }
533  }
534 
535  // Charge flip SF: combined ECIDs & charge ID
536  if ( ecidsSF || cidSF ) {
537  double chf_sf(1.);
538  // 1. ECIDs SF
539  if ( ecidsSF ) {
540  sf *= chf_sf;
541  ATH_MSG_WARNING( "ECID SF ARE NOT YET SUPPORTED IN R22" );
542  }
543  // 2. CID SF
544  if ( cidSF ) {
545  sf *= chf_sf;
546  dec_sfChIDEff(el) = chf_sf;
547  ATH_MSG_WARNING( "CID SF ARE NOT YET SUPPORTED IN R22" );
548  }
549  }
550 
551  dec_effscalefact(el) = sf;
552  return sf;
553 }

◆ 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 479 of file Muons.cxx.

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

◆ 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 203 of file Photons.cxx.

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

◆ 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 244 of file Photons.cxx.

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

◆ 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 129 of file Taus.cxx.

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

◆ 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 159 of file Taus.cxx.

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

◆ GetSumOfWeights()

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

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 3028 of file SUSYObjDef_xAOD.cxx.

3028  {
3030 }

◆ getSystInfo()

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

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 2565 of file SUSYObjDef_xAOD.cxx.

2565  {
2566 
2567  SystInfo sysInfo;
2568  sysInfo.affectsKinematics = false;
2569  sysInfo.affectsWeights = false;
2570  sysInfo.affectedWeights.clear();
2571  sysInfo.systset.insert(sys);
2572 
2575  sysInfo.affectsWeights = true;
2576  sysInfo.affectsType = SystObjType::Jet;
2577  sysInfo.affectedWeights.insert(ST::Weights::Jet::JVT);
2578  }
2579  }
2580 
2581  if (!m_jetfJvtEfficiencyTool.empty()) {
2583  sysInfo.affectsWeights = true;
2584  sysInfo.affectsType = SystObjType::Jet;
2585  sysInfo.affectedWeights.insert(ST::Weights::Jet::FJVT);
2586  }
2587  }
2588 
2589  if (!m_jetUncertaintiesTool.empty()) {
2591  sysInfo.affectsKinematics = true;
2592  sysInfo.affectsType = SystObjType::Jet;
2593  }
2594  }
2597  sysInfo.affectsKinematics = true;
2598  sysInfo.affectsType = SystObjType::Jet;
2599  }
2600  }
2601 
2604  sysInfo.affectsKinematics = true;
2605  sysInfo.affectsType = SystObjType::Jet;
2606  }
2607  }
2610  sysInfo.affectsKinematics = true;
2611  sysInfo.affectsType = SystObjType::Jet;
2612  }
2613  }
2614 
2615  if (!m_fatjetFFSmearingTool.empty()) {
2617  dummy.insert(sys);
2619  sysInfo.affectsKinematics = true;
2620  sysInfo.affectsType = SystObjType::Jet;
2621  }
2622  }
2623 
2626  sysInfo.affectsKinematics = true;
2627  sysInfo.affectsType = SystObjType::Jet;
2628  }
2629  }
2632  sysInfo.affectsKinematics = true;
2633  sysInfo.affectsType = SystObjType::Jet;
2634  }
2635  }
2638  sysInfo.affectsKinematics = true;
2639  sysInfo.affectsType = SystObjType::Jet;
2640  }
2641  }
2642 
2643  if (!m_muonCalibTool.empty()) {
2645  sysInfo.affectsKinematics = true;
2646  sysInfo.affectsType = SystObjType::Muon;
2647  }
2648  }
2651  sysInfo.affectsWeights = true;
2652  sysInfo.affectsType = SystObjType::Electron;
2653  sysInfo.affectedWeights.insert(ST::Weights::Electron::Trigger);
2654  }
2655  }
2658  sysInfo.affectsWeights = true;
2659  sysInfo.affectsType = SystObjType::Electron;
2660  sysInfo.affectedWeights.insert(ST::Weights::Electron::Trigger);
2661  }
2662  }
2663  if (!m_muonEfficiencySFTool.empty()) {
2665  sysInfo.affectsWeights = true;
2666  sysInfo.affectsType = SystObjType::Muon;
2667  sysInfo.affectedWeights.insert(ST::Weights::Muon::Reconstruction);
2668  }
2669  }
2672  sysInfo.affectsWeights = true;
2673  sysInfo.affectsType = SystObjType::Muon;
2674  sysInfo.affectedWeights.insert(ST::Weights::Muon::Reconstruction);
2675  }
2676  }
2679  sysInfo.affectsWeights = true;
2680  sysInfo.affectsType = SystObjType::Muon;
2681  sysInfo.affectedWeights.insert(ST::Weights::Muon::Reconstruction);
2682  }
2683  }
2684  if (!m_muonIsolationSFTool.empty()) {
2686  sysInfo.affectsWeights = true;
2687  sysInfo.affectsType = SystObjType::Muon;
2688  sysInfo.affectedWeights.insert(ST::Weights::Muon::Isolation);
2689  }
2690  }
2691  if (!m_muonTriggerSFTool.empty()) {
2693  sysInfo.affectsWeights = true;
2694  sysInfo.affectsType = SystObjType::Muon;
2695  sysInfo.affectedWeights.insert(ST::Weights::Muon::Trigger);
2696  }
2697  }
2700  sysInfo.affectsWeights = true;
2701  sysInfo.affectsType = SystObjType::Electron;
2702  sysInfo.affectedWeights.insert(ST::Weights::Electron::Reconstruction);
2703  }
2704  }
2707  sysInfo.affectsWeights = true;
2708  sysInfo.affectsType = SystObjType::Electron;
2709  sysInfo.affectedWeights.insert(ST::Weights::Electron::ID);
2710  }
2711  }
2714  sysInfo.affectsWeights = true;
2715  sysInfo.affectsType = SystObjType::Electron;
2716  sysInfo.affectedWeights.insert(ST::Weights::Electron::Trigger);
2717  }
2718  }
2721  sysInfo.affectsWeights = true;
2722  sysInfo.affectsType = SystObjType::Electron;
2723  sysInfo.affectedWeights.insert(ST::Weights::Electron::Trigger);
2724  }
2725  }
2728  sysInfo.affectsWeights = true;
2729  sysInfo.affectsType = SystObjType::Electron;
2730  sysInfo.affectedWeights.insert(ST::Weights::Electron::Isolation);
2731  }
2732  }
2735  sysInfo.affectsWeights = true;
2736  sysInfo.affectsType = SystObjType::Electron;
2737  sysInfo.affectedWeights.insert(ST::Weights::Electron::Isolation);
2738  }
2739  }
2740  if (!m_egammaCalibTool.empty()) {
2742  sysInfo.affectsKinematics = true;
2743  if (sys.basename().compare(0, 3, "EG_") == 0) {
2744  sysInfo.affectsType = SystObjType::Egamma;
2745  } else if (sys.basename().compare(0, 3, "PH_") == 0) {
2746  sysInfo.affectsType = SystObjType::Photon;
2747  } else if (sys.basename().compare(0, 3, "EL_") == 0) {
2748  sysInfo.affectsType = SystObjType::Electron;
2749  }
2750  }
2751  }
2752  if (!isData() && !m_isoCorrTool.empty()) {
2754  sysInfo.affectsWeights = false;
2755  sysInfo.affectsKinematics = true;
2756  sysInfo.affectsType = SystObjType::Photon;
2757  }
2758  }
2759  if (!isData() && !m_photonEfficiencySFTool.empty()) {
2761  sysInfo.affectsWeights = true;
2762  sysInfo.affectsType = SystObjType::Photon;
2763  sysInfo.affectedWeights.insert(ST::Weights::Photon::Reconstruction);
2764  }
2765  }
2766  if (!isData() && !m_photonIsolationSFTool.empty()) {
2768  sysInfo.affectsWeights = true;
2769  sysInfo.affectsType = SystObjType::Photon;
2770  sysInfo.affectedWeights.insert(ST::Weights::Photon::Isolation);
2771  }
2772  }
2773  if (!isData() && !m_photonTriggerSFTool.empty()) {
2775  sysInfo.affectsWeights = true;
2776  sysInfo.affectsType = SystObjType::Photon;
2777  sysInfo.affectedWeights.insert(ST::Weights::Photon::Trigger);
2778  }
2779  }
2782  sysInfo.affectsWeights = true;
2783  sysInfo.affectsType = SystObjType::Photon;
2784  sysInfo.affectedWeights.insert(ST::Weights::Photon::Trigger);
2785  }
2786  }
2787  if ( !m_btagEffTool.empty() ) {
2789  sysInfo.affectsWeights = true;
2790  sysInfo.affectsType = SystObjType::BTag;
2791  sysInfo.affectedWeights.insert(ST::Weights::Jet::Btag);
2792  }
2793  }
2794  if ( !m_btagEffTool_trkJet.empty() ) {
2796  sysInfo.affectsWeights = true;
2797  sysInfo.affectsType = SystObjType::BTag;
2798  sysInfo.affectedWeights.insert(ST::Weights::Jet::Btag_Track);
2799  }
2800  }
2801  if (!m_tauSmearingTool.empty()) {
2803  sysInfo.affectsKinematics = true;
2804  sysInfo.affectsType = SystObjType::Tau;
2805  }
2806  }
2807  if (!m_tauEffTool.empty()) {
2809  sysInfo.affectsWeights = true;
2810  sysInfo.affectsType = SystObjType::Tau;
2811  sysInfo.affectedWeights.insert(ST::Weights::Tau::Reconstruction);
2812  }
2813  }
2814  for(const auto &tool : m_tauTrigEffTool) {
2815  if(tool->isAffectedBySystematic(sys)) {
2816  sysInfo.affectsWeights = true;
2817  sysInfo.affectsType = SystObjType::Tau;
2818  sysInfo.affectedWeights.insert(ST::Weights::Tau::Trigger);
2819  break;
2820  }
2821  }
2822  if (!m_metSystTool.empty()) {
2824  sysInfo.affectsKinematics = true;
2825  switch (met::getSystType(sys)) {
2826  case met::SOFTCALO:
2827  sysInfo.affectsType = SystObjType::MET_CST;
2828  break;
2829  case met::SOFTTRK:
2830  sysInfo.affectsType = SystObjType::MET_TST;
2831  break;
2832  case met::JETTRK:
2833  sysInfo.affectsType = SystObjType::MET_Track;
2834  break;
2835  default:
2836  ATH_MSG_ERROR("Unsupported systematic!");
2837  }
2838  }
2839  }
2840  if (!m_prwTool.empty()) {
2842  sysInfo.affectsWeights = true;
2843  sysInfo.affectsType = SystObjType::EventWeight;
2844  }
2845  }
2846 
2847  if (!m_LRTuncTool.empty()){
2849  sysInfo.affectsKinematics = true;
2850  sysInfo.affectsType = SystObjType::LRT_Object;
2851  }
2852  }
2853 
2854  std::string affectedType;
2855  switch (sysInfo.affectsType) {
2856  case Unknown : affectedType = "UNKNOWN"; break;
2857  case Jet : affectedType = "JET"; break;
2858  case Egamma : affectedType = "EGAMMA"; break;
2859  case Electron : affectedType = "ELECTRON"; break;
2860  case Photon : affectedType = "PHOTON"; break;
2861  case Muon : affectedType = "MUON"; break;
2862  case Tau : affectedType = "TAU"; break;
2863  case BTag : affectedType = "BTAG"; break;
2864  case MET_TST : affectedType = "MET_TST"; break;
2865  case MET_CST : affectedType = "MET_CST"; break;
2866  case MET_Track : affectedType = "MET_Track"; break;
2867  case EventWeight : affectedType = "EVENT WEIGHT"; break;
2868  case LRT_Object : affectedType = "LRT_OBJECT"; break;
2869  }
2870 
2871  ATH_MSG_VERBOSE("Variation " << sys.name() << " affects "
2872  << ( sysInfo.affectsWeights ? "weights " : "" )
2873  << ( sysInfo.affectsKinematics ? "kinematics " : "" )
2874  << "for " << affectedType );
2875 
2876  return sysInfo;
2877 
2878 }

◆ getSystInfoList()

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

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 2530 of file SUSYObjDef_xAOD.cxx.

2530  {
2531  if (!m_tool_init) {
2532  ATH_MSG_ERROR("SUSYTools was not initialized!!");
2533  return vector<ST::SystInfo>();
2534  }
2535 
2536  ATH_MSG_INFO("Extracting systematics info list");
2537 
2538  // Now we can look at systematics:
2540  const CP::SystematicSet& recommendedSystematics = registry.recommendedSystematics();
2541 
2542  vector<SystInfo> sysInfoList;
2543  sysInfoList.reserve(recommendedSystematics.size() * 2); // allow for continuous systematics
2544 
2545  // this is the nominal set
2546  SystInfo infodef;
2547  infodef.affectsKinematics = false;
2548  infodef.affectsWeights = false;
2549  infodef.affectsType = Unknown;
2550  infodef.affectedWeights.clear();
2551  sysInfoList.push_back(infodef);
2552 
2553 
2554  // add all recommended systematics
2555  for (const auto& systSet : CP::make_systematics_vector(recommendedSystematics)) {
2556  for (const auto& sys : systSet) {
2557  sysInfoList.push_back(getSystInfo(sys));
2558  }
2559  }
2560 
2561  ATH_MSG_INFO("Returning list of " << sysInfoList.size() << " systematic variations");
2562  return sysInfoList;
2563 }

◆ 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 1830 of file SUSYObjDef_xAOD.cxx.

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

◆ 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 30 of file Taus.cxx.

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

◆ 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 193 of file Taus.cxx.

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

◆ 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 625 of file Electrons.cxx.

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

◆ 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 638 of file Electrons.cxx.

638  {
639  float sf(1.);
640 
641  //Set the new systematic variation
642  StatusCode ret(StatusCode::SUCCESS);
645  if (ret != StatusCode::SUCCESS) {
646  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (reco) for systematic var. " << systConfig.name() );
647  }
648  }
649 
652  if (ret != StatusCode::SUCCESS) {
653  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (id) for systematic var. " << systConfig.name() );
654  }
655  }
656 
659  if (ret != StatusCode::SUCCESS) {
660  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.name() );
661  }
662  }
663 
666  if (ret != StatusCode::SUCCESS) {
667  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (iso) for systematic var. " << systConfig.name() );
668  }
669  }
670 
673  if (ret != StatusCode::SUCCESS) {
674  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (iso high-pt) for systematic var. " << systConfig.name() );
675  }
676  }
677 
680  if (ret != StatusCode::SUCCESS) {
681  ATH_MSG_ERROR("Cannot configure ElectronChargeEfficiencyCorrectionTool for systematic var. " << systConfig.name() );
682  }
683  }
684 
685 
686  //Get the total SF for new config
687  sf = GetTotalElectronSF(electrons, recoSF, idSF, triggerSF, isoSF, trigExpr, ecidsSF, cidSF);
688 
689  //Roll back to default
692  if (ret != StatusCode::SUCCESS) {
693  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (reco) back to default.");
694  }
695  }
696 
699  if (ret != StatusCode::SUCCESS) {
700  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (id) back to default.");
701  }
702  }
703 
706  if (ret != StatusCode::SUCCESS) {
707  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (trigger) back to default.");
708  }
709  }
710 
713  if (ret != StatusCode::SUCCESS) {
714  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (iso) back to default.");
715  }
716  }
717 
720  if (ret != StatusCode::SUCCESS) {
721  ATH_MSG_ERROR("Cannot configure AsgElectronEfficiencyCorrectionTool (iso high-pt) back to default.");
722  }
723  }
724 
727  if (ret != StatusCode::SUCCESS) {
728  ATH_MSG_ERROR("Cannot configure ElectronChargeEfficiencyCorrectionTool back to default.");
729  }
730  }
731 
732  return sf;
733 }

◆ 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 601 of file Muons.cxx.

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

◆ 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 621 of file Muons.cxx.

621  {
622  double sf(1.);
623  //Set the new systematic variation
625  if ( ret != StatusCode::SUCCESS) {
626  ATH_MSG_ERROR("Cannot configure MuonEfficiencyScaleFactors for systematic var. " << systConfig.name() );
627  }
628 
630  if ( ret != StatusCode::SUCCESS) {
631  ATH_MSG_ERROR("Cannot configure MuonBadMuonHighPtScaleFactors for systematic var. " << systConfig.name() );
632  }
633 
635  if ( ret != StatusCode::SUCCESS) {
636  ATH_MSG_ERROR("Cannot configure MuonTTVAEfficiencyScaleFactors for systematic var. " << systConfig.name() );
637  }
638 
640  if ( ret != StatusCode::SUCCESS) {
641  ATH_MSG_ERROR("Cannot configure MuonIsolationScaleFactors for systematic var. " << systConfig.name() );
642  }
643 
645  if ( ret != StatusCode::SUCCESS) {
646  ATH_MSG_ERROR("Cannot configure MuonHighPtIsolationScaleFactors for systematic var. " << systConfig.name() );
647  }
648 
650  if ( ret != StatusCode::SUCCESS) {
651  ATH_MSG_ERROR("Cannot configure MuonTriggerScaleFactors for systematic var. " << systConfig.name() );
652  }
653 
655  if (ret != StatusCode::SUCCESS) {
656  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.name() );
657  }
658 
660  if (ret != StatusCode::SUCCESS) {
661  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.name() );
662  }
663 
664  sf = GetTotalMuonSF(muons, recoSF, isoSF, trigExpr, bmhptSF);
665 
666  //Roll back to default
668  if ( ret != StatusCode::SUCCESS) {
669  ATH_MSG_ERROR("Cannot configure MuonEfficiencyScaleFactors back to default.");
670  }
671 
673  if ( ret != StatusCode::SUCCESS) {
674  ATH_MSG_ERROR("Cannot configure MuonBadMuonHighPtScaleFactors back to default.");
675  }
676 
678  if ( ret != StatusCode::SUCCESS) {
679  ATH_MSG_ERROR("Cannot configure MuonTTVAEfficiencyScaleFactors back to default.");
680  }
681 
683  if ( ret != StatusCode::SUCCESS) {
684  ATH_MSG_ERROR("Cannot configure MuonIsolationScaleFactors back to default.");
685  }
686 
688  if ( ret != StatusCode::SUCCESS) {
689  ATH_MSG_ERROR("Cannot configure MuonIsolationScaleFactors back to default.");
690  }
691 
693  if ( ret != StatusCode::SUCCESS) {
694  ATH_MSG_ERROR("Cannot configure MuonTriggerScaleFactors back to default.");
695  }
696 
698  if (ret != StatusCode::SUCCESS) {
699  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (trigger) back to default.");
700  }
701 
703  if (ret != StatusCode::SUCCESS) {
704  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (trigger) back to default.");
705  }
706 
707  return sf;
708 }

◆ GetTotalMuonTriggerSF()

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

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 546 of file Muons.cxx.

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

◆ 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 317 of file Photons.cxx.

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

◆ 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 329 of file Photons.cxx.

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

◆ 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 227 of file Taus.cxx.

227  {
228 
229  double sf(1.);
230 
231  for (const xAOD::TauJet* tau : taus) {
232  // check existence of OR information
233  if (!acc_passOR.isAvailable(*tau)) {
234  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!");
235  break;
236  }
237 
238  // Call this for all taus, which will add the decoration
239  double tmpSF = GetSignalTauSF(*tau, idSF, triggerSF, trigExpr);
240  if (acc_signal(*tau) && acc_passOR(*tau)) {
241  sf *= tmpSF;
242  }
243  }
244 
245  return sf;
246 }

◆ 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 249 of file Taus.cxx.

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

◆ 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 393 of file Trigger.cxx.

394  {
396  }

◆ 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 553 of file Trigger.cxx.

553  {
554 
555  double trig_eff(1.);
556  double trig_eff_data(1.);
557 
558  if (trigExpr!="multiLepton" && trigExpr!="diLepton") {
559  ATH_MSG_ERROR( "Failed to retrieve multi-lepton trigger efficiency");
560  return trig_eff;
561  }
562 
563  std::vector<const xAOD::Electron*> elec_trig;
564  for (const xAOD::Electron* electron : electrons) {
565  if (!acc_passOR(*electron)) continue;
566  if (!acc_signal(*electron)) continue;
567  elec_trig.push_back(electron);
568  }
569 
570  std::vector<const xAOD::Muon*> muon_trig;
571  for (const xAOD::Muon* muon : muons) {
572  if (!acc_passOR(*muon)) continue;
573  if (!acc_signal(*muon)) continue;
574  muon_trig.push_back(muon);
575  }
576 
577  bool matched = false;
578  if ((elec_trig.size()+muon_trig.size())>1 && trigExpr=="diLepton") {
580  ATH_MSG_ERROR ("trigGlobEffCorrTool::Trigger matching could not be checked, interrupting execution.");
581  }
582  } else if ((elec_trig.size()+muon_trig.size())>2 && trigExpr=="multiLepton") {
584  ATH_MSG_ERROR ("trigGlobEffCorrTool::Trigger matching could not be checked, interrupting execution.");
585  }
586  }
587 
589  if ((elec_trig.size()+muon_trig.size())>1 && trigExpr=="diLepton" && matched) {
590  result = m_trigGlobalEffCorrTool_diLep->getEfficiency( elec_trig, muon_trig, trig_eff_data, trig_eff);
591  }
592  else if ((elec_trig.size()+muon_trig.size())>2 && trigExpr=="multiLepton" && matched) {
593  result = m_trigGlobalEffCorrTool_multiLep->getEfficiency( elec_trig, muon_trig, trig_eff_data, trig_eff);
594  }
595 
596  switch (result) {
598  ATH_MSG_ERROR( "Failed to retrieve multi-lepton trigger efficiency");
599  return 1.;
601  ATH_MSG_VERBOSE( "OutOfValidityRange found for multi-lepton trigger efficiency");
602  return 1.;
603  default:
604  break;
605  }
606 
607  if (isData()) return trig_eff_data;
608  else return trig_eff;
609 }

◆ 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 614 of file Trigger.cxx.

614  {
615 
616  double trig_eff(1.);
617  double trig_eff_data(1.);
618 
619  if (trigExpr!="diPhoton") {
620  ATH_MSG_ERROR( "Failed to retrieve diphoton trigger efficiency");
621  return trig_eff;
622  }
623 
624  std::vector<const xAOD::Photon*> ph_trig;
625  for (const xAOD::Photon* photon : photons) {
626  if (!acc_passOR(*photon)) continue;
627  if (!acc_signal(*photon)) continue;
628  ph_trig.push_back(photon);
629  }
630 
632  if (ph_trig.size()>1) {
633  result = m_trigGlobalEffCorrTool_diPhoton->getEfficiency(ph_trig, trig_eff_data, trig_eff);
634  }
635 
636  switch (result) {
638  ATH_MSG_ERROR( "Failed to retrieve diphoton trigger efficiency");
639  return 1.;
641  ATH_MSG_VERBOSE( "OutOfValidityRange found for diphoton trigger efficiency");
642  return 1.;
643  default:
644  break;
645  }
646 
647  if (isData()) return trig_eff_data;
648  else return trig_eff;
649 }

◆ 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 398 of file Trigger.cxx.

398  {
399 
400  double trig_sf(1.);
401 
402  if (trigExpr!="multiLepton" && trigExpr!="diLepton") {
403  ATH_MSG_ERROR( "Failed to retrieve multi-lepton trigger SF");
404  return trig_sf;
405  }
406 
407  std::vector<const xAOD::Electron*> elec_trig;
408  for (const xAOD::Electron* electron : electrons) {
409  if (!acc_passOR(*electron)) continue;
410  if (!acc_signal(*electron)) continue;
411  elec_trig.push_back(electron);
412  }
413 
414  std::vector<const xAOD::Muon*> muon_trig;
415  for (const xAOD::Muon* muon : muons) {
416  if (!acc_passOR(*muon)) continue;
417  if (!acc_signal(*muon)) continue;
418  muon_trig.push_back(muon);
419  }
420 
421  bool matched = false;
422  if ((elec_trig.size()+muon_trig.size())>1 && trigExpr=="diLepton") {
424  ATH_MSG_ERROR ("trigGlobEffCorrTool::Trigger matching could not be checked, interrupting execution.");
425  }
426  } else if ((elec_trig.size()+muon_trig.size())>2 && trigExpr=="multiLepton") {
428  ATH_MSG_ERROR ("trigGlobEffCorrTool::Trigger matching could not be checked, interrupting execution.");
429  }
430  }
431 
433  if ((elec_trig.size()+muon_trig.size())>1 && trigExpr=="diLepton" && matched) {
434  result = m_trigGlobalEffCorrTool_diLep->getEfficiencyScaleFactor( elec_trig, muon_trig, trig_sf);
435  }
436  else if ((elec_trig.size()+muon_trig.size())>2 && trigExpr=="multiLepton" && matched) {
437  result = m_trigGlobalEffCorrTool_multiLep->getEfficiencyScaleFactor( elec_trig, muon_trig, trig_sf);
438  }
439 
440  switch (result) {
442  ATH_MSG_ERROR( "Failed to retrieve multi-lepton trigger SF");
443  return 1.;
445  ATH_MSG_VERBOSE( "OutOfValidityRange found for multi-lepton trigger SF");
446  return 1.;
447  default:
448  break;
449  }
450 
451  return trig_sf;
452 }

◆ 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 496 of file Trigger.cxx.

496  {
497 
498  double trig_sf(1.);
499 
500  if (trigExpr!="diPhoton") {
501  ATH_MSG_ERROR( "Failed to retrieve diphoton trigger SF");
502  return trig_sf;
503  }
504 
505  std::vector<const xAOD::Photon*> ph_trig;
506  for (const xAOD::Photon* photon : photons) {
507  if (!acc_passOR(*photon)) continue;
508  if (!acc_signal(*photon)) continue;
509  ph_trig.push_back(photon);
510  }
511 
513  if (ph_trig.size()>1) {
515  }
516 
517  switch (result) {
519  ATH_MSG_ERROR( "Failed to retrieve diphoton trigger SF");
520  return 1.;
522  ATH_MSG_VERBOSE( "OutOfValidityRange found for diphoton trigger SF");
523  return 1.;
524  default:
525  break;
526  }
527 
528  return trig_sf;
529 }

◆ 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 454 of file Trigger.cxx.

454  {
455 
456  double sf(1.);
457 
458  //Set the new systematic variation
459  if (trigExpr == "diLepton") {
461  if (ret != StatusCode::SUCCESS) {
462  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (dilepton trigger) for systematic var. " << systConfig.name() );
463  }
464  }
465 
466  if (trigExpr == "multiLepton") {
468  if (ret != StatusCode::SUCCESS) {
469  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (multi-lepton trigger) for systematic var. " << systConfig.name() );
470  }
471  }
472 
473  //Get the SF for new config
474  sf = GetTriggerGlobalEfficiencySF (electrons, muons, trigExpr);
475 
476  //Roll back to default
477  if (trigExpr == "diLepton") {
479  if (ret != StatusCode::SUCCESS) {
480  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (dilepton trigger) back to default.");
481  }
482  }
483  if (trigExpr == "multiLepton") {
485  if (ret != StatusCode::SUCCESS) {
486  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (multi-lepton trigger) back to default.");
487  }
488  }
489 
490  return sf;
491 }

◆ 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 531 of file Trigger.cxx.

531  {
532 
533  double sf(1.);
534 
535  //Set the new systematic variation
537  if (ret != StatusCode::SUCCESS) {
538  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (diphoton trigger) for systematic var. " << systConfig.name() );
539  }
540 
541  //Get the SF for new config
542  sf = GetTriggerGlobalEfficiencySF (photons, trigExpr);
543 
544  //Roll back to default
546  if (ret != StatusCode::SUCCESS) {
547  ATH_MSG_ERROR("Cannot configure TrigGlobalEfficiencyCorrectionTool (diphoton trigger) back to default.");
548  }
549 
550  return sf;
551 }

◆ 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 
) 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  static const std::string del18 = "_2018_";
346  static const std::string del22 = "_2022_";
347 
348  size_t pos = 0;
349  std::string token15, token16, token17, token18, token22;
350 
351  //get trigger tokens for 2015, 2016, 2017, 2018 and 2022
352  if ( (pos = trigExpr.find(del15)) != std::string::npos) {
353  trigExpr.erase(0, pos + del15.length());
354 
355  pos = 0;
356  while ((pos = trigExpr.find(del16)) != std::string::npos) {
357  token15 = trigExpr.substr(0, pos);
358  token16 = trigExpr.erase(0, pos + del16.length() + del17.length() - 1);
359  // 2016-2018 use exact the same trigger string
360  token17 = token16;
361  token18 = token16;
362  }
363  }
364 
365  if ( (pos = trigExpr.find(del22)) != std::string::npos) {
366  trigExpr.erase(0, pos + del22.length());
367  }
368 
369  //redefine in case of custom user input
370  if(!m_isRun3){
371  if(token15.empty()) token15 = trigExpr;
372  if(token16.empty()) token16 = trigExpr;
373  if(token17.empty()) token17 = trigExpr;
374  if(token18.empty()) token18 = trigExpr;
375  }
376  else{
377  if(token22.empty()) token22 = trigExpr;
378  }
379 
380  //get trigger chains for matching in 2015 and 2018
381  if(!m_isRun3){
382  v_trigs15_cache = GetTriggerOR(token15);
383  v_trigs16_cache = GetTriggerOR(token16);
384  v_trigs17_cache = GetTriggerOR(token17);
385  v_trigs18_cache = GetTriggerOR(token18);
386  }
387  //get trigger chains for matching in 2022
388  else{
389  v_trigs22_cache = GetTriggerOR(token22);
390  }
391  }

◆ 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 130 of file AsgMetadataTool.cxx.

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

◆ 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 879 of file SUSYObjDef_xAOD.cxx.

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

◆ 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 88 of file AsgMetadataTool.cxx.

88  {
89 
90 #ifdef XAOD_STANDALONE
91  return &m_inputMetaStore;
92 #else // XAOD_STANDALONE
93  return m_inputMetaStore;
94 #endif // XAOD_STANDALONE
95  }

◆ 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 404 of file Muons.cxx.

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

◆ 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 443 of file Muons.cxx.

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

◆ 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 385 of file Muons.cxx.

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

◆ 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 2099 of file SUSYObjDef_xAOD.cxx.

2099  {
2100  return syst.name().empty();
2101 }

◆ 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 343 of file Muons.cxx.

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

◆ 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 164 of file Photons.cxx.

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

◆ 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 111 of file Taus.cxx.

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

◆ 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 2114 of file SUSYObjDef_xAOD.cxx.

2114  {
2115  // returns true if _any_ of the systematics affect kinematics. ignores effect on weights.
2116  for (const auto& sys : systSet) {
2117  auto info = getSystInfo(sys);
2118  if(info.affectsKinematics) { return true; }
2119  }
2120  return false;
2121 }

◆ isWeight()

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

Definition at line 2103 of file SUSYObjDef_xAOD.cxx.

2103  {
2104  // returns true if all systematics do _not_ affect kinematics and _any_ of them affects the weight
2105  bool affectsWeights = false;
2106  for (const auto& sys : systSet) {
2107  auto info = getSystInfo(sys);
2108  if(info.affectsKinematics) { return false; }
2109  affectsWeights = affectsWeights or info.affectsWeights;
2110  }
2111  return affectsWeights;
2112 }

◆ 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 ) {
78  setOriginalObjectLink(*getOriginalObject(*electron), *newElectron);
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 55 of file Muons.cxx.

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

◆ 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 xAODMaker::FileMetaDataTool, BookkeeperTool, BookkeeperDumperTool, xAODMaker::TriggerMenuMetaDataTool, and xAODMaker::TruthMetaDataTool.

Definition at line 204 of file AsgMetadataTool.cxx.

204  {
205 
206  // Return gracefully:
207  return StatusCode::SUCCESS;
208  }

◆ 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 2965 of file SUSYObjDef_xAOD.cxx.

2965  {
2966  // This getCloseByIsoCorrection is computationally less expensive and actually corrects the isoaltion
2967  // variables from the contribution of the close by leptons
2968  if (m_isoCloseByTool->getCloseByIsoCorrection(Gaudi::Hive::currentContext(), electrons,muons) != CP::CorrectionCode::Ok) {
2969  return StatusCode::FAILURE;
2970  }
2971  // All done, all good :-)
2972  return StatusCode::SUCCESS;
2973 }

◆ 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 97 of file AsgMetadataTool.cxx.

97  {
98 
99 #ifdef XAOD_STANDALONE
100  return &m_outputMetaStore;
101 #else // XAOD_STANDALONE
102  return m_outputMetaStore;
103 #endif // XAOD_STANDALONE
104  }

◆ 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 2930 of file SUSYObjDef_xAOD.cxx.

2933 {
2934 
2935  if (this->GetPrimVtx() == nullptr) {
2936  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!");
2937  }
2938 
2939  ATH_CHECK( m_orToolbox.masterTool->removeOverlaps(electrons, muons, jets, taujet, gamma, fatjets) );
2940 
2941  /*
2942  // Count number of objects after overlap removal
2943  int Nel = 0;
2944  for (const auto& el : *electrons) {
2945  if (dec_passOR( *el )) Nel++;
2946  }
2947 
2948  int Nmu = 0;
2949  for (const auto& mu : *muons) {
2950  if (dec_passOR( *mu )) Nmu++;
2951  }
2952 
2953  int Njet = 0;
2954  for (const auto& jet : *jets) {
2955  if (dec_passOR( *jet )) Njet++;
2956  }
2957 
2958  ATH_MSG_VERBOSE( "After overlap removal: Nel=" << Nel << ", Nmu=" << Nmu << ", Njet=" << Njet );
2959  */
2960 
2961  return StatusCode::SUCCESS;
2962 }

◆ 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 73 of file Muons.cxx.

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

◆ 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 1329 of file SUSYObjDef_xAOD.cxx.

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

◆ 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 2091 of file SUSYObjDef_xAOD.cxx.

2091  {
2093 }

◆ setBoolProperty()

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

Implements ST::ISUSYObjDef_xAODTool.

Definition at line 873 of file SUSYObjDef_xAOD.cxx.

873  {
874  m_bool_prop_set.insert(name);
875  return this->setProperty(name, property);
876 }

◆ 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 1201 of file SUSYObjDef_xAOD.cxx.

1201  {
1202  if (source == 0) m_dataSource = Data;
1203  else if (source == 1) m_dataSource = FullSim;
1204  else if (source == 2) m_dataSource = AtlfastII;
1205  else ATH_MSG_ERROR("Trying to set data source to unknown type (" << source << ")");
1206 }

◆ 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 1799 of file SUSYObjDef_xAOD.cxx.

1799  {
1800  assert(delim.length() == 1);
1801  std::vector<std::string> retval;
1802  retval.reserve(std::count(s.begin(), s.end(), delim[0]) + 1);
1803  // if only 1
1804  if (s.find(delim)==std::string::npos) {
1805  retval.emplace_back(s);
1806  return retval;
1807  }
1808  // if need to split
1809  size_t last = 0;
1810  size_t next = 0;
1811  bool gothere=false;
1812  while ((next = s.find(delim, last)) != std::string::npos) {
1813  retval.emplace_back(s.substr(last, next - last));
1814  last = next + delim.length();
1815  gothere=true;
1816  }
1817  if(gothere)
1818  retval.emplace_back(s.substr(last));
1819 
1820  return retval;
1821 }

◆ 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 
381  std::string jetdef("AntiKt4" + xAOD::JetInput::typeName(xAOD::JetInput::Type(m_jetInputType)));
382 
383  if(jetdef !="AntiKt4EMPFlow"){
384  ATH_MSG_WARNING("Jet Uncertaintes recommendations only exist for PFlow jets, falling back to AntiKt4EMPFlow");
385  jetdef = "AntiKt4EMPFlow";
386  }
387  toolName = "JetUncertaintiesTool_" + jetdef;
388 
389  m_jetUncertaintiesTool.setTypeAndName("JetUncertaintiesTool/"+toolName);
390 
391  ATH_CHECK( m_jetUncertaintiesTool.setProperty("JetDefinition", jetdef) );
393  ATH_CHECK( m_jetUncertaintiesTool.setProperty("IsData", false) ); // Never use the PDSmearing for the nominal tool.
397  ATH_CHECK( m_jetUncertaintiesTool.setProperty("OutputLevel", this->msg().level()) );
400 
401  ATH_MSG_INFO("Set up Jet PD Smear Uncertainty tool...");
402 
404  std::string jetdef("AntiKt4" + xAOD::JetInput::typeName(xAOD::JetInput::Type(m_jetInputType)));
405 
406  if(jetdef !="AntiKt4EMPFlow"){
407  ATH_MSG_WARNING("Jet Uncertaintes recommendations only exist for PFlow jets, falling back to AntiKt4EMPFlow");
408  jetdef = "AntiKt4EMPFlow";
409  }
410  toolName = "JetUncertaintiesPDSmearTool_" + jetdef;
411 
412  m_jetUncertaintiesPDSmearTool.setTypeAndName("JetUncertaintiesTool/"+toolName);
413 
414  // 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.
415  bool JERUncPDsmearing = isData() ? isData() : m_jetUncertaintiesPDsmearing;
416  if (m_jetUncertaintiesConfig.find("SimpleJER") != std::string::npos && JERUncPDsmearing){
417  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.");
418  return StatusCode::FAILURE;
419  }
420  ATH_CHECK( m_jetUncertaintiesPDSmearTool.setProperty("JetDefinition", jetdef) );
422  ATH_CHECK( m_jetUncertaintiesPDSmearTool.setProperty("IsData", true) ); // Set to True by default for PDSmear-named tool.
423  ATH_CHECK( m_jetUncertaintiesPDSmearTool.setProperty("PseudoDataJERsmearingMode", true) );
426  ATH_CHECK( m_jetUncertaintiesPDSmearTool.setProperty("OutputLevel", this->msg().level()) );
428  } else{
429  ATH_MSG_DEBUG("Do not retrieve the jet PD Smearing tool if it is not configured");
430  //ATH_CHECK( m_jetUncertaintiesPDSmearTool.retrieve() );
431  }
432  }
433 
434  if (m_slices["fjet"]) {
435 
436  // JetUncertaintiesTool handles JES, JER and JMS uncertainties for large-R jets
438 
439  ATH_MSG_INFO("Set up Large-R Jet Uncertainty tool...");
440 
441  // Print warning about missing large-R jets uncertainties for FastSim in mc23
442  if (m_isRun3 && isAtlfast())
443  ATH_MSG_WARNING("Uncertainties for large-R jets in mc23 and fast simulation not yet available; be aware uncertainties might be not complete!");
444 
445  toolName = "JetUncertaintiesTool_" + m_fatJets;
446  m_fatjetUncertaintiesTool.setTypeAndName("JetUncertaintiesTool/"+toolName);
447 
448  ATH_CHECK( m_fatjetUncertaintiesTool.setProperty("JetDefinition", fatjetcoll) );
453 
454  //Restrict variables to be shifted if (required)
455  if( m_fatJetUncVars != "default" ){
456  std::vector<std::string> shift_vars = {};
457 
458  std::string temp(m_fatJetUncVars);
459  do {
460  auto pos = temp.find(',');
461  shift_vars.push_back(temp.substr(0, pos));
462  if (pos == std::string::npos)
463  temp = "";
464  else
465  temp = temp.substr(pos + 1);
466 
467  }
468  while (!temp.empty() );
469 
470  ATH_CHECK( m_fatjetUncertaintiesTool.setProperty("VariablesToShift", shift_vars) );
471  }
472 
473  ATH_CHECK( m_fatjetUncertaintiesTool.setProperty("OutputLevel", this->msg().level()) );
476 
477 
479 
480  ATH_MSG_INFO("Set up Jet PD Smear Uncertainty tool...");
481 
482  toolName = "JetUncertaintiesPDSmearTool_" + m_fatJets;
483  m_fatjetUncertaintiesPDSmearTool.setTypeAndName("JetUncertaintiesTool/"+toolName);
484 
485  // 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.
486  bool JERUncPDsmearing = isData() ? isData() : m_fatJetUncertaintiesPDsmearing;
487  if (m_fatJetUncConfig.find("SimpleJER") != std::string::npos && JERUncPDsmearing){
488  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.");
489  return StatusCode::FAILURE;
490  }
491  ATH_CHECK( m_fatjetUncertaintiesPDSmearTool.setProperty("JetDefinition", fatjetcoll) );
493  ATH_CHECK( m_fatjetUncertaintiesPDSmearTool.setProperty("IsData", true) ); // Set to True by default for PDSmear-named tool.
494  ATH_CHECK( m_fatjetUncertaintiesPDSmearTool.setProperty("PseudoDataJERsmearingMode", true) );
497  ATH_CHECK( m_fatjetUncertaintiesPDSmearTool.setProperty("OutputLevel", this->msg().level()) );
499  } else{
500  ATH_MSG_DEBUG("Do not retrieve the jet PD Smearing tool if it is not configured");
501  }
502 
503 
504  // FFSmearingTool handles JMR uncertainties for large-R jets
505  if (!m_fatjetFFSmearingTool.isUserConfigured() && !m_fatJets.empty() && !m_fatJetUncConfig.empty()) {
506 
507  ATH_MSG_INFO("Set up Large-R FFJetSmearingTool ...");
508 
509  toolName = "FFJetSmearingTool_" + m_fatJets;
510  m_fatjetFFSmearingTool.setTypeAndName("CP::FFJetSmearingTool/"+toolName);
511 
512  ATH_CHECK( m_fatjetFFSmearingTool.setProperty("MassDef", "UFO") );
514  ATH_CHECK( m_fatjetFFSmearingTool.setProperty("ConfigFile", "rel22/Fall2024_PreRec/R10_FullJMR.config") );
515  ATH_CHECK( m_fatjetFFSmearingTool.setProperty("OutputLevel", this->msg().level()) );
518 
519  // Need to keep track of systematics of FFJetSmearingTool
520  if (!m_fatJets.empty()) {
521  // m_fatjetFFSmearingSyst = CP::make_systematics_vector(m_fatjetFFSmearingTool->recommendedSystematics());
522  ATH_MSG_INFO("The following uncertainties have been defined for the m_fatjetFFSmearingTool");
523  for (auto & sysSet : m_fatjetFFSmearingTool->recommendedSystematics()){
524  m_fatjetFFSmearingSyst.push_back(CP::SystematicSet({sysSet}));
525  ATH_MSG_INFO(" - " << sysSet.name());
526  }
527  }
528 
529  ATH_MSG_INFO(" Won't initialise Wtagger uncertainty tool for fat jets until we get rec for UFO");
530  // Won't initialise Wtagger uncertainty tool for fat jets until we get rec for UFO
531  /*
532  if (!m_WTagjetUncertaintiesTool.isUserConfigured() && !m_fatJets.empty() && !m_WtagConfig.empty() && !m_WTagUncConfig.empty()) {
533 
534  toolName = "WTagJetUncertaintiesTool_" + m_fatJets;
535  m_WTagjetUncertaintiesTool.setTypeAndName("JetUncertaintiesTool/"+toolName);
536  ATH_CHECK( m_WTagjetUncertaintiesTool.setProperty("JetDefinition", fatjetcoll) );
537  ATH_CHECK( m_WTagjetUncertaintiesTool.setProperty("MCType", "MC16") );
538  ATH_CHECK( m_WTagjetUncertaintiesTool.setProperty("IsData", isData()) );
539  ATH_CHECK( m_WTagjetUncertaintiesTool.setProperty("ConfigFile", "rel21/Fall2020/"+m_WTagUncConfig) );
540  ATH_CHECK( m_WTagjetUncertaintiesTool.setProperty("OutputLevel", this->msg().level()) );
541  ATH_CHECK( m_WTagjetUncertaintiesTool.retrieve() );
542  } else if (m_WTagjetUncertaintiesTool.isUserConfigured()) ATH_CHECK(m_WTagjetUncertaintiesTool.retrieve());
543  */
544  ATH_MSG_INFO(" Won't initialise Ztagger uncertainty tool for fat jets until we get rec for UFO");
545  // Won't initialise Ztagger uncertainty tool for fat jets until we get rec for UFO
546  /*
547  if (!m_ZTagjetUncertaintiesTool.isUserConfigured() && !m_fatJets.empty() && !m_ZtagConfig.empty() && !m_ZTagUncConfig.empty()) {
548 
549  toolName = "ZTagJetUncertaintiesTool_" + m_fatJets;
550  m_ZTagjetUncertaintiesTool.setTypeAndName("JetUncertaintiesTool/"+toolName);
551  ATH_CHECK( m_ZTagjetUncertaintiesTool.setProperty("JetDefinition", fatjetcoll) );
552  ATH_CHECK( m_ZTagjetUncertaintiesTool.setProperty("ConfigFile", "rel21/Fall2020/"+m_ZTagUncConfig) );
553  ATH_CHECK( m_ZTagjetUncertaintiesTool.setProperty("MCType", "MC16") );
554  ATH_CHECK( m_ZTagjetUncertaintiesTool.setProperty("IsData", isData()) );
555  ATH_CHECK( m_ZTagjetUncertaintiesTool.setProperty("OutputLevel", this->msg().level()) );
556  ATH_CHECK( m_ZTagjetUncertaintiesTool.retrieve() );
557  } else if (m_ZTagjetUncertaintiesTool.isUserConfigured()) ATH_CHECK(m_ZTagjetUncertaintiesTool.retrieve());
558  */
559  ATH_MSG_INFO(" Won't initialise top-tagger uncertainty tool for fat jets until we get rec for UFO");
560  // Won't initialise top-tagger uncertainty tool for fat jets until we get rec for UFO
561  /*
562  if (!m_TopTagjetUncertaintiesTool.isUserConfigured() && !m_fatJets.empty() && !m_ToptagConfig.empty() && !m_TopTagUncConfig.empty()) {
563 
564  toolName = "TopTagJetUncertaintiesTool_" + m_fatJets;
565  m_TopTagjetUncertaintiesTool.setTypeAndName("JetUncertaintiesTool/"+toolName);
566  ATH_CHECK( m_TopTagjetUncertaintiesTool.setProperty("JetDefinition", fatjetcoll) );
567  ATH_CHECK( m_TopTagjetUncertaintiesTool.setProperty("MCType", "MC16") );
568  ATH_CHECK( m_TopTagjetUncertaintiesTool.setProperty("IsData", isData()) );
569  ATH_CHECK( m_TopTagjetUncertaintiesTool.setProperty("ConfigFile", "rel21/Fall2020/"+m_TopTagUncConfig) );
570  ATH_CHECK( m_TopTagjetUncertaintiesTool.setProperty("OutputLevel", this->msg().level()) );
571  ATH_CHECK( m_TopTagjetUncertaintiesTool.retrieve() );
572  } else if (m_TopTagjetUncertaintiesTool.isUserConfigured()) ATH_CHECK(m_TopTagjetUncertaintiesTool.retrieve());
573  */
574  }
575 
576 
577  // tagger SF and uncertainties
578  // https://twiki.cern.ch/twiki/bin/view/AtlasProtected/BoostedJetTaggingRecommendationFullRun2
579  // To be implemented here
580 
581  if (m_slices["jet"]) {
583  // Initialise jet cleaning tools
584 
585  // see https://twiki.cern.ch/twiki/bin/view/AtlasProtected/HowToCleanJetsR22
587  toolName = "JetCleaningTool";
588  m_jetCleaningTool.setTypeAndName("JetCleaningTool/"+toolName);
590  ATH_CHECK( m_jetCleaningTool.setProperty("DoUgly", false) );
591  ATH_CHECK( m_jetCleaningTool.setProperty("OutputLevel", this->msg().level()) );
594 
596  // Initialise jet pileup labeling tool (required for labels used by JvtEfficiencyTools)
597 
599  toolName = "PileupLabelingTool";
600  m_jetPileupLabelingTool.setTypeAndName("JetPileupLabelingTool/"+toolName);
603  #ifndef XAOD_STANDALONE
604  ATH_CHECK( m_jetPileupLabelingTool.setProperty("SuppressInputDependence", true) );
605  ATH_CHECK( m_jetPileupLabelingTool.setProperty("SuppressOutputDependence", true) );
606  #endif
607  ATH_CHECK( m_jetPileupLabelingTool.setProperty("OutputLevel", this->msg().level()) );
610 
612  // Initialise jet Jvt moment tool
613 
615  toolName = "JvtMomentTool";
616  m_jetJvtMomentTool.setTypeAndName("JetVertexTaggerTool/"+toolName);
618  #ifndef XAOD_STANDALONE
619  ATH_CHECK( m_jetJvtMomentTool.setProperty("SuppressInputDependence", true) );
620  ATH_CHECK( m_jetJvtMomentTool.setProperty("SuppressOutputDependence", true) );
621  #endif
622  ATH_CHECK( m_jetJvtMomentTool.setProperty("OutputLevel", this->msg().level()) );
625 
627  // Initialise jet NNJvt moment tool
628 
629  m_applyJVTCut = !m_JvtWP.empty();
631  toolName = "NNJvtMomentTool";
632  m_jetNNJvtMomentTool.setTypeAndName("JetPileupTag::JetVertexNNTagger/"+toolName);
634  #ifndef XAOD_STANDALONE
635  ATH_CHECK( m_jetNNJvtMomentTool.setProperty("SuppressInputDependence", true) );
636  ATH_CHECK( m_jetNNJvtMomentTool.setProperty("SuppressOutputDependence", true) );
637  #endif
638  ATH_CHECK( m_jetNNJvtMomentTool.setProperty("OutputLevel", this->msg().level()) );
641 
643  // Initialise jet NNJvt selection tool
644 
646  toolName = "NNJvtSelectionTool";
647  m_jetNNJvtSelectionTool.setTypeAndName("CP::NNJvtSelectionTool/"+toolName);
651  ATH_CHECK( m_jetNNJvtSelectionTool.setProperty("JvtMomentName", "NNJvt") );
652  ATH_CHECK( m_jetNNJvtSelectionTool.setProperty("OutputLevel", this->msg().level()) );
655 
657  // Initialise jet NNJvt efficiency tool (scale factors)
658 
660  toolName = "NNJvtEfficiencyTool";
661  m_jetNNJvtEfficiencyTool.setTypeAndName("CP::NNJvtEfficiencyTool/"+toolName);
666  ATH_CHECK( m_jetNNJvtEfficiencyTool.setProperty("OutputLevel", this->msg().level()) );
669 
671  // Initialise jet fJvt selection tool
672 
674  toolName = "fJvtSelectionTool";
675  m_jetfJvtSelectionTool.setTypeAndName("CP::FJvtSelectionTool/"+toolName);
679  ATH_CHECK( m_jetfJvtSelectionTool.setProperty("JvtMomentName", "DFCommonJets_fJvt") );
680  ATH_CHECK( m_jetfJvtSelectionTool.setProperty("OutputLevel", this->msg().level()) );
683 
685  // Initialise jet fJvt efficiency tool for scale factors (scale factors)
686 
688  toolName = "fJvtEfficiencyTool";
689  m_jetfJvtEfficiencyTool.setTypeAndName("CP::FJvtEfficiencyTool/"+toolName);
694  ATH_CHECK( m_jetfJvtEfficiencyTool.setProperty("OutputLevel", this->msg().level()) );
697  }
698 
699 
700  if (m_slices["mu"]) {
702  // Check muon baseline ID
703 
704  std::string muQualBaseline = "";
705  switch (m_muIdBaseline) {
706  case xAOD::Muon::VeryLoose: muQualBaseline = "VeryLoose";
707  ATH_MSG_WARNING("No muon scale factors are available for VeryLoose working point.");
708  break;
709  case xAOD::Muon::Loose: muQualBaseline = "Loose"; break;
710  case xAOD::Muon::Medium: muQualBaseline = "Medium"; break;
711  case xAOD::Muon::Tight: muQualBaseline = "Tight"; break;
712  case 4: muQualBaseline = "HighPt"; break;
713  case 5: muQualBaseline = "LowPt"; break;
714  case 6: muQualBaseline = "LowPtMVA"; break;
715  case 7: muQualBaseline = "HighPt3Layers"; break;
716  default:
717  ATH_MSG_ERROR("Invalid muon working point provided: " << m_muIdBaseline << ". Cannot initialise!");
718  return StatusCode::FAILURE;
719  break;
720  }
721 
723  // Initialise muon calibration tool
724  // https://twiki.cern.ch/twiki/bin/view/AtlasProtected/MuonMomentumCorrectionsSubgroup#CP_MuonCalibrationAndSmearingToo
725  // Please not that for AthAnalysis we need to configure the MuonCalibTool within METSignificance manually and just can't pass the handle
726  // Hence, any changes here should also be propagated to the METSignificance setup further below
727 
729  m_muonCalibTool.setTypeAndName("CP::MuonCalibTool/ST_MuonCalibrationTool");
730  if (m_isRun3) ATH_CHECK( m_muonCalibTool.setProperty("IsRun3Geo", true ));
732  ATH_CHECK( m_muonCalibTool.setProperty("OutputLevel", this->msg().level()) );
733  ATH_CHECK( m_muonCalibTool.setProperty("release", "Recs2024_05_06_Run2Run3" ));
734  int IdBaselineInt = m_muIdBaseline;
735  if (IdBaselineInt == 4) {
736  ATH_CHECK( m_muonCalibTool.setProperty("do2StationsHighPt", true) );
737  }
740  } else ATH_CHECK( m_muonCalibTool.retrieve() );
741 
743  // Initialise muon selection tool
744 
746  toolName = "MuonSelectionTool_Baseline_" + muQualBaseline;
747  m_muonSelectionToolBaseline.setTypeAndName("CP::MuonSelectionTool/"+toolName);
748  if (m_isRun3) ATH_CHECK( m_muonSelectionToolBaseline.setProperty("IsRun3Geo", true ));
749 
750  if (m_muBaselineEta<m_muEta){ // Test for inconsistent configuration
751  ATH_MSG_ERROR( "Requested a baseline eta cut for muons (" << m_muBaselineEta <<
752  ") that is tighter than the signal cut (" << m_muEta << "). Please check your config." );
753  return StatusCode::FAILURE;
754  }
755  int IdBaselineInt = m_muIdBaseline;
757  if (IdBaselineInt == 6){
759  ATH_CHECK( m_muonSelectionToolBaseline.setProperty( "UseMVALowPt", true));
760  } else if (IdBaselineInt == 7){
762  ATH_CHECK( m_muonSelectionToolBaseline.setProperty( "Use2stationMuonsHighPt", false));
764  ATH_CHECK( m_muonSelectionToolBaseline.setProperty("OutputLevel", this->msg().level()) );
767 
768 
769  std::string muQual = "";
770  switch (m_muId) {
771  case xAOD::Muon::VeryLoose: muQual = "VeryLoose";
772  ATH_MSG_WARNING("No muon scale factors are available for VeryLoose working point.");
773  break;
774  case xAOD::Muon::Loose: muQual = "Loose"; break;
775  case xAOD::Muon::Medium: muQual = "Medium"; break;
776  case xAOD::Muon::Tight: muQual = "Tight"; break;
777  case 4: muQual = "HighPt"; break;
778  case 5: muQual = "LowPt"; break;
779  case 6: muQual = "LowPtMVA"; break;
780  case 7: muQual = "HighPt3Layers"; break;
781  default:
782  ATH_MSG_ERROR("Invalid muon working point provided: " << m_muId << ". Cannot initialise!");
783  return StatusCode::FAILURE;
784  break;
785  }
786 
788  toolName = "MuonSelectionTool_" + muQual;
789  m_muonSelectionTool.setTypeAndName("CP::MuonSelectionTool/"+toolName);
790  if (m_isRun3) ATH_CHECK( m_muonSelectionTool.setProperty("IsRun3Geo", true ));
792  int IdInt = m_muId;
793  if (IdInt == 6){
794  ATH_CHECK( m_muonSelectionTool.setProperty( "MuQuality", 5 ) );
795  ATH_CHECK( m_muonSelectionTool.setProperty( "UseMVALowPt", true));
796  } else if (IdInt == 7){
797  ATH_CHECK( m_muonSelectionTool.setProperty( "MuQuality", 4 ) );
798  ATH_CHECK( m_muonSelectionTool.setProperty( "Use2stationMuonsHighPt", false));
799  } else ATH_CHECK(m_muonSelectionTool.setProperty( "MuQuality", m_muId ));
800  ATH_CHECK( m_muonSelectionTool.setProperty("OutputLevel", this->msg().level()) );
803 
804 
805  if (!m_muonSelectionHighPtTool.isUserConfigured()) { //Fixed to HighPt WP
806  toolName = "MuonSelectionHighPtTool_" + muQual;
807  m_muonSelectionHighPtTool.setTypeAndName("CP::MuonSelectionTool/"+toolName);
808  if (m_isRun3) ATH_CHECK( m_muonSelectionHighPtTool.setProperty("IsRun3Geo", true ));
810  ATH_CHECK( m_muonSelectionHighPtTool.setProperty( "MuQuality", 4 ) );
811  ATH_CHECK( m_muonSelectionHighPtTool.setProperty("OutputLevel", this->msg().level()) );
814 
815 
817  // Initialise prompt/LRT muon OR tool
819  toolName = "MuonLRTOverlapRemovalTool";
820  m_muonLRTORTool.setTypeAndName("CP::MuonLRTOverlapRemovalTool/"+toolName);
822  if (m_isRun3) ATH_CHECK( m_muonLRTORTool.setProperty("UseRun3WP", true ));
823  ATH_CHECK( m_muonLRTORTool.setProperty("OutputLevel", this->msg().level()) );
825  } else ATH_CHECK( m_muonLRTORTool.retrieve() );
826 
828  // Initialise muon efficiency tools
830  toolName = "MuonEfficiencyScaleFactors_" + muQual;
831  m_muonEfficiencySFTool.setTypeAndName("CP::MuonEfficiencyScaleFactors/"+toolName);
832  ATH_CHECK( m_muonEfficiencySFTool.setProperty("WorkingPoint", muQual) );
833  ATH_CHECK( m_muonEfficiencySFTool.setProperty("CalibrationRelease", m_isRun3? "240711_Preliminary_r24run3":"230213_Preliminary_r22run2") );
834  ATH_CHECK( m_muonEfficiencySFTool.setProperty("OutputLevel", this->msg().level()) );
837 
838 
840  toolName = "MuonEfficiencyScaleFactorsBMHighPt_" + muQual;
841  m_muonEfficiencyBMHighPtSFTool.setTypeAndName("CP::MuonEfficiencyScaleFactors/"+toolName);
842  ATH_CHECK( m_muonEfficiencyBMHighPtSFTool.setProperty("WorkingPoint", "BadMuonVeto_HighPt") );
843  ATH_CHECK( m_muonEfficiencyBMHighPtSFTool.setProperty("CalibrationRelease", m_isRun3? "220817_Preliminary_r22run3":"230213_Preliminary_r22run2") ); //BadMuonVeto_HighPt currently not available for 240711_Preliminary_r24run3
844  ATH_CHECK( m_muonEfficiencyBMHighPtSFTool.setProperty("OutputLevel", this->msg().level()) );
847 
848 
849  if (m_doTTVAsf && m_mud0sig<0 && m_muz0<0){
850  ATH_MSG_WARNING("Requested TTVA SFs without d0sig and z0 cuts. Disabling scale factors as they will not make sense.");
851  m_doTTVAsf=false;
852  }
853 
855  toolName = "MuonTTVAEfficiencyScaleFactors";
856  m_muonTTVAEfficiencySFTool.setTypeAndName("CP::MuonEfficiencyScaleFactors/"+toolName);
857  ATH_CHECK( m_muonTTVAEfficiencySFTool.setProperty("WorkingPoint", "TTVA") );
858  ATH_CHECK( m_muonTTVAEfficiencySFTool.setProperty("CalibrationRelease", m_isRun3? "240711_Preliminary_r24run3":"230213_Preliminary_r22run2") );
859  ATH_CHECK( m_muonTTVAEfficiencySFTool.setProperty("OutputLevel", this->msg().level()) );
862 
863 
864 
866  // Initialise muon isolation tool
867  if (!m_muonIsolationSFTool.isUserConfigured() && !m_muIso_WP.empty() && !isData()) {
868  toolName = "MuonIsolationScaleFactors_" + m_muIso_WP;
869 
870  std::string tmp_muIso_WP = m_muIso_WP;
871  if ( !check_isOption(m_muIso_WP, m_mu_iso_support) ) { //check if supported
872  ATH_MSG_WARNING("Your selected muon Iso WP ("
873  << m_muIso_WP
874  << ") does not have SFs defined. Will try to find an appropriate fall-back.");
875  if (m_mu_iso_fallback.count(m_muIso_WP) > 0){
876  tmp_muIso_WP = m_mu_iso_fallback[m_muIso_WP];
877  ATH_MSG_WARNING("Your selected muon Iso WP ("
878  << m_muIso_WP
879  << " is not supported, and does not have SFs available. Falling back to "
880  << tmp_muIso_WP
881  << " for SF determination.");
882  } else {
883  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! ***");
884  return StatusCode::FAILURE;
885  }
886  }
887 
888  m_muonIsolationSFTool.setTypeAndName("CP::MuonEfficiencyScaleFactors/"+toolName);
889  ATH_CHECK( m_muonIsolationSFTool.setProperty("WorkingPoint", tmp_muIso_WP + "Iso") );
890  ATH_CHECK( m_muonIsolationSFTool.setProperty("CalibrationRelease", m_isRun3? "240711_Preliminary_r24run3":"230213_Preliminary_r22run2") );
891  ATH_CHECK( m_muonIsolationSFTool.setProperty("OutputLevel", this->msg().level()) );
893 
895 
896 
898  toolName = "MuonHighPtIsolationScaleFactors_" + m_muIsoHighPt_WP;
899 
900  std::string tmp_muIsoHighPt_WP = m_muIsoHighPt_WP;
901  if ( !check_isOption(m_muIsoHighPt_WP, m_mu_iso_support) ) { //check if supported
902  ATH_MSG_WARNING("Your selected muon high-pt Iso WP ("
904  << ") does not have SFs defined. Will try to find an appropriate fall-back.");
905  if (m_mu_iso_fallback.count(m_muIsoHighPt_WP) > 0){
906  tmp_muIsoHighPt_WP = m_mu_iso_fallback[m_muIsoHighPt_WP];
907  ATH_MSG_WARNING("Your selected muon high-pt Iso WP ("
909  << " is not supported, and does not have SFs available. Falling back to "
910  << tmp_muIsoHighPt_WP
911  << " for SF determination.");
912  } else {
913  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! ***");
914  return StatusCode::FAILURE;
915  }
916  }
917 
918  m_muonHighPtIsolationSFTool.setTypeAndName("CP::MuonEfficiencyScaleFactors/"+toolName);
919  // Use for the low-pt WP a dedicated set of isolation scale-factors having an extra uncertainty in place
920  ATH_CHECK( m_muonHighPtIsolationSFTool.setProperty("WorkingPoint", tmp_muIsoHighPt_WP + "Iso") );
921  ATH_CHECK( m_muonHighPtIsolationSFTool.setProperty("CalibrationRelease", m_isRun3? "240711_Preliminary_r24run3":"230213_Preliminary_r22run2") );
922  ATH_CHECK( m_muonHighPtIsolationSFTool.setProperty("OutputLevel", this->msg().level()) );
924 
926 
927 
929  // Initialise muon trigger scale factor tools
930 
932  toolName = "MuonTriggerScaleFactors_" + muQual;
933  m_muonTriggerSFTool.setTypeAndName("CP::MuonTriggerScaleFactors/"+toolName);
934  if ( muQual=="LowPt" ) {
935  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!");
936  ATH_CHECK( m_muonTriggerSFTool.setProperty("MuonQuality", "Medium" ) );
937  }
938  else ATH_CHECK( m_muonTriggerSFTool.setProperty("MuonQuality", muQual) );
939  //ATH_CHECK( m_muonTriggerSFTool.setProperty("Isolation", m_muIso_WP)); This property has been depreacted long time ago
940  ATH_CHECK( m_muonTriggerSFTool.setProperty("AllowZeroSF", true) );
941  ATH_CHECK( m_muonTriggerSFTool.setProperty("OutputLevel", this->msg().level()) );
946  } else if (m_muonTriggerSFTool.isUserConfigured()) {
949  }
950  }
951 
952  if (m_slices["ele"]) {
953  // /////////////////////////////////////////////////////////////////////////////////////////
954  // Initialise electron selector tools
955 
956  // Signal Electrons
958  toolName = "EleSelLikelihood_" + m_eleId;
959 
960  if (m_eleId.find("DNN") != std::string::npos) {
961  m_elecSelLikelihood.setTypeAndName("AsgElectronSelectorTool/"+toolName);
962  }
963  else {
964  m_elecSelLikelihood.setTypeAndName("AsgElectronLikelihoodTool/"+toolName);
965  }
966 
967  if (! m_eleConfig.empty() ){
968  ATH_MSG_INFO("Overriding specified Ele.Id working point in favour of configuration file");
970  } else if ( !check_isOption(m_eleId, m_el_id_support) ) { //check if supported
971  ATH_MSG_ERROR("Invalid electron ID selected: " << m_eleId);
972  return StatusCode::FAILURE;
973  }
974  else if (m_eleId == "VeryLooseLLH" || m_eleId == "LooseLLH") {
975  ATH_MSG_WARNING(" ****************************************************************************");
976  ATH_MSG_WARNING(" CAUTION: Setting " << m_eleId << " as signal electron ID");
977  ATH_MSG_WARNING(" These may be used for loose electron CRs but no scale factors are provided.");
978  ATH_MSG_WARNING(" ****************************************************************************");
980  } else {
982  }
983 
984  ATH_CHECK( m_elecSelLikelihood.setProperty("OutputLevel", this->msg().level()) );
987 
988  // Baseline Electrons
990  toolName = "EleSelLikelihoodBaseline_" + m_eleIdBaseline;
991 
992  if (m_eleIdBaseline.find("DNN") != std::string::npos) {
993  m_elecSelLikelihoodBaseline.setTypeAndName("AsgElectronSelectorTool/"+toolName);
994  }
995  else {
996  m_elecSelLikelihoodBaseline.setTypeAndName("AsgElectronLikelihoodTool/"+toolName);
997  }
998 
999  if (! m_eleConfigBaseline.empty() ){
1000  ATH_MSG_INFO("Overriding specified EleBaseline.Id working point in favour of configuration file");
1002  } else if ( !check_isOption(m_eleIdBaseline, m_el_id_support) ) { //check if supported
1003  ATH_MSG_ERROR("Invalid electron ID selected: " << m_eleIdBaseline);
1004  return StatusCode::FAILURE;
1005  } else {
1007  }
1008 
1009  ATH_CHECK( m_elecSelLikelihoodBaseline.setProperty("OutputLevel", this->msg().level()) );
1012  }
1013 
1015  // Initialise prompt/LRT electron OR tool
1017  toolName = "ElectronLRTOverlapRemovalTool";
1018  m_elecLRTORTool.setTypeAndName("CP::ElectronLRTOverlapRemovalTool/"+toolName);
1019  ATH_MSG_DEBUG("Setting ElectronLRTOverlapRemovalTool strategy to "<<m_eleLRT_strat);
1020  ATH_CHECK( m_elecLRTORTool.setProperty("overlapStrategy", m_eleLRT_strat) );
1022  } else ATH_CHECK( m_elecLRTORTool.retrieve() );
1023 
1024  if (m_slices["pho"]) {
1025  // /////////////////////////////////////////////////////////////////////////////////////////
1026  // Initialise photon selector tools
1027 
1029  toolName = "PhotonSelIsEM_" + m_photonId;
1030  m_photonSelIsEM.setTypeAndName("AsgPhotonIsEMSelector/"+toolName);
1031 
1032  if (!check_isOption(m_photonId, m_ph_id_support)){ //check if supported
1033  ATH_MSG_ERROR("Invalid photon ID selected: " << m_photonId);
1034  return StatusCode::FAILURE;
1035  }
1036 
1037  ATH_CHECK( m_photonSelIsEM.setProperty("WorkingPoint", m_photonId+"Photon") );
1038  ATH_CHECK( m_photonSelIsEM.setProperty("OutputLevel", this->msg().level()) );
1040  } else ATH_CHECK( m_photonSelIsEM.retrieve() );
1041 
1043  toolName = "PhotonSelIsEMBaseline_" + m_photonIdBaseline;
1044  m_photonSelIsEMBaseline.setTypeAndName("AsgPhotonIsEMSelector/"+toolName);
1045 
1046  if(!check_isOption(m_photonIdBaseline, m_ph_id_support)){ //check if supported
1047  ATH_MSG_ERROR("Invalid photon ID selected: " << m_photonIdBaseline);
1048  return StatusCode::FAILURE;
1049  }
1050 
1051  ATH_CHECK( m_photonSelIsEMBaseline.setProperty("WorkingPoint", m_photonIdBaseline+"Photon") );
1052  ATH_CHECK( m_photonSelIsEMBaseline.setProperty("OutputLevel", this->msg().level()) );
1055  }
1056 
1057  if (m_slices["ele"]||m_slices["pho"]) {
1059  // Initialise DeadHVCellRemovalTool
1060  // https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/EGammaIdentificationRun2#Removal_of_Electron_Photon_clust
1061 
1062  ATH_MSG_DEBUG("Setup AsgDeadHVCellRemovalTool/deadHVTool");
1063  m_deadHVTool.setTypeAndName("AsgDeadHVCellRemovalTool/deadHVTool");
1065  }
1066 
1067  if (m_slices["ele"]) {
1069  // Initialise electron efficiency tool
1070 
1072  if (!isData()) {
1073  if (isAtlfast()) data_type = PATCore::ParticleDataType::Fast;
1074  else data_type = PATCore::ParticleDataType::Full;
1075  ATH_MSG_DEBUG( "Setting data type to " << data_type);
1076  }
1077 
1078  m_eleEffMapFilePathRun2 = "ElectronEfficiencyCorrection/2015_2018/rel21.2/Precision_Summer2020_v1/map4.txt";
1079 
1080  if(!m_isRun3) {
1081  ATH_MSG_INFO( "Running on Run2 samples; Using egamma SF tools from R21 map ");
1083  }
1084 
1085  toolName = "AsgElectronEfficiencyCorrectionTool_reco";
1087 
1088  //-- get KEYS supported by egamma SF tools
1089  std::vector<std::string> eSF_keys = getElSFkeys( m_isRun3? m_eleEffMapFilePath : m_eleEffMapFilePathRun2);
1090 
1091  if (m_eleId.find("NoPix") != std::string::npos || m_eleId == "VeryLooseLLH" || m_eleId == "LooseLLH" || m_eleId == "Medium") {
1092  ATH_MSG_WARNING("Not configuring electron ID and trigger scale factors for " << m_eleId);
1093  }
1094  else {
1095  // This needs to be formatted for the scale factors: no _Rel20, no LH label, etc.
1096  std::string eleId = TString(m_eleId).ReplaceAll("AndBLayer", "BLayer").ReplaceAll("LLH", "").Data();
1097 
1098  if (m_eleId.find("DNN") != std::string::npos) {
1099  eleId = TString(eleId).ReplaceAll("DNNnoCF", "").ReplaceAll("DNN", "").ReplaceAll("Loose", "LooseBLayer").Data();
1100  ATH_MSG_WARNING("Electron DNN ID working point " << m_eleId << " doesn't have SFs yet, fall back to " << eleId);
1101  }
1102 
1103  // electron id
1104  toolName = "AsgElectronEfficiencyCorrectionTool_id_" + m_eleId;
1106 
1107  // override map file use if correction file list is set for WP
1108  std::map<std::string,std::string> corrFNList;
1109  if ( !m_EG_corrFNList.empty() ) {
1110  for ( const auto& WP_fname : split( m_EG_corrFNList, "," ) ) {
1111  std::string WP = WP_fname.substr(0,WP_fname.find(":"));
1112  std::string fname = WP_fname.substr(WP_fname.find(":")+1);
1113  corrFNList[WP] = fname;
1114  ATH_MSG_WARNING( "Correction file list defined for WP " << WP << ": " << fname << "." );
1115  ATH_MSG_WARNING( "Will use correction file rather than central map file." );
1116  }
1117  }
1118 
1119  // electron iso
1120  std::string EleIso("");
1121  if (std::find(eSF_keys.begin(), eSF_keys.end(), eleId+"_"+m_eleIso_WP) != eSF_keys.end()){
1122  EleIso = m_eleIso_WP;
1123  } else if (std::find(eSF_keys.begin(), eSF_keys.end(), eleId+"_"+m_el_iso_fallback[m_eleIso_WP]) != eSF_keys.end()){
1124  //--- Check to see if the only issue is an unknown isolation working point
1125  EleIso = m_el_iso_fallback[m_eleIso_WP];
1126  ATH_MSG_WARNING("(AsgElectronEfficiencyCorrectionTool_iso_*) Your selected electron Iso WP ("
1127  << m_eleIso_WP
1128  << ") does not have iso SFs defined. Falling back to "
1130  << " for SF calculations");
1131  }
1132  else{
1133  ATH_MSG_ERROR("*** THE ELECTRON ISOLATION SF YOU SELECTED (" << m_eleIso_WP << ") GOT NO SUPPORT ***");
1134  return StatusCode::FAILURE;
1135  }
1136 
1137  toolName = "AsgElectronEfficiencyCorrectionTool_iso_" + m_eleId + EleIso;
1138 
1139  // if running with correction file list
1140  if ( (!m_EG_corrFNList.empty()) && corrFNList.find(EleIso)!=corrFNList.end() ) { // overriding central map file
1141  CONFIG_EG_EFF_TOOL( m_elecEfficiencySFTool_iso, toolName, corrFNList[EleIso] );
1142  }
1143  // can't do the iso tool via the macro, it needs two properties set
1144  else { // default: use map file
1146  if ( !check_isOption(EleIso, m_el_iso_support) ) { //check if supported
1147  ATH_MSG_WARNING( "(" << toolName << ") Your electron Iso WP: " << EleIso<< " is no longer supported. This will almost certainly cause a crash now.");
1148  }
1149 
1150  m_elecEfficiencySFTool_iso.setTypeAndName("AsgElectronEfficiencyCorrectionTool/"+toolName);
1151 
1152  if ( m_EG_corrFNList.empty() ) {
1154  } else {
1155  ATH_CHECK( m_elecEfficiencySFTool_iso.setProperty("CorrectionFileNameList", corrFNList) );
1156  }
1158  ATH_CHECK( m_elecEfficiencySFTool_iso.setProperty("IsoKey", EleIso) );
1159  if (!isData() && ((EleIso.find("TightTrackOnly_VarRad")!=std::string::npos)||
1160  (EleIso.find("TightTrackOnly_FixedRad")!=std::string::npos)||
1161  (EleIso.find("Tight_VarRad")!=std::string::npos)||
1162  (EleIso.find("Loose_VarRad")!=std::string::npos))) {
1163  if (isAtlfast()) ATH_MSG_WARNING("(AsgElectronEfficiencyCorrectionTool/"+toolName+"). Your selected electron Iso WP (" + EleIso + ") don't have AFII SF. Falling back to FullSim");
1165  }
1166  else if (!isData()){
1167  ATH_CHECK( m_elecEfficiencySFTool_iso.setProperty("ForceDataType", static_cast<int>(data_type)));
1168  }
1170  ATH_CHECK( m_elecEfficiencySFTool_iso.setProperty("OutputLevel", this->msg().level()) );
1173  }
1174 
1175  // electron iso high-pt
1176  std::string EleIsohighPt("");
1177  if (std::find(eSF_keys.begin(), eSF_keys.end(), eleId+"_"+m_eleIsoHighPt_WP) != eSF_keys.end()){
1178  EleIsohighPt = m_eleIsoHighPt_WP;
1179  } else if (std::find(eSF_keys.begin(), eSF_keys.end(), eleId+"_"+m_el_iso_fallback[m_eleIsoHighPt_WP]) != eSF_keys.end()){
1180  //--- Check to see if the only issue is an unknown isolation working point
1181  EleIsohighPt = m_el_iso_fallback[m_eleIsoHighPt_WP];
1182  ATH_MSG_WARNING("(AsgElectronEfficiencyCorrectionTool_iso_*) Your selected high-pT electron Iso WP ("
1184  << ") does not have iso SFs defined. Falling back to "
1186  << " for SF calculations");
1187  }
1188  else{
1189  ATH_MSG_ERROR("*** THE HIGH PT ELECTRON ISOLATION SF YOU SELECTED (" << m_eleIsoHighPt_WP << ") GOT NO SUPPORT");
1190  return StatusCode::FAILURE;
1191  }
1192 
1193  toolName = "AsgElectronEfficiencyCorrectionTool_isoHigPt_" + m_eleId + EleIsohighPt;
1194 
1195  // if running with correction file list
1196  if ( (!m_EG_corrFNList.empty()) && corrFNList.find(EleIsohighPt)!=corrFNList.end() ) { // overriding central map file
1197  CONFIG_EG_EFF_TOOL( m_elecEfficiencySFTool_isoHighPt, toolName, corrFNList[EleIsohighPt] );
1198  }
1199  // can't do the iso tool via the macro, it needs two properties set
1200  else { // default: use map file
1202 
1203  if ( !check_isOption(EleIsohighPt, m_el_iso_support) ) { //check if supported
1204  ATH_MSG_WARNING( "(" << toolName << ") Your electron high-pt Iso WP: " << EleIsohighPt << " is no longer supported. This will almost certainly cause a crash now.");
1205  }
1206 
1207  m_elecEfficiencySFTool_isoHighPt.setTypeAndName("AsgElectronEfficiencyCorrectionTool/"+toolName);
1208 
1211  ATH_CHECK( m_elecEfficiencySFTool_isoHighPt.setProperty("IsoKey", EleIsohighPt) );
1212  if (!isData()) {
1213  ATH_CHECK (m_elecEfficiencySFTool_isoHighPt.setProperty("ForceDataType", (int) data_type) );
1214  }
1216  ATH_CHECK( m_elecEfficiencySFTool_isoHighPt.setProperty("OutputLevel", this->msg().level()) );
1219  }
1220 
1221  // electron triggers - first SFs (but we need to massage the id string since all combinations are not supported)
1222 
1223  //single lepton
1224 
1225  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);
1226  std::string triggerEleID = m_isRun3? TString(eleId).ReplaceAll("LooseBLayer", "Loose").Data() : eleId;
1227  std::string triggerEleIso= m_eleIso_WP;
1228 
1229  // This is an hack to work with ElectronEfficiencyCorrection/2015_2025/rel22.2/2022_Summer_Prerecom_v1/map4.txt to allow
1230 
1232  bool pass_isRun3TrigSFFallback = true;
1233  if (triggerEleID.find("Medium") != std::string::npos && triggerEleIso.find("Loose") != std::string::npos) {triggerEleID = "Loose";}
1234  else if (triggerEleID.find("Medium") != std::string::npos && triggerEleIso.find("Tight") != std::string::npos) {triggerEleID = "Tight"; triggerEleIso = "Tight_VarRad";}
1235  else if (triggerEleID.find("Medium") != std::string::npos && triggerEleIso.find("HighPtCaloOnly") != std::string::npos) {triggerEleID = "Tight"; triggerEleIso = "Tight_VarRad";}
1236  else if (triggerEleID.find("Tight") != std::string::npos && triggerEleIso.find("Loose") != std::string::npos) {triggerEleID = "Loose";}
1237  else if (triggerEleID.find("Tight") != std::string::npos && triggerEleIso.find("Tight") != std::string::npos) {triggerEleIso= "Tight_VarRad";}
1238  else if (triggerEleID.find("Tight") != std::string::npos && triggerEleIso.find("HighPtCaloOnly") != std::string::npos) {triggerEleID = "Tight"; triggerEleIso = "Tight_VarRad";}
1239  else if (triggerEleID.find("Loose") != std::string::npos && triggerEleIso.find("Tight") != std::string::npos) {triggerEleID = "Loose"; triggerEleIso = "Loose_VarRad";}
1240  else if (triggerEleID.find("Loose") != std::string::npos && triggerEleIso.find("HighPtCaloOnly") != std::string::npos) {triggerEleID = "Loose"; triggerEleIso = "Loose_VarRad";}
1241  else {pass_isRun3TrigSFFallback=false;}
1242  if(pass_isRun3TrigSFFallback){
1243  ATH_MSG_INFO(" ************** This is only for testing/studying purpose! ************** ");
1244  ATH_MSG_INFO(" ************** For official recommendation, please get in contact with the SUSY Bkg Forum ************** ");
1245  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' ");
1246  ATH_MSG_INFO("Only for single-lepton trigger scale factor, fall back to Electron ID: -> "<< triggerEleID << " with Isolation: " << triggerEleIso);
1247  }
1248  }
1249 
1250 
1251  ATH_MSG_INFO("eSF_keys: " << m_electronTriggerSFStringSingle<< "_"<<triggerEleID<<"_"<<triggerEleIso);
1252 
1253  if (std::find(eSF_keys.begin(), eSF_keys.end(), m_electronTriggerSFStringSingle+"_"+triggerEleID+"_"+triggerEleIso) != eSF_keys.end()){
1254  triggerEleIso = m_eleIso_WP;
1255  } else if (std::find(eSF_keys.begin(), eSF_keys.end(), m_electronTriggerSFStringSingle+"_"+triggerEleID+"_"+m_el_iso_fallback[triggerEleIso]) != eSF_keys.end()){
1256  //--- Check to see if the only issue is an unknown isolation working point
1257  triggerEleIso = m_el_iso_fallback[triggerEleIso];
1258  ATH_MSG_WARNING("(AsgElectronEfficiencyCorrectionTool_trig_singleLep_*) Your selected electron Iso WP ("
1259  << m_eleIso_WP
1260  << ") does not have trigger SFs defined. Falling back to "
1261  << triggerEleIso
1262  << " for SF calculations");
1263  }
1264  else{
1265  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 << ") ***");
1266  return StatusCode::FAILURE;
1267  }
1268 
1269  toolName = "AsgElectronEfficiencyCorrectionTool_trig_singleLep_" + triggerEleID;
1271  m_elecEfficiencySFTool_trig_singleLep.setTypeAndName("AsgElectronEfficiencyCorrectionTool/"+toolName);
1275  ATH_CHECK( m_elecEfficiencySFTool_trig_singleLep.setProperty("IsoKey", triggerEleIso) );
1277  if (!isData()) {
1279  }
1280  ATH_CHECK( m_elecEfficiencySFTool_trig_singleLep.setProperty("OutputLevel", this->msg().level()) );
1283 
1284 
1285  toolName = "AsgElectronEfficiencyCorrectionTool_trigEff_singleLep_" + triggerEleID;
1287  m_elecEfficiencySFTool_trigEff_singleLep.setTypeAndName("AsgElectronEfficiencyCorrectionTool/"+toolName);
1293  if (!isData()) {
1295  }
1296  ATH_CHECK( m_elecEfficiencySFTool_trigEff_singleLep.setProperty("OutputLevel", this->msg().level()) );
1299 
1300  if (!m_isRun3){
1301  //mixed-leptons
1302  std::map<std::string,std::string> electronTriggerSFMapMixedLepton {
1303  // legs, Trigger keys,
1304  {"e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose,e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0", m_electronTriggerSFStringSingle},
1305  {"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"},
1306  {"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"},
1307  {"e17_lhloose,e17_lhloose_nod0","MULTI_L_2015_e17_lhloose_2016_2018_e17_lhloose_nod0"},
1308  {"e12_lhloose,e12_lhloose_nod0","MULTI_L_2015_e12_lhloose_2016_2018_e12_lhloose_nod0"},
1309  {"e7_lhmedium,e7_lhmedium_nod0","MULTI_L_2015_e7_lhmedium_2016_2018_e7_lhmedium_nod0"},
1310  {"e9_lhloose,e9_lhloose_nod0,e12_lhvloose_nod0_L1EM10VH","TRI_E_2015_e9_lhloose_2016_e9_lhloose_nod0_2017_2018_e12_lhvloose_nod0_L1EM10VH"}
1311 
1312  };
1313 
1314  // 2e17 trigger is used in 2017 or 2018?
1316  if (triglist_2017to2018.find("2e17_lhvloose_nod0_L12EM15VHI") != std::string::npos) {
1317  electronTriggerSFMapMixedLepton["e17_lhvloose_nod0_L1EM15VHI"] = "DI_E_2015_e12_lhloose_L1EM10VH_2016_e17_lhvloose_nod0_2017_2018_e17_lhvloose_nod0_L1EM15VHI";
1318  }
1319 
1320  std::string triggerMixedEleIso("");
1321 
1322  for(auto const& item : electronTriggerSFMapMixedLepton){
1323 
1324  if (std::find(eSF_keys.begin(), eSF_keys.end(), item.second+"_"+eleId+"_"+m_eleIso_WP) != eSF_keys.end()){
1325  triggerMixedEleIso = m_eleIso_WP;
1326  } else if (std::find(eSF_keys.begin(), eSF_keys.end(), item.second+"_"+eleId+"_"+m_el_iso_fallback[m_eleIso_WP]) != eSF_keys.end()){
1327  //--- Check to see if the only issue is an unknown isolation working point
1328  triggerMixedEleIso = m_el_iso_fallback[m_eleIso_WP];
1329  ATH_MSG_WARNING("(AsgElectronEfficiencyCorrectionTool_trig_mixLep_*) Your selected electron Iso WP ("
1330  << m_eleIso_WP
1331  << ") does not have trigger SFs defined. Falling back to "
1332  << triggerMixedEleIso
1333  << " for SF calculations");
1334  } else {
1335  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! ***");
1336  return StatusCode::FAILURE;
1337  }
1338 
1339  ATH_MSG_VERBOSE ("Selected WP: " << item.second << "_" << eleId << "_" << triggerMixedEleIso);
1340 
1341  toolName = "AsgElectronEfficiencyCorrectionTool_trig_mixLep_" + (item.first).substr(0,8) + m_eleId;
1342  auto t_sf = m_elecEfficiencySFTool_trig_mixLep.emplace(m_elecEfficiencySFTool_trig_mixLep.end(), "AsgElectronEfficiencyCorrectionTool/"+toolName);
1343  ATH_CHECK( t_sf->setProperty("MapFilePath", m_isRun3? m_eleEffMapFilePath : m_eleEffMapFilePathRun2) );
1344  ATH_CHECK( t_sf->setProperty("TriggerKey", item.second) );
1345  ATH_CHECK( t_sf->setProperty("IdKey", eleId) );
1346  ATH_CHECK( t_sf->setProperty("IsoKey", triggerMixedEleIso) );
1347  ATH_CHECK( t_sf->setProperty("CorrelationModel", m_EG_corrModel) );
1348  if (!isData()) {
1349  ATH_CHECK( t_sf->setProperty("ForceDataType", (int) (data_type==PATCore::ParticleDataType::Fast)? PATCore::ParticleDataType::Full : data_type) );
1350  }
1351  ATH_CHECK( t_sf->setProperty("OutputLevel", this->msg().level()) );
1352  ATH_CHECK( t_sf->initialize() );
1353  m_elecTrigSFTools.push_back(t_sf->getHandle());
1354  #ifndef XAOD_STANDALONE
1355  m_legsPerTool[toolName] = item.first;
1356  #else
1357  m_legsPerTool["ToolSvc."+toolName] = item.first;
1358  #endif
1359 
1360  toolName = "AsgElectronEfficiencyCorrectionTool_trigEff_mixLep_" + (item.first).substr(0,8) + m_eleId;
1361  auto t_eff = m_elecEfficiencySFTool_trigEff_mixLep.emplace(m_elecEfficiencySFTool_trigEff_mixLep.end(), "AsgElectronEfficiencyCorrectionTool/"+toolName);
1362  ATH_CHECK( t_eff->setProperty("MapFilePath", m_isRun3? m_eleEffMapFilePath : m_eleEffMapFilePathRun2) );
1363  ATH_CHECK( t_eff->setProperty("TriggerKey", "Eff_"+item.second) );
1364  ATH_CHECK( t_eff->setProperty("IdKey", eleId) );
1365  ATH_CHECK( t_eff->setProperty("IsoKey", triggerMixedEleIso) );
1366  ATH_CHECK( t_eff->setProperty("CorrelationModel", m_EG_corrModel) );
1367  if (!isData()) {
1368  ATH_CHECK( t_eff->setProperty("ForceDataType", (int) (data_type==PATCore::ParticleDataType::Fast)? PATCore::ParticleDataType::Full : data_type) );
1369  }
1370  ATH_CHECK( t_eff->setProperty("OutputLevel", this->msg().level()) );
1371  ATH_CHECK( t_eff->initialize() );
1372  m_elecTrigEffTools.push_back(t_eff->getHandle());
1373  #ifndef XAOD_STANDALONE
1374  m_legsPerTool[toolName] = item.first;
1375  #else
1376  m_legsPerTool["ToolSvc."+toolName] = item.first;
1377  #endif
1378 
1379  }
1380  }
1381  else ATH_MSG_WARNING("*** THE ELECTRON TRIGGER SF MIXED AND SF DILEP ARE CURRENTY NOT SUPPORTED IN RUN3 ***");
1382 
1383  ATH_MSG_WARNING("*** THE ELECTRON CHARGE FLIP SF ARE CURRENTY NOT SUPPORTED ***");
1384  // all the iinitialisation of the related tools have been cleaned up
1385 
1386  }
1387 
1388  if (m_slices["pho"]) {
1389  // /////////////////////////////////////////////////////////////////////////////////////////
1390  // Initialise photon efficiency tool
1391 
1393  m_photonEfficiencySFTool.setTypeAndName("AsgPhotonEfficiencyCorrectionTool/AsgPhotonEfficiencyCorrectionTool_" + m_photonId);
1394 
1395  if (m_photonId != "Tight" ) {
1396  ATH_MSG_WARNING( "No Photon efficiency available for " << m_photonId << ", using Tight instead..." );
1397  }
1398 
1399  ATH_CHECK( m_photonEfficiencySFTool.setProperty("MapFilePath", "PhotonEfficiencyCorrection/2015_2025/rel22.2/2024_FinalRun2_Recommendation_v1/map1.txt") );
1400  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
1401  ATH_CHECK( m_photonEfficiencySFTool.setProperty("OutputLevel", this->msg().level()) );
1404 
1406  m_photonIsolationSFTool.setTypeAndName("AsgPhotonEfficiencyCorrectionTool/AsgPhotonEfficiencyCorrectionTool_isol" + m_photonIso_WP);
1407 
1408  if (m_photonIso_WP != "FixedCutTight" && m_photonIso_WP != "FixedCutLoose" && m_photonIso_WP != "TightCaloOnly") {
1409  ATH_MSG_WARNING( "No Photon efficiency available for " << m_photonIso_WP);
1410  }
1411 
1412  ATH_CHECK( m_photonIsolationSFTool.setProperty("MapFilePath", "PhotonEfficiencyCorrection/2015_2025/rel22.2/2022_Summer_Prerecom_v1/map1.txt") );
1413  ATH_CHECK( m_photonIsolationSFTool.setProperty("IsoKey", m_photonIso_WP != "TightCaloOnly" ? m_photonIso_WP.substr(8) : m_photonIso_WP )); // Set isolation WP: Loose,Tight,TightCaloOnly
1414  ATH_CHECK( m_photonIsolationSFTool.setProperty("ForceDataType", 1) ); // Set data type: 1 for FULLSIM, 3 for AF2
1415  ATH_CHECK( m_photonIsolationSFTool.setProperty("OutputLevel", this->msg().level()) );
1418 
1419  // trigger scale factors
1421  m_photonTriggerSFTool.setTypeAndName("AsgPhotonEfficiencyCorrectionTool/AsgPhotonEfficiencyCorrectionTool_trig" + m_photonTriggerName);
1422 
1423  // Fallback to TightCaloOnly if Tight is selected
1424  std::string photonIso_forTrigSF = m_photonIso_WP;
1425  if (m_photonIso_WP == "FixedCutTight") {
1426  ATH_MSG_WARNING( "No Photon trigger SF available for " << m_photonIso_WP << ", using TightCaloOnly instead... Use at your own risk" );
1427  photonIso_forTrigSF = "TightCaloOnly";
1428  } else { // isolation WP supported: Loose or TightCaloOnly, removing "FixedCut" suffix..
1429  photonIso_forTrigSF = TString(m_photonIso_WP).ReplaceAll("FixedCut","").Data();
1430  }
1431 
1432  // "symmetric" diphoton triggers (year dependent)
1433  ATH_CHECK( m_photonTriggerSFTool.setProperty("MapFilePath", "PhotonEfficiencyCorrection/2015_2018/rel21.2/Summer2020_Rec_v1/map3.txt") );
1434  ATH_CHECK( m_photonTriggerSFTool.setProperty("IsoKey", photonIso_forTrigSF )); // Set isolation WP: Loose,TightCaloOnly
1436  ATH_CHECK( m_photonTriggerSFTool.setProperty("ForceDataType", 1) ); // Set data type: 1 for FULLSIM, 3 for AF2
1437  ATH_CHECK( m_photonTriggerSFTool.setProperty("OutputLevel", this->msg().level()) );
1439 
1440  // "asymmetric" diphoton triggers
1441  std::map<std::string,std::string> diphotonTriggerSFMapAsymmetric {
1442  // legs, Trigger keys,
1443  {"g25_loose,g25_medium_L1EM20VH", "DI_PH_2015_g25_loose_2016_g25_loose_2017_g25_medium_L1EM20VH_2018_g25_medium_L1EM20VH"},
1444  {"g35_loose,g35_medium_L1EM20VH", "DI_PH_2015_g35_loose_2016_g35_loose_2017_g35_medium_L1EM20VH_2018_g35_medium_L1EM20VH"},
1445  };
1446 
1447  for(auto const& item : diphotonTriggerSFMapAsymmetric){
1448 
1449  toolName = "AsgPhotonEfficiencyCorrectionTool_trigSF_asymm_diphoton_" + (item.first).substr(0,9) + photonIso_forTrigSF;
1450  auto ph_trigSF = m_photonEfficiencySFTool_trigSF_AsymDiphoton.emplace(m_photonEfficiencySFTool_trigSF_AsymDiphoton.end(), "AsgPhotonEfficiencyCorrectionTool/"+toolName);
1451  ATH_CHECK( ph_trigSF->setProperty("MapFilePath", "PhotonEfficiencyCorrection/2015_2018/rel21.2/Summer2020_Rec_v1/map3.txt") );
1452  ATH_CHECK( ph_trigSF->setProperty("IsoKey", photonIso_forTrigSF) );
1453  ATH_CHECK( ph_trigSF->setProperty("TriggerKey", item.second) );
1454  ATH_CHECK( ph_trigSF->setProperty("ForceDataType", 1) ); // Set DataType: 1 for FullSim and 3 for AFII
1455  ATH_CHECK( ph_trigSF->setProperty("OutputLevel", this->msg().level()) );
1456  ATH_CHECK( ph_trigSF->initialize() );
1457  m_photonTrigSFTools.push_back(ph_trigSF->getHandle());
1458  #ifndef XAOD_STANDALONE
1459  m_legsPerTool_ph[toolName] = item.first;
1460  #else
1461  m_legsPerTool_ph["ToolSvc."+toolName] = item.first;
1462  #endif
1463 
1464  toolName = "AsgPhotonEfficiencyCorrectionTool_trigEff_asymm_diphoton_" + (item.first).substr(0,9) + photonIso_forTrigSF;
1465  auto ph_trigEff = m_photonEfficiencySFTool_trigEff_AsymDiphoton.emplace(m_photonEfficiencySFTool_trigEff_AsymDiphoton.end(), "AsgPhotonEfficiencyCorrectionTool/"+toolName);
1466  ATH_CHECK( ph_trigEff->setProperty("MapFilePath", "PhotonEfficiencyCorrection/2015_2018/rel21.2/Summer2020_Rec_v1/map3.txt") );
1467  ATH_CHECK( ph_trigEff->setProperty("IsoKey", photonIso_forTrigSF) );
1468  ATH_CHECK( ph_trigEff->setProperty("TriggerKey", "Eff_"+item.second) );
1469  ATH_CHECK( ph_trigEff->setProperty("ForceDataType", 1) ); // Set DataType: 1 for FullSim and 3 for AFII
1470  ATH_CHECK( ph_trigEff->setProperty("OutputLevel", this->msg().level()) );
1471  ATH_CHECK( ph_trigEff->initialize() );
1472  m_photonTrigEffTools.push_back(ph_trigEff->getHandle());
1473  #ifndef XAOD_STANDALONE
1474  m_legsPerTool_ph[toolName] = item.first;
1475  #else
1476  m_legsPerTool_ph["ToolSvc."+toolName] = item.first;
1477  #endif
1478 
1479  }
1480  }
1481  }
1482 
1483  }
1484  if (m_slices["ele"] || m_slices["pho"]) {
1486  // Initialize the EgammaAmbiguityTool
1487 
1489  m_egammaAmbiguityTool.setTypeAndName("EGammaAmbiguityTool/EGammaAmbiguityTool");
1490  ATH_CHECK( m_egammaAmbiguityTool.setProperty("OutputLevel", this->msg().level()) );
1493  }
1494 
1495 
1496  if (m_slices["ele"]) {
1497  //disable ///////////////////////////////////////////////////////////////////////////////////////////
1498  //disable // Initialize the AsgElectronChargeIDSelector
1499 
1500  //disable if (!m_elecChargeIDSelectorTool.isUserConfigured()) {
1501 
1502  //disable // For the selector, can use the nice function
1503  //disable std::string eleId = EG_WP(m_eleId);
1504  //disable m_elecChargeIDSelectorTool.setTypeAndName("AsgElectronChargeIDSelectorTool/ElectronChargeIDSelectorTool_"+eleId);
1505  //disable //default cut value for https://twiki.cern.ch/twiki/bin/view/AtlasProtected/ElectronChargeFlipTaggerTool
1506  //disable float BDTcut = -0.337671; // Loose 97%
1507  //disable if (m_eleChID_WP != "Loose" && !m_eleChID_WP.empty()) {
1508  //disable ATH_MSG_ERROR("Only Loose WP is supported in R21. Invalid ChargeIDSelector WP selected : " << m_eleChID_WP);
1509  //disable return StatusCode::FAILURE;
1510  //disable }
1511 
1512  //disable ATH_CHECK( m_elecChargeIDSelectorTool.setProperty("TrainingFile", "ElectronPhotonSelectorTools/ChargeID/ECIDS_20180731rel21Summer2018.root"));
1513  //disable ATH_CHECK( m_elecChargeIDSelectorTool.setProperty("CutOnBDT", BDTcut));
1514  //disable ATH_CHECK( m_elecChargeIDSelectorTool.setProperty("OutputLevel", this->msg().level()) );
1515  //disable ATH_CHECK( m_elecChargeIDSelectorTool.retrieve() );
1516  //disable } else ATH_CHECK( m_elecChargeIDSelectorTool.retrieve() );
1517 
1518 
1520  // Initialise egamma calibration tool
1521 
1523  m_egammaCalibTool.setTypeAndName("CP::EgammaCalibrationAndSmearingTool/EgammaCalibrationAndSmearingTool");
1524  ATH_MSG_DEBUG( "Initialising EgcalibTool " );
1525  ATH_CHECK( m_egammaCalibTool.setProperty("ESModel", m_isRun3 ? "es2022_R22_PRE" : "es2023_R22_Run2_v1") );
1526  ATH_CHECK( m_egammaCalibTool.setProperty("decorrelationModel", "1NP_v1") );
1527  // allows to bypass (intended) abort from of egamma calibration tool when configured for fastSim
1528  if (m_eleForceFullSimCalib) {
1529  ATH_MSG_WARNING( "Forcing EgcalibTool to use calibrations for full simulation" );
1530  ATH_CHECK( m_egammaCalibTool.setProperty("useFastSim", false) );
1531  }
1532  else {
1533  ATH_MSG_INFO("is Fast Sim:" << isAtlfast());
1534  ATH_CHECK( m_egammaCalibTool.setProperty("useFastSim", isAtlfast() ? 1 : 0) );
1535  }
1536  ATH_CHECK( m_egammaCalibTool.setProperty("OutputLevel", this->msg().level()) );
1538  } else ATH_CHECK( m_egammaCalibTool.retrieve() );
1539  }
1540 
1541 
1542  if (m_slices["tau"]) {
1544 
1546  // Initialise path to tau config file and config reader
1547 
1548  std::string inputfile = "";
1549  if (!m_tauConfigPath.empty() && (m_tauConfigPath!="default")) inputfile = m_tauConfigPath;
1550  else if (m_tauId == "rnn001") inputfile = "SUSYTools/tau_selection_rnn001.conf";
1551  else if (m_tauId == "VeryLoose") inputfile = "SUSYTools/tau_selection_veryloose.conf";
1552  else if (m_tauId == "Loose") inputfile = "SUSYTools/tau_selection_loose.conf";
1553  else if (m_tauId == "Medium") inputfile = "SUSYTools/tau_selection_medium.conf";
1554  else if (m_tauId == "Tight") inputfile = "SUSYTools/tau_selection_tight.conf";
1555  else {
1556  ATH_MSG_ERROR("Invalid tau ID selected: " << m_tauId);
1557  return StatusCode::FAILURE;
1558  }
1559 
1560  // Read in the config file so we can retrieve the fields later when configuring the efficiency tools
1561  if ( m_tauConfigReader.ReadFile( PathResolverFindCalibFile(inputfile).c_str(), EEnvLevel(0) ) ) {
1562  ATH_MSG_ERROR( "Error while reading tau config file : " << inputfile );
1563  return StatusCode::FAILURE;
1564  }
1565  else ATH_MSG_DEBUG( "Successfully read tau config file : " << inputfile );
1566 
1567 
1569  // Initialise tau selection tools
1570 
1571  if (!m_tauSelTool.isUserConfigured()) {
1572  toolName = "TauSelectionTool_" + m_tauId;
1573  m_tauSelTool.setTypeAndName("TauAnalysisTools::TauSelectionTool/"+toolName);
1574  ATH_CHECK( m_tauSelTool.setProperty("ConfigPath", inputfile) );
1575  ATH_CHECK( m_tauSelTool.setProperty("OutputLevel", this->msg().level()) );
1577  } else ATH_CHECK( m_tauSelTool.retrieve() );
1578 
1579 
1581  std::string inputfile = "";
1583  else if (m_tauIdBaseline == "rnn001") inputfile = "SUSYTools/tau_selection_rnn001.conf";
1584  else if (m_tauIdBaseline == "VeryLoose") inputfile = "SUSYTools/tau_selection_veryloose.conf";
1585  else if (m_tauIdBaseline == "Loose") inputfile = "SUSYTools/tau_selection_loose.conf";
1586  else if (m_tauIdBaseline == "Medium") inputfile = "SUSYTools/tau_selection_medium.conf";
1587  else if (m_tauIdBaseline == "Tight") inputfile = "SUSYTools/tau_selection_tight.conf";
1588  else {
1589  ATH_MSG_ERROR("Invalid baseline tau ID selected: " << m_tauIdBaseline);
1590  return StatusCode::FAILURE;
1591  }
1592  toolName = "TauSelectionToolBaseline_" + m_tauIdBaseline;
1593  m_tauSelToolBaseline.setTypeAndName("TauAnalysisTools::TauSelectionTool/"+toolName);
1595 
1596  ATH_CHECK( m_tauSelToolBaseline.setProperty("OutputLevel", this->msg().level()) );
1599 
1600 
1602  // Initialise tau efficiency tool
1603 
1604  if (!m_tauEffTool.isUserConfigured() && !isData()) {
1605  toolName = "TauEffTool_" + m_tauId;
1606  m_tauEffTool.setTypeAndName("TauAnalysisTools::TauEfficiencyCorrectionsTool/"+toolName);
1607  ATH_CHECK( m_tauEffTool.setProperty("PileupReweightingTool",m_prwTool.getHandle()) );
1608 
1609  std::vector<int> correction_types;
1610  // Read out the tau ID from the config file and map into the enum from tau CP
1611  std::string jetIDWP = m_tauConfigReader.GetValue("JetIDWP" ,"");
1612  ANA_MSG_DEBUG( "Found JetIDWP in tau config file : " << jetIDWP );
1613  int jet_id_lvl;
1614  if (jetIDWP == "JETIDNONE") jet_id_lvl = (int)TauAnalysisTools::JetID::JETIDNONE;
1615  else if (jetIDWP == "JETIDRNNVERYLOOSE") jet_id_lvl = (int)TauAnalysisTools::JetID::JETIDRNNVERYLOOSE;
1616  else if (jetIDWP == "JETIDRNNLOOSE") jet_id_lvl = (int)TauAnalysisTools::JetID::JETIDRNNLOOSE;
1617  else if (jetIDWP == "JETIDRNNMEDIUM") jet_id_lvl = (int)TauAnalysisTools::JetID::JETIDRNNMEDIUM;
1618  else if (jetIDWP == "JETIDRNNTIGHT") jet_id_lvl = (int)TauAnalysisTools::JetID::JETIDRNNTIGHT;
1619  else {
1620  ATH_MSG_ERROR("Invalid Tau ID in tau config file " << jetIDWP);
1621  return StatusCode::FAILURE;
1622  }
1623  // Add retrieval of reco and ID SFs
1624  correction_types.insert(correction_types.end(), {TauAnalysisTools::EfficiencyCorrectionType::SFRecoHadTau,
1625  TauAnalysisTools::EfficiencyCorrectionType::SFJetIDHadTau});
1626 
1627  // Read out the (optional) Ele OR from the config file and map into the enum from tau CP
1628  std::string eleIDWP = m_tauConfigReader.GetValue("EleIDWP" ,"");
1629  ANA_MSG_DEBUG( "Found EleIDWP in tau config file : " << eleIDWP );
1630  int ele_id_lvl = -1;
1631  if (eleIDWP == "ELEIDRNNLOOSE") ele_id_lvl = (int)TauAnalysisTools::EleID::ELEIDRNNLOOSE;
1632  else if (eleIDWP == "ELEIDRNNMEDIUM") ele_id_lvl = (int)TauAnalysisTools::EleID::ELEIDRNNMEDIUM;
1633  else if (eleIDWP == "ELEIDRNNTIGHT") ele_id_lvl = (int)TauAnalysisTools::EleID::ELEIDRNNTIGHT;
1634  else {
1635  ATH_MSG_INFO("No or invalid Ele OR in tau config file " << eleIDWP << " will not apply SFs for electro veto" );
1636  }
1637  // Add retrieval of electron veto SFs if its applied
1638  if (ele_id_lvl != -1 )
1639  correction_types.insert(correction_types.end(), {TauAnalysisTools::EfficiencyCorrectionType::SFEleIDHadTau,
1640  TauAnalysisTools::EfficiencyCorrectionType::SFEleIDElectron});
1641 
1642  ATH_CHECK( m_tauEffTool.setProperty("JetIDLevel", jet_id_lvl) );
1643  ATH_CHECK( m_tauEffTool.setProperty("EleIDLevel", ele_id_lvl) );
1644  ATH_CHECK( m_tauEffTool.setProperty("EfficiencyCorrectionTypes", correction_types) );
1645  ATH_CHECK( m_tauEffTool.setProperty("OutputLevel", this->msg().level()) );
1646  ATH_CHECK( m_tauEffTool.setProperty("useFastSim", isAtlfast()) );
1649 
1650 
1652  // Initialise tau trigger efficiency tool(s)
1653 
1654  if (!isData()) {
1656  if (m_tauId == "rnn001") iTauID = (int) TauAnalysisTools::JETIDNONE;
1657  else if (m_tauId == "VeryLoose") iTauID = (int) TauAnalysisTools::JETIDRNNVERYLOOSE;
1658  else if (m_tauId == "Loose") iTauID = (int) TauAnalysisTools::JETIDRNNLOOSE;
1659  else if (m_tauId == "Medium") iTauID = (int) TauAnalysisTools::JETIDRNNMEDIUM;
1660  else if (m_tauId == "Tight") iTauID = (int) TauAnalysisTools::JETIDRNNTIGHT;
1661  else {
1662  ATH_MSG_ERROR("Invalid tau ID selected: " << m_tauId);
1663  return StatusCode::FAILURE;
1664  }
1665 
1666  // map format: SF file name, corresponding single-tau leg (comma-separated in case of OR)
1667  m_tau_trig_support = {
1668  {"HLT_tau25_medium1_tracktwo", "HLT_tau25_medium1_tracktwo"},
1669  {"HLT_tau35_medium1_tracktwo", "HLT_tau35_medium1_tracktwo"},
1670  {"HLT_tau50L1TAU12_medium1_tracktwo", "HLT_tau50_medium1_tracktwo_L1TAU12"},
1671  {"HLT_tau60_medium1_tracktwo", "HLT_tau60_medium1_tracktwo"},
1672  {"HLT_tau80L1TAU60_medium1_tracktwo", "HLT_tau80_medium1_tracktwo_L1TAU60"},
1673  {"HLT_tau125_medium1_tracktwo", "HLT_tau125_medium1_tracktwo"},
1674  {"HLT_tau160_medium1_tracktwo", "HLT_tau160_medium1_tracktwo"},
1675  {"HLT_tau160L1TAU100_medium1_tracktwo", "HLT_tau160_medium1_tracktwo_L1TAU100"},
1676  // whole 2018 data taking period
1677  {"HLT_tau25_medium1_tracktwoEF", "HLT_tau25_medium1_tracktwoEF"},
1678  {"HLT_tau35L1TAU12IM_medium1_tracktwoEF", "HLT_tau35_medium1_tracktwoEF_L1TAU12IM"},
1679  {"HLT_tau35_medium1_tracktwoEF", "HLT_tau35_medium1_tracktwoEF"},
1680  {"HLT_tau60_medium1_tracktwoEF", "HLT_tau60_medium1_tracktwoEF"},
1681  {"HLT_tau80L1TAU60_medium1_tracktwoEF", "HLT_tau80_medium1_tracktwoEF_L1TAU60"},
1682  {"HLT_tau160L1TAU100_medium1_tracktwoEF", "HLT_tau160_medium1_tracktwoEF_L1TAU100"},
1683  // 2018 data after TS1, run >= 355261
1684  {"HLT_tau25_medium1_tracktwoEF_OR_mediumRNN_tracktwoMVA", "HLT_tau25_medium1_tracktwoEF,HLT_tau25_mediumRNN_tracktwoMVA"},
1685  {"HLT_tau35L1TAU12IM_medium1_tracktwoEF_OR_mediumRNN_tracktwoMVA", "HLT_tau35_medium1_tracktwoEF_L1TAU12IM,HLT_tau35_mediumRNN_tracktwoMVA_L1TAU12IM"},
1686  {"HLT_tau35_medium1_tracktwoEF_OR_mediumRNN_tracktwoMVA", "HLT_tau35_medium1_tracktwoEF,HLT_tau35_mediumRNN_tracktwoMVA"},
1687  {"HLT_tau60_medium1_tracktwoEF_OR_mediumRNN_tracktwoMVA", "HLT_tau60_medium1_tracktwoEF,HLT_tau60_mediumRNN_tracktwoMVA"},
1688  {"HLT_tau80L1TAU60_medium1_tracktwoEF_OR_mediumRNN_tracktwoMVA", "HLT_tau80_medium1_tracktwoEF_L1TAU60,HLT_tau80_mediumRNN_tracktwoMVA_L1TAU60"},
1689  {"HLT_tau160L1TAU100_medium1_tracktwoEF_OR_mediumRNN_tracktwoMVA", "HLT_tau160_medium1_tracktwoEF_L1TAU100,HLT_tau160_mediumRNN_tracktwoMVA_L1TAU100"}
1690  };
1691 
1692  for(auto const& trigger : m_tau_trig_support) {
1693  toolName = "TauTrigEffTool_" + m_tauId + "_" + trigger.first;
1694  auto tau_trigSF = m_tauTrigEffTool.emplace(m_tauTrigEffTool.end(), "TauAnalysisTools::TauEfficiencyCorrectionsTool/"+toolName);
1695  ATH_CHECK( tau_trigSF->setProperty("EfficiencyCorrectionTypes", std::vector<int>({TauAnalysisTools::SFTriggerHadTau})) );
1696  ATH_CHECK( tau_trigSF->setProperty("TriggerName", trigger.first) );
1697  ATH_CHECK( tau_trigSF->setProperty("JetIDLevel", iTauID) );
1698  ATH_CHECK( tau_trigSF->setProperty("PileupReweightingTool", m_prwTool.getHandle()) );
1699  ATH_CHECK( tau_trigSF->setProperty("OutputLevel", this->msg().level()) );
1700  ATH_CHECK( tau_trigSF->setProperty("useFastSim", isAtlfast()) );
1701  ATH_CHECK( tau_trigSF->initialize() );
1702  }
1703  }
1704 
1705 
1707  // Initialise tau smearing tool
1708 
1710  m_tauSmearingTool.setTypeAndName("TauAnalysisTools::TauSmearingTool/TauSmearingTool");
1712  if (m_isRun3){ ATH_CHECK( m_tauSmearingTool.setProperty("Campaign", "mc21") );}
1713  else { ATH_CHECK( m_tauSmearingTool.setProperty("Campaign", "mc20") );}
1715  ATH_CHECK( m_tauSmearingTool.setProperty("useFastSim", isAtlfast()) );
1716  ATH_CHECK( m_tauSmearingTool.setProperty("OutputLevel", this->msg().level()) );
1718  } else ATH_CHECK( m_tauSmearingTool.retrieve() );
1719 
1720 
1722  // Initialise tau truth matching tool
1723 
1725  m_tauTruthMatch.setTypeAndName("TauAnalysisTools::TauTruthMatchingTool/TauTruthMatch");
1726  ATH_CHECK( m_tauTruthMatch.setProperty("TruthJetContainerName", m_defaultTruthJets ) );
1727  ATH_CHECK( m_tauTruthMatch.setProperty("OutputLevel", this->msg().level()) );
1730 
1731 
1732  }
1733 
1734 
1735  if (m_slices["bjet"]) {
1737  // Initialise B-tagging tools
1738 
1739  // btagSelectionTool
1740  std::string jetcollBTag = jetcoll;
1741  if (jetcoll == "AntiKt4LCTopoJets") {
1742  ATH_MSG_WARNING(" *** HACK *** Treating LCTopoJets jets as EMTopo -- use at your own risk!");
1743  jetcollBTag = "AntiKt4EMTopoJets";
1744  }
1745 
1746  // print a warning if there is indication that the user supplied a CDI file not matching to the sample being processed
1747  // see --> https://twiki.cern.ch/twiki/bin/view/AtlasProtected/BTagRel22HighLevelSummary
1748  if( (m_bTaggingCalibrationFilePath.find(!m_isRun3 ? "MC20" : "MC23") == std::string::npos) && (m_bTaggingCalibrationFilePath.find(!m_isRun3 ? "MC20" : "MC21") == std::string::npos) ) {
1749  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"));
1750  }
1751 
1752  if (m_useBtagging && !m_btagSelTool.isUserConfigured() && !m_BtagWP.empty()) {
1753  if (jetcollBTag.find("AntiKt4EMTopoJets") == std::string::npos && jetcollBTag.find("AntiKt4EMPFlowJets")==std::string::npos) {
1754  ATH_MSG_WARNING("** Only AntiKt4EMTopoJets and AntiKt4EMPFlowJets are supported with FTAG scale factors!");
1755  return StatusCode::FAILURE;
1756  }
1757 
1758  toolName = "BTagSel_" + jetcollBTag + m_BtagTagger + m_BtagWP;
1759 
1760  m_btagSelTool.setTypeAndName("BTaggingSelectionTool/"+toolName);
1761  ATH_CHECK( m_btagSelTool.setProperty("TaggerName", m_BtagTagger ) );
1762  ATH_CHECK( m_btagSelTool.setProperty("OperatingPoint", m_BtagWP ) );
1763  ATH_CHECK( m_btagSelTool.setProperty("JetAuthor", jetcollBTag ) );
1765  ATH_CHECK( m_btagSelTool.setProperty("FlvTagCutDefinitionsFileName", m_bTaggingCalibrationFilePath) );
1766  ATH_CHECK( m_btagSelTool.setProperty("OutputLevel", this->msg().level()) );
1769 
1770 
1772  if (jetcoll != "AntiKt4EMTopoJets" && jetcoll != "AntiKt4EMPFlowJets") {
1773  ATH_MSG_WARNING("** Only AntiKt4EMTopoJets and AntiKt4EMPFlowJets are supported with FTAG scale factors!");
1774  return StatusCode::FAILURE;
1775  }
1776 
1777  toolName = "BTagSelOR_" + jetcollBTag + m_orBtagWP;
1778  m_btagSelTool_OR.setTypeAndName("BTaggingSelectionTool/"+toolName);
1780  ATH_CHECK( m_btagSelTool_OR.setProperty("OperatingPoint", m_orBtagWP ) );
1781  ATH_CHECK( m_btagSelTool_OR.setProperty("JetAuthor", jetcollBTag ) );
1783  ATH_CHECK( m_btagSelTool_OR.setProperty("FlvTagCutDefinitionsFileName", m_bTaggingCalibrationFilePath) );
1784  ATH_CHECK( m_btagSelTool_OR.setProperty("OutputLevel", this->msg().level()) );
1787 
1788 
1789  std::string trkjetcoll = m_defaultTrackJets;
1790  const std::string& BTagColl_TrkJet = trkjetcoll;
1791  if (m_slices["tjet"]) {
1792  if ( m_useBtagging_trkJet && m_defaultTrackJets.empty()) {
1793  m_useBtagging_trkJet = false;
1794  ATH_MSG_INFO("TrackJet collection set to None: disabling btagging for TrackJets.");
1795  }
1796 
1798  if (trkjetcoll.find("AntiKt2PV0TrackJets")==std::string::npos && trkjetcoll.find("AntiKtVR30Rmax4Rmin02TrackJets")==std::string::npos) {
1799  ATH_MSG_WARNING("** Only AntiKt2PV0TrackJets and AntiKtVR30Rmax4Rmin02TrackJets are supported with FTAG scale factors!");
1800  return StatusCode::FAILURE;
1801  }
1802 
1803  toolName = "BTagSel_" + trkjetcoll + m_BtagTagger_trkJet + m_BtagWP_trkJet;
1804 
1805  m_btagSelTool_trkJet.setTypeAndName("BTaggingSelectionTool/"+toolName);
1809  ATH_CHECK( m_btagSelTool_trkJet.setProperty("JetAuthor", BTagColl_TrkJet ) );
1811  ATH_CHECK( m_btagSelTool_trkJet.setProperty("FlvTagCutDefinitionsFileName", m_bTaggingCalibrationFilePath) );
1812  ATH_CHECK( m_btagSelTool_trkJet.setProperty("OutputLevel", this->msg().level()) );
1815  }
1816 
1817  // Set MCshowerType for FTAG MC/MC SFs
1818  // https://twiki.cern.ch/twiki/bin/view/AtlasProtected/BTagCalibrationRecommendationsRelease21#MC_MC_Scale_Factors_for_Analysis
1819  std::string MCshowerID;
1820  if(m_showerType==-1){
1821  ATH_MSG_ERROR( "Error! m_showerType=-1, which is an error case for FTAG MC/MC SFs." );
1822  return StatusCode::FAILURE;
1823  }
1824  if(m_BtagTagger=="DL1dv01"){
1825  if(!m_isRun3){
1826  MCshowerID= "default"; // Powheg+Pythia8 (410470) - PhPy8EG_A14
1827  if (m_showerType == 1) MCshowerID = "411233"; // PowhegHerwig7
1828  else if (m_showerType == 2) MCshowerID = "600666"; // PhH7EG_H7UE - 601414
1829  else if (m_showerType == 3) MCshowerID = "410250"; // Sherpa_221
1830  else if (m_showerType == 4) MCshowerID = "700122"; // Sh_2210
1831  else if (m_showerType == 5) MCshowerID = "700122"; // Sh_2211
1832  else if (m_showerType == 6) MCshowerID = "700660"; // Sh_2212 - 700660
1833  else if (m_showerType == 7) MCshowerID = "410464"; // aMcAtNloPy8
1834  else if (m_showerType == 8) MCshowerID = "412116"; // aMcAtNloHerwig7
1835  else if (m_showerType != 0){
1836  ATH_MSG_WARNING("Unknown ShowerID detected! Using default FTAG MC-MC SFs (Powheg+Pythia8). Please check if these are applicable for this sample!");
1837  }
1838  }
1839  else{
1840  MCshowerID= "default"; // Powheg+Pythia8 (601229) - PhPy8EG_A14
1841  if (m_showerType == 2) MCshowerID = "601414"; // POWHEG+Herwig721 - PhH7EG_A14
1842  else if (m_showerType == 6) MCshowerID = "700660"; // Sherpa 2.2.12 - Sh_2212
1843  else if (m_showerType != 0){
1844  ATH_MSG_WARNING("Unknown ShowerID detected! Using default FTAG MC-MC SFs (Powheg+Pythia8). Please check if these are applicable for this sample!");
1845  }
1846  }
1847  } else if (m_BtagTagger=="GN2v01"){
1848  if(!m_isRun3){
1849  MCshowerID= "default"; // PowhegPythia8EvtGen (410470)
1850  if (m_showerType == 1) MCshowerID = "410480"; // PYTHIA8EVTGEN517 (410480)
1851  else if (m_showerType == 2) MCshowerID = "411233"; // POWHEGHERWIG7 - 411233
1852  else if (m_showerType == 3) MCshowerID = "600666"; // PhH7EG_H7UE - 600666
1853  else if (m_showerType == 4) MCshowerID = "700660"; // Sh_2210 FTAGAnalysisConfig uses this, but docs say only 11-16 can be used
1854  else if (m_showerType == 5) MCshowerID = "700660"; // Sh_2211
1855  else if (m_showerType == 6) MCshowerID = "700660"; // Sh_2212
1856  else if (m_showerType == 7) MCshowerID = "700660"; // Sh_2214
1857  else if (m_showerType == 8) {
1858  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!");
1859  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.
1860  }
1861  else if (m_showerType != 0){
1862  ATH_MSG_WARNING("Unknown ShowerID detected! Using default FTAG MC-MC SFs (Powheg+Pythia8). Please check if these are applicable for this sample!");
1863  }
1864  }
1865  else {
1866  MCshowerID= "default"; // PowhegPythia8EvtGen (601229)
1867  if (m_showerType == 1) MCshowerID = "601398"; // PYTHIA8EVTGEN517 (601398)
1868  else if (m_showerType == 3) MCshowerID = "601414"; // PhH7EG_H7UE - 601414
1869  else if (m_showerType == 5) MCshowerID = "700808"; // Sh_2211
1870  else if (m_showerType == 6) MCshowerID = "700808"; // Sh_2212
1871  else if (m_showerType == 7) MCshowerID = "700808"; // Sh_2214
1872  else if (m_showerType == 8) {
1873  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!");
1874  MCshowerID = "700660"; // Unknown Sherpa Version
1875  }
1876  else if (m_showerType != 0){
1877  ATH_MSG_WARNING("Unknown ShowerID detected! Using default FTAG MC-MC SFs (Powheg+Pythia8). Please check if these are applicable for this sample!");
1878  }
1879  }
1880  } else {
1881  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!");
1882  MCshowerID= "default";
1883  }
1884 
1885  // btagEfficiencyTool
1886  if (m_useBtagging && !m_btagEffTool.isUserConfigured() && !m_BtagWP.empty()) {
1887  if (jetcoll != "AntiKt4EMTopoJets" && jetcoll != "AntiKt4EMPFlowJets") {
1888  ATH_MSG_WARNING("** Only AntiKt4EMTopoJets and AntiKt4EMPFlowJets are supported with FTAG scale factors!");
1889  return StatusCode::FAILURE;
1890  }
1891 
1892  toolName = "BTagSF_" + jetcollBTag + m_BtagTagger + m_BtagWP;
1893  m_btagEffTool.setTypeAndName("BTaggingEfficiencyTool/"+toolName);
1894  ATH_CHECK( m_btagEffTool.setProperty("TaggerName", m_BtagTagger ) );
1896  ATH_CHECK( m_btagEffTool.setProperty("OperatingPoint", m_BtagWP ) );
1897  ATH_CHECK( m_btagEffTool.setProperty("JetAuthor", jetcollBTag ) );
1899  ATH_CHECK( m_btagEffTool.setProperty("SystematicsStrategy", m_BtagSystStrategy ) );
1900  ATH_CHECK( m_btagEffTool.setProperty("EfficiencyBCalibrations", MCshowerID ));
1901  ATH_CHECK( m_btagEffTool.setProperty("EfficiencyCCalibrations", MCshowerID ));
1902  ATH_CHECK( m_btagEffTool.setProperty("EfficiencyTCalibrations", MCshowerID ));
1903  ATH_CHECK( m_btagEffTool.setProperty("EfficiencyLightCalibrations", MCshowerID ));
1904  ATH_CHECK( m_btagEffTool.setProperty("EigenvectorReductionB", m_EigenvectorReductionB ));
1905  ATH_CHECK( m_btagEffTool.setProperty("EigenvectorReductionC", m_EigenvectorReductionC ));
1906  ATH_CHECK( m_btagEffTool.setProperty("EigenvectorReductionLight", m_EigenvectorReductionLight ));
1907  ATH_CHECK( m_btagEffTool.setProperty("OutputLevel", this->msg().level()) );
1909  } else ATH_CHECK( m_btagEffTool.retrieve() );
1910 
1911 
1912  if (m_slices["tjet"]) {
1914  if (trkjetcoll.find("AntiKt2PV0TrackJets")==std::string::npos && trkjetcoll.find("AntiKtVR30Rmax4Rmin02TrackJets")==std::string::npos) {
1915  ATH_MSG_WARNING("** Only AntiKt2PV0TrackJets and AntiKtVR30Rmax4Rmin02TrackJets are supported with FTAG scale factors!");
1916  return StatusCode::FAILURE;
1917  }
1918 
1919  toolName = "BTagSF_" + trkjetcoll;
1920  m_btagEffTool_trkJet.setTypeAndName("BTaggingEfficiencyTool/"+toolName);
1924  ATH_CHECK( m_btagEffTool_trkJet.setProperty("JetAuthor", BTagColl_TrkJet ) );
1926  ATH_CHECK( m_btagEffTool_trkJet.setProperty("SystematicsStrategy", m_BtagSystStrategy ) );
1927  ATH_CHECK( m_btagEffTool_trkJet.setProperty("EfficiencyBCalibrations", MCshowerID ));
1928  ATH_CHECK( m_btagEffTool_trkJet.setProperty("EfficiencyCCalibrations", MCshowerID ));
1929  ATH_CHECK( m_btagEffTool_trkJet.setProperty("EfficiencyTCalibrations", MCshowerID ));
1930  ATH_CHECK( m_btagEffTool_trkJet.setProperty("EfficiencyLightCalibrations", MCshowerID ));
1933  ATH_CHECK( m_btagEffTool_trkJet.setProperty("EigenvectorReductionLight", m_EigenvectorReductionLight ));
1934  ATH_CHECK( m_btagEffTool_trkJet.setProperty("OutputLevel", this->msg().level()) );
1937  }
1938  }
1939 
1940 
1941  if (m_slices["met"]) {
1943  // Initialise MET tools
1944 
1945  if (!m_metMaker.isUserConfigured()) {
1946  toolName = m_doFwdJVT ? m_metJetSelection+"_fJVT" : m_metJetSelection+"_NOfJVT";
1947  m_metMaker.setTypeAndName("met::METMaker/METMaker_ST_"+toolName);
1948 
1950  ATH_CHECK( m_metMaker.setProperty("DoSetMuonJetEMScale", m_metDoSetMuonJetEMScale) );
1951  ATH_CHECK( m_metMaker.setProperty("DoRemoveMuonJets", m_metDoRemoveMuonJets) );
1952  ATH_CHECK( m_metMaker.setProperty("UseGhostMuons", m_metUseGhostMuons) );
1953  ATH_CHECK( m_metMaker.setProperty("DoMuonEloss", m_metDoMuonEloss) );
1954  ATH_CHECK( m_metMaker.setProperty("GreedyPhotons", m_metGreedyPhotons) );
1955  ATH_CHECK( m_metMaker.setProperty("VeryGreedyPhotons", m_metVeryGreedyPhotons) );
1956 
1957  // set the jet selection if default empty string is overridden through config file
1958  if (m_metJetSelection.size()) {
1959  ATH_CHECK( m_metMaker.setProperty("JetSelection", m_metJetSelection) );
1960  }
1962  ATH_CHECK( m_metMaker.setProperty("DoPFlow", true) );
1963  }
1964 
1965  ATH_CHECK( m_metMaker.setProperty("OutputLevel", this->msg().level()) );
1967  } else ATH_CHECK( m_metMaker.retrieve() );
1968 
1969 
1971  m_metSystTool.setTypeAndName("met::METSystematicsTool/METSystTool");
1973 
1974  if (m_trkMETsyst && m_caloMETsyst){
1975  ATH_MSG_ERROR( "Can only have CST *or* TST configured for MET maker. Please unset either METDoCaloSyst or METDoTrkSyst in your config file" );
1976  return StatusCode::FAILURE;
1977  }
1978 
1979  if (m_trkMETsyst) {
1980  ATH_CHECK( m_metSystTool.setProperty("ConfigSoftCaloFile", "") );
1981  ATH_CHECK( m_metSystTool.setProperty("ConfigSoftTrkFile", "TrackSoftTerms-pflow_Dec24.config") );
1982  }
1983 
1984  if (m_caloMETsyst) {
1985  ATH_MSG_WARNING( "CST is no longer recommended by Jet/MET group");
1986  ATH_CHECK( m_metSystTool.setProperty("ConfigSoftTrkFile", "") );
1987  }
1988 
1989  if (m_trkJetsyst) {
1990  ATH_CHECK( m_metSystTool.setProperty("ConfigJetTrkFile", "JetTrackSyst.config") );
1991  }
1992 
1993  ATH_CHECK( m_metSystTool.setProperty("OutputLevel", this->msg().level()) );
1995  } else ATH_CHECK( m_metSystTool.retrieve());
1996 
1997 
1998  if (!m_metSignif.isUserConfigured()) {
1999  // See https://twiki.cern.ch/twiki/bin/view/AtlasProtected/MetSignificance
2000  m_metSignif.setTypeAndName("met::METSignificance/metSignificance_"+jetname);
2001 #ifndef XAOD_STANDALONE // Athena and AthAnalysis; need to take into account that MuonCalibTool is private tool
2006  if(jetname == "AntiKt4EMTopo" || jetname =="AntiKt4EMPFlow"){
2007  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "JetCollection", jetname) );
2008  } else {
2009  ATH_MSG_WARNING("Object-based METSignificance recommendations only exist for EMTopo and PFlow, falling back to AntiKt4EMTopo");
2010  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "JetCollection", "AntiKt4EMTopo") );
2011  }
2012  // setup a dedicated new muon calib tool for passing down to METSignificance
2013  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "MuonCalibTool", "CP::MuonCalibTool/calibTool"));
2014  if (m_isRun3)
2015  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "calibTool.IsRun3Geo", true));
2017  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "calibTool.OutputLevel",this->msg().level()));
2018  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "calibTool.release", "Recs2024_05_06_Run2Run3"));
2019  int IdBaselineInt = m_muIdBaseline;
2020  if (IdBaselineInt == 4)
2021  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "calibTool.do2StationsHighPt", true));
2022  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "calibTool.doExtraSmearing", m_muHighPtExtraSmear));
2023  ATH_CHECK( AAH::setProperty(m_metSignif.getHandle(), "OutputLevel", this->msg().level()));
2024 #else // AnalysisBase; can just pass the muon calib tool configured above
2025  ATH_CHECK( m_metSignif.setProperty("SoftTermParam", m_softTermParam) );
2026  ATH_CHECK( m_metSignif.setProperty("TreatPUJets", m_treatPUJets) );
2027  ATH_CHECK( m_metSignif.setProperty("DoPhiReso", m_doPhiReso) );
2028  ATH_CHECK( m_metSignif.setProperty("IsAFII", isAtlfast()) );
2029  if(jetname == "AntiKt4EMTopo" || jetname =="AntiKt4EMPFlow"){
2030  ATH_CHECK( m_metSignif.setProperty("JetCollection", jetname) );
2031  } else {
2032  ATH_MSG_WARNING("Object-based METSignificance recommendations only exist for EMTopo and PFlow, falling back to AntiKt4EMTopo");
2033  ATH_CHECK( m_metSignif.setProperty("JetCollection", "AntiKt4EMTopo") );
2034  }
2035  // just pass the muon calib tool
2037  ATH_CHECK( m_metSignif.setProperty("OutputLevel", this->msg().level()) );
2038 #endif
2040  } else ATH_CHECK( m_metSignif.retrieve() );
2041  }
2042 
2043 
2045 // Initialise trigger tools
2046 
2048 
2049  // The decision tool
2050  m_trigDecTool.setTypeAndName("Trig::TrigDecisionTool/TrigDecisionTool");
2051  ATH_CHECK( m_trigDecTool.setProperty("TrigDecisionKey", "xTrigDecision") );
2052  if (m_isRun3) {
2053  ATH_CHECK( m_trigDecTool.setProperty("NavigationFormat", "TrigComposite") );
2054  ATH_CHECK( m_trigDecTool.setProperty("HLTSummary", "HLTNav_Summary_DAODSlimmed") );
2055  }
2056  ATH_CHECK( m_trigDecTool.setProperty("OutputLevel", this->msg().level()) );
2057 
2058 #ifndef XAOD_STANDALONE // Athena and AthAnalysis
2059  // Clear the default tool handle to cause a fallback on the config service
2060  ATH_CHECK( m_trigDecTool.setProperty("ConfigTool", ""));
2061 #else // AnalysisBase
2062  m_trigConfTool.setTypeAndName("TrigConf::xAODConfigTool/xAODConfigTool");
2065 #endif
2066 
2068 
2069  } else ATH_CHECK( m_trigDecTool.retrieve() );
2070 
2071  if (m_isRun3) {
2073  m_trigDRScoringTool.setTypeAndName("Trig::DRScoringTool/TrigDRScoringTool");
2074  ATH_CHECK( m_trigDRScoringTool.setProperty("OutputLevel", this->msg().level()) );
2077  }
2078 
2081  m_trigMatchingTool.setTypeAndName("Trig::MatchFromCompositeTool/TrigMatchFromCompositeTool");
2083  ATH_CHECK( m_trigMatchingTool.setProperty("RemapBrokenLinks", true) );
2084  }
2085  else {
2086  if (m_isRun3){
2087  m_trigMatchingTool.setTypeAndName("Trig::R3MatchingTool/TrigR3MatchingTool");
2090  }
2091  else {
2092  m_trigMatchingTool.setTypeAndName("Trig::MatchingTool/TrigMatchingTool");
2094  }
2095  }
2096  ATH_CHECK( m_trigMatchingTool.setProperty("OutputLevel", this->msg().level()) );
2099 
2101 // Initialise trigGlobalEfficiencyCorrection tool
2102 
2104 
2105  std::string no2e17("");
2106  if (m_trig2017combination_diLep.find("||2e17_lhvloose_nod0_L12EM15VHI") != std::string::npos) {
2107  auto pos_2e17 = m_trig2017combination_diLep.find("||2e17_lhvloose_nod0_L12EM15VHI");
2108  no2e17 = m_trig2017combination_diLep.substr(0, pos_2e17) + m_trig2017combination_diLep.substr(pos_2e17+31, m_trig2017combination_diLep.size());
2109  } else if (m_trig2017combination_diLep.find("2e17_lhvloose_nod0_L12EM15VHI||") != std::string::npos) {
2110  auto pos_2e17 = m_trig2017combination_diLep.find("2e17_lhvloose_nod0_L12EM15VHI||");
2111  no2e17 = m_trig2017combination_diLep.substr(0, pos_2e17) + m_trig2017combination_diLep.substr(pos_2e17+31, m_trig2017combination_diLep.size());
2112  } else {
2113  no2e17 = m_trig2017combination_diLep;
2114  }
2115  ATH_MSG_DEBUG( "TrigGlobalEfficiencyCorrectionTool/TrigGlobal_diLep: no2e17 trigger string: " << no2e17 );
2116 
2117  std::map<std::string,std::string> triggers_diLep;
2118  triggers_diLep["2015"] = m_trig2015combination_diLep;
2119  triggers_diLep["2016"] = m_trig2016combination_diLep;
2120  triggers_diLep["324320-326695"] = m_trig2017combination_diLep; // 2017 before accidental prescale of L12EM15VHI
2121  triggers_diLep["326834-328393"] = no2e17; // 2017 during accidental prescale
2122  triggers_diLep["329385-340453"] = m_trig2017combination_diLep; // 2017 after accidental prescale
2123  triggers_diLep["2018"] = m_trig2018combination_diLep;
2124 
2125  m_trigGlobalEffCorrTool_diLep.setTypeAndName("TrigGlobalEfficiencyCorrectionTool/TrigGlobal_diLep");
2127  ATH_CHECK( m_trigGlobalEffCorrTool_diLep.setProperty("ElectronScaleFactorTools", m_elecTrigSFTools) );
2129  ATH_CHECK( m_trigGlobalEffCorrTool_diLep.setProperty("TriggerCombination", triggers_diLep) );
2133  ATH_CHECK( m_trigGlobalEffCorrTool_diLep.setProperty("OutputLevel", this->msg().level()) );
2136 
2137 
2139 
2140  std::string no2e17("");
2141  if (m_trig2017combination_multiLep.find("||2e17_lhvloose_nod0_L12EM15VHI") != std::string::npos) {
2142  auto pos_2e17 = m_trig2017combination_multiLep.find("||2e17_lhvloose_nod0_L12EM15VHI");
2143  no2e17 = m_trig2017combination_multiLep.substr(0, pos_2e17) + m_trig2017combination_multiLep.substr(pos_2e17+31, m_trig2017combination_multiLep.size());
2144  } else if (m_trig2017combination_multiLep.find("2e17_lhvloose_nod0_L12EM15VHI||") != std::string::npos) {
2145  auto pos_2e17 = m_trig2017combination_multiLep.find("2e17_lhvloose_nod0_L12EM15VHI||");
2146  no2e17 = m_trig2017combination_multiLep.substr(0, pos_2e17) + m_trig2017combination_multiLep.substr(pos_2e17+31, m_trig2017combination_multiLep.size());
2147  } else {
2149  }
2150  ATH_MSG_DEBUG( "TrigGlobalEfficiencyCorrectionTool/TrigGlobal_multiLep: no2e17 trigger string: " << no2e17 );
2151 
2152  std::map<std::string,std::string> triggers_multiLep;
2153  triggers_multiLep["2015"] = m_trig2015combination_multiLep;
2154  triggers_multiLep["2016"] = m_trig2016combination_multiLep;
2155  triggers_multiLep["324320-326695"] = m_trig2017combination_multiLep; // 2017 before accidental prescale of L12EM15VHI
2156  triggers_multiLep["326834-328393"] = no2e17; // 2017 during accidental prescale
2157  triggers_multiLep["329385-340453"] = m_trig2017combination_multiLep; // 2017 after accidental prescale
2158  triggers_multiLep["2018"] = m_trig2018combination_multiLep;
2159 
2160  m_trigGlobalEffCorrTool_multiLep.setTypeAndName("TrigGlobalEfficiencyCorrectionTool/TrigGlobal_multiLep");
2164  ATH_CHECK( m_trigGlobalEffCorrTool_multiLep.setProperty("TriggerCombination", triggers_multiLep) );
2168  ATH_CHECK( m_trigGlobalEffCorrTool_multiLep.setProperty("OutputLevel", this->msg().level()) );
2171 
2172 
2174  m_trigGlobalEffCorrTool_diPhoton.setTypeAndName("TrigGlobalEfficiencyCorrectionTool/TrigGlobal_diPhoton");
2183  ATH_CHECK( m_trigGlobalEffCorrTool_diPhoton.setProperty("OutputLevel", this->msg().level()) );
2186 
2187 
2188  if (m_slices["ele"] || m_slices["pho"] || m_slices["mu"]) {
2189  // /////////////////////////////////////////////////////////////////////////////////////////
2190  // Initialise Isolation Correction Tool
2191 
2192  if ( !m_isoCorrTool.isUserConfigured() ) {
2193  m_isoCorrTool.setTypeAndName("CP::IsolationCorrectionTool/IsoCorrTool");
2194  ATH_CHECK( m_isoCorrTool.setProperty( "ToolVer", "REL22") );
2195  ATH_CHECK( m_isoCorrTool.setProperty( "IsMC", !isData()) );
2196  ATH_CHECK( m_isoCorrTool.setProperty( "AFII_corr", isAtlfast()) );
2197  ATH_CHECK( m_isoCorrTool.setProperty( "Apply_SC_leakcorr", false) );
2198  ATH_CHECK( m_isoCorrTool.setProperty( "CorrFile", "IsolationCorrections/v6/isolation_ptcorrections_rel22_mc20.root") );
2199  ATH_CHECK( m_isoCorrTool.setProperty( "OutputLevel", this->msg().level()) );
2201  } else ATH_CHECK( m_isoCorrTool.retrieve() );
2202 
2203 
2204  // /////////////////////////////////////////////////////////////////////////////////////////
2205  // Initialise Isolation Tool
2206  if (!m_isoTool.isUserConfigured()) {
2207  m_isoTool.setTypeAndName("CP::IsolationSelectionTool/IsoTool");
2208  ATH_CHECK( m_isoTool.setProperty("ElectronWP", m_eleIso_WP.empty() ? "Loose_VarRad" : m_eleIso_WP) );
2209  ATH_CHECK( m_isoTool.setProperty("MuonWP", m_muIso_WP.empty() ? "Loose_VarRad" : m_muIso_WP) );
2210  ATH_CHECK( m_isoTool.setProperty("PhotonWP", m_photonIso_WP.empty() ? "FixedCutTight" : m_photonIso_WP ) );
2211  ATH_CHECK( m_isoTool.setProperty("OutputLevel", this->msg().level()) );
2213  } else ATH_CHECK( m_isoTool.retrieve() );
2214 
2215  //disable if (!m_isoToolLowPtPLV.isUserConfigured()) {
2216  //disable m_isoToolLowPtPLV.setTypeAndName("CP::IsolationLowPtPLVTool/IsoToolLowPtPLV");
2217  //disable ATH_CHECK( m_isoToolLowPtPLV.setProperty("OutputLevel", this->msg().level()) );
2218  //disable ATH_CHECK( m_isoToolLowPtPLV.retrieve() );
2219  //disable } else ATH_CHECK( m_isoToolLowPtPLV.retrieve() );
2220 
2221 
2223  m_isoBaselineTool.setTypeAndName("CP::IsolationSelectionTool/IsoBaselineTool");
2224  ATH_CHECK( m_isoBaselineTool.setProperty("ElectronWP", m_eleBaselineIso_WP.empty() ? "Loose_VarRad" : m_eleBaselineIso_WP ) );
2225  ATH_CHECK( m_isoBaselineTool.setProperty("MuonWP", m_muBaselineIso_WP.empty() ? "Loose_VarRad" : m_muBaselineIso_WP ) );
2226  ATH_CHECK( m_isoBaselineTool.setProperty("PhotonWP", m_photonBaselineIso_WP.empty() ? "FixedCutTight" : m_photonBaselineIso_WP ) );
2227  ATH_CHECK( m_isoBaselineTool.setProperty("OutputLevel", this->msg().level()) );
2229  } else ATH_CHECK( m_isoBaselineTool.retrieve() );
2230 
2231 
2233  m_isoHighPtTool.setTypeAndName("CP::IsolationSelectionTool/IsoHighPtTool");
2234  ATH_CHECK( m_isoHighPtTool.setProperty("ElectronWP", m_eleIsoHighPt_WP.empty() ? "Loose_VarRad" : m_eleIsoHighPt_WP) );
2235  ATH_CHECK( m_isoHighPtTool.setProperty("MuonWP", m_muIsoHighPt_WP.empty() ? "Loose_VarRad" : m_muIsoHighPt_WP ) );
2236  ATH_CHECK( m_isoHighPtTool.setProperty("PhotonWP", m_photonIso_WP.empty() ? "FixedCutTight" : m_photonIso_WP ) );
2237  ATH_CHECK( m_isoHighPtTool.setProperty("OutputLevel", this->msg().level()) );
2239  } else ATH_CHECK( m_isoHighPtTool.retrieve() );
2240 
2241 
2242  // /////////////////////////////////////////////////////////////////////////////////////////
2243  // Initialise IsolationCloseByCorrectionTool Tool
2245  m_isoCloseByTool.setTypeAndName("CP::IsolationCloseByCorrectionTool/IsoCloseByTool");
2246  // Actually we could debate about what is the proper tool to choose if the users have different baseline & signal islation WP's
2248  ATH_CHECK( m_isoCloseByTool.setProperty("PassoverlapDecorator", m_IsoCloseByORpassLabel) );
2249  ATH_CHECK( m_isoCloseByTool.setProperty("SelectionDecorator", m_useSigLepForIsoCloseByOR ? "signal" : "baseline") );
2250  // Make this propery configurable as well?
2251  ATH_CHECK( m_isoCloseByTool.setProperty("BackupPrefix", "ORIG") );
2252  // The isolation selection decorator is updated as well by the tool
2253  ATH_CHECK( m_isoCloseByTool.setProperty("IsolationSelectionDecorator", "isol") );
2254 
2255  ATH_CHECK( m_isoCloseByTool.setProperty("OutputLevel", this->msg().level()) );
2256 #ifndef XAOD_ANALYSIS
2257  ATH_CHECK( m_isoCloseByTool.setProperty("ParticleCaloExtensionTool", "") );
2258 #endif
2260  } else ATH_CHECK( m_isoCloseByTool.retrieve() );
2261  }
2262 
2263 
2264 // /////////////////////////////////////////////////////////////////////////////////////////
2265 // Initialise Overlap Removal Tool
2266  if ( m_orToolbox.masterTool.empty() ){
2267 
2268  // set up the master tool
2269  std::string suffix = "";
2270  if (m_orDoTau) suffix += "Tau";
2271  if (m_orDoPhoton) suffix += "Gamma";
2272  if (m_orDoBjet) suffix += "Bjet";
2273  std::string toolName = "ORTool" + suffix;
2274  ATH_MSG_INFO("SUSYTools: Autoconfiguring " << toolName);
2275 
2276  std::string bJetLabel = "";
2277  //overwrite lepton flags if the global is false (yes?)
2278  if (!m_orDoBjet || !m_useBtagging) {
2279  m_orDoElBjet = false;
2280  m_orDoMuBjet = false;
2281  m_orDoTauBjet = false;
2282  }
2284  bJetLabel = "bjet_loose";
2285  }
2286 
2287  // Set the generic flags
2288  ORUtils::ORFlags orFlags(toolName, m_orInputLabel, "passOR");
2289  orFlags.bJetLabel = bJetLabel;
2290  orFlags.boostedLeptons = (m_orDoBoostedElectron || m_orDoBoostedMuon);
2291  orFlags.outputPassValue = true;
2292  orFlags.linkOverlapObjects = m_orLinkOverlapObjects;
2293  if (m_orDoElEl) {
2294  orFlags.doEleEleOR = true;
2295  } else orFlags.doEleEleOR = false;
2296  orFlags.doElectrons = true;
2297  orFlags.doMuons = true;
2298  orFlags.doJets = true;
2299  orFlags.doTaus = m_orDoTau;
2300  orFlags.doPhotons = m_orDoPhoton;
2301  orFlags.doFatJets = m_orDoFatjets;
2302 
2303  //set up all recommended tools
2305 
2306  // We don't currently have a good way to determine here which object
2307  // definitions are disabled, so we currently just configure all overlap
2308  // tools and disable the pointer safety checks
2309  ATH_CHECK( m_orToolbox.setGlobalProperty("OutputLevel", this->msg().level()) );
2310  ATH_CHECK( m_orToolbox.masterTool.setProperty("RequireExpectedPointers", false) );
2311 
2312  // Override boosted OR sliding cone options
2315 
2316  //add custom tau-jet OR tool
2317  if(m_orDoTau){
2318  m_orToolbox.tauJetORT.setTypeAndName("ORUtils::TauJetOverlapTool/" + orFlags.masterName + ".TauJetORT");
2320  }
2321 
2322  // override sliding cone params if sliding dR is on and the user-provided parameter values are non-negative
2323  if (m_orDoBoostedElectron) {
2327  }
2328  if (m_orDoBoostedMuon) {
2332  }
2333 
2334  // and switch off lep-bjet check if not requested
2335  if (!m_orDoElBjet) {
2336  ATH_CHECK(m_orToolbox.eleJetORT.setProperty("BJetLabel", ""));
2337  }
2338  if (!m_orDoMuBjet) {
2339  ATH_CHECK(m_orToolbox.muJetORT.setProperty("BJetLabel", ""));
2340  }
2341 
2342  // propagate the mu-jet ghost-association option which might be set by the user (default is true)
2344 
2345  // propagate mu-jet OR settings if requested
2347  if(m_orApplyRelPt){
2350  }
2352 
2353  // propagate the calo muon setting for EleMuORT
2355 
2356  // Use electron-muon DR matching to remove electrons within DR < 0.01 of Muons.
2357  if (m_orDoElMu){
2358  ATH_CHECK(m_orToolbox.eleMuORT.setProperty("UseDRMatching", m_orDoElMu) );
2359  }
2360 
2361  // propagate the fatjets OR settings
2362  if(m_orDoFatjets){
2365  }
2366 
2367  // Make sure that we deal with prorities correctly
2368  ATH_CHECK(m_orToolbox.eleJetORT.setProperty("EnableUserPriority", true));
2369  ATH_CHECK(m_orToolbox.muJetORT.setProperty("EnableUserPriority", true));
2370  if (m_orDoTau) ATH_CHECK(m_orToolbox.tauJetORT.setProperty("EnableUserPriority", true));
2371  if (m_orDoPhoton) ATH_CHECK(m_orToolbox.phoJetORT.setProperty("EnableUserPriority", true));
2372 
2373  if ( m_orPhotonFavoured ) {
2374  ATH_CHECK(m_orToolbox.phoEleORT.setProperty("SwapContainerPrecedence", true));
2375  ATH_CHECK(m_orToolbox.phoMuORT.setProperty("SwapContainerPrecedence", true));
2376  }
2377 
2378  if (!m_orDoEleJet){
2379  // Disable the electron removal part of e-j overlap removal
2380  ATH_CHECK( m_orToolbox.eleJetORT.setProperty("OuterDR",-1.) );
2381  ATH_CHECK( m_orToolbox.eleJetORT.setProperty("SlidingDRMaxCone",-1.) );
2382  }
2383  if (!m_orDoMuonJet){
2384  // Disable the muon removal part of m-j overlap removal
2385  ATH_CHECK( m_orToolbox.muJetORT.setProperty("OuterDR",-1.) );
2386  ATH_CHECK( m_orToolbox.muJetORT.setProperty("SlidingDRMaxCone",-1.) );
2387  }
2388 
2390 
2391  }
2392  // Done with the OR toolbox setup!
2393 
2394 // /////////////////////////////////////////////////////////////////////////////////////////
2395 // Initialise PMG Tools
2397  m_pmgSHnjetWeighter.setTypeAndName("PMGTools::PMGSherpa22VJetsWeightTool/PMGSHVjetReweighter");
2398  ATH_CHECK( m_pmgSHnjetWeighter.setProperty( "TruthJetContainer", "AntiKt4TruthJets"));
2399  ATH_CHECK( m_pmgSHnjetWeighter.setProperty("OutputLevel", this->msg().level()) );
2402 
2403 
2405  m_pmgSHnjetWeighterWZ.setTypeAndName("PMGTools::PMGSherpa22VJetsWeightTool/PMGSHVjetReweighterWZ");
2406  ATH_CHECK( m_pmgSHnjetWeighterWZ.setProperty( "TruthJetContainer", "AntiKt4TruthWZJets"));
2407  ATH_CHECK( m_pmgSHnjetWeighterWZ.setProperty("OutputLevel", this->msg().level()) );
2410 
2411 
2412  // prevent these initialiation snippets from being run again
2413  m_subtool_init = true;
2414 
2415  ATH_MSG_INFO("Done initialising SUSYTools");
2416 
2417  return StatusCode::SUCCESS;
2418 }

◆ 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 110 of file AsgMetadataTool.cxx.

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

◆ 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 3111 of file SUSYObjDef_xAOD.cxx.

3111  {
3112  // Use the run number we are passed if we are passed one, otherwise
3113  // use the run number from the GetRunNumber function
3114  int theRunNumber = runNumber>0?runNumber:GetRunNumber();
3115  if (theRunNumber<290000) return 2015;
3116  else if (theRunNumber<320000) return 2016;
3117  else if (theRunNumber<342000) return 2017;
3118  else if (theRunNumber<400000) return 2018;
3119  else if (theRunNumber<445000) return 2022;
3120  else if (theRunNumber<465000) return 2023;
3121  return 2024;
3122 }

◆ 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 2089 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 1934 of file SUSYObjDef_xAOD.cxx.

1934  {
1935  // Validate configuration (i.e. that signal settings are tighter than baseline, etc)
1936  // :: Throw SC::FAILURE if strict mode is enabled, just a WARNING if not
1937 
1938  // Electrons
1939  if( m_elePt < m_eleBaselinePt ){
1940  ATH_MSG_WARNING("Your electron pt configuration is inconsistent! Signal : " << m_elePt << " < Baseline : " << m_eleBaselinePt);
1941  if(strict) return StatusCode::FAILURE;
1942  }
1943  if( m_eleEta > m_eleBaselineEta ){
1944  ATH_MSG_WARNING("Your electron eta configuration is inconsistent! Signal : " << m_eleEta << " < Baseline : " << m_eleBaselineEta);
1945  if(strict) return StatusCode::FAILURE;
1946  }
1947 
1949  ATH_MSG_WARNING("Your electron ID configuration is inconsistent! Signal : " << m_eleId << " looser than Baseline : " << m_eleIdBaseline);
1950  if(strict) return StatusCode::FAILURE;
1951  }
1953  ATH_MSG_WARNING("Your electron crack removal is inconsistent! Signal : " << m_eleCrackVeto << " while Baseline : " << m_eleBaselineCrackVeto);
1954  if(strict) return StatusCode::FAILURE;
1955  }
1956 
1957  // Muons
1958  if( m_muPt < m_muBaselinePt ){
1959  ATH_MSG_WARNING("Your muon pt configuration is inconsistent! Signal : " << m_muPt << " < Baseline : " << m_muBaselinePt);
1960  if(strict) return StatusCode::FAILURE;
1961  }
1962  if( m_muEta > m_muBaselineEta ){
1963  ATH_MSG_WARNING("Your muon eta configuration is inconsistent! Signal : " << m_muEta << " < Baseline : " << m_muBaselineEta);
1964  if(strict) return StatusCode::FAILURE;
1965  }
1966  if( m_muId > m_muIdBaseline ){
1967  ATH_MSG_WARNING("Your muon ID configuration is inconsistent! Signal : " << m_muId << " < Baseline : " << m_muIdBaseline);
1968  if(strict) return StatusCode::FAILURE;
1969  }
1970 
1971  // Photons
1973  ATH_MSG_WARNING("Your photon pt configuration is inconsistent! Signal : " << m_photonPt << " < Baseline : " << m_photonBaselinePt);
1974  if(strict) return StatusCode::FAILURE;
1975  }
1977  ATH_MSG_WARNING("Your photon eta configuration is inconsistent! Signal : " << m_photonEta << " < Baseline : " << m_photonBaselineEta);
1978  if(strict) return StatusCode::FAILURE;
1979  }
1980  if( m_photonId=="Loose" && m_photonIdBaseline=="Tight" ){
1981  ATH_MSG_WARNING("Your photon ID configuration is inconsistent! Signal : " << m_photonId << " < Baseline : " << m_photonIdBaseline);
1982  if(strict) return StatusCode::FAILURE;
1983  }
1985  ATH_MSG_WARNING("Your photon crack removal is inconsistent! Signal : " << m_photonCrackVeto << " while Baseline : " << m_photonBaselineCrackVeto);
1986  if(strict) return StatusCode::FAILURE;
1987  }
1988 
1989  // Jets
1990  if ( m_jetPt < 20e3 ){
1991  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!");
1992  }
1993 
1994  //Btagging //OR-wp looser than signal-wp?
1995  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)
1996  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()) ){
1997  ATH_MSG_WARNING("Your btagging configuration is inconsistent! Signal : " << m_BtagWP << " is looser than OR-Baseline : " << m_orBtagWP);
1998  }
1999  }
2000  if (m_BtagMinPt < 20e3 || m_BtagMinPt_trkJet < 10e3) {
2001  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).");
2002  }
2003 
2004  //Taus
2006  if(m_tauPrePtCut > 0 and m_tauPrePtCut > m_tauPt) {
2007  ATH_MSG_WARNING("Your tau pt configuration is inconsistent! Signal pt cut : " << m_tauPt << " < Baseline (pre) pt cut : " << m_tauPrePtCut);
2008  if(strict) return StatusCode::FAILURE;
2009  }
2012  ATH_MSG_WARNING("Your tau ID configuration is inconsistent! Signal : " << m_tauId << " looser than Baseline : " << m_tauIdBaseline);
2013  if(strict) return StatusCode::FAILURE;
2014  }
2015 
2017  std::vector<float> pT_window;
2018  std::vector<float> eta_window;
2019  bool elOLR=false;
2020  bool muVeto=false;
2021  bool muOLR=false;
2022 
2023  if(!m_tauConfigPathBaseline.empty()) { //baseline taus
2024 
2025  std::string theConfig = m_tauConfigPathBaseline;
2026  if( m_tauConfigPathBaseline=="default" ){
2027  if (m_tauId == "rnn001") theConfig = "SUSYTools/tau_selection_rnn001.conf";
2028  else if (m_tauId == "VeryLoose") theConfig = "SUSYTools/tau_selection_veryloose.conf";
2029  else if (m_tauId == "Loose") theConfig = "SUSYTools/tau_selection_loose.conf";
2030  else if (m_tauId == "Medium") theConfig = "SUSYTools/tau_selection_medium.conf";
2031  else if (m_tauId == "Tight") theConfig = "SUSYTools/tau_selection_tight.conf";
2032  }
2033 
2034  //read config
2035  getTauConfig(theConfig, pT_window, eta_window, elOLR, muVeto, muOLR);
2036 
2037  //pt-eta checks
2038  if( m_tauPrePtCut > 0 and (m_tauPrePtCut != 1000*pT_window[0] or (pT_window[1] > 0 and m_tauPrePtCut > 1000*pT_window[1]))) {
2039  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] << "]");
2040  if(strict) return StatusCode::FAILURE;
2041  }
2042 
2043  if( m_tauPt > 0 and (m_tauPt != 1000*pT_window[0] or (pT_window[1] > 0 and m_tauPt > 1000*pT_window[1]))) {
2044  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] << "]");
2045  if(strict) return StatusCode::FAILURE;
2046  }
2047 
2048  if( m_tauEta > 0 and m_tauEta != eta_window[eta_window.size()-1]) { // eta window can have 4 entries
2049  ATH_MSG_WARNING("Your baseline tau eta configuration is inconsistent! eta cut : " << m_tauEta << " != TauSelectionTool max eta : " << eta_window[eta_window.size()-1]);
2050  if(strict) return StatusCode::FAILURE;
2051  }
2052  }
2053 
2054  if(!m_tauConfigPath.empty()) { //signal taus
2055 
2056  std::string theConfig = m_tauConfigPath;
2057  if( m_tauConfigPath=="default" ){
2058  if (m_tauId == "rnn001") theConfig = "SUSYTools/tau_selection_rnn001.conf";
2059  else if (m_tauId == "VeryLoose") theConfig = "SUSYTools/tau_selection_veryloose.conf";
2060  else if (m_tauId == "Loose") theConfig = "SUSYTools/tau_selection_loose.conf";
2061  else if (m_tauId == "Medium") theConfig = "SUSYTools/tau_selection_medium.conf";
2062  else if (m_tauId == "Tight") theConfig = "SUSYTools/tau_selection_tight.conf";
2063  }
2064 
2065  getTauConfig(theConfig, pT_window, eta_window, elOLR, muVeto, muOLR);
2066 
2067  if( m_tauPrePtCut > 0 and (m_tauPrePtCut != 1000*pT_window[0] or (pT_window[1] > 0 and m_tauPrePtCut > 1000*pT_window[1]))) {
2068  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] << "]");
2069  if(strict) return StatusCode::FAILURE;
2070  }
2071 
2072  if( m_tauPt > 0 and (m_tauPt != 1000*pT_window[0] or (pT_window[1] > 0 and m_tauPt > 1000*pT_window[1]))) {
2073  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] << "]");
2074  if(strict) return StatusCode::FAILURE;
2075  }
2076 
2077  if( m_tauEta > 0 and m_tauEta != eta_window[eta_window.size()-1]) { // eta window can have 4 entries
2078  ATH_MSG_WARNING("Your tau eta configuration is inconsistent! eta cut : " << m_tauEta << " != TauSelectionTool max eta : " << eta_window[eta_window.size()-1]);
2079  if(strict) return StatusCode::FAILURE;
2080  }
2081  }
2082 
2083 
2084  return StatusCode::SUCCESS;
2085 }

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 990 of file SUSYObjDef_xAOD.h.

◆ m_acc_eleIdBaseline

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

Definition at line 989 of file SUSYObjDef_xAOD.h.

◆ m_acc_jetClean

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

Definition at line 993 of file SUSYObjDef_xAOD.h.

◆ m_acc_photonId

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

Definition at line 992 of file SUSYObjDef_xAOD.h.

◆ m_acc_photonIdBaseline

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

Definition at line 991 of file SUSYObjDef_xAOD.h.

◆ m_applyJVTCut

bool ST::SUSYObjDef_xAOD::m_applyJVTCut
protected

Definition at line 818 of file SUSYObjDef_xAOD.h.

◆ m_autoconfigPRW

bool ST::SUSYObjDef_xAOD::m_autoconfigPRW
protected

Definition at line 591 of file SUSYObjDef_xAOD.h.

◆ m_autoconfigPRWCombinedmode

bool ST::SUSYObjDef_xAOD::m_autoconfigPRWCombinedmode
protected

Definition at line 594 of file SUSYObjDef_xAOD.h.

◆ m_autoconfigPRWFile

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

Definition at line 593 of file SUSYObjDef_xAOD.h.

◆ m_autoconfigPRWPath

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

Definition at line 592 of file SUSYObjDef_xAOD.h.

◆ m_autoconfigPRWRPVmode

bool ST::SUSYObjDef_xAOD::m_autoconfigPRWRPVmode
protected

Definition at line 595 of file SUSYObjDef_xAOD.h.

◆ m_autoconfigPRWRtags

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

Definition at line 596 of file SUSYObjDef_xAOD.h.

◆ m_badJetCut

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

Definition at line 539 of file SUSYObjDef_xAOD.h.

◆ m_badmuQoverP

double ST::SUSYObjDef_xAOD::m_badmuQoverP
protected

Definition at line 712 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 920 of file SUSYObjDef_xAOD.h.

◆ m_btagEffTool_trkJet

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

Definition at line 923 of file SUSYObjDef_xAOD.h.

◆ m_bTaggingCalibrationFilePath

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

Definition at line 820 of file SUSYObjDef_xAOD.h.

◆ m_BtagKeyOverride

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

Definition at line 675 of file SUSYObjDef_xAOD.h.

◆ m_BtagMinPt

double ST::SUSYObjDef_xAOD::m_BtagMinPt
protected

Definition at line 674 of file SUSYObjDef_xAOD.h.

◆ m_BtagMinPt_trkJet

double ST::SUSYObjDef_xAOD::m_BtagMinPt_trkJet
protected

Definition at line 682 of file SUSYObjDef_xAOD.h.

◆ m_btagSelTool

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

Definition at line 921 of file SUSYObjDef_xAOD.h.

◆ m_btagSelTool_OR

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

Definition at line 922 of file SUSYObjDef_xAOD.h.

◆ m_btagSelTool_trkJet

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

Definition at line 924 of file SUSYObjDef_xAOD.h.

◆ m_BtagSystStrategy

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

Definition at line 676 of file SUSYObjDef_xAOD.h.

◆ m_BtagTagger

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

Definition at line 673 of file SUSYObjDef_xAOD.h.

◆ m_BtagTagger_trkJet

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

Definition at line 681 of file SUSYObjDef_xAOD.h.

◆ m_BtagWP

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

Definition at line 672 of file SUSYObjDef_xAOD.h.

◆ m_BtagWP_trkJet

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

Definition at line 680 of file SUSYObjDef_xAOD.h.

◆ m_caloMETsyst

bool ST::SUSYObjDef_xAOD::m_caloMETsyst
protected

Definition at line 584 of file SUSYObjDef_xAOD.h.

◆ m_commonPRWFileMC20a

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

Definition at line 601 of file SUSYObjDef_xAOD.h.

◆ m_commonPRWFileMC20d

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

Definition at line 602 of file SUSYObjDef_xAOD.h.

◆ m_commonPRWFileMC20e

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

Definition at line 603 of file SUSYObjDef_xAOD.h.

◆ m_commonPRWFileMC21a

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

Definition at line 604 of file SUSYObjDef_xAOD.h.

◆ m_commonPRWFileMC23a

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

Definition at line 605 of file SUSYObjDef_xAOD.h.

◆ m_commonPRWFileMC23c

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

Definition at line 606 of file SUSYObjDef_xAOD.h.

◆ m_commonPRWFileMC23d

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

Definition at line 607 of file SUSYObjDef_xAOD.h.

◆ m_commonPRWFileMC23e

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

Definition at line 608 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 518 of file SUSYObjDef_xAOD.h.

◆ m_currentSyst

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

Definition at line 813 of file SUSYObjDef_xAOD.h.

◆ m_dataSource

int ST::SUSYObjDef_xAOD::m_dataSource
protected

Definition at line 515 of file SUSYObjDef_xAOD.h.

◆ m_deadHVTool

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

Definition at line 899 of file SUSYObjDef_xAOD.h.

◆ m_debug

bool ST::SUSYObjDef_xAOD::m_debug
protected

Definition at line 535 of file SUSYObjDef_xAOD.h.

◆ m_defaultJets

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

Definition at line 807 of file SUSYObjDef_xAOD.h.

◆ m_defaultSyst

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

Definition at line 812 of file SUSYObjDef_xAOD.h.

◆ m_defaultTrackJets

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

Definition at line 808 of file SUSYObjDef_xAOD.h.

◆ m_defaultTruthJets

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

Definition at line 810 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 790 of file SUSYObjDef_xAOD.h.

◆ m_doFwdJVT

bool ST::SUSYObjDef_xAOD::m_doFwdJVT
protected

Definition at line 745 of file SUSYObjDef_xAOD.h.

◆ m_doIsoSignal

bool ST::SUSYObjDef_xAOD::m_doIsoSignal
protected

Definition at line 789 of file SUSYObjDef_xAOD.h.

◆ m_doModifiedEleId

bool ST::SUSYObjDef_xAOD::m_doModifiedEleId
protected

Definition at line 523 of file SUSYObjDef_xAOD.h.

◆ m_doMuIsoSignal

bool ST::SUSYObjDef_xAOD::m_doMuIsoSignal
protected

Definition at line 792 of file SUSYObjDef_xAOD.h.

◆ m_doPhiReso

bool ST::SUSYObjDef_xAOD::m_doPhiReso
protected

Definition at line 589 of file SUSYObjDef_xAOD.h.

◆ m_doPhIsoSignal

bool ST::SUSYObjDef_xAOD::m_doPhIsoSignal
protected

Definition at line 791 of file SUSYObjDef_xAOD.h.

◆ m_doTTVAsf

bool ST::SUSYObjDef_xAOD::m_doTTVAsf
protected

Definition at line 522 of file SUSYObjDef_xAOD.h.

◆ m_EG_corrFNList

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

Definition at line 817 of file SUSYObjDef_xAOD.h.

◆ m_EG_corrModel

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

Definition at line 816 of file SUSYObjDef_xAOD.h.

◆ m_egammaAmbiguityTool

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

Definition at line 909 of file SUSYObjDef_xAOD.h.

◆ m_egammaCalibTool

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

Combined electron collection.


Definition at line 894 of file SUSYObjDef_xAOD.h.

◆ m_EigenvectorReductionB

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

Definition at line 677 of file SUSYObjDef_xAOD.h.

◆ m_EigenvectorReductionC

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

Definition at line 678 of file SUSYObjDef_xAOD.h.

◆ m_EigenvectorReductionLight

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

Definition at line 679 of file SUSYObjDef_xAOD.h.

◆ m_el_id_support

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

Definition at line 624 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 632 of file SUSYObjDef_xAOD.h.

◆ m_el_iso_support

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

Definition at line 628 of file SUSYObjDef_xAOD.h.

◆ m_eleAllowRun3TrigSFFallback

bool ST::SUSYObjDef_xAOD::m_eleAllowRun3TrigSFFallback
protected

Definition at line 697 of file SUSYObjDef_xAOD.h.

◆ m_eleBaselineCrackVeto

bool ST::SUSYObjDef_xAOD::m_eleBaselineCrackVeto
protected

Definition at line 687 of file SUSYObjDef_xAOD.h.

◆ m_elebaselined0sig

double ST::SUSYObjDef_xAOD::m_elebaselined0sig
protected

Definition at line 693 of file SUSYObjDef_xAOD.h.

◆ m_eleBaselineEta

double ST::SUSYObjDef_xAOD::m_eleBaselineEta
protected

Definition at line 686 of file SUSYObjDef_xAOD.h.

◆ m_eleBaselineIso_WP

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

Definition at line 644 of file SUSYObjDef_xAOD.h.

◆ m_eleBaselinePt

double ST::SUSYObjDef_xAOD::m_eleBaselinePt
protected

Definition at line 685 of file SUSYObjDef_xAOD.h.

◆ m_elebaselinez0

double ST::SUSYObjDef_xAOD::m_elebaselinez0
protected

Definition at line 694 of file SUSYObjDef_xAOD.h.

◆ m_elecChargeEffCorrTool

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

Definition at line 911 of file SUSYObjDef_xAOD.h.

◆ m_elecChargeIDSelectorTool

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

Definition at line 910 of file SUSYObjDef_xAOD.h.

◆ m_elecEfficiencySFTool_chf

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

Definition at line 884 of file SUSYObjDef_xAOD.h.

◆ m_elecEfficiencySFTool_id

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

Definition at line 879 of file SUSYObjDef_xAOD.h.

◆ m_elecEfficiencySFTool_iso

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

Definition at line 882 of file SUSYObjDef_xAOD.h.

◆ m_elecEfficiencySFTool_isoHighPt

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

Definition at line 883 of file SUSYObjDef_xAOD.h.

◆ m_elecEfficiencySFTool_reco

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

Combined muon collection.


Definition at line 878 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 886 of file SUSYObjDef_xAOD.h.

◆ m_elecEfficiencySFTool_trig_singleLep

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

Definition at line 880 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 887 of file SUSYObjDef_xAOD.h.

◆ m_elecEfficiencySFTool_trigEff_singleLep

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

Definition at line 881 of file SUSYObjDef_xAOD.h.

◆ m_eleChID_signal

bool ST::SUSYObjDef_xAOD::m_eleChID_signal
protected

Definition at line 659 of file SUSYObjDef_xAOD.h.

◆ m_eleChID_WP

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

Definition at line 655 of file SUSYObjDef_xAOD.h.

◆ m_eleChIso

bool ST::SUSYObjDef_xAOD::m_eleChIso
protected

Definition at line 658 of file SUSYObjDef_xAOD.h.

◆ m_elecLRTORTool

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

Definition at line 890 of file SUSYObjDef_xAOD.h.

◆ m_eleConfig

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

Definition at line 642 of file SUSYObjDef_xAOD.h.

◆ m_eleConfigBaseline

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

Definition at line 643 of file SUSYObjDef_xAOD.h.

◆ m_eleCrackVeto

bool ST::SUSYObjDef_xAOD::m_eleCrackVeto
protected

Definition at line 690 of file SUSYObjDef_xAOD.h.

◆ m_elecSelLikelihood

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

Definition at line 895 of file SUSYObjDef_xAOD.h.

◆ m_elecSelLikelihoodBaseline

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

Definition at line 896 of file SUSYObjDef_xAOD.h.

◆ m_elecTrigEffTools

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

Definition at line 889 of file SUSYObjDef_xAOD.h.

◆ m_elecTrigSFTools

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

Definition at line 888 of file SUSYObjDef_xAOD.h.

◆ m_electronTriggerSFStringSingle

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

Definition at line 636 of file SUSYObjDef_xAOD.h.

◆ m_eled0sig

double ST::SUSYObjDef_xAOD::m_eled0sig
protected

Definition at line 691 of file SUSYObjDef_xAOD.h.

◆ m_eleEffMapFilePath

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

Definition at line 695 of file SUSYObjDef_xAOD.h.

◆ m_eleEffMapFilePathRun2

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

Definition at line 696 of file SUSYObjDef_xAOD.h.

◆ m_eleEta

double ST::SUSYObjDef_xAOD::m_eleEta
protected

Definition at line 689 of file SUSYObjDef_xAOD.h.

◆ m_EleFatJetDR

double ST::SUSYObjDef_xAOD::m_EleFatJetDR
protected

Definition at line 786 of file SUSYObjDef_xAOD.h.

◆ m_eleForceFullSimCalib

bool ST::SUSYObjDef_xAOD::m_eleForceFullSimCalib
protected

Definition at line 698 of file SUSYObjDef_xAOD.h.

◆ m_eleId

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

Definition at line 640 of file SUSYObjDef_xAOD.h.

◆ m_eleIdBaseline

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

Definition at line 641 of file SUSYObjDef_xAOD.h.

◆ m_eleIdBaselineDFName

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

Definition at line 983 of file SUSYObjDef_xAOD.h.

◆ m_eleIdDFName

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

Definition at line 984 of file SUSYObjDef_xAOD.h.

◆ m_eleIdExpert

bool ST::SUSYObjDef_xAOD::m_eleIdExpert
protected

Definition at line 645 of file SUSYObjDef_xAOD.h.

◆ m_eleIso_WP

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

Definition at line 652 of file SUSYObjDef_xAOD.h.

◆ m_eleIsoHighPt_WP

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

Definition at line 653 of file SUSYObjDef_xAOD.h.

◆ m_eleIsoHighPtThresh

double ST::SUSYObjDef_xAOD::m_eleIsoHighPtThresh
protected

Definition at line 654 of file SUSYObjDef_xAOD.h.

◆ m_eleLRT

bool ST::SUSYObjDef_xAOD::m_eleLRT
protected

Definition at line 656 of file SUSYObjDef_xAOD.h.

◆ m_eleLRT_strat

int ST::SUSYObjDef_xAOD::m_eleLRT_strat
protected

Definition at line 657 of file SUSYObjDef_xAOD.h.

◆ m_elePt

double ST::SUSYObjDef_xAOD::m_elePt
protected

Definition at line 688 of file SUSYObjDef_xAOD.h.

◆ m_eleTerm

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

Definition at line 564 of file SUSYObjDef_xAOD.h.

◆ m_elez0

double ST::SUSYObjDef_xAOD::m_elez0
protected

Definition at line 692 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 814 of file SUSYObjDef_xAOD.h.

◆ m_fatjetFFSmearingTool

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

Definition at line 831 of file SUSYObjDef_xAOD.h.

◆ m_fatJets

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

Definition at line 809 of file SUSYObjDef_xAOD.h.

◆ m_fatJetUncConfig

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

Definition at line 541 of file SUSYObjDef_xAOD.h.

◆ m_fatJetUncertaintiesPDsmearing

bool ST::SUSYObjDef_xAOD::m_fatJetUncertaintiesPDsmearing
protected

Definition at line 542 of file SUSYObjDef_xAOD.h.

◆ m_fatjetUncertaintiesPDSmearTool

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

Definition at line 830 of file SUSYObjDef_xAOD.h.

◆ m_fatjetUncertaintiesTool

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

Definition at line 829 of file SUSYObjDef_xAOD.h.

◆ m_fatJetUncVars

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

Definition at line 543 of file SUSYObjDef_xAOD.h.

◆ m_fJvtConfigRun2

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

Definition at line 749 of file SUSYObjDef_xAOD.h.

◆ m_fJvtConfigRun3

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

Definition at line 750 of file SUSYObjDef_xAOD.h.

◆ m_fJvtEtaMin

double ST::SUSYObjDef_xAOD::m_fJvtEtaMin
protected

Definition at line 748 of file SUSYObjDef_xAOD.h.

◆ m_fJvtPtMax

double ST::SUSYObjDef_xAOD::m_fJvtPtMax
protected

Definition at line 747 of file SUSYObjDef_xAOD.h.

◆ m_fJvtWP

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

Definition at line 746 of file SUSYObjDef_xAOD.h.

◆ m_force_noElId

bool ST::SUSYObjDef_xAOD::m_force_noElId
protected

Definition at line 520 of file SUSYObjDef_xAOD.h.

◆ m_force_noMuId

bool ST::SUSYObjDef_xAOD::m_force_noMuId
protected

Definition at line 521 of file SUSYObjDef_xAOD.h.

◆ m_gammaTerm

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

Definition at line 565 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 478 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 571 of file SUSYObjDef_xAOD.h.

◆ m_inputMETMap

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

Definition at line 570 of file SUSYObjDef_xAOD.h.

◆ m_inputMETRef

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

Definition at line 572 of file SUSYObjDef_xAOD.h.

◆ m_inputMETSuffix

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

Definition at line 569 of file SUSYObjDef_xAOD.h.

◆ m_isoBaselineTool

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

Definition at line 969 of file SUSYObjDef_xAOD.h.

◆ m_IsoCloseByORpassLabel

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

Definition at line 795 of file SUSYObjDef_xAOD.h.

◆ m_isoCloseByTool

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

Definition at line 971 of file SUSYObjDef_xAOD.h.

◆ m_isoCorrTool

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

Definition at line 966 of file SUSYObjDef_xAOD.h.

◆ m_isoHighPtTool

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

Definition at line 970 of file SUSYObjDef_xAOD.h.

◆ m_isoTool

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

Definition at line 967 of file SUSYObjDef_xAOD.h.

◆ m_isPHYSLITE

bool ST::SUSYObjDef_xAOD::m_isPHYSLITE
protected

Definition at line 801 of file SUSYObjDef_xAOD.h.

◆ m_isRun3

bool ST::SUSYObjDef_xAOD::m_isRun3
protected

Definition at line 800 of file SUSYObjDef_xAOD.h.

◆ m_jesCalibArea

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

Definition at line 862 of file SUSYObjDef_xAOD.h.

◆ m_jesCalibSeq

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

Definition at line 859 of file SUSYObjDef_xAOD.h.

◆ m_jesCalibSeqFat

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

Definition at line 861 of file SUSYObjDef_xAOD.h.

◆ m_jesCalibSeqJMS

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

Definition at line 860 of file SUSYObjDef_xAOD.h.

◆ m_jesConfig

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

Definition at line 853 of file SUSYObjDef_xAOD.h.

◆ m_jesConfigAFII

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

Definition at line 856 of file SUSYObjDef_xAOD.h.

◆ m_jesConfigFat

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

Definition at line 857 of file SUSYObjDef_xAOD.h.

◆ m_jesConfigFatData

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

Definition at line 858 of file SUSYObjDef_xAOD.h.

◆ m_jesConfigJMS

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

Definition at line 854 of file SUSYObjDef_xAOD.h.

◆ m_jesConfigJMSData

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

Definition at line 855 of file SUSYObjDef_xAOD.h.

◆ m_jetCalibTool

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

Definition at line 825 of file SUSYObjDef_xAOD.h.

◆ m_jetCleanDFName

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

Definition at line 987 of file SUSYObjDef_xAOD.h.

◆ m_jetCleaningTool

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

Definition at line 832 of file SUSYObjDef_xAOD.h.

◆ m_jetEta

double ST::SUSYObjDef_xAOD::m_jetEta
protected

Definition at line 735 of file SUSYObjDef_xAOD.h.

◆ m_jetFatCalibTool

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

Definition at line 826 of file SUSYObjDef_xAOD.h.

◆ m_JetFatJetDR

double ST::SUSYObjDef_xAOD::m_JetFatJetDR
protected

Definition at line 787 of file SUSYObjDef_xAOD.h.

◆ m_jetfJvtEfficiencyTool

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

Definition at line 840 of file SUSYObjDef_xAOD.h.

◆ m_jetfJvtSelectionTool

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

Definition at line 839 of file SUSYObjDef_xAOD.h.

◆ m_jetInputType

int ST::SUSYObjDef_xAOD::m_jetInputType
protected

Definition at line 516 of file SUSYObjDef_xAOD.h.

◆ m_jetJvt

double ST::SUSYObjDef_xAOD::m_jetJvt
protected

Definition at line 736 of file SUSYObjDef_xAOD.h.

◆ m_jetJvtMomentTool

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

Definition at line 835 of file SUSYObjDef_xAOD.h.

◆ m_jetNNJvtEfficiencyTool

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

Definition at line 838 of file SUSYObjDef_xAOD.h.

◆ m_jetNNJvtMomentTool

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

Definition at line 836 of file SUSYObjDef_xAOD.h.

◆ m_jetNNJvtSelectionTool

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

Definition at line 837 of file SUSYObjDef_xAOD.h.

◆ m_jetPileupLabelingTool

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

Definition at line 834 of file SUSYObjDef_xAOD.h.

◆ m_jetPt

double ST::SUSYObjDef_xAOD::m_jetPt
protected

Definition at line 734 of file SUSYObjDef_xAOD.h.

◆ m_jetTerm

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

Definition at line 567 of file SUSYObjDef_xAOD.h.

◆ m_jetTruthLabelingTool

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

Definition at line 845 of file SUSYObjDef_xAOD.h.

◆ m_JetTruthLabelName

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

Definition at line 559 of file SUSYObjDef_xAOD.h.

◆ m_jetUncertaintiesAnalysisFile

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

Definition at line 528 of file SUSYObjDef_xAOD.h.

◆ m_jetUncertaintiesCalibArea

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

Definition at line 529 of file SUSYObjDef_xAOD.h.

◆ m_jetUncertaintiesConfig

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

Prefix for trigger matchiing container name.

Definition at line 527 of file SUSYObjDef_xAOD.h.

◆ m_jetUncertaintiesMCType

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

Definition at line 530 of file SUSYObjDef_xAOD.h.

◆ m_jetUncertaintiesPDsmearing

bool ST::SUSYObjDef_xAOD::m_jetUncertaintiesPDsmearing
protected

Definition at line 531 of file SUSYObjDef_xAOD.h.

◆ m_jetUncertaintiesPDSmearTool

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

Definition at line 828 of file SUSYObjDef_xAOD.h.

◆ m_jetUncertaintiesTool

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

Definition at line 827 of file SUSYObjDef_xAOD.h.

◆ m_JMScalib

bool ST::SUSYObjDef_xAOD::m_JMScalib
protected

Definition at line 752 of file SUSYObjDef_xAOD.h.

◆ m_JvtConfigRun2

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

Definition at line 739 of file SUSYObjDef_xAOD.h.

◆ m_JvtConfigRun3

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

Definition at line 740 of file SUSYObjDef_xAOD.h.

◆ m_JvtPtMax

double ST::SUSYObjDef_xAOD::m_JvtPtMax
protected

Definition at line 738 of file SUSYObjDef_xAOD.h.

◆ m_JvtWP

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

Definition at line 737 of file SUSYObjDef_xAOD.h.

◆ m_label_truthKey

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

Definition at line 850 of file SUSYObjDef_xAOD.h.

◆ m_legsPerTool

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

Definition at line 822 of file SUSYObjDef_xAOD.h.

◆ m_legsPerTool_ph

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

Definition at line 823 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 477 of file SUSYObjDef_xAOD.h.

◆ m_LRTuncTool

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

Definition at line 975 of file SUSYObjDef_xAOD.h.

◆ m_mcCampaign

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

Definition at line 597 of file SUSYObjDef_xAOD.h.

◆ m_mcChannel

int ST::SUSYObjDef_xAOD::m_mcChannel
protected

Definition at line 598 of file SUSYObjDef_xAOD.h.

◆ m_metDoMuonEloss

bool ST::SUSYObjDef_xAOD::m_metDoMuonEloss
protected

Definition at line 578 of file SUSYObjDef_xAOD.h.

◆ m_metDoRemoveMuonJets

bool ST::SUSYObjDef_xAOD::m_metDoRemoveMuonJets
protected

Definition at line 576 of file SUSYObjDef_xAOD.h.

◆ m_metDoSetMuonJetEMScale

bool ST::SUSYObjDef_xAOD::m_metDoSetMuonJetEMScale
protected

Definition at line 575 of file SUSYObjDef_xAOD.h.

◆ m_metGreedyPhotons

bool ST::SUSYObjDef_xAOD::m_metGreedyPhotons
protected

Definition at line 579 of file SUSYObjDef_xAOD.h.

◆ m_metJetSelection

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

Definition at line 803 of file SUSYObjDef_xAOD.h.

◆ m_metMaker

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

Definition at line 926 of file SUSYObjDef_xAOD.h.

◆ m_metRemoveOverlappingCaloTaggedMuons

bool ST::SUSYObjDef_xAOD::m_metRemoveOverlappingCaloTaggedMuons
protected

Definition at line 574 of file SUSYObjDef_xAOD.h.

◆ m_metSignif

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

Definition at line 928 of file SUSYObjDef_xAOD.h.

◆ m_metsysConfigPrefix

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

Definition at line 581 of file SUSYObjDef_xAOD.h.

◆ m_metSystTool

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

Definition at line 927 of file SUSYObjDef_xAOD.h.

◆ m_metUseGhostMuons

bool ST::SUSYObjDef_xAOD::m_metUseGhostMuons
protected

Definition at line 577 of file SUSYObjDef_xAOD.h.

◆ m_metVeryGreedyPhotons

bool ST::SUSYObjDef_xAOD::m_metVeryGreedyPhotons
protected

Definition at line 580 of file SUSYObjDef_xAOD.h.

◆ m_mu_id_support

int ST::SUSYObjDef_xAOD::m_mu_id_support
protected

Definition at line 626 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 633 of file SUSYObjDef_xAOD.h.

◆ m_mu_iso_support

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

Definition at line 629 of file SUSYObjDef_xAOD.h.

◆ m_mubaselined0sig

double ST::SUSYObjDef_xAOD::m_mubaselined0sig
protected

Definition at line 707 of file SUSYObjDef_xAOD.h.

◆ m_muBaselineEta

double ST::SUSYObjDef_xAOD::m_muBaselineEta
protected

Definition at line 702 of file SUSYObjDef_xAOD.h.

◆ m_muBaselineIso_WP

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

Definition at line 664 of file SUSYObjDef_xAOD.h.

◆ m_muBaselinePt

double ST::SUSYObjDef_xAOD::m_muBaselinePt
protected

Definition at line 701 of file SUSYObjDef_xAOD.h.

◆ m_mubaselinez0

double ST::SUSYObjDef_xAOD::m_mubaselinez0
protected

Definition at line 708 of file SUSYObjDef_xAOD.h.

◆ m_muCalibrationMode

int ST::SUSYObjDef_xAOD::m_muCalibrationMode
protected

Definition at line 713 of file SUSYObjDef_xAOD.h.

◆ m_muCosmicd0

double ST::SUSYObjDef_xAOD::m_muCosmicd0
protected

Definition at line 711 of file SUSYObjDef_xAOD.h.

◆ m_muCosmicz0

double ST::SUSYObjDef_xAOD::m_muCosmicz0
protected

Definition at line 710 of file SUSYObjDef_xAOD.h.

◆ m_mud0sig

double ST::SUSYObjDef_xAOD::m_mud0sig
protected

Definition at line 705 of file SUSYObjDef_xAOD.h.

◆ m_muEffCorrForce1D

bool ST::SUSYObjDef_xAOD::m_muEffCorrForce1D
protected

Definition at line 669 of file SUSYObjDef_xAOD.h.

◆ m_muEta

double ST::SUSYObjDef_xAOD::m_muEta
protected

Definition at line 704 of file SUSYObjDef_xAOD.h.

◆ m_muHighPtExtraSmear

bool ST::SUSYObjDef_xAOD::m_muHighPtExtraSmear
protected

Definition at line 668 of file SUSYObjDef_xAOD.h.

◆ m_muId

int ST::SUSYObjDef_xAOD::m_muId
protected

Definition at line 646 of file SUSYObjDef_xAOD.h.

◆ m_muIdBaseline

int ST::SUSYObjDef_xAOD::m_muIdBaseline
protected

Definition at line 647 of file SUSYObjDef_xAOD.h.

◆ m_muIso_WP

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

Definition at line 665 of file SUSYObjDef_xAOD.h.

◆ m_muIsoHighPt_WP

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

Definition at line 666 of file SUSYObjDef_xAOD.h.

◆ m_muIsoHighPtThresh

double ST::SUSYObjDef_xAOD::m_muIsoHighPtThresh
protected

Definition at line 667 of file SUSYObjDef_xAOD.h.

◆ m_muLRT

bool ST::SUSYObjDef_xAOD::m_muLRT
protected

Definition at line 714 of file SUSYObjDef_xAOD.h.

◆ m_muonCalibTool

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

Definition at line 867 of file SUSYObjDef_xAOD.h.

◆ m_muonEfficiencyBMHighPtSFTool

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

Definition at line 869 of file SUSYObjDef_xAOD.h.

◆ m_muonEfficiencySFTool

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

Definition at line 868 of file SUSYObjDef_xAOD.h.

◆ m_muonHighPtIsolationSFTool

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

Definition at line 872 of file SUSYObjDef_xAOD.h.

◆ m_muonIsolationSFTool

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

Definition at line 871 of file SUSYObjDef_xAOD.h.

◆ m_muonLRTORTool

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

Definition at line 875 of file SUSYObjDef_xAOD.h.

◆ m_muonSelectionHighPtTool

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

Definition at line 865 of file SUSYObjDef_xAOD.h.

◆ m_muonSelectionTool

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

Definition at line 864 of file SUSYObjDef_xAOD.h.

◆ m_muonSelectionToolBaseline

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

Definition at line 866 of file SUSYObjDef_xAOD.h.

◆ m_muonTerm

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

Definition at line 568 of file SUSYObjDef_xAOD.h.

◆ m_muonTriggerSFTool

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

Definition at line 873 of file SUSYObjDef_xAOD.h.

◆ m_muonTrigSFTools

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

Definition at line 874 of file SUSYObjDef_xAOD.h.

◆ m_muonTTVAEfficiencySFTool

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

Definition at line 870 of file SUSYObjDef_xAOD.h.

◆ m_muPt

double ST::SUSYObjDef_xAOD::m_muPt
protected

Definition at line 703 of file SUSYObjDef_xAOD.h.

◆ m_murequirepassedHighPtCuts

bool ST::SUSYObjDef_xAOD::m_murequirepassedHighPtCuts
protected

Definition at line 709 of file SUSYObjDef_xAOD.h.

◆ m_muTriggerSFCalibFilename

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

Definition at line 671 of file SUSYObjDef_xAOD.h.

◆ m_muTriggerSFCalibRelease

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

Definition at line 670 of file SUSYObjDef_xAOD.h.

◆ m_muz0

double ST::SUSYObjDef_xAOD::m_muz0
protected

Definition at line 706 of file SUSYObjDef_xAOD.h.

◆ m_orApplyRelPt

bool ST::SUSYObjDef_xAOD::m_orApplyRelPt
protected

Definition at line 773 of file SUSYObjDef_xAOD.h.

◆ m_orBJetPtUpperThres

double ST::SUSYObjDef_xAOD::m_orBJetPtUpperThres
protected

Definition at line 782 of file SUSYObjDef_xAOD.h.

◆ m_orBoostedElectronC1

double ST::SUSYObjDef_xAOD::m_orBoostedElectronC1
protected

Definition at line 766 of file SUSYObjDef_xAOD.h.

◆ m_orBoostedElectronC2

double ST::SUSYObjDef_xAOD::m_orBoostedElectronC2
protected

Definition at line 767 of file SUSYObjDef_xAOD.h.

◆ m_orBoostedElectronMaxConeSize

double ST::SUSYObjDef_xAOD::m_orBoostedElectronMaxConeSize
protected

Definition at line 768 of file SUSYObjDef_xAOD.h.

◆ m_orBoostedMuonC1

double ST::SUSYObjDef_xAOD::m_orBoostedMuonC1
protected

Definition at line 770 of file SUSYObjDef_xAOD.h.

◆ m_orBoostedMuonC2

double ST::SUSYObjDef_xAOD::m_orBoostedMuonC2
protected

Definition at line 771 of file SUSYObjDef_xAOD.h.

◆ m_orBoostedMuonMaxConeSize

double ST::SUSYObjDef_xAOD::m_orBoostedMuonMaxConeSize
protected

Definition at line 772 of file SUSYObjDef_xAOD.h.

◆ m_orBtagWP

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

Definition at line 779 of file SUSYObjDef_xAOD.h.

◆ m_orDoBjet

bool ST::SUSYObjDef_xAOD::m_orDoBjet
protected

Definition at line 761 of file SUSYObjDef_xAOD.h.

◆ m_orDoBoostedElectron

bool ST::SUSYObjDef_xAOD::m_orDoBoostedElectron
protected

Definition at line 765 of file SUSYObjDef_xAOD.h.

◆ m_orDoBoostedMuon

bool ST::SUSYObjDef_xAOD::m_orDoBoostedMuon
protected

Definition at line 769 of file SUSYObjDef_xAOD.h.

◆ m_orDoElBjet

bool ST::SUSYObjDef_xAOD::m_orDoElBjet
protected

Definition at line 762 of file SUSYObjDef_xAOD.h.

◆ m_orDoEleJet

bool ST::SUSYObjDef_xAOD::m_orDoEleJet
protected

Definition at line 757 of file SUSYObjDef_xAOD.h.

◆ m_orDoElEl

bool ST::SUSYObjDef_xAOD::m_orDoElEl
protected

Definition at line 758 of file SUSYObjDef_xAOD.h.

◆ m_orDoElMu

bool ST::SUSYObjDef_xAOD::m_orDoElMu
protected

Definition at line 759 of file SUSYObjDef_xAOD.h.

◆ m_orDoFatjets

bool ST::SUSYObjDef_xAOD::m_orDoFatjets
protected

Definition at line 785 of file SUSYObjDef_xAOD.h.

◆ m_orDoMuBjet

bool ST::SUSYObjDef_xAOD::m_orDoMuBjet
protected

Definition at line 763 of file SUSYObjDef_xAOD.h.

◆ m_orDoMuonJet

bool ST::SUSYObjDef_xAOD::m_orDoMuonJet
protected

Definition at line 760 of file SUSYObjDef_xAOD.h.

◆ m_orDoMuonJetGhostAssociation

bool ST::SUSYObjDef_xAOD::m_orDoMuonJetGhostAssociation
protected

Definition at line 777 of file SUSYObjDef_xAOD.h.

◆ m_orDoPhoton

bool ST::SUSYObjDef_xAOD::m_orDoPhoton
protected

Definition at line 756 of file SUSYObjDef_xAOD.h.

◆ m_orDoTau

bool ST::SUSYObjDef_xAOD::m_orDoTau
protected

Overlap removal options.

Definition at line 755 of file SUSYObjDef_xAOD.h.

◆ m_orDoTauBjet

bool ST::SUSYObjDef_xAOD::m_orDoTauBjet
protected

Definition at line 764 of file SUSYObjDef_xAOD.h.

◆ m_orInputLabel

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

Definition at line 780 of file SUSYObjDef_xAOD.h.

◆ m_orLinkOverlapObjects

bool ST::SUSYObjDef_xAOD::m_orLinkOverlapObjects
protected

Definition at line 783 of file SUSYObjDef_xAOD.h.

◆ m_orMuJetInnerDR

double ST::SUSYObjDef_xAOD::m_orMuJetInnerDR
protected

Definition at line 776 of file SUSYObjDef_xAOD.h.

◆ m_orMuJetPtRatio

double ST::SUSYObjDef_xAOD::m_orMuJetPtRatio
protected

Definition at line 774 of file SUSYObjDef_xAOD.h.

◆ m_orMuJetTrkPtRatio

double ST::SUSYObjDef_xAOD::m_orMuJetTrkPtRatio
protected

Definition at line 775 of file SUSYObjDef_xAOD.h.

◆ m_orPhotonFavoured

bool ST::SUSYObjDef_xAOD::m_orPhotonFavoured
protected

Definition at line 781 of file SUSYObjDef_xAOD.h.

◆ m_orRemoveCaloMuons

bool ST::SUSYObjDef_xAOD::m_orRemoveCaloMuons
protected

Definition at line 778 of file SUSYObjDef_xAOD.h.

◆ m_orToolbox

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

Definition at line 978 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 891 of file SUSYObjDef_xAOD.h.

◆ m_outMETTerm

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

Definition at line 573 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 876 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 625 of file SUSYObjDef_xAOD.h.

◆ m_photonAllowLate

bool ST::SUSYObjDef_xAOD::m_photonAllowLate
protected

Definition at line 722 of file SUSYObjDef_xAOD.h.

◆ m_photonBaselineCrackVeto

bool ST::SUSYObjDef_xAOD::m_photonBaselineCrackVeto
protected

Definition at line 720 of file SUSYObjDef_xAOD.h.

◆ m_photonBaselineEta

double ST::SUSYObjDef_xAOD::m_photonBaselineEta
protected

Definition at line 717 of file SUSYObjDef_xAOD.h.

◆ m_photonBaselineIso_WP

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

Definition at line 661 of file SUSYObjDef_xAOD.h.

◆ m_photonBaselinePt

double ST::SUSYObjDef_xAOD::m_photonBaselinePt
protected

Definition at line 716 of file SUSYObjDef_xAOD.h.

◆ m_photonCrackVeto

bool ST::SUSYObjDef_xAOD::m_photonCrackVeto
protected

Definition at line 721 of file SUSYObjDef_xAOD.h.

◆ m_photonEfficiencySFTool

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

Definition at line 900 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 905 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 904 of file SUSYObjDef_xAOD.h.

◆ m_photonEta

double ST::SUSYObjDef_xAOD::m_photonEta
protected

Definition at line 718 of file SUSYObjDef_xAOD.h.

◆ m_photonId

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

Definition at line 648 of file SUSYObjDef_xAOD.h.

◆ m_photonIdBaseline

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

Definition at line 649 of file SUSYObjDef_xAOD.h.

◆ m_photonIdBaselineDFName

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

Definition at line 985 of file SUSYObjDef_xAOD.h.

◆ m_photonIdDFName

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

Definition at line 986 of file SUSYObjDef_xAOD.h.

◆ m_photonIso_WP

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

Definition at line 662 of file SUSYObjDef_xAOD.h.

◆ m_photonIsolationSFTool

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

Definition at line 901 of file SUSYObjDef_xAOD.h.

◆ m_photonPt

double ST::SUSYObjDef_xAOD::m_photonPt
protected

Definition at line 719 of file SUSYObjDef_xAOD.h.

◆ m_photonSelIsEM

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

Definition at line 897 of file SUSYObjDef_xAOD.h.

◆ m_photonSelIsEMBaseline

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

Definition at line 898 of file SUSYObjDef_xAOD.h.

◆ m_photonTrigEffTools

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

Definition at line 907 of file SUSYObjDef_xAOD.h.

◆ m_photonTriggerName

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

Definition at line 663 of file SUSYObjDef_xAOD.h.

◆ m_photonTriggerSFTool

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

Definition at line 902 of file SUSYObjDef_xAOD.h.

◆ m_photonTrigSFTools

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

Definition at line 906 of file SUSYObjDef_xAOD.h.

◆ m_pmgSHnjetWeighter

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

Definition at line 980 of file SUSYObjDef_xAOD.h.

◆ m_pmgSHnjetWeighterWZ

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

Definition at line 981 of file SUSYObjDef_xAOD.h.

◆ m_prwActualMu2017File

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

Definition at line 612 of file SUSYObjDef_xAOD.h.

◆ m_prwActualMu2018File

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

Definition at line 613 of file SUSYObjDef_xAOD.h.

◆ m_prwActualMu2022File

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

Definition at line 614 of file SUSYObjDef_xAOD.h.

◆ m_prwActualMu2023File

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

Definition at line 615 of file SUSYObjDef_xAOD.h.

◆ m_prwActualMu2024File

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

Definition at line 616 of file SUSYObjDef_xAOD.h.

◆ m_prwConfFiles

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

Definition at line 610 of file SUSYObjDef_xAOD.h.

◆ m_prwDataSF

double ST::SUSYObjDef_xAOD::m_prwDataSF
protected

Definition at line 618 of file SUSYObjDef_xAOD.h.

◆ m_prwDataSF_DW

double ST::SUSYObjDef_xAOD::m_prwDataSF_DW
protected

Definition at line 620 of file SUSYObjDef_xAOD.h.

◆ m_prwDataSF_UP

double ST::SUSYObjDef_xAOD::m_prwDataSF_UP
protected

Definition at line 619 of file SUSYObjDef_xAOD.h.

◆ m_prwLcalcFiles

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

Definition at line 611 of file SUSYObjDef_xAOD.h.

◆ m_prwTool

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

Definition at line 973 of file SUSYObjDef_xAOD.h.

◆ m_runDepPrescaleWeightPRW

bool ST::SUSYObjDef_xAOD::m_runDepPrescaleWeightPRW
protected

Definition at line 621 of file SUSYObjDef_xAOD.h.

◆ m_runECIS

bool ST::SUSYObjDef_xAOD::m_runECIS
protected

Definition at line 660 of file SUSYObjDef_xAOD.h.

◆ m_showerType

int ST::SUSYObjDef_xAOD::m_showerType
protected

Definition at line 805 of file SUSYObjDef_xAOD.h.

◆ m_slices

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

Definition at line 799 of file SUSYObjDef_xAOD.h.

◆ m_softTermParam

int ST::SUSYObjDef_xAOD::m_softTermParam
protected

Definition at line 587 of file SUSYObjDef_xAOD.h.

◆ m_strictConfigCheck

bool ST::SUSYObjDef_xAOD::m_strictConfigCheck
protected

Definition at line 537 of file SUSYObjDef_xAOD.h.

◆ m_subtool_init

bool ST::SUSYObjDef_xAOD::m_subtool_init
protected

Definition at line 562 of file SUSYObjDef_xAOD.h.

◆ m_tau_id_support

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

Definition at line 627 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 638 of file SUSYObjDef_xAOD.h.

◆ m_tauConfigPath

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

Definition at line 727 of file SUSYObjDef_xAOD.h.

◆ m_tauConfigPathBaseline

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

Definition at line 728 of file SUSYObjDef_xAOD.h.

◆ m_tauConfigReader

TEnv ST::SUSYObjDef_xAOD::m_tauConfigReader
protected

Definition at line 732 of file SUSYObjDef_xAOD.h.

◆ m_tauDoTTM

bool ST::SUSYObjDef_xAOD::m_tauDoTTM
protected

Definition at line 729 of file SUSYObjDef_xAOD.h.

◆ m_tauEffTool

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

Definition at line 917 of file SUSYObjDef_xAOD.h.

◆ m_tauEta

double ST::SUSYObjDef_xAOD::m_tauEta
protected

Definition at line 726 of file SUSYObjDef_xAOD.h.

◆ m_tauId

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

Definition at line 650 of file SUSYObjDef_xAOD.h.

◆ m_tauIdBaseline

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

Definition at line 651 of file SUSYObjDef_xAOD.h.

◆ m_tauJetORtool

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

Definition at line 977 of file SUSYObjDef_xAOD.h.

◆ m_tauPrePtCut

double ST::SUSYObjDef_xAOD::m_tauPrePtCut
protected

Definition at line 724 of file SUSYObjDef_xAOD.h.

◆ m_tauPt

double ST::SUSYObjDef_xAOD::m_tauPt
protected

Definition at line 725 of file SUSYObjDef_xAOD.h.

◆ m_tauSelTool

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

Definition at line 913 of file SUSYObjDef_xAOD.h.

◆ m_tauSelToolBaseline

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

Definition at line 914 of file SUSYObjDef_xAOD.h.

◆ m_tauSmearingTool

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

Definition at line 915 of file SUSYObjDef_xAOD.h.

◆ m_tauSmearingToolGenerator

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

Definition at line 731 of file SUSYObjDef_xAOD.h.

◆ m_tauSmearingToolRecommendationTag

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

Definition at line 730 of file SUSYObjDef_xAOD.h.

◆ m_tauTerm

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

Definition at line 566 of file SUSYObjDef_xAOD.h.

◆ m_tauTrigEffTool

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

Definition at line 918 of file SUSYObjDef_xAOD.h.

◆ m_tauTruthMatch

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

Definition at line 916 of file SUSYObjDef_xAOD.h.

◆ m_tool_init

bool ST::SUSYObjDef_xAOD::m_tool_init
protected

Definition at line 561 of file SUSYObjDef_xAOD.h.

◆ m_TopconfigReader

TEnv ST::SUSYObjDef_xAOD::m_TopconfigReader
protected

Definition at line 547 of file SUSYObjDef_xAOD.h.

◆ m_TopDecorName

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

Definition at line 550 of file SUSYObjDef_xAOD.h.

◆ m_ToptagConfig

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

Definition at line 553 of file SUSYObjDef_xAOD.h.

◆ m_TopTaggerCalibArea

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

Definition at line 555 of file SUSYObjDef_xAOD.h.

◆ m_TopTaggerTool

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

Definition at line 844 of file SUSYObjDef_xAOD.h.

◆ m_TopTagjetUncertaintiesTool

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

Definition at line 848 of file SUSYObjDef_xAOD.h.

◆ m_TopTagUncConfig

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

Definition at line 558 of file SUSYObjDef_xAOD.h.

◆ m_treatPUJets

bool ST::SUSYObjDef_xAOD::m_treatPUJets
protected

Definition at line 588 of file SUSYObjDef_xAOD.h.

◆ m_trig2015combination_diLep

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

Definition at line 937 of file SUSYObjDef_xAOD.h.

◆ m_trig2015combination_diPhoton

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

Definition at line 953 of file SUSYObjDef_xAOD.h.

◆ m_trig2015combination_multiLep

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

Definition at line 945 of file SUSYObjDef_xAOD.h.

◆ m_trig2015combination_singleLep

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

Definition at line 930 of file SUSYObjDef_xAOD.h.

◆ m_trig2016combination_diLep

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

Definition at line 938 of file SUSYObjDef_xAOD.h.

◆ m_trig2016combination_diPhoton

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

Definition at line 954 of file SUSYObjDef_xAOD.h.

◆ m_trig2016combination_multiLep

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

Definition at line 946 of file SUSYObjDef_xAOD.h.

◆ m_trig2016combination_singleLep

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

Definition at line 931 of file SUSYObjDef_xAOD.h.

◆ m_trig2017combination_diLep

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

Definition at line 939 of file SUSYObjDef_xAOD.h.

◆ m_trig2017combination_diPhoton

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

Definition at line 955 of file SUSYObjDef_xAOD.h.

◆ m_trig2017combination_multiLep

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

Definition at line 947 of file SUSYObjDef_xAOD.h.

◆ m_trig2017combination_singleLep

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

Definition at line 932 of file SUSYObjDef_xAOD.h.

◆ m_trig2018combination_diLep

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

Definition at line 940 of file SUSYObjDef_xAOD.h.

◆ m_trig2018combination_diPhoton

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

Definition at line 956 of file SUSYObjDef_xAOD.h.

◆ m_trig2018combination_multiLep

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

Definition at line 948 of file SUSYObjDef_xAOD.h.

◆ m_trig2018combination_singleLep

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

Definition at line 933 of file SUSYObjDef_xAOD.h.

◆ m_trig2022combination_diLep

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

Definition at line 941 of file SUSYObjDef_xAOD.h.

◆ m_trig2022combination_diPhoton

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

Definition at line 957 of file SUSYObjDef_xAOD.h.

◆ m_trig2022combination_multiLep

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

Definition at line 949 of file SUSYObjDef_xAOD.h.

◆ m_trig2022combination_singleLep

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

Definition at line 934 of file SUSYObjDef_xAOD.h.

◆ m_trigConfTool

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

Definition at line 960 of file SUSYObjDef_xAOD.h.

◆ m_trigDecTool

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

Definition at line 961 of file SUSYObjDef_xAOD.h.

◆ m_trigDRScoringTool

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

Definition at line 964 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 942 of file SUSYObjDef_xAOD.h.

◆ m_trigGlobalEffCorrTool_diPhoton

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

Definition at line 958 of file SUSYObjDef_xAOD.h.

◆ m_trigGlobalEffCorrTool_multiLep

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

Definition at line 950 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 525 of file SUSYObjDef_xAOD.h.

◆ m_trigMatchingTool

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

Definition at line 962 of file SUSYObjDef_xAOD.h.

◆ m_trigMatchScoringTool

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

Definition at line 963 of file SUSYObjDef_xAOD.h.

◆ m_trigNToys_diLep

int ST::SUSYObjDef_xAOD::m_trigNToys_diLep
protected

Definition at line 936 of file SUSYObjDef_xAOD.h.

◆ m_trigNToys_diPhoton

int ST::SUSYObjDef_xAOD::m_trigNToys_diPhoton
protected

Definition at line 952 of file SUSYObjDef_xAOD.h.

◆ m_trigNToys_multiLep

int ST::SUSYObjDef_xAOD::m_trigNToys_multiLep
protected

Definition at line 944 of file SUSYObjDef_xAOD.h.

◆ m_trkJetEta

double ST::SUSYObjDef_xAOD::m_trkJetEta
protected

Definition at line 743 of file SUSYObjDef_xAOD.h.

◆ m_trkJetPt

double ST::SUSYObjDef_xAOD::m_trkJetPt
protected

Definition at line 742 of file SUSYObjDef_xAOD.h.

◆ m_trkJetsyst

bool ST::SUSYObjDef_xAOD::m_trkJetsyst
protected

Definition at line 585 of file SUSYObjDef_xAOD.h.

◆ m_trkMETsyst

bool ST::SUSYObjDef_xAOD::m_trkMETsyst
protected

Definition at line 583 of file SUSYObjDef_xAOD.h.

◆ m_upstreamTriggerMatching

bool ST::SUSYObjDef_xAOD::m_upstreamTriggerMatching
protected

Definition at line 524 of file SUSYObjDef_xAOD.h.

◆ m_useBtagging

bool ST::SUSYObjDef_xAOD::m_useBtagging
protected

Definition at line 533 of file SUSYObjDef_xAOD.h.

◆ m_useBtagging_trkJet

bool ST::SUSYObjDef_xAOD::m_useBtagging_trkJet
protected

Definition at line 534 of file SUSYObjDef_xAOD.h.

◆ m_useCommonPRWFiles

bool ST::SUSYObjDef_xAOD::m_useCommonPRWFiles
protected

Definition at line 600 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 794 of file SUSYObjDef_xAOD.h.

◆ m_useTRUTH3

bool ST::SUSYObjDef_xAOD::m_useTRUTH3
protected

Definition at line 797 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 464 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 470 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 458 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 465 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 471 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 459 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 466 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 472 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 460 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 467 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 473 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 461 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 468 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 474 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 462 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 545 of file SUSYObjDef_xAOD.h.

◆ m_WDecorName

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

Definition at line 548 of file SUSYObjDef_xAOD.h.

◆ m_WtagConfig

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

Definition at line 551 of file SUSYObjDef_xAOD.h.

◆ m_WTaggerTool

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

Definition at line 842 of file SUSYObjDef_xAOD.h.

◆ m_WTagjetUncertaintiesTool

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

Definition at line 846 of file SUSYObjDef_xAOD.h.

◆ m_WTagUncConfig

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

Definition at line 556 of file SUSYObjDef_xAOD.h.

◆ m_WZTaggerCalibArea

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

Definition at line 554 of file SUSYObjDef_xAOD.h.

◆ m_ZconfigReader

TEnv ST::SUSYObjDef_xAOD::m_ZconfigReader
protected

Definition at line 546 of file SUSYObjDef_xAOD.h.

◆ m_ZDecorName

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

Definition at line 549 of file SUSYObjDef_xAOD.h.

◆ m_ZtagConfig

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

Definition at line 552 of file SUSYObjDef_xAOD.h.

◆ m_ZTaggerTool

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

Definition at line 843 of file SUSYObjDef_xAOD.h.

◆ m_ZTagjetUncertaintiesTool

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

Definition at line 847 of file SUSYObjDef_xAOD.h.

◆ m_ZTagUncConfig

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

Definition at line 557 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:
grepfile.info
info
Definition: grepfile.py:38
ST::SUSYObjDef_xAOD::m_WDecorName
std::string m_WDecorName
Definition: SUSYObjDef_xAOD.h:548
ST::SUSYObjDef_xAOD::m_v_trigs15_cache_singleLep
std::vector< std::string > m_v_trigs15_cache_singleLep
Definition: SUSYObjDef_xAOD.h:458
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:818
ST::SUSYObjDef_xAOD::m_orBoostedMuonC1
double m_orBoostedMuonC1
Definition: SUSYObjDef_xAOD.h:770
ST::SUSYObjDef_xAOD::m_autoconfigPRWCombinedmode
bool m_autoconfigPRWCombinedmode
Definition: SUSYObjDef_xAOD.h:594
ST::SUSYObjDef_xAOD::GetTauTriggerEfficiencySF
double GetTauTriggerEfficiencySF(const xAOD::TauJet &tau, const std::string &trigExpr="tau25_medium1_tracktwo") override final
Definition: Taus.cxx:193
python.Dso.registry
registry
Definition: Control/AthenaServices/python/Dso.py:159
ST::SUSYObjDef_xAOD::m_muonEfficiencySFTool
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonEfficiencySFTool
Definition: SUSYObjDef_xAOD.h:868
asg::AnaToolHandle::initialize
StatusCode initialize()
initialize the tool
ST::SUSYObjDef_xAOD::m_badJetCut
std::string m_badJetCut
Definition: SUSYObjDef_xAOD.h:539
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:970
ST::SUSYObjDef_xAOD::m_photonIdBaselineDFName
std::string m_photonIdBaselineDFName
Definition: SUSYObjDef_xAOD.h:985
ST::SUSYObjDef_xAOD::m_autoconfigPRWRtags
std::string m_autoconfigPRWRtags
Definition: SUSYObjDef_xAOD.h:596
ST::SUSYObjDef_xAOD::m_outElectronLocation
SG::WriteHandleKey< xAOD::ElectronContainer > m_outElectronLocation
Definition: SUSYObjDef_xAOD.h:891
xAOD::TrackParticle_v1::pt
virtual double pt() const override final
The transverse momentum ( ) of the particle.
Definition: TrackParticle_v1.cxx:73
CP::IMuonLRTOverlapRemovalTool::defaultStrategy
@ defaultStrategy
Definition: IMuonLRTOverlapRemovalTool.h:38
ST::SUSYObjDef_xAOD::m_GSFLRTCollectionName
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_GSFLRTCollectionName
Definition: SUSYObjDef_xAOD.h:478
ST::SUSYObjDef_xAOD::m_orBoostedElectronC1
double m_orBoostedElectronC1
Definition: SUSYObjDef_xAOD.h:766
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:771
LikeEnum::Loose
@ Loose
Definition: LikelihoodEnums.h:12
ST::SUSYObjDef_xAOD::m_acc_photonIdBaseline
SG::ConstAccessor< char > m_acc_photonIdBaseline
Definition: SUSYObjDef_xAOD.h:991
TrigJetMonitorAlgorithm.jetcoll
jetcoll
Definition: TrigJetMonitorAlgorithm.py:1219
ST::SUSYObjDef_xAOD::m_photonBaselinePt
double m_photonBaselinePt
Definition: SUSYObjDef_xAOD.h:716
ST::SUSYObjDef_xAOD::IsHighPtMuon
bool IsHighPtMuon(const xAOD::Muon &input) const override final
Definition: Muons.cxx:385
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:899
ST::SUSYObjDef_xAOD::m_eleIdExpert
bool m_eleIdExpert
Definition: SUSYObjDef_xAOD.h:645
ST::SUSYObjDef_xAOD::m_doPhiReso
bool m_doPhiReso
Definition: SUSYObjDef_xAOD.h:589
ST::SUSYObjDef_xAOD::m_jetfJvtEfficiencyTool
asg::AnaToolHandle< CP::IJvtEfficiencyTool > m_jetfJvtEfficiencyTool
Definition: SUSYObjDef_xAOD.h:840
ST::SUSYObjDef_xAOD::m_tauSelTool
asg::AnaToolHandle< TauAnalysisTools::ITauSelectionTool > m_tauSelTool
Definition: SUSYObjDef_xAOD.h:913
xAOD::muon
@ muon
Definition: TrackingPrimitives.h:196
isGaugino
bool isGaugino(const T &p)
Definition: AtlasPID.h:483
ST::SUSYObjDef_xAOD::m_ZconfigReader
TEnv m_ZconfigReader
Definition: SUSYObjDef_xAOD.h:546
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:556
ST::SUSYObjDef_xAOD::m_trig2022combination_multiLep
std::string m_trig2022combination_multiLep
Definition: SUSYObjDef_xAOD.h:949
ST::SUSYObjDef_xAOD::m_doTTVAsf
bool m_doTTVAsf
Definition: SUSYObjDef_xAOD.h:522
ST::SUSYObjDef_xAOD::m_commonPRWFileMC23e
std::string m_commonPRWFileMC23e
Definition: SUSYObjDef_xAOD.h:608
CP::SystematicVariation::CONTINUOUS
@ CONTINUOUS
Definition: SystematicVariation.h:79
ST::SUSYObjDef_xAOD::m_fJvtWP
std::string m_fJvtWP
Definition: SUSYObjDef_xAOD.h:746
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:227
ST::SUSYObjDef_xAOD::m_metDoSetMuonJetEMScale
bool m_metDoSetMuonJetEMScale
Definition: SUSYObjDef_xAOD.h:575
ST::SUSYObjDef_xAOD::m_v_trigs18_cache_diLep
std::vector< std::string > m_v_trigs18_cache_diLep
Definition: SUSYObjDef_xAOD.h:467
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
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:847
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:702
ST::SUSYObjDef_xAOD::m_trigGlobalEffCorrTool_multiLep
asg::AnaToolHandle< ITrigGlobalEfficiencyCorrectionTool > m_trigGlobalEffCorrTool_multiLep
Definition: SUSYObjDef_xAOD.h:950
ST::SUSYObjDef_xAOD::IsTrackBJetContinuous
int IsTrackBJetContinuous(const xAOD::Jet &input) const override final
Definition: Jets.cxx:816
asg::AnaToolHandle::isUserConfigured
bool isUserConfigured() const noexcept
whether this tool handle has been configured by the user
ST::SUSYObjDef_xAOD::IsTruthBJet
bool IsTruthBJet(const xAOD::Jet &input) const override final
Definition: Truth.cxx:301
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
xAOD::Electron
Electron_v1 Electron
Definition of the current "egamma version".
Definition: Event/xAOD/xAODEgamma/xAODEgamma/Electron.h:17
xAOD::Egamma
Egamma_v1 Egamma
Definition of the current "egamma version".
Definition: Egamma.h:17
ST::SUSYObjDef_xAOD::m_jetTerm
std::string m_jetTerm
Definition: SUSYObjDef_xAOD.h:567
ST::SUSYObjDef_xAOD::m_trig2022combination_diPhoton
std::string m_trig2022combination_diPhoton
Definition: SUSYObjDef_xAOD.h:957
ST::SUSYObjDef_xAOD::m_trigNToys_diLep
int m_trigNToys_diLep
Definition: SUSYObjDef_xAOD.h:936
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:529
asg::AsgMetadataTool::beginEvent
virtual StatusCode beginEvent()
Function called when a new events is loaded.
Definition: AsgMetadataTool.cxx:196
ST::SUSYObjDef_xAOD::m_prwActualMu2022File
std::string m_prwActualMu2022File
Definition: SUSYObjDef_xAOD.h:614
ST::SUSYObjDef_xAOD::m_jesConfigAFII
std::string m_jesConfigAFII
Definition: SUSYObjDef_xAOD.h:856
ST::SUSYObjDef_xAOD::m_BtagSystStrategy
std::string m_BtagSystStrategy
Definition: SUSYObjDef_xAOD.h:676
get_generator_info.result
result
Definition: get_generator_info.py:21
ST::SUSYObjDef_xAOD::m_tauIdBaseline
std::string m_tauIdBaseline
Definition: SUSYObjDef_xAOD.h:651
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:186
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:395
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:805
ST::SUSYObjDef_xAOD::m_elecChargeEffCorrTool
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecChargeEffCorrTool
Definition: SUSYObjDef_xAOD.h:911
ST::SUSYObjDef_xAOD::prepareLRTMuons
StatusCode prepareLRTMuons(const xAOD::MuonContainer *inMuons, xAOD::MuonContainer *copy) const override final
Definition: Muons.cxx:73
ST::SUSYObjDef_xAOD::m_photonTrigEffTools
ToolHandleArray< IAsgPhotonEfficiencyCorrectionTool > m_photonTrigEffTools
Definition: SUSYObjDef_xAOD.h:907
ST::SUSYObjDef_xAOD::m_acc_eleId
SG::ConstAccessor< char > m_acc_eleId
Definition: SUSYObjDef_xAOD.h:990
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:626
ST::SUSYObjDef_xAOD::m_eleIsoHighPt_WP
std::string m_eleIsoHighPt_WP
Definition: SUSYObjDef_xAOD.h:653
ST::SUSYObjDef_xAOD::m_BtagWP
std::string m_BtagWP
Definition: SUSYObjDef_xAOD.h:672
ST::SUSYObjDef_xAOD::m_eleAllowRun3TrigSFFallback
bool m_eleAllowRun3TrigSFFallback
Definition: SUSYObjDef_xAOD.h:697
ST::SUSYObjDef_xAOD::m_egammaCalibTool
asg::AnaToolHandle< CP::IEgammaCalibrationAndSmearingTool > m_egammaCalibTool
Combined electron collection.
Definition: SUSYObjDef_xAOD.h:894
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:546
ST::SUSYObjDef_xAOD::m_trig2016combination_diPhoton
std::string m_trig2016combination_diPhoton
Definition: SUSYObjDef_xAOD.h:954
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:989
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:1799
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:576
CP::make_systematics_vector
std::vector< CP::SystematicSet > make_systematics_vector(const SystematicSet &systematics)
utility functions for working with systematics
Definition: SystematicsUtil.cxx:25
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
ST::SUSYObjDef_xAOD::m_outMETTerm
std::string m_outMETTerm
Definition: SUSYObjDef_xAOD.h:573
WBosonLRSM
@ WBosonLRSM
Definition: TruthClasses.h:71
ST::SUSYObjDef_xAOD::m_label_truthKey
SG::ReadDecorHandleKey< xAOD::JetContainer > m_label_truthKey
Definition: SUSYObjDef_xAOD.h:850
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_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:776
ST::SUSYObjDef_xAOD::m_muonEfficiencyBMHighPtSFTool
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonEfficiencyBMHighPtSFTool
Definition: SUSYObjDef_xAOD.h:869
CP::IIsolationCorrectionTool::applyCorrection
virtual CP::CorrectionCode applyCorrection(xAOD::Egamma &)=0
ST::SUSYObjDef_xAOD::m_muBaselinePt
double m_muBaselinePt
Definition: SUSYObjDef_xAOD.h:701
ST::SUSYObjDef_xAOD::m_pmgSHnjetWeighterWZ
asg::AnaToolHandle< IWeightTool > m_pmgSHnjetWeighterWZ
Definition: SUSYObjDef_xAOD.h:981
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)=0
collListGuids.line
string line
Definition: collListGuids.py:77
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:470
ST::SUSYObjDef_xAOD::m_legsPerTool
std::map< std::string, std::string > m_legsPerTool
Definition: SUSYObjDef_xAOD.h:822
ST::SUSYObjDef_xAOD::m_ZTagUncConfig
std::string m_ZTagUncConfig
Definition: SUSYObjDef_xAOD.h:557
ST::SUSYObjDef_xAOD::m_orDoElBjet
bool m_orDoElBjet
Definition: SUSYObjDef_xAOD.h:762
IAsgDeadHVCellRemovalTool::accept
virtual bool accept(const xAOD::Egamma *part) const =0
ST::SUSYObjDef_xAOD::m_tauSmearingToolGenerator
std::string m_tauSmearingToolGenerator
Definition: SUSYObjDef_xAOD.h:731
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:958
asg::AnaToolHandle::retrieve
StatusCode retrieve()
initialize the tool
ST::SUSYObjDef_xAOD::m_photonBaselineCrackVeto
bool m_photonBaselineCrackVeto
Definition: SUSYObjDef_xAOD.h:720
ST::SUSYObjDef_xAOD::m_fatJetUncertaintiesPDsmearing
bool m_fatJetUncertaintiesPDsmearing
Definition: SUSYObjDef_xAOD.h:542
IMETMaker::markInvisible
virtual StatusCode markInvisible(const xAOD::IParticleContainer *collection, xAOD::MissingETAssociationHelper &helper, xAOD::MissingETContainer *metCont)=0
ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_reco
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_reco
Combined muon collection.
Definition: SUSYObjDef_xAOD.h:878
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:600
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:1830
AthAnalysisHelper::setProperty
static StatusCode setProperty(const std::string &name, const std::string &property, const W &value, bool override=true)
Definition: AthAnalysisHelper.h:79
ST::SUSYObjDef_xAOD::m_elecSelLikelihood
asg::AnaToolHandle< IAsgElectronLikelihoodTool > m_elecSelLikelihood
Definition: SUSYObjDef_xAOD.h:895
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:207
ST::SUSYObjDef_xAOD::m_orMuJetPtRatio
double m_orMuJetPtRatio
Definition: SUSYObjDef_xAOD.h:774
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:886
ST::SUSYObjDef_xAOD::GetTriggerTokens
void GetTriggerTokens(std::string, std::vector< std::string > &, std::vector< std::string > &, std::vector< std::string > &, std::vector< std::string > &, std::vector< std::string > &) const
Definition: Trigger.cxx:338
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
ST::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:601
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:836
ST::SUSYObjDef_xAOD::m_muTriggerSFCalibRelease
std::string m_muTriggerSFCalibRelease
Definition: SUSYObjDef_xAOD.h:670
ST::SUSYObjDef_xAOD::IsBadMuon
bool IsBadMuon(const xAOD::Muon &input, const float qopcut) const override final
Definition: Muons.cxx:404
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:678
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:749
ST::SUSYObjDef_xAOD::m_doElIsoSignal
bool m_doElIsoSignal
Definition: SUSYObjDef_xAOD.h:790
PATCore::ParticleDataType::Fast
@ Fast
Definition: PATCoreEnums.h:22
ST::SUSYObjDef_xAOD::m_photonTriggerSFTool
asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > m_photonTriggerSFTool
Definition: SUSYObjDef_xAOD.h:902
ST::SUSYObjDef_xAOD::m_isoBaselineTool
asg::AnaToolHandle< CP::IIsolationSelectionTool > m_isoBaselineTool
Definition: SUSYObjDef_xAOD.h:969
ST::SUSYObjDef_xAOD::m_elecTrigEffTools
ToolHandleArray< IAsgElectronEfficiencyCorrectionTool > m_elecTrigEffTools
Definition: SUSYObjDef_xAOD.h:889
ST::SUSYObjDef_xAOD::m_JvtConfigRun2
std::string m_JvtConfigRun2
Definition: SUSYObjDef_xAOD.h:739
ST::SUSYObjDef_xAOD::m_tauSmearingTool
asg::AnaToolHandle< TauAnalysisTools::ITauSmearingTool > m_tauSmearingTool
Definition: SUSYObjDef_xAOD.h:915
ST::SUSYObjDef_xAOD::m_muPt
double m_muPt
Definition: SUSYObjDef_xAOD.h:703
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:516
ST::SUSYObjDef_xAOD::IsCosmicMuon
bool IsCosmicMuon(const xAOD::Muon &input, const float z0cut, const float d0cut) const override final
Definition: Muons.cxx:443
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:628
PlotCalibFromCool.begin
begin
Definition: PlotCalibFromCool.py:94
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:930
ST::SUSYObjDef_xAOD::configFromFile
void configFromFile(bool &property, const std::string &propname, TEnv &rEnv, bool defaultValue)
Definition: SUSYObjDef_xAOD.cxx:1252
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:574
ST::SUSYObjDef_xAOD::m_metMaker
asg::AnaToolHandle< IMETMaker > m_metMaker
Definition: SUSYObjDef_xAOD.h:926
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:956
ST::SUSYObjDef_xAOD::m_trigNToys_diPhoton
int m_trigNToys_diPhoton
Definition: SUSYObjDef_xAOD.h:952
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:963
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:625
ST::SUSYObjDef_xAOD::m_TopTaggerTool
asg::AnaToolHandle< JSSWTopTaggerDNN > m_TopTaggerTool
Definition: SUSYObjDef_xAOD.h:844
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
ST::SUSYObjDef_xAOD::m_orBtagWP
std::string m_orBtagWP
Definition: SUSYObjDef_xAOD.h:779
ST::SUSYObjDef_xAOD::m_elePt
double m_elePt
Definition: SUSYObjDef_xAOD.h:688
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:88
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:646
ST::SUSYObjDef_xAOD::m_photonIso_WP
std::string m_photonIso_WP
Definition: SUSYObjDef_xAOD.h:662
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:748
ST::SUSYObjDef_xAOD::m_v_trigs18_cache_singleLep
std::vector< std::string > m_v_trigs18_cache_singleLep
Definition: SUSYObjDef_xAOD.h:461
CP::SystematicSet::name
std::string name() const
returns: the systematics joined into a single string.
Definition: SystematicSet.cxx:278
ST::SUSYObjDef_xAOD::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:791
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:870
ST::SUSYObjDef_xAOD::m_el_iso_fallback
std::map< std::string, std::string > m_el_iso_fallback
Definition: SUSYObjDef_xAOD.h:632
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:520
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:595
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:707
ST::SUSYObjDef_xAOD::m_BtagMinPt
double m_BtagMinPt
Definition: SUSYObjDef_xAOD.h:674
LArG4GenerateShowerLib.condition
condition
Definition: LArG4GenerateShowerLib.py:19
ST::SUSYObjDef_xAOD::m_commonPRWFileMC21a
std::string m_commonPRWFileMC21a
Definition: SUSYObjDef_xAOD.h:604
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
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:616
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:814
ST::SUSYObjDef_xAOD::m_trkJetsyst
bool m_trkJetsyst
Definition: SUSYObjDef_xAOD.h:585
ST::SUSYObjDef_xAOD::IsSignalPhoton
bool IsSignalPhoton(const xAOD::Photon &input, const float ptcut, const float etacut=DUMMYDEF) const override final
Definition: Photons.cxx:164
IMETSignificance::GetSignificance
virtual double GetSignificance() const =0
ST::SUSYObjDef_xAOD::m_photonEta
double m_photonEta
Definition: SUSYObjDef_xAOD.h:718
isSquark
bool isSquark(const T &p)
Definition: AtlasPID.h:434
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:755
hotSpotInTAG.amiTag
amiTag
Definition: hotSpotInTAG.py:102
ST::SUSYObjDef_xAOD::m_v_trigs18_cache_singleEle
std::vector< std::string > m_v_trigs18_cache_singleEle
Definition: SUSYObjDef_xAOD.h:455
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:973
ST::SUSYObjDef_xAOD::m_muBaselineIso_WP
std::string m_muBaselineIso_WP
Definition: SUSYObjDef_xAOD.h:664
ST::SUSYObjDef_xAOD::m_trig2016combination_multiLep
std::string m_trig2016combination_multiLep
Definition: SUSYObjDef_xAOD.h:946
ST::SUSYObjDef_xAOD::m_inputMETSuffix
std::string m_inputMETSuffix
Definition: SUSYObjDef_xAOD.h:569
ST::SUSYObjDef_xAOD::m_WTaggerTool
asg::AnaToolHandle< SmoothedWZTagger > m_WTaggerTool
Definition: SUSYObjDef_xAOD.h:842
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:643
ST::SUSYObjDef_xAOD::GetPrimVtx
const xAOD::Vertex * GetPrimVtx() const override final
Definition: SUSYObjDef_xAOD.cxx:2914
ST::ISUSYObjDef_xAODTool::Undefined
@ Undefined
Definition: ISUSYObjDef_xAODTool.h:475
met::JETTRK
@ JETTRK
Definition: IMETSystematicsTool.h:50
asg::AsgMetadataTool::endInputFile
virtual StatusCode endInputFile()
Function called when the currently open input file got completely processed.
Definition: AsgMetadataTool.cxx:188
ST::SUSYObjDef_xAOD::m_v_trigs22_cache_singleLep
std::vector< std::string > m_v_trigs22_cache_singleLep
Definition: SUSYObjDef_xAOD.h:462
ST::SUSYObjDef_xAOD::m_bTaggingCalibrationFilePath
std::string m_bTaggingCalibrationFilePath
Definition: SUSYObjDef_xAOD.h:820
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:691
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:578
ST::SUSYObjDef_xAOD::m_photonTrigSFTools
ToolHandleArray< IAsgPhotonEfficiencyCorrectionTool > m_photonTrigSFTools
Definition: SUSYObjDef_xAOD.h:906
ST::SUSYObjDef_xAOD::m_orDoFatjets
bool m_orDoFatjets
Definition: SUSYObjDef_xAOD.h:785
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:962
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:828
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:1284
CP::SystematicVariation
Definition: SystematicVariation.h:47
ZBoson
@ ZBoson
Definition: TruthClasses.h:67
ST::BTag
@ BTag
Definition: ISUSYObjDef_xAODTool.h:80
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:343
ST::SUSYObjDef_xAOD::m_elebaselined0sig
double m_elebaselined0sig
Definition: SUSYObjDef_xAOD.h:693
python.AtlRunQueryAMI.year
year
Definition: AtlRunQueryAMI.py:226
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:535
ST::SUSYObjDef_xAOD::m_elecLRTORTool
asg::AnaToolHandle< CP::IElectronLRTOverlapRemovalTool > m_elecLRTORTool
Definition: SUSYObjDef_xAOD.h:890
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:955
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:244
ST::SUSYObjDef_xAOD::m_doMuIsoSignal
bool m_doMuIsoSignal
Definition: SUSYObjDef_xAOD.h:792
ST::SUSYObjDef_xAOD::m_muonTerm
std::string m_muonTerm
Definition: SUSYObjDef_xAOD.h:568
ST::SUSYObjDef_xAOD::m_mu_iso_support
std::vector< std::string > m_mu_iso_support
Definition: SUSYObjDef_xAOD.h:629
ST::SUSYObjDef_xAOD::m_tau_id_support
std::vector< std::string > m_tau_id_support
Definition: SUSYObjDef_xAOD.h:627
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
xAOD::JetInput::LCTopo
@ LCTopo
Definition: JetContainerInfo.h:55
ST::SUSYObjDef_xAOD::m_muCosmicd0
double m_muCosmicd0
Definition: SUSYObjDef_xAOD.h:711
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:543
ST::SUSYObjDef_xAOD::m_orDoBjet
bool m_orDoBjet
Definition: SUSYObjDef_xAOD.h:761
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)=0
ST::SUSYObjDef_xAOD::m_eleEffMapFilePath
std::string m_eleEffMapFilePath
Definition: SUSYObjDef_xAOD.h:695
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:756
ST::SUSYObjDef_xAOD::m_tool_init
bool m_tool_init
Definition: SUSYObjDef_xAOD.h:561
asg::AnaToolHandle::declarePropertyFor
void declarePropertyFor(T2 *tool, const std::string &name, const std::string &description="")
declare as property on the given tool
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
ST::SUSYObjDef_xAOD::m_jetJvtMomentTool
asg::AnaToolHandle< JetVertexTaggerTool > m_jetJvtMomentTool
Definition: SUSYObjDef_xAOD.h:835
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:641
ST::SUSYObjDef_xAOD::m_eleTerm
std::string m_eleTerm
Definition: SUSYObjDef_xAOD.h:564
xAOD::MissingETAssociationMap_v1
Definition: MissingETAssociationMap_v1.h:29
ST::SUSYObjDef_xAOD::isVariation
bool isVariation(const CP::SystematicSet &syst) const
Definition: SUSYObjDef_xAOD.cxx:2114
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:978
ST::SUSYObjDef_xAOD::m_mcChannel
int m_mcChannel
Definition: SUSYObjDef_xAOD.h:598
ST::SUSYObjDef_xAOD::m_tauConfigPath
std::string m_tauConfigPath
Definition: SUSYObjDef_xAOD.h:727
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
WBoson
@ WBoson
Definition: TruthClasses.h:66
ST::SUSYObjDef_xAOD::m_LRTCollectionName
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_LRTCollectionName
Definition: SUSYObjDef_xAOD.h:477
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
ST::SUSYObjDef_xAOD::m_photonBaselineEta
double m_photonBaselineEta
Definition: SUSYObjDef_xAOD.h:717
TauAnalysisTools::ELEIDRNNLOOSE
@ ELEIDRNNLOOSE
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:33
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:875
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:565
FSRPhot
@ FSRPhot
Definition: TruthClasses.h:96
ST::SUSYObjDef_xAOD::m_commonPRWFileMC20d
std::string m_commonPRWFileMC20d
Definition: SUSYObjDef_xAOD.h:602
ST::SUSYObjDef_xAOD::GetInDetLargeD0GSFTracks
const xAOD::TrackParticleContainer & GetInDetLargeD0GSFTracks(const EventContext &ctx) const override final
Definition: SUSYObjDef_xAOD.cxx:3082
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:993
ST::SUSYObjDef_xAOD::m_JvtPtMax
double m_JvtPtMax
Definition: SUSYObjDef_xAOD.h:738
dqt_zlumi_pandas.weight
int weight
Definition: dqt_zlumi_pandas.py:189
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
PrepareReferenceFile.regex
regex
Definition: PrepareReferenceFile.py:43
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:923
LArCellBinning_test.retval
def retval
Definition: LArCellBinning_test.py:112
xAOD::phi
setEt phi
Definition: TrigEMCluster_v1.cxx:29
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:466
ST::SUSYObjDef_xAOD::m_trkJetPt
double m_trkJetPt
Definition: SUSYObjDef_xAOD.h:742
ST::SUSYObjDef_xAOD::m_slices
std::map< std::string, bool > m_slices
Definition: SUSYObjDef_xAOD.h:799
ST::SUSYObjDef_xAOD::m_orLinkOverlapObjects
bool m_orLinkOverlapObjects
Definition: SUSYObjDef_xAOD.h:783
PATCore::ParticleDataType::Full
@ Full
Definition: PATCoreEnums.h:22
ST::SUSYObjDef_xAOD::m_eleEffMapFilePathRun2
std::string m_eleEffMapFilePathRun2
Definition: SUSYObjDef_xAOD.h:696
xAOD::JetConstitScaleMomentum
@ JetConstitScaleMomentum
Definition: JetTypes.h:29
ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_isoHighPt
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_isoHighPt
Definition: SUSYObjDef_xAOD.h:883
ST::SUSYObjDef_xAOD::m_trig2018combination_singleLep
std::string m_trig2018combination_singleLep
Definition: SUSYObjDef_xAOD.h:933
HiggsMSSM
@ HiggsMSSM
Definition: TruthClasses.h:69
ST::SUSYObjDef_xAOD::m_orBoostedMuonMaxConeSize
double m_orBoostedMuonMaxConeSize
Definition: SUSYObjDef_xAOD.h:772
ST::SUSYObjDef_xAOD::m_photonEfficiencySFTool
asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > m_photonEfficiencySFTool
Definition: SUSYObjDef_xAOD.h:900
ORUtils::ToolBox::eleJetORT
OverlapHandle_t eleJetORT
Definition: ToolBox.h:71
ST::Egamma
@ Egamma
Definition: ISUSYObjDef_xAODTool.h:75
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:638
ST::SUSYObjDef_xAOD::m_trigGlobalEffCorrTool_diLep
asg::AnaToolHandle< ITrigGlobalEfficiencyCorrectionTool > m_trigGlobalEffCorrTool_diLep
Definition: SUSYObjDef_xAOD.h:942
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:554
ST::SUSYObjDef_xAOD::m_isPHYSLITE
bool m_isPHYSLITE
Definition: SUSYObjDef_xAOD.h:801
ST::SUSYObjDef_xAOD::m_prwLcalcFiles
std::vector< std::string > m_prwLcalcFiles
Definition: SUSYObjDef_xAOD.h:611
ST::SUSYObjDef_xAOD::m_prwDataSF_DW
double m_prwDataSF_DW
Definition: SUSYObjDef_xAOD.h:620
ST::SUSYObjDef_xAOD::m_orDoBoostedMuon
bool m_orDoBoostedMuon
Definition: SUSYObjDef_xAOD.h:769
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:624
CP::CorrectionCode::Error
@ Error
Some error happened during the object correction.
Definition: CorrectionCode.h:36
ST::SUSYObjDef_xAOD::m_defaultJets
std::string m_defaultJets
Definition: SUSYObjDef_xAOD.h:807
ST::SUSYObjDef_xAOD::m_useBtagging
bool m_useBtagging
Definition: SUSYObjDef_xAOD.h:533
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:625
ST::Photon
@ Photon
Definition: ISUSYObjDef_xAODTool.h:77
met
Definition: IMETSignificance.h:24
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
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:887
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:555
ST::SUSYObjDef_xAOD::isWeight
bool isWeight(const CP::SystematicSet &systSet) const
Definition: SUSYObjDef_xAOD.cxx:2103
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
ST::SUSYObjDef_xAOD::m_jetEta
double m_jetEta
Definition: SUSYObjDef_xAOD.h:735
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ST::SUSYObjDef_xAOD::m_fatJetUncConfig
std::string m_fatJetUncConfig
Definition: SUSYObjDef_xAOD.h:541
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:3054
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:879
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:1329
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:732
ST::SUSYObjDef_xAOD::m_elez0
double m_elez0
Definition: SUSYObjDef_xAOD.h:692
ST::SUSYObjDef_xAOD::m_IsoCloseByORpassLabel
std::string m_IsoCloseByORpassLabel
Definition: SUSYObjDef_xAOD.h:795
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:730
SG::Decorator< char >
ST::SUSYObjDef_xAOD::m_jetUncertaintiesConfig
std::string m_jetUncertaintiesConfig
Prefix for trigger matchiing container name.
Definition: SUSYObjDef_xAOD.h:527
ST::SUSYObjDef_xAOD::m_jetCalibTool
asg::AnaToolHandle< IJetCalibrationTool > m_jetCalibTool
Definition: SUSYObjDef_xAOD.h:825
TrigVtx::gamma
@ gamma
Definition: TrigParticleTable.h:26
fillPileUpNoiseLumi.next
next
Definition: fillPileUpNoiseLumi.py:52
ST::SUSYObjDef_xAOD::m_mu_iso_fallback
std::map< std::string, std::string > m_mu_iso_fallback
Definition: SUSYObjDef_xAOD.h:633
ST::SUSYObjDef_xAOD::m_v_trigs22_cache_multiLep
std::vector< std::string > m_v_trigs22_cache_multiLep
Definition: SUSYObjDef_xAOD.h:474
ST::SUSYObjDef_xAOD::m_photonEfficiencySFTool_trigEff_AsymDiphoton
std::vector< asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > > m_photonEfficiencySFTool_trigEff_AsymDiphoton
Definition: SUSYObjDef_xAOD.h:905
ST::SUSYObjDef_xAOD::m_trigNToys_multiLep
int m_trigNToys_multiLep
Definition: SUSYObjDef_xAOD.h:944
TauAnalysisTools::ITauEfficiencyCorrectionsTool::getEfficiencyScaleFactor
virtual CP::CorrectionCode getEfficiencyScaleFactor(const xAOD::TauJet &xTau, double &eff, unsigned int iRunNumber=0, unsigned int iMu=0)=0
Declare the interface that the class provides.
ST::SUSYObjDef_xAOD::m_BtagTagger
std::string m_BtagTagger
Definition: SUSYObjDef_xAOD.h:673
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:904
ST::SUSYObjDef_xAOD::isNominal
bool isNominal(const CP::SystematicSet &syst) const
Definition: SUSYObjDef_xAOD.cxx:2099
ST::SUSYObjDef_xAOD::GetMuonTriggerEfficiency
double GetMuonTriggerEfficiency(const xAOD::Muon &mu, const std::string &trigExpr, const bool isdata=false) override final
Definition: Muons.cxx:532
ST::SUSYObjDef_xAOD::m_orDoEleJet
bool m_orDoEleJet
Definition: SUSYObjDef_xAOD.h:757
ST::SUSYObjDef_xAOD::m_orPhotonFavoured
bool m_orPhotonFavoured
Definition: SUSYObjDef_xAOD.h:781
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:862
ST::SUSYObjDef_xAOD::m_eleChIso
bool m_eleChIso
Definition: SUSYObjDef_xAOD.h:658
IDTPM::nSCTHits
float nSCTHits(const U &p)
Definition: TrackParametersHelper.h:393
ST::ISUSYObjDef_xAODTool::Data
@ Data
Definition: ISUSYObjDef_xAODTool.h:476
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:932
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:871
ST::SUSYObjDef_xAOD::m_jetCleanDFName
std::string m_jetCleanDFName
Definition: SUSYObjDef_xAOD.h:987
ST::SUSYObjDef_xAOD::m_jesCalibSeq
std::string m_jesCalibSeq
Definition: SUSYObjDef_xAOD.h:859
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
met::getSystType
SystType getSystType(const CP::SystematicVariation &systematic)
Definition: IMETSystematicsTool.h:53
ST::SUSYObjDef_xAOD::m_jetUncertaintiesTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_jetUncertaintiesTool
Definition: SUSYObjDef_xAOD.h:827
ST::SUSYObjDef_xAOD::m_muEta
double m_muEta
Definition: SUSYObjDef_xAOD.h:704
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:591
ST::SUSYObjDef_xAOD::m_orApplyRelPt
bool m_orApplyRelPt
Definition: SUSYObjDef_xAOD.h:773
xAOD::TauJet_v3
Class describing a tau jet.
Definition: TauJet_v3.h:41
python.LArMinBiasAlgConfig.int
int
Definition: LArMinBiasAlgConfig.py:59
asg::AsgMetadataTool::beginInputFile
virtual StatusCode beginInputFile()
Function called when a new input file is opened.
Definition: AsgMetadataTool.cxx:180
ST::SUSYObjDef_xAOD::m_v_trigs17_cache_singleLep
std::vector< std::string > m_v_trigs17_cache_singleLep
Definition: SUSYObjDef_xAOD.h:460
master.flag
bool flag
Definition: master.py:29
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
ST::SUSYObjDef_xAOD::m_muTriggerSFCalibFilename
std::string m_muTriggerSFCalibFilename
Definition: SUSYObjDef_xAOD.h:671
ST::SUSYObjDef_xAOD::m_muonCalibTool
asg::AnaToolHandle< CP::IMuonCalibrationAndSmearingTool > m_muonCalibTool
Definition: SUSYObjDef_xAOD.h:867
ST::SUSYObjDef_xAOD::m_ZTaggerTool
asg::AnaToolHandle< SmoothedWZTagger > m_ZTaggerTool
Definition: SUSYObjDef_xAOD.h:843
ST::SUSYObjDef_xAOD::m_orDoMuBjet
bool m_orDoMuBjet
Definition: SUSYObjDef_xAOD.h:763
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:947
ST::SUSYObjDef_xAOD::m_orRemoveCaloMuons
bool m_orRemoveCaloMuons
Definition: SUSYObjDef_xAOD.h:778
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:618
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:854
ST::SUSYObjDef_xAOD::m_tauTerm
std::string m_tauTerm
Definition: SUSYObjDef_xAOD.h:566
ST::SUSYObjDef_xAOD::m_jetJvt
double m_jetJvt
Definition: SUSYObjDef_xAOD.h:736
ST::SUSYObjDef_xAOD::m_eleIdDFName
std::string m_eleIdDFName
Definition: SUSYObjDef_xAOD.h:984
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:93
python.BunchSpacingUtils.rn
rn
Definition: BunchSpacingUtils.py:87
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:530
ST::SUSYObjDef_xAOD::m_commonPRWFileMC20e
std::string m_commonPRWFileMC20e
Definition: SUSYObjDef_xAOD.h:603
asg::AsgMetadataTool::metaDataStop
virtual StatusCode metaDataStop()
Function called when the tool should write out its metadata.
Definition: AsgMetadataTool.cxx:204
plotIsoValidation.el
el
Definition: plotIsoValidation.py:197
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:1214
ST::SUSYObjDef_xAOD::m_jetUncertaintiesAnalysisFile
std::string m_jetUncertaintiesAnalysisFile
Definition: SUSYObjDef_xAOD.h:528
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:823
ST::SUSYObjDef_xAOD::m_WconfigReader
TEnv m_WconfigReader
Definition: SUSYObjDef_xAOD.h:545
ST::SUSYObjDef_xAOD::m_jetfJvtSelectionTool
asg::AnaToolHandle< IAsgSelectionTool > m_jetfJvtSelectionTool
Definition: SUSYObjDef_xAOD.h:839
python.xAODType.dummy
dummy
Definition: xAODType.py:4
ST::SUSYObjDef_xAOD::m_photonSelIsEM
asg::AnaToolHandle< IAsgPhotonIsEMSelector > m_photonSelIsEM
Definition: SUSYObjDef_xAOD.h:897
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
ST::SUSYObjDef_xAOD::m_trig2016combination_diLep
std::string m_trig2016combination_diLep
Definition: SUSYObjDef_xAOD.h:938
ST::SUSYObjDef_xAOD::m_jetUncertaintiesPDsmearing
bool m_jetUncertaintiesPDsmearing
Definition: SUSYObjDef_xAOD.h:531
ST::SUSYObjDef_xAOD::m_metSystTool
asg::AnaToolHandle< IMETSystematicsTool > m_metSystTool
Definition: SUSYObjDef_xAOD.h:927
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:682
ST::SUSYObjDef_xAOD::m_v_trigs15_cache_diLep
std::vector< std::string > m_v_trigs15_cache_diLep
Definition: SUSYObjDef_xAOD.h:464
ST::SUSYObjDef_xAOD::m_orDoElEl
bool m_orDoElEl
Definition: SUSYObjDef_xAOD.h:758
ST::SUSYObjDef_xAOD::m_muIsoHighPtThresh
double m_muIsoHighPtThresh
Definition: SUSYObjDef_xAOD.h:667
ST::SUSYObjDef_xAOD::m_jetPileupLabelingTool
asg::AnaToolHandle< JetPileupLabelingTool > m_jetPileupLabelingTool
Definition: SUSYObjDef_xAOD.h:834
ST::SUSYObjDef_xAOD::m_trigMatchingPrefix
std::string m_trigMatchingPrefix
Use composite trigger matching tool if matching was done upstream.
Definition: SUSYObjDef_xAOD.h:525
ST::SUSYObjDef_xAOD::m_eleChID_signal
bool m_eleChID_signal
Definition: SUSYObjDef_xAOD.h:659
ORUtils::ToolBox::tauJetORT
OverlapHandle_t tauJetORT
Definition: ToolBox.h:75
ST::SUSYObjDef_xAOD::m_metUseGhostMuons
bool m_metUseGhostMuons
Definition: SUSYObjDef_xAOD.h:577
ST::SUSYObjDef_xAOD::m_WTagjetUncertaintiesTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_WTagjetUncertaintiesTool
Definition: SUSYObjDef_xAOD.h:846
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:914
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:619
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:940
ST::SUSYObjDef_xAOD::m_jesConfigFat
std::string m_jesConfigFat
Definition: SUSYObjDef_xAOD.h:857
ST::SUSYObjDef_xAOD::m_runECIS
bool m_runECIS
Definition: SUSYObjDef_xAOD.h:660
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:941
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:983
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:665
xAOD::numberOfSCTHoles
@ numberOfSCTHoles
number of SCT holes [unit8_t].
Definition: TrackingPrimitives.h:271
ST::ISUSYObjDef_xAODTool::FullSim
@ FullSim
Definition: ISUSYObjDef_xAODTool.h:477
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:945
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:924
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:829
ICPJetUncertaintiesTool::applyCorrection
virtual CP::CorrectionCode applyCorrection(xAOD::Jet &input) const =0
ST::SUSYObjDef_xAOD::m_jesCalibSeqJMS
std::string m_jesCalibSeqJMS
Definition: SUSYObjDef_xAOD.h:860
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:34
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:556
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
xAOD::JetInput::EMPFlow
@ EMPFlow
Definition: JetContainerInfo.h:64
ST::SUSYObjDef_xAOD::m_runDepPrescaleWeightPRW
bool m_runDepPrescaleWeightPRW
Definition: SUSYObjDef_xAOD.h:621
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:612
ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_trigEff_singleLep
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_trigEff_singleLep
Definition: SUSYObjDef_xAOD.h:881
ST::SUSYObjDef_xAOD::GetEventInfo
const xAOD::EventInfo * GetEventInfo() const override final
Definition: SUSYObjDef_xAOD.cxx:2975
ST::SUSYObjDef_xAOD::m_orDoElMu
bool m_orDoElMu
Definition: SUSYObjDef_xAOD.h:759
ST::SUSYObjDef_xAOD::m_tauJetORtool
asg::AnaToolHandle< ORUtils::IOverlapTool > m_tauJetORtool
Definition: SUSYObjDef_xAOD.h:977
ST::SUSYObjDef_xAOD::m_jetPt
double m_jetPt
Definition: SUSYObjDef_xAOD.h:734
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:661
xAOD::FileMetaData_v1
Class holding file-level metadata about an xAOD file.
Definition: FileMetaData_v1.h:34
isSUSY
bool isSUSY(const T &p)
PDG rule 11d Fundamental supersymmetric particles are identified by adding a nonzero n to the particl...
Definition: AtlasPID.h:428
TrigConf::name
Definition: HLTChainList.h:35
ST::SUSYObjDef_xAOD::m_eleId
std::string m_eleId
Definition: SUSYObjDef_xAOD.h:640
ST::SUSYObjDef_xAOD::m_muIdBaseline
int m_muIdBaseline
Definition: SUSYObjDef_xAOD.h:647
DeMoScan.runnumber
runnumber
Definition: DeMoScan.py:266
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: TrackSummaryTool.h:32
part2
Definition: part2.py:1
ST::SUSYObjDef_xAOD::m_eleIso_WP
std::string m_eleIso_WP
Definition: SUSYObjDef_xAOD.h:652
met::SOFTTRK
@ SOFTTRK
Definition: IMETSystematicsTool.h:49
ST::SUSYObjDef_xAOD::m_photonAllowLate
bool m_photonAllowLate
Definition: SUSYObjDef_xAOD.h:722
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:882
ST::SUSYObjDef_xAOD::m_prwConfFiles
std::vector< std::string > m_prwConfFiles
Definition: SUSYObjDef_xAOD.h:610
ST::SUSYObjDef_xAOD::m_metJetSelection
std::string m_metJetSelection
Definition: SUSYObjDef_xAOD.h:803
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:916
LikeEnum::Tight
@ Tight
Definition: LikelihoodEnums.h:15
ST::SUSYObjDef_xAOD::m_eleLRT
bool m_eleLRT
Definition: SUSYObjDef_xAOD.h:656
ST::SUSYObjDef_xAOD::m_trig2022combination_singleLep
std::string m_trig2022combination_singleLep
Definition: SUSYObjDef_xAOD.h:934
ST::SUSYObjDef_xAOD::m_fJvtPtMax
double m_fJvtPtMax
Definition: SUSYObjDef_xAOD.h:747
ST::SUSYObjDef_xAOD::EG_WP
std::string EG_WP(const std::string &wp) const
Definition: SUSYObjDef_xAOD.cxx:1221
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:571
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
grepfile.sep
sep
Definition: grepfile.py:38
ST::SUSYObjDef_xAOD::check_isOption
bool check_isOption(const std::string &wp, const std::vector< std::string > &list) const
Definition: SUSYObjDef_xAOD.cxx:1209
xAOD::MissingETContainer_v1
Container for xAOD::MissingET_v1 objects.
Definition: MissingETContainer_v1.h:21
ST::SUSYObjDef_xAOD::m_eleForceFullSimCalib
bool m_eleForceFullSimCalib
Definition: SUSYObjDef_xAOD.h:698
ST::SUSYObjDef_xAOD::m_elecSelLikelihoodBaseline
asg::AnaToolHandle< IAsgElectronLikelihoodTool > m_elecSelLikelihoodBaseline
Definition: SUSYObjDef_xAOD.h:896
ST::SUSYObjDef_xAOD::m_subtool_init
bool m_subtool_init
Definition: SUSYObjDef_xAOD.h:562
ST::SUSYObjDef_xAOD::m_trigConfTool
asg::AnaToolHandle< TrigConf::ITrigConfigTool > m_trigConfTool
Definition: SUSYObjDef_xAOD.h:960
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:203
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:679
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_ToptagConfig
std::string m_ToptagConfig
Definition: SUSYObjDef_xAOD.h:553
ST::Muon
@ Muon
Definition: ISUSYObjDef_xAODTool.h:78
ST::SUSYObjDef_xAOD::m_tauEffTool
asg::AnaToolHandle< TauAnalysisTools::ITauEfficiencyCorrectionsTool > m_tauEffTool
Definition: SUSYObjDef_xAOD.h:917
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:35
xAOD::JetAttribute::AverageLArQF
@ AverageLArQF
Definition: JetAttributes.h:85
ST::SUSYObjDef_xAOD::m_tauPt
double m_tauPt
Definition: SUSYObjDef_xAOD.h:725
ST::SUSYObjDef_xAOD::m_muonSelectionToolBaseline
asg::AnaToolHandle< CP::IMuonSelectionTool > m_muonSelectionToolBaseline
Definition: SUSYObjDef_xAOD.h:866
ST::SUSYObjDef_xAOD::m_trkMETsyst
bool m_trkMETsyst
Definition: SUSYObjDef_xAOD.h:583
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:584
ST::SUSYObjDef_xAOD::m_JMScalib
bool m_JMScalib
Definition: SUSYObjDef_xAOD.h:752
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:706
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
ST::SUSYObjDef_xAOD::m_JvtWP
std::string m_JvtWP
Definition: SUSYObjDef_xAOD.h:737
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:2883
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:534
xAOD::FileMetaData_v1::amiTag
@ amiTag
AMI tag used to process the file the last time [string].
Definition: FileMetaData_v1.h:58
ST::SUSYObjDef_xAOD::m_force_noMuId
bool m_force_noMuId
Definition: SUSYObjDef_xAOD.h:521
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:745
AtlCoolConsole.tool
tool
Definition: AtlCoolConsole.py:453
ST::SUSYObjDef_xAOD::FillTau
StatusCode FillTau(xAOD::TauJet &input) override final
Definition: Taus.cxx:76
ST::SUSYObjDef_xAOD::m_isoCloseByTool
asg::AnaToolHandle< CP::IIsolationCloseByCorrectionTool > m_isoCloseByTool
Definition: SUSYObjDef_xAOD.h:971
ST::SUSYObjDef_xAOD::m_muEffCorrForce1D
bool m_muEffCorrForce1D
Definition: SUSYObjDef_xAOD.h:669
ST::SUSYObjDef_xAOD::m_elecEfficiencySFTool_trig_singleLep
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_trig_singleLep
Definition: SUSYObjDef_xAOD.h:880
ST::SUSYObjDef_xAOD::m_trig2018combination_multiLep
std::string m_trig2018combination_multiLep
Definition: SUSYObjDef_xAOD.h:948
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:922
xAOD::TruthEventBase_v1::nTruthParticles
size_t nTruthParticles() const
Get the number of truth particles.
IMETSystematicsTool::setRandomSeed
virtual void setRandomSeed(int seed) const =0
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:601
checkTriggerxAOD.found
found
Definition: checkTriggerxAOD.py:328
ST::SUSYObjDef_xAOD::m_muonSelectionHighPtTool
asg::AnaToolHandle< CP::IMuonSelectionTool > m_muonSelectionHighPtTool
Definition: SUSYObjDef_xAOD.h:865
TrigJetMonitorAlgorithm.items
items
Definition: TrigJetMonitorAlgorithm.py:71
ST::SUSYObjDef_xAOD::m_photonId
std::string m_photonId
Definition: SUSYObjDef_xAOD.h:648
item
Definition: ItemListSvc.h:43
ST::SUSYObjDef_xAOD::m_fJvtConfigRun3
std::string m_fJvtConfigRun3
Definition: SUSYObjDef_xAOD.h:750
xAOD::MissingETAssociationHelper
Definition: MissingETAssociationHelper.h:26
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:743
ST::SUSYObjDef_xAOD::m_BtagWP_trkJet
std::string m_BtagWP_trkJet
Definition: SUSYObjDef_xAOD.h:680
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:830
ST::SUSYObjDef_xAOD::m_fatjetFFSmearingTool
asg::AnaToolHandle< ICPJetCorrectionTool > m_fatjetFFSmearingTool
Definition: SUSYObjDef_xAOD.h:831
xAOD::ShallowAuxContainer::setName
void setName(const char *name)
Set the name of the container instance.
Definition: ShallowAuxContainer.cxx:600
met::SOFTCALO
@ SOFTCALO
Definition: IMETSystematicsTool.h:48
ST::SUSYObjDef_xAOD::m_dataSource
int m_dataSource
Definition: SUSYObjDef_xAOD.h:515
ST::SUSYObjDef_xAOD::m_badmuQoverP
double m_badmuQoverP
Definition: SUSYObjDef_xAOD.h:712
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:876
ST::Electron
@ Electron
Definition: ISUSYObjDef_xAODTool.h:76
isSlepton
bool isSlepton(const T &p)
Definition: AtlasPID.h:465
ST::Jet
@ Jet
Definition: ISUSYObjDef_xAODTool.h:74
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
ST::SUSYObjDef_xAOD::m_EleFatJetDR
double m_EleFatJetDR
Definition: SUSYObjDef_xAOD.h:786
ST::SUSYObjDef_xAOD::m_elebaselinez0
double m_elebaselinez0
Definition: SUSYObjDef_xAOD.h:694
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:710
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:431
ST::SUSYObjDef_xAOD::getSystInfo
ST::SystInfo getSystInfo(const CP::SystematicVariation &sys) const override final
Definition: SUSYObjDef_xAOD.cxx:2565
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:81
ST::SUSYObjDef_xAOD::m_btagSelTool
asg::AnaToolHandle< IBTaggingSelectionTool > m_btagSelTool
Definition: SUSYObjDef_xAOD.h:921
ST::MET_CST
@ MET_CST
Definition: ISUSYObjDef_xAODTool.h:82
ST::SUSYObjDef_xAOD::m_orDoTauBjet
bool m_orDoTauBjet
Definition: SUSYObjDef_xAOD.h:764
ST::SUSYObjDef_xAOD::m_jetNNJvtSelectionTool
asg::AnaToolHandle< IAsgSelectionTool > m_jetNNJvtSelectionTool
Definition: SUSYObjDef_xAOD.h:837
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:67
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:775
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:465
ST::SUSYObjDef_xAOD::m_muonTriggerSFTool
asg::AnaToolHandle< CP::IMuonTriggerScaleFactors > m_muonTriggerSFTool
Definition: SUSYObjDef_xAOD.h:873
ST::SUSYObjDef_xAOD::m_eleCrackVeto
bool m_eleCrackVeto
Definition: SUSYObjDef_xAOD.h:690
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
ST::SUSYObjDef_xAOD::m_mubaselinez0
double m_mubaselinez0
Definition: SUSYObjDef_xAOD.h:708
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:129
ST::SUSYObjDef_xAOD::getElSFkeys
std::vector< std::string > getElSFkeys(const std::string &mapFile) const
Definition: SUSYObjDef_xAOD.cxx:1233
ST::SUSYObjDef_xAOD::m_jesConfigJMSData
std::string m_jesConfigJMSData
Definition: SUSYObjDef_xAOD.h:855
ST::SUSYObjDef_xAOD::m_trig2016combination_singleLep
std::string m_trig2016combination_singleLep
Definition: SUSYObjDef_xAOD.h:931
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:920
Trig::TrigDecisionTool::finalize
StatusCode finalize()
Definition: TrigDecisionTool.cxx:234
ST::SUSYObjDef_xAOD::m_fatJets
std::string m_fatJets
Definition: SUSYObjDef_xAOD.h:809
ST::SUSYObjDef_xAOD::m_elecChargeIDSelectorTool
asg::AnaToolHandle< IAsgElectronLikelihoodTool > m_elecChargeIDSelectorTool
Definition: SUSYObjDef_xAOD.h:910
ST::SUSYObjDef_xAOD::m_muCalibrationMode
int m_muCalibrationMode
Definition: SUSYObjDef_xAOD.h:713
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:587
xAOD::EventInfo_v1::beamPosSigmaXY
float beamPosSigmaXY() const
The beam spot shape's X-Y correlation.
ST::SUSYObjDef_xAOD::m_strictConfigCheck
bool m_strictConfigCheck
Definition: SUSYObjDef_xAOD.h:537
ST::SUSYObjDef_xAOD::m_orBoostedElectronMaxConeSize
double m_orBoostedElectronMaxConeSize
Definition: SUSYObjDef_xAOD.h:768
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:644
ST::SUSYObjDef_xAOD::m_inputMETMap
std::string m_inputMETMap
Definition: SUSYObjDef_xAOD.h:570
ST::SUSYObjDef_xAOD::m_BtagTagger_trkJet
std::string m_BtagTagger_trkJet
Definition: SUSYObjDef_xAOD.h:681
ST::SUSYObjDef_xAOD::m_autoconfigPRWRPVmode
bool m_autoconfigPRWRPVmode
Definition: SUSYObjDef_xAOD.h:595
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:650
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:1934
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:816
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:473
ST::SUSYObjDef_xAOD::m_JetFatJetDR
double m_JetFatJetDR
Definition: SUSYObjDef_xAOD.h:787
ST::SUSYObjDef_xAOD::m_configFile
std::string m_configFile
Definition: SUSYObjDef_xAOD.h:518
ST::SUSYObjDef_xAOD::m_JetTruthLabelName
std::string m_JetTruthLabelName
Definition: SUSYObjDef_xAOD.h:559
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:765
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:898
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:479
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:719
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:580
ST::SUSYObjDef_xAOD::GetTriggerGlobalEfficiencySF
double GetTriggerGlobalEfficiencySF(const xAOD::ElectronContainer &electrons, const xAOD::MuonContainer &muons, const std::string &trigExpr="diLepton") override final
Definition: Trigger.cxx:398
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:961
ST::SUSYObjDef_xAOD::m_isRun3
bool m_isRun3
Definition: SUSYObjDef_xAOD.h:800
ST::SUSYObjDef_xAOD::m_metsysConfigPrefix
std::string m_metsysConfigPrefix
Definition: SUSYObjDef_xAOD.h:581
ST::SUSYObjDef_xAOD::m_defaultTrackJets
std::string m_defaultTrackJets
Definition: SUSYObjDef_xAOD.h:808
ST::SUSYObjDef_xAOD::m_eleEta
double m_eleEta
Definition: SUSYObjDef_xAOD.h:689
ST::SUSYObjDef_xAOD::m_prwActualMu2023File
std::string m_prwActualMu2023File
Definition: SUSYObjDef_xAOD.h:615
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:861
python.TriggerAPI.TriggerAPISession.chainName
chainName
Definition: TriggerAPISession.py:426
ST::SUSYObjDef_xAOD::m_TopTagUncConfig
std::string m_TopTagUncConfig
Definition: SUSYObjDef_xAOD.h:558
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:2137
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:813
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:588
ST::SUSYObjDef_xAOD::m_jesConfig
std::string m_jesConfig
Definition: SUSYObjDef_xAOD.h:853
xAOD::EgammaParameters::electron
@ electron
Definition: EgammaEnums.h:18
python.changerun.pv
pv
Definition: changerun.py:81
ST::SUSYObjDef_xAOD::m_tauConfigPathBaseline
std::string m_tauConfigPathBaseline
Definition: SUSYObjDef_xAOD.h:728
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:478
CaloCellTimeCorrFiller.filename
filename
Definition: CaloCellTimeCorrFiller.py:24
ST::SUSYObjDef_xAOD::m_autoconfigPRWPath
std::string m_autoconfigPRWPath
Definition: SUSYObjDef_xAOD.h:592
ST::SUSYObjDef_xAOD::m_photonIdDFName
std::string m_photonIdDFName
Definition: SUSYObjDef_xAOD.h:986
ST::SUSYObjDef_xAOD::m_jetFatCalibTool
asg::AnaToolHandle< IJetCalibrationTool > m_jetFatCalibTool
Definition: SUSYObjDef_xAOD.h:826
ST::SUSYObjDef_xAOD::m_electronTriggerSFStringSingle
std::string m_electronTriggerSFStringSingle
Definition: SUSYObjDef_xAOD.h:636
ST::SUSYObjDef_xAOD::m_jetNNJvtEfficiencyTool
asg::AnaToolHandle< CP::IJvtEfficiencyTool > m_jetNNJvtEfficiencyTool
Definition: SUSYObjDef_xAOD.h:838
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:726
ST::SUSYObjDef_xAOD::m_v_trigs17_cache_multiLep
std::vector< std::string > m_v_trigs17_cache_multiLep
Definition: SUSYObjDef_xAOD.h:472
ST::SUSYObjDef_xAOD::m_trig2017combination_diLep
std::string m_trig2017combination_diLep
Definition: SUSYObjDef_xAOD.h:939
ST::SUSYObjDef_xAOD::m_trigDRScoringTool
asg::AnaToolHandle< Trig::IMatchScoringTool > m_trigDRScoringTool
Definition: SUSYObjDef_xAOD.h:964
ST::SUSYObjDef_xAOD::m_trig2015combination_diLep
std::string m_trig2015combination_diLep
Definition: SUSYObjDef_xAOD.h:937
ST::SUSYObjDef_xAOD::m_jetTruthLabelingTool
asg::AnaToolHandle< JetTruthLabelingTool > m_jetTruthLabelingTool
Definition: SUSYObjDef_xAOD.h:845
ST::SUSYObjDef_xAOD::m_eleLRT_strat
int m_eleLRT_strat
Definition: SUSYObjDef_xAOD.h:657
ORUtils::ToolBox::phoJetORT
OverlapHandle_t phoJetORT
Definition: ToolBox.h:78
ST::SUSYObjDef_xAOD::m_ZDecorName
std::string m_ZDecorName
Definition: SUSYObjDef_xAOD.h:549
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:928
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:593
ST::SUSYObjDef_xAOD::m_v_trigs16_cache_singleLep
std::vector< std::string > m_v_trigs16_cache_singleLep
Definition: SUSYObjDef_xAOD.h:459
ST::SUSYObjDef_xAOD::m_jesConfigFatData
std::string m_jesConfigFatData
Definition: SUSYObjDef_xAOD.h:858
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)=0
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:685
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:606
dqt_zlumi_alleff_HIST.eff
int eff
Definition: dqt_zlumi_alleff_HIST.py:113
copySelective.source
string source
Definition: copySelective.py:32
ST::Unknown
@ Unknown
Definition: ISUSYObjDef_xAODTool.h:73
CP::IPileupReweightingTool::getPRWHash
virtual ULong64_t getPRWHash(const xAOD::EventInfo &eventInfo)=0
return the prw hash used for fast updates of weights at the post-processing level ....
ST::SUSYObjDef_xAOD::m_v_trigs16_cache_multiLep
std::vector< std::string > m_v_trigs16_cache_multiLep
Definition: SUSYObjDef_xAOD.h:471
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
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:642
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:668
xAOD::track
@ track
Definition: TrackingPrimitives.h:513
calibdata.copy
bool copy
Definition: calibdata.py:27
ST::SUSYObjDef_xAOD::m_photonTriggerName
std::string m_photonTriggerName
Definition: SUSYObjDef_xAOD.h:663
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
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:848
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:677
ST::SUSYObjDef_xAOD::m_orBoostedElectronC2
double m_orBoostedElectronC2
Definition: SUSYObjDef_xAOD.h:767
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_muLRT
bool m_muLRT
Definition: SUSYObjDef_xAOD.h:714
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:724
ST::SUSYObjDef_xAOD::MergeMuons
StatusCode MergeMuons(const xAOD::MuonContainer &muons, const std::vector< bool > &writeMuon, xAOD::MuonContainer *outputCol) const override final
Definition: Muons.cxx:55
TauAnalysisTools::JETIDNONEUNCONFIGURED
@ JETIDNONEUNCONFIGURED
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:13
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:468
ST::SUSYObjDef_xAOD::m_orInputLabel
std::string m_orInputLabel
Definition: SUSYObjDef_xAOD.h:780
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:552
ST::SUSYObjDef_xAOD::m_eleBaselineCrackVeto
bool m_eleBaselineCrackVeto
Definition: SUSYObjDef_xAOD.h:687
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:705
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:666
ST::SUSYObjDef_xAOD::m_murequirepassedHighPtCuts
bool m_murequirepassedHighPtCuts
Definition: SUSYObjDef_xAOD.h:709
ST::SUSYObjDef_xAOD::m_muonHighPtIsolationSFTool
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonHighPtIsolationSFTool
Definition: SUSYObjDef_xAOD.h:872
ST::SUSYObjDef_xAOD::m_photonIdBaseline
std::string m_photonIdBaseline
Definition: SUSYObjDef_xAOD.h:649
ST::SUSYObjDef_xAOD::treatAsYear
int treatAsYear(const int runNumber=-1) const override final
Definition: SUSYObjDef_xAOD.cxx:3111
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:53
ST::SUSYObjDef_xAOD::m_metGreedyPhotons
bool m_metGreedyPhotons
Definition: SUSYObjDef_xAOD.h:579
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:874
ST::SUSYObjDef_xAOD::m_jetCleaningTool
asg::AnaToolHandle< IJetSelector > m_jetCleaningTool
Definition: SUSYObjDef_xAOD.h:832
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:721
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:1008
ST::SUSYObjDef_xAOD::m_BtagKeyOverride
std::string m_BtagKeyOverride
Definition: SUSYObjDef_xAOD.h:675
asg::AnaToolHandle::empty
bool empty() const
whether this ToolHandle is completely empty, i.e.
python.compressB64.c
def c
Definition: compressB64.py:93
ST::SUSYObjDef_xAOD::m_commonPRWFileMC23a
std::string m_commonPRWFileMC23a
Definition: SUSYObjDef_xAOD.h:605
ST::SUSYObjDef_xAOD::m_orDoMuonJetGhostAssociation
bool m_orDoMuonJetGhostAssociation
Definition: SUSYObjDef_xAOD.h:777
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:966
ST::SUSYObjDef_xAOD::m_defaultTruthJets
std::string m_defaultTruthJets
Definition: SUSYObjDef_xAOD.h:810
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
ST::SUSYObjDef_xAOD::m_tauDoTTM
bool m_tauDoTTM
Definition: SUSYObjDef_xAOD.h:729
ST::SUSYObjDef_xAOD::m_elecTrigSFTools
ToolHandleArray< IAsgElectronEfficiencyCorrectionTool > m_elecTrigSFTools
Definition: SUSYObjDef_xAOD.h:888
ST::SUSYObjDef_xAOD::m_tauTrigEffTool
std::vector< asg::AnaToolHandle< TauAnalysisTools::ITauEfficiencyCorrectionsTool > > m_tauTrigEffTool
Definition: SUSYObjDef_xAOD.h:918
ST::SUSYObjDef_xAOD::m_mcCampaign
std::string m_mcCampaign
Definition: SUSYObjDef_xAOD.h:597
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:550
ST::SUSYObjDef_xAOD::m_orDoMuonJet
bool m_orDoMuonJet
Definition: SUSYObjDef_xAOD.h:760
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:607
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:3070
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:524
InDetDD::electrons
@ electrons
Definition: InDetDD_Defs.h:17
ST::SUSYObjDef_xAOD::m_LRTuncTool
asg::AnaToolHandle< InDet::IInclusiveTrackFilterTool > m_LRTuncTool
Definition: SUSYObjDef_xAOD.h:975
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:551
ST::SUSYObjDef_xAOD::m_useTRUTH3
bool m_useTRUTH3
Definition: SUSYObjDef_xAOD.h:797
ST::SUSYObjDef_xAOD::m_EG_corrFNList
std::string m_EG_corrFNList
Definition: SUSYObjDef_xAOD.h:817
ST::SUSYObjDef_xAOD::m_acc_photonId
SG::ConstAccessor< char > m_acc_photonId
Definition: SUSYObjDef_xAOD.h:992
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:356
ST::SUSYObjDef_xAOD::IsSignalTau
bool IsSignalTau(const xAOD::TauJet &input, const float ptcut, const float etacut) const override final
Definition: Taus.cxx:111
ST::SUSYObjDef_xAOD::m_photonIsolationSFTool
asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > m_photonIsolationSFTool
Definition: SUSYObjDef_xAOD.h:901
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:864
ST::SUSYObjDef_xAOD::m_useSigLepForIsoCloseByOR
bool m_useSigLepForIsoCloseByOR
Definition: SUSYObjDef_xAOD.h:794
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:686
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:909
ST::SUSYObjDef_xAOD::m_TopconfigReader
TEnv m_TopconfigReader
Definition: SUSYObjDef_xAOD.h:547
ST::SUSYObjDef_xAOD::m_prwActualMu2018File
std::string m_prwActualMu2018File
Definition: SUSYObjDef_xAOD.h:613
ST::SUSYObjDef_xAOD::m_doIsoSignal
bool m_doIsoSignal
Definition: SUSYObjDef_xAOD.h:789
ST::SUSYObjDef_xAOD::getDefaultJetUncConfig
std::string getDefaultJetUncConfig()
Definition: SUSYObjDef_xAOD.cxx:1823
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:654
ST::SUSYObjDef_xAOD::m_orBJetPtUpperThres
double m_orBJetPtUpperThres
Definition: SUSYObjDef_xAOD.h:782
ST::SUSYObjDef_xAOD::m_eleChID_WP
std::string m_eleChID_WP
Definition: SUSYObjDef_xAOD.h:655
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:953
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:967
ST::SUSYObjDef_xAOD::m_JvtConfigRun3
std::string m_JvtConfigRun3
Definition: SUSYObjDef_xAOD.h:740
ST::SUSYObjDef_xAOD::m_defaultSyst
CP::SystematicSet m_defaultSyst
Definition: SUSYObjDef_xAOD.h:812
ST::SUSYObjDef_xAOD::IsBJetLoose
bool IsBJetLoose(const xAOD::Jet &input) const override final
Definition: Jets.cxx:681
ST::SUSYObjDef_xAOD::m_pmgSHnjetWeighter
asg::AnaToolHandle< IWeightTool > m_pmgSHnjetWeighter
Definition: SUSYObjDef_xAOD.h:980