CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HelixExtrapolatorToLine2Order.h
Go to the documentation of this file.
1 #ifndef HelixExtrapolatorToLine2Order_h_
2 #define HelixExtrapolatorToLine2Order_h_
3 
6 
11 public:
14  const DirectionType& direction,
15  const float curvature,
16  const PropagationDirection propDir = alongMomentum);
17 
19  HelixExtrapolatorToLine2Order(const double& x0, const double& y0, const double& z0,
20  const double& cosPhi0, const double& sinPhi0,
21  const double& cosTheta, const double& sinTheta,
22  const double& rho,
23  const PropagationDirection propDir = alongMomentum) :
24  thePosition(x0,y0,z0),
25  theDirection(cosPhi0,sinPhi0,cosTheta/sinTheta),
26  theSinTheta(sinTheta),
27  theRho(rho),
28  thePropDir(propDir) {}
29 
30  // destructor
32 
37  virtual std::pair<bool,double> pathLength (const GlobalPoint& point) const;
38 
43  virtual std::pair<bool,double> pathLength (const Line& line) const;
44 
46  virtual PositionType position(double s) const;
47 
49  virtual DirectionType direction(double s) const;
50 
53 
56 
57 private:
59  virtual std::pair<bool,double> pathLengthFromCoefficients (const double ceq[4]) const;
61  int solve3rdOrder (const double ceq[], double sol[]) const;
63  int solve2ndOrder (const double ceq[], double sol[]) const;
64 
65 private:
68  double theSinTheta;
69  const double theRho;
71 };
72 
73 #endif
74 
75 
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.
virtual DirectionType direction(double s) const
Direction at pathlength s from the starting point.
Definition: Line.h:10
Basic3DVector< double > PositionTypeDouble
Definition: DDAxes.h:10
int solve3rdOrder(const double ceq[], double sol[]) const
Solutions of 3rd order equation.
PropagationDirection
Basic3DVector< double > DirectionTypeDouble
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).
T curvature(T InversePt, const edm::EventSetup &iSetup)
Basic3DVector< float > PositionType
int solve2ndOrder(const double ceq[], double sol[]) const
Solutions of 2nd order equation.
virtual PositionType position(double s) const
Position at pathlength s from the starting point.
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.
string s
Definition: asciidump.py:422
*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
virtual std::pair< bool, double > pathLength(const GlobalPoint &point) const