Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:31:43

0001 #ifndef RKPropagatorInZ_H
0002 #define RKPropagatorInZ_H
0003 
0004 #include "TrackingTools/GeomPropagators/interface/Propagator.h"
0005 #include "MagneticField/VolumeGeometry/interface/MagVolume.h"
0006 
0007 class RKPropagatorInZ final : public Propagator {
0008 public:
0009   RKPropagatorInZ(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