CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/RecoTracker/TkSeedGenerator/interface/FastCircle.h

Go to the documentation of this file.
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 <vector>
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 private:
00067 
00068   GlobalPoint theOuterPoint; 
00069   GlobalPoint theInnerPoint; 
00070   GlobalPoint theVertexPoint; 
00071   double theNorm;
00072   
00073   double theX0;
00074   double theY0;
00075   double theRho;
00076   
00077   double theN1;
00078   double theN2;
00079   double theC;
00080   
00081   bool theValid;
00082   
00083   void createCircleParameters();
00084   AlgebraicVector3 transform(const GlobalPoint& aPoint) const;
00085   
00086 };
00087 
00088 #endif //TR_Circle_H_