Go to the documentation of this file.00001 #ifndef IterativeHelixExtrapolatorToLine_h_
00002 #define IterativeHelixExtrapolatorToLine_h_
00003
00004 #include "DataFormats/TrajectorySeed/interface/PropagationDirection.h"
00005 #include "TrackingTools/GeomPropagators/interface/HelixLineExtrapolation.h"
00006 #include "TrackingTools/GeomPropagators/interface/HelixExtrapolatorToLine2Order.h"
00007 #include "FWCore/Utilities/interface/Visibility.h"
00008
00013 class IterativeHelixExtrapolatorToLine : public HelixLineExtrapolation {
00014 public:
00017 IterativeHelixExtrapolatorToLine (const PositionType& point,
00018 const DirectionType& direction,
00019 const float curvature,
00020 const PropagationDirection propDir = anyDirection);
00021
00022 virtual ~IterativeHelixExtrapolatorToLine() {}
00023
00028 virtual std::pair<bool,double> pathLength (const GlobalPoint& point) const;
00029
00034 virtual std::pair<bool,double> pathLength (const Line& line) const;
00035
00038 virtual PositionType position (double s) const;
00039
00042 virtual DirectionType direction (double s) const;
00043
00046 PositionTypeDouble positionInDouble (double s) const;
00047
00050 DirectionTypeDouble directionInDouble (double s) const;
00051
00052 private:
00054 template <class T>
00055 std::pair<bool,double> genericPathLength (const T& object) const dso_internal;
00056
00057 private:
00058 const double theX0,theY0,theZ0;
00059 double theCosPhi0,theSinPhi0;
00060 double theCosTheta,theSinTheta;
00061 const double theRho;
00062
00063 HelixExtrapolatorToLine2Order theQuadraticSolutionFromStart;
00064
00065 const PropagationDirection thePropDir;
00066
00067 mutable double theCachedS;
00068 mutable double theCachedDPhi;
00069 mutable double theCachedSDPhi;
00070 mutable double theCachedCDPhi;
00071 };
00072
00073 #endif