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 
11 
12 
15 class MagVolume;
18 
19 class RKPropagatorInS : public Propagator {
20 public:
21 
22  // RKPropagatorInS( PropagationDirection dir = alongMomentum) : Propagator(dir), theVolume(0) {}
23  // tolerance (see below) used to be 1.e-5 --> this was observed to cause problems with convergence
24  // when propagating to cylinder with large radius (~10 meter) MM 22/6/07
25 
27  double tolerance = 5.e-5) :
28  Propagator(dir), theVolume( &vol), theTolerance( tolerance) {}
29 
31 
34 
36  propagate (const FreeTrajectoryState&, const Plane&) const;
37 
39  propagate (const FreeTrajectoryState&, const Cylinder&) const;
40 
41  virtual std::pair< TrajectoryStateOnSurface, double>
42  propagateWithPath (const FreeTrajectoryState&, const Plane&) const;
43 
44  virtual std::pair< TrajectoryStateOnSurface, double>
45  propagateWithPath (const FreeTrajectoryState&, const Cylinder&) const;
46 
48  const Plane& plane) const {
49  return propagateWithPath( *ts.freeState(),plane).first;
50  }
51 
52 
53 
54  virtual Propagator * clone() const;
55 
56  virtual const MagneticField* magneticField() const {return theVolume;}
57 
58 private:
59 
60  typedef std::pair<TrajectoryStateOnSurface,double> TsosWP;
61 
63  double theTolerance;
64 
66  const Basic3DVector<double>& lmom,
67  TrackCharge ch, const Surface& surf) const;
69  TrackCharge charge) const;
70 
72  RKLocalFieldProvider fieldProvider( const Cylinder& cyl) const;
73 
75 
80 
82  const Plane& plane) const;
84  const Cylinder& cyl) const;
85 
86 };
87 
88 #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:74
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
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Plane &) const
const MagVolume * theVolume
bool first
Definition: L1TdeRCT.cc:79
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
Definition: Propagator.cc:9
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