00001
00002
00003
00011 #ifndef SUSYTOOLS_SUSYOBJDEF_XAOD_H
00012 #define SUSYTOOLS_SUSYOBJDEF_XAOD_H
00013
00014
00015 #include "AsgTools/AsgMetadataTool.h"
00016
00017 #include "SUSYTools/ISUSYObjDef_xAODTool.h"
00018
00020 #include "PATInterfaces/SystematicCode.h"
00021 #include "PATInterfaces/SystematicSet.h"
00022 #include "PATInterfaces/SystematicRegistry.h"
00023 #include "PATInterfaces/SystematicVariation.h"
00024
00025 #include "AsgTools/ToolHandle.h"
00026 #include <AsgTools/AnaToolHandle.h>
00027
00028 #include "TEnv.h"
00029
00030
00031 #include "AssociationUtils/ToolBox.h"
00032 #include "AssociationUtils/IOverlapTool.h"
00033 #include "JetJvtEfficiency/IJetJvtEfficiency.h"
00034 #include "JetSubStructureUtils/BosonTag.h"
00035
00036 #include <map>
00037 #include <set>
00038 #include <iterator>
00039 #include <functional>
00040
00041
00042
00043 class IJetCalibrationTool;
00044 class IJERTool;
00045 class IJERSmearingTool;
00046 class ICPJetUncertaintiesTool;
00047 class IJetSelector;
00048 class IJetUpdateJvt;
00049 class IJetModifier;
00050
00051 class IAsgElectronLikelihoodTool;
00052 class IAsgElectronEfficiencyCorrectionTool;
00053 class IEGammaAmbiguityTool;
00054
00055 class IAsgPhotonIsEMSelector;
00056 class IAsgPhotonEfficiencyCorrectionTool;
00057 class IElectronPhotonShowerShapeFudgeTool;
00058
00059 class IBTaggingEfficiencyTool;
00060 class IBTaggingSelectionTool;
00061
00062 class IMETMaker;
00063 class IMETSystematicsTool;
00064
00065 namespace CP {
00066 class IMuonSelectionTool;
00067 class IMuonCalibrationAndSmearingTool;
00068 class IMuonEfficiencyScaleFactors;
00069 class IMuonTriggerScaleFactors;
00070
00071 class IEgammaCalibrationAndSmearingTool;
00072 class IEfficiencyScaleFactorTool;
00073 class IIsolationSelectionTool;
00074 class IIsolationCloseByCorrectionTool;
00075 class IIsolationCorrectionTool;
00076 class IPileupReweightingTool;
00077
00078 }
00079
00080 namespace TauAnalysisTools {
00081 class ITauSelectionTool;
00082 class ITauSmearingTool;
00083 class ITauEfficiencyCorrectionsTool;
00084 class ITauOverlappingElectronLLHDecorator;
00085 class ITauTruthMatchingTool;
00086 }
00087
00088 class TauWPDecorator;
00089
00090 namespace ORUtils {
00091 class IOverlapRemovalTool;
00092 }
00093
00094 namespace TrigConf {
00095 class ITrigConfigTool;
00096 }
00097 namespace Trig {
00098 class TrigDecisionTool;
00099 class IMatchingTool;
00100 class FeatureContainer;
00101 }
00102
00103 class IWeightTool;
00104
00105 namespace ST {
00106
00107
00108
00109 class SUSYObjDef_xAOD : public virtual ISUSYObjDef_xAODTool,
00110 public asg::AsgMetadataTool {
00111
00112
00113 ASG_TOOL_CLASS( SUSYObjDef_xAOD, ST::ISUSYObjDef_xAODTool)
00114
00115 public:
00116 SUSYObjDef_xAOD( const std::string& name );
00117 ~SUSYObjDef_xAOD();
00118
00119
00120 StatusCode initialize() override final;
00121
00122
00123
00124
00125 bool isData() const {return m_dataSource == Data;}
00126 bool isAtlfast() const {return m_dataSource == AtlfastII;}
00127
00128 int getMCShowerType(const std::string& sample_name="") const override final;
00129
00130 StatusCode setBoolProperty(const std::string& name, const bool& property) override final;
00131
00132
00133
00134 void setDataSource(int source);
00135
00136
00137 StatusCode FillJet(xAOD::Jet& input, const bool doCalib = true, bool isFat = false) override final;
00138 StatusCode FillTau(xAOD::TauJet& input) override final;
00139 StatusCode FillMuon(xAOD::Muon& input, const float ptcut, const float etacut) override final;
00140 StatusCode FillElectron(xAOD::Electron& input, const float etcut, const float etacut) override final;
00141 StatusCode FillPhoton(xAOD::Photon& input, const float ptcut, const float etacut) override final;
00142
00143 const xAOD::Vertex* GetPrimVtx() const override final;
00144
00145 StatusCode GetJets(xAOD::JetContainer*& copy, xAOD::ShallowAuxContainer*& copyaux, const bool recordSG = true, const std::string& jetkey = "", const xAOD::JetContainer* containerToBeCopied = 0) override final;
00146 StatusCode GetJetsSyst(const xAOD::JetContainer& calibjets, xAOD::JetContainer*& copy, xAOD::ShallowAuxContainer*& copyaux, const bool recordSG = true, const std::string& jetkey = "") override final;
00147 StatusCode GetFatJets(xAOD::JetContainer*& copy, xAOD::ShallowAuxContainer*& copyaux, const bool recordSG = false, const std::string& jetkey = "", const bool doLargeRdecorations = false, const xAOD::JetContainer* containerToBeCopied = 0) override final;
00148 StatusCode GetTaus(xAOD::TauJetContainer*& copy, xAOD::ShallowAuxContainer*& copyaux, const bool recordSG = true, const std::string& taukey = "TauJets", const xAOD::TauJetContainer* containerToBeCopied = 0) override final;
00149 StatusCode GetMuons(xAOD::MuonContainer*& copy, xAOD::ShallowAuxContainer*& copyaux, const bool recordSG = true, const std::string& muonkey = "Muons", const xAOD::MuonContainer* containerToBeCopied = 0) override final;
00150 StatusCode GetElectrons(xAOD::ElectronContainer*& copy, xAOD::ShallowAuxContainer*& copyaux, const bool recordSG = true, const std::string& elekey = "Electrons", const xAOD::ElectronContainer* containerToBeCopied = 0) override final;
00151 StatusCode GetPhotons(xAOD::PhotonContainer*& copy, xAOD::ShallowAuxContainer*& copyaux, const bool recordSG = true, const std::string& photonkey = "Photons", const xAOD::PhotonContainer* containerToBeCopied = 0) override final;
00152 StatusCode GetMET(xAOD::MissingETContainer& met,
00153 const xAOD::JetContainer* jet,
00154 const xAOD::ElectronContainer* elec = 0,
00155 const xAOD::MuonContainer* muon = 0,
00156 const xAOD::PhotonContainer* gamma = 0,
00157 const xAOD::TauJetContainer* taujet = 0,
00158 bool doTST = true, bool doJVTCut = true,
00159 const xAOD::IParticleContainer* invis = 0) override final;
00160
00161 StatusCode GetTrackMET(xAOD::MissingETContainer& met,
00162 const xAOD::JetContainer* jet,
00163 const xAOD::ElectronContainer* elec = 0,
00164 const xAOD::MuonContainer* muon = 0
00165
00166
00167 ) override final;
00168
00169 StatusCode setRunNumber(const int run_number) override final;
00170
00171
00172
00173
00174
00175 bool IsSignalJet(const xAOD::Jet& input, const float ptcut, const float etacut) const override final;
00176
00177 bool IsBadJet(const xAOD::Jet& input) const override final;
00178
00179 bool IsBJetLoose(const xAOD::Jet& input) const override final;
00180 bool JetPassJVT(xAOD::Jet& input, bool update_jvt) override final;
00181
00182
00183 bool IsSignalMuon(const xAOD::Muon& input, const float ptcut, const float d0sigcut, const float z0cut, const float etacut = DUMMYDEF) const override final;
00184
00185 bool IsSignalElectron(const xAOD::Electron& input, const float etcut, const float d0sigcut, const float z0cut, const float etacut = DUMMYDEF) const override final;
00186
00187 bool IsCosmicMuon(const xAOD::Muon& input, const float z0cut, const float d0cut) const override final;
00188
00189 bool IsHighPtMuon(const xAOD::Muon& input) const override final;
00190
00191
00192 bool IsSignalTau(const xAOD::TauJet& input, const float ptcut, const float etacut) const override final;
00193
00194 bool IsBadMuon(const xAOD::Muon& input, const float qopcut) const override final;
00195
00196 bool IsSignalPhoton(const xAOD::Photon& input, const float ptcut, const float etacut = DUMMYDEF) const override final;
00197
00198
00199
00200 bool IsBJet(const xAOD::Jet& input) const override final;
00201
00202 bool IsTruthBJet(const xAOD::Jet& input) const override final;
00203
00204 int IsBJetContinuous(const xAOD::Jet& input) const override final;
00205
00206 float BtagSF(const xAOD::JetContainer* jets) const override final;
00207
00208 float BtagSFsys(const xAOD::JetContainer* jets, const CP::SystematicSet& systConfig) override final;
00209
00210 double JVT_SF(const xAOD::JetContainer* jets) override final;
00211
00212 double JVT_SFsys(const xAOD::JetContainer* jets, const CP::SystematicSet& systConfig) override final;
00213
00214
00215
00216 float GetSignalMuonSF(const xAOD::Muon& mu, const bool recoSF = true, const bool isoSF = true, const bool doBadMuonHP = true, const bool warnOVR = true) override final;
00217
00218 double GetMuonTriggerEfficiency(const xAOD::Muon& mu, const std::string& trigExpr, const bool isdata = false ) override final;
00219
00220
00221 double GetTotalMuonTriggerSF(const xAOD::MuonContainer& sfmuons, const std::string& trigExpr) override final;
00222
00223 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;
00224
00225 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;
00226
00227
00228 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 = "e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose", const bool chfSF = false) override final;
00229
00230 double GetEleTriggerEfficiency(const xAOD::Electron& el, const std::string& trigExpr = "e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose") const override final;
00231 double GetEleTriggerEfficiencySF(const xAOD::Electron& el, const std::string& trigExpr = "e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose") const override final;
00232
00233 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 chfSF = false) override final;
00234
00235 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 chfSF = false) override final;
00236
00237
00238 double GetSignalTauSF(const xAOD::TauJet& tau, const bool idSF = true, const bool triggerSF = true, const std::string& trigExpr = "tau25_medium1_tracktwo") override final;
00239
00240 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;
00241
00242 double GetTauTriggerEfficiencySF(const xAOD::TauJet& tau, const std::string& trigExpr = "tau25_medium1_tracktwo") override final;
00243
00244 double GetTotalTauSF(const xAOD::TauJetContainer& taus, const bool idSF = true, const bool triggerSF = true, const std::string& trigExpr = "tau25_medium1_tracktwo") override final;
00245
00246 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;
00247
00248
00249 double GetSignalPhotonSF(const xAOD::Photon& ph, const bool effSF = true, const bool isoSF = true) const override final;
00250
00251 double GetSignalPhotonSFsys(const xAOD::Photon& ph, const CP::SystematicSet& systConfig, const bool effSF = true, const bool isoSF = true) override final;
00252
00253 double GetTotalPhotonSF(const xAOD::PhotonContainer& photons, const bool effSF = true, const bool isoSF = true) const override final;
00254
00255 double GetTotalPhotonSFsys(const xAOD::PhotonContainer& photons, const CP::SystematicSet& systConfig, const bool effSF = true, const bool isoSF = true) override final;
00256
00257
00258 double GetTotalJetSF(const xAOD::JetContainer* jets, const bool btagSF = true, const bool jvtSF = true) override final;
00259
00260 double GetTotalJetSFsys(const xAOD::JetContainer* jets, const CP::SystematicSet& systConfig, const bool btagSF = true, const bool jvtSF = true) override final;
00261
00262
00263 bool IsMETTrigPassed(unsigned int runnumber = 0, bool j400_OR = false) const override final;
00264 bool IsMETTrigPassed(const std::string& triggerName, bool j400_OR = false) const override final;
00265
00266 bool IsTrigPassed(const std::string&, unsigned int condition=TrigDefs::Physics) const override final;
00267
00268 bool IsTrigMatched(const xAOD::IParticle *part, const std::string& tr_item) override final;
00269 bool IsTrigMatched(const xAOD::IParticle *part1, const xAOD::IParticle *part2, const std::string& tr_item) override final;
00270 bool IsTrigMatched(const std::vector<const xAOD::IParticle*>& v, const std::string& tr_item) override final;
00271 bool IsTrigMatched(const std::initializer_list<const xAOD::IParticle*> &v, const std::string& tr_item) override final;
00272
00273 void TrigMatch(const xAOD::IParticle* p, std::initializer_list<std::string>::iterator, std::initializer_list<std::string>::iterator) override final;
00274 void TrigMatch(const xAOD::IParticle* p, const std::vector<std::string>& items) override final;
00275 void TrigMatch(const xAOD::IParticle* p, const std::initializer_list<std::string>& items) override final;
00276 void TrigMatch(const xAOD::IParticleContainer* v, const std::vector<std::string>& items) override final;
00277 void TrigMatch(const xAOD::IParticleContainer* v, const std::initializer_list<std::string>& items) override final;
00278 void TrigMatch(const std::initializer_list<const xAOD::IParticle*>& v, const std::vector<std::string>& items) override final;
00279 void TrigMatch(const std::initializer_list<const xAOD::IParticle*>& v, const std::initializer_list<std::string>& items) override final;
00280 void TrigMatch(const xAOD::IParticle* p, const std::string& item) override final;
00281 void TrigMatch(const xAOD::IParticleContainer* v, const std::string& item) override final;
00282 void TrigMatch(const std::initializer_list<const xAOD::IParticle*> &v, const std::string& item) override final;
00283
00284
00285 float GetTrigPrescale(const std::string&) const override final;
00286 const Trig::ChainGroup* GetTrigChainGroup(const std::string&) const override final;
00287 std::vector<std::string> GetTriggerOR(std::string trigExpr) const;
00288 void GetTriggerTokens(std::string, std::vector<std::string>& , std::vector<std::string>& ) const;
00289 Trig::FeatureContainer GetTriggerFeatures(const std::string& chainName = "EF_.*", unsigned int condition = TrigDefs::Physics) const;
00290
00291 float GetPileupWeight() override final;
00292
00293 ULong64_t GetPileupWeightHash() override final;
00294
00295 float GetDataWeight(const std::string&) override final;
00296
00297 float GetCorrectedAverageInteractionsPerCrossing() override final;
00298
00299 double GetSumOfWeights(int channel) override final;
00300
00301 unsigned int GetRandomRunNumber(bool muDependentRRN = true) override final;
00302
00303 StatusCode ApplyPRWTool(bool muDependentRRN = true) override final;
00304
00305 unsigned int GetRunNumber() const override final;
00306
00307 int treatAsYear() const override final;
00308
00309 StatusCode OverlapRemoval(const xAOD::ElectronContainer *electrons, const xAOD::MuonContainer *muons, const xAOD::JetContainer *jets,
00310 const xAOD::PhotonContainer* gamma = 0, const xAOD::TauJetContainer* taujet = 0, const xAOD::JetContainer *fatjets = 0) override final;
00311
00312
00313
00314
00315 CP::SystematicCode resetSystematics() override final;
00316
00317 const CP::SystematicSet& currentSystematic() const;
00318
00319 CP::SystematicCode applySystematicVariation( const CP::SystematicSet& systConfig ) override final;
00320
00321
00322
00323 bool isPrompt(const xAOD::IParticle* part) const override final;
00324
00325 StatusCode FindSusyHP(int& pdgid1, int& pdgid2) const;
00326
00327 StatusCode FindSusyHP(const xAOD::TruthParticleContainer *truthP, int& pdgid1, int& pdgid2, bool isTruth3=false) const override final;
00328
00329 static bool FindSusyHardProc(const xAOD::TruthParticleContainer *truthP, int& pdgid1, int& pdgid2, bool isTruth3=false);
00330
00331 StatusCode FindSusyHP(const xAOD::TruthEvent *truthE, int& pdgid1, int& pdgid2) const override final;
00332
00333 static bool FindSusyHardProc(const xAOD::TruthEvent *truthE, int& pdgid1, int& pdgid2);
00334
00335
00336 std::string TrigSingleLep() const override final;
00337 std::string TrigDiLep() const override final;
00338 std::string TrigMixLep() const override final;
00339
00340
00341
00342 bool isNominal(const CP::SystematicSet& syst) const;
00343 bool isWeight(const CP::SystematicSet& systSet) const;
00344 bool isVariation(const CP::SystematicSet& syst) const;
00345 bool currentSystematicIsNominal() const;
00346 bool currentSystematicIsVariation() const;
00347 bool currentSystematicIsWeight() const;
00348
00349 ST::SystInfo getSystInfo(const CP::SystematicVariation& sys) const;
00350
00351 std::vector<ST::SystInfo> getSystInfoList() const override final;
00352
00353
00354
00355 float getSherpaVjetsNjetsWeight() const override final;
00356 float getSherpaVjetsNjetsWeight(const std::string& jetContainer) const override final;
00357
00358 private:
00359
00360 StatusCode SUSYToolsInit();
00361
00362
00363 std::map<std::string, std::string> m_conf_to_prop;
00364
00365
00366 std::set<std::string> m_bool_prop_set;
00367
00368
00369
00370 mutable std::map<std::string, std::function<bool()>> m_metTriggerFuncs;
00371
00372 mutable std::map<std::string, bool> m_checkedTriggers;
00373 bool m_emulateHLT(const std::string& triggerName) const;
00374 bool m_isTrigInTDT(const std::string& triggerName) const;
00375
00376
00377 std::vector<std::string> v_trigs15_cache_single;
00378 std::vector<std::string> v_trigs16_cache_single;
00379 std::vector<std::string> v_trigs15_cache_dilep;
00380 std::vector<std::string> v_trigs16_cache_dilep;
00381 std::vector<std::string> v_trigs15_cache_mixlep;
00382 std::vector<std::string> v_trigs16_cache_mixlep;
00383
00384 protected:
00385
00386 StatusCode readConfig() override final;
00387 StatusCode validConfig(bool strict = false) const;
00388
00389 const std::vector<std::string> split(const std::string& s, const std::string& delim) const;
00390
00391 void getTauConfig(const std::string tauConfigPath, std::vector<float>& pT_window, std::vector<float>& eta_window, bool &eleOLR, bool &muVeto, bool &muOLR) const;
00392
00393 void configFromFile(bool& property, const std::string& propname, TEnv& rEnv,
00394 bool defaultValue);
00395 void configFromFile(double& property, const std::string& propname, TEnv& rEnv,
00396 double defaultValue);
00397 void configFromFile(int& property, const std::string& propname, TEnv& rEnv,
00398 int defaultValue);
00399 void configFromFile(std::string& property, const std::string& propname, TEnv& rEnv,
00400 const std::string& defaultValue);
00401
00402
00403 bool check_isOption(const std::string& wp, const std::vector<std::string>& list) const;
00404 bool check_isTighter(const std::string& wp1, const std::string& wp, const std::vector<std::string>& list) const;
00405
00406 std::string EG_WP(const std::string& wp) const;
00407
00408 std::vector<std::string> getElSFkeys(const std::string& mapFile) const;
00409
00410 #ifdef XAOD_STANDALONE // more convenient for property setting
00411 DataSource m_dataSource;
00412 xAOD::JetInput::Type m_jetInputType;
00413 #else
00414 int m_dataSource;
00415 int m_jetInputType;
00416 #endif
00417 std::string m_configFile;
00418
00419 bool m_force_noElId;
00420 bool m_force_noMuId;
00421 bool m_doTTVAsf;
00422 bool m_muNoTRT;
00423
00424 int m_jesNPset;
00425 bool m_useBtagging;
00426 bool m_debug;
00427
00428 bool m_strictConfigCheck;
00429
00430 std::string m_badJetCut;
00431
00432 std::string m_fatJetUncConfig;
00433 std::string m_fatJetUncVars;
00434
00435 bool m_tool_init;
00436 bool m_subtool_init;
00437
00438 std::string m_eleTerm ;
00439 std::string m_gammaTerm ;
00440 std::string m_tauTerm ;
00441 std::string m_jetTerm ;
00442 std::string m_muonTerm ;
00443 std::string m_inputMETSuffix;
00444 std::string m_inputMETMap;
00445 std::string m_inputMETCore;
00446 std::string m_inputMETRef;
00447 std::string m_outMETTerm;
00448 bool m_metRemoveOverlappingCaloTaggedMuons;
00449 bool m_metDoMuonJetOR;
00450
00451 bool m_metGreedyPhotons;
00452
00453 bool m_trkMETsyst;
00454 bool m_caloMETsyst;
00455
00456 std::vector<std::string> m_prwConfFiles;
00457 std::vector<std::string> m_prwLcalcFiles;
00458 double m_muUncert;
00459
00460
00461 std::vector<std::string> el_id_support;
00462 std::vector<std::string> ph_id_support;
00463 int mu_id_support;
00464
00465
00466 std::string m_electronTriggerSFStringSingle;
00467 std::string m_electronTriggerSFStringDiLepton;
00468 std::string m_electronTriggerSFStringMixedLepton;
00469
00470 std::vector<std::string> tau_trig_support;
00471
00472 std::string m_eleId;
00473 std::string m_eleIdBaseline;
00474 int m_muId;
00475 int m_muIdBaseline;
00476 std::string m_photonId;
00477 std::string m_photonIdBaseline;
00478 std::string m_tauId;
00479 std::string m_tauIdBaseline;
00480 bool m_tauMVACalib;
00481 bool m_tauIDrecalc;
00482 std::string m_eleIso_WP;
00483 std::string m_eleChID_WP;
00484 bool m_runECIS;
00485 std::string m_photonIso_WP;
00486 std::string m_muIso_WP;
00487 std::string m_BtagWP;
00488 std::string m_BtagTagger;
00489 std::string m_BtagSystStrategy;
00490
00491
00492
00493 double m_eleBaselinePt;
00494 double m_eleBaselineEta;
00495 bool m_eleBaselineCrackVeto;
00496 double m_elePt;
00497 double m_eleEta;
00498 bool m_eleCrackVeto;
00499 double m_eled0sig;
00500 double m_elez0;
00501 double m_elebaselined0sig;
00502 double m_elebaselinez0;
00503
00504 double m_muBaselinePt;
00505 double m_muBaselineEta;
00506 double m_muPt;
00507 double m_muEta;
00508 double m_mud0sig;
00509 double m_muz0;
00510 double m_mubaselined0sig;
00511 double m_mubaselinez0;
00512 bool m_murequirepassedHighPtCuts;
00513
00514 double m_muCosmicz0;
00515 double m_muCosmicd0;
00516
00517 double m_badmuQoverP;
00518
00519 double m_photonBaselinePt;
00520 double m_photonBaselineEta;
00521 double m_photonEta;
00522 double m_photonPt;
00523
00524 bool m_photonBaselineCrackVeto;
00525 bool m_photonCrackVeto;
00526 bool m_photonAllowLate;
00527
00528 double m_tauPrePtCut;
00529 double m_tauPt;
00530 double m_tauEta;
00531 std::string m_tauConfigPath;
00532 std::string m_tauConfigPathBaseline;
00533 bool m_tauDoTTM;
00534 bool m_tauRecalcOLR;
00535 bool m_tauNoAODFixCheck;
00536
00537 double m_jetPt;
00538 double m_jetEta;
00539 double m_jetJvt;
00540 std::string m_JVT_WP;
00541
00542 bool m_doFwdJVT;
00543 double m_fwdjetEtaMin;
00544 double m_fwdjetPtMax;
00545 bool m_fwdjetTightOp;
00546
00547 std::string m_JMScalib;
00548
00549 bool m_orDoTau;
00550 bool m_orDoPhoton;
00551 bool m_orDoBjet;
00552 bool m_orDoElBjet;
00553 bool m_orDoMuBjet;
00554 bool m_orDoTauBjet;
00555 bool m_orDoBoostedElectron;
00556 double m_orBoostedElectronC1;
00557 double m_orBoostedElectronC2;
00558 double m_orBoostedElectronMaxConeSize;
00559 bool m_orDoBoostedMuon;
00560 double m_orBoostedMuonC1;
00561 double m_orBoostedMuonC2;
00562 double m_orBoostedMuonMaxConeSize;
00563 bool m_orApplyRelPt;
00564 double m_orMuJetPtRatio;
00565 double m_orMuJetTrkPtRatio;
00566 double m_orMuJetInnerDR;
00567 bool m_orDoMuonJetGhostAssociation;
00568 bool m_orRemoveCaloMuons;
00569 bool m_orApplyJVT;
00570 std::string m_orBtagWP;
00571 std::string m_orInputLabel;
00572
00573 bool m_orDoFatjets;
00574 double m_EleFatJetDR;
00575 double m_JetFatJetDR;
00576
00577 bool m_doIsoSignal;
00578 bool m_doElIsoSignal;
00579 bool m_doPhIsoSignal;
00580 bool m_doMuIsoSignal;
00581 bool m_doIsoCloseByOR;
00582
00583 std::string m_metJetSelection;
00584
00585 int m_showerType;
00586
00587 std::string m_defaultJets;
00588 std::string m_fatJets;
00589
00590 CP::SystematicSet m_defaultSyst = CP::SystematicSet();
00591 CP::SystematicSet m_currentSyst;
00592
00593
00594 std::string m_EG_corrModel;
00595 bool m_applyJVTCut;
00596
00597 std::string m_bTaggingCalibrationFilePath;
00598
00599 asg::AnaToolHandle<IJetCalibrationTool> m_jetCalibTool;
00600 asg::AnaToolHandle<IJetCalibrationTool> m_jetFatCalibTool;
00601 asg::AnaToolHandle<IJERTool> m_jerTool;
00602 asg::AnaToolHandle<IJERSmearingTool> m_jerSmearingTool;
00603 asg::AnaToolHandle<ICPJetUncertaintiesTool> m_jetUncertaintiesTool;
00604 asg::AnaToolHandle<ICPJetUncertaintiesTool> m_fatjetUncertaintiesTool;
00605 asg::AnaToolHandle<IJetSelector> m_jetCleaningTool;
00606 asg::AnaToolHandle<IJetUpdateJvt> m_jetJvtUpdateTool;
00607 asg::AnaToolHandle<IJetModifier> m_jetFwdJvtTool;
00608 asg::AnaToolHandle<CP::IJetJvtEfficiency> m_jetJvtEfficiencyTool;
00609
00610 std::string m_WtagWP;
00611 std::string m_ZtagWP;
00612
00613 JetSubStructureUtils::BosonTag* m_WTaggerTool;
00614 JetSubStructureUtils::BosonTag* m_ZTaggerTool;
00615
00616
00617 asg::AnaToolHandle<CP::IMuonSelectionTool> m_muonSelectionTool;
00618 asg::AnaToolHandle<CP::IMuonSelectionTool> m_muonSelectionHighPtTool;
00619 asg::AnaToolHandle<CP::IMuonSelectionTool> m_muonSelectionToolBaseline;
00620 asg::AnaToolHandle<CP::IMuonCalibrationAndSmearingTool> m_muonCalibrationAndSmearingTool;
00621 asg::AnaToolHandle<CP::IMuonEfficiencyScaleFactors> m_muonEfficiencySFTool;
00622 asg::AnaToolHandle<CP::IMuonEfficiencyScaleFactors> m_muonEfficiencyBMHighPtSFTool;
00623 asg::AnaToolHandle<CP::IMuonEfficiencyScaleFactors> m_muonTTVAEfficiencySFTool;
00624 asg::AnaToolHandle<CP::IMuonEfficiencyScaleFactors> m_muonIsolationSFTool;
00625 asg::AnaToolHandle<CP::IMuonTriggerScaleFactors> m_muonTriggerSFTool2015;
00626 asg::AnaToolHandle<CP::IMuonTriggerScaleFactors> m_muonTriggerSFTool2016;
00627
00628 asg::AnaToolHandle<IAsgElectronEfficiencyCorrectionTool> m_elecEfficiencySFTool_reco;
00629 asg::AnaToolHandle<IAsgElectronEfficiencyCorrectionTool> m_elecEfficiencySFTool_id;
00630 asg::AnaToolHandle<IAsgElectronEfficiencyCorrectionTool> m_elecEfficiencySFTool_trig_singleLep;
00631 asg::AnaToolHandle<IAsgElectronEfficiencyCorrectionTool> m_elecEfficiencySFTool_trig_diLep;
00632 asg::AnaToolHandle<IAsgElectronEfficiencyCorrectionTool> m_elecEfficiencySFTool_trig_mixLep;
00633 asg::AnaToolHandle<IAsgElectronEfficiencyCorrectionTool> m_elecEfficiencySFTool_iso;
00634 asg::AnaToolHandle<IAsgElectronEfficiencyCorrectionTool> m_elecEfficiencySFTool_chf;
00635
00636 asg::AnaToolHandle<IAsgElectronEfficiencyCorrectionTool> m_elecEfficiencySFTool_trigEff_singleLep;
00637 asg::AnaToolHandle<IAsgElectronEfficiencyCorrectionTool> m_elecEfficiencySFTool_trigEff_diLep;
00638 asg::AnaToolHandle<IAsgElectronEfficiencyCorrectionTool> m_elecEfficiencySFTool_trigEff_mixLep;
00639
00640 asg::AnaToolHandle<CP::IEgammaCalibrationAndSmearingTool> m_egammaCalibTool;
00641 asg::AnaToolHandle<IAsgElectronLikelihoodTool> m_elecSelLikelihood;
00642 asg::AnaToolHandle<IAsgElectronLikelihoodTool> m_elecSelLikelihoodBaseline;
00643 asg::AnaToolHandle<IAsgPhotonIsEMSelector> m_photonSelIsEM;
00644 asg::AnaToolHandle<IAsgPhotonIsEMSelector> m_photonSelIsEMBaseline;
00645 asg::AnaToolHandle<IAsgPhotonEfficiencyCorrectionTool> m_photonEfficiencySFTool;
00646 asg::AnaToolHandle<IAsgPhotonEfficiencyCorrectionTool> m_photonIsolationSFTool;
00647 asg::AnaToolHandle<IElectronPhotonShowerShapeFudgeTool> m_electronPhotonShowerShapeFudgeTool;
00648 asg::AnaToolHandle<IEGammaAmbiguityTool> m_egammaAmbiguityTool;
00649 asg::AnaToolHandle<IAsgElectronLikelihoodTool> m_elecChargeIDSelectorTool;
00650 asg::AnaToolHandle<CP::IEfficiencyScaleFactorTool> m_elecChargeEffCorrTool;
00651
00652 asg::AnaToolHandle<TauAnalysisTools::ITauSelectionTool> m_tauSelTool;
00653 asg::AnaToolHandle<TauAnalysisTools::ITauSelectionTool> m_tauSelToolBaseline;
00654 asg::AnaToolHandle<TauAnalysisTools::ITauSmearingTool> m_tauSmearingTool;
00655 asg::AnaToolHandle<TauAnalysisTools::ITauTruthMatchingTool> m_tauTruthMatch;
00656 asg::AnaToolHandle<TauAnalysisTools::ITauEfficiencyCorrectionsTool> m_tauEffTool;
00657 asg::AnaToolHandle<TauAnalysisTools::ITauEfficiencyCorrectionsTool> m_tauTrigEffTool0;
00658 asg::AnaToolHandle<TauAnalysisTools::ITauEfficiencyCorrectionsTool> m_tauTrigEffTool1;
00659 asg::AnaToolHandle<TauAnalysisTools::ITauEfficiencyCorrectionsTool> m_tauTrigEffTool2;
00660 asg::AnaToolHandle<TauAnalysisTools::ITauEfficiencyCorrectionsTool> m_tauTrigEffTool3;
00661 asg::AnaToolHandle<TauAnalysisTools::ITauEfficiencyCorrectionsTool> m_tauTrigEffTool4;
00662 asg::AnaToolHandle<TauAnalysisTools::ITauOverlappingElectronLLHDecorator> m_tauElORdecorator;
00663 asg::AnaToolHandle<TauWPDecorator> m_tauWPdecorator;
00664
00665 asg::AnaToolHandle<IBTaggingEfficiencyTool> m_btagEffTool;
00666 asg::AnaToolHandle<IBTaggingSelectionTool> m_btagSelTool;
00667 asg::AnaToolHandle<IBTaggingSelectionTool> m_btagSelTool_OR;
00668
00669 asg::AnaToolHandle<IMETMaker> m_metMaker;
00670 asg::AnaToolHandle<IMETSystematicsTool> m_metSystTool;
00671
00672 asg::AnaToolHandle<TrigConf::ITrigConfigTool> m_trigConfTool;
00673 asg::AnaToolHandle<Trig::TrigDecisionTool> m_trigDecTool;
00674 asg::AnaToolHandle<Trig::IMatchingTool> m_trigMatchingTool;
00675
00676 asg::AnaToolHandle<CP::IIsolationCorrectionTool> m_isoCorrTool;
00677 asg::AnaToolHandle<CP::IIsolationSelectionTool> m_isoTool;
00678 asg::AnaToolHandle<CP::IIsolationCloseByCorrectionTool> m_isoCloseByTool;
00679
00680 asg::AnaToolHandle<CP::IPileupReweightingTool> m_prwTool;
00681
00682 #ifdef XAOD_STANDALONE // more convenient for property setting
00683
00684 asg::AnaToolHandle<ORUtils::IOverlapTool> m_tauJetORtool;
00685 ORUtils::ToolBox m_orToolbox;
00686 #else
00687 ToolHandle<ORUtils::IOverlapRemovalTool> m_orTool;
00688 #endif
00689
00690
00691
00692 asg::AnaToolHandle<IWeightTool> m_pmgSHnjetWeighter;
00693 asg::AnaToolHandle<IWeightTool> m_pmgSHnjetWeighterWZ;
00694
00695
00696 };
00697
00698
00699 const static SG::AuxElement::Decorator<char> dec_baseline("baseline");
00700 const static SG::AuxElement::Decorator<char> dec_selected("selected");
00701 const static SG::AuxElement::Decorator<char> dec_signal("signal");
00702 const static SG::AuxElement::Decorator<char> dec_isol("isol");
00703 const static SG::AuxElement::Decorator<char> dec_passOR("passOR");
00704
00705 const static SG::AuxElement::Decorator<double> dec_effscalefact("effscalefact");
00706
00707 const static SG::AuxElement::Decorator<char> dec_signal_less_JVT("signal_less_JVT");
00708
00709
00710 const static SG::AuxElement::ConstAccessor<char> acc_baseline("baseline");
00711 const static SG::AuxElement::ConstAccessor<char> acc_selected("selected");
00712 const static SG::AuxElement::ConstAccessor<char> acc_signal("signal");
00713 const static SG::AuxElement::ConstAccessor<char> acc_isol("isol");
00714 const static SG::AuxElement::ConstAccessor<char> acc_passOR("passOR");
00715 const static SG::AuxElement::ConstAccessor<char> acc_signal_less_JVT("signal_less_JVT");
00716
00717 const static SG::AuxElement::ConstAccessor<unsigned int> acc_OQ("OQ");
00718 const static SG::AuxElement::ConstAccessor<int> acc_truthType("truthType");
00719 const static SG::AuxElement::ConstAccessor<int> acc_truthOrigin("truthOrigin");
00720 const static SG::AuxElement::ConstAccessor<int> acc_bkgTruthOrigin("bkgTruthOrigin");
00721 const static SG::AuxElement::ConstAccessor<unsigned int> randomrunnumber("RandomRunNumber");
00722
00723 }
00724
00725
00726 #endif // not SUSYTOOLS_SUSYOBJDEF_XAOD_H