#include <HelixArbitraryPlaneCrossing2Order.h>
Public Types | |
typedef Basic3DVector< double > | DirectionTypeDouble |
typedef Basic3DVector< double > | PositionTypeDouble |
Public Types inherited from HelixPlaneCrossing | |
typedef Basic3DVector< float > | DirectionType |
typedef Basic3DVector< float > | PositionType |
the helix is passed to the constructor and does not appear in the interface More... | |
Public Member Functions | |
DirectionType | direction (double s) const override |
DirectionTypeDouble | directionInDouble (double s) const |
HelixArbitraryPlaneCrossing2Order (const PositionType &point, const DirectionType &direction, const float curvature, const PropagationDirection propDir=alongMomentum) | |
HelixArbitraryPlaneCrossing2Order (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) | |
std::pair< bool, double > | pathLength (const Plane &) override |
PositionType | position (double s) const override |
PositionTypeDouble | positionInDouble (double s) const |
double | smallestPathLength (const double firstPathLength, const double secondPathLength) const |
~HelixArbitraryPlaneCrossing2Order () override | |
Public Member Functions inherited from HelixPlaneCrossing | |
virtual | ~HelixPlaneCrossing ()=default |
Private Member Functions | |
std::pair< bool, double > | solutionByDirection (const double dS1, const double dS2) const |
Private Attributes | |
double | theCosPhi0 |
double | theCosTheta |
const PropagationDirection | thePropDir |
const double | theRho |
double | theSinPhi0 |
double | theSinThetaI |
const double | theX0 |
const double | theY0 |
const double | theZ0 |
Calculates intersections of a helix with planes of any orientation using a parabolic approximation.
Definition at line 10 of file HelixArbitraryPlaneCrossing2Order.h.
typedef Basic3DVector<double> HelixArbitraryPlaneCrossing2Order::DirectionTypeDouble |
Definition at line 53 of file HelixArbitraryPlaneCrossing2Order.h.
typedef Basic3DVector<double> HelixArbitraryPlaneCrossing2Order::PositionTypeDouble |
Definition at line 52 of file HelixArbitraryPlaneCrossing2Order.h.
HelixArbitraryPlaneCrossing2Order::HelixArbitraryPlaneCrossing2Order | ( | const PositionType & | point, |
const DirectionType & | direction, | ||
const float | curvature, | ||
const PropagationDirection | propDir = alongMomentum |
||
) |
Constructor using point, direction and (transverse!) curvature.
Definition at line 11 of file HelixArbitraryPlaneCrossing2Order.cc.
References p2, hiDetachedQuadStep_cff::pt2, mathSSE::sqrt(), theCosPhi0, theCosTheta, theSinPhi0, theSinThetaI, Basic3DVector< T >::x(), Basic3DVector< T >::y(), and Basic3DVector< T >::z().
|
inline |
Fast constructor (for use by HelixArbitraryPlaneCrossing).
Definition at line 22 of file HelixArbitraryPlaneCrossing2Order.h.
|
inlineoverride |
Definition at line 34 of file HelixArbitraryPlaneCrossing2Order.h.
References direction(), pathLength(), position(), and alignCSCRings::s.
|
overridevirtual |
Direction at pathlength s from the starting point.
Implements HelixPlaneCrossing.
Definition at line 123 of file HelixArbitraryPlaneCrossing2Order.cc.
References dir, directionInDouble(), Basic3DVector< T >::x(), Basic3DVector< T >::y(), and Basic3DVector< T >::z().
Referenced by ~HelixArbitraryPlaneCrossing2Order().
HelixArbitraryPlaneCrossing2Order::DirectionTypeDouble HelixArbitraryPlaneCrossing2Order::directionInDouble | ( | double | s | ) | const |
Direction at pathlength s from the starting point in double precision.
Definition at line 132 of file HelixArbitraryPlaneCrossing2Order.cc.
References theCosPhi0, theCosTheta, theRho, theSinPhi0, and theSinThetaI.
Referenced by direction(), and HelixArbitraryPlaneCrossing::directionInDouble().
|
overridevirtual |
Propagation status (true if valid) and (signed) path length along the helix from the starting point to the plane. The starting point is given in the constructor.
Implements HelixPlaneCrossing.
Definition at line 41 of file HelixArbitraryPlaneCrossing2Order.cc.
References funct::abs(), MillePedeFileConverter_cfg::e, LIKELY, Plane::localZ(), Plane::normalVector(), solutionByDirection(), mathSSE::sqrt(), theCosPhi0, theCosTheta, theRho, theSinPhi0, theSinThetaI, theX0, theY0, theZ0, UNLIKELY, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
Referenced by PixelForwardLayer::computeCrossings(), PixelForwardLayerPhase1::computeCrossings(), HelixArbitraryPlaneCrossing::pathLength(), and ~HelixArbitraryPlaneCrossing2Order().
|
overridevirtual |
Position at pathlength s from the starting point.
Implements HelixPlaneCrossing.
Definition at line 103 of file HelixArbitraryPlaneCrossing2Order.cc.
References positionInDouble(), Basic3DVector< T >::x(), Basic3DVector< T >::y(), and Basic3DVector< T >::z().
Referenced by PixelForwardLayer::computeCrossings(), PixelForwardLayerPhase1::computeCrossings(), and ~HelixArbitraryPlaneCrossing2Order().
HelixArbitraryPlaneCrossing2Order::PositionTypeDouble HelixArbitraryPlaneCrossing2Order::positionInDouble | ( | double | s | ) | const |
Position at pathlength s from the starting point in double precision.
Definition at line 112 of file HelixArbitraryPlaneCrossing2Order.cc.
References theCosPhi0, theCosTheta, theRho, theSinPhi0, theSinThetaI, theX0, theY0, and theZ0.
Referenced by position(), and HelixArbitraryPlaneCrossing::positionInDouble().
|
inline |
Pathlength to closest solution.
Definition at line 65 of file HelixArbitraryPlaneCrossing2Order.h.
References dso_internal, and solutionByDirection().
Referenced by solutionByDirection().
|
private |
Choice of one of two solutions according to the propagation direction.
Definition at line 143 of file HelixArbitraryPlaneCrossing2Order.cc.
References alongMomentum, anyDirection, edm::isNotFinite(), callgraph::path, indexGen::s2, smallestPathLength(), std::swap(), and thePropDir.
Referenced by pathLength(), and smallestPathLength().
|
private |
Definition at line 78 of file HelixArbitraryPlaneCrossing2Order.h.
Referenced by directionInDouble(), HelixArbitraryPlaneCrossing2Order(), pathLength(), and positionInDouble().
|
private |
Definition at line 79 of file HelixArbitraryPlaneCrossing2Order.h.
Referenced by directionInDouble(), HelixArbitraryPlaneCrossing2Order(), pathLength(), and positionInDouble().
|
private |
Definition at line 81 of file HelixArbitraryPlaneCrossing2Order.h.
Referenced by solutionByDirection().
|
private |
Definition at line 80 of file HelixArbitraryPlaneCrossing2Order.h.
Referenced by directionInDouble(), pathLength(), and positionInDouble().
|
private |
Definition at line 78 of file HelixArbitraryPlaneCrossing2Order.h.
Referenced by directionInDouble(), HelixArbitraryPlaneCrossing2Order(), pathLength(), and positionInDouble().
|
private |
Definition at line 79 of file HelixArbitraryPlaneCrossing2Order.h.
Referenced by directionInDouble(), HelixArbitraryPlaneCrossing2Order(), pathLength(), and positionInDouble().
|
private |
Definition at line 77 of file HelixArbitraryPlaneCrossing2Order.h.
Referenced by pathLength(), and positionInDouble().
|
private |
Definition at line 77 of file HelixArbitraryPlaneCrossing2Order.h.
Referenced by pathLength(), and positionInDouble().
|
private |
Definition at line 77 of file HelixArbitraryPlaneCrossing2Order.h.
Referenced by pathLength(), and positionInDouble().