#include <HelixExtrapolatorToLine2Order.h>
Public Member Functions | |
virtual DirectionType | direction (double s) const |
Direction at pathlength s from the starting point. More... | |
DirectionTypeDouble | directionInDouble (double s) const |
Direction at pathlength s from the starting point in double precision. More... | |
HelixExtrapolatorToLine2Order (const PositionType &point, const DirectionType &direction, const float curvature, const PropagationDirection propDir=alongMomentum) | |
Constructor using point, direction and (transverse!) curvature. More... | |
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). More... | |
virtual std::pair< bool, double > | pathLength (const GlobalPoint &point) const |
virtual std::pair< bool, double > | pathLength (const Line &line) const |
virtual PositionType | position (double s) const |
Position at pathlength s from the starting point. More... | |
PositionTypeDouble | positionInDouble (double s) const |
Position at pathlength s from the starting point in double precision. More... | |
virtual | ~HelixExtrapolatorToLine2Order () |
Private Member Functions | |
virtual std::pair< bool, double > | pathLengthFromCoefficients (const double ceq[4]) const dso_internal |
common part for propagation to point and line More... | |
int | solve2ndOrder (const double ceq[], double sol[]) const dso_internal |
Solutions of 2nd order equation. More... | |
int | solve3rdOrder (const double ceq[], double sol[]) const dso_internal |
Solutions of 3rd order equation. More... | |
Private Attributes | |
DirectionTypeDouble | theDirection |
const PositionTypeDouble | thePosition |
const PropagationDirection | thePropDir |
const double | theRho |
double | theSinTheta |
Additional Inherited Members | |
Public Types inherited from HelixLineExtrapolation | |
typedef Basic3DVector< float > | DirectionType |
typedef Basic3DVector< double > | DirectionTypeDouble |
typedef Basic3DVector< float > | PositionType |
typedef Basic3DVector< double > | PositionTypeDouble |
Calculates intersections of a helix with planes of any orientation using a parabolic approximation.
Definition at line 11 of file HelixExtrapolatorToLine2Order.h.
HelixExtrapolatorToLine2Order::HelixExtrapolatorToLine2Order | ( | const PositionType & | point, |
const DirectionType & | direction, | ||
const float | curvature, | ||
const PropagationDirection | propDir = alongMomentum |
||
) |
Constructor using point, direction and (transverse!) curvature.
Definition at line 7 of file HelixExtrapolatorToLine2Order.cc.
References AlCaHLTBitMon_ParallelJobs::p, mathSSE::sqrt(), theDirection, theSinTheta, Basic3DVector< T >::x(), Basic3DVector< T >::y(), and Basic3DVector< T >::z().
|
inline |
Fast constructor (for use by IterativeHelixExtrapolatorToLine).
Definition at line 20 of file HelixExtrapolatorToLine2Order.h.
|
inlinevirtual |
Definition at line 32 of file HelixExtrapolatorToLine2Order.h.
|
virtual |
Direction at pathlength s from the starting point.
Implements HelixLineExtrapolation.
Definition at line 226 of file HelixExtrapolatorToLine2Order.cc.
References directionInDouble().
HelixExtrapolatorToLine2Order::DirectionTypeDouble HelixExtrapolatorToLine2Order::directionInDouble | ( | double | s | ) | const |
Direction at pathlength s from the starting point in double precision.
Definition at line 236 of file HelixExtrapolatorToLine2Order.cc.
References theDirection, theRho, theSinTheta, Basic3DVector< T >::x(), Basic3DVector< T >::y(), and Basic3DVector< T >::z().
Referenced by direction(), and IterativeHelixExtrapolatorToLine::directionInDouble().
|
virtual |
Propagation status (true if valid) and (signed) path length along the helix from the starting point to the closest approach to the point. The starting point is given in the constructor.
Implements HelixLineExtrapolation.
Definition at line 32 of file HelixExtrapolatorToLine2Order.cc.
References Basic3DVector< T >::dot(), Basic3DVector< T >::mag2(), pathLengthFromCoefficients(), position(), theDirection, thePosition, theRho, Basic3DVector< T >::x(), and Basic3DVector< T >::y().
Referenced by IterativeHelixExtrapolatorToLine::genericPathLength().
|
virtual |
Propagation status (true if valid) and (signed) path length along the helix from the starting point to the closest approach to the line. The starting point is given in the constructor.
Implements HelixLineExtrapolation.
Definition at line 56 of file HelixExtrapolatorToLine2Order.cc.
References Line::direction(), Basic3DVector< T >::dot(), pathLengthFromCoefficients(), Line::position(), theDirection, thePosition, theRho, Basic3DVector< T >::x(), and Basic3DVector< T >::y().
|
privatevirtual |
common part for propagation to point and line
Definition at line 86 of file HelixExtrapolatorToLine2Order.cc.
References alongMomentum, anyDirection, i, oppositeToMomentum, StEvtSolProducer_cfi::solutions, solve3rdOrder(), thePropDir, and theSinTheta.
Referenced by pathLength().
|
virtual |
Position at pathlength s from the starting point.
Implements HelixLineExtrapolation.
Definition at line 205 of file HelixExtrapolatorToLine2Order.cc.
References positionInDouble().
Referenced by pathLength().
HelixExtrapolatorToLine2Order::PositionTypeDouble HelixExtrapolatorToLine2Order::positionInDouble | ( | double | s | ) | const |
Position at pathlength s from the starting point in double precision.
Definition at line 215 of file HelixExtrapolatorToLine2Order.cc.
References theDirection, thePosition, theRho, theSinTheta, Basic3DVector< T >::x(), Basic3DVector< T >::y(), and Basic3DVector< T >::z().
Referenced by position(), and IterativeHelixExtrapolatorToLine::positionInDouble().
|
private |
Solutions of 2nd order equation.
Definition at line 172 of file HelixExtrapolatorToLine2Order.cc.
References alignCSCRings::e, and mathSSE::sqrt().
Referenced by solve3rdOrder().
|
private |
Solutions of 3rd order equation.
Definition at line 126 of file HelixExtrapolatorToLine2Order.cc.
References a, b, funct::cos(), i, M_PI, phi, funct::pow(), lumiQueryAPI::q, alignCSCRings::r, query::result, solve2ndOrder(), and mathSSE::sqrt().
Referenced by pathLengthFromCoefficients().
|
private |
Definition at line 68 of file HelixExtrapolatorToLine2Order.h.
Referenced by directionInDouble(), HelixExtrapolatorToLine2Order(), pathLength(), and positionInDouble().
|
private |
Definition at line 67 of file HelixExtrapolatorToLine2Order.h.
Referenced by pathLength(), and positionInDouble().
|
private |
Definition at line 71 of file HelixExtrapolatorToLine2Order.h.
Referenced by pathLengthFromCoefficients().
|
private |
Definition at line 70 of file HelixExtrapolatorToLine2Order.h.
Referenced by directionInDouble(), pathLength(), and positionInDouble().
|
private |
Definition at line 69 of file HelixExtrapolatorToLine2Order.h.
Referenced by directionInDouble(), HelixExtrapolatorToLine2Order(), pathLengthFromCoefficients(), and positionInDouble().