CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
fastsim::ParticleManager Class Reference

Manages GenParticles and Secondaries from interactions. More...

#include <ParticleManager.h>

Public Member Functions

unsigned addEndVertex (const Particle *particle)
 Necessary to add an end vertex to a particle. More...
 
void addSecondaries (const math::XYZTLorentzVector &vertexPosition, int motherSimTrackId, std::vector< std::unique_ptr< Particle > > &secondaries, const SimplifiedGeometry *layer=nullptr)
 Adds secondaries that are produced by any of the interactions (or particle decay) to the buffer. More...
 
const SimTrack getSimTrack (unsigned i)
 Returns a given SimTrack. Needed for interfacing the code with the old calorimetry. More...
 
const SimVertex getSimVertex (unsigned i)
 Returns the position of a given SimVertex. Needed for interfacing the code with the old calorimetry. More...
 
std::unique_ptr< ParticlenextParticle (const RandomEngineAndDistribution &random)
 Returns the next particle that has to be propagated (secondary or genParticle). More...
 
 ParticleManager (const HepMC::GenEvent &genEvent, const HepPDT::ParticleDataTable &particleDataTable, double beamPipeRadius, double deltaRchargedMother, const ParticleFilter &particleFilter, std::vector< SimTrack > &simTracks, std::vector< SimVertex > &simVertices)
 Constructor. More...
 
 ~ParticleManager ()
 Default destructor. More...
 

Private Member Functions

unsigned addSimTrack (const Particle *particle)
 Add a simTrack (simTrack contains some basic info about the particle, e.g. pdgId). More...
 
unsigned addSimVertex (const math::XYZTLorentzVector &position, int motherIndex)
 Add a simVertex (simVertex contains information about the track it was produced). More...
 
void exoticRelativesChecker (const HepMC::GenVertex *originVertex, int &hasExoticAssociation, int ngendepth)
 
std::unique_ptr< ParticlenextGenParticle ()
 Returns next particle from the GenEvent that has to be propagated. More...
 

Private Attributes

const double beamPipeRadius2_
 (Radius of the beampipe)^2 More...
 
const double deltaRchargedMother_
 For FastSim (cheat) tracking: cut on the angle between a charged mother and charged daughter. More...
 
const HepMC::GenEvent *const genEvent_
 The GenEvent. More...
 
const HepMC::GenEvent::particle_const_iterator genParticleEnd_
 The last particle of the GenEvent. More...
 
int genParticleIndex_
 Index of particle in the GenEvent (if it is a GenParticle) More...
 
HepMC::GenEvent::particle_const_iterator genParticleIterator_
 Iterator to keep track on which GenParticles where already considered. More...
 
double lengthUnitConversionFactor2_
 Convert pythia unis to cm^2 (FastSim standard) More...
 
double lengthUnitConversionFactor_
 Convert pythia unis to cm (FastSim standard) More...
 
double momentumUnitConversionFactor_
 Convert pythia units to GeV (FastSim standard) More...
 
std::vector< std::unique_ptr< Particle > > particleBuffer_
 The vector of all secondaries that are not yet propagated in the event. More...
 
const HepPDT::ParticleDataTable *const particleDataTable_
 Necessary to get information like lifetime and charge of a particle if unknown. More...
 
const ParticleFilter *const particleFilter_
 (Kinematic) cuts on the particles that have to be propagated. More...
 
std::vector< SimTrack > * simTracks_
 The generated SimTrack of this event. More...
 
std::vector< SimVertex > * simVertices_
 The generated SimVertices of this event. More...
 
double timeUnitConversionFactor_
 Convert pythia unis to ns (FastSim standard) More...
 

Detailed Description

Manages GenParticles and Secondaries from interactions.

Manages which particle has to be propagated next, this includes GenParticles and secondaries from the interactions. Furthermore, checks if all necessary information is included with the GenParticles (charge, lifetime), otherwise reads information from HepPDT::ParticleDataTable. Also handles secondaries, including closestChargedDaughter algorithm which is used for FastSim (cheat) tracking: a charged daughter can continue the track of a charged mother, see addSecondaries(...).

Definition at line 36 of file ParticleManager.h.

Constructor & Destructor Documentation

◆ ParticleManager()

fastsim::ParticleManager::ParticleManager ( const HepMC::GenEvent genEvent,
const HepPDT::ParticleDataTable particleDataTable,
double  beamPipeRadius,
double  deltaRchargedMother,
const ParticleFilter particleFilter,
std::vector< SimTrack > &  simTracks,
std::vector< SimVertex > &  simVertices 
)

Constructor.

Parameters
genEventGet the GenEvent.
particleDataTableGet information about particles, e.g. charge, lifetime.
beamPipeRadiusRadius of the beampipe.
deltaRchargedMotherFor FastSim (cheat) tracking: cut on the angle between a charged mother and charged daughter.
particleFilterSelects which particles have to be propagated.
simTracksThe SimTracks.
simVerticesThe SimVertices.

Definition at line 17 of file ParticleManager.cc.

24  : genEvent_(&genEvent),
25  genParticleIterator_(genEvent_->particles_begin()),
26  genParticleEnd_(genEvent_->particles_end()),
28  particleDataTable_(&particleDataTable),
34  // prepare unit convsersions
35  // --------------------------------------------
36  // | | hepmc | cms |
37  // --------------------------------------------
38  // | length | genEvent_->length_unit | cm |
39  // | momentum | genEvent_->momentum_unit | GeV |
40  // | time | length unit (t*c) | ns |
41  // --------------------------------------------
42  ,
43  momentumUnitConversionFactor_(conversion_factor(genEvent_->momentum_unit(), HepMC::Units::GEV)),
44  lengthUnitConversionFactor_(conversion_factor(genEvent_->length_unit(), HepMC::Units::LengthUnit::CM)),
47 
48 {
49  // add the main vertex from the signal event to the simvertex collection
50  if (genEvent.vertices_begin() != genEvent_->vertices_end()) {
51  const HepMC::FourVector& position = (*genEvent.vertices_begin())->position();
56  -1);
57  }
58 }

References addSimVertex(), genWeightsTable_cfi::genEvent, genEvent_, lengthUnitConversionFactor_, position, and timeUnitConversionFactor_.

◆ ~ParticleManager()

fastsim::ParticleManager::~ParticleManager ( )

Default destructor.

Definition at line 60 of file ParticleManager.cc.

60 {}

Member Function Documentation

◆ addEndVertex()

unsigned fastsim::ParticleManager::addEndVertex ( const Particle particle)

Necessary to add an end vertex to a particle.

Needed if particle is no longer propagated for some reason (e.g. remaining energy below threshold) and no secondaries where produced at that point.

Returns
Index of that vertex.

Definition at line 178 of file ParticleManager.cc.

178  {
179  return this->addSimVertex(particle->position(), particle->simTrackIndex());
180 }

References fastsim::Particle::position(), and fastsim::Particle::simTrackIndex().

◆ addSecondaries()

void fastsim::ParticleManager::addSecondaries ( const math::XYZTLorentzVector vertexPosition,
int  motherSimTrackId,
std::vector< std::unique_ptr< Particle > > &  secondaries,
const SimplifiedGeometry layer = nullptr 
)

Adds secondaries that are produced by any of the interactions (or particle decay) to the buffer.

Also checks which charged daughter is closest to a charged mother (in deltaR) and assigns the same SimTrack ID.

Parameters
vertexPositionThe origin vertex (interaction or particle decay took place here).
motherSimTrackIdSimTrack ID of the mother particle, necessary for FastSim (cheat) tracking.
secondariesAll secondaries that where produced in a single particle decay or interaction.

Definition at line 119 of file ParticleManager.cc.

122  {
123  // vertex must be within the accepted volume
124  if (!particleFilter_->acceptsVtx(vertexPosition)) {
125  return;
126  }
127 
128  // no need to create vertex in case no particles are produced
129  if (secondaries.empty()) {
130  return;
131  }
132 
133  // add simVertex
134  unsigned simVertexIndex = addSimVertex(vertexPosition, parentSimTrackIndex);
135 
136  // closest charged daughter continues the track of the mother particle
137  // simplified tracking algorithm for fastSim
138  double distMin = 99999.;
139  int idx = -1;
140  int idxMin = -1;
141  for (auto& secondary : secondaries) {
142  idx++;
143  if (secondary->getMotherDeltaR() != -1) {
144  if (secondary->getMotherDeltaR() > deltaRchargedMother_) {
145  // larger than max requirement on deltaR
146  secondary->resetMother();
147  } else {
148  if (secondary->getMotherDeltaR() < distMin) {
149  distMin = secondary->getMotherDeltaR();
150  idxMin = idx;
151  }
152  }
153  }
154  }
155 
156  // add secondaries to buffer
157  idx = -1;
158  for (auto& secondary : secondaries) {
159  idx++;
160  if (idxMin != -1) {
161  // reset all but the particle with the lowest deltaR (which is at idxMin)
162  if (secondary->getMotherDeltaR() != -1 && idx != idxMin) {
163  secondary->resetMother();
164  }
165  }
166 
167  // set origin vertex
168  secondary->setSimVertexIndex(simVertexIndex);
169  //
170  if (layer) {
171  secondary->setOnLayer(layer->isForward(), layer->index());
172  }
173  // ...and add particle to buffer
174  particleBuffer_.push_back(std::move(secondary));
175  }
176 }

References muonTagProbeFilters_cff::distMin, heavyIonCSV_trainingSettings::idx, phase1PixelTopology::layer, and eostools::move().

Referenced by FastSimProducer::createFSimTrack().

◆ addSimTrack()

unsigned fastsim::ParticleManager::addSimTrack ( const Particle particle)
private

Add a simTrack (simTrack contains some basic info about the particle, e.g. pdgId).

Add a simTrack for a given particle and assign an index for that track. This might also be the index of the track of the mother particle (FastSim cheat tracking).

Parameters
particleParticle that produces that simTrack.
Returns
Index of that simTrack.

Definition at line 188 of file ParticleManager.cc.

188  {
189  int simTrackIndex = simTracks_->size();
190  simTracks_->emplace_back(
191  particle->pdgId(), particle->momentum(), particle->simVertexIndex(), particle->genParticleIndex());
192  simTracks_->back().setTrackId(simTrackIndex);
193  return simTrackIndex;
194 }

References fastsim::Particle::genParticleIndex(), fastsim::Particle::momentum(), fastsim::Particle::pdgId(), and fastsim::Particle::simVertexIndex().

◆ addSimVertex()

unsigned fastsim::ParticleManager::addSimVertex ( const math::XYZTLorentzVector position,
int  motherIndex 
)
private

Add a simVertex (simVertex contains information about the track it was produced).

Add a origin vertex for any particle.

Parameters
positionPosition of the vertex.
motherIndexIndex of the parent's simTrack.
Returns
Index of that simVertex.

Definition at line 182 of file ParticleManager.cc.

182  {
183  int simVertexIndex = simVertices_->size();
184  simVertices_->emplace_back(position.Vect(), position.T(), parentSimTrackIndex, simVertexIndex);
185  return simVertexIndex;
186 }

References position.

Referenced by ParticleManager().

◆ exoticRelativesChecker()

void fastsim::ParticleManager::exoticRelativesChecker ( const HepMC::GenVertex *  originVertex,
int &  hasExoticAssociation,
int  ngendepth = 0 
)
private

Definition at line 281 of file ParticleManager.cc.

283  {
284  if (ngendepth > 99 || exoticRelativeId_ == -1 || isExotic(std::abs(exoticRelativeId_)))
285  return;
286  ngendepth += 1;
287  std::vector<HepMC::GenParticle*>::const_iterator relativesIterator_ = originVertex->particles_in_const_begin();
288  std::vector<HepMC::GenParticle*>::const_iterator relativesIteratorEnd_ = originVertex->particles_in_const_end();
289  for (; relativesIterator_ != relativesIteratorEnd_; ++relativesIterator_) {
290  const HepMC::GenParticle& genRelative = **relativesIterator_;
291  if (isExotic(std::abs(genRelative.pdg_id()))) {
292  exoticRelativeId_ = genRelative.pdg_id();
293  if (ngendepth == 100)
294  exoticRelativeId_ = -1;
295  return;
296  }
297  const HepMC::GenVertex* vertex_ = genRelative.production_vertex();
298  if (!vertex_)
299  return;
300  exoticRelativesChecker(vertex_, exoticRelativeId_, ngendepth);
301  }
302  return;
303 }

References funct::abs(), GenParticle::GenParticle, and isExotic().

◆ getSimTrack()

const SimTrack fastsim::ParticleManager::getSimTrack ( unsigned  i)
inline

Returns a given SimTrack. Needed for interfacing the code with the old calorimetry.

Definition at line 85 of file ParticleManager.h.

85 { return simTracks_->at(i); }

References mps_fire::i, and simTracks_.

Referenced by FastSimProducer::createFSimTrack().

◆ getSimVertex()

const SimVertex fastsim::ParticleManager::getSimVertex ( unsigned  i)
inline

Returns the position of a given SimVertex. Needed for interfacing the code with the old calorimetry.

Definition at line 82 of file ParticleManager.h.

82 { return simVertices_->at(i); }

References mps_fire::i, and simVertices_.

Referenced by FastSimProducer::createFSimTrack().

◆ nextGenParticle()

std::unique_ptr< fastsim::Particle > fastsim::ParticleManager::nextGenParticle ( )
private

Returns next particle from the GenEvent that has to be propagated.

Tries to get some basic information about the status of the particle from the GenEvent and does some first rejection cuts based on them.

Definition at line 196 of file ParticleManager.cc.

196  {
197  // only consider particles that start in the beam pipe and end outside the beam pipe
198  // try to get the decay time from pythia
199  // use hepmc units
200  // make the link simtrack to simvertex
201  // try not to change the simvertex structure
202 
203  // loop over gen particles
205  // some handy pointers and references
206  const HepMC::GenParticle& particle = **genParticleIterator_;
207  const HepMC::GenVertex* productionVertex = particle.production_vertex();
208  const HepMC::GenVertex* endVertex = particle.end_vertex();
209 
210  // skip incoming particles
211  if (!productionVertex) {
212  continue;
213  }
214  if (std::abs(particle.pdg_id()) < 10 || std::abs(particle.pdg_id()) == 21) {
215  continue;
216  }
217  // particles which do not descend from exotics must be produced within the beampipe
218  int exoticRelativeId = 0;
219  if (productionVertex->position().perp2() * lengthUnitConversionFactor2_ > beamPipeRadius2_) //
220  {
221  exoticRelativesChecker(productionVertex, exoticRelativeId, 0);
222  if (!isExotic(exoticRelativeId)) {
223  continue;
224  }
225  }
226 
227  // particle must not decay before it reaches the beam pipe
228  if (endVertex && endVertex->position().perp2() * lengthUnitConversionFactor2_ < beamPipeRadius2_) {
229  continue;
230  }
231 
232  // make the particle
233  std::unique_ptr<Particle> newParticle(
234  new Particle(particle.pdg_id(),
235  math::XYZTLorentzVector(productionVertex->position().x() * lengthUnitConversionFactor_,
236  productionVertex->position().y() * lengthUnitConversionFactor_,
237  productionVertex->position().z() * lengthUnitConversionFactor_,
238  productionVertex->position().t() * timeUnitConversionFactor_),
239  math::XYZTLorentzVector(particle.momentum().x() * momentumUnitConversionFactor_,
240  particle.momentum().y() * momentumUnitConversionFactor_,
241  particle.momentum().z() * momentumUnitConversionFactor_,
242  particle.momentum().e() * momentumUnitConversionFactor_)));
243  newParticle->setGenParticleIndex(genParticleIndex_);
244  if (isExotic(exoticRelativeId)) {
245  newParticle->setMotherPdgId(exoticRelativeId);
246  }
247 
248  // try to get the life time of the particle from the genEvent
249  if (endVertex) {
250  double labFrameLifeTime =
251  (endVertex->position().t() - productionVertex->position().t()) * timeUnitConversionFactor_;
252  newParticle->setRemainingProperLifeTimeC(labFrameLifeTime / newParticle->gamma() *
254  }
255 
256  // Find production vertex if it already exists. Otherwise create new vertex
257  // Possible to recreate the whole GenEvent using SimTracks/SimVertices (see FBaseSimEvent::fill(..))
258  bool foundVtx = false;
259  for (const auto& simVtx : *simVertices_) {
260  if (std::abs(simVtx.position().x() - newParticle->position().x()) < 1E-3 &&
261  std::abs(simVtx.position().y() - newParticle->position().y()) < 1E-3 &&
262  std::abs(simVtx.position().z() - newParticle->position().z()) < 1E-3) {
263  newParticle->setSimVertexIndex(simVtx.vertexId());
264  foundVtx = true;
265  break;
266  }
267  }
268  if (!foundVtx)
269  newParticle->setSimVertexIndex(addSimVertex(newParticle->position(), -1));
270 
271  // iterator/index has to be increased in case of return (is not done by the loop then)
274  // and return
275  return newParticle;
276  }
277 
278  return std::unique_ptr<Particle>();
279 }

References funct::abs(), GenParticle::GenParticle, isExotic(), and fastsim::Constants::speedOfLight.

◆ nextParticle()

std::unique_ptr< fastsim::Particle > fastsim::ParticleManager::nextParticle ( const RandomEngineAndDistribution random)

Returns the next particle that has to be propagated (secondary or genParticle).

Main method of this class. At first consideres particles from the buffer (secondaries) if there are none, then the next GenParticle is considered. Only returns particles that pass the (kinetic) cuts of the ParticleFilter. Furthermore, uses the ParticleDataTable to ensure all necessary information about the particle is stored (lifetime, charge).

Returns
The next particle that has to be propagated.
See also
ParticleFilter

Definition at line 62 of file ParticleManager.cc.

62  {
63  std::unique_ptr<fastsim::Particle> particle;
64 
65  // retrieve particle from buffer
66  if (!particleBuffer_.empty()) {
67  particle = std::move(particleBuffer_.back());
68  particleBuffer_.pop_back();
69  }
70  // or from genParticle list
71  else {
72  particle = nextGenParticle();
73  if (!particle)
74  return nullptr;
75  }
76 
77  // if filter does not accept, skip particle
78  if (!particleFilter_->accepts(*particle)) {
79  return nextParticle(random);
80  }
81 
82  // lifetime or charge of particle are not yet set
83  if (!particle->remainingProperLifeTimeIsSet() || !particle->chargeIsSet()) {
84  // retrieve the particle data
85  const HepPDT::ParticleData* particleData = particleDataTable_->particle(HepPDT::ParticleID(particle->pdgId()));
86  if (!particleData) {
87  // in very few events the Decayer (pythia) produces high mass resonances that are for some reason not present in the table (even though they should technically be)
88  // they have short lifetimes, so decay them right away (charge and lifetime cannot be taken from table)
89  particle->setRemainingProperLifeTimeC(0.);
90  particle->setCharge(0.);
91  }
92 
93  // set lifetime
94  if (!particle->remainingProperLifeTimeIsSet()) {
95  // The lifetime is 0. in the Pythia Particle Data Table! Calculate from width instead (ct=hbar/width).
96  // ct=particleData->lifetime().value();
97  double width = particleData->totalWidth().value();
98  if (width > 1.0e-35) {
99  particle->setRemainingProperLifeTimeC(-log(random.flatShoot()) * 6.582119e-25 / width / 10.); // ct in cm
100  } else {
101  particle->setStable();
102  }
103  }
104 
105  // set charge
106  if (!particle->chargeIsSet()) {
107  particle->setCharge(particleData->charge());
108  }
109  }
110 
111  // add corresponding simTrack to simTrack collection
112  unsigned simTrackIndex = addSimTrack(particle.get());
113  particle->setSimTrackIndex(simTrackIndex);
114 
115  // and return
116  return particle;
117 }

References MillePedeFileConverter_cfg::e, RandomEngineAndDistribution::flatShoot(), dqm-mbProfile::log, eostools::move(), LHEGenericFilter_cfi::ParticleID, and ApeEstimator_cff::width.

Member Data Documentation

◆ beamPipeRadius2_

const double fastsim::ParticleManager::beamPipeRadius2_
private

(Radius of the beampipe)^2

Definition at line 129 of file ParticleManager.h.

◆ deltaRchargedMother_

const double fastsim::ParticleManager::deltaRchargedMother_
private

For FastSim (cheat) tracking: cut on the angle between a charged mother and charged daughter.

Definition at line 131 of file ParticleManager.h.

◆ genEvent_

const HepMC::GenEvent* const fastsim::ParticleManager::genEvent_
private

The GenEvent.

Definition at line 122 of file ParticleManager.h.

Referenced by ParticleManager().

◆ genParticleEnd_

const HepMC::GenEvent::particle_const_iterator fastsim::ParticleManager::genParticleEnd_
private

The last particle of the GenEvent.

Definition at line 125 of file ParticleManager.h.

◆ genParticleIndex_

int fastsim::ParticleManager::genParticleIndex_
private

Index of particle in the GenEvent (if it is a GenParticle)

Definition at line 126 of file ParticleManager.h.

◆ genParticleIterator_

HepMC::GenEvent::particle_const_iterator fastsim::ParticleManager::genParticleIterator_
private

Iterator to keep track on which GenParticles where already considered.

Definition at line 124 of file ParticleManager.h.

◆ lengthUnitConversionFactor2_

double fastsim::ParticleManager::lengthUnitConversionFactor2_
private

Convert pythia unis to cm^2 (FastSim standard)

Definition at line 137 of file ParticleManager.h.

◆ lengthUnitConversionFactor_

double fastsim::ParticleManager::lengthUnitConversionFactor_
private

Convert pythia unis to cm (FastSim standard)

Definition at line 136 of file ParticleManager.h.

Referenced by ParticleManager().

◆ momentumUnitConversionFactor_

double fastsim::ParticleManager::momentumUnitConversionFactor_
private

Convert pythia units to GeV (FastSim standard)

Definition at line 135 of file ParticleManager.h.

◆ particleBuffer_

std::vector<std::unique_ptr<Particle> > fastsim::ParticleManager::particleBuffer_
private

The vector of all secondaries that are not yet propagated in the event.

Definition at line 140 of file ParticleManager.h.

◆ particleDataTable_

const HepPDT::ParticleDataTable* const fastsim::ParticleManager::particleDataTable_
private

Necessary to get information like lifetime and charge of a particle if unknown.

Definition at line 128 of file ParticleManager.h.

◆ particleFilter_

const ParticleFilter* const fastsim::ParticleManager::particleFilter_
private

(Kinematic) cuts on the particles that have to be propagated.

Definition at line 132 of file ParticleManager.h.

◆ simTracks_

std::vector<SimTrack>* fastsim::ParticleManager::simTracks_
private

The generated SimTrack of this event.

Definition at line 133 of file ParticleManager.h.

Referenced by getSimTrack().

◆ simVertices_

std::vector<SimVertex>* fastsim::ParticleManager::simVertices_
private

The generated SimVertices of this event.

Definition at line 134 of file ParticleManager.h.

Referenced by getSimVertex().

◆ timeUnitConversionFactor_

double fastsim::ParticleManager::timeUnitConversionFactor_
private

Convert pythia unis to ns (FastSim standard)

Definition at line 138 of file ParticleManager.h.

Referenced by ParticleManager().

fastSimProducer_cff.beamPipeRadius
beamPipeRadius
Definition: fastSimProducer_cff.py:17
fastsim::ParticleFilter::acceptsVtx
bool acceptsVtx(const math::XYZTLorentzVector &originVertexPosition) const
Vertex within tracker volume.
Definition: ParticleFilter.cc:82
ApeEstimator_cff.width
width
Definition: ApeEstimator_cff.py:24
fastsim::Constants::speedOfLight
static constexpr double speedOfLight
Speed of light [cm / ns].
Definition: Constants.h:12
fastsim::ParticleManager::particleBuffer_
std::vector< std::unique_ptr< Particle > > particleBuffer_
The vector of all secondaries that are not yet propagated in the event.
Definition: ParticleManager.h:140
mps_fire.i
i
Definition: mps_fire.py:428
fastsim::ParticleManager::beamPipeRadius2_
const double beamPipeRadius2_
(Radius of the beampipe)^2
Definition: ParticleManager.h:129
TrackCandidateProducer_cfi.simTracks
simTracks
Definition: TrackCandidateProducer_cfi.py:15
fastsim::ParticleManager::addSimVertex
unsigned addSimVertex(const math::XYZTLorentzVector &position, int motherIndex)
Add a simVertex (simVertex contains information about the track it was produced).
Definition: ParticleManager.cc:182
fastsim::ParticleManager::genEvent_
const HepMC::GenEvent *const genEvent_
The GenEvent.
Definition: ParticleManager.h:122
ParticleData
HepPDT::ParticleData ParticleData
Definition: ParticleDataTable.h:9
heavyIonCSV_trainingSettings.idx
idx
Definition: heavyIonCSV_trainingSettings.py:5
fastsim::ParticleManager::genParticleIterator_
HepMC::GenEvent::particle_const_iterator genParticleIterator_
Iterator to keep track on which GenParticles where already considered.
Definition: ParticleManager.h:124
isExotic
bool isExotic(int pdgid_)
Definition: ParticleManager.h:144
fastsim::ParticleManager::timeUnitConversionFactor_
double timeUnitConversionFactor_
Convert pythia unis to ns (FastSim standard)
Definition: ParticleManager.h:138
fastsim::ParticleManager::particleDataTable_
const HepPDT::ParticleDataTable *const particleDataTable_
Necessary to get information like lifetime and charge of a particle if unknown.
Definition: ParticleManager.h:128
fastsim::ParticleManager::lengthUnitConversionFactor2_
double lengthUnitConversionFactor2_
Convert pythia unis to cm^2 (FastSim standard)
Definition: ParticleManager.h:137
fastsim::ParticleManager::momentumUnitConversionFactor_
double momentumUnitConversionFactor_
Convert pythia units to GeV (FastSim standard)
Definition: ParticleManager.h:135
phase1PixelTopology::layer
constexpr std::array< uint8_t, layerIndexSize > layer
Definition: phase1PixelTopology.h:99
fastsim::ParticleFilter::accepts
bool accepts(const Particle &particle) const
Check all if all criteria are fullfilled.
Definition: ParticleFilter.cc:31
fastsim::ParticleManager::exoticRelativesChecker
void exoticRelativesChecker(const HepMC::GenVertex *originVertex, int &hasExoticAssociation, int ngendepth)
Definition: ParticleManager.cc:281
position
static int position[264][3]
Definition: ReadPGInfo.cc:289
fastsim::ParticleManager::particleFilter_
const ParticleFilter *const particleFilter_
(Kinematic) cuts on the particles that have to be propagated.
Definition: ParticleManager.h:132
fastsim::ParticleManager::genParticleEnd_
const HepMC::GenEvent::particle_const_iterator genParticleEnd_
The last particle of the GenEvent.
Definition: ParticleManager.h:125
fastsim::ParticleManager::addSimTrack
unsigned addSimTrack(const Particle *particle)
Add a simTrack (simTrack contains some basic info about the particle, e.g. pdgId).
Definition: ParticleManager.cc:188
RandomEngineAndDistribution::flatShoot
double flatShoot(double xmin=0.0, double xmax=1.0) const
Definition: RandomEngineAndDistribution.h:27
fastsim::ParticleManager::genParticleIndex_
int genParticleIndex_
Index of particle in the GenEvent (if it is a GenParticle)
Definition: ParticleManager.h:126
GenParticle.GenParticle
GenParticle
Definition: GenParticle.py:18
eostools.move
def move(src, dest)
Definition: eostools.py:511
genWeightsTable_cfi.genEvent
genEvent
Definition: genWeightsTable_cfi.py:4
math::XYZTLorentzVector
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
muonTagProbeFilters_cff.distMin
distMin
Definition: muonTagProbeFilters_cff.py:61
fastsim::ParticleManager::lengthUnitConversionFactor_
double lengthUnitConversionFactor_
Convert pythia unis to cm (FastSim standard)
Definition: ParticleManager.h:136
fastsim::ParticleManager::nextGenParticle
std::unique_ptr< Particle > nextGenParticle()
Returns next particle from the GenEvent that has to be propagated.
Definition: ParticleManager.cc:196
Particle
Definition: Particle.py:1
dqm-mbProfile.log
log
Definition: dqm-mbProfile.py:17
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
HGCalValidator_cfi.simVertices
simVertices
Definition: HGCalValidator_cfi.py:57
fastsim::ParticleManager::deltaRchargedMother_
const double deltaRchargedMother_
For FastSim (cheat) tracking: cut on the angle between a charged mother and charged daughter.
Definition: ParticleManager.h:131
fastSimProducer_cff.particleFilter
particleFilter
Definition: fastSimProducer_cff.py:12
LHEGenericFilter_cfi.ParticleID
ParticleID
Definition: LHEGenericFilter_cfi.py:6
fastSimProducer_cff.deltaRchargedMother
deltaRchargedMother
Definition: fastSimProducer_cff.py:18
fastsim::ParticleManager::nextParticle
std::unique_ptr< Particle > nextParticle(const RandomEngineAndDistribution &random)
Returns the next particle that has to be propagated (secondary or genParticle).
Definition: ParticleManager.cc:62
fastsim::ParticleManager::simTracks_
std::vector< SimTrack > * simTracks_
The generated SimTrack of this event.
Definition: ParticleManager.h:133
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
fastsim::ParticleManager::simVertices_
std::vector< SimVertex > * simVertices_
The generated SimVertices of this event.
Definition: ParticleManager.h:134