File indexing completed on 2024-04-06 12:31:43
0001 #ifndef RKPropagatorInR_H
0002 #define RKPropagatorInR_H
0003
0004 #include "TrackingTools/GeomPropagators/interface/Propagator.h"
0005 #include "MagneticField/VolumeGeometry/interface/MagVolume.h"
0006
0007 class RKPropagatorInR final : public Propagator {
0008 public:
0009 RKPropagatorInR(const MagVolume& vol, PropagationDirection dir = alongMomentum) : Propagator(dir), theVolume(&vol) {}
0010
0011 TrajectoryStateOnSurface myPropagate(const FreeTrajectoryState&, const Plane&) const;
0012
0013 TrajectoryStateOnSurface myPropagate(const FreeTrajectoryState&, const Cylinder&) const;
0014
0015 std::pair<TrajectoryStateOnSurface, double> propagateWithPath(const FreeTrajectoryState&,
0016 const Plane&) const override;
0017
0018 std::pair<TrajectoryStateOnSurface, double> propagateWithPath(const FreeTrajectoryState&,
0019 const Cylinder&) const override;
0020
0021 Propagator* clone() const override;
0022
0023 const MagneticField* magneticField() const override { return theVolume; }
0024
0025 private:
0026 const MagVolume* theVolume;
0027 };
0028
0029 #endif