CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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 GCC11_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) :
29  Propagator(dir), theVolume( &vol), theTolerance( tolerance) {}
30 
32 
35 
36 private:
37  virtual std::pair< TrajectoryStateOnSurface, double>
38  propagateWithPath (const FreeTrajectoryState&, const Plane&) const;
39 
40  virtual std::pair< TrajectoryStateOnSurface, double>
41  propagateWithPath (const FreeTrajectoryState&, const Cylinder&) const;
42 
43 
44 
45 public:
46  virtual Propagator * clone() const;
47 
48  virtual const MagneticField* magneticField() const {return theVolume;}
49 
50 private:
51 
52  typedef std::pair<TrajectoryStateOnSurface,double> TsosWP;
53 
54  const MagVolume* theVolume;
55  double theTolerance;
56 
57  GlobalTrajectoryParameters gtpFromLocal( const Basic3DVector<double>& lpos,
58  const Basic3DVector<double>& lmom,
59  TrackCharge ch, const Surface& surf) const dso_internal;
60 
61  GlobalTrajectoryParameters gtpFromVolumeLocal( const CartesianStateAdaptor& state,
62  TrackCharge charge) const dso_internal;
63 
64  RKLocalFieldProvider fieldProvider() const;
65  RKLocalFieldProvider fieldProvider( const Cylinder& cyl) const dso_internal;
66 
68 
69  Basic3DVector<double> rkPosition( const GlobalPoint& pos) const dso_internal;
70  Basic3DVector<double> rkMomentum( const GlobalVector& mom) const dso_internal;
71  GlobalPoint globalPosition( const Basic3DVector<double>& pos) const dso_internal;
72  GlobalVector globalMomentum( const Basic3DVector<double>& mom) const dso_internal;
73 
74  GlobalParametersWithPath propagateParametersOnPlane( const FreeTrajectoryState& ts,
75  const Plane& plane) const dso_internal;
76  GlobalParametersWithPath propagateParametersOnCylinder( const FreeTrajectoryState& ts,
77  const Cylinder& cyl) const dso_internal;
78 
79 };
80 
81 #endif
std::pair< TrajectoryStateOnSurface, double > TsosWP
GloballyPositioned< float >::GlobalPoint GlobalPoint
Definition: MagVolume.h:20
virtual Propagator * clone() const =0
PropagationDirection
RKPropagatorInS(const MagVolume &vol, PropagationDirection dir=alongMomentum, double tolerance=5.e-5)
Definition: Plane.h:17
int TrackCharge
Definition: TrackCharge.h:4
#define dso_internal
Definition: Visibility.h:13
virtual const MagneticField * magneticField() const
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Surface &) const final
Definition: Propagator.cc:15
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
Definition: Propagator.h:56
GloballyPositioned< float >::GlobalVector GlobalVector
Definition: MagVolume.h:21
double theTolerance
dbl *** dir
Definition: mlp_gen.cc:35
Unlimited (trivial) bounds.