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();
63 double deq1 = ceq2*ceq2;
64 double deq2 = ceq1*ceq3;
69 double deq = deq1+2*deq2;
70 if unlikely( deq<0. )
return std::pair<bool,double>(
false,0);
71 double ceq = ceq2+std::copysign(
std::sqrt(deq),ceq2);
72 dS1 = (ceq/ceq1)*theSinThetaI;
73 dS2 = -2.*(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);
158 if ( (s1<0) & (s2>=0) ) {
169 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
double smallestPathLength(const double firstPathLength, const double secondPathLength) const
Basic3DVector< double > PositionTypeDouble
T x() const
Cartesian x coordinate.
T curvature(T InversePt, const edm::EventSetup &iSetup)
tuple path
else: Piece not in the list, fine.
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
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