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