00001 #ifndef _ClosestApproachOnHelices_H_ 00002 #define _ClosestApproachOnHelices_H_ 00003 00004 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" 00005 #include <utility> 00006 00017 class FreeTrajectoryState; 00018 class TrajectoryStateOnSurface; 00019 00020 class ClosestApproachOnHelices { 00021 00022 public: 00023 00024 ClosestApproachOnHelices() {} 00025 00026 virtual ~ClosestApproachOnHelices() {} 00027 00028 00029 virtual bool calculate(const TrajectoryStateOnSurface & sta, 00030 const TrajectoryStateOnSurface & stb) = 0; 00031 00032 virtual bool calculate(const FreeTrajectoryState & sta, 00033 const FreeTrajectoryState & stb) = 0; 00034 00035 virtual bool status() const = 0; 00036 00038 virtual std::pair<GlobalPoint, GlobalPoint> points() const = 0; 00039 00044 virtual GlobalPoint crossingPoint() const = 0; 00045 00047 virtual float distance() const = 0; 00048 00049 virtual ClosestApproachOnHelices * clone() const = 0; 00050 00051 }; 00052 00053 #endif