CMS 3D CMS Logo

ThirdHitPredictionFromCircle.h
Go to the documentation of this file.
1 #ifndef ThirdHitPredictionFromCircle_H
2 #define ThirdHitPredictionFromCircle_H
3 
6 
9 
11 public:
12  using Scalar = double;
16 
18 
19  float phi(float curvature, float radius) const;
20  float angle(float curvature, float radius) const;
21 
22  Range operator()(Range curvature, float radius) const;
23 
24  Range curvature(double transverseIP) const;
25  double curvature(const Vector2D &thirdPoint) const;
26  double transverseIP(const Vector2D &thirdPoint) const;
27 
28  // like PixelRecoLineRZ, but makes use of the bending computation
29  // from the circle fit to get an actual Helix propagation
30  class HelixRZ {
31  public:
34  // using Vector2D=ThirdHitPredictionFromCircle::VectorF2D;
35  // using Scalar=float;
36 
38  HelixRZ(const ThirdHitPredictionFromCircle *icircle, double iz1, double z2, double curv);
39 
40  Scalar zAtR(Scalar r) const;
41  Scalar rAtZ(Scalar z) const;
42 
43  static double maxCurvature(const ThirdHitPredictionFromCircle *circle, double z1, double z2, double z3);
44 
45  private:
47  Vector2D center;
49  };
50 
51 private:
52  friend class HelixRZ;
53 
54  Scalar invCenterOnAxis(const Vector2D &thirdPoint) const;
55 
56  Vector2D p1, center, axis;
58  float theTolerance;
59 };
60 
61 #endif
double transverseIP(const Vector2D &thirdPoint) const
Scalar invCenterOnAxis(const Vector2D &thirdPoint) const
float angle(float curvature, float radius) const
const double tolerance
#define nullptr
Range curvature(double transverseIP) const
ThirdHitPredictionFromCircle::Scalar Scalar
ThirdHitPredictionFromCircle(const GlobalPoint &P1, const GlobalPoint &P2, float tolerance)
Range operator()(Range curvature, float radius) const
static double maxCurvature(const ThirdHitPredictionFromCircle *circle, double z1, double z2, double z3)
const ThirdHitPredictionFromCircle * circle
float phi(float curvature, float radius) const