CMS 3D CMS Logo

List of all members | Public Member Functions | Protected Member Functions | Private Attributes
FBaseSimEvent Class Reference

#include <FBaseSimEvent.h>

Inheritance diagram for FBaseSimEvent:
FSimEvent

Public Member Functions

void addChargedTrack (int id)
 Add an id in the vector of charged tracks id's. More...
 
void addParticles (const HepMC::GenEvent &hev)
 Add the particles and their vertices to the list. More...
 
int addSimTrack (const RawParticle *p, int iv, int ig=-1, const HepMC::GenVertex *ev=0)
 Add a new track to the Event and to the various lists. More...
 
int addSimVertex (const XYZTLorentzVector &decayVertex, int im=-1, FSimVertexType::VertexType type=FSimVertexType::ANY)
 Add a new vertex to the Event and to the various lists. More...
 
int chargedTrack (int id) const
 return "reconstructed" charged tracks index. More...
 
void clear ()
 clear the FBaseSimEvent content before the next event More...
 
const HepMC::GenParticle * embdGenpart (int i) const
 return MC track with a given id More...
 
const SimTrackembdTrack (int i) const
 return embedded track with given id More...
 
const SimVertexembdVertex (int i) const
 return embedded vertex with given id More...
 
const FSimVertexTypeembdVertexType (int i) const
 return embedded vertex type with given id More...
 
 FBaseSimEvent (const edm::ParameterSet &kine)
 Default constructor. More...
 
void fill (const HepMC::GenEvent &hev)
 fill the FBaseSimEvent from the current HepMC::GenEvent More...
 
void fill (const std::vector< SimTrack > &, const std::vector< SimVertex > &)
 fill the FBaseSimEvent from SimTrack's and SimVert'ices More...
 
const KineParticleFilterfilter () const
 
void initializePdt (const HepPDT::ParticleDataTable *aPdt)
 Initialize the particle data table. More...
 
unsigned int nChargedTracks () const
 Number of "reconstructed" charged tracks. More...
 
unsigned int nGenParts () const
 Number of generator particles. More...
 
unsigned int nTracks () const
 Number of tracks. More...
 
unsigned int nVertices () const
 Number of vertices. More...
 
void print () const
 print the FBaseSimEvent in an intelligible way More...
 
void printMCTruth (const HepMC::GenEvent &hev)
 print the original MCTruth event More...
 
const HepPDT::ParticleDataTabletheTable () const
 Get the pointer to the particle data table. More...
 
FSimTracktrack (int id) const
 Return track with given Id. More...
 
FSimVertexvertex (int id) const
 Return vertex with given Id. More...
 
FSimVertexTypevertexType (int id) const
 Return vertex with given Id. More...
 
 ~FBaseSimEvent ()
 usual virtual destructor More...
 

Protected Member Functions

std::vector< HepMC::GenParticle * > * genparts () const
 The pointer to the vector of GenParticle's. More...
 
std::vector< FSimTrack > * tracks () const
 The pointer to the vector of FSimTrack's. More...
 
std::vector< FSimVertex > * vertices () const
 The pointer to the vector of FSimVertex's. More...
 

Private Attributes

unsigned int initialSize
 
double lateVertexPosition
 
KineParticleFiltermyFilter
 The particle filter. More...
 
unsigned int nChargedParticleTracks
 
unsigned int nGenParticles
 
unsigned int nSimTracks
 
unsigned int nSimVertices
 
const ParticleDataTablepdt
 
double sigmaVerteX
 
double sigmaVerteY
 
double sigmaVerteZ
 
unsigned int theChargedSize
 
std::vector< unsigned > * theChargedTracks
 
FSimVertexTypeCollectiontheFSimVerticesType
 
std::vector< HepMC::GenParticle * > * theGenParticles
 
unsigned int theGenSize
 
std::vector< FSimTrack > * theSimTracks
 
std::vector< FSimVertex > * theSimVertices
 
unsigned int theTrackSize
 
unsigned int theVertexSize
 

Detailed Description

Definition at line 42 of file FBaseSimEvent.h.

Constructor & Destructor Documentation

FBaseSimEvent::FBaseSimEvent ( const edm::ParameterSet kine)

Default constructor.

Definition at line 30 of file FBaseSimEvent.cc.

References initialSize, lateVertexPosition, theChargedSize, theChargedTracks, theFSimVerticesType, theGenParticles, theGenSize, theSimTracks, theSimVertices, theTrackSize, and theVertexSize.

31  :
32  nSimTracks(0),
33  nSimVertices(0),
34  nGenParticles(0),
36  initialSize(5000)
37 {
38 
39  // Initialize the vectors of particles and vertices
40  theGenParticles = new std::vector<HepMC::GenParticle*>();
41  theSimTracks = new std::vector<FSimTrack>;
42  theSimVertices = new std::vector<FSimVertex>;
43  theChargedTracks = new std::vector<unsigned>();
45 
46  // Reserve some size to avoid mutiple copies
47  /* */
48  theSimTracks->resize(initialSize);
49  theSimVertices->resize(initialSize);
52  theFSimVerticesType->resize(initialSize);
57  /* */
58 
59  // Initialize the Particle filter
60  myFilter = new KineParticleFilter(kine);
61 
62  // Initialize the distance from (0,0,0) after which *generated* particles are
63  // no longer considered - because the mother could have interacted before.
64  // unit : cm x cm
65  lateVertexPosition = 2.5*2.5;
66 }
double lateVertexPosition
std::vector< FSimTrack > * theSimTracks
std::vector< unsigned > * theChargedTracks
unsigned int theTrackSize
unsigned int theVertexSize
unsigned int nSimTracks
unsigned int theGenSize
unsigned int nSimVertices
std::vector< FSimVertexType > FSimVertexTypeCollection
collection of FSimVertexType objects
unsigned int nGenParticles
unsigned int initialSize
std::vector< FSimVertex > * theSimVertices
unsigned int theChargedSize
unsigned int nChargedParticleTracks
std::vector< HepMC::GenParticle * > * theGenParticles
FSimVertexTypeCollection * theFSimVerticesType
FBaseSimEvent::~FBaseSimEvent ( )

usual virtual destructor

Definition at line 68 of file FBaseSimEvent.cc.

References myFilter, theChargedTracks, theFSimVerticesType, theGenParticles, theSimTracks, and theSimVertices.

68  {
69 
70  // Clear the vectors
71  theGenParticles->clear();
72  theSimTracks->clear();
73  theSimVertices->clear();
74  theChargedTracks->clear();
75  theFSimVerticesType->clear();
76 
77  // Delete
78  delete theGenParticles;
79  delete theSimTracks;
80  delete theSimVertices;
81  delete theChargedTracks;
82  delete theFSimVerticesType;
83  delete myFilter;
84 
85 }
std::vector< FSimTrack > * theSimTracks
std::vector< unsigned > * theChargedTracks
KineParticleFilter * myFilter
The particle filter.
std::vector< FSimVertex > * theSimVertices
std::vector< HepMC::GenParticle * > * theGenParticles
FSimVertexTypeCollection * theFSimVerticesType

Member Function Documentation

void FBaseSimEvent::addChargedTrack ( int  id)

Add an id in the vector of charged tracks id's.

Definition at line 719 of file FBaseSimEvent.cc.

References triggerObjects_cff::id, nChargedParticleTracks, theChargedSize, and theChargedTracks.

719  {
720  (*theChargedTracks)[nChargedParticleTracks++] = id;
723  theChargedSize *= 2;
725  }
726 }
std::vector< unsigned > * theChargedTracks
unsigned int theChargedSize
unsigned int nChargedParticleTracks
void FBaseSimEvent::addParticles ( const HepMC::GenEvent &  hev)

Add the particles and their vertices to the list.

Some internal array to work with.

Definition at line 342 of file FBaseSimEvent.cc.

References funct::abs(), addSimTrack(), addSimVertex(), FSimVertexType::DECAY_VERTEX, MillePedeFileConverter_cfg::e, GenParticle::GenParticle, lateVertexPosition, objects.autophobj::motherId, nGenParticles, nGenParts(), PFRecoTauDiscriminationByIsolation_cfi::offset, AlCaHLTBitMon_ParallelJobs::p, position, FSimVertexType::PRIMARY_VERTEX, impactParameterTagInfos_cfi::primaryVertex, theGenParticles, theGenSize, and vertex().

Referenced by fill().

342  {
343 
345  int genEventSize = myGenEvent.particles_size();
346  std::vector<int> myGenVertices(genEventSize, static_cast<int>(0));
347 
348  // If no particles, no work to be done !
349  if ( myGenEvent.particles_empty() ) return;
350 
351  // Are there particles in the FSimEvent already ?
352  int offset = nGenParts();
353 
354  // Primary vertex
355  HepMC::GenVertex* primaryVertex = *(myGenEvent.vertices_begin());
356 
357  // unit transformation (needs review)
358  XYZTLorentzVector primaryVertexPosition(primaryVertex->position().x()/10.,
359  primaryVertex->position().y()/10.,
360  primaryVertex->position().z()/10.,
361  primaryVertex->position().t()/10.);
362 
363  // This is the main vertex index
364  int mainVertex = addSimVertex(primaryVertexPosition, -1, FSimVertexType::PRIMARY_VERTEX);
365 
366  int initialBarcode = 0;
367  if ( myGenEvent.particles_begin() != myGenEvent.particles_end() )
368  {
369  initialBarcode = (*myGenEvent.particles_begin())->barcode();
370  }
371 
372  // Loop on the particles of the generated event
373  for ( auto piter = myGenEvent.particles_begin(); piter != myGenEvent.particles_end(); ++piter )
374  {
375 
376  // This is the generated particle pointer - for the signal event only
377  HepMC::GenParticle* p = *piter;
378 
379  if ( !offset ) {
380  (*theGenParticles)[nGenParticles++] = p;
382  theGenSize *= 2;
383  theGenParticles->resize(theGenSize);
384  }
385 
386  }
387 
388  // Reject particles with late origin vertex (i.e., coming from late decays)
389  // This should not happen, but one never knows what users may be up to!
390  // For example exotic particles might decay late - keep the decay products in the case.
391  XYZTLorentzVector productionVertexPosition(0.,0.,0.,0.);
392  HepMC::GenVertex* productionVertex = p->production_vertex();
393  if ( productionVertex ) {
394  unsigned productionMother = productionVertex->particles_in_size();
395  if ( productionMother ) {
396  unsigned motherId = (*(productionVertex->particles_in_const_begin()))->pdg_id();
397  if ( motherId < 1000000 )
398  productionVertexPosition =
399  XYZTLorentzVector(productionVertex->position().x()/10.,
400  productionVertex->position().y()/10.,
401  productionVertex->position().z()/10.,
402  productionVertex->position().t()/10.);
403  }
404  }
405  if ( !myFilter->acceptVertex(productionVertexPosition) ) continue;
406 
407  int abspdgId = std::abs(p->pdg_id());
408  HepMC::GenVertex* endVertex = p->end_vertex();
409 
410  // Keep only:
411  // 1) Stable particles (watch out! New status code = 1001!)
412  bool testStable = p->status()%1000==1;
413  // Declare stable standard particles that decay after a macroscopic path length
414  // (except if exotic)
415  if ( p->status() == 2 && abspdgId < 1000000) {
416  if ( endVertex ) {
417  XYZTLorentzVector decayPosition =
418  XYZTLorentzVector(endVertex->position().x()/10.,
419  endVertex->position().y()/10.,
420  endVertex->position().z()/10.,
421  endVertex->position().t()/10.);
422  // If the particle flew enough to be beyond the beam pipe enveloppe, just declare it stable
423  if ( decayPosition.Perp2() > lateVertexPosition ) testStable = true;
424  }
425  }
426 
427  // 2) or particles with stable daughters (watch out! New status code = 1001!)
428  bool testDaugh = false;
429  if ( !testStable &&
430  p->status() == 2 &&
431  endVertex &&
432  endVertex->particles_out_size() ) {
433  HepMC::GenVertex::particles_out_const_iterator firstDaughterIt =
434  endVertex->particles_out_const_begin();
435  HepMC::GenVertex::particles_out_const_iterator lastDaughterIt =
436  endVertex->particles_out_const_end();
437  for ( ; firstDaughterIt != lastDaughterIt ; ++firstDaughterIt ) {
438  HepMC::GenParticle* daugh = *firstDaughterIt;
439  if ( daugh->status()%1000==1 ) {
440  // Check that it is not a "prompt electron or muon brem":
441  if (abspdgId == 11 || abspdgId == 13) {
442  if ( endVertex ) {
443  XYZTLorentzVector endVertexPosition = XYZTLorentzVector(endVertex->position().x()/10.,
444  endVertex->position().y()/10.,
445  endVertex->position().z()/10.,
446  endVertex->position().t()/10.);
447  // If the particle flew enough to be beyond the beam pipe enveloppe, just declare it stable
448  if ( endVertexPosition.Perp2() < lateVertexPosition ) {
449  break;
450  }
451  }
452  }
453  testDaugh=true;
454  break;
455  }
456  }
457  }
458 
459  // 3) or particles that fly more than one micron.
460  double dist = 0.;
461  if ( !testStable && !testDaugh && p->production_vertex() ) {
463  productionVertexPosition(p->production_vertex()->position().x()/10.,
464  p->production_vertex()->position().y()/10.,
465  p->production_vertex()->position().z()/10.,
466  p->production_vertex()->position().t()/10.);
467  dist = (primaryVertexPosition-productionVertexPosition).Vect().Mag2();
468  }
469  bool testDecay = ( dist > 1e-8 ) ? true : false;
470 
471  // Save the corresponding particle and vertices
472  if ( testStable || testDaugh || testDecay ) {
473 
474  /*
475  const HepMC::GenParticle* mother = p->production_vertex() ?
476  *(p->production_vertex()->particles_in_const_begin()) : 0;
477  */
478 
479  int motherBarcode = p->production_vertex() &&
480  p->production_vertex()->particles_in_const_begin() !=
481  p->production_vertex()->particles_in_const_end() ?
482  (*(p->production_vertex()->particles_in_const_begin()))->barcode() : 0;
483 
484  int originVertex =
485  motherBarcode && myGenVertices[motherBarcode-initialBarcode] ?
486  myGenVertices[motherBarcode-initialBarcode] : mainVertex;
487 
488  XYZTLorentzVector momentum(p->momentum().px(),
489  p->momentum().py(),
490  p->momentum().pz(),
491  p->momentum().e());
492  RawParticle part(momentum, vertex(originVertex).position());
493  part.setID(p->pdg_id());
494 
495  // Add the particle to the event and to the various lists
496 
497  int theTrack = testStable && p->end_vertex() ?
498  // The particle is scheduled to decay
499  addSimTrack(&part,originVertex, nGenParts()-offset,p->end_vertex()) :
500  // The particle is not scheduled to decay
501  addSimTrack(&part,originVertex, nGenParts()-offset);
502 
503  if (
504  // This one deals with particles with no end vertex
505  !p->end_vertex() ||
506  // This one deals with particles that have a pre-defined
507  // decay proper time, but have not decayed yet
508  ( testStable && p->end_vertex() && !p->end_vertex()->particles_out_size() )
509  // In both case, just don't add a end vertex in the FSimEvent
510  ) continue;
511 
512  // Add the vertex to the event and to the various lists
513  XYZTLorentzVector decayVertex =
514  XYZTLorentzVector(p->end_vertex()->position().x()/10.,
515  p->end_vertex()->position().y()/10.,
516  p->end_vertex()->position().z()/10.,
517  p->end_vertex()->position().t()/10.);
518  // vertex(mainVertex).position();
519  int theVertex = addSimVertex(decayVertex,theTrack, FSimVertexType::DECAY_VERTEX);
520 
521  if ( theVertex != -1 ) myGenVertices[p->barcode()-initialBarcode] = theVertex;
522 
523  // There we are !
524  }
525  }
526 
527 }
double lateVertexPosition
int addSimVertex(const XYZTLorentzVector &decayVertex, int im=-1, FSimVertexType::VertexType type=FSimVertexType::ANY)
Add a new vertex to the Event and to the various lists.
int addSimTrack(const RawParticle *p, int iv, int ig=-1, const HepMC::GenVertex *ev=0)
Add a new track to the Event and to the various lists.
unsigned int theGenSize
FSimVertex & vertex(int id) const
Return vertex with given Id.
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
unsigned int nGenParticles
part
Definition: HCALResponse.h:20
unsigned int nGenParts() const
Number of generator particles.
Definition: FBaseSimEvent.h:94
static int position[264][3]
Definition: ReadPGInfo.cc:509
std::vector< HepMC::GenParticle * > * theGenParticles
math::XYZTLorentzVector XYZTLorentzVector
Definition: RawParticle.h:15
int FBaseSimEvent::addSimTrack ( const RawParticle p,
int  iv,
int  ig = -1,
const HepMC::GenVertex *  ev = 0 
)

Add a new track to the Event and to the various lists.

Definition at line 531 of file FBaseSimEvent.cc.

References FSimVertex::addDaughter(), FSimTrack::addDaughter(), SimTrack::genpartIndex(), RawParticle::momentum(), objects.autophobj::motherId, nSimTracks, class-composition::parent, RawParticle::PDGmass(), mathSSE::sqrt(), RawParticle::t(), theSimTracks, theTrackSize, track(), and vertex().

Referenced by addParticles(), fill(), MaterialEffects::interact(), and TrajectoryManager::updateWithDaughters().

532  {
533 
534  // Check that the particle is in the Famos "acceptance"
535  // Keep all primaries of pile-up events, though
536  if ( !myFilter->acceptParticle(*p) && ig >= -1 ) return -1;
537 
538  // The new track index
539  int trackId = nSimTracks++;
541  theTrackSize *= 2;
542  theSimTracks->resize(theTrackSize);
543  }
544 
545  // Attach the particle to the origin vertex, and to the mother
546  vertex(iv).addDaughter(trackId);
547  if ( !vertex(iv).noParent() ) {
548  track(vertex(iv).parent().id()).addDaughter(trackId);
549 
550  if ( ig == -1 ) {
551  int motherId = track(vertex(iv).parent().id()).genpartIndex();
552  if ( motherId < -1 ) ig = motherId;
553  }
554  }
555 
556  // Some transient information for FAMOS internal use
557  (*theSimTracks)[trackId] = ev ?
558  // A proper decay time is scheduled
559  FSimTrack(p,iv,ig,trackId,this,
560  ev->position().t()/10.
561  * p->PDGmass()
562  / std::sqrt(p->momentum().Vect().Mag2())) :
563  // No proper decay time is scheduled
564  FSimTrack(p,iv,ig,trackId,this);
565 
566  return trackId;
567 
568 }
std::vector< FSimTrack > * theSimTracks
double PDGmass() const
get the THEORETICAL mass
Definition: RawParticle.cc:255
unsigned int theTrackSize
bool ev
unsigned int nSimTracks
FSimVertex & vertex(int id) const
Return vertex with given Id.
const XYZTLorentzVector & momentum() const
the momentum fourvector
Definition: RawParticle.h:286
T sqrt(T t)
Definition: SSEVec.h:18
int genpartIndex() const
index of the corresponding Generator particle in the Event container (-1 if no Genpart) ...
Definition: SimTrack.h:33
void addDaughter(int i)
Add a RecHit for a track on a layer.
Definition: FSimTrack.h:195
void addDaughter(int i)
Definition: FSimVertex.h:46
FSimTrack & track(int id) const
Return track with given Id.
int FBaseSimEvent::addSimVertex ( const XYZTLorentzVector decayVertex,
int  im = -1,
FSimVertexType::VertexType  type = FSimVertexType::ANY 
)

Add a new vertex to the Event and to the various lists.

Definition at line 571 of file FBaseSimEvent.cc.

References nSimVertices, FSimTrack::setEndVertex(), theFSimVerticesType, theSimVertices, theVertexSize, and track().

Referenced by addParticles(), fill(), MaterialEffects::interact(), TrajectoryManager::reconstruct(), and TrajectoryManager::updateWithDaughters().

571  {
572 
573  // Check that the vertex is in the Famos "acceptance"
574  if ( !myFilter->acceptVertex(v) ) return -1;
575 
576  // The number of vertices
577  int vertexId = nSimVertices++;
579  theVertexSize *= 2;
580  theSimVertices->resize(theVertexSize);
582  }
583 
584  // Attach the end vertex to the particle (if accepted)
585  if ( im !=-1 ) track(im).setEndVertex(vertexId);
586 
587  // Some transient information for FAMOS internal use
588  (*theSimVertices)[vertexId] = FSimVertex(v,im,vertexId,this);
589 
590  (*theFSimVerticesType)[vertexId] = FSimVertexType(type);
591 
592  return vertexId;
593 
594 }
type
Definition: HCALResponse.h:21
unsigned int theVertexSize
unsigned int nSimVertices
A FSimVertexType hold the information on the vertex origine.
std::vector< FSimVertex > * theSimVertices
void setEndVertex(int endv)
Set the end vertex.
Definition: FSimTrack.h:162
FSimTrack & track(int id) const
Return track with given Id.
FSimVertexTypeCollection * theFSimVerticesType
int FBaseSimEvent::chargedTrack ( int  id) const

return "reconstructed" charged tracks index.

Definition at line 729 of file FBaseSimEvent.cc.

References GenParticle::GenParticle, triggerObjects_cff::id, nChargedParticleTracks, and theChargedTracks.

729  {
730  if (id>=0 && id<(int)nChargedParticleTracks)
731  return (*theChargedTracks)[id];
732  else
733  return -1;
734 }
std::vector< unsigned > * theChargedTracks
unsigned int nChargedParticleTracks
void FBaseSimEvent::clear ( void  )
const HepMC::GenParticle * FBaseSimEvent::embdGenpart ( int  i) const

return MC track with a given id

Definition at line 737 of file FBaseSimEvent.cc.

References mps_fire::i, and theGenParticles.

737  {
738  return (*theGenParticles)[i];
739 }
std::vector< HepMC::GenParticle * > * theGenParticles
const SimTrack& FBaseSimEvent::embdTrack ( int  i) const
inline

return embedded track with given id

Referenced by FSimEvent::load().

const SimVertex& FBaseSimEvent::embdVertex ( int  i) const
inline

return embedded vertex with given id

Referenced by FSimEvent::load().

const FSimVertexType& FBaseSimEvent::embdVertexType ( int  i) const
inline

return embedded vertex type with given id

Referenced by FSimEvent::load().

void FBaseSimEvent::fill ( const HepMC::GenEvent &  hev)

fill the FBaseSimEvent from the current HepMC::GenEvent

Definition at line 95 of file FBaseSimEvent.cc.

References addParticles(), and clear().

Referenced by FSimEvent::fill().

95  {
96 
97  // Clear old vectors
98  clear();
99 
100  // Add the particles in the FSimEvent
101  addParticles(myGenEvent);
102 
103 }
void addParticles(const HepMC::GenEvent &hev)
Add the particles and their vertices to the list.
void clear()
clear the FBaseSimEvent content before the next event
void FBaseSimEvent::fill ( const std::vector< SimTrack > &  simTracks,
const std::vector< SimVertex > &  simVertices 
)

fill the FBaseSimEvent from SimTrack's and SimVert'ices

Definition at line 106 of file FBaseSimEvent.cc.

References funct::abs(), addSimTrack(), addSimVertex(), TrackValidation_cff::association, FSimTrack::charge(), clear(), RawParticle::cos2ThetaV(), SimTrack::genpartIndex(), BaseParticlePropagator::getSuccess(), createfilelist::int, lateVertexPosition, CoreSimTrack::momentum(), FSimTrack::momentum(), objects.autophobj::motherId, SimVertex::noParent(), FSimTrack::notYetToEndVertex(), nTracks(), SimVertex::parentIndex(), CoreSimVertex::position(), FSimVertex::position(), position, FSimVertexType::PRIMARY_VERTEX, impactParameterTagInfos_cfi::primaryVertex, BaseParticlePropagator::propagateToEcalEntrance(), BaseParticlePropagator::propagateToHcalEntrance(), BaseParticlePropagator::propagateToHcalExit(), BaseParticlePropagator::propagateToHOLayer(), BaseParticlePropagator::propagateToPreshowerLayer1(), BaseParticlePropagator::propagateToPreshowerLayer2(), BaseParticlePropagator::propagateToVFcalEntrance(), RawParticle::setCharge(), FSimTrack::setEcal(), FSimTrack::setHcal(), FSimTrack::setHcalExit(), FSimTrack::setHO(), FSimTrack::setLayer1(), FSimTrack::setLayer2(), BaseParticlePropagator::setMagneticField(), FSimTrack::setVFcal(), lumiQTWidget::t, track(), SimTrack::trackerSurfaceMomentum(), SimTrack::trackerSurfacePosition(), CoreSimTrack::type(), FSimTrack::vertex(), vertex(), RawParticle::vertex(), SimTrack::vertIndex(), x, y, and z.

107  {
108 
109  // Watch out there ! A SimVertex is in mm (stupid),
110  // while a FSimVertex is in cm (clever).
111 
112  clear();
113 
114  unsigned nVtx = simVertices.size();
115  unsigned nTks = simTracks.size();
116 
117  // Empty event, do nothin'
118  if ( nVtx == 0 ) return;
119 
120  // Two arrays for internal use.
121  std::vector<int> myVertices(nVtx,-1);
122  std::vector<int> myTracks(nTks,-1);
123 
124  // create a map associating geant particle id and position in the
125  // event SimTrack vector
126 
127  std::map<unsigned, unsigned> geantToIndex;
128  for( unsigned it=0; it<simTracks.size(); ++it ) {
129  geantToIndex[ simTracks[it].trackId() ] = it;
130  }
131 
132  // Create also a map associating a SimTrack with its endVertex
133  /*
134  std::map<unsigned, unsigned> endVertex;
135  for ( unsigned iv=0; iv<simVertices.size(); ++iv ) {
136  endVertex[ simVertices[iv].parentIndex() ] = iv;
137  }
138  */
139 
140  // Set the main vertex for the kine particle filter
141  // SimVertices were in mm until 110_pre2
142  // HepLorentzVector primaryVertex = simVertices[0].position()/10.;
143  // SImVertices are now in cm
144  // Also : position is copied until SimVertex switches to Mathcore.
145  // XYZTLorentzVector primaryVertex = simVertices[0].position();
146  // The next 5 lines to be then replaced by the previous line
147  XYZTLorentzVector primaryVertex(simVertices[0].position().x(),
148  simVertices[0].position().y(),
149  simVertices[0].position().z(),
150  simVertices[0].position().t());
151  //
152  //myFilter->setMainVertex(primaryVertex);
153  // Add the main vertex to the list.
154  addSimVertex(/*myFilter->vertex()*/primaryVertex, -1, FSimVertexType::PRIMARY_VERTEX);
155  myVertices[0] = 0;
156 
157  for( unsigned trackId=0; trackId<nTks; ++trackId ) {
158 
159  // The track
160  const SimTrack& track = simTracks[trackId];
161  // std::cout << std::endl << "SimTrack " << trackId << " " << track << std::endl;
162 
163  // The origin vertex
164  int vertexId = track.vertIndex();
165  const SimVertex& vertex = simVertices[vertexId];
166  //std::cout << "Origin vertex " << vertexId << " " << vertex << std::endl;
167 
168  // The mother track
169  int motherId = -1;
170  if( !vertex.noParent() ) { // there is a parent to this vertex
171  // geant id of the mother
172  unsigned motherGeantId = vertex.parentIndex();
173  std::map<unsigned, unsigned >::iterator association
174  = geantToIndex.find( motherGeantId );
175  if(association != geantToIndex.end() )
176  motherId = association->second;
177  }
178  int originId = motherId == - 1 ? -1 : myTracks[motherId];
179  //std::cout << "Origin id " << originId << std::endl;
180 
181  /*
182  if ( endVertex.find(trackId) != endVertex.end() )
183  std::cout << "End vertex id = " << endVertex[trackId] << std::endl;
184  else
185  std::cout << "No endVertex !!! " << std::endl;
186  std::cout << "Tracker surface position " << track.trackerSurfacePosition() << std::endl;
187  */
188 
189  // Add the vertex (if it does not already exist!)
190  XYZTLorentzVector position(vertex.position().px(),vertex.position().py(),
191  vertex.position().pz(),vertex.position().e());
192  if ( myVertices[vertexId] == -1 )
193  // Momentum and position are copied until SimTrack and SimVertex
194  // switch to Mathcore.
195  // myVertices[vertexId] = addSimVertex(vertex.position(),originId);
196  // The next line to be then replaced by the previous line
197  myVertices[vertexId] = addSimVertex(position,originId);
198 
199  // Add the track (with protection for brem'ing electrons and muons)
200  int motherType = motherId == -1 ? 0 : simTracks[motherId].type();
201 
202  bool notBremInDetector =
203  (abs(motherType) != 11 && std::abs(motherType) != 13) ||
204  motherType != track.type() ||
205  position.Perp2() < lateVertexPosition ;
206 
207  if ( notBremInDetector ) {
208  // Momentum and position are copied until SimTrack and SimVertex
209  // switch to Mathcore.
210  // RawParticle part(track.momentum(), vertex.position());
211  // The next 3 lines to be then replaced by the previous line
212  XYZTLorentzVector momentum(track.momentum().px(),track.momentum().py(),
213  track.momentum().pz(),track.momentum().e());
214  RawParticle part(momentum,position);
215  //
216  part.setID(track.type());
217  //std::cout << "Ctau = " << part.PDGcTau() << std::endl;
218  // Don't save tracks that have decayed immediately but for which no daughters
219  // were saved (probably due to cuts on E, pT and eta)
220  // if ( part.PDGcTau() > 0.1 || endVertex.find(trackId) != endVertex.end() )
221  myTracks[trackId] = addSimTrack(&part,myVertices[vertexId],track.genpartIndex());
222  if ( myTracks[trackId] >= 0 ) {
223  (*theSimTracks)[ myTracks[trackId] ].setTkPosition(track.trackerSurfacePosition());
224  (*theSimTracks)[ myTracks[trackId] ].setTkMomentum(track.trackerSurfaceMomentum());
225  }
226  } else {
227 
228  myTracks[trackId] = myTracks[motherId];
229  if ( myTracks[trackId] >= 0 ) {
230  (*theSimTracks)[ myTracks[trackId] ].setTkPosition(track.trackerSurfacePosition());
231  (*theSimTracks)[ myTracks[trackId] ].setTkMomentum(track.trackerSurfaceMomentum());
232  }
233  }
234 
235  }
236 
237  // Now loop over the remaining end vertices !
238  for( unsigned vertexId=0; vertexId<nVtx; ++vertexId ) {
239 
240  // if the vertex is already saved, just ignore.
241  if ( myVertices[vertexId] != -1 ) continue;
242 
243  // The yet unused vertex
244  const SimVertex& vertex = simVertices[vertexId];
245 
246  // The mother track
247  int motherId = -1;
248  if( !vertex.noParent() ) { // there is a parent to this vertex
249 
250  // geant id of the mother
251  unsigned motherGeantId = vertex.parentIndex();
252  std::map<unsigned, unsigned >::iterator association
253  = geantToIndex.find( motherGeantId );
254  if(association != geantToIndex.end() )
255  motherId = association->second;
256  }
257  int originId = motherId == - 1 ? -1 : myTracks[motherId];
258 
259  // Add the vertex
260  // Momentum and position are copied until SimTrack and SimVertex
261  // switch to Mathcore.
262  // myVertices[vertexId] = addSimVertex(vertex.position(),originId);
263  // The next 3 lines to be then replaced by the previous line
264  XYZTLorentzVector position(vertex.position().px(),vertex.position().py(),
265  vertex.position().pz(),vertex.position().e());
266  myVertices[vertexId] = addSimVertex(position,originId);
267  }
268 
269  // Finally, propagate all particles to the calorimeters
270  BaseParticlePropagator myPart;
271  XYZTLorentzVector mom;
273 
274 
275  // Loop over the tracks
276  for( int fsimi=0; fsimi < (int)nTracks() ; ++fsimi) {
277 
278 
279  FSimTrack& myTrack = track(fsimi);
280  double trackerSurfaceTime = myTrack.vertex().position().t()
281  + myTrack.momentum().e()/myTrack.momentum().pz()
282  * ( myTrack.trackerSurfacePosition().z()
283  - myTrack.vertex().position().z() );
284  pos = XYZTLorentzVector(myTrack.trackerSurfacePosition().x(),
285  myTrack.trackerSurfacePosition().y(),
286  myTrack.trackerSurfacePosition().z(),
287  trackerSurfaceTime);
288  mom = XYZTLorentzVector(myTrack.trackerSurfaceMomentum().x(),
289  myTrack.trackerSurfaceMomentum().y(),
290  myTrack.trackerSurfaceMomentum().z(),
291  myTrack.trackerSurfaceMomentum().t());
292 
293  if ( mom.T() > 0. ) {
294  // The particle to be propagated
295  myPart = BaseParticlePropagator(RawParticle(mom,pos),0.,0.,4.);
296  myPart.setCharge(myTrack.charge());
297 
298  // Propagate to Preshower layer 1
299  myPart.propagateToPreshowerLayer1(false);
300  if ( myTrack.notYetToEndVertex(myPart.vertex()) && myPart.getSuccess()>0 )
301  myTrack.setLayer1(myPart,myPart.getSuccess());
302 
303  // Propagate to Preshower Layer 2
304  myPart.propagateToPreshowerLayer2(false);
305  if ( myTrack.notYetToEndVertex(myPart.vertex()) && myPart.getSuccess()>0 )
306  myTrack.setLayer2(myPart,myPart.getSuccess());
307 
308  // Propagate to Ecal Endcap
309  myPart.propagateToEcalEntrance(false);
310  if ( myTrack.notYetToEndVertex(myPart.vertex()) )
311  myTrack.setEcal(myPart,myPart.getSuccess());
312 
313  // Propagate to HCAL entrance
314  myPart.propagateToHcalEntrance(false);
315  if ( myTrack.notYetToEndVertex(myPart.vertex()) )
316  myTrack.setHcal(myPart,myPart.getSuccess());
317 
318  // Attempt propagation to HF for low pt and high eta
319  if ( myPart.cos2ThetaV()>0.8 || mom.T() < 3. ) {
320  // Propagate to VFCAL entrance
321  myPart.propagateToVFcalEntrance(false);
322  if ( myTrack.notYetToEndVertex(myPart.vertex()) )
323  myTrack.setVFcal(myPart,myPart.getSuccess());
324 
325  // Otherwise propagate to the HCAL exit and HO.
326  } else {
327  // Propagate to HCAL exit
328  myPart.propagateToHcalExit(false);
329  if ( myTrack.notYetToEndVertex(myPart.vertex()) )
330  myTrack.setHcalExit(myPart,myPart.getSuccess());
331  // Propagate to HOLayer entrance
332  myPart.setMagneticField(0);
333  myPart.propagateToHOLayer(false);
334  if ( myTrack.notYetToEndVertex(myPart.vertex()) )
335  myTrack.setHO(myPart,myPart.getSuccess());
336  }
337  }
338  }
339 }
double lateVertexPosition
const math::XYZVectorD & trackerSurfacePosition() const
Definition: SimTrack.h:36
void setCharge(float q)
set the MEASURED charge
Definition: RawParticle.cc:139
int addSimVertex(const XYZTLorentzVector &decayVertex, int im=-1, FSimVertexType::VertexType type=FSimVertexType::ANY)
Add a new vertex to the Event and to the various lists.
float charge() const
charge
Definition: FSimTrack.h:51
int addSimTrack(const RawParticle *p, int iv, int ig=-1, const HepMC::GenVertex *ev=0)
Add a new track to the Event and to the various lists.
bool propagateToPreshowerLayer1(bool first=true)
const XYZTLorentzVector & momentum() const
Temporary (until move of SimTrack to Mathcore) - No! Actually very useful.
Definition: FSimTrack.h:204
void setEcal(const RawParticle &pp, int success)
Set the ecal variables.
Definition: FSimTrack.cc:81
int getSuccess() const
Has propagation been performed and was barrel or endcap reached ?
void setLayer2(const RawParticle &pp, int success)
Set the preshower layer2 variables.
Definition: FSimTrack.cc:74
void clear()
clear the FBaseSimEvent content before the next event
void setMagneticField(double b)
Set the magnetic field.
bool notYetToEndVertex(const XYZTLorentzVector &pos) const
Compare the end vertex position with another position.
Definition: FSimTrack.cc:45
FSimVertex & vertex(int id) const
Return vertex with given Id.
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
bool propagateToVFcalEntrance(bool first=true)
void setLayer1(const RawParticle &pp, int success)
Set the preshower layer1 variables.
Definition: FSimTrack.cc:67
int parentIndex() const
Definition: SimVertex.h:33
const math::XYZTLorentzVector & position() const
Temporary (until CMSSW moves to Mathcore) - No ! Actually very useful.
Definition: FSimVertex.h:49
unsigned int nTracks() const
Number of tracks.
Definition: FBaseSimEvent.h:84
bool propagateToHcalExit(bool first=true)
int genpartIndex() const
index of the corresponding Generator particle in the Event container (-1 if no Genpart) ...
Definition: SimTrack.h:33
double cos2ThetaV() const
Definition: RawParticle.h:269
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
const math::XYZTLorentzVectorD & position() const
Definition: CoreSimVertex.h:26
bool propagateToEcalEntrance(bool first=true)
int vertIndex() const
index of the vertex in the Event container (-1 if no vertex)
Definition: SimTrack.h:29
const XYZTLorentzVector & vertex() const
the vertex fourvector
Definition: RawParticle.h:285
part
Definition: HCALResponse.h:20
const math::XYZTLorentzVectorD & trackerSurfaceMomentum() const
Definition: SimTrack.h:38
void setHcalExit(const RawParticle &pp, int success)
Set the hcal exit variables.
Definition: FSimTrack.cc:102
int type() const
particle type (HEP PDT convension)
Definition: CoreSimTrack.h:25
bool propagateToHcalEntrance(bool first=true)
const math::XYZTLorentzVectorD & momentum() const
Definition: CoreSimTrack.h:22
static int position[264][3]
Definition: ReadPGInfo.cc:509
void setHO(const RawParticle &pp, int success)
Set the ho variables.
Definition: FSimTrack.cc:108
void setVFcal(const RawParticle &pp, int success)
Set the hcal variables.
Definition: FSimTrack.cc:95
void setHcal(const RawParticle &pp, int success)
Set the hcal variables.
Definition: FSimTrack.cc:88
const FSimVertex vertex() const
Origin vertex.
bool noParent() const
Definition: SimVertex.h:34
bool propagateToHOLayer(bool first=true)
bool propagateToPreshowerLayer2(bool first=true)
math::XYZTLorentzVector XYZTLorentzVector
Definition: RawParticle.h:15
FSimTrack & track(int id) const
Return track with given Id.
const KineParticleFilter& FBaseSimEvent::filter ( ) const
inline
std::vector<HepMC::GenParticle*>* FBaseSimEvent::genparts ( ) const
inlineprotected

The pointer to the vector of GenParticle's.

Definition at line 150 of file FBaseSimEvent.h.

150  {
151  return theGenParticles;
152  }
std::vector< HepMC::GenParticle * > * theGenParticles
void FBaseSimEvent::initializePdt ( const HepPDT::ParticleDataTable aPdt)

Initialize the particle data table.

Definition at line 88 of file FBaseSimEvent.cc.

References pdt.

Referenced by FamosManager::setupGeometryAndField().

88  {
89 
90  pdt = aPdt;
91 
92 }
const ParticleDataTable * pdt
unsigned int FBaseSimEvent::nChargedTracks ( ) const
inline

Number of "reconstructed" charged tracks.

Definition at line 99 of file FBaseSimEvent.h.

References FSimVertexType::ANY, ev, GenParticle::GenParticle, mps_fire::i, AlCaHLTBitMon_ParallelJobs::p, and HiIsolationCommonParameters_cff::track.

99  {
100  return nChargedParticleTracks;
101  }
unsigned int nChargedParticleTracks
unsigned int FBaseSimEvent::nGenParts ( ) const
inline

Number of generator particles.

Definition at line 94 of file FBaseSimEvent.h.

Referenced by addParticles(), and FSimEvent::nGenParts().

94  {
95  return nGenParticles;
96  }
unsigned int nGenParticles
unsigned int FBaseSimEvent::nTracks ( ) const
inline

Number of tracks.

Definition at line 84 of file FBaseSimEvent.h.

Referenced by fill(), FSimEvent::nTracks(), and print().

84  {
85  return nSimTracks;
86  }
unsigned int nSimTracks
unsigned int FBaseSimEvent::nVertices ( ) const
inline

Number of vertices.

Definition at line 89 of file FBaseSimEvent.h.

Referenced by FSimEvent::nVertices(), and print().

89  {
90  return nSimVertices;
91  }
unsigned int nSimVertices
void FBaseSimEvent::print ( void  ) const

print the FBaseSimEvent in an intelligible way

Definition at line 692 of file FBaseSimEvent.cc.

References gather_cfg::cout, mps_fire::i, createfilelist::int, nTracks(), nVertices(), track(), and vertexType().

Referenced by CalorimetryManager::reconstruct().

692  {
693 
694  std::cout << " Id Gen Name eta phi pT E Vtx1 "
695  << " x y z "
696  << "Moth Vtx2 eta phi R Z Daughters Ecal?" << std::endl;
697 
698  for( int i=0; i<(int)nTracks(); i++ )
699  std::cout << track(i) << std::endl;
700 
701  for( int i=0; i<(int)nVertices(); i++ )
702  std::cout << "i = " << i << " " << vertexType(i) << std::endl;
703 
704 
705 
706 }
unsigned int nVertices() const
Number of vertices.
Definition: FBaseSimEvent.h:89
FSimVertexType & vertexType(int id) const
Return vertex with given Id.
unsigned int nTracks() const
Number of tracks.
Definition: FBaseSimEvent.h:84
FSimTrack & track(int id) const
Return track with given Id.
void FBaseSimEvent::printMCTruth ( const HepMC::GenEvent &  hev)

print the original MCTruth event

Definition at line 597 of file FBaseSimEvent.cc.

References class-composition::children, gather_cfg::cout, PVValHelper::eta, alignBH_cfg::fixed, GenParticle::GenParticle, triggerObjects_cff::id, gen::k, dataset::name, nullptr, AlCaHLTBitMon_ParallelJobs::p, source_particleGun_cfi::ParticleID, pdt, and AlCaHLTBitMon_QueryRunRegistry::string.

597  {
598 
599  std::cout << "Id Gen Name eta phi pT E Vtx1 "
600  << " x y z "
601  << "Moth Vtx2 eta phi R Z Da1 Da2 Ecal?" << std::endl;
602 
603  for ( HepMC::GenEvent::particle_const_iterator
604  piter = myGenEvent.particles_begin();
605  piter != myGenEvent.particles_end();
606  ++piter ) {
607 
608  HepMC::GenParticle* p = *piter;
609  /* */
610  int partId = p->pdg_id();
612 
613  if ( pdt->particle(ParticleID(partId)) !=nullptr ) {
614  name = (pdt->particle(ParticleID(partId)))->name();
615  } else {
616  name = "none";
617  }
618 
619  XYZTLorentzVector momentum1(p->momentum().px(),
620  p->momentum().py(),
621  p->momentum().pz(),
622  p->momentum().e());
623 
624  int vertexId1 = 0;
625 
626  if ( !p->production_vertex() ) continue;
627 
628  XYZVector vertex1 (p->production_vertex()->position().x()/10.,
629  p->production_vertex()->position().y()/10.,
630  p->production_vertex()->position().z()/10.);
631  vertexId1 = p->production_vertex()->barcode();
632 
633  std::cout.setf(std::ios::fixed, std::ios::floatfield);
634  std::cout.setf(std::ios::right, std::ios::adjustfield);
635 
636  std::cout << std::setw(4) << p->barcode() << " "
637  << name;
638 
639  for(unsigned int k=0;k<11-name.length() && k<12; k++) std::cout << " ";
640 
641  double eta = momentum1.eta();
642  if ( eta > +10. ) eta = +10.;
643  if ( eta < -10. ) eta = -10.;
644  std::cout << std::setw(6) << std::setprecision(2) << eta << " "
645  << std::setw(6) << std::setprecision(2) << momentum1.phi() << " "
646  << std::setw(7) << std::setprecision(2) << momentum1.pt() << " "
647  << std::setw(7) << std::setprecision(2) << momentum1.e() << " "
648  << std::setw(4) << vertexId1 << " "
649  << std::setw(6) << std::setprecision(1) << vertex1.x() << " "
650  << std::setw(6) << std::setprecision(1) << vertex1.y() << " "
651  << std::setw(6) << std::setprecision(1) << vertex1.z() << " ";
652 
653  const HepMC::GenParticle* mother =
654  *(p->production_vertex()->particles_in_const_begin());
655 
656  if ( mother )
657  std::cout << std::setw(4) << mother->barcode() << " ";
658  else
659  std::cout << " " ;
660 
661  if ( p->end_vertex() ) {
662  XYZTLorentzVector vertex2(p->end_vertex()->position().x()/10.,
663  p->end_vertex()->position().y()/10.,
664  p->end_vertex()->position().z()/10.,
665  p->end_vertex()->position().t()/10.);
666  int vertexId2 = p->end_vertex()->barcode();
667 
668  std::vector<const HepMC::GenParticle*> children;
669  HepMC::GenVertex::particles_out_const_iterator firstDaughterIt =
670  p->end_vertex()->particles_out_const_begin();
671  HepMC::GenVertex::particles_out_const_iterator lastDaughterIt =
672  p->end_vertex()->particles_out_const_end();
673  for ( ; firstDaughterIt != lastDaughterIt ; ++firstDaughterIt ) {
674  children.push_back(*firstDaughterIt);
675  }
676 
677  std::cout << std::setw(4) << vertexId2 << " "
678  << std::setw(6) << std::setprecision(2) << vertex2.eta() << " "
679  << std::setw(6) << std::setprecision(2) << vertex2.phi() << " "
680  << std::setw(5) << std::setprecision(1) << vertex2.pt() << " "
681  << std::setw(6) << std::setprecision(1) << vertex2.z() << " ";
682  for ( unsigned id=0; id<children.size(); ++id )
683  std::cout << std::setw(4) << children[id]->barcode() << " ";
684  }
685  std::cout << std::endl;
686 
687  }
688 
689 }
const ParticleDataTable * pdt
#define nullptr
math::XYZVector XYZVector
int k[5][pyjets_maxn]
math::XYZTLorentzVector XYZTLorentzVector
Definition: RawParticle.h:15
const HepPDT::ParticleDataTable* FBaseSimEvent::theTable ( ) const
inline

Get the pointer to the particle data table.

Definition at line 57 of file FBaseSimEvent.h.

References hitfit::clear(), lumiContext::fill, and edm::print().

Referenced by FSimTrack::FSimTrack(), and FamosProducer::produce().

57  {
58  return pdt;
59  }
const ParticleDataTable * pdt
FSimTrack& FBaseSimEvent::track ( int  id) const
inline
std::vector<FSimTrack>* FBaseSimEvent::tracks ( void  ) const
inlineprotected

The pointer to the vector of FSimTrack's.

Definition at line 140 of file FBaseSimEvent.h.

140  {
141  return theSimTracks;
142  }
std::vector< FSimTrack > * theSimTracks
FSimVertex& FBaseSimEvent::vertex ( int  id) const
inline

Return vertex with given Id.

Referenced by addParticles(), addSimTrack(), Tau.Tau::dxy(), fill(), and TrajectoryManager::updateWithDaughters().

FSimVertexType& FBaseSimEvent::vertexType ( int  id) const
inline

Return vertex with given Id.

Referenced by print().

std::vector<FSimVertex>* FBaseSimEvent::vertices ( ) const
inlineprotected

The pointer to the vector of FSimVertex's.

Definition at line 145 of file FBaseSimEvent.h.

145  {
146  return theSimVertices;
147  }
std::vector< FSimVertex > * theSimVertices

Member Data Documentation

unsigned int FBaseSimEvent::initialSize
private

Definition at line 172 of file FBaseSimEvent.h.

Referenced by FBaseSimEvent().

double FBaseSimEvent::lateVertexPosition
private

Definition at line 183 of file FBaseSimEvent.h.

Referenced by addParticles(), FBaseSimEvent(), and fill().

KineParticleFilter* FBaseSimEvent::myFilter
private

The particle filter.

Definition at line 175 of file FBaseSimEvent.h.

Referenced by ~FBaseSimEvent().

unsigned int FBaseSimEvent::nChargedParticleTracks
private

Definition at line 166 of file FBaseSimEvent.h.

Referenced by addChargedTrack(), chargedTrack(), and clear().

unsigned int FBaseSimEvent::nGenParticles
private

Definition at line 165 of file FBaseSimEvent.h.

Referenced by addParticles(), and clear().

unsigned int FBaseSimEvent::nSimTracks
private

Definition at line 163 of file FBaseSimEvent.h.

Referenced by addSimTrack(), and clear().

unsigned int FBaseSimEvent::nSimVertices
private

Definition at line 164 of file FBaseSimEvent.h.

Referenced by addSimVertex(), and clear().

const ParticleDataTable* FBaseSimEvent::pdt
private

Definition at line 181 of file FBaseSimEvent.h.

Referenced by initializePdt(), and printMCTruth().

double FBaseSimEvent::sigmaVerteX
private

Definition at line 177 of file FBaseSimEvent.h.

double FBaseSimEvent::sigmaVerteY
private

Definition at line 178 of file FBaseSimEvent.h.

double FBaseSimEvent::sigmaVerteZ
private

Definition at line 179 of file FBaseSimEvent.h.

unsigned int FBaseSimEvent::theChargedSize
private

Definition at line 171 of file FBaseSimEvent.h.

Referenced by addChargedTrack(), and FBaseSimEvent().

std::vector<unsigned>* FBaseSimEvent::theChargedTracks
private

Definition at line 161 of file FBaseSimEvent.h.

Referenced by addChargedTrack(), chargedTrack(), FBaseSimEvent(), and ~FBaseSimEvent().

FSimVertexTypeCollection* FBaseSimEvent::theFSimVerticesType
private

Definition at line 158 of file FBaseSimEvent.h.

Referenced by addSimVertex(), FBaseSimEvent(), and ~FBaseSimEvent().

std::vector<HepMC::GenParticle*>* FBaseSimEvent::theGenParticles
private

Definition at line 159 of file FBaseSimEvent.h.

Referenced by addParticles(), embdGenpart(), FBaseSimEvent(), and ~FBaseSimEvent().

unsigned int FBaseSimEvent::theGenSize
private

Definition at line 170 of file FBaseSimEvent.h.

Referenced by addParticles(), and FBaseSimEvent().

std::vector<FSimTrack>* FBaseSimEvent::theSimTracks
private

Definition at line 156 of file FBaseSimEvent.h.

Referenced by addSimTrack(), FBaseSimEvent(), and ~FBaseSimEvent().

std::vector<FSimVertex>* FBaseSimEvent::theSimVertices
private

Definition at line 157 of file FBaseSimEvent.h.

Referenced by addSimVertex(), FBaseSimEvent(), and ~FBaseSimEvent().

unsigned int FBaseSimEvent::theTrackSize
private

Definition at line 168 of file FBaseSimEvent.h.

Referenced by addSimTrack(), and FBaseSimEvent().

unsigned int FBaseSimEvent::theVertexSize
private

Definition at line 169 of file FBaseSimEvent.h.

Referenced by addSimVertex(), and FBaseSimEvent().