CMS 3D CMS Logo

JetSpecific.cc
Go to the documentation of this file.
1 //
3 // JetSpecific
4 // -----------
5 //
7 
9 
23 
24 #include <cmath>
25 
27 // implementation of global functions
29 
30 //______________________________________________________________________________
31 // Overloaded methods to write out specific types
32 
33 // CaloJet
37  std::vector<reco::CandidatePtr> const& constituents,
38  edm::EventSetup const& c) {
39  // Get geometry
42  const CaloSubdetectorGeometry* towerGeometry =
43  geometry->getSubdetectorGeometry(DetId::Calo, CaloTowerDetId::SubdetId);
44 
46  c.get<HcalRecNumberingRecord>().get(topology);
47 
48  // Make the specific
50  makeSpecific(constituents, towerGeometry, &specific, *topology);
51  // Set the calo jet
52  jet = reco::CaloJet(p4, point, specific, constituents);
53 }
54 
55 // BasicJet
59  std::vector<reco::CandidatePtr> const& constituents,
60  edm::EventSetup const& c) {
61  jet = reco::BasicJet(p4, point, constituents);
62 }
63 
64 // GenJet
68  std::vector<reco::CandidatePtr> const& constituents,
69  edm::EventSetup const& c) {
70  // Make the specific
72  makeSpecific(constituents, &specific);
73  // Set to the jet
74  jet = reco::GenJet(p4, point, specific, constituents);
75 }
76 
77 // PFJet
81  std::vector<reco::CandidatePtr> const& constituents,
82  edm::EventSetup const& c,
84  // Make the specific
86  makeSpecific(constituents, &specific, weights);
87  // now make jet charge
88  int charge = 0.;
89  for (std::vector<reco::CandidatePtr>::const_iterator ic = constituents.begin(), icend = constituents.end();
90  ic != icend;
91  ++ic) {
92  float weight = (weights != nullptr) ? (*weights)[*ic] : 1.0;
93  charge += (*ic)->charge() * weight;
94  }
95  jet = reco::PFJet(p4, point, specific, constituents);
96  jet.setCharge(charge);
97 }
98 
99 // TrackJet
103  std::vector<reco::CandidatePtr> const& constituents,
104  edm::EventSetup const& c) {
105  jet = reco::TrackJet(p4, point, constituents);
106 }
107 
108 // PFClusterJet
112  std::vector<reco::CandidatePtr> const& constituents,
113  edm::EventSetup const& c) {
114  jet = reco::PFClusterJet(p4, point, constituents);
115 }
116 
117 //______________________________________________________________________________
118 bool reco::makeSpecific(std::vector<reco::CandidatePtr> const& towers,
119  const CaloSubdetectorGeometry* towerGeometry,
120  CaloJet::Specific* caloJetSpecific,
121  const HcalTopology& topology) {
122  if (nullptr == caloJetSpecific)
123  return false;
124 
125  // 1.- Loop over the tower Ids,
126  // 2.- Get the corresponding CaloTower
127  // 3.- Calculate the different CaloJet specific quantities
128  std::vector<double> eECal_i;
129  std::vector<double> eHCal_i;
130  double eInHad = 0.;
131  double eInEm = 0.;
132  double eInHO = 0.;
133  double eInHB = 0.;
134  double eInHE = 0.;
135  double eHadInHF = 0.;
136  double eEmInHF = 0.;
137  double eInEB = 0.;
138  double eInEE = 0.;
139  double jetArea = 0.;
140 
141  std::vector<reco::CandidatePtr>::const_iterator itTower;
142  for (itTower = towers.begin(); itTower != towers.end(); ++itTower) {
143  if (itTower->isNull() || !itTower->isAvailable()) {
144  edm::LogWarning("DataNotFound") << " JetSpecific: Tower is invalid\n";
145  continue;
146  }
147  const CaloTower* tower = dynamic_cast<const CaloTower*>(itTower->get());
148  if (tower) {
149  //Array of energy in EM Towers:
150  eECal_i.push_back(tower->emEnergy());
151  eInEm += tower->emEnergy();
152  //Array of energy in HCAL Towers:
153  eHCal_i.push_back(tower->hadEnergy());
154  eInHad += tower->hadEnergy();
155 
156  // figure out contributions
157  switch (reco::hcalSubdetector(tower->id().ieta(), topology)) {
158  case HcalBarrel:
159  eInHB += tower->hadEnergy();
160  eInHO += tower->outerEnergy();
161  eInEB += tower->emEnergy();
162  break;
163  case HcalEndcap:
164  eInHE += tower->hadEnergy();
165  eInEE += tower->emEnergy();
166  break;
167  case HcalForward:
168  eHadInHF += tower->hadEnergy();
169  eEmInHF += tower->emEnergy();
170  break;
171  default:
172  break;
173  }
174  // get area of the tower (++ minus --)
175  auto geometry = towerGeometry->getGeometry(tower->id());
176  if (geometry) {
177  jetArea += geometry->etaSpan() * geometry->phiSpan();
178  } else {
179  edm::LogWarning("DataNotFound") << "reco::makeCaloJetSpecific: Geometry for cell " << tower->id()
180  << " can not be found. Ignoring cell\n";
181  }
182  } else {
183  edm::LogWarning("DataNotFound") << "reco::makeCaloJetSpecific: Constituent is not of "
184  << "CaloTower type\n";
185  }
186  }
187 
188  double towerEnergy = eInHad + eInEm;
189  caloJetSpecific->mHadEnergyInHO = eInHO;
190  caloJetSpecific->mHadEnergyInHB = eInHB;
191  caloJetSpecific->mHadEnergyInHE = eInHE;
192  caloJetSpecific->mHadEnergyInHF = eHadInHF;
193  caloJetSpecific->mEmEnergyInHF = eEmInHF;
194  caloJetSpecific->mEmEnergyInEB = eInEB;
195  caloJetSpecific->mEmEnergyInEE = eInEE;
196  if (towerEnergy > 0) {
197  caloJetSpecific->mEnergyFractionHadronic = eInHad / towerEnergy;
198  caloJetSpecific->mEnergyFractionEm = eInEm / towerEnergy;
199  } else { // HO only jet
200  caloJetSpecific->mEnergyFractionHadronic = 1.;
201  caloJetSpecific->mEnergyFractionEm = 0.;
202  }
203  caloJetSpecific->mTowersArea = jetArea;
204  caloJetSpecific->mMaxEInEmTowers = 0;
205  caloJetSpecific->mMaxEInHadTowers = 0;
206 
207  //Sort the arrays
208  sort(eECal_i.begin(), eECal_i.end(), std::greater<double>());
209  sort(eHCal_i.begin(), eHCal_i.end(), std::greater<double>());
210 
211  if (!towers.empty()) {
212  //Highest value in the array is the first element of the array
213  caloJetSpecific->mMaxEInEmTowers = eECal_i.front();
214  caloJetSpecific->mMaxEInHadTowers = eHCal_i.front();
215  }
216 
217  return true;
218 }
219 
220 //______________________________________________________________________________
221 bool reco::makeSpecific(std::vector<reco::CandidatePtr> const& particles,
222  PFJet::Specific* pfJetSpecific,
223  edm::ValueMap<float> const* weights) {
224  if (nullptr == pfJetSpecific)
225  return false;
226 
227  // 1.- Loop over PFCandidates,
228  // 2.- Get the corresponding PFCandidate
229  // 3.- Calculate the different PFJet specific quantities
230 
231  float chargedHadronEnergy = 0.;
232  float neutralHadronEnergy = 0.;
233  float photonEnergy = 0.;
234  float electronEnergy = 0.;
235  float muonEnergy = 0.;
236  float HFHadronEnergy = 0.;
237  float HFEMEnergy = 0.;
238  float chargedHadronMultiplicity = 0;
239  float neutralHadronMultiplicity = 0;
240  float photonMultiplicity = 0;
241  float electronMultiplicity = 0;
242  float muonMultiplicity = 0;
243  float HFHadronMultiplicity = 0;
244  float HFEMMultiplicity = 0;
245 
246  float chargedEmEnergy = 0.;
247  float neutralEmEnergy = 0.;
248  float chargedMuEnergy = 0.;
249  float chargedMultiplicity = 0;
250  float neutralMultiplicity = 0;
251 
252  float HOEnergy = 0.;
253 
254  std::vector<reco::CandidatePtr>::const_iterator itParticle;
255  for (itParticle = particles.begin(); itParticle != particles.end(); ++itParticle) {
256  if (itParticle->isNull() || !itParticle->isAvailable()) {
257  edm::LogWarning("DataNotFound") << " JetSpecific: PF Particle is invalid\n";
258  continue;
259  }
260  const Candidate* pfCand = itParticle->get();
261  if (pfCand) {
262  const PFCandidate* pfCandCast = dynamic_cast<const PFCandidate*>(pfCand);
263  float weight = (weights != nullptr) ? (*weights)[*itParticle] : 1.0;
264  if (pfCandCast)
265  HOEnergy += pfCandCast->hoEnergy() * weight;
266 
267  switch (std::abs(pfCand->pdgId())) {
268  case 211: //PFCandidate::h: // charged hadron
269  chargedHadronEnergy += pfCand->energy() * weight;
271  chargedMultiplicity += weight;
272  break;
273 
274  case 130: //PFCandidate::h0 : // neutral hadron
275  neutralHadronEnergy += pfCand->energy() * weight;
277  neutralMultiplicity += weight;
278  break;
279 
280  case 22: //PFCandidate::gamma: // photon
281  photonEnergy += pfCand->energy() * weight;
283  neutralEmEnergy += pfCand->energy() * weight;
284  neutralMultiplicity += weight;
285  break;
286 
287  case 11: // PFCandidate::e: // electron
288  electronEnergy += pfCand->energy() * weight;
290  chargedEmEnergy += pfCand->energy() * weight;
291  chargedMultiplicity += weight;
292  break;
293 
294  case 13: //PFCandidate::mu: // muon
295  muonEnergy += pfCand->energy() * weight;
297  chargedMuEnergy += pfCand->energy() * weight;
298  chargedMultiplicity += weight;
299  break;
300 
301  case 1: // PFCandidate::h_HF : // hadron in HF
302  HFHadronEnergy += pfCand->energy() * weight;
303  HFHadronMultiplicity += weight;
304  neutralHadronEnergy += pfCand->energy() * weight;
305  neutralMultiplicity += weight;
306  break;
307 
308  case 2: //PFCandidate::egamma_HF : // electromagnetic in HF
309  HFEMEnergy += pfCand->energy() * weight;
310  HFEMMultiplicity += weight;
311  neutralEmEnergy += pfCand->energy() * weight;
312  neutralMultiplicity += weight;
313  break;
314 
315  default:
316  edm::LogWarning("DataNotFound")
317  << "reco::makePFJetSpecific: Unknown PFCandidate::ParticleType: " << pfCand->pdgId() << " is ignored\n";
318  break;
319  }
320  } else {
321  edm::LogWarning("DataNotFound") << "reco::makePFJetSpecific: Referred constituent is not "
322  << "a PFCandidate\n";
323  }
324  }
325 
326  pfJetSpecific->mChargedHadronEnergy = chargedHadronEnergy;
327  pfJetSpecific->mNeutralHadronEnergy = neutralHadronEnergy;
328  pfJetSpecific->mPhotonEnergy = photonEnergy;
329  pfJetSpecific->mElectronEnergy = electronEnergy;
330  pfJetSpecific->mMuonEnergy = muonEnergy;
331  pfJetSpecific->mHFHadronEnergy = HFHadronEnergy;
332  pfJetSpecific->mHFEMEnergy = HFEMEnergy;
333 
334  pfJetSpecific->mChargedHadronMultiplicity = std::round(chargedHadronMultiplicity);
335  pfJetSpecific->mNeutralHadronMultiplicity = std::round(neutralHadronMultiplicity);
336  pfJetSpecific->mPhotonMultiplicity = std::round(photonMultiplicity);
337  pfJetSpecific->mElectronMultiplicity = std::round(electronMultiplicity);
338  pfJetSpecific->mMuonMultiplicity = std::round(muonMultiplicity);
339  pfJetSpecific->mHFHadronMultiplicity = std::round(HFHadronMultiplicity);
340  pfJetSpecific->mHFEMMultiplicity = std::round(HFEMMultiplicity);
341 
342  pfJetSpecific->mChargedEmEnergy = chargedEmEnergy;
343  pfJetSpecific->mChargedMuEnergy = chargedMuEnergy;
344  pfJetSpecific->mNeutralEmEnergy = neutralEmEnergy;
345  pfJetSpecific->mChargedMultiplicity = std::round(chargedMultiplicity);
346  pfJetSpecific->mNeutralMultiplicity = std::round(neutralMultiplicity);
347 
348  pfJetSpecific->mHOEnergy = HOEnergy;
349 
350  return true;
351 }
352 
353 //______________________________________________________________________________
354 bool reco::makeSpecific(std::vector<reco::CandidatePtr> const& mcparticles, GenJet::Specific* genJetSpecific) {
355  if (nullptr == genJetSpecific)
356  return false;
357 
358  std::vector<reco::CandidatePtr>::const_iterator itMcParticle = mcparticles.begin();
359  for (; itMcParticle != mcparticles.end(); ++itMcParticle) {
360  if (itMcParticle->isNull() || !itMcParticle->isAvailable()) {
361  edm::LogWarning("DataNotFound") << " JetSpecific: MC Particle is invalid\n";
362  continue;
363  }
364 
365  const Candidate* candidate = itMcParticle->get();
366  if (candidate->hasMasterClone())
367  candidate = candidate->masterClone().get();
368  //const GenParticle* genParticle = GenJet::genParticle(candidate);
369 
370  if (candidate) {
371  double e = candidate->energy();
372 
373  // Legacy calo-like definitions
374  switch (std::abs(candidate->pdgId())) {
375  case 22: // photon
376  case 11: // e
377  genJetSpecific->m_EmEnergy += e;
378  break;
379  case 211: // pi
380  case 321: // K
381  case 130: // KL
382  case 2212: // p
383  case 2112: // n
384  genJetSpecific->m_HadEnergy += e;
385  break;
386  case 13: // muon
387  case 12: // nu_e
388  case 14: // nu_mu
389  case 16: // nu_tau
390  genJetSpecific->m_InvisibleEnergy += e;
391  break;
392  default:
393  genJetSpecific->m_AuxiliaryEnergy += e;
394  }
395 
396  // PF-like definitions
397  switch (std::abs(candidate->pdgId())) {
398  case 11: //electron
399  genJetSpecific->m_ChargedEmEnergy += e;
400  ++(genJetSpecific->m_ChargedEmMultiplicity);
401  break;
402  case 13: // muon
403  genJetSpecific->m_MuonEnergy += e;
404  ++(genJetSpecific->m_MuonMultiplicity);
405  break;
406  case 211: //pi+-
407  case 321: //K
408  case 2212: //p
409  case 3222: //Sigma+
410  case 3112: //Sigma-
411  case 3312: //Xi-
412  case 3334: //Omega-
413  genJetSpecific->m_ChargedHadronEnergy += e;
414  ++(genJetSpecific->m_ChargedHadronMultiplicity);
415  break;
416  case 310: //KS0
417  case 130: //KL0
418  case 3122: //Lambda0
419  case 3212: //Sigma0
420  case 3322: //Xi0
421  case 2112: //n0
422  genJetSpecific->m_NeutralHadronEnergy += e;
423  ++(genJetSpecific->m_NeutralHadronMultiplicity);
424  break;
425  case 22: //photon
426  genJetSpecific->m_NeutralEmEnergy += e;
427  ++(genJetSpecific->m_NeutralEmMultiplicity);
428  break;
429  }
430  } // end if found a candidate
431  else {
432  edm::LogWarning("DataNotFound") << "reco::makeGenJetSpecific: Referred GenParticleCandidate "
433  << "is not available in the event\n";
434  }
435  } // end for loop over MC particles
436 
437  return true;
438 }
439 
440 //______________________________________________________________________________
442  int eta = std::abs(iEta);
443  if (eta <= topology.lastHBRing())
444  return HcalBarrel;
445  else if (eta <= topology.lastHERing())
446  return HcalEndcap;
447  else if (eta <= topology.lastHFRing())
448  return HcalForward;
449  return HcalEmpty;
450 }
reco::Candidate::energy
virtual double energy() const =0
energy
reco::PFJet::Specific::mChargedHadronMultiplicity
int mChargedHadronMultiplicity
Definition: PFJet.h:59
HLT_FULL_cff.towers
towers
Definition: HLT_FULL_cff.py:36362
reco::CaloJet
Jets made from CaloTowers.
Definition: CaloJet.h:27
reco::PFJet::Specific::mNeutralEmEnergy
float mNeutralEmEnergy
Definition: PFJet.h:71
reco::writeSpecific
void writeSpecific(reco::CaloJet &jet, reco::Particle::LorentzVector const &p4, reco::Particle::Point const &point, std::vector< reco::CandidatePtr > const &constituents, edm::EventSetup const &c)
Definition: JetSpecific.cc:34
reco::GenJet::Specific::m_NeutralHadronEnergy
float m_NeutralHadronEnergy
K0, etc.
Definition: GenJet.h:56
reco::GenJet
Jets made from MC generator particles.
Definition: GenJet.h:23
reco::GenJet::Specific::m_HadEnergy
float m_HadEnergy
Energy of Hadrons.
Definition: GenJet.h:46
MessageLogger.h
ESHandle.h
reco::btau::neutralHadronMultiplicity
Definition: TaggingVariable.h:109
PFCandidate.h
reco::GenJet::Specific::m_NeutralEmEnergy
float m_NeutralEmEnergy
Photons.
Definition: GenJet.h:60
CaloGeometryRecord
Definition: CaloGeometryRecord.h:30
reco::CaloJet::Specific::mEmEnergyInHF
float mEmEnergyInHF
Em energy in HF.
Definition: CaloJet.h:64
mps_merge.weight
weight
Definition: mps_merge.py:88
reco::PFJet::Specific::mPhotonMultiplicity
int mPhotonMultiplicity
Definition: PFJet.h:61
reco::GenJet::Specific::m_MuonMultiplicity
int m_MuonMultiplicity
Definition: GenJet.h:68
reco::CaloJet::Specific::mEmEnergyInEB
float mEmEnergyInEB
Em energy in EB.
Definition: CaloJet.h:60
geometry
Definition: geometry.py:1
reco::PFJet::Specific::mMuonEnergy
float mMuonEnergy
Definition: PFJet.h:55
HcalTopology
Definition: HcalTopology.h:26
reco::PFJet::Specific::mHFHadronMultiplicity
int mHFHadronMultiplicity
Definition: PFJet.h:64
reco::CaloJet::Specific::mEnergyFractionEm
float mEnergyFractionEm
Em energy fraction.
Definition: CaloJet.h:68
hgcalTowerProducer_cfi.tower
tower
Definition: hgcalTowerProducer_cfi.py:4
reco::GenJet::Specific::m_ChargedEmEnergy
float m_ChargedEmEnergy
Electrons.
Definition: GenJet.h:58
btagElecInJet_cfi.CaloJet
CaloJet
Definition: btagElecInJet_cfi.py:4
relativeConstraints.geometry
geometry
Definition: relativeConstraints.py:39
reco::PFJet::Specific::mNeutralHadronMultiplicity
int mNeutralHadronMultiplicity
Definition: PFJet.h:60
reco::Candidate::get
T get() const
get a component
Definition: Candidate.h:221
reco::GenJet::Specific::m_InvisibleEnergy
float m_InvisibleEnergy
Invisible energy (mu, nu, ...)
Definition: GenJet.h:48
CaloTowerDetId::SubdetId
static const int SubdetId
Definition: CaloTowerDetId.h:34
reco::GenJet::Specific::m_NeutralEmMultiplicity
int m_NeutralEmMultiplicity
Definition: GenJet.h:67
reco::GenJet::Specific::m_EmEnergy
float m_EmEnergy
Definition: GenJet.h:44
HcalBarrel
Definition: HcalAssistant.h:33
HcalEmpty
Definition: HcalAssistant.h:32
reco::PFJet::Specific::mNeutralMultiplicity
int mNeutralMultiplicity
Definition: PFJet.h:73
DetId::Calo
Definition: DetId.h:29
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
ecalTrigSettings_cff.particles
particles
Definition: ecalTrigSettings_cff.py:11
reco::Particle::LorentzVector
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Particle.h:21
reco::TrackJet
Jets made out of tracks.
Definition: TrackJet.h:24
reco::GenJet::Specific::m_ChargedHadronMultiplicity
int m_ChargedHadronMultiplicity
Corresponding multiplicities:
Definition: GenJet.h:64
GenParticle.h
reco::CaloJet::Specific::mEmEnergyInEE
float mEmEnergyInEE
Em energy in EE.
Definition: CaloJet.h:62
reco::CaloJet::Specific::mHadEnergyInHE
float mHadEnergyInHE
Hadronic energy in HE.
Definition: CaloJet.h:58
reco::GenJet::Specific::m_MuonEnergy
float m_MuonEnergy
Muons.
Definition: GenJet.h:62
reco::CaloJet::Specific::mMaxEInHadTowers
float mMaxEInHadTowers
Maximum energy in HCAL towers.
Definition: CaloJet.h:50
reco::PFJet::Specific::mMuonMultiplicity
int mMuonMultiplicity
Definition: PFJet.h:63
reco::BasicJet
Jets made from CaloTowers.
Definition: BasicJet.h:19
reco::GenJet::Specific
Definition: GenJet.h:25
reco::hcalSubdetector
HcalSubdetector hcalSubdetector(int iEta, const HcalTopology &topology)
converts eta to the corresponding HCAL subdetector.
Definition: JetSpecific.cc:441
reco::PFJet::Specific::mNeutralHadronEnergy
float mNeutralHadronEnergy
Definition: PFJet.h:52
reco::PFJet::Specific::mChargedMultiplicity
int mChargedMultiplicity
Definition: PFJet.h:72
timingPdfMaker.specific
specific
Definition: timingPdfMaker.py:78
reco::CaloJet::Specific::mEnergyFractionHadronic
float mEnergyFractionHadronic
Hadronic energy fraction.
Definition: CaloJet.h:66
PVValHelper::eta
Definition: PVValidationHelpers.h:70
reco::CaloJet::Specific::mHadEnergyInHB
float mHadEnergyInHB
Hadronic energy in HB.
Definition: CaloJet.h:54
HLT_FULL_cff.weights
weights
Definition: HLT_FULL_cff.py:99170
edm::ESHandle< CaloGeometry >
reco::PFJet::Specific::mElectronEnergy
float mElectronEnergy
Definition: PFJet.h:54
reco::btau::muonMultiplicity
Definition: TaggingVariable.h:112
reco::Candidate::hasMasterClone
virtual bool hasMasterClone() const =0
reco::PFJet::Specific::mChargedHadronEnergy
float mChargedHadronEnergy
Definition: PFJet.h:51
edm::RefToBase::get
value_type const * get() const
Definition: RefToBase.h:209
HcalRecNumberingRecord
Definition: HcalRecNumberingRecord.h:23
CaloGeometryRecord.h
EcalSubdetector.h
reco::PFJet::Specific::mHFEMEnergy
float mHFEMEnergy
Definition: PFJet.h:57
ALCARECOTkAlJpsiMuMu_cff.charge
charge
Definition: ALCARECOTkAlJpsiMuMu_cff.py:47
reco::CaloJet::Specific::mHadEnergyInHF
float mHadEnergyInHF
Hadronic energy in HF.
Definition: CaloJet.h:56
reco::PFJet::Specific::mPhotonEnergy
float mPhotonEnergy
Definition: PFJet.h:53
reco::PFJet::Specific::mHFEMMultiplicity
int mHFEMMultiplicity
Definition: PFJet.h:65
reco::CaloJet::Specific::mHadEnergyInHO
float mHadEnergyInHO
Hadronic nergy fraction in HO.
Definition: CaloJet.h:52
CaloSubdetectorGeometry.h
reco::GenJet::Specific::m_AuxiliaryEnergy
float m_AuxiliaryEnergy
Anything else (undecayed Sigmas etc.)
Definition: GenJet.h:50
jetUpdater_cfi.sort
sort
Definition: jetUpdater_cfi.py:29
reco::PFJet::Specific::mHOEnergy
float mHOEnergy
Definition: PFJet.h:75
HcalDetId.h
reco::CaloJet::Specific::mTowersArea
float mTowersArea
Area of contributing CaloTowers.
Definition: CaloJet.h:70
CaloTower
Definition: CaloTower.h:26
p4
double p4[4]
Definition: TauolaWrapper.h:92
reco::GenJet::Specific::m_NeutralHadronMultiplicity
int m_NeutralHadronMultiplicity
Definition: GenJet.h:65
CaloSubdetectorGeometry::getGeometry
virtual std::shared_ptr< const CaloCellGeometry > getGeometry(const DetId &id) const
Get the cell geometry of a given detector id. Should return false if not found.
Definition: CaloSubdetectorGeometry.cc:36
CaloTowerDetId.h
edm::EventSetup
Definition: EventSetup.h:58
HcalTopology::lastHERing
int lastHERing() const
Definition: HcalTopology.h:94
reco::PFJet::Specific::mHFHadronEnergy
float mHFHadronEnergy
Definition: PFJet.h:56
reco::btau::chargedHadronMultiplicity
Definition: TaggingVariable.h:108
get
#define get
reco::PFJet::Specific::mChargedMuEnergy
float mChargedMuEnergy
Definition: PFJet.h:70
reco::Candidate::pdgId
virtual int pdgId() const =0
PDG identifier.
reco::Candidate
Definition: Candidate.h:27
HcalSubdetector
HcalSubdetector
Definition: HcalAssistant.h:31
HcalForward
Definition: HcalAssistant.h:36
HcalTopology.h
CaloCellGeometry.h
HcalEndcap
Definition: HcalAssistant.h:34
metsig::jet
Definition: SignAlgoResolutions.h:47
edm::ValueMap< float >
CaloGeometry.h
reco::PFJet::Specific::mElectronMultiplicity
int mElectronMultiplicity
Definition: PFJet.h:62
JetSpecific.h
reco::PFJet
Jets made from PFObjects.
Definition: PFJet.h:20
HcalTopology::lastHFRing
int lastHFRing() const
Definition: HcalTopology.h:97
CaloSubdetectorGeometry
Definition: CaloSubdetectorGeometry.h:22
reco::makeSpecific
bool makeSpecific(std::vector< reco::CandidatePtr > const &towers, const CaloSubdetectorGeometry *towerGeometry, reco::CaloJet::Specific *caloJetSpecific, const HcalTopology &topology)
Make CaloJet specifics. Assumes PseudoJet is made from CaloTowerCandidates.
Definition: JetSpecific.cc:118
reco::Candidate::masterClone
virtual const CandidateBaseRef & masterClone() const =0
reco::PFJet::Specific
Definition: PFJet.h:25
reco::PFJet::Specific::mChargedEmEnergy
float mChargedEmEnergy
Definition: PFJet.h:69
reco::Particle::Point
math::XYZPoint Point
point in the space
Definition: Particle.h:25
reco::PFCandidate
Particle reconstructed by the particle flow algorithm.
Definition: PFCandidate.h:41
L1TowerCalibrationProducer_cfi.iEta
iEta
Definition: L1TowerCalibrationProducer_cfi.py:60
reco::btau::electronMultiplicity
Definition: TaggingVariable.h:111
reco::GenJet::Specific::m_ChargedEmMultiplicity
int m_ChargedEmMultiplicity
Definition: GenJet.h:66
MaterialEffects_cfi.photonEnergy
photonEnergy
Definition: MaterialEffects_cfi.py:26
reco::CaloJet::Specific::mMaxEInEmTowers
float mMaxEInEmTowers
Maximum energy in EM towers.
Definition: CaloJet.h:48
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
nanoDQM_cfi.GenJet
GenJet
Definition: nanoDQM_cfi.py:262
reco::btau::photonMultiplicity
Definition: TaggingVariable.h:110
RecoCaloTowerCandidate.h
c
auto & c
Definition: CAHitNtupletGeneratorKernelsImpl.h:46
reco::CaloJet::Specific
Definition: CaloJet.h:32
point
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Definition: invegas.h:5
reco::PFClusterJet
Jets made out of PFClusters.
Definition: PFClusterJet.h:23
weight
Definition: weight.py:1
reco::GenJet::Specific::m_ChargedHadronEnergy
float m_ChargedHadronEnergy
Definition: GenJet.h:54
HcalTopology::lastHBRing
int lastHBRing() const
Definition: HcalTopology.h:92
reco::PFCandidate::hoEnergy
double hoEnergy() const
return corrected Hcal energy
Definition: PFCandidate.h:245
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37