#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 | |
virtual DirectionType | direction (double s) const |
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) | |
virtual std::pair< bool, double > | pathLength (const Plane &) |
virtual PositionType | position (double s) const |
PositionTypeDouble | positionInDouble (double s) const |
double | smallestPathLength (const double firstPathLength, const double secondPathLength) const |
virtual | ~HelixArbitraryPlaneCrossing2Order () |
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 10 of file HelixArbitraryPlaneCrossing2Order.cc.
References p2, 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.
|
inlinevirtual |
Definition at line 34 of file HelixArbitraryPlaneCrossing2Order.h.
|
virtual |
Direction at pathlength s from the starting point.
Implements HelixPlaneCrossing.
Definition at line 122 of file HelixArbitraryPlaneCrossing2Order.cc.
References dir, directionInDouble(), Basic3DVector< T >::x(), Basic3DVector< T >::y(), and Basic3DVector< T >::z().
HelixArbitraryPlaneCrossing2Order::DirectionTypeDouble HelixArbitraryPlaneCrossing2Order::directionInDouble | ( | double | s | ) | const |
Direction at pathlength s from the starting point in double precision.
Definition at line 131 of file HelixArbitraryPlaneCrossing2Order.cc.
References theCosPhi0, theCosTheta, theRho, theSinPhi0, and theSinThetaI.
Referenced by direction(), and HelixArbitraryPlaneCrossing::directionInDouble().
|
virtual |
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 40 of file HelixArbitraryPlaneCrossing2Order.cc.
References funct::abs(), alignCSCRings::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(), and HelixArbitraryPlaneCrossing::pathLength().
|
virtual |
Position at pathlength s from the starting point.
Implements HelixPlaneCrossing.
Definition at line 102 of file HelixArbitraryPlaneCrossing2Order.cc.
References positionInDouble(), Basic3DVector< T >::x(), Basic3DVector< T >::y(), and Basic3DVector< T >::z().
Referenced by PixelForwardLayer::computeCrossings(), and PixelForwardLayerPhase1::computeCrossings().
HelixArbitraryPlaneCrossing2Order::PositionTypeDouble HelixArbitraryPlaneCrossing2Order::positionInDouble | ( | double | s | ) | const |
Position at pathlength s from the starting point in double precision.
Definition at line 111 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.
Referenced by solutionByDirection().
|
private |
Choice of one of two solutions according to the propagation direction.
Definition at line 142 of file HelixArbitraryPlaneCrossing2Order.cc.
References alongMomentum, anyDirection, cmsHarvester::path, indexGen::s2, smallestPathLength(), std::swap(), and thePropDir.
Referenced by pathLength().
|
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().