00001 #ifndef RKPropagatorInZ_H 00002 #define RKPropagatorInZ_H 00003 00004 #include "TrackingTools/GeomPropagators/interface/Propagator.h" 00005 #include "MagneticField/VolumeGeometry/interface/MagVolume.h" 00006 00007 class RKPropagatorInZ : public Propagator { 00008 public: 00009 00010 RKPropagatorInZ( const MagVolume& vol, PropagationDirection dir = alongMomentum) : 00011 Propagator(dir), theVolume( &vol) {} 00012 00013 virtual TrajectoryStateOnSurface 00014 propagate (const FreeTrajectoryState&, const Plane&) const; 00015 00016 virtual TrajectoryStateOnSurface 00017 propagate (const FreeTrajectoryState&, const Cylinder&) const; 00018 00019 virtual std::pair< TrajectoryStateOnSurface, double> 00020 propagateWithPath (const FreeTrajectoryState&, const Plane&) const; 00021 00022 virtual std::pair< TrajectoryStateOnSurface, double> 00023 propagateWithPath (const FreeTrajectoryState&, const Cylinder&) const; 00024 00025 virtual Propagator * clone() const; 00026 00027 virtual const MagneticField* magneticField() const {return theVolume;} 00028 00029 private: 00030 00031 const MagVolume* theVolume; 00032 00033 }; 00034 00035 #endif