#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 | |
virtual DirectionType | direction (double s) const |
DirectionTypeDouble | directionInDouble (double s) const |
HelixArbitraryPlaneCrossing (const PositionType &point, const DirectionType &direction, const float curvature, const PropagationDirection propDir=alongMomentum) | |
virtual std::pair< bool, double > | pathLength (const Plane &plane) |
virtual PositionType | position (double s) const |
PositionTypeDouble | positionInDouble (double s) const |
virtual | ~HelixArbitraryPlaneCrossing () |
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 33 of file HelixArbitraryPlaneCrossing.cc.
References p2, mathSSE::sqrt(), theCosPhi0, theCosTheta, theSinPhi0, theSinTheta, Basic3DVector< T >::x(), Basic3DVector< T >::y(), and Basic3DVector< T >::z().
|
inlinevirtual |
Definition at line 19 of file HelixArbitraryPlaneCrossing.h.
|
virtual |
Direction at pathlength s from the starting point.
Implements HelixPlaneCrossing.
Definition at line 200 of file HelixArbitraryPlaneCrossing.cc.
References 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 209 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 232 of file HelixArbitraryPlaneCrossing.cc.
References funct::abs(), Plane::localZ(), insertMaterial::maxDist, Basic3DVector< T >::x(), Basic3DVector< T >::y(), and Basic3DVector< T >::z().
Referenced by pathLength().
|
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 67 of file HelixArbitraryPlaneCrossing.cc.
References funct::abs(), alongMomentum, anyDirection, constexpr, directionInDouble(), 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()().
|
virtual |
Position at pathlength s from the starting point.
Implements HelixPlaneCrossing.
Definition at line 153 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 162 of file HelixArbitraryPlaneCrossing.cc.
References funct::abs(), alignCSCRings::e, connectstrParser::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 69 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), and positionInDouble().
|
mutableprivate |
Definition at line 67 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), and positionInDouble().
|
mutableprivate |
Definition at line 66 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), and positionInDouble().
|
mutableprivate |
Definition at line 68 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), and positionInDouble().
|
private |
Definition at line 60 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), HelixArbitraryPlaneCrossing(), and positionInDouble().
|
private |
Definition at line 61 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), HelixArbitraryPlaneCrossing(), pathLength(), and positionInDouble().
|
staticprivate |
Definition at line 72 of file HelixArbitraryPlaneCrossing.h.
Referenced by pathLength().
|
staticprivate |
Definition at line 71 of file HelixArbitraryPlaneCrossing.h.
Referenced by pathLength().
|
private |
Definition at line 64 of file HelixArbitraryPlaneCrossing.h.
Referenced by pathLength().
|
private |
Definition at line 56 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), pathLength(), and positionInDouble().
|
private |
Definition at line 62 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), pathLength(), and positionInDouble().
|
private |
Definition at line 60 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), HelixArbitraryPlaneCrossing(), and positionInDouble().
|
private |
Definition at line 61 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), HelixArbitraryPlaneCrossing(), pathLength(), and positionInDouble().
|
private |
Definition at line 59 of file HelixArbitraryPlaneCrossing.h.
Referenced by pathLength(), and positionInDouble().
|
private |
Definition at line 59 of file HelixArbitraryPlaneCrossing.h.
Referenced by pathLength(), and positionInDouble().
|
private |
Definition at line 59 of file HelixArbitraryPlaneCrossing.h.
Referenced by pathLength(), and positionInDouble().