CMS 3D CMS Logo

StraightLinePropagator.h
Go to the documentation of this file.
1 #ifndef TR_StraightLine_Propagator_H_
2 #define TR_StraightLine_Propagator_H_
3 
7 
8 class MagneticField;
9 
10 
17 class StraightLinePropagator final : public Propagator {
18 
19 private:
20 
23 
24 public:
25 
28  Propagator(aDir), theField(field) {}
29 
31 
34 
35 
36  std::pair<TSOS,double> propagateWithPath(const FreeTrajectoryState& fts,
37  const Plane& surface) const override;
38 
39  std::pair<TSOS,double> propagateWithPath(const FreeTrajectoryState& fts,
40  const Cylinder& surface) const override;
41 
42  StraightLinePropagator * clone() const override{
43  return new StraightLinePropagator(*this);
44  }
45 
46 
47  const MagneticField* magneticField() const override {return theField;}
48 
49 private:
50 
52 
53  // compute propagated state, with errors if needed
55  const Surface& surface,
57  const GlobalPoint& x,
58  const GlobalVector& p) const;
59 
61  const Surface& surface,
63  const LocalPoint& x,
64  const LocalVector& p) const;
65 
66 
67  // compute jacobian of transform
68  AlgebraicMatrix55 jacobian(double& s) const;
69 
70  // compute propagated x and p and path s, return true when propagation is OK
72  const Cylinder& cylinder,
73  GlobalPoint& x,
74  GlobalVector& p,
75  double& s) const;
76 
77  // compute propagated x and p and path s, return true when propagation is OK
79  const Plane& plane,
80  LocalPoint& x,
81  LocalVector& p,
82  double& s) const;
83 
84 };
85 
86 #endif
bool propagateParametersOnCylinder(const FreeTrajectoryState &fts, const Cylinder &cylinder, GlobalPoint &x, GlobalVector &p, double &s) const
PropagationDirection
std::pair< TSOS, double > propagateWithPath(const FreeTrajectoryState &fts, const Plane &surface) const override
Definition: Plane.h:17
TrajectoryStateOnSurface propagatedState(const FreeTrajectoryState &fts, const Surface &surface, const AlgebraicMatrix55 &jacobian, const GlobalPoint &x, const GlobalVector &p) const
const MagneticField * theField
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Surface &) const final
Definition: Propagator.cc:15
StraightLinePropagator * clone() const override
AlgebraicMatrix55 jacobian(double &s) const
TrajectoryStateOnSurface TSOS
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
Definition: Propagator.h:53
const MagneticField * magneticField() const override
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepStd< double, 5, 5 > > AlgebraicMatrix55
StraightLinePropagator(const MagneticField *field, PropagationDirection aDir=alongMomentum)
bool propagateParametersOnPlane(const FreeTrajectoryState &fts, const Plane &plane, LocalPoint &x, LocalVector &p, double &s) const