CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_3/src/TrackingTools/GeomPropagators/interface/HelixForwardPlaneCrossing.h

Go to the documentation of this file.
00001 #ifndef HelixForwardPlaneCrossing_H_
00002 #define HelixForwardPlaneCrossing_H_
00003 
00004 #include "DataFormats/TrajectorySeed/interface/PropagationDirection.h"
00005 #include "TrackingTools/GeomPropagators/interface/HelixPlaneCrossing.h"
00006 
00010 class HelixForwardPlaneCrossing : public HelixPlaneCrossing {
00011 public:
00014   HelixForwardPlaneCrossing(const PositionType& point,
00015                             const DirectionType& direction,
00016                             const float curvature,
00017                             const PropagationDirection propDir = alongMomentum);
00018   // destructor
00019   virtual ~HelixForwardPlaneCrossing() {}
00020 
00024   virtual std::pair<bool,double> pathLength(const Plane& plane);
00025 
00028   virtual PositionType position(double s) const;
00029 
00032   virtual DirectionType direction(double s) const;
00033 
00034 private:
00035   //
00036   // double precision vectors for internal use
00037   //
00038   typedef Basic3DVector<double>  PositionTypeDouble;
00039   typedef Basic3DVector<double>  DirectionTypeDouble;
00040 
00041   const double theX0,theY0,theZ0;
00042   double theCosPhi0,theSinPhi0;
00043   double theCosTheta,theSinTheta;
00044   const double theRho;
00045 
00046   const PropagationDirection thePropDir;
00047 
00048   mutable double theCachedS;
00049   mutable double theCachedDPhi;
00050   mutable double theCachedSDPhi;
00051   mutable double theCachedCDPhi;
00052 
00053   static const float theNumericalPrecision;
00054 };
00055 
00056 #endif