CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Attributes
JetMatchingTools Class Reference

#include <JetMatchingTools.h>

Classes

struct  JetConstituent
 

Public Member Functions

int generatorId (unsigned fSimTrackId)
 Generator ID. More...
 
std::vector< const CaloTower * > getCaloTowers (int fGeneratorId)
 CaloTowers. More...
 
std::vector< JetConstituentgetConstituentHits (const CaloTower &fTower)
 get CaloRecHits contributing to the tower More...
 
std::vector< DetIdgetConstituentIds (const CaloTower &fTower)
 get cells contributing to the tower More...
 
std::vector< const CaloTower * > getConstituents (const reco::CaloJet &fJet)
 get towers contributing to CaloJet More...
 
const EBRecHitCollectiongetEBRecHitCollection ()
 
const edm::PCaloHitContainergetEBSimHitCollection ()
 
const EERecHitCollectiongetEERecHitCollection ()
 
const edm::PCaloHitContainergetEESimHitCollection ()
 
const reco::GenParticlegetGenParticle (int fGeneratorId)
 GenParticle. More...
 
std::vector< const reco::GenParticle * > getGenParticles (const reco::CaloJet &fJet, bool fVerbose=true)
 GenParticles for CaloJet. More...
 
std::vector< const reco::GenParticle * > getGenParticles (const reco::GenJet &fJet)
 GenParticles for GenJet. More...
 
const reco::CandidateCollectiongetGenParticlesCollection ()
 
const HBHERecHitCollectiongetHBHERecHitCollection ()
 
const edm::PCaloHitContainergetHcalSimHitCollection ()
 
const HFRecHitCollectiongetHFRecHitCollection ()
 
const HORecHitCollectiongetHORecHitCollection ()
 
std::vector< const PCaloHit * > getPCaloHits (DetId fId)
 get PCaloHits contributing to the detId More...
 
std::vector< const PCaloHit * > getPCaloHits (int fGeneratorId)
 CaloSimHits. More...
 
const edm::SimTrackContainergetSimTrackCollection ()
 
const edm::SimVertexContainergetSimVertexCollection ()
 
const SimTrackgetTrack (unsigned fSimTrackId)
 convert trackId to SimTrack More...
 
int getTrackId (const PCaloHit &fHit)
 GEANT track ID. More...
 
 JetMatchingTools (const edm::Event &fEvent, edm::ConsumesCollector &&iC)
 
double lostEnergyFraction (const reco::CaloJet &fJet)
 energy in broken links More...
 
double overlapEnergyFraction (const std::vector< const reco::GenParticle * > &fObject, const std::vector< const reco::GenParticle * > &fReference) const
 energy overlap More...
 
 ~JetMatchingTools ()
 

Private Attributes

edm::EDGetTokenT< reco::CandidateCollectioninput_cands_token_
 
edm::EDGetTokenT< EBRecHitCollectioninput_ebrechits_token_
 
edm::EDGetTokenT< EERecHitCollectioninput_eerechits_token_
 
edm::EDGetTokenT< HBHERecHitCollectioninput_hbherechits_token_
 
edm::EDGetTokenT< HFRecHitCollectioninput_hfrechits_token_
 
edm::EDGetTokenT< HORecHitCollectioninput_horechits_token_
 
edm::EDGetTokenT< edm::PCaloHitContainerinput_pcalohits_ebcal_token_
 
edm::EDGetTokenT< edm::PCaloHitContainerinput_pcalohits_eecal_token_
 
edm::EDGetTokenT< edm::PCaloHitContainerinput_pcalohits_hcal_token_
 
edm::EDGetTokenT< edm::SimTrackContainerinput_simtrack_token_
 
edm::EDGetTokenT< edm::SimVertexContainerinput_simvertex_token_
 
const EBRecHitCollectionmEBRecHitCollection
 
const edm::PCaloHitContainermEBSimHitCollection
 
const EERecHitCollectionmEERecHitCollection
 
const edm::PCaloHitContainermEESimHitCollection
 
const edm::EventmEvent
 
const reco::CandidateCollectionmGenParticleCollection
 
const HBHERecHitCollectionmHBHERecHitCollection
 
const edm::PCaloHitContainermHcalSimHitCollection
 
const HFRecHitCollectionmHFRecHitCollection
 
const HORecHitCollectionmHORecHitCollection
 
const edm::SimTrackContainermSimTrackCollection
 
const edm::SimVertexContainermSimVertexCollection
 

Detailed Description

Definition at line 28 of file JetMatchingTools.h.

Constructor & Destructor Documentation

JetMatchingTools::JetMatchingTools ( const edm::Event fEvent,
edm::ConsumesCollector &&  iC 
)

Definition at line 36 of file JetMatchingTools.cc.

References input_cands_token_, input_ebrechits_token_, input_eerechits_token_, input_hbherechits_token_, input_hfrechits_token_, input_horechits_token_, input_pcalohits_ebcal_token_, input_pcalohits_eecal_token_, input_pcalohits_hcal_token_, input_simtrack_token_, and input_simvertex_token_.

37  : mEvent (&fEvent),
38  mEBRecHitCollection (nullptr),
39  mEERecHitCollection (nullptr),
40  mHBHERecHitCollection (nullptr),
41  mHORecHitCollection (nullptr),
42  mHFRecHitCollection (nullptr),
43  mEBSimHitCollection (nullptr),
44  mEESimHitCollection (nullptr),
45  mHcalSimHitCollection (nullptr),
46  mSimTrackCollection (nullptr),
47  mSimVertexCollection (nullptr),
48  mGenParticleCollection (nullptr)
49 {
50 
51  input_ebrechits_token_ = iC.mayConsume<EBRecHitCollection>(edm::InputTag ("ecalRecHit:EcalRecHitsEB"));
52  input_eerechits_token_ = iC.mayConsume<EERecHitCollection>(edm::InputTag ("ecalRecHit:EcalRecHitsEE"));
62 
63 }
const edm::PCaloHitContainer * mHcalSimHitCollection
std::vector< PCaloHit > PCaloHitContainer
const EBRecHitCollection * mEBRecHitCollection
edm::EDGetTokenT< edm::PCaloHitContainer > input_pcalohits_ebcal_token_
const edm::PCaloHitContainer * mEBSimHitCollection
edm::EDGetTokenT< edm::SimVertexContainer > input_simvertex_token_
EDGetTokenT< ProductType > mayConsume(edm::InputTag const &tag)
const reco::CandidateCollection * mGenParticleCollection
edm::EDGetTokenT< EERecHitCollection > input_eerechits_token_
const edm::PCaloHitContainer * mEESimHitCollection
edm::EDGetTokenT< reco::CandidateCollection > input_cands_token_
edm::EDGetTokenT< EBRecHitCollection > input_ebrechits_token_
const edm::SimTrackContainer * mSimTrackCollection
const EERecHitCollection * mEERecHitCollection
edm::EDGetTokenT< HFRecHitCollection > input_hfrechits_token_
edm::EDGetTokenT< HORecHitCollection > input_horechits_token_
const edm::SimVertexContainer * mSimVertexCollection
edm::EDGetTokenT< edm::PCaloHitContainer > input_pcalohits_eecal_token_
edm::EDGetTokenT< edm::SimTrackContainer > input_simtrack_token_
std::vector< SimVertex > SimVertexContainer
const edm::Event * mEvent
const HORecHitCollection * mHORecHitCollection
edm::EDGetTokenT< HBHERecHitCollection > input_hbherechits_token_
std::vector< SimTrack > SimTrackContainer
edm::EDGetTokenT< edm::PCaloHitContainer > input_pcalohits_hcal_token_
const HFRecHitCollection * mHFRecHitCollection
const HBHERecHitCollection * mHBHERecHitCollection
JetMatchingTools::~JetMatchingTools ( )

Definition at line 65 of file JetMatchingTools.cc.

65 {}

Member Function Documentation

int JetMatchingTools::generatorId ( unsigned  fSimTrackId)

Generator ID.

Definition at line 242 of file JetMatchingTools.cc.

References MessageLogger_cfi::cerr, SimTrack::genpartIndex(), getSimVertexCollection(), getTrack(), SimTrack::noGenpart(), SimVertex::noParent(), SimTrack::noVertex(), SimVertex::parentIndex(), HiIsolationCommonParameters_cff::track, and SimTrack::vertIndex().

Referenced by getGenParticles(), and lostEnergyFraction().

242  {
243  const SimTrack* track = getTrack (fSimTrackId);
244  if (!track) return -1;
245  while (track->noGenpart ()) {
246  if (track->noVertex ()) {
247  std::cerr << "JetMatchingTools::generatorId-> No vertex for track " << *track << std::endl;
248  return -1;
249  }
250  const SimVertex* vertex = &((*getSimVertexCollection ())[track->vertIndex ()]);
251  if (vertex->noParent()) {
252  std::cerr << "JetMatchingTools::generatorId-> No track for vertex " << *vertex << std::endl;
253  return -1;
254  }
255  track = getTrack (vertex->parentIndex ());
256  }
257  return track->genpartIndex ();
258 }
const edm::SimVertexContainer * getSimVertexCollection()
bool noGenpart() const
Definition: SimTrack.h:34
int parentIndex() const
Definition: SimVertex.h:33
int genpartIndex() const
index of the corresponding Generator particle in the Event container (-1 if no Genpart) ...
Definition: SimTrack.h:33
bool noVertex() const
Definition: SimTrack.h:30
int vertIndex() const
index of the vertex in the Event container (-1 if no vertex)
Definition: SimTrack.h:29
const SimTrack * getTrack(unsigned fSimTrackId)
convert trackId to SimTrack
bool noParent() const
Definition: SimVertex.h:34
std::vector<const CaloTower*> JetMatchingTools::getCaloTowers ( int  fGeneratorId)

CaloTowers.

std::vector< JetMatchingTools::JetConstituent > JetMatchingTools::getConstituentHits ( const CaloTower fTower)

get CaloRecHits contributing to the tower

Definition at line 165 of file JetMatchingTools.cc.

References MessageLogger_cfi::cerr, CaloTower::constituent(), CaloTower::constituentsSize(), DetId::Ecal, EcalBarrel, EcalEndcap, getEBRecHitCollection(), getEERecHitCollection(), getHBHERecHitCollection(), getHFRecHitCollection(), getHORecHitCollection(), DetId::Hcal, HcalBarrel, HcalEndcap, HcalForward, HcalOuter, mps_fire::i, and mps_fire::result.

Referenced by lostEnergyFraction().

165  {
166  std::vector<JetConstituent> result;
167 
168  for (unsigned i = 0; i < fTower.constituentsSize(); ++i) {
169  DetId id = fTower.constituent (i);
170 
171  if (id.det () == DetId::Ecal) {
172  const EcalRecHit *hit = nullptr;
173 
174  if ((EcalSubdetector) id.subdetId () == EcalBarrel) {
175  hit = getHit (*getEBRecHitCollection (), id);
176  }
177  else if ((EcalSubdetector) id.subdetId () == EcalEndcap) {
178  hit = getHit (*getEERecHitCollection (), id);
179  }
180 
181  assert(hit != nullptr);
182  if (hit) result.push_back(JetConstituent(*hit));
183  else std::cerr << "Can not find rechit for id " << id.rawId () << std::endl;
184  } else if (id.det () == DetId::Hcal) {
185  const CaloRecHit* hit = nullptr;
186 
187  if ((HcalSubdetector) id.subdetId () == HcalBarrel || (HcalSubdetector) id.subdetId () == HcalEndcap) {
188  hit = getHit (*getHBHERecHitCollection (), id);
189  }
190  else if ((HcalSubdetector) id.subdetId () == HcalOuter) {
191  hit = getHit (*getHORecHitCollection (), id);
192  }
193  if ((HcalSubdetector) id.subdetId () == HcalForward) {
194  hit = getHit (*getHFRecHitCollection (), id);
195  }
196 
197  if (hit) result.push_back(JetConstituent(*hit));
198  else std::cerr << "Can not find rechit for id " << id.rawId () << std::endl;
199  }
200  }
201 
202  return result;
203 }
size_t constituentsSize() const
Definition: CaloTower.h:105
const HFRecHitCollection * getHFRecHitCollection()
DetId constituent(size_t i) const
Definition: CaloTower.h:106
const EBRecHitCollection * getEBRecHitCollection()
HcalSubdetector
Definition: HcalAssistant.h:31
const EERecHitCollection * getEERecHitCollection()
const HORecHitCollection * getHORecHitCollection()
const HBHERecHitCollection * getHBHERecHitCollection()
Definition: DetId.h:18
EcalSubdetector
std::vector< DetId > JetMatchingTools::getConstituentIds ( const CaloTower fTower)

get cells contributing to the tower

Definition at line 206 of file JetMatchingTools.cc.

References CaloTower::constituent(), CaloTower::constituentsSize(), mps_fire::i, and mps_fire::result.

Referenced by getGenParticles().

206  {
207  std::vector <DetId> result;
208  for (unsigned i = 0; i < fTower.constituentsSize(); ++i) {
209  DetId id = fTower.constituent (i);
210  result.push_back (id);
211  }
212  return result;
213 }
size_t constituentsSize() const
Definition: CaloTower.h:105
DetId constituent(size_t i) const
Definition: CaloTower.h:106
Definition: DetId.h:18
std::vector< const CaloTower * > JetMatchingTools::getConstituents ( const reco::CaloJet fJet)

get towers contributing to CaloJet

Definition at line 157 of file JetMatchingTools.cc.

References reco::CaloJet::getCaloConstituents(), mps_fire::i, and mps_fire::result.

Referenced by getGenParticles(), and lostEnergyFraction().

157  {
158  std::vector <const CaloTower*> result;
159  std::vector<CaloTowerPtr> constituents = fJet.getCaloConstituents ();
160  for (unsigned i = 0; i < constituents.size(); ++i) result.push_back (&*(constituents[i]));
161  return result;
162 }
virtual std::vector< CaloTowerPtr > getCaloConstituents() const
get all constituents
Definition: CaloJet.cc:93
const EBRecHitCollection * JetMatchingTools::getEBRecHitCollection ( )

Definition at line 67 of file JetMatchingTools.cc.

References edm::Event::getByToken(), input_ebrechits_token_, mEBRecHitCollection, and mEvent.

Referenced by getConstituentHits().

67  {
68  if (!mEBRecHitCollection) {
71  mEBRecHitCollection = &*recHits;
72  }
73  return mEBRecHitCollection;
74 }
const EBRecHitCollection * mEBRecHitCollection
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
edm::EDGetTokenT< EBRecHitCollection > input_ebrechits_token_
const edm::Event * mEvent
const PCaloHitContainer * JetMatchingTools::getEBSimHitCollection ( )

Definition at line 107 of file JetMatchingTools.cc.

References edm::Event::getByToken(), input_pcalohits_ebcal_token_, mEBSimHitCollection, mEvent, and trackerHits::simHits.

Referenced by getPCaloHits().

107  {
108  if (!mEBSimHitCollection) {
112  }
113  return mEBSimHitCollection;
114 }
edm::EDGetTokenT< edm::PCaloHitContainer > input_pcalohits_ebcal_token_
const edm::PCaloHitContainer * mEBSimHitCollection
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
const edm::Event * mEvent
const EERecHitCollection * JetMatchingTools::getEERecHitCollection ( )

Definition at line 75 of file JetMatchingTools.cc.

References edm::Event::getByToken(), input_eerechits_token_, mEERecHitCollection, and mEvent.

Referenced by getConstituentHits().

75  {
76  if (!mEERecHitCollection) {
79  mEERecHitCollection = &*recHits;
80  }
81  return mEERecHitCollection;
82 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
edm::EDGetTokenT< EERecHitCollection > input_eerechits_token_
const EERecHitCollection * mEERecHitCollection
const edm::Event * mEvent
const PCaloHitContainer * JetMatchingTools::getEESimHitCollection ( )

Definition at line 115 of file JetMatchingTools.cc.

References edm::Event::getByToken(), input_pcalohits_eecal_token_, mEESimHitCollection, mEvent, and trackerHits::simHits.

Referenced by getPCaloHits().

115  {
116  if (!mEESimHitCollection) {
120  }
121  return mEESimHitCollection;
122 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
const edm::PCaloHitContainer * mEESimHitCollection
edm::EDGetTokenT< edm::PCaloHitContainer > input_pcalohits_eecal_token_
const edm::Event * mEvent
const reco::GenParticle * JetMatchingTools::getGenParticle ( int  fGeneratorId)

GenParticle.

Definition at line 261 of file JetMatchingTools.cc.

References MessageLogger_cfi::cerr, reco::GenJet::genParticle(), getGenParticlesCollection(), edm::OwnVector< T, P >::size(), and findQualityFiles::size.

Referenced by getGenParticles().

261  {
262  if (fGeneratorId > int (getGenParticlesCollection ()->size())) {
263  std::cerr << "JetMatchingTools::getGenParticle-> requested index " << fGeneratorId << " is grater then container size " << getGenParticlesCollection ()->size() << std::endl;
264  return nullptr;
265  }
266  return reco::GenJet::genParticle ( &(*getGenParticlesCollection ())[fGeneratorId-1]); // knowhow: index is shifted by 1
267 }
size
Write out results.
const reco::CandidateCollection * getGenParticlesCollection()
size_type size() const
Definition: OwnVector.h:264
static const GenParticle * genParticle(const reco::Candidate *fConstituent)
convert generic constituent to specific type
Definition: GenJet.cc:38
std::vector< const reco::GenParticle * > JetMatchingTools::getGenParticles ( const reco::CaloJet fJet,
bool  fVerbose = true 
)

GenParticles for CaloJet.

Definition at line 270 of file JetMatchingTools.cc.

References MessageLogger_cfi::cerr, generatorId(), getConstituentIds(), getConstituents(), getGenParticle(), getPCaloHits(), getTrackId(), and mps_fire::result.

Referenced by IsolatedParticlesGeneratedJets::analyze().

270  {
271  std::set <const reco::GenParticle*> result;
272  // follow the chain
273  std::vector <const CaloTower*> towers = getConstituents (fJet) ;
274  for (unsigned itower = 0; itower < towers.size (); ++itower) {
275  std::vector <DetId> detids = getConstituentIds (*(towers[itower])) ;
276  for (unsigned iid = 0; iid < detids.size(); ++iid) {
277  std::vector <const PCaloHit*> phits = getPCaloHits (detids[iid]);
278  for (unsigned iphit = 0; iphit < phits.size(); ++iphit) {
279  int trackId = getTrackId (*(phits[iphit]));
280  if (trackId >= 0) {
281  int genId = generatorId (trackId);
282  if (genId >= 0) {
283  const reco::GenParticle* genPart = getGenParticle (genId);
284  if (genPart) {
285  result.insert (genPart);
286  }
287  else if (fVerbose) {
288  std::cerr << "JetMatchingTools::getGenParticles-> Can not convert genId " << genId << " to GenParticle" << std::endl;
289  }
290  }
291  else if (fVerbose) {
292  std::cerr << "JetMatchingTools::getGenParticles-> Can not convert trackId " << trackId << " to genId" << std::endl;
293  }
294  }
295  else if (fVerbose) {
296  std::cerr << "JetMatchingTools::getGenParticles-> Unknown trackId for PCaloHit " << *(phits[iphit]) << std::endl;
297  }
298  }
299  }
300  }
301  return std::vector <const reco::GenParticle*> (result.begin (), result.end());
302 }
std::vector< const PCaloHit * > getPCaloHits(DetId fId)
get PCaloHits contributing to the detId
int generatorId(unsigned fSimTrackId)
Generator ID.
std::vector< DetId > getConstituentIds(const CaloTower &fTower)
get cells contributing to the tower
const reco::GenParticle * getGenParticle(int fGeneratorId)
GenParticle.
std::vector< const CaloTower * > getConstituents(const reco::CaloJet &fJet)
get towers contributing to CaloJet
int getTrackId(const PCaloHit &fHit)
GEANT track ID.
std::vector< const reco::GenParticle * > JetMatchingTools::getGenParticles ( const reco::GenJet fJet)

GenParticles for GenJet.

Definition at line 305 of file JetMatchingTools.cc.

References reco::GenJet::getGenConstituents().

305  {
306  return fJet.getGenConstituents ();
307 }
virtual std::vector< const GenParticle * > getGenConstituents() const
get all constituents
Definition: GenJet.cc:58
const reco::CandidateCollection * JetMatchingTools::getGenParticlesCollection ( )

Definition at line 147 of file JetMatchingTools.cc.

References edm::Event::getByToken(), cmsBatch::handle, input_cands_token_, mEvent, and mGenParticleCollection.

Referenced by getGenParticle().

147  {
148  if (!mGenParticleCollection) {
152  }
153  return mGenParticleCollection;
154 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
const reco::CandidateCollection * mGenParticleCollection
edm::EDGetTokenT< reco::CandidateCollection > input_cands_token_
const edm::Event * mEvent
const HBHERecHitCollection * JetMatchingTools::getHBHERecHitCollection ( )

Definition at line 83 of file JetMatchingTools.cc.

References edm::Event::getByToken(), input_hbherechits_token_, mEvent, and mHBHERecHitCollection.

Referenced by getConstituentHits().

83  {
84  if (!mHBHERecHitCollection) {
87  mHBHERecHitCollection = &*recHits;
88  }
89  return mHBHERecHitCollection;
90 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
const edm::Event * mEvent
edm::EDGetTokenT< HBHERecHitCollection > input_hbherechits_token_
const HBHERecHitCollection * mHBHERecHitCollection
const PCaloHitContainer * JetMatchingTools::getHcalSimHitCollection ( )

Definition at line 123 of file JetMatchingTools.cc.

References edm::Event::getByToken(), input_pcalohits_hcal_token_, mEvent, mHcalSimHitCollection, and trackerHits::simHits.

Referenced by getPCaloHits().

123  {
124  if (!mHcalSimHitCollection) {
128  }
129  return mHcalSimHitCollection;
130 }
const edm::PCaloHitContainer * mHcalSimHitCollection
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
const edm::Event * mEvent
edm::EDGetTokenT< edm::PCaloHitContainer > input_pcalohits_hcal_token_
const HFRecHitCollection * JetMatchingTools::getHFRecHitCollection ( )

Definition at line 99 of file JetMatchingTools.cc.

References edm::Event::getByToken(), input_hfrechits_token_, mEvent, and mHFRecHitCollection.

Referenced by getConstituentHits().

99  {
100  if (!mHFRecHitCollection) {
103  mHFRecHitCollection = &*recHits;
104  }
105  return mHFRecHitCollection;
106 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
edm::EDGetTokenT< HFRecHitCollection > input_hfrechits_token_
const edm::Event * mEvent
const HFRecHitCollection * mHFRecHitCollection
const HORecHitCollection * JetMatchingTools::getHORecHitCollection ( )

Definition at line 91 of file JetMatchingTools.cc.

References edm::Event::getByToken(), input_horechits_token_, mEvent, and mHORecHitCollection.

Referenced by getConstituentHits().

91  {
92  if (!mHORecHitCollection) {
95  mHORecHitCollection = &*recHits;
96  }
97  return mHORecHitCollection;
98 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
edm::EDGetTokenT< HORecHitCollection > input_horechits_token_
const edm::Event * mEvent
const HORecHitCollection * mHORecHitCollection
std::vector< const PCaloHit * > JetMatchingTools::getPCaloHits ( DetId  fId)

get PCaloHits contributing to the detId

Definition at line 215 of file JetMatchingTools.cc.

References DetId::det(), DetId::Ecal, EcalBarrel, EcalEndcap, getEBSimHitCollection(), getEESimHitCollection(), getHcalSimHitCollection(), DetId::Hcal, mps_fire::result, and DetId::subdetId().

Referenced by getGenParticles(), and lostEnergyFraction().

215  {
216  std::vector <const PCaloHit*> result;
217  if (fId.det () == DetId::Ecal) {
218  if ((EcalSubdetector) fId.subdetId () == EcalBarrel) {
219  result = getSimHits (*getEBSimHitCollection (), fId);
220  }
221  else if ((EcalSubdetector) fId.subdetId () == EcalEndcap) {
222  result = getSimHits (*getEESimHitCollection (), fId);
223  }
224  }
225  else if (fId.det () == DetId::Hcal) {
226  result = getSimHits (*getHcalSimHitCollection (), fId);
227  }
228  return result;
229 }
const edm::PCaloHitContainer * getEESimHitCollection()
const edm::PCaloHitContainer * getEBSimHitCollection()
int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:38
const edm::PCaloHitContainer * getHcalSimHitCollection()
Detector det() const
get the detector field from this detid
Definition: DetId.h:36
EcalSubdetector
std::vector<const PCaloHit*> JetMatchingTools::getPCaloHits ( int  fGeneratorId)

CaloSimHits.

const SimTrackContainer * JetMatchingTools::getSimTrackCollection ( )

Definition at line 131 of file JetMatchingTools.cc.

References edm::Event::getByToken(), input_simtrack_token_, mEvent, mSimTrackCollection, and trackerHits::simHits.

Referenced by getTrack().

131  {
132  if (!mSimTrackCollection) {
136  }
137  return mSimTrackCollection;
138 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
const edm::SimTrackContainer * mSimTrackCollection
edm::EDGetTokenT< edm::SimTrackContainer > input_simtrack_token_
const edm::Event * mEvent
const SimVertexContainer * JetMatchingTools::getSimVertexCollection ( )

Definition at line 139 of file JetMatchingTools.cc.

References edm::Event::getByToken(), input_simvertex_token_, mEvent, mSimVertexCollection, and trackerHits::simHits.

Referenced by generatorId().

139  {
140  if (!mSimVertexCollection) {
144  }
145  return mSimVertexCollection;
146 }
edm::EDGetTokenT< edm::SimVertexContainer > input_simvertex_token_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
const edm::SimVertexContainer * mSimVertexCollection
const edm::Event * mEvent
const SimTrack * JetMatchingTools::getTrack ( unsigned  fSimTrackId)

convert trackId to SimTrack

Definition at line 235 of file JetMatchingTools.cc.

References getSimTrackCollection(), and mps_fire::i.

Referenced by generatorId().

235  {
236  for (unsigned i = 0; i < getSimTrackCollection ()->size (); ++i) {
237  if ((*getSimTrackCollection ())[i].trackId() == fSimTrackId) return &(*getSimTrackCollection ())[i];
238  }
239  return nullptr;
240 }
const edm::SimTrackContainer * getSimTrackCollection()
int JetMatchingTools::getTrackId ( const PCaloHit fHit)

GEANT track ID.

Definition at line 231 of file JetMatchingTools.cc.

References PCaloHit::geantTrackId().

Referenced by getGenParticles(), and lostEnergyFraction().

231  {
232  return fHit.geantTrackId ();
233 }
int geantTrackId() const
Definition: PCaloHit.h:39
double JetMatchingTools::lostEnergyFraction ( const reco::CaloJet fJet)

energy in broken links

Definition at line 310 of file JetMatchingTools.cc.

References generatorId(), getConstituentHits(), getConstituents(), getPCaloHits(), and getTrackId().

310  {
311  double totalEnergy = 0;
312  double lostEnergy = 0;
313  // follow the chain
314  std::vector <const CaloTower*> towers = getConstituents (fJet) ;
315  for (unsigned itower = 0; itower < towers.size (); ++itower) {
316  std::vector<JetConstituent> recHits = getConstituentHits(*(towers[itower]));
317  for (unsigned ihit = 0; ihit < recHits.size(); ++ihit) {
318  double foundSimEnergy = 0;
319  double lostSimEnergy = 0;
320  std::vector <const PCaloHit*> phits = getPCaloHits (recHits[ihit].id);
321  for (unsigned iphit = 0; iphit < phits.size(); ++iphit) {
322  double simEnergy = phits[iphit]->energy ();
323  int trackId = getTrackId (*(phits[iphit]));
324  if (trackId < 0 || generatorId (trackId) < 0) lostSimEnergy += simEnergy;
325  else foundSimEnergy += simEnergy;
326  }
327  if (foundSimEnergy > 0 || lostSimEnergy > 0) {
328  totalEnergy += recHits[ihit].energy;
329  lostEnergy += recHits[ihit].energy * lostSimEnergy / (foundSimEnergy + lostSimEnergy);
330  }
331  }
332  }
333  return lostEnergy / totalEnergy;
334 }
std::vector< const PCaloHit * > getPCaloHits(DetId fId)
get PCaloHits contributing to the detId
int generatorId(unsigned fSimTrackId)
Generator ID.
std::vector< JetConstituent > getConstituentHits(const CaloTower &fTower)
get CaloRecHits contributing to the tower
std::vector< const CaloTower * > getConstituents(const reco::CaloJet &fJet)
get towers contributing to CaloJet
int getTrackId(const PCaloHit &fHit)
GEANT track ID.
double JetMatchingTools::overlapEnergyFraction ( const std::vector< const reco::GenParticle * > &  fObject,
const std::vector< const reco::GenParticle * > &  fReference 
) const

energy overlap

Definition at line 337 of file JetMatchingTools.cc.

References spr::find(), and mps_fire::i.

338  {
339  if (fObject.empty()) return 0;
340  double totalEnergy = 0;
341  double overlapEnergy = 0;
342  for (unsigned i = 0; i < fObject.size(); ++i) {
343  totalEnergy += fObject [i]->energy();
344  if (find (fReference.begin(), fReference.end(), fObject [i]) != fReference.end ()) overlapEnergy += fObject [i]->energy();
345  }
346  return overlapEnergy / totalEnergy;
347 }
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:20

Member Data Documentation

edm::EDGetTokenT<reco::CandidateCollection> JetMatchingTools::input_cands_token_
private

Definition at line 117 of file JetMatchingTools.h.

Referenced by getGenParticlesCollection(), and JetMatchingTools().

edm::EDGetTokenT<EBRecHitCollection> JetMatchingTools::input_ebrechits_token_
private

Definition at line 107 of file JetMatchingTools.h.

Referenced by getEBRecHitCollection(), and JetMatchingTools().

edm::EDGetTokenT<EERecHitCollection> JetMatchingTools::input_eerechits_token_
private

Definition at line 108 of file JetMatchingTools.h.

Referenced by getEERecHitCollection(), and JetMatchingTools().

edm::EDGetTokenT<HBHERecHitCollection> JetMatchingTools::input_hbherechits_token_
private

Definition at line 109 of file JetMatchingTools.h.

Referenced by getHBHERecHitCollection(), and JetMatchingTools().

edm::EDGetTokenT<HFRecHitCollection> JetMatchingTools::input_hfrechits_token_
private

Definition at line 111 of file JetMatchingTools.h.

Referenced by getHFRecHitCollection(), and JetMatchingTools().

edm::EDGetTokenT<HORecHitCollection> JetMatchingTools::input_horechits_token_
private

Definition at line 110 of file JetMatchingTools.h.

Referenced by getHORecHitCollection(), and JetMatchingTools().

edm::EDGetTokenT<edm::PCaloHitContainer> JetMatchingTools::input_pcalohits_ebcal_token_
private

Definition at line 113 of file JetMatchingTools.h.

Referenced by getEBSimHitCollection(), and JetMatchingTools().

edm::EDGetTokenT<edm::PCaloHitContainer> JetMatchingTools::input_pcalohits_eecal_token_
private

Definition at line 112 of file JetMatchingTools.h.

Referenced by getEESimHitCollection(), and JetMatchingTools().

edm::EDGetTokenT<edm::PCaloHitContainer> JetMatchingTools::input_pcalohits_hcal_token_
private

Definition at line 114 of file JetMatchingTools.h.

Referenced by getHcalSimHitCollection(), and JetMatchingTools().

edm::EDGetTokenT<edm::SimTrackContainer> JetMatchingTools::input_simtrack_token_
private

Definition at line 115 of file JetMatchingTools.h.

Referenced by getSimTrackCollection(), and JetMatchingTools().

edm::EDGetTokenT<edm::SimVertexContainer> JetMatchingTools::input_simvertex_token_
private

Definition at line 116 of file JetMatchingTools.h.

Referenced by getSimVertexCollection(), and JetMatchingTools().

const EBRecHitCollection* JetMatchingTools::mEBRecHitCollection
private

Definition at line 95 of file JetMatchingTools.h.

Referenced by getEBRecHitCollection().

const edm::PCaloHitContainer* JetMatchingTools::mEBSimHitCollection
private

Definition at line 100 of file JetMatchingTools.h.

Referenced by getEBSimHitCollection().

const EERecHitCollection* JetMatchingTools::mEERecHitCollection
private

Definition at line 96 of file JetMatchingTools.h.

Referenced by getEERecHitCollection().

const edm::PCaloHitContainer* JetMatchingTools::mEESimHitCollection
private

Definition at line 101 of file JetMatchingTools.h.

Referenced by getEESimHitCollection().

const edm::Event* JetMatchingTools::mEvent
private
const reco::CandidateCollection* JetMatchingTools::mGenParticleCollection
private

Definition at line 105 of file JetMatchingTools.h.

Referenced by getGenParticlesCollection().

const HBHERecHitCollection* JetMatchingTools::mHBHERecHitCollection
private

Definition at line 97 of file JetMatchingTools.h.

Referenced by getHBHERecHitCollection().

const edm::PCaloHitContainer* JetMatchingTools::mHcalSimHitCollection
private

Definition at line 102 of file JetMatchingTools.h.

Referenced by getHcalSimHitCollection().

const HFRecHitCollection* JetMatchingTools::mHFRecHitCollection
private

Definition at line 99 of file JetMatchingTools.h.

Referenced by getHFRecHitCollection().

const HORecHitCollection* JetMatchingTools::mHORecHitCollection
private

Definition at line 98 of file JetMatchingTools.h.

Referenced by getHORecHitCollection().

const edm::SimTrackContainer* JetMatchingTools::mSimTrackCollection
private

Definition at line 103 of file JetMatchingTools.h.

Referenced by getSimTrackCollection().

const edm::SimVertexContainer* JetMatchingTools::mSimVertexCollection
private

Definition at line 104 of file JetMatchingTools.h.

Referenced by getSimVertexCollection().