CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RKPropagatorInS.h
Go to the documentation of this file.
1 #ifndef RKPropagatorInS_H
2 #define RKPropagatorInS_H
3 
12 
15 class MagVolume;
18 
19 class RKPropagatorInS final : public Propagator {
20 public:
21  // RKPropagatorInS( PropagationDirection dir = alongMomentum) : Propagator(dir), theVolume(0) {}
22  // tolerance (see below) used to be 1.e-5 --> this was observed to cause problems with convergence
23  // when propagating to cylinder with large radius (~10 meter) MM 22/6/07
24 
27 
28  ~RKPropagatorInS() override {}
29 
32 
33 private:
34  std::pair<TrajectoryStateOnSurface, double> propagateWithPath(const FreeTrajectoryState&,
35  const Plane&) const override;
36 
37  std::pair<TrajectoryStateOnSurface, double> propagateWithPath(const FreeTrajectoryState&,
38  const Cylinder&) const override;
39 
40 public:
41  Propagator* clone() const override;
42 
43  const MagneticField* magneticField() const override { return theVolume; }
44 
45 private:
46  typedef std::pair<TrajectoryStateOnSurface, double> TsosWP;
47 
49  double theTolerance;
50 
52  const Basic3DVector<float>& lmom,
53  TrackCharge ch,
54  const Surface& surf) const dso_internal;
55 
58 
61 
63 
68 
70  const Plane& plane) const dso_internal;
72  const Cylinder& cyl) const dso_internal;
73 };
74 
75 #endif
GlobalTrajectoryParameters gtpFromVolumeLocal(const CartesianStateAdaptor &state, TrackCharge charge) const
const double tolerance
Propagator * clone() const override
GlobalParametersWithPath propagateParametersOnCylinder(const FreeTrajectoryState &ts, const Cylinder &cyl) const
RKLocalFieldProvider fieldProvider() const
GlobalPoint globalPosition(const Basic3DVector< float > &pos) const
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Plane &) const override
PropagationDirection
Definition: Plane.h:16
int TrackCharge
Definition: TrackCharge.h:4
Basic3DVector< double > rkMomentum(const GlobalVector &mom) const
PropagationDirection invertDirection(PropagationDirection dir) const
GlobalTrajectoryParameters gtpFromLocal(const Basic3DVector< float > &lpos, const Basic3DVector< float > &lmom, TrackCharge ch, const Surface &surf) const
#define dso_internal
Definition: Visibility.h:13
const MagVolume * theVolume
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Surface &) const final
Definition: Propagator.cc:10
const MagneticField * magneticField() const override
GlobalVector globalMomentum(const Basic3DVector< float > &mom) const
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
Definition: Propagator.h:50
std::pair< TrajectoryStateOnSurface, double > TsosWP
GlobalParametersWithPath propagateParametersOnPlane(const FreeTrajectoryState &ts, const Plane &plane) const
RKPropagatorInS(const MagVolume &vol, PropagationDirection dir=alongMomentum, double tolerance=5.e-5)
Basic3DVector< double > rkPosition(const GlobalPoint &pos) const
~RKPropagatorInS() override