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 
37  propagate (const FreeTrajectoryState&, const Plane&) const;
38 
40  propagate (const FreeTrajectoryState&, const Cylinder&) const;
41 
42  virtual std::pair< TrajectoryStateOnSurface, double>
43  propagateWithPath (const FreeTrajectoryState&, const Plane&) const;
44 
45  virtual std::pair< TrajectoryStateOnSurface, double>
46  propagateWithPath (const FreeTrajectoryState&, const Cylinder&) const;
47 
49  const Plane& plane) const {
50  return propagateWithPath( *ts.freeState(),plane).first;
51  }
52 
53 
54 
55  virtual Propagator * clone() const;
56 
57  virtual const MagneticField* magneticField() const {return theVolume;}
58 
59 private:
60 
61  typedef std::pair<TrajectoryStateOnSurface,double> TsosWP;
62 
63  const MagVolume* theVolume;
64  double theTolerance;
65 
66  GlobalTrajectoryParameters gtpFromLocal( const Basic3DVector<double>& lpos,
67  const Basic3DVector<double>& lmom,
68  TrackCharge ch, const Surface& surf) const dso_internal;
69 
70  GlobalTrajectoryParameters gtpFromVolumeLocal( const CartesianStateAdaptor& state,
72 
73  RKLocalFieldProvider fieldProvider() const;
74  RKLocalFieldProvider fieldProvider( const Cylinder& cyl) const dso_internal;
75 
77 
78  Basic3DVector<double> rkPosition( const GlobalPoint& pos) const dso_internal;
79  Basic3DVector<double> rkMomentum( const GlobalVector& mom) const dso_internal;
80  GlobalPoint globalPosition( const Basic3DVector<double>& pos) const dso_internal;
81  GlobalVector globalMomentum( const Basic3DVector<double>& mom) const dso_internal;
82 
83  GlobalParametersWithPath propagateParametersOnPlane( const FreeTrajectoryState& ts,
84  const Plane& plane) const dso_internal;
85  GlobalParametersWithPath propagateParametersOnCylinder( const FreeTrajectoryState& ts,
86  const Cylinder& cyl) const dso_internal;
87 
88 };
89 
90 #endif
std::pair< TrajectoryStateOnSurface, double > TsosWP
GloballyPositioned< float >::GlobalPoint GlobalPoint
Definition: MagVolume.h:20
virtual Propagator * clone() const =0
PropagationDirection
TrajectoryStateOnSurface propagate(const TrajectoryStateOnSurface &ts, const Plane &plane) const
RKPropagatorInS(const MagVolume &vol, PropagationDirection dir=alongMomentum, double tolerance=5.e-5)
double charge(const std::vector< uint8_t > &Ampls)
Definition: Plane.h:17
int TrackCharge
Definition: TrackCharge.h:4
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Surface &) const
Definition: Propagator.cc:77
FreeTrajectoryState const * freeState(bool withErrors=true) const
#define dso_internal
Definition: Visibility.h:13
virtual const MagneticField * magneticField() const
bool first
Definition: L1TdeRCT.cc:79
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
Definition: Propagator.cc:12
GloballyPositioned< float >::GlobalVector GlobalVector
Definition: MagVolume.h:21
double theTolerance
dbl *** dir
Definition: mlp_gen.cc:35
Unlimited (trivial) bounds.