DAS  3.0
Das Analysis System
Helper

#include <helper.h>

+ Collaboration diagram for Helper:

Public Member Functions

 Helper (DAS::Parameters &parameters)
 
DAS::GenJet GetGenJet (const reco::JetFlavourInfoMatching &ijet)
 
DAS::GenJet GetGenJet (const reco::Jet &ijet)
 
DAS::RecJet GetRecJet (const pat::Jet &ijet)
 
bool JetID (const pat::Jet &jet)
 
DAS::GenMuon GetGenMu (const reco::Candidate &mu)
 
DAS::RecMuon GetRecMu (const pat::Muon &mu)
 
DAS::GenPhoton GetGenPhoton (const reco::GenParticle &photon, bool zAncestor)
 
DAS::RecPhoton GetRecPhoton (const pat::Photon &photon)
 

Public Attributes

DAS::Parametersp
 

Constructor & Destructor Documentation

◆ Helper()

Helper ( DAS::Parameters parameters)

Constructor

Only giving parameters in reference

14 : p(parameters) {}

Member Function Documentation

◆ GetGenJet() [1/2]

DAS::GenJet GetGenJet ( const reco::Jet &  ijet)

Helper to get DAS::GenJet from MiniAOD without flavour.

19 {
20  DAS::GenJet jjet;
21 
22  // kinematics
23  jjet.p4 = DAS::FourVector(ijet.p4());
24 
25  return jjet;
26 }

◆ GetGenJet() [2/2]

DAS::GenJet GetGenJet ( const reco::JetFlavourInfoMatching &  ijet)

Helper to get DAS::GenJet from MiniAOD with flavour.

31 {
32  const reco::Jet& Jet = *(ijet.first.get());
33  const reco::JetFlavourInfo& Info = ijet.second;
34 
35  DAS::GenJet jjet = GetGenJet(Jet);
36 
37  // parton flavour
38  jjet.partonFlavour = Info.getPartonFlavour();
39 
40  // heavy-flavour hadrons
41  jjet.nBHadrons = Info.getbHadrons().size();
42  jjet.nCHadrons = Info.getcHadrons().size();
43 
44  return jjet;
45 }

◆ GetGenMu()

DAS::GenMuon GetGenMu ( const reco::Candidate &  mu)

Helper to get DAS::GenMuon from MiniAOD.

153 {
154  DAS::GenMuon Mu;
155 
156  // kinematics
157  Mu.p4 = mu.p4();
158 
159  Mu.Q = mu.charge();
160 
161  return Mu;
162 }

◆ GetGenPhoton()

DAS::GenPhoton GetGenPhoton ( const reco::GenParticle &  photon,
bool  zAncestor 
)

Helper to get DAS::GenPhoton from MiniAOD.

188 {
189  DAS::GenPhoton dasPhoton;
190 
191  // kinematics
192  dasPhoton.p4 = photon.p4();
193  dasPhoton.zAncestor = zAncestor;
194  dasPhoton.prompt = photon.isPromptFinalState();
195 
196  return dasPhoton;
197 }

◆ GetRecJet()

DAS::RecJet GetRecJet ( const pat::Jet &  ijet)

Helper to get DAS::RecJet from MiniAOD.

General instructions DeepJet

53 {
54  DAS::RecJet jjet;
55 
56  // kinematics
57  jjet.p4 = ijet.correctedP4("Uncorrected");
58 
59  // JetMET business
60  jjet.area = ijet.jetArea();
61  jjet.puID = p.PUjetID ? ijet.userFloat("pileupJetId:fullDiscriminant") : 1.;
62 
63  if (p.flavour) {
64  // parton flavour
65  jjet.partonFlavour = ijet.partonFlavour();
66 
67  // heavy-flavour hadrons
68  jjet.nBHadrons = ijet.jetFlavourInfo().getbHadrons().size();
69  jjet.nCHadrons = ijet.jetFlavourInfo().getcHadrons().size();
70 
71  // heavy-flavour tagging
72  jjet.DeepJet.probb = ijet.bDiscriminator("pfDeepFlavourJetTags:probb");
73  jjet.DeepJet.probbb = ijet.bDiscriminator("pfDeepFlavourJetTags:probbb");
74  jjet.DeepJet.problepb = ijet.bDiscriminator("pfDeepFlavourJetTags:problepb");
75  jjet.DeepJet.probc = ijet.bDiscriminator("pfDeepFlavourJetTags:probc");
76  //jjet.DeepJet.probcc = ijet.bDiscriminator("pfDeepFlavourJetTags:probcc");
77  jjet.DeepJet.probuds = ijet.bDiscriminator("pfDeepFlavourJetTags:probuds");
78  jjet.DeepJet.probg = ijet.bDiscriminator("pfDeepFlavourJetTags:probg");
79 
80  static const auto eps = 10*numeric_limits<float>::epsilon();
81  if (abs(jjet.DeepJet.probb + jjet.DeepJet.probbb + jjet.DeepJet.problepb + jjet.DeepJet.probc + /*jjet.DeepJet.probcc +*/ jjet.DeepJet.probuds + jjet.DeepJet.probg - 1) > eps)
82  cerr << abs(jjet.DeepJet.probb + jjet.DeepJet.probbb + jjet.DeepJet.problepb + jjet.DeepJet.probc + /*jjet.DeepJet.probcc +*/ jjet.DeepJet.probuds + jjet.DeepJet.probg - 1) << ' ' << eps << endl;
83  }
84 
85  jjet.scales.resize(1, 1.0);
86 
87  return jjet;
88 }

◆ GetRecMu()

DAS::RecMuon GetRecMu ( const pat::Muon &  mu)

Helper to get DAS::RecMuon from MiniAOD.

167 {
168  DAS::RecMuon Mu;
169 
170  // kinematics
171  Mu.p4 = mu.p4();
172 
173  Mu.selectors = mu.selectors();
174  Mu.Q = mu.charge();
175 
176  // tracking properties
177  Mu.Dxy = mu.dB(pat::Muon::PV2D);
178  Mu.Dz = mu.dB(pat::Muon::PVDZ);
179  if (mu.innerTrack().isNonnull())
180  Mu.nTkHits = mu.innerTrack()->hitPattern().trackerLayersWithMeasurement();
181 
182  return Mu;
183 }

◆ GetRecPhoton()

DAS::RecPhoton GetRecPhoton ( const pat::Photon &  photon)

Helper to get DAS::RecLep from MiniAOD.

202 {
203  DAS::RecPhoton dasPhoton;
204 
205  // kinematics
206  dasPhoton.p4 = photon.p4();
207  const auto raw_energy = dasPhoton.p4.E();
208  dasPhoton.scales = decltype(dasPhoton.scales){{
209  photon.userFloat("ecalEnergyPostCorr") / raw_energy,
210  photon.userFloat("energyScaleUp") / raw_energy,
211  photon.userFloat("energyScaleDown") / raw_energy,
212  photon.userFloat("energySigmaPhiUp") / raw_energy,
213  photon.userFloat("energySigmaPhiDown") / raw_energy,
214  photon.userFloat("energySigmaRhoUp") / raw_energy,
215  photon.userFloat("energySigmaRhoDown") / raw_energy,
216  }};
217  dasPhoton.ecalEnergyErrPostCorr = photon.userFloat("ecalEnergyErrPostCorr");
218 
219  // supercluster
220  dasPhoton.scEta = photon.superCluster()->eta();
221  dasPhoton.sigmaIEtaIEta = photon.full5x5_sigmaIetaIeta();
222 
223  // ID
224  dasPhoton.hOverE = photon.hadronicOverEm();
225 
226  if (photon.photonID("cutBasedPhotonID-Fall17-94X-V2-loose"))
228  if (photon.photonID("cutBasedPhotonID-Fall17-94X-V2-medium"))
230  if (photon.photonID("cutBasedPhotonID-Fall17-94X-V2-tight"))
232  if (photon.photonID("mvaPhoID-RunIIFall17-v2-wp80"))
234  if (photon.photonID("mvaPhoID-RunIIFall17-v2-wp90"))
236  if (photon.passElectronVeto())
238  if (!photon.hasPixelSeed())
240 
241  // Isolation
242  dasPhoton.chargedIsolation = photon.chargedHadronIso();
243  dasPhoton.neutralHadronIsolation = photon.neutralHadronIso();
244  dasPhoton.photonIsolation = photon.photonIso();
245  dasPhoton.worstChargedIsolation = photon.chargedHadronWorstVtxIso();
246 
247  return dasPhoton;
248 }

◆ JetID()

bool JetID ( const pat::Jet &  jet)

Testing tight ID lepton veto definition for jets (official from JetMET)

The values for Run 2 correspond to UL and are not expected to change. Instead, the values for Run 3 are only preliminary and are subject to changes.

Note
The formulae in blue from the original TWiki have been copied and their format adapted.
100 {
101  const auto eta = jet.eta();
102 
103  auto NHF = jet.neutralHadronEnergyFraction();
104  auto NEMF = jet.photonEnergyFraction();
105  auto MUF = jet.muonEnergyFraction();
106  auto NumConst = jet.neutralMultiplicity() + jet.chargedMultiplicity();
107 
108  auto CHF = jet.chargedHadronEnergyFraction();
109  auto CHM = jet.chargedHadronMultiplicity();
110  auto CEMF = jet.chargedEmEnergyFraction();
111 
112  auto NumNeutralParticle = jet.neutralMultiplicity();
113 
114  switch (p.year) {
115  case 2016:
116  return (abs(eta)<=2.4 && CEMF<0.8 && CHM>0 && CHF>0 && NumConst>1 && NEMF<0.9 && MUF <0.8 && NHF < 0.9)
117  || (p.CHS && abs(eta)>2.4 && abs(eta)<=2.7 && NEMF<0.99 && NHF < 0.9)
118  || (p.CHS && NEMF>0.0 && NEMF<0.99 && NHF<0.9 && NumNeutralParticle>1 && abs(eta)>2.7 && abs(eta)<=3.0)
119  || (p.CHS && NEMF<0.90 && NHF>0.2 && NumNeutralParticle>10 && abs(eta)>3.0)
120  || (p.PUPPI && abs(eta)>2.4 && abs(eta)<=2.7 && NEMF<0.99 && NHF < 0.98)
121  || (p.PUPPI && NumNeutralParticle>=1 && abs(eta)>2.7 && abs(eta)<=3.0)
122  || (p.PUPPI && NEMF<0.90 && NumNeutralParticle>2 && abs(eta)>3.0);
123 
124  case 2017:
125  case 2018:
126  return (abs(eta)<=2.6 && CEMF<0.8 && CHM>0 && CHF>0 && NumConst>1 && NEMF<0.9 && MUF <0.8 && NHF < 0.9)
127  || (p.CHS && abs(eta)>2.6 && abs(eta)<=2.7 && CEMF<0.8 && CHM>0 && NEMF<0.99 && MUF <0.8 && NHF < 0.9)
128  || (p.CHS && NEMF>0.01 && NEMF<0.99 && NumNeutralParticle>1 && abs(eta)>2.7 && abs(eta)<=3.0)
129  || (p.CHS && NEMF<0.90 && NHF>0.2 && NumNeutralParticle>10 && abs(eta)>3.0)
130  || (p.PUPPI && abs(eta)>2.6 && abs(eta)<=2.7 && CEMF<0.8 && NEMF<0.99 && MUF <0.8 && NHF < 0.9)
131  || (p.PUPPI && NHF<0.9999 && abs(eta)>2.7 && abs(eta)<=3.0)
132  || (p.PUPPI && NEMF<0.90 && NumNeutralParticle>2 && abs(eta)>3.0);
133  case 2022:
134  case 2023:
135  case 2024:
136  return (abs(eta)<=2.6 && CEMF<0.8 && CHM>0 && CHF>0.01 && NumConst>1 && NEMF<0.9 && MUF <0.8 && NHF < 0.99)
137  || (p.PUPPI && abs(eta)>2.6 && abs(eta)<=2.7 && CEMF<0.8 && NEMF<0.99 && MUF <0.8 && NHF < 0.9)
138  || (p.PUPPI && NHF<0.99 && abs(eta)>2.7 && abs(eta)<=3.0)
139  || (p.PUPPI &&NEMF<0.40 && NumNeutralParticle>=2 && abs(eta)>3.0)
140  || (p.CHS && abs(eta)>2.6 && abs(eta)<=2.7 && CEMF<0.8 && CHM>0 && NEMF<0.99 && MUF <0.8 && NHF < 0.9)
141  || (p.CHS && NEMF<0.99 && NHF<0.99 && NumNeutralParticle>1 && abs(eta)>2.7 && abs(eta)<=3.0)
142  || (p.CHS && NEMF<0.40 && NumNeutralParticle>10 && abs(eta)>3.0);
143  default:
144  auto err_msg = "\x1B[31m\x1B[1mThe JetID has not yet been imlemented in DAS for "s
145  + to_string(p.year) + "\x1B[0m"s;
146  throw cms::Exception("Ntupliser") << err_msg;
147  }
148 }

Member Data Documentation

◆ p


The documentation for this struct was generated from the following files:
DAS::GenJet::partonFlavour
int partonFlavour
Parton flavour (PDG ID)
Definition: Jet.h:15
Ntupliser_cfg.cerr
cerr
Definition: Ntupliser_cfg.py:98
Step::eps
static const auto eps
Definition: Step.h:38
DAS::RecPhoton::PixelSeedVeto
@ PixelSeedVeto
Pixel seed veto.
Definition: Photon.h:55
DAS::Helper::GetGenJet
DAS::GenJet GetGenJet(const reco::JetFlavourInfoMatching &ijet)
Helper to get DAS::GenJet from MiniAOD with flavour.
Definition: helper.cc:30
DAS::RecPhoton::CutBasedMedium
@ CutBasedMedium
Medium cut-based ID.
Definition: Photon.h:50
DAS::RecPhoton::scEta
float scEta
Super cluster eta, used to veto the barrel/endcap transition region.
Definition: Photon.h:58
DAS::PhysicsObject::p4
FourVector p4
raw four-momentum directly after reconstruction
Definition: PhysicsObject.h:50
DAS::RecMuon::Dxy
float Dxy
transverse distance to PV
Definition: Lepton.h:31
DAS::RecPhoton::sigmaIEtaIEta
float sigmaIEtaIEta
Width of the ECAL deposit along the eta axis.
Definition: Photon.h:59
DAS::Helper::p
DAS::Parameters & p
Definition: helper.h:28
DAS::GenJet::nBHadrons
int nBHadrons
Number of B hadrons (0, 1 or 2+)
Definition: Jet.h:13
DAS::RecPhoton::photonIsolation
float photonIsolation
Recomputed isolation from other photons.
Definition: Photon.h:63
DAS::RecPhoton::CutBasedLoose
@ CutBasedLoose
Loose cut-based ID.
Definition: Photon.h:49
DAS::RecJet::Tagger::probc
float probc
Probability for the jet to contain at least one D hadron.
Definition: Jet.h:49
DAS::RecPhoton::MVAWorkingPoint80
@ MVAWorkingPoint80
80% efficiency working point of the MVA ID
Definition: Photon.h:52
DAS::RecJet::Tagger::probb
float probb
Probability for the jet to contain exactly one B hadron decaying hadronically.
Definition: Jet.h:50
DAS::RecMuon::nTkHits
int nTkHits
number of hits in tracker
Definition: Lepton.h:34
DAS::RecMuon::Dz
float Dz
longitudinal distance to PV
Definition: Lepton.h:32
DAS::RecJet
Definition: Jet.h:37
DAS::PhysicsObject::scales
std::vector< float > scales
energy scale corrections and variations
Definition: PhysicsObject.h:51
DAS::Parameters::year
const int year
20xx
Definition: Parameters.h:57
DAS::RecPhoton::selectors
std::uint32_t selectors
Identification cuts satisfied by the photon.
Definition: Photon.h:70
DAS::Parameters::PUPPI
const bool PUPPI
Definition: Parameters.h:62
DAS::RecMuon
class RecMuon
Definition: Lepton.h:25
DAS::RecJet::Tagger::probbb
float probbb
Probability for the jet to contain at least two B hadrons.
Definition: Jet.h:51
DAS::GenPhoton
class GenPhoton
Definition: Photon.h:13
DAS::RecJet::DeepJet
struct DAS::RecJet::Tagger DeepJet
Reference
DAS::RecJet::Tagger::problepb
float problepb
Probability for the jet to contain exactly one B hadron decaying leptonically.
Definition: Jet.h:52
DAS::GenMuon
class GenMuon
Definition: Lepton.h:9
DAS::GenJet
class GenJet
Definition: Jet.h:9
DAS::GenPhoton::prompt
bool prompt
Originates directly from the matrix element.
Definition: Photon.h:18
DAS::Parameters::CHS
const bool CHS
Definition: Parameters.h:62
DAS::GenJet::nCHadrons
int nCHadrons
Number of D hadrons (0, 1+ in 2017; 0, 1, 2+ in 2016)
Definition: Jet.h:14
DAS::RecPhoton::worstChargedIsolation
float worstChargedIsolation
Recomputed charged isolation with the vertex chosen to maximize this value used for the ID.
Definition: Photon.h:64
DAS::RecPhoton::hOverE
float hOverE
Ratio of HCAL to ECAL energy.
Definition: Photon.h:60
DAS::RecMuon::selectors
unsigned int selectors
muon ID & PF isolation
Definition: Lepton.h:29
DAS::RecJet::area
float area
Jet area (should be peaked at pi*R^2), used for the JES corrections.
Definition: Jet.h:42
DAS::RecPhoton::ecalEnergyErrPostCorr
float ecalEnergyErrPostCorr
Energy scale and smearing variations, indexed with the EnergyVariation enum.
Definition: Photon.h:68
DAS::RecJet::Tagger::probuds
float probuds
Probability for the jet to be a quark jet with no HF hadron.
Definition: Jet.h:53
DAS::RecPhoton::CutBasedTight
@ CutBasedTight
Tight cut-based ID.
Definition: Photon.h:51
DAS::Parameters::flavour
const bool flavour
Definition: Parameters.h:69
DAS::GenPhoton::zAncestor
bool zAncestor
Z boson among the particle mothers.
Definition: Photon.h:17
DAS::Parameters::PUjetID
const bool PUjetID
Definition: Parameters.h:69
DAS::FourVector
ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< float > > FourVector
Definition: PhysicsObject.h:15
DAS::RecPhoton::neutralHadronIsolation
float neutralHadronIsolation
Recomputed isolation from neutral hadrons.
Definition: Photon.h:62
DAS::GenMuon::Q
int Q
+/- 1
Definition: Lepton.h:13
DAS::RecJet::Tagger::probg
float probg
Probability for the jet to be a gluon jet with no HF hadron.
Definition: Jet.h:54
DAS::RecPhoton::MVAWorkingPoint90
@ MVAWorkingPoint90
90% efficiency working point of the MVA ID
Definition: Photon.h:53
DAS::RecPhoton::chargedIsolation
float chargedIsolation
Recomputed isolation from charged particles.
Definition: Photon.h:61
jmarExample.eta
eta
DeepAK8/ParticleNet tagging.
Definition: jmarExample.py:19
DAS::RecPhoton
class RecPhoton
Definition: Photon.h:27
DAS::RecPhoton::ConversionSafeElectronVeto
@ ConversionSafeElectronVeto
Electron veto.
Definition: Photon.h:54
DAS::RecJet::puID
float puID
pile-up jet ID
Definition: Jet.h:43