CMS 3D CMS Logo

RKPropagatorInS.h
Go to the documentation of this file.
1 #ifndef RKPropagatorInS_H
2 #define RKPropagatorInS_H
3 
12 
13 
16 class MagVolume;
19 
20 class RKPropagatorInS final : public Propagator {
21 public:
22 
23  // RKPropagatorInS( PropagationDirection dir = alongMomentum) : Propagator(dir), theVolume(0) {}
24  // tolerance (see below) used to be 1.e-5 --> this was observed to cause problems with convergence
25  // when propagating to cylinder with large radius (~10 meter) MM 22/6/07
26 
28  double tolerance = 5.e-5) :
30 
31  ~RKPropagatorInS() override {}
32 
35 
36 private:
37  std::pair< TrajectoryStateOnSurface, double>
38  propagateWithPath (const FreeTrajectoryState&, const Plane&) const override;
39 
40  std::pair< TrajectoryStateOnSurface, double>
41  propagateWithPath (const FreeTrajectoryState&, const Cylinder&) const override;
42 
43 
44 
45 public:
46  Propagator * clone() const override;
47 
48  const MagneticField* magneticField() const override {return theVolume;}
49 
50 private:
51 
52  typedef std::pair<TrajectoryStateOnSurface,double> TsosWP;
53 
55  double theTolerance;
56 
58  const Basic3DVector<float>& lmom,
59  TrackCharge ch, const Surface& surf) const dso_internal;
60 
63 
66 
68 
73 
75  const Plane& plane) const dso_internal;
77  const Cylinder& cyl) const dso_internal;
78 
79 };
80 
81 #endif
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Plane &) const override
GlobalTrajectoryParameters gtpFromVolumeLocal(const CartesianStateAdaptor &state, TrackCharge charge) const
GlobalParametersWithPath propagateParametersOnCylinder(const FreeTrajectoryState &ts, const Cylinder &cyl) const
RKLocalFieldProvider fieldProvider() const
GlobalPoint globalPosition(const Basic3DVector< float > &pos) const
PropagationDirection
Definition: Plane.h:17
int TrackCharge
Definition: TrackCharge.h:4
Basic3DVector< double > rkMomentum(const GlobalVector &mom) const
std::pair< TrajectoryStateOnSurface, double > TsosWP
PropagationDirection invertDirection(PropagationDirection dir) const
GlobalTrajectoryParameters gtpFromLocal(const Basic3DVector< float > &lpos, const Basic3DVector< float > &lmom, TrackCharge ch, const Surface &surf) const
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Surface &) const final
Definition: Propagator.cc:15
const MagVolume * theVolume
GlobalVector globalMomentum(const Basic3DVector< float > &mom) const
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
Definition: Propagator.h:53
#define dso_internal
GlobalParametersWithPath propagateParametersOnPlane(const FreeTrajectoryState &ts, const Plane &plane) const
RKPropagatorInS(const MagVolume &vol, PropagationDirection dir=alongMomentum, double tolerance=5.e-5)
dbl *** dir
Definition: mlp_gen.cc:35
Basic3DVector< double > rkPosition(const GlobalPoint &pos) const
Propagator * clone() const override
const MagneticField * magneticField() const override
~RKPropagatorInS() override