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 #include "FWCore/Utilities/interface/GCC11Compatibility.h" 00010 00011 class Line; 00012 00017 class HelixLineExtrapolation { 00018 public: 00024 typedef Basic3DVector<float> PositionType; 00025 typedef Basic3DVector<float> DirectionType; 00026 typedef Basic3DVector<double> PositionTypeDouble; 00027 typedef Basic3DVector<double> DirectionTypeDouble; 00028 00029 public: 00030 // 00031 // the helix is passed to the constructor and does not appear in the interface 00032 // 00033 00038 virtual std::pair<bool,double> pathLength (const GlobalPoint& point) const = 0; 00039 00044 virtual std::pair<bool,double> pathLength (const Line& line) const = 0; 00045 00052 virtual PositionType position (double s) const = 0; 00053 00059 virtual DirectionType direction (double s) const = 0; 00060 00061 }; 00062 00063 #endif