CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HelixArbitraryPlaneCrossing2Order.h
Go to the documentation of this file.
1 #ifndef HELIXARBITRARYPLANECROSSING2ORDER_H_
2 #define HELIXARBITRARYPLANECROSSING2ORDER_H_
6 
10 class HelixArbitraryPlaneCrossing2Order GCC11_FINAL : public HelixPlaneCrossing {
11 
12 
13 public:
16  HelixArbitraryPlaneCrossing2Order(const PositionType& point,
17  const DirectionType& direction,
18  const float curvature,
19  const PropagationDirection propDir = alongMomentum);
22  HelixArbitraryPlaneCrossing2Order(const double& x0, const double& y0, const double& z0,
23  const double& cosPhi0, const double& sinPhi0,
24  const double& cosTheta, const double& sinTheta,
25  const double& rho,
26  const PropagationDirection propDir = alongMomentum) :
27  theX0(x0), theY0(y0), theZ0(z0),
28  theCosPhi0(cosPhi0), theSinPhi0(sinPhi0),
29  theCosTheta(cosTheta), theSinThetaI(1./sinTheta),
30  theRho(rho),
31  thePropDir(propDir) {}
32 
33  // destructor
35 
40  virtual std::pair<bool,double> pathLength(const Plane&);
41 
44  virtual PositionType position(double s) const;
45 
48  virtual DirectionType direction(double s) const;
49  //
50  // double precision vectors
51  //
54 
57  PositionTypeDouble positionInDouble(double s) const;
58 
61  DirectionTypeDouble directionInDouble(double s) const;
62 
65  inline double smallestPathLength (const double firstPathLength,
66  const double secondPathLength) const {
67  return fabs(firstPathLength)<fabs(secondPathLength) ? firstPathLength : secondPathLength;
68  }
69 
70 private:
71 
74  std::pair<bool,double> solutionByDirection(const double dS1,const double dS2) const dso_internal;
75 
76 private:
77  const double theX0,theY0,theZ0;
78  double theCosPhi0,theSinPhi0;
79  double theCosTheta,theSinThetaI;
80  const double theRho;
81  const PropagationDirection thePropDir;
82 
83 };
84 
85 #endif
86 
87 
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)
virtual DirectionType direction(double s) const =0
Definition: DDAxes.h:10
PropagationDirection
Definition: Plane.h:17
Point3DBase< Scalar, GlobalTag > PositionType
Definition: Definitions.h:30
T curvature(T InversePt, const edm::EventSetup &iSetup)
#define dso_internal
Definition: Visibility.h:13
double smallestPathLength(const double firstPathLength, const double secondPathLength) const
virtual std::pair< bool, double > pathLength(const Plane &)=0
virtual PositionType position(double s) const =0
Basic3DVector< double > DirectionTypeDouble
*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
Basic3DVector< double > PositionTypeDouble
Unlimited (trivial) bounds.