CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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 public:
32 
36  ParticlePropagator(const RawParticle& myPart,
37  double R,
38  double Z,
39  const MagneticFieldMap* aFieldMap,
40  const RandomEngineAndDistribution* engine,
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,
62  float q,
63  const MagneticFieldMap* aFieldMap,
64  const HepPDT::ParticleDataTable* table);
65 
68  const MagneticFieldMap* aFieldMap,
69  const RandomEngineAndDistribution* engine,
70  const HepPDT::ParticleDataTable* table);
71 
73  ParticlePropagator(const ParticlePropagator& myPropPart);
74  // ParticlePropagator(BaseParticlePropagator myPropPart);
76  const MagneticFieldMap* aFieldMap,
77  const HepPDT::ParticleDataTable* table);
78 
80  void initProperDecayTime();
81 
85 
90  bool propagateToClosestApproach(double x0 = 0., double y0 = 0., bool first = true);
91  bool propagateToNominalVertex(const XYZTLorentzVector& hit2 = 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 
98  void setPropagationConditions(const TrackerLayer&, bool firstLoop = true);
99 
101 
102 private:
106 };
107 
108 #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)
constexpr std::array< uint8_t, layerIndexSize > layer
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:26
const RandomEngineAndDistribution * random
math::XYZTLorentzVector XYZTLorentzVector
Definition: RawParticle.h:25