1 #ifndef HELIXARBITRARYPLANECROSSING2ORDER_H_ 2 #define HELIXARBITRARYPLANECROSSING2ORDER_H_ 23 const double& cosPhi0,
24 const double& sinPhi0,
25 const double& cosTheta,
26 const double& sinTheta,
71 inline double smallestPathLength(
const double firstPathLength,
const double secondPathLength)
const {
72 return fabs(firstPathLength) < fabs(secondPathLength) ? firstPathLength : secondPathLength;
HelixArbitraryPlaneCrossing2Order(const PositionType &point, const DirectionType &direction, const float curvature, const PropagationDirection propDir=alongMomentum)
PositionTypeDouble positionInDouble(double s) const
DirectionTypeDouble directionInDouble(double s) const
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)
DirectionType direction(double s) const override
T curvature(T InversePt, const MagneticField &field)
Basic3DVector< double > PositionTypeDouble
double smallestPathLength(const double firstPathLength, const double secondPathLength) const
Basic3DVector< float > PositionType
the helix is passed to the constructor and does not appear in the interface
Basic3DVector< float > DirectionType
PositionType position(double s) const override
~HelixArbitraryPlaneCrossing2Order() override
Basic3DVector< double > DirectionTypeDouble
const PropagationDirection thePropDir
std::pair< bool, double > pathLength(const Plane &) override
std::pair< bool, double > solutionByDirection(const double dS1, const double dS2) const
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point