#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 59 of file HelixArbitraryPlaneCrossing2Order.h.
typedef Basic3DVector<double> HelixArbitraryPlaneCrossing2Order::PositionTypeDouble |
Definition at line 58 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 direction(), SiStripOfflineCRack_cfg::p2, HLT_2023v12_cff::pt2, multPhiCorr_741_25nsDY_cfi::px, multPhiCorr_741_25nsDY_cfi::py, 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 20 of file HelixArbitraryPlaneCrossing2Order.h.
|
inlineoverride |
Definition at line 40 of file HelixArbitraryPlaneCrossing2Order.h.
|
overridevirtual |
Direction at pathlength s from the starting point.
Implements HelixPlaneCrossing.
Definition at line 114 of file HelixArbitraryPlaneCrossing2Order.cc.
References DeadROC_duringRun::dir, directionInDouble(), and alignCSCRings::s.
Referenced by HelixArbitraryPlaneCrossing2Order().
HelixArbitraryPlaneCrossing2Order::DirectionTypeDouble HelixArbitraryPlaneCrossing2Order::directionInDouble | ( | double | s | ) | const |
Direction at pathlength s from the starting point in double precision.
Definition at line 122 of file HelixArbitraryPlaneCrossing2Order.cc.
References alignCSCRings::s, 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 35 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(), and HelixArbitraryPlaneCrossing::pathLength().
|
overridevirtual |
Position at pathlength s from the starting point.
Implements HelixPlaneCrossing.
Definition at line 95 of file HelixArbitraryPlaneCrossing2Order.cc.
References positionInDouble(), and alignCSCRings::s.
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 103 of file HelixArbitraryPlaneCrossing2Order.cc.
References alignCSCRings::s, theCosPhi0, theCosTheta, theRho, theSinPhi0, theSinThetaI, theX0, theY0, and theZ0.
Referenced by position(), and HelixArbitraryPlaneCrossing::positionInDouble().
|
inline |
Pathlength to closest solution.
Definition at line 71 of file HelixArbitraryPlaneCrossing2Order.h.
Referenced by solutionByDirection().
|
private |
Choice of one of two solutions according to the propagation direction.
Definition at line 133 of file HelixArbitraryPlaneCrossing2Order.cc.
References alongMomentum, anyDirection, edm::isNotFinite(), castor_dqm_sourceclient_file_cfg::path, smallestPathLength(), std::swap(), thePropDir, and validateGeometry_cfg::valid.
Referenced by pathLength().
|
private |
Definition at line 82 of file HelixArbitraryPlaneCrossing2Order.h.
Referenced by directionInDouble(), HelixArbitraryPlaneCrossing2Order(), pathLength(), and positionInDouble().
|
private |
Definition at line 83 of file HelixArbitraryPlaneCrossing2Order.h.
Referenced by directionInDouble(), HelixArbitraryPlaneCrossing2Order(), pathLength(), and positionInDouble().
|
private |
Definition at line 85 of file HelixArbitraryPlaneCrossing2Order.h.
Referenced by solutionByDirection().
|
private |
Definition at line 84 of file HelixArbitraryPlaneCrossing2Order.h.
Referenced by directionInDouble(), pathLength(), and positionInDouble().
|
private |
Definition at line 82 of file HelixArbitraryPlaneCrossing2Order.h.
Referenced by directionInDouble(), HelixArbitraryPlaneCrossing2Order(), pathLength(), and positionInDouble().
|
private |
Definition at line 83 of file HelixArbitraryPlaneCrossing2Order.h.
Referenced by directionInDouble(), HelixArbitraryPlaneCrossing2Order(), pathLength(), and positionInDouble().
|
private |
Definition at line 81 of file HelixArbitraryPlaneCrossing2Order.h.
Referenced by pathLength(), and positionInDouble().
|
private |
Definition at line 81 of file HelixArbitraryPlaneCrossing2Order.h.
Referenced by pathLength(), and positionInDouble().
|
private |
Definition at line 81 of file HelixArbitraryPlaneCrossing2Order.h.
Referenced by pathLength(), and positionInDouble().