00001 #ifndef TR_FastCircle_H_ 00002 #define TR_FastCircle_H_ 00003 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" 00004 #include "DataFormats/Math/interface/AlgebraicROOTObjects.h" 00005 #include "FWCore/Utilities/interface/GCC11Compatibility.h" 00006 00033 class FastCircle { 00034 00035 public: 00036 00037 FastCircle(const GlobalPoint& outerHit, 00038 const GlobalPoint& middleHit, 00039 const GlobalPoint& aVertex); 00040 00041 FastCircle(const GlobalPoint& outerHit, 00042 const GlobalPoint& middleHit, 00043 const GlobalPoint& aVertex, 00044 double norm); 00045 00046 ~FastCircle() {} 00047 00048 // all returned values have dimensions of cm 00049 // parameters of the circle (circle is valid) 00050 double x0() const {return theX0;} 00051 00052 double y0() const {return theY0;} 00053 00054 double rho() const {return theRho;} 00055 00056 bool isValid() const {return theValid;} 00057 00058 // parameters of the straight line 00059 // (if circle is invalid only these are available) 00060 double n1() const {return theN1;} 00061 00062 double n2() const {return theN2;} 00063 00064 double c() const {return theC;} 00065 00066 GlobalPoint const & outerPoint() const { return theOuterPoint;} 00067 GlobalPoint const & innerPoint() const { return theInnerPoint;} 00068 GlobalPoint const & vertexPoint() const { return theVertexPoint;} 00069 00070 00071 private: 00072 00073 GlobalPoint theOuterPoint; 00074 GlobalPoint theInnerPoint; 00075 GlobalPoint theVertexPoint; 00076 double theNorm; 00077 00078 double theX0; 00079 double theY0; 00080 double theRho; 00081 00082 double theN1; 00083 double theN2; 00084 double theC; 00085 00086 bool theValid; 00087 00088 void createCircleParameters() dso_hidden; 00089 00090 }; 00091 00092 #endif //TR_Circle_H_