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 : 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 
64  double theTolerance;
65 
67  const Basic3DVector<double>& lmom,
68  TrackCharge ch, const Surface& surf) const dso_internal;
69 
72 
75 
77 
82 
84  const Plane& plane) const dso_internal;
86  const Cylinder& cyl) const dso_internal;
87 
88 };
89 
90 #endif
virtual Propagator * clone() const
GlobalTrajectoryParameters gtpFromVolumeLocal(const CartesianStateAdaptor &state, TrackCharge charge) const
GlobalTrajectoryParameters gtpFromLocal(const Basic3DVector< double > &lpos, const Basic3DVector< double > &lmom, TrackCharge ch, const Surface &surf) const
GlobalParametersWithPath propagateParametersOnCylinder(const FreeTrajectoryState &ts, const Cylinder &cyl) const
RKLocalFieldProvider fieldProvider() const
TrajectoryStateOnSurface propagate(const TrajectoryStateOnSurface &ts, const Plane &plane) const
PropagationDirection
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
Basic3DVector< double > rkMomentum(const GlobalVector &mom) const
std::pair< TrajectoryStateOnSurface, double > TsosWP
FreeTrajectoryState * freeState(bool withErrors=true) const
PropagationDirection invertDirection(PropagationDirection dir) const
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Plane &) const
#define dso_internal
Definition: Visibility.h:13
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Plane &) const
const MagVolume * theVolume
bool first
Definition: L1TdeRCT.cc:94
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
Definition: Propagator.cc:12
char state
Definition: procUtils.cc:75
GlobalPoint globalPosition(const Basic3DVector< double > &pos) const
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
GlobalVector globalMomentum(const Basic3DVector< double > &mom) const
Basic3DVector< double > rkPosition(const GlobalPoint &pos) const
virtual const MagneticField * magneticField() const