7#ifndef SUSYTOOLS_SUSYOBJDEF_XAODTOOL_H
8#define SUSYTOOLS_SUSYOBJDEF_XAODTOOL_H
96 static const unsigned int Btag = 1001;
97 static const unsigned int JVT = 1002;
99 static const unsigned int FJVT = 1004;
105 static const unsigned int ID = 1103;
112 static const unsigned int ID = 1203;
125 static const unsigned int ID = 1403;
151 case Jet:
return "Jet";
152 case Egamma:
return "Egamma";
154 case Photon:
return "Photon";
155 case Muon:
return "Muon";
156 case Tau:
return "Tau";
157 case BTag:
return "BTag";
168 static inline int getMCShowerType(
const std::string& sample_name,
const std::string& tagger=
"") {
171 const static std::vector<TString> gen_mc_generator_keys = {
"PYTHIA8EVTGEN517",
"POWHEGHERWIG7",
"PHH7EG",
"SHERPA_2210",
"SHERPA_2211",
"SHERPA_2212",
"SHERPA_2214",
"SHERPA_UNKNOWN"};
172 const static std::vector<TString> gen_mc_generator_keys_dl1d = {
"POWHEGHERWIG7",
"PHH7EG",
"SHERPA_221_",
"SHERPA_2210",
"SHERPA_2211",
"SHERPA_2212",
"AMCATNLOPY8",
"AMCATNLOHERWIG7"};
175 TString tmp_name(sample_name);
177 if(tmp_name.Contains(
"Py8EG") && !tmp_name.Contains(
"aMcAtNloPy8EG")) tmp_name.ReplaceAll(
"Py8EG",
"PYTHIA8EVTGEN");
178 if(tmp_name.Contains(
"Pythia") && !tmp_name.Contains(
"Pythia8") && !tmp_name.Contains(
"EvtGen")) tmp_name.ReplaceAll(
"Pythia",
"PYTHIA8EVTGEN");
179 if(tmp_name.Contains(
"Pythia8") && !tmp_name.Contains(
"EvtGen")) tmp_name.ReplaceAll(
"Pythia8",
"PYTHIA8EVTGEN");
180 if(tmp_name.Contains(
"Py8") && !tmp_name.Contains(
"EG")) tmp_name.ReplaceAll(
"Py8",
"PYTHIA8EVTGEN");
181 if(tmp_name.Contains(
"Sh_2")) tmp_name.ReplaceAll(
"Sh_2",
"SHERPA_2");
182 if(tmp_name.Contains(
"Sh_") && !tmp_name.Contains(
"Sh_2")) tmp_name.ReplaceAll(
"Sh_",
"SHERPA_UNKNOWN_");
183 if(tmp_name.Contains(
"Sherpa_") && !tmp_name.Contains(
"Sherpa_2")) tmp_name.ReplaceAll(
"Sherpa_",
"SHERPA_UNKNOWN_");
184 if(tmp_name.Contains(
"PYTHIA8EVTGEN517")) tmp_name.ReplaceAll(
"PYTHIA8EVTGEN517",
"PYTHIA8EVTGEN");
189 unsigned int ishower = 0;
190 if (tagger==
"DL1dv01"){
191 for(
const auto & gen : gen_mc_generator_keys_dl1d ){
192 if( tmp_name.Contains(gen) ){
return ishower+1;}
195 }
else if (tagger==
"GN2v01"){
196 for(
const auto & gen : gen_mc_generator_keys ){
197 if( tmp_name.Contains(gen) ){
return ishower+1;}
201 std::cout <<
"ST::getMCShowerType ERROR: Invalid tagger " << tagger <<
". Supported values are GN2v01 and DL1dv01." << std::endl;
204 if( tmp_name.Contains(
"PYTHIA8EVTGEN") || tmp_name.Contains(
"PhPy8EG") )
return 0;
207 TRegexp is_data(
"^data1[5-9]_13TeV");
208 TRegexp is_dataRun3(
"^data2[2-5]_13p6TeV");
209 if (tmp_name.Contains(is_data) || tmp_name.Contains(is_dataRun3)){
210 std::cout <<
"ST::getMCShowerType WARNING: Asking for the MC shower when running on a data file is not advised. Just returning 0." << std::endl;
214 std::cout <<
"ST::getMCShowerType WARNING: Unknown MC generator detected. Returning default 0 = PowhegPythia8 ShowerType for btagging MC/MC maps." << std::endl;
232 virtual int getMCShowerType(
const std::string& sample_name,
const std::string& tagger=
"")
const = 0;
248 virtual StatusCode
FillJet(
xAOD::Jet& input,
const bool doCalib =
true,
const bool isFat =
false,
const bool doLargeRdecorations =
false) = 0;
270 bool doTST=
true,
bool doJVTCut=
true,
280 double& metSignificance,
281 bool doTST =
true,
bool doJVTCut =
true
341 virtual float GetSignalMuonSF(
const xAOD::Muon& mu,
const bool recoSF =
true,
const bool isoSF =
true,
const bool doBadMuonHP =
true,
const bool warnOVR =
true) = 0;
343 virtual 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) = 0;
345 virtual 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 = 0;
351 virtual 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 = 0;
365 virtual 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) = 0;
367 virtual 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) = 0;
371 virtual 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) = 0;
373 virtual double GetSignalTauSF(
const xAOD::TauJet& tau,
const bool idSF =
true,
const bool triggerSF =
true,
const std::string& trigExpr =
"tau25_medium1_tracktwo") = 0;
396 virtual bool IsMETTrigPassed(
const std::string& triggerName,
bool j400_OR =
false,
const std::string& L1_name =
"L1_XE50")
const = 0;
402 virtual bool IsTrigMatched(
const std::vector<const xAOD::IParticle*>& v,
const std::string& tr_item) = 0;
403 virtual bool IsTrigMatched(
const std::initializer_list<const xAOD::IParticle*> &v,
const std::string& tr_item) = 0;
405 virtual void TrigMatch(
const xAOD::IParticle* p, std::initializer_list<std::string>::iterator, std::initializer_list<std::string>::iterator) = 0;
410 virtual void TrigMatch(
const std::initializer_list<const xAOD::IParticle*>& v,
const std::vector<std::string>& items) = 0;
411 virtual void TrigMatch(
const std::initializer_list<const xAOD::IParticle*>& v,
const std::initializer_list<std::string>& items) = 0;
414 virtual void TrigMatch(
const std::initializer_list<const xAOD::IParticle*> &v,
const std::string& item) = 0;
Class to wrap a set of SystematicVariations.
Class providing the definition of the 4-vector interface.
Class creating a shallow copy of an existing auxiliary container.
static std::vector< uint32_t > runnumber
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
static const unsigned int Reconstruction
static const unsigned int ID
static const unsigned int Trigger
static const unsigned int ChargeID
static const unsigned int Isolation
static const unsigned int Btag_Track
static const unsigned int FJVT
static const unsigned int Btag
static const unsigned int JVT
static const unsigned int Reconstruction
static const unsigned int ID
static const unsigned int Isolation
static const unsigned int Trigger
static const unsigned int Trigger
static const unsigned int ID
static const unsigned int Isolation
static const unsigned int Reconstruction
static const unsigned int Reconstruction
static const unsigned int Trigger
static const unsigned int Unknown
static int getMCShowerType(const std::string &sample_name, const std::string &tagger="")
static bool testAffectsObject(xAOD::Type::ObjectType type, unsigned int test)
static const double DUMMYDEF
static const unsigned int Physics
The common trigger namespace for trigger analysis tools.
ObjectType
Type of objects that have a representation in the xAOD EDM.
@ Jet
The object is a jet.
@ Photon
The object is a photon.
@ Muon
The object is a muon.
@ BTag
The object is a b-tagging object.
@ Electron
The object is an electron.
@ Tau
The object is a tau (jet)
Jet_v1 Jet
Definition of the current "jet version".
PhotonContainer_v1 PhotonContainer
Definition of the current "photon container version".
ElectronContainer_v1 ElectronContainer
Definition of the current "electron container version".
EventInfo_v1 EventInfo
Definition of the latest event info version.
@ Unknown
Track fitter not defined.
Vertex_v1 Vertex
Define the latest version of the vertex class.
TauJet_v3 TauJet
Definition of the current "tau version".
MissingETContainer_v1 MissingETContainer
TruthEvent_v1 TruthEvent
Typedef to implementation.
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".
Muon_v1 Muon
Reference the current persistent version:
Photon_v1 Photon
Definition of the current "egamma version".
JetContainer_v1 JetContainer
Definition of the current "jet container version".
TauJetContainer_v3 TauJetContainer
Definition of the current "taujet container version".
MuonContainer_v1 MuonContainer
Definition of the current "Muon container version".
TruthParticleContainer_v1 TruthParticleContainer
Declare the latest version of the truth particle container.
Electron_v1 Electron
Definition of the current "egamma version".
DataVector< IParticle > IParticleContainer
Simple convenience declaration of IParticleContainer.
std::set< unsigned int > affectedWeights
CP::SystematicSet systset