#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 9 of file HelixArbitraryPlaneCrossing.h.
typedef Basic3DVector<double> HelixArbitraryPlaneCrossing::DirectionTypeDouble |
Definition at line 37 of file HelixArbitraryPlaneCrossing.h.
typedef Basic3DVector<double> HelixArbitraryPlaneCrossing::PositionTypeDouble |
Definition at line 36 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 8 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 18 of file HelixArbitraryPlaneCrossing.h.
|
virtual |
Direction at pathlength s from the starting point.
Implements HelixPlaneCrossing.
Definition at line 168 of file HelixArbitraryPlaneCrossing.cc.
References dir, directionInDouble(), Basic3DVector< T >::x(), Basic3DVector< T >::y(), and Basic3DVector< T >::z().
HelixArbitraryPlaneCrossing::DirectionTypeDouble HelixArbitraryPlaneCrossing::directionInDouble | ( | double | s | ) | const |
Direction at pathlength s from the starting point.
Definition at line 177 of file HelixArbitraryPlaneCrossing.cc.
References abs, funct::cos(), HelixArbitraryPlaneCrossing2Order::directionInDouble(), asciidump::s, funct::sin(), theCachedCDPhi, theCachedDPhi, theCachedS, theCachedSDPhi, theCosPhi0, theCosTheta, theQuadraticCrossingFromStart, theRho, theSinPhi0, and theSinTheta.
Referenced by direction(), and pathLength().
|
inlineprivate |
Iteration control: check for significant distance to plane.
Definition at line 201 of file HelixArbitraryPlaneCrossing.cc.
References 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 42 of file HelixArbitraryPlaneCrossing.cc.
References alongMomentum, anyDirection, directionInDouble(), first, align_cfg::iteration, Basic3DVector< T >::mag(), notAtSurface(), oppositeToMomentum, HelixArbitraryPlaneCrossing2Order::pathLength(), GloballyPositioned< T >::position(), positionInDouble(), theCosPhi0, theCosTheta, theMaxDistToPlane, theNumericalPrecision, thePropDir, theQuadraticCrossingFromStart, theRho, theSinPhi0, theSinTheta, theX0, theY0, theZ0, Basic3DVector< T >::x(), Basic3DVector< T >::y(), and Basic3DVector< T >::z().
Referenced by PathToPlane2Order::operator()().
|
virtual |
Position at pathlength s from the starting point.
Implements HelixPlaneCrossing.
Definition at line 120 of file HelixArbitraryPlaneCrossing.cc.
References pos, positionInDouble(), Basic3DVector< T >::x(), Basic3DVector< T >::y(), and Basic3DVector< T >::z().
HelixArbitraryPlaneCrossing::PositionTypeDouble HelixArbitraryPlaneCrossing::positionInDouble | ( | double | s | ) | const |
Position at pathlength s from the starting point.
Definition at line 129 of file HelixArbitraryPlaneCrossing.cc.
References abs, funct::cos(), connectstrParser::o, HelixArbitraryPlaneCrossing2Order::positionInDouble(), asciidump::s, funct::sin(), theCachedCDPhi, theCachedDPhi, theCachedS, theCachedSDPhi, theCosPhi0, theCosTheta, theQuadraticCrossingFromStart, theRho, theSinPhi0, theSinTheta, theX0, theY0, and theZ0.
Referenced by pathLength(), and position().
|
mutableprivate |
Definition at line 68 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 65 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), and positionInDouble().
|
mutableprivate |
Definition at line 67 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), and positionInDouble().
|
private |
Definition at line 59 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), HelixArbitraryPlaneCrossing(), pathLength(), and positionInDouble().
|
private |
Definition at line 60 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), HelixArbitraryPlaneCrossing(), pathLength(), and positionInDouble().
|
staticprivate |
Definition at line 71 of file HelixArbitraryPlaneCrossing.h.
Referenced by pathLength().
|
staticprivate |
Definition at line 70 of file HelixArbitraryPlaneCrossing.h.
Referenced by pathLength().
|
private |
Definition at line 63 of file HelixArbitraryPlaneCrossing.h.
Referenced by pathLength().
|
private |
Definition at line 55 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), pathLength(), and positionInDouble().
|
private |
Definition at line 61 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), pathLength(), and positionInDouble().
|
private |
Definition at line 59 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), HelixArbitraryPlaneCrossing(), pathLength(), and positionInDouble().
|
private |
Definition at line 60 of file HelixArbitraryPlaneCrossing.h.
Referenced by directionInDouble(), HelixArbitraryPlaneCrossing(), pathLength(), and positionInDouble().
|
private |
Definition at line 58 of file HelixArbitraryPlaneCrossing.h.
Referenced by pathLength(), and positionInDouble().
|
private |
Definition at line 58 of file HelixArbitraryPlaneCrossing.h.
Referenced by pathLength(), and positionInDouble().
|
private |
Definition at line 58 of file HelixArbitraryPlaneCrossing.h.
Referenced by pathLength(), and positionInDouble().