#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 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... | |
HelixExtrapolatorToLine2Order (const PositionType &point, const DirectionType &direction, const float curvature, const PropagationDirection propDir=alongMomentum) | |
Constructor using point, direction and (transverse!) curvature. 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 direction(), AlCaHLTBitMon_ParallelJobs::p, DiDispStaMuonMonitor_cfi::pt, multPhiCorr_741_25nsDY_cfi::px, multPhiCorr_741_25nsDY_cfi::py, 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 36 of file HelixExtrapolatorToLine2Order.h.
|
overridevirtual |
Direction at pathlength s from the starting point.
Implements HelixLineExtrapolation.
Definition at line 208 of file HelixExtrapolatorToLine2Order.cc.
References directionInDouble(), and alignCSCRings::s.
Referenced by HelixExtrapolatorToLine2Order().
HelixExtrapolatorToLine2Order::DirectionTypeDouble HelixExtrapolatorToLine2Order::directionInDouble | ( | double | s | ) | const |
Direction at pathlength s from the starting point in double precision.
Definition at line 217 of file HelixExtrapolatorToLine2Order.cc.
References alignCSCRings::s, theDirection, theRho, theSinTheta, Basic3DVector< T >::x(), Basic3DVector< T >::y(), and Basic3DVector< T >::z().
Referenced by direction(), and IterativeHelixExtrapolatorToLine::directionInDouble().
|
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 28 of file HelixExtrapolatorToLine2Order.cc.
References Basic3DVector< T >::dot(), Basic3DVector< T >::mag2(), pathLengthFromCoefficients(), point, position(), theDirection, thePosition, theRho, Basic3DVector< T >::x(), and Basic3DVector< T >::y().
Referenced by IterativeHelixExtrapolatorToLine::genericPathLength().
|
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 49 of file HelixExtrapolatorToLine2Order.cc.
References Basic3DVector< T >::dot(), mps_splice::line, pathLengthFromCoefficients(), theDirection, thePosition, theRho, Basic3DVector< T >::x(), and Basic3DVector< T >::y().
|
privatevirtual |
common part for propagation to point and line
Definition at line 76 of file HelixExtrapolatorToLine2Order.cc.
References alongMomentum, anyDirection, mps_fire::i, metDiagnosticParameterSet_cfi::nMin, oppositeToMomentum, StEvtSolProducer_cfi::solutions, solve3rdOrder(), thePropDir, and theSinTheta.
Referenced by pathLength().
|
overridevirtual |
Position at pathlength s from the starting point.
Implements HelixLineExtrapolation.
Definition at line 189 of file HelixExtrapolatorToLine2Order.cc.
References positionInDouble(), and alignCSCRings::s.
Referenced by pathLength().
HelixExtrapolatorToLine2Order::PositionTypeDouble HelixExtrapolatorToLine2Order::positionInDouble | ( | double | s | ) | const |
Position at pathlength s from the starting point in double precision.
Definition at line 198 of file HelixExtrapolatorToLine2Order.cc.
References alignCSCRings::s, 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 159 of file HelixExtrapolatorToLine2Order.cc.
References MillePedeFileConverter_cfg::e, StEvtSolProducer_cfi::solutions, and mathSSE::sqrt().
Referenced by solve3rdOrder().
|
private |
Solutions of 3rd order equation.
Definition at line 117 of file HelixExtrapolatorToLine2Order.cc.
References a, b, funct::cos(), mps_fire::i, M_PI, phi, funct::pow(), data-class-funcs::q, alignCSCRings::r, mps_fire::result, StEvtSolProducer_cfi::solutions, solve2ndOrder(), and mathSSE::sqrt().
Referenced by pathLengthFromCoefficients().
|
private |
Definition at line 72 of file HelixExtrapolatorToLine2Order.h.
Referenced by directionInDouble(), HelixExtrapolatorToLine2Order(), pathLength(), and positionInDouble().
|
private |
Definition at line 71 of file HelixExtrapolatorToLine2Order.h.
Referenced by pathLength(), and positionInDouble().
|
private |
Definition at line 75 of file HelixExtrapolatorToLine2Order.h.
Referenced by pathLengthFromCoefficients().
|
private |
Definition at line 74 of file HelixExtrapolatorToLine2Order.h.
Referenced by directionInDouble(), pathLength(), and positionInDouble().
|
private |
Definition at line 73 of file HelixExtrapolatorToLine2Order.h.
Referenced by directionInDouble(), HelixExtrapolatorToLine2Order(), pathLengthFromCoefficients(), and positionInDouble().