CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/src/TrackingTools/GeomPropagators/interface/HelixBarrelPlaneCrossingByCircle.h

Go to the documentation of this file.
00001 #ifndef HelixBarrelPlaneCrossingByCircle_H
00002 #define HelixBarrelPlaneCrossingByCircle_H
00003 
00004 #include "TrackingTools/GeomPropagators/interface/HelixPlaneCrossing.h"
00005 #include "DataFormats/TrajectorySeed/interface/PropagationDirection.h"
00006 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
00007 #include "DataFormats/GeometryVector/interface/GlobalVector.h"
00008 
00013 class HelixBarrelPlaneCrossingByCircle : public HelixPlaneCrossing {
00014 public:
00015 
00016   HelixBarrelPlaneCrossingByCircle( const PositionType& pos,
00017                                     const DirectionType& dir,
00018                                     double rho, 
00019                                     PropagationDirection propDir=alongMomentum);
00020 
00021   HelixBarrelPlaneCrossingByCircle( const GlobalPoint& pos,
00022                                     const GlobalVector& dir,
00023                                     double rho, 
00024                                     PropagationDirection propDir=alongMomentum);
00025 
00026   virtual std::pair<bool,double> pathLength( const Plane&);
00027 
00028   virtual PositionType position( double s) const;
00029 
00030   virtual DirectionType direction( double s) const;
00031 
00032 private:
00033 
00034   typedef Basic2DVector<double> Vector2D;
00035 
00036   PositionType theStartingPos;
00037   DirectionType theStartingDir;
00038   double theRho;
00039   PropagationDirection thePropDir;
00040 
00041   double theCosTheta;
00042   double theSinTheta;
00043   double theXCenter;
00044   double theYCenter;
00045 
00046   // caching of the solution for faster access
00047   double   theS;
00048   Vector2D theD;
00049   double   theDmag;
00050 
00051   // internal communication - not very clean
00052   double   theActualDir;
00053   bool useStraightLine;
00054 
00055   void init();
00056   bool chooseSolution( const Vector2D& d1, const Vector2D& d2);
00057 
00058 };
00059 
00060 #endif