CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/TrackingTools/GeomPropagators/interface/HelixArbitraryPlaneCrossing.h

Go to the documentation of this file.
00001 #ifndef HELIXARBITRARYPLANECROSSING_H_
00002 #define HELIXARBITRARYPLANECROSSING_H_
00003 #include "DataFormats/TrajectorySeed/interface/PropagationDirection.h"
00004 #include "TrackingTools/GeomPropagators/interface/HelixPlaneCrossing.h"
00005 #include "TrackingTools/GeomPropagators/interface/HelixArbitraryPlaneCrossing2Order.h"
00006 
00009 class HelixArbitraryPlaneCrossing : public HelixPlaneCrossing {
00010 public:
00013   HelixArbitraryPlaneCrossing(const PositionType& point,
00014                                     const DirectionType& direction,
00015                                     const float curvature,
00016                                     const PropagationDirection propDir = alongMomentum);
00017   // destructor
00018   virtual ~HelixArbitraryPlaneCrossing() {}
00019 
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   // double precision vectors for internal use
00035   //
00036   typedef Basic3DVector<double>  PositionTypeDouble;
00037   typedef Basic3DVector<double>  DirectionTypeDouble;
00038 
00041   PositionTypeDouble positionInDouble(double s) const;
00042 
00045   DirectionTypeDouble directionInDouble(double s) const;
00046 
00047 private:
00050   inline bool notAtSurface (const Plane&,
00051                             const PositionTypeDouble&,
00052                             const float) const;
00053 
00054 private:
00055   HelixArbitraryPlaneCrossing2Order theQuadraticCrossingFromStart;
00056 
00057 
00058   const double theX0,theY0,theZ0;
00059   double theCosPhi0,theSinPhi0;
00060   double theCosTheta,theSinTheta;
00061   const double theRho;
00062 
00063   const PropagationDirection thePropDir;
00064 
00065   mutable double theCachedS;
00066   mutable double theCachedDPhi;
00067   mutable double theCachedSDPhi;
00068   mutable double theCachedCDPhi;
00069 
00070   static const float theNumericalPrecision;
00071   static const float theMaxDistToPlane;
00072 
00073 };
00074 
00075 #endif