CMS 3D CMS Logo

HelixExtrapolatorToLine2Order.h
Go to the documentation of this file.
1 #ifndef HelixExtrapolatorToLine2Order_h_
2 #define HelixExtrapolatorToLine2Order_h_
3 
7 
12 public:
15  const DirectionType& direction,
16  const float curvature,
17  const PropagationDirection propDir = alongMomentum);
18 
21  const double& y0,
22  const double& z0,
23  const double& cosPhi0,
24  const double& sinPhi0,
25  const double& cosTheta,
26  const double& sinTheta,
27  const double& rho,
28  const PropagationDirection propDir = alongMomentum)
29  : thePosition(x0, y0, z0),
30  theDirection(cosPhi0, sinPhi0, cosTheta / sinTheta),
31  theSinTheta(sinTheta),
32  theRho(rho),
33  thePropDir(propDir) {}
34 
35  // destructor
37 
42  std::pair<bool, double> pathLength(const GlobalPoint& point) const override;
43 
48  std::pair<bool, double> pathLength(const Line& line) const override;
49 
51  PositionType position(double s) const override;
52 
54  DirectionType direction(double s) const override;
55 
58 
61 
62 private:
64  virtual std::pair<bool, double> pathLengthFromCoefficients(const double ceq[4]) const dso_internal;
66  int solve3rdOrder(const double ceq[], double sol[]) const dso_internal;
68  int solve2ndOrder(const double ceq[], double sol[]) const dso_internal;
69 
70 private:
73  double theSinTheta;
74  const double theRho;
76 };
77 
78 #endif
HelixExtrapolatorToLine2Order(const PositionType &point, const DirectionType &direction, const float curvature, const PropagationDirection propDir=alongMomentum)
Constructor using point, direction and (transverse!) curvature.
Definition: Line.h:10
Basic3DVector< double > PositionTypeDouble
virtual std::pair< bool, double > pathLengthFromCoefficients(const double ceq[4]) const
common part for propagation to point and line
PositionType position(double s) const override
Position at pathlength s from the starting point.
DirectionTypeDouble directionInDouble(double s) const
Direction at pathlength s from the starting point in double precision.
PropagationDirection
Basic3DVector< double > DirectionTypeDouble
int solve2ndOrder(const double ceq[], double sol[]) const
Solutions of 2nd order equation.
T curvature(T InversePt, const MagneticField &field)
Basic3DVector< float > DirectionType
HelixExtrapolatorToLine2Order(const double &x0, const double &y0, const double &z0, const double &cosPhi0, const double &sinPhi0, const double &cosTheta, const double &sinTheta, const double &rho, const PropagationDirection propDir=alongMomentum)
Fast constructor (for use by IterativeHelixExtrapolatorToLine).
Basic3DVector< float > PositionType
int solve3rdOrder(const double ceq[], double sol[]) const
Solutions of 3rd order equation.
#define dso_internal
Definition: Visibility.h:13
constexpr float sol
Definition: Config.h:13
DirectionType direction(double s) const override
Direction at pathlength s from the starting point.
std::pair< bool, double > pathLength(const GlobalPoint &point) const override
PositionTypeDouble positionInDouble(double s) const
Position at pathlength s from the starting point in double precision.
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Definition: invegas.h:5