CMS 3D CMS Logo

ParticlePropagator.h
Go to the documentation of this file.
1 /*Emacs: -*- C++ -*- */
2 #ifndef PARTICLEPROPAGATOR_H
3 #define PARTICLEPROPAGATOR_H
4 
19 // FAMOS Headers
22 
23 class TrackerLayer;
24 class FSimTrack;
26 class MagneticFieldMap;
27 
29 
30 public:
33 
37  ParticlePropagator(const RawParticle& myPart,
38  double R, double Z,
39  const MagneticFieldMap* aFieldMap,
40  const RandomEngineAndDistribution* engine,
41  const HepPDT::ParticleDataTable* table);
42 
45  ParticlePropagator(const RawParticle& myPart,
46  const MagneticFieldMap* aFieldMap,
47  const RandomEngineAndDistribution* engine,
48  const HepPDT::ParticleDataTable* table);
49 
53  const XYZTLorentzVector& v,
54  float q,
55  const MagneticFieldMap* aFieldMap,
56  const HepPDT::ParticleDataTable* table);
57 
61  const XYZVector& v, float q,
62  const MagneticFieldMap* aFieldMap,
63  const HepPDT::ParticleDataTable* table);
64 
67  const MagneticFieldMap* aFieldMap,
68  const RandomEngineAndDistribution* engine,
69  const HepPDT::ParticleDataTable* table);
70 
72  ParticlePropagator(const ParticlePropagator& myPropPart);
73  // ParticlePropagator(BaseParticlePropagator myPropPart);
75  const MagneticFieldMap* aFieldMap,
76  const HepPDT::ParticleDataTable* table);
77 
79  void initProperDecayTime();
80 
84 
89  bool propagateToClosestApproach(double x0=0., double y0=0., bool first=true);
91  XYZTLorentzVector(0.,0.,0.,0.));
92 
94  double fieldMap(double x,double y,double z);
95  double fieldMap(const TrackerLayer& layer, double coord, int success);
96 
99  bool firstLoop=true);
100 
102 private:
103 
107 
108 };
109 
110 #endif
const MagneticFieldMap * theFieldMap
const HepPDT::ParticleDataTable * particleDataTable() const
ParticlePropagator()
Default c'tor.
HepPDT::ParticleDataTable ParticleDataTable
bool propagateToClosestApproach(double x0=0., double y0=0., bool first=true)
bool firstLoop
Do only the first half-loop.
int success
0:propagation still be done, 1:reached 'barrel', 2:reached 'endcaps'
bool propagateToBoundSurface(const TrackerLayer &)
double fieldMap(double x, double y, double z)
const HepPDT::ParticleDataTable * theTable
void setPropagationConditions(const TrackerLayer &, bool firstLoop=true)
ParticlePropagator propagated() const
bool propagateToNominalVertex(const XYZTLorentzVector &hit2=XYZTLorentzVector(0., 0., 0., 0.))
math::XYZVector XYZVector
Definition: RawParticle.h:28
const RandomEngineAndDistribution * random
math::XYZTLorentzVector XYZTLorentzVector
Definition: RawParticle.h:27