CMS 3D CMS Logo

HelixArbitraryPlaneCrossing2Order.h
Go to the documentation of this file.
1 #ifndef HELIXARBITRARYPLANECROSSING2ORDER_H_
2 #define HELIXARBITRARYPLANECROSSING2ORDER_H_
6 
11 public:
15  const DirectionType& direction,
16  const float curvature,
17  const PropagationDirection propDir = alongMomentum);
21  const double& y0,
22  const double& z0,
23  const double& cosPhi0,
24  const double& sinPhi0,
25  const double& cosTheta,
26  const double& sinTheta,
27  const double& rho,
28  const PropagationDirection propDir = alongMomentum)
29  : theX0(x0),
30  theY0(y0),
31  theZ0(z0),
32  theCosPhi0(cosPhi0),
33  theSinPhi0(sinPhi0),
34  theCosTheta(cosTheta),
35  theSinThetaI(1. / sinTheta),
36  theRho(rho),
37  thePropDir(propDir) {}
38 
39  // destructor
41 
46  std::pair<bool, double> pathLength(const Plane&) override;
47 
50  PositionType position(double s) const override;
51 
54  DirectionType direction(double s) const override;
55  //
56  // double precision vectors
57  //
60 
64 
68 
71  inline double smallestPathLength(const double firstPathLength, const double secondPathLength) const {
72  return fabs(firstPathLength) < fabs(secondPathLength) ? firstPathLength : secondPathLength;
73  }
74 
75 private:
78  std::pair<bool, double> solutionByDirection(const double dS1, const double dS2) const dso_internal;
79 
80 private:
81  const double theX0, theY0, theZ0;
84  const double theRho;
86 };
87 
88 #endif
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)
PropagationDirection
DirectionType direction(double s) const override
Definition: Plane.h:16
T curvature(T InversePt, const MagneticField &field)
double smallestPathLength(const double firstPathLength, const double secondPathLength) const
#define dso_internal
Definition: Visibility.h:13
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
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
Definition: invegas.h:5