CMS 3D CMS Logo

ThirdHitPredictionFromCircle.h
Go to the documentation of this file.
1 #ifndef ThirdHitPredictionFromCircle_H
2 #define ThirdHitPredictionFromCircle_H
3 
6 
9 
10 
12 
13 public:
14  using Scalar = double;
18 
20  float tolerance);
21 
22  float phi(float curvature, float radius) const;
23  float angle(float curvature, float radius) const;
24 
25  Range operator()(Range curvature, float radius) const;
26 
27  Range curvature(double transverseIP) const;
28  double curvature(const Vector2D &thirdPoint) const;
29  double transverseIP(const Vector2D &thirdPoint) const;
30 
31  // like PixelRecoLineRZ, but makes use of the bending computation
32  // from the circle fit to get an actual Helix propagation
33  class HelixRZ {
34  public:
37  // using Vector2D=ThirdHitPredictionFromCircle::VectorF2D;
38  // using Scalar=float;
39 
40  HelixRZ() : circle(0) {}
42  double iz1, double z2, double curv);
43 
44  Scalar zAtR(Scalar r) const;
45  Scalar rAtZ(Scalar z) const;
46 
48  double z1, double z2, double z3);
49 
50  private:
52  Vector2D center;
54  };
55 
56 private:
57  friend class HelixRZ;
58 
59  Scalar invCenterOnAxis(const Vector2D &thirdPoint) const;
60 
61  Vector2D p1, center, axis;
63  float theTolerance;
64 };
65 
66 #endif
double transverseIP(const Vector2D &thirdPoint) const
Scalar invCenterOnAxis(const Vector2D &thirdPoint) const
float angle(float curvature, float radius) const
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