#include <HelixArbitraryPlaneCrossing.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 |
HelixArbitraryPlaneCrossing (const PositionType &point, const DirectionType &direction, const float curvature, const PropagationDirection propDir=alongMomentum) | |
std::pair< bool, double > | pathLength (const Plane &plane) override |
PositionType | position (double s) const override |
PositionTypeDouble | positionInDouble (double s) const |
~HelixArbitraryPlaneCrossing () override | |
Public Member Functions inherited from HelixPlaneCrossing | |
virtual | ~HelixPlaneCrossing ()=default |
Private Member Functions | |
bool | notAtSurface (const Plane &, const PositionTypeDouble &, const float) const |
Private Attributes | |
double | theCachedCDPhi |
double | theCachedDPhi |
double | theCachedS |
double | theCachedSDPhi |
double | theCosPhi0 |
double | theCosTheta |
const PropagationDirection | thePropDir |
HelixArbitraryPlaneCrossing2Order | theQuadraticCrossingFromStart |
const double | theRho |
double | theSinPhi0 |
double | theSinTheta |
const double | theX0 |
const double | theY0 |
const double | theZ0 |
Static Private Attributes | |
static const float | theMaxDistToPlane = 1.e-4f |
static const float | theNumericalPrecision = 5.e-7f |
Calculates intersections of a helix with planes of any orientation.
Definition at line 10 of file HelixArbitraryPlaneCrossing.h.
typedef Basic3DVector<double> HelixArbitraryPlaneCrossing::DirectionTypeDouble |
Definition at line 38 of file HelixArbitraryPlaneCrossing.h.
typedef Basic3DVector<double> HelixArbitraryPlaneCrossing::PositionTypeDouble |
Definition at line 37 of file HelixArbitraryPlaneCrossing.h.
HelixArbitraryPlaneCrossing::HelixArbitraryPlaneCrossing | ( | const PositionType & | point, |
const DirectionType & | direction, | ||
const float | curvature, | ||
const PropagationDirection | propDir = alongMomentum |
||
) |
Constructor using point, direction and (transverse!) curvature.
Definition at line 32 of file HelixArbitraryPlaneCrossing.cc.
References fireworks::p2, mathSSE::sqrt(), theCosPhi0, theCosTheta, theSinPhi0, theSinTheta, Basic3DVector< T >::x(), Basic3DVector< T >::y(), and Basic3DVector< T >::z().
|
inlineoverride |
Definition at line 19 of file HelixArbitraryPlaneCrossing.h.
|
overridevirtual |
Direction at pathlength s from the starting point.
Implements HelixPlaneCrossing.
Definition at line 193 of file HelixArbitraryPlaneCrossing.cc.
References DeadROC_duringRun::dir, directionInDouble(), Basic3DVector< T >::x(), Basic3DVector< T >::y(), and Basic3DVector< T >::z().
Referenced by PixelForwardLayer::computeCrossings(), and PixelForwardLayerPhase1::computeCrossings().
HelixArbitraryPlaneCrossing::DirectionTypeDouble HelixArbitraryPlaneCrossing::directionInDouble | ( | double | s | ) | const |
Direction at pathlength s from the starting point.
Definition at line 201 of file HelixArbitraryPlaneCrossing.cc.
References funct::abs(), HelixArbitraryPlaneCrossing2Order::directionInDouble(), alignCSCRings::e, alignCSCRings::s, theCachedCDPhi, theCachedDPhi, theCachedS, theCachedSDPhi, theCosPhi0, theCosTheta, theQuadraticCrossingFromStart, theRho, theSinPhi0, theSinTheta, and UNLIKELY.
Referenced by direction(), and pathLength().
|
inlineprivate |
Iteration control: check for significant distance to plane.
Definition at line 223 of file HelixArbitraryPlaneCrossing.cc.
References funct::abs(), PVValHelper::dz, Plane::localZ(), Basic3DVector< T >::x(), Basic3DVector< T >::y(), and Basic3DVector< T >::z().
Referenced by pathLength().
|
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 64 of file HelixArbitraryPlaneCrossing.cc.
References funct::abs(), alongMomentum, anyDirection, directionInDouble(), PVValHelper::dz, align_cfg::iteration, Plane::localZ(), LogDebug, Basic3DVector< T >::mag(), maxiter, notAtSurface(), oppositeToMomentum, HelixArbitraryPlaneCrossing2Order::pathLength(), GloballyPositioned< T >::position(), positionInDouble(), theCosTheta, theMaxDistToPlane, theNumericalPrecision, thePropDir, theQuadraticCrossingFromStart, theRho, theSinTheta, theX0, theY0, theZ0, and UNLIKELY.
Referenced by PixelForwardLayer::computeCrossings(), PixelForwardLayerPhase1::computeCrossings(), and PathToPlane2Order::operator()().
|
overridevirtual |
Position at pathlength s from the starting point.
Implements HelixPlaneCrossing.
Definition at line 148 of file HelixArbitraryPlaneCrossing.cc.
References positionInDouble(), Basic3DVector< T >::x(), Basic3DVector< T >::y(), and Basic3DVector< T >::z().
Referenced by PixelForwardLayer::computeCrossings(), and PixelForwardLayerPhase1::computeCrossings().
HelixArbitraryPlaneCrossing::PositionTypeDouble HelixArbitraryPlaneCrossing::positionInDouble | ( | double | s | ) | const |
Position at pathlength s from the starting point.
Definition at line 156 of file HelixArbitraryPlaneCrossing.cc.
References funct::abs(), alignCSCRings::e, class-composition::o, HelixArbitraryPlaneCrossing2Order::positionInDouble(), alignCSCRings::s, theCachedCDPhi, theCachedDPhi, theCachedS, theCachedSDPhi, theCosPhi0, theCosTheta, theQuadraticCrossingFromStart, theRho, theSinPhi0, theSinTheta, theX0, theY0, theZ0, and UNLIKELY.
Referenced by pathLength(), and position().
|
mutableprivate |
Definition at line 66 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), and positionInDouble().
|
mutableprivate |
Definition at line 64 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), and positionInDouble().
|
mutableprivate |
Definition at line 63 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), and positionInDouble().
|
mutableprivate |
Definition at line 65 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), and positionInDouble().
|
private |
Definition at line 57 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), HelixArbitraryPlaneCrossing(), and positionInDouble().
|
private |
Definition at line 58 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), HelixArbitraryPlaneCrossing(), pathLength(), and positionInDouble().
|
staticprivate |
Definition at line 69 of file HelixArbitraryPlaneCrossing.h.
Referenced by pathLength().
|
staticprivate |
Definition at line 68 of file HelixArbitraryPlaneCrossing.h.
Referenced by pathLength().
|
private |
Definition at line 61 of file HelixArbitraryPlaneCrossing.h.
Referenced by pathLength().
|
private |
Definition at line 54 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), pathLength(), and positionInDouble().
|
private |
Definition at line 59 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), pathLength(), and positionInDouble().
|
private |
Definition at line 57 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), HelixArbitraryPlaneCrossing(), and positionInDouble().
|
private |
Definition at line 58 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), HelixArbitraryPlaneCrossing(), pathLength(), and positionInDouble().
|
private |
Definition at line 56 of file HelixArbitraryPlaneCrossing.h.
Referenced by pathLength(), and positionInDouble().
|
private |
Definition at line 56 of file HelixArbitraryPlaneCrossing.h.
Referenced by pathLength(), and positionInDouble().
|
private |
Definition at line 56 of file HelixArbitraryPlaneCrossing.h.
Referenced by pathLength(), and positionInDouble().