CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch12/src/TrackingTools/GeomPropagators/interface/HelixBarrelCylinderCrossing.h

Go to the documentation of this file.
00001 #ifndef HelixBarrelCylinderCrossing_H
00002 #define HelixBarrelCylinderCrossing_H
00003 
00004 #include "DataFormats/GeometryVector/interface/Basic2DVector.h"
00005 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
00006 #include "DataFormats/GeometryVector/interface/GlobalVector.h"
00007 #include "DataFormats/TrajectorySeed/interface/PropagationDirection.h"
00008 
00009 class Cylinder;
00010 
00014 class HelixBarrelCylinderCrossing {
00015 
00016   typedef double                   TmpType;
00017   typedef Basic2DVector<TmpType>   Point; // for private use only
00018   typedef Basic2DVector<TmpType>   Vector; // for private use only
00019 
00020 public:
00021 
00022   typedef GlobalPoint    PositionType;
00023   typedef GlobalVector   DirectionType;
00024 
00025   HelixBarrelCylinderCrossing( const GlobalPoint& startingPos,
00026                                const GlobalVector& startingDir,
00027                                double rho, PropagationDirection propDir, 
00028                                const Cylinder& cyl);
00029 
00030   bool hasSolution() const { return theSolExists;}
00031 
00036   double pathLength() const { return theS;}
00037 
00044   PositionType position() const { return thePos;}
00045 
00051   DirectionType direction() const { return theDir;}
00052 
00053 private:
00054 
00055   bool           theSolExists;
00056   double         theS;
00057   PositionType   thePos;
00058   DirectionType  theDir;
00059   Vector         theD;
00060   int            theActualDir;
00061 
00062   void chooseSolution( const Point& p1, const Point& p2,
00063                        const PositionType& startingPos,
00064                        const DirectionType& startingDir, 
00065                        PropagationDirection propDir);
00066 
00067 };
00068 
00069 #endif