23 double px = direction.
x();
24 double py = direction.
y();
25 double pz = direction.
z();
26 double pt2 = px*px+py*py;
27 double p2 = pt2+pz*pz;
28 double pI = 1./
sqrt(p2);
29 double ptI = 1./
sqrt(pt2);
39 std::pair<bool,double>
46 double nPx = normalToPlane.
x();
47 double nPy = normalToPlane.
y();
48 double nPz = normalToPlane.
z();
62 if likely( fabs(ceq1)>FLT_MIN ) {
63 double deq1 = ceq2*ceq2;
64 double deq2 = ceq1*ceq3;
65 if ( fabs(deq1)<FLT_MIN || fabs(deq2/deq1)>1.
e-6 ) {
69 double deq = deq1+2*deq2;
70 if likely( deq<0. )
return std::pair<bool,double>(
false,0);
71 double ceq = -0.5*(ceq2+(ceq2>0?1:-1)*
sqrt(deq));
72 dS1 = -2*(ceq/ceq1)*theSinThetaI;
73 dS2 = (ceq3/ceq)*theSinThetaI;
79 double ceq = (ceq2/ceq1)*theSinThetaI;
80 double deq = deq2/deq1;
90 dS1 = dS2 = -(ceq3/ceq2)*theSinThetaI;
141 std::pair<bool,double>
143 const double dS2)
const {
153 double s1(propSign*dS1);
154 double s2(propSign*dS2);
162 if ( s1<0 && s2>=0 ) {
173 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
GlobalVector normalVector() const
Global3DPoint GlobalPoint
virtual std::pair< bool, double > pathLength(const Plane &)
float localZ(const GlobalPoint &gp) const
Fast access to distance from plane for a point.
double smallestPathLength(const double firstPathLength, const double secondPathLength) const
Basic3DVector< double > PositionTypeDouble
T curvature(T InversePt, const edm::EventSetup &iSetup)
T z() const
Cartesian z coordinate.
PositionTypeDouble positionInDouble(double s) const
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
virtual PositionType position(double s) const
const PropagationDirection thePropDir
virtual DirectionType direction(double s) 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