CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Types | Public Member Functions | Static Public Member Functions | Private Attributes
PFSimParticleProducer Class Reference

Producer for PFRecTracks and PFSimParticles. More...

Inheritance diagram for PFSimParticleProducer:
edm::stream::EDProducer<>

Public Types

typedef edm::Handle
< reco::PFRecTrackCollection
TrackHandle
 
- Public Types inherited from edm::stream::EDProducer<>
using CacheTypes = CacheContexts< T...>
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T...>
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Public Member Functions

void getSimIDs (const TrackHandle &trackh, std::vector< unsigned > &recTrackSimID)
 
 PFSimParticleProducer (const edm::ParameterSet &)
 
void produce (edm::Event &, const edm::EventSetup &) override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 

Private Attributes

edm::InputTag inputTagEcalRecHitsEB_
 
edm::InputTag inputTagEcalRecHitsEE_
 
edm::InputTag inputTagFastSimProducer_
 
edm::InputTag inputTagRecTracks_
 
edm::InputTag inputTagSim_
 module label for retrieving input simtrack and simvertex More...
 
bool mctruthMatchingInfo_
 
std::unique_ptr< FSimEventmySimEvent
 
edm::ParameterSet particleFilter_
 
edm::ESGetToken
< HepPDT::ParticleDataTable,
edm::DefaultRecord
pdtToken_
 
bool processParticles_
 process particles on/off More...
 
edm::EDGetTokenT
< EcalRecHitCollection
tokenEcalRecHitsEB_
 
edm::EDGetTokenT
< EcalRecHitCollection
tokenEcalRecHitsEE_
 
edm::EDGetTokenT
< edm::PCaloHitContainer
tokenFastSimProducer_
 
edm::EDGetTokenT
< reco::PFRecTrackCollection
tokenRecTracks_
 
edm::EDGetTokenT< std::vector
< SimTrack > > 
tokenSim_
 
edm::EDGetTokenT< std::vector
< SimVertex > > 
tokenSimVertices_
 
bool verbose_
 verbose ? More...
 

Detailed Description

Producer for PFRecTracks and PFSimParticles.

Author
Colin Bernet
Date
April 2007

Definition at line 65 of file PFSimParticleProducer.cc.

Member Typedef Documentation

Definition at line 73 of file PFSimParticleProducer.cc.

Constructor & Destructor Documentation

PFSimParticleProducer::PFSimParticleProducer ( const edm::ParameterSet iConfig)
explicit

Definition at line 141 of file PFSimParticleProducer.cc.

References DeDxTools::esConsumes(), edm::ParameterSet::getParameter(), and edm::ParameterSet::getUntrackedParameter().

141  {
142  processParticles_ = iConfig.getUntrackedParameter<bool>("process_Particles", true);
143 
144  inputTagSim_ = iConfig.getParameter<InputTag>("sim");
145  tokenSim_ = consumes<std::vector<SimTrack> >(inputTagSim_);
146  tokenSimVertices_ = consumes<std::vector<SimVertex> >(inputTagSim_);
147 
148  //retrieving collections for MC Truth Matching
149 
150  //modif-beg
151  inputTagFastSimProducer_ = iConfig.getUntrackedParameter<InputTag>("fastSimProducer");
152  tokenFastSimProducer_ = consumes<edm::PCaloHitContainer>(inputTagFastSimProducer_);
153  mctruthMatchingInfo_ = iConfig.getUntrackedParameter<bool>("MCTruthMatchingInfo", false);
154  //modif-end
155 
156  inputTagRecTracks_ = iConfig.getParameter<InputTag>("RecTracks");
157  tokenRecTracks_ = consumes<reco::PFRecTrackCollection>(inputTagRecTracks_);
158 
159  inputTagEcalRecHitsEB_ = iConfig.getParameter<InputTag>("ecalRecHitsEB");
160  tokenEcalRecHitsEB_ = consumes<EcalRecHitCollection>(inputTagEcalRecHitsEB_);
161  inputTagEcalRecHitsEE_ = iConfig.getParameter<InputTag>("ecalRecHitsEE");
162  tokenEcalRecHitsEE_ = consumes<EcalRecHitCollection>(inputTagEcalRecHitsEE_);
163 
164  pdtToken_ = esConsumes();
165 
166  verbose_ = iConfig.getUntrackedParameter<bool>("verbose", false);
167 
168  // register products
169  produces<reco::PFSimParticleCollection>();
170 
171  particleFilter_ = iConfig.getParameter<ParameterSet>("ParticleFilter");
172 
173  mySimEvent = std::make_unique<FSimEvent>(particleFilter_);
174 }
std::unique_ptr< FSimEvent > mySimEvent
bool processParticles_
process particles on/off
edm::InputTag inputTagEcalRecHitsEE_
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< EcalRecHitCollection > tokenEcalRecHitsEE_
edm::ParameterSet particleFilter_
edm::InputTag inputTagEcalRecHitsEB_
edm::EDGetTokenT< reco::PFRecTrackCollection > tokenRecTracks_
edm::InputTag inputTagSim_
module label for retrieving input simtrack and simvertex
edm::EDGetTokenT< std::vector< SimTrack > > tokenSim_
edm::ESGetToken< HepPDT::ParticleDataTable, edm::DefaultRecord > pdtToken_
edm::EDGetTokenT< edm::PCaloHitContainer > tokenFastSimProducer_
edm::EDGetTokenT< EcalRecHitCollection > tokenEcalRecHitsEB_
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
ESGetTokenH3DDVariant esConsumes(std::string const &Reccord, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
edm::EDGetTokenT< std::vector< SimVertex > > tokenSimVertices_
edm::InputTag inputTagFastSimProducer_

Member Function Documentation

void PFSimParticleProducer::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 115 of file PFSimParticleProducer.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), edm::ParameterSetDescription::addUntracked(), submitPVResolutionJobs::desc, HLT_FULL_cff::InputTag, edm::ParameterSetDescription::setUnknown(), and AlCaHLTBitMon_QueryRunRegistry::string.

115  {
116  // particleFlowSimParticle
118  desc.addUntracked<edm::InputTag>("fastSimProducer", edm::InputTag("fastSimProducer", "EcalHitsEB"));
119  desc.addUntracked<bool>("MCTruthMatchingInfo", false);
120  desc.add<edm::InputTag>("RecTracks", edm::InputTag("trackerDrivenElectronSeeds"));
121  desc.add<std::string>("Fitter", "KFFittingSmoother");
122  desc.add<edm::InputTag>("ecalRecHitsEE", edm::InputTag("caloRecHits", "EcalRecHitsEE"));
123  desc.add<edm::InputTag>("ecalRecHitsEB", edm::InputTag("caloRecHits", "EcalRecHitsEB"));
124  desc.addUntracked<bool>("process_RecTracks", false);
125  {
127  psd0.setUnknown();
128  desc.add<edm::ParameterSetDescription>("ParticleFilter", psd0);
129  }
130  desc.add<std::string>("TTRHBuilder", "WithTrackAngle");
131  desc.addUntracked<bool>("process_Particles", true);
132  desc.add<std::string>("Propagator", "PropagatorWithMaterial");
133  desc.add<edm::InputTag>("sim", edm::InputTag("g4SimHits"));
134  desc.addUntracked<bool>("verbose", false);
135  descriptions.add("particleFlowSimParticle", desc);
136 }
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void PFSimParticleProducer::getSimIDs ( const TrackHandle trackh,
std::vector< unsigned > &  recTrackSimID 
)

Definition at line 461 of file PFSimParticleProducer.cc.

References mps_fire::i, and edm::HandleBase::isValid().

461  {
462  if (trackh.isValid()) {
463  for (unsigned i = 0; i < trackh->size(); i++) {
464  const reco::PFRecTrackRef ref(trackh, i);
465 
466  for (auto const& hit : ref->trackRef()->recHits()) {
467  if (hit->isValid()) {
468  auto rechit = dynamic_cast<const FastTrackerRecHit*>(hit);
469 
470  for (unsigned int st_index = 0; st_index < rechit->nSimTrackIds(); ++st_index) {
471  recTrackSimID.push_back(rechit->simTrackId(st_index));
472  }
473  break;
474  }
475  } //loop track rechit
476  } //loop recTracks
477  } //track handle valid
478 }
void PFSimParticleProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
override

Definition at line 176 of file PFSimParticleProducer.cc.

References cms::cuda::assert(), reco::PFTrajectoryPoint::BeamPipeOrEndVertex, FSimTrack::charge(), reco::PFTrajectoryPoint::ClosestApproach, FSimTrack::daughters(), RawParticle::e(), reco::PFTrajectoryPoint::ECALEntrance, FSimTrack::ecalEntrance(), FSimTrack::endVertex(), submitPVValidationJobs::err, edm::EventID::event(), Exception, newFWLiteAna::found, edm::Event::getByToken(), edm::EventSetup::getData(), edm::Event::getHandle(), ecalpyutils::hashedIndex(), reco::PFTrajectoryPoint::HCALEntrance, FSimTrack::hcalEntrance(), reco::PFTrajectoryPoint::HCALExit, FSimTrack::hcalExit(), FSimTrack::hoEntrance(), reco::PFTrajectoryPoint::HOLayer, mps_fire::i, edm::EventBase::id(), FSimTrack::id(), edm::HandleBase::isValid(), FSimTrack::layer1Entrance(), FSimTrack::layer2Entrance(), LogDebug, FSimTrack::momentum(), FSimTrack::mother(), eostools::move(), FSimTrack::noEndVertex(), FSimTrack::noMother(), FSimTrack::onEcal(), FSimTrack::onHcal(), FSimTrack::onLayer1(), FSimTrack::onLayer2(), FSimVertex::position(), edm::Handle< T >::product(), reco::PFTrajectoryPoint::PS1, reco::PFTrajectoryPoint::PS2, edm::Event::put(), RawParticle::px(), RawParticle::py(), RawParticle::pz(), edm::EventID::run(), CoreSimTrack::type(), FSimTrack::vertex(), RawParticle::x(), RawParticle::y(), and RawParticle::z().

176  {
177  // init Particle data table (from Pythia)
178  mySimEvent->initializePdt(&iSetup.getData(pdtToken_));
179 
180  LogDebug("PFSimParticleProducer") << "START event: " << iEvent.id().event() << " in run " << iEvent.id().run()
181  << endl;
182 
183  //MC Truth Matching only with Famos and UnFoldedMode option to true!!
184 
185  //vector to store the trackIDs of rectracks corresponding
186  //to the simulated particle.
187  std::vector<unsigned> recTrackSimID;
188 
189  //In order to know which simparticule contribute to
190  //a given Ecal RecHit energy, we need to access
191  //the PCAloHit from FastSim.
192 
193  typedef std::pair<double, unsigned> hitSimID;
194  std::vector<std::list<hitSimID> > caloHitsEBID(62000);
195  std::vector<double> caloHitsEBTotE(62000, 0.0);
196 
197  if (mctruthMatchingInfo_) {
198  //getting the PCAloHit
199  auto pcalohits = iEvent.getHandle(tokenFastSimProducer_);
200 
201  if (!pcalohits) {
202  ostringstream err;
203  err << "could not find pcaloHit "
204  << "fastSimProducer:EcalHitsEB";
205  LogError("PFSimParticleProducer") << err.str() << endl;
206 
207  throw cms::Exception("MissingProduct", err.str());
208  } else {
209  assert(pcalohits.isValid());
210 
211  edm::PCaloHitContainer::const_iterator it = pcalohits.product()->begin();
212  edm::PCaloHitContainer::const_iterator itend = pcalohits.product()->end();
213 
214  //loop on the PCaloHit from FastSim Calorimetry
215  for (; it != itend; ++it) {
216  EBDetId detid(it->id());
217 
218  if (it->energy() > 0.0) {
219  std::pair<double, unsigned> phitsimid = make_pair(it->energy(), it->geantTrackId());
220  caloHitsEBID[detid.hashedIndex()].push_back(phitsimid);
221  caloHitsEBTotE[detid.hashedIndex()] += it->energy(); //summing pcalhit energy
222  } //energy > 0
223 
224  } //loop PcaloHits
225  } //pcalohit handle access
226 
227  //Retrieving the PFRecTrack collection for
228  //Monte Carlo Truth Matching tool
230  try {
231  LogDebug("PFSimParticleProducer") << "getting PFRecTracks" << endl;
232  iEvent.getByToken(tokenRecTracks_, recTracks);
233 
234  } catch (cms::Exception& err) {
235  LogError("PFSimParticleProducer") << err << " cannot get collection "
236  << "particleFlowBlock"
237  << ":"
238  << "" << endl;
239  } //pfrectrack handle access
240 
241  //getting the simID corresponding to
242  //each of the PFRecTracks
243  getSimIDs(recTracks, recTrackSimID);
244 
245  } //mctruthMatchingInfo_ //modif
246 
247  // deal with true particles
248  if (processParticles_) {
249  auto pOutputPFSimParticleCollection = std::make_unique<reco::PFSimParticleCollection>();
250 
251  Handle<vector<SimTrack> > simTracks;
252  bool found = iEvent.getByToken(tokenSim_, simTracks);
253  if (!found) {
254  ostringstream err;
255  err << "cannot find sim tracks: " << inputTagSim_;
256  LogError("PFSimParticleProducer") << err.str() << endl;
257 
258  throw cms::Exception("MissingProduct", err.str());
259  }
260 
261  Handle<vector<SimVertex> > simVertices;
262  found = iEvent.getByToken(tokenSimVertices_, simVertices);
263  if (!found) {
264  LogError("PFSimParticleProducer") << "cannot find sim vertices: " << inputTagSim_ << endl;
265  return;
266  }
267 
268  mySimEvent->fill(*simTracks, *simVertices);
269 
270  if (verbose_)
271  mySimEvent->print();
272 
273  for (unsigned i = 0; i < mySimEvent->nTracks(); i++) {
274  const FSimTrack& fst = mySimEvent->track(i);
275 
276  int motherId = -1;
277  if (!fst.noMother()) // a mother exist
278  motherId = fst.mother().id();
279 
280  //This is finding out the simID corresponding
281  //to the recTrack
282 
283  //GETTING THE TRACK ID
284  unsigned recTrackID = 99999;
285  vector<unsigned> recHitContrib; //modif
286  vector<double> recHitContribFrac; //modif
287 
288  if (mctruthMatchingInfo_) { //modif
289 
290  for (unsigned lo = 0; lo < recTrackSimID.size(); lo++) {
291  if (i == recTrackSimID[lo]) {
292  recTrackID = lo;
293  } //match track
294  } //loop rectrack
295 
296  // get the ecalBarrel rechits for MC truth matching tool
298  bool found = iEvent.getByToken(tokenEcalRecHitsEB_, rhcHandle);
299  if (!found) {
300  ostringstream err;
301  err << "could not find rechits " << inputTagEcalRecHitsEB_;
302  LogError("PFSimParticleProducer") << err.str() << endl;
303 
304  throw cms::Exception("MissingProduct", err.str());
305  } else {
306  assert(rhcHandle.isValid());
307 
308  EBRecHitCollection::const_iterator it_rh = rhcHandle.product()->begin();
309  EBRecHitCollection::const_iterator itend_rh = rhcHandle.product()->end();
310 
311  for (; it_rh != itend_rh; ++it_rh) {
312  unsigned rhit_hi = EBDetId(it_rh->id()).hashedIndex();
313  EBDetId detid(it_rh->id());
314 
315  auto it_phit = caloHitsEBID[rhit_hi].begin();
316  auto itend_phit = caloHitsEBID[rhit_hi].end();
317  for (; it_phit != itend_phit; ++it_phit) {
318  if (i == it_phit->second) {
319  //Alex (08/10/08) TO BE REMOVED, eliminating
320  //duplicated rechits
321  bool alreadyin = false;
322  for (unsigned ihit = 0; ihit < recHitContrib.size(); ++ihit)
323  if (detid.rawId() == recHitContrib[ihit])
324  alreadyin = true;
325 
326  if (!alreadyin) {
327  double pcalofraction = 0.0;
328  if (caloHitsEBTotE[rhit_hi] != 0.0)
329  pcalofraction = (it_phit->first / caloHitsEBTotE[rhit_hi]) * 100.0;
330 
331  //store info
332  recHitContrib.push_back(it_rh->id());
333  recHitContribFrac.push_back(pcalofraction);
334  } //selected rechits
335  } //matching
336  } //loop pcalohit
337 
338  } //loop rechits
339 
340  } //getting the rechits
341 
342  } //mctruthMatchingInfo_ //modif
343 
344  reco::PFSimParticle particle(
345  fst.charge(), fst.type(), fst.id(), motherId, fst.daughters(), recTrackID, recHitContrib, recHitContribFrac);
346 
347  const FSimVertex& originVtx = fst.vertex();
348 
349  math::XYZPoint posOrig(originVtx.position().x(), originVtx.position().y(), originVtx.position().z());
350 
351  math::XYZTLorentzVector momOrig(
352  fst.momentum().px(), fst.momentum().py(), fst.momentum().pz(), fst.momentum().e());
353  reco::PFTrajectoryPoint pointOrig(-1, reco::PFTrajectoryPoint::ClosestApproach, posOrig, momOrig);
354 
355  // point 0 is origin vertex
356  particle.addPoint(pointOrig);
357 
358  if (!fst.noEndVertex()) {
359  const FSimVertex& endVtx = fst.endVertex();
360 
361  math::XYZPoint posEnd(endVtx.position().x(), endVtx.position().y(), endVtx.position().z());
362 
364 
366 
367  particle.addPoint(pointEnd);
368  } else { // add a dummy point
370  particle.addPoint(dummy);
371  }
372 
373  if (fst.onLayer1()) { // PS layer1
374  const RawParticle& rp = fst.layer1Entrance();
375 
376  math::XYZPoint posLayer1(rp.x(), rp.y(), rp.z());
377  math::XYZTLorentzVector momLayer1(rp.px(), rp.py(), rp.pz(), rp.e());
378  reco::PFTrajectoryPoint layer1Pt(-1, reco::PFTrajectoryPoint::PS1, posLayer1, momLayer1);
379 
380  particle.addPoint(layer1Pt);
381 
382  // extrapolate to cluster depth
383  } else { // add a dummy point
385  particle.addPoint(dummy);
386  }
387 
388  if (fst.onLayer2()) { // PS layer2
389  const RawParticle& rp = fst.layer2Entrance();
390 
391  math::XYZPoint posLayer2(rp.x(), rp.y(), rp.z());
392  math::XYZTLorentzVector momLayer2(rp.px(), rp.py(), rp.pz(), rp.e());
393  reco::PFTrajectoryPoint layer2Pt(-1, reco::PFTrajectoryPoint::PS2, posLayer2, momLayer2);
394 
395  particle.addPoint(layer2Pt);
396 
397  // extrapolate to cluster depth
398  } else { // add a dummy point
400  particle.addPoint(dummy);
401  }
402 
403  if (fst.onEcal()) {
404  const RawParticle& rp = fst.ecalEntrance();
405 
406  math::XYZPoint posECAL(rp.x(), rp.y(), rp.z());
407  math::XYZTLorentzVector momECAL(rp.px(), rp.py(), rp.pz(), rp.e());
409 
410  particle.addPoint(ecalPt);
411 
412  // extrapolate to cluster depth
413  } else { // add a dummy point
415  particle.addPoint(dummy);
416  }
417 
418  // add a dummy point for ECAL Shower max
420  particle.addPoint(dummy);
421 
422  if (fst.onHcal()) {
423  const RawParticle& rpin = fst.hcalEntrance();
424 
425  math::XYZPoint posHCALin(rpin.x(), rpin.y(), rpin.z());
426  math::XYZTLorentzVector momHCALin(rpin.px(), rpin.py(), rpin.pz(), rpin.e());
427  reco::PFTrajectoryPoint hcalPtin(-1, reco::PFTrajectoryPoint::HCALEntrance, posHCALin, momHCALin);
428 
429  particle.addPoint(hcalPtin);
430 
431  const RawParticle& rpout = fst.hcalExit();
432 
433  math::XYZPoint posHCALout(rpout.x(), rpout.y(), rpout.z());
434  math::XYZTLorentzVector momHCALout(rpout.px(), rpout.py(), rpout.pz(), rpout.e());
435  reco::PFTrajectoryPoint hcalPtout(-1, reco::PFTrajectoryPoint::HCALExit, posHCALout, momHCALout);
436 
437  particle.addPoint(hcalPtout);
438 
439  const RawParticle& rpho = fst.hoEntrance();
440 
441  math::XYZPoint posHOEntrance(rpho.x(), rpho.y(), rpho.z());
442  math::XYZTLorentzVector momHOEntrance(rpho.px(), rpho.py(), rpho.pz(), rpho.e());
443  reco::PFTrajectoryPoint hoPtin(-1, reco::PFTrajectoryPoint::HOLayer, posHOEntrance, momHOEntrance);
444 
445  particle.addPoint(hoPtin);
446 
447  } else { // add a dummy point
449  particle.addPoint(dummy);
450  }
451 
452  pOutputPFSimParticleCollection->push_back(particle);
453  }
454 
455  iEvent.put(std::move(pOutputPFSimParticleCollection));
456  }
457 
458  LogDebug("PFSimParticleProducer") << "STOP event: " << iEvent.id().event() << " in run " << iEvent.id().run() << endl;
459 }
RunNumber_t run() const
Definition: EventID.h:38
std::unique_ptr< FSimEvent > mySimEvent
bool processParticles_
process particles on/off
double pz() const
z of the momentum
Definition: RawParticle.h:302
EventNumber_t event() const
Definition: EventID.h:40
bool noEndVertex() const
no end vertex
float charge() const
charge
Definition: FSimTrack.h:56
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
const RawParticle & hoEntrance() const
The particle at HCAL exir.
Definition: FSimTrack.h:155
int onLayer2() const
Definition: FSimTrack.h:106
const FSimVertex & endVertex() const
end vertex
const RawParticle & hcalExit() const
The particle at HCAL exir.
Definition: FSimTrack.h:152
double y() const
y of vertex
Definition: RawParticle.h:283
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
double z() const
z of vertex
Definition: RawParticle.h:284
const XYZTLorentzVector & momentum() const
Temporary (until move of SimTrack to Mathcore) - No! Actually very useful.
Definition: FSimTrack.h:209
const RawParticle & layer1Entrance() const
The particle at Preshower Layer 1.
Definition: FSimTrack.h:137
std::vector< EcalRecHit >::const_iterator const_iterator
edm::InputTag inputTagEcalRecHitsEB_
const std::vector< int > & daughters() const
Vector of daughter indices.
Log< level::Error, false > LogError
assert(be >=bs)
double x() const
x of vertex
Definition: RawParticle.h:282
edm::EDGetTokenT< reco::PFRecTrackCollection > tokenRecTracks_
int onEcal() const
Definition: FSimTrack.h:111
bool getData(T &iHolder) const
Definition: EventSetup.h:128
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
int hashedIndex(int ieta, int iphi)
Definition: EcalPyUtils.cc:36
Handle< PROD > getHandle(EDGetTokenT< PROD > token) const
Definition: Event.h:563
double e() const
energy of the momentum
Definition: RawParticle.h:305
edm::InputTag inputTagSim_
module label for retrieving input simtrack and simvertex
Point of closest approach from beam axis (initial point in the case of PFSimParticle) ...
const math::XYZTLorentzVector & position() const
Temporary (until CMSSW moves to Mathcore) - No ! Actually very useful.
Definition: FSimVertex.h:48
edm::EDGetTokenT< std::vector< SimTrack > > tokenSim_
def move
Definition: eostools.py:511
edm::ESGetToken< HepPDT::ParticleDataTable, edm::DefaultRecord > pdtToken_
const RawParticle & ecalEntrance() const
The particle at ECAL entrance.
Definition: FSimTrack.h:143
bool isValid() const
Definition: HandleBase.h:70
true particle for particle flow
Definition: PFSimParticle.h:19
edm::EDGetTokenT< edm::PCaloHitContainer > tokenFastSimProducer_
T const * product() const
Definition: Handle.h:70
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
edm::EDGetTokenT< EcalRecHitCollection > tokenEcalRecHitsEB_
edm::EventID id() const
Definition: EventBase.h:59
int type() const
particle type (HEP PDT convension)
Definition: CoreSimTrack.h:22
int id() const
the index in FBaseSimEvent and other vectors
Definition: FSimTrack.h:96
const RawParticle & layer2Entrance() const
The particle at Preshower Layer 2.
Definition: FSimTrack.h:140
int onLayer1() const
Definition: FSimTrack.h:101
int onHcal() const
Definition: FSimTrack.h:116
bool noMother() const
no mother particle
const RawParticle & hcalEntrance() const
The particle at HCAL entrance.
Definition: FSimTrack.h:146
double px() const
x of the momentum
Definition: RawParticle.h:296
A PFTrack holds several trajectory points, which basically contain the position and momentum of a tra...
const FSimVertex vertex() const
Origin vertex.
double py() const
y of the momentum
Definition: RawParticle.h:299
void getSimIDs(const TrackHandle &trackh, std::vector< unsigned > &recTrackSimID)
const FSimTrack & mother() const
mother
edm::EDGetTokenT< std::vector< SimVertex > > tokenSimVertices_
#define LogDebug(id)

Member Data Documentation

edm::InputTag PFSimParticleProducer::inputTagEcalRecHitsEB_
private

Definition at line 91 of file PFSimParticleProducer.cc.

edm::InputTag PFSimParticleProducer::inputTagEcalRecHitsEE_
private

Definition at line 93 of file PFSimParticleProducer.cc.

edm::InputTag PFSimParticleProducer::inputTagFastSimProducer_
private

Definition at line 85 of file PFSimParticleProducer.cc.

edm::InputTag PFSimParticleProducer::inputTagRecTracks_
private

Definition at line 89 of file PFSimParticleProducer.cc.

edm::InputTag PFSimParticleProducer::inputTagSim_
private

module label for retrieving input simtrack and simvertex

Definition at line 78 of file PFSimParticleProducer.cc.

bool PFSimParticleProducer::mctruthMatchingInfo_
private

Definition at line 84 of file PFSimParticleProducer.cc.

std::unique_ptr<FSimEvent> PFSimParticleProducer::mySimEvent
private

Definition at line 101 of file PFSimParticleProducer.cc.

edm::ParameterSet PFSimParticleProducer::particleFilter_
private

Definition at line 100 of file PFSimParticleProducer.cc.

edm::ESGetToken<HepPDT::ParticleDataTable, edm::DefaultRecord> PFSimParticleProducer::pdtToken_
private

Definition at line 96 of file PFSimParticleProducer.cc.

bool PFSimParticleProducer::processParticles_
private

process particles on/off

Definition at line 106 of file PFSimParticleProducer.cc.

edm::EDGetTokenT<EcalRecHitCollection> PFSimParticleProducer::tokenEcalRecHitsEB_
private

Definition at line 92 of file PFSimParticleProducer.cc.

edm::EDGetTokenT<EcalRecHitCollection> PFSimParticleProducer::tokenEcalRecHitsEE_
private

Definition at line 94 of file PFSimParticleProducer.cc.

edm::EDGetTokenT<edm::PCaloHitContainer> PFSimParticleProducer::tokenFastSimProducer_
private

Definition at line 86 of file PFSimParticleProducer.cc.

edm::EDGetTokenT<reco::PFRecTrackCollection> PFSimParticleProducer::tokenRecTracks_
private

Definition at line 90 of file PFSimParticleProducer.cc.

edm::EDGetTokenT<std::vector<SimTrack> > PFSimParticleProducer::tokenSim_
private

Definition at line 79 of file PFSimParticleProducer.cc.

edm::EDGetTokenT<std::vector<SimVertex> > PFSimParticleProducer::tokenSimVertices_
private

Definition at line 80 of file PFSimParticleProducer.cc.

bool PFSimParticleProducer::verbose_
private

verbose ?

Definition at line 109 of file PFSimParticleProducer.cc.