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 
20  HelixExtrapolatorToLine2Order(const double& x0, const double& y0, const double& z0,
21  const double& cosPhi0, const double& sinPhi0,
22  const double& cosTheta, const double& sinTheta,
23  const double& rho,
24  const PropagationDirection propDir = alongMomentum) :
25  thePosition(x0,y0,z0),
26  theDirection(cosPhi0,sinPhi0,cosTheta/sinTheta),
27  theSinTheta(sinTheta),
28  theRho(rho),
29  thePropDir(propDir) {}
30 
31  // destructor
33 
38  std::pair<bool,double> pathLength (const GlobalPoint& point) const override;
39 
44  std::pair<bool,double> pathLength (const Line& line) const override;
45 
47  PositionType position(double s) const override;
48 
50  DirectionType direction(double s) const override;
51 
53  PositionTypeDouble positionInDouble(double s) const;
54 
56  DirectionTypeDouble directionInDouble(double s) const;
57 
58 private:
60  virtual std::pair<bool,double> pathLengthFromCoefficients (const double ceq[4]) const dso_internal;
62  int solve3rdOrder (const double ceq[], double sol[]) const dso_internal;
64  int solve2ndOrder (const double ceq[], double sol[]) const dso_internal;
65 
66 private:
69  double theSinTheta;
70  const double theRho;
72 };
73 
74 #endif
75 
76 
HelixExtrapolatorToLine2Order(const PositionType &point, const DirectionType &direction, const float curvature, const PropagationDirection propDir=alongMomentum)
Constructor using point, direction and (transverse!) curvature.
PositionTypeDouble positionInDouble(double s) const
Position at pathlength s from the starting point in double precision.
Definition: Line.h:10
DirectionType direction(double s) const override
Direction at pathlength s from the starting point.
int solve3rdOrder(const double ceq[], double sol[]) const
Solutions of 3rd order equation.
PropagationDirection
PositionType position(double s) const override
Position at pathlength s from the starting point.
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).
T curvature(T InversePt, const edm::EventSetup &iSetup)
int solve2ndOrder(const double ceq[], double sol[]) const
Solutions of 2nd order equation.
std::pair< bool, double > pathLength(const GlobalPoint &point) const override
virtual std::pair< bool, double > pathLengthFromCoefficients(const double ceq[4]) const
common part for propagation to point and line
DirectionTypeDouble directionInDouble(double s) const
Direction at pathlength s from the starting point in double precision.
#define dso_internal
*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