1 #ifndef FASTSIM_PARTICLEMANAGER_H 2 #define FASTSIM_PARTICLEMANAGER_H 5 #include "HepMC/GenEvent.h" 29 class SimplifiedGeometry;
55 double beamPipeRadius,
56 double deltaRchargedMother,
60 bool fixLongLivedBug);
85 std::vector<std::unique_ptr<Particle> > & secondaries,
100 unsigned addEndVertex(
const Particle * particle);
110 unsigned addSimVertex(
122 unsigned addSimTrack(
const Particle * particle);
123 void exoticRelativesChecker(
const HepMC::GenVertex* originVertex,
int& hasExoticAssociation,
int ngendepth);
129 std::unique_ptr<Particle> nextGenParticle();
151 inline bool isExotic(
bool fixLongLivedBug,
int pdgid_) {
153 return ((pdgid >= 1000000 && pdgid < 4000000 && pdgid != 3000022) ||
157 (pdgid == 39 && fixLongLivedBug));
Implementation of a generic detector layer (base class for forward/barrel layers).
Manages GenParticles and Secondaries from interactions.
HepPDT::ParticleDataTable ParticleDataTable
const double deltaRchargedMother_
For FastSim (cheat) tracking: cut on the angle between a charged mother and charged daughter...
const ParticleFilter *const particleFilter_
(Kinematic) cuts on the particles that have to be propagated.
double momentumUnitConversionFactor_
Convert pythia units to GeV (FastSim standard)
std::vector< std::unique_ptr< Particle > > particleBuffer_
The vector of all secondaries that are not yet propagated in the event.
HepMC::GenEvent::particle_const_iterator genParticleIterator_
Iterator to keep track on which GenParticles where already considered.
const HepMC::GenEvent *const genEvent_
The GenEvent.
const HepMC::GenEvent::particle_const_iterator genParticleEnd_
The last particle of the GenEvent.
double lengthUnitConversionFactor2_
Convert pythia unis to cm^2 (FastSim standard)
const SimVertex getSimVertex(unsigned i)
Returns the position of a given SimVertex. Needed for interfacing the code with the old calorimetry...
const SimTrack getSimTrack(unsigned i)
Returns a given SimTrack. Needed for interfacing the code with the old calorimetry.
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
const double beamPipeRadius2_
(Radius of the beampipe)^2
Abs< T >::type abs(const T &t)
bool isExotic(bool fixLongLivedBug, int pdgid_)
std::vector< SimTrack > * simTracks_
The generated SimTrack of this event.
double lengthUnitConversionFactor_
Convert pythia unis to cm (FastSim standard)
const HepPDT::ParticleDataTable *const particleDataTable_
Necessary to get information like lifetime and charge of a particle if unknown.
double timeUnitConversionFactor_
Convert pythia unis to ns (FastSim standard)
static int position[264][3]
std::vector< SimVertex > * simVertices_
The generated SimVertices of this event.
(Kinematic) cuts on the particles that are propagated.
int genParticleIndex_
Index of particle in the GenEvent (if it is a GenParticle)