#include <HelixExtrapolatorToLine2Order.h>
Public Member Functions | |
DirectionType | direction (double s) const override |
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... | |
std::pair< bool, double > | pathLength (const GlobalPoint &point) const override |
std::pair< bool, double > | pathLength (const Line &line) const override |
PositionType | position (double s) const override |
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... | |
~HelixExtrapolatorToLine2Order () override | |
Public Member Functions inherited from HelixLineExtrapolation | |
virtual | ~HelixLineExtrapolation ()=default |
Private Member Functions | |
virtual std::pair< bool, double > | pathLengthFromCoefficients (const double ceq[4]) const |
common part for propagation to point and line More... | |
int | solve2ndOrder (const double ceq[], double sol[]) const |
Solutions of 2nd order equation. More... | |
int | solve3rdOrder (const double ceq[], double sol[]) const |
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, EnergyCorrector::pt, 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.
|
inlineoverride |
Definition at line 32 of file HelixExtrapolatorToLine2Order.h.
References direction(), directionInDouble(), dso_internal, mps_splice::line, pathLength(), pathLengthFromCoefficients(), position(), positionInDouble(), alignCSCRings::s, solve2ndOrder(), and solve3rdOrder().
|
overridevirtual |
Direction at pathlength s from the starting point.
Implements HelixLineExtrapolation.
Definition at line 226 of file HelixExtrapolatorToLine2Order.cc.
References directionInDouble().
Referenced by ~HelixExtrapolatorToLine2Order().
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(), IterativeHelixExtrapolatorToLine::directionInDouble(), and ~HelixExtrapolatorToLine2Order().
|
overridevirtual |
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(), and ~HelixExtrapolatorToLine2Order().
|
overridevirtual |
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, mps_fire::i, oppositeToMomentum, StEvtSolProducer_cfi::solutions, solve3rdOrder(), thePropDir, and theSinTheta.
Referenced by pathLength(), and ~HelixExtrapolatorToLine2Order().
|
overridevirtual |
Position at pathlength s from the starting point.
Implements HelixLineExtrapolation.
Definition at line 205 of file HelixExtrapolatorToLine2Order.cc.
References positionInDouble().
Referenced by pathLength(), and ~HelixExtrapolatorToLine2Order().
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(), IterativeHelixExtrapolatorToLine::positionInDouble(), and ~HelixExtrapolatorToLine2Order().
|
private |
Solutions of 2nd order equation.
Definition at line 172 of file HelixExtrapolatorToLine2Order.cc.
References MillePedeFileConverter_cfg::e, and mathSSE::sqrt().
Referenced by solve3rdOrder(), and ~HelixExtrapolatorToLine2Order().
|
private |
Solutions of 3rd order equation.
Definition at line 126 of file HelixExtrapolatorToLine2Order.cc.
References a, b, funct::cos(), mps_fire::i, M_PI, phi, funct::pow(), lumiQueryAPI::q, alignCSCRings::r, mps_fire::result, solve2ndOrder(), and mathSSE::sqrt().
Referenced by pathLengthFromCoefficients(), and ~HelixExtrapolatorToLine2Order().
|
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().