00001 #ifndef HelixLineExtrapolation_H 00002 #define HelixLineExtrapolation_H 00003 00004 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" 00005 #include "DataFormats/GeometryVector/interface/GlobalVector.h" 00006 00007 #include <utility> 00008 00009 class Line; 00010 00015 class HelixLineExtrapolation { 00016 public: 00022 typedef Basic3DVector<float> PositionType; 00023 typedef Basic3DVector<float> DirectionType; 00024 typedef Basic3DVector<double> PositionTypeDouble; 00025 typedef Basic3DVector<double> DirectionTypeDouble; 00026 00027 public: 00028 // 00029 // the helix is passed to the constructor and does not appear in the interface 00030 // 00031 00036 virtual std::pair<bool,double> pathLength (const GlobalPoint& point) const = 0; 00037 00042 virtual std::pair<bool,double> pathLength (const Line& line) const = 0; 00043 00050 virtual PositionType position (double s) const = 0; 00051 00057 virtual DirectionType direction (double s) const = 0; 00058 00059 }; 00060 00061 #endif