24 double px = direction.
x();
25 double py = direction.
y();
26 double pz = direction.
z();
27 double pt2 = px*px+py*py;
28 double p2 = pt2+pz*pz;
29 double pI = 1./
sqrt(p2);
30 double ptI = 1./
sqrt(pt2);
40 std::pair<bool,double>
47 double nPx = normalToPlane.
x();
48 double nPy = normalToPlane.
y();
49 double nPz = normalToPlane.
z();
64 double deq1 = ceq2*ceq2;
65 double deq2 = ceq1*ceq3;
70 double deq = deq1+2*deq2;
71 if UNLIKELY( deq<0. )
return std::pair<bool,double>(
false,0);
72 double ceq = ceq2+std::copysign(
std::sqrt(deq),ceq2);
73 dS1 = (ceq/ceq1)*theSinThetaI;
74 dS2 = -2.*(ceq3/ceq)*theSinThetaI;
80 double ceq = (ceq2/ceq1)*theSinThetaI;
81 double deq = deq2/deq1;
91 dS1 = dS2 = -(ceq3/ceq2)*theSinThetaI;
142 std::pair<bool,double>
144 const double dS2)
const {
154 double s1(propSign*dS1);
155 double s2(propSign*dS2);
159 if ( (s1<0) & (s2>=0) ) {
171 return std::pair<bool,double>(valid,
path);
HelixArbitraryPlaneCrossing2Order(const PositionType &point, const DirectionType &direction, const float curvature, const PropagationDirection propDir=alongMomentum)
T y() const
Cartesian y coordinate.
T x() const
Cartesian x coordinate.
DirectionTypeDouble directionInDouble(double s) const
constexpr bool isNotFinite(T x)
GlobalVector normalVector() const
Global3DPoint GlobalPoint
float localZ(const GlobalPoint &gp) const
double smallestPathLength(const double firstPathLength, const double secondPathLength) const
DirectionType direction(double s) const override
Basic3DVector< double > PositionTypeDouble
T curvature(T InversePt, const edm::EventSetup &iSetup)
T z() const
Cartesian z coordinate.
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)
Abs< T >::type abs(const T &t)
PositionTypeDouble positionInDouble(double s) const
PositionType position(double s) const override
std::pair< bool, double > solutionByDirection(const double dS1, const double dS2) const
Basic3DVector< float > PositionType
the helix is passed to the constructor and does not appear in the interface
Basic3DVector< float > DirectionType
Basic3DVector< double > DirectionTypeDouble
const PropagationDirection thePropDir
std::pair< bool, double > pathLength(const Plane &) override
*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