Go to the documentation of this file.00001
00002 #ifndef PARTICLEPROPAGATOR_H
00003 #define PARTICLEPROPAGATOR_H
00004
00019
00020 #include "FastSimulation/BaseParticlePropagator/interface/BaseParticlePropagator.h"
00021
00022 class TrackerLayer;
00023 class FSimTrack;
00024 class RandomEngine;
00025 class MagneticFieldMap;
00026
00027 class ParticlePropagator : public BaseParticlePropagator {
00028
00029 public:
00031 ParticlePropagator();
00032
00036 ParticlePropagator(const RawParticle& myPart,
00037 double R, double Z,
00038 const MagneticFieldMap* aFieldMap,
00039 const RandomEngine* engine);
00040
00043 ParticlePropagator(const RawParticle& myPart,
00044 const MagneticFieldMap* aFieldMap,
00045 const RandomEngine* engine);
00046
00049 ParticlePropagator(const XYZTLorentzVector& p,
00050 const XYZTLorentzVector& v,
00051 float q,
00052 const MagneticFieldMap* aFieldMap);
00053
00056 ParticlePropagator(const XYZTLorentzVector& p,
00057 const XYZVector& v, float q,
00058 const MagneticFieldMap* aFieldMap);
00059
00061 ParticlePropagator(const FSimTrack& simTrack,
00062 const MagneticFieldMap* aFieldMap,
00063 const RandomEngine* engine);
00064
00066 ParticlePropagator(const ParticlePropagator& myPropPart);
00067
00068 ParticlePropagator(const BaseParticlePropagator &myPropPart,
00069 const MagneticFieldMap* aFieldMap);
00070
00072 void initProperDecayTime();
00073
00076 ParticlePropagator propagated() const;
00077
00082 bool propagateToClosestApproach(double x0=0., double y0=0., bool first=true);
00083 bool propagateToNominalVertex(const XYZTLorentzVector& hit2=
00084 XYZTLorentzVector(0.,0.,0.,0.));
00085
00087 double fieldMap(double x,double y,double z);
00088 double fieldMap(const TrackerLayer& layer, double coord, int success);
00089
00090 bool propagateToBoundSurface(const TrackerLayer&);
00091 void setPropagationConditions(const TrackerLayer&,
00092 bool firstLoop=true);
00093
00094 private:
00095
00096 const MagneticFieldMap* theFieldMap;
00097 const RandomEngine* random;
00098
00099 };
00100
00101 #endif