CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_6/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 #include "FWCore/Utilities/interface/Visibility.h"
00007 
00010 class HelixArbitraryPlaneCrossing : public HelixPlaneCrossing {
00011 public:
00014   HelixArbitraryPlaneCrossing(const PositionType& point,
00015                                     const DirectionType& direction,
00016                                     const float curvature,
00017                                     const PropagationDirection propDir = alongMomentum);
00018   // destructor
00019   virtual ~HelixArbitraryPlaneCrossing() {}
00020 
00025   virtual std::pair<bool,double> pathLength(const Plane& plane);
00026 
00029   virtual PositionType position(double s) const;
00030 
00033   virtual DirectionType direction(double s) const;
00034   //
00035   // double precision vectors for internal use
00036   //
00037   typedef Basic3DVector<double>  PositionTypeDouble;
00038   typedef Basic3DVector<double>  DirectionTypeDouble;
00039 
00042   PositionTypeDouble positionInDouble(double s) const;
00043 
00046   DirectionTypeDouble directionInDouble(double s) const;
00047 
00048 private:
00051   inline bool notAtSurface (const Plane&,
00052                             const PositionTypeDouble&,
00053                             const float) const dso_internal;
00054 
00055 private:
00056   HelixArbitraryPlaneCrossing2Order theQuadraticCrossingFromStart;
00057 
00058 
00059   const double theX0,theY0,theZ0;
00060   double theCosPhi0,theSinPhi0;
00061   double theCosTheta,theSinTheta;
00062   const double theRho;
00063 
00064   const PropagationDirection thePropDir;
00065 
00066   mutable double theCachedS;
00067   mutable double theCachedDPhi;
00068   mutable double theCachedSDPhi;
00069   mutable double theCachedCDPhi;
00070 
00071   static const float theNumericalPrecision;
00072   static const float theMaxDistToPlane;
00073 
00074 };
00075 
00076 #endif