Go to the documentation of this file.00001 #ifndef TrackPropagation_Geant4ePropagator_h
00002 #define TrackPropagation_Geant4ePropagator_h
00003
00004
00005
00006
00007 #include "TrackingTools/GeomPropagators/interface/Propagator.h"
00008
00009
00010 #include "G4ErrorPropagatorManager.hh"
00011
00012
00013
00014 class Geant4eSteppingAction;
00015
00021 class Geant4ePropagator: public Propagator {
00022
00023 public:
00029 Geant4ePropagator(const MagneticField* field = 0,
00030 const char* particleName = "mu",
00031 PropagationDirection dir = alongMomentum);
00032
00033 virtual ~Geant4ePropagator();
00034
00035
00040 virtual TrajectoryStateOnSurface
00041 propagate (const FreeTrajectoryState& ftsStart, const Plane& pDest) const;
00042
00043 virtual TrajectoryStateOnSurface
00044 propagate (const FreeTrajectoryState& ftsStart, const Cylinder& cDest) const;
00045
00049 virtual TrajectoryStateOnSurface
00050 propagate (const TrajectoryStateOnSurface& tsos, const Plane& plane) const;
00051
00052 virtual TrajectoryStateOnSurface
00053 propagate (const TrajectoryStateOnSurface& tsos, const Cylinder& cyl) const;
00054
00061 virtual std::pair< TrajectoryStateOnSurface, double>
00062 propagateWithPath (const FreeTrajectoryState&, const Plane&) const;
00063
00064 virtual std::pair< TrajectoryStateOnSurface, double>
00065 propagateWithPath (const FreeTrajectoryState&, const Cylinder&) const;
00066
00067
00068 virtual std::pair< TrajectoryStateOnSurface, double>
00069 propagateWithPath (const TrajectoryStateOnSurface&, const Plane&) const;
00070
00071 virtual std::pair< TrajectoryStateOnSurface, double>
00072 propagateWithPath (const TrajectoryStateOnSurface&, const Cylinder&) const;
00073
00074
00075 virtual Geant4ePropagator* clone() const {return new Geant4ePropagator(*this);}
00076
00077 virtual const MagneticField* magneticField() const {return theField;}
00078
00079
00080
00081 protected:
00082
00083 typedef std::pair<TrajectoryStateOnSurface, double> TsosPP;
00084
00085
00086
00087 const MagneticField* theField;
00088
00089
00090 std::string theParticleName;
00091
00092
00093 G4ErrorPropagatorManager* theG4eManager;
00094
00095
00096 mutable Geant4eSteppingAction* theSteppingAction;
00097
00098 };
00099
00100
00101 #endif