00001 #ifndef _VertexFitter_H_ 00002 #define _VertexFitter_H_ 00003 00004 #include "RecoVertex/VertexPrimitives/interface/CachingVertex.h" 00005 #include "TrackingTools/TransientTrack/interface/TransientTrack.h" 00006 #include "DataFormats/BeamSpot/interface/BeamSpot.h" 00007 00008 #include <vector> 00009 00019 template <unsigned int N> 00020 class VertexFitter { 00021 00022 public: 00023 00024 VertexFitter() {} 00025 00026 virtual ~VertexFitter() {} 00027 00030 virtual CachingVertex<N> 00031 vertex(const std::vector<reco::TransientTrack> & tracks) const = 0; 00032 00036 virtual CachingVertex<N> 00037 vertex(const std::vector<typename CachingVertex<N>::RefCountedVertexTrack > & tracks) const = 0; 00038 00042 virtual CachingVertex<N> 00043 vertex(const std::vector<typename CachingVertex<N>::RefCountedVertexTrack > & tracks, const reco::BeamSpot & spot ) const = 0; 00044 00045 00049 virtual CachingVertex<N> 00050 vertex(const std::vector<reco::TransientTrack> & tracks, const GlobalPoint& linPoint) const = 0; 00051 00057 virtual CachingVertex<N> 00058 vertex(const std::vector<reco::TransientTrack> & tracks, const GlobalPoint& priorPos, 00059 const GlobalError& priorError) const = 0; 00060 00065 virtual CachingVertex<N> 00066 vertex(const std::vector<reco::TransientTrack> & tracks, const reco::BeamSpot& beamSpot) const = 0; 00067 00072 virtual CachingVertex<N> 00073 vertex(const std::vector<typename CachingVertex<N>::RefCountedVertexTrack > & tracks, 00074 const GlobalPoint& priorPos, 00075 const GlobalError& priorError) const = 0; 00076 00079 // virtual CachingVertex<N> 00080 // vertex(const RefCountedVertexSeed vtxSeed) const = 0; 00081 00082 virtual VertexFitter * clone() const = 0; 00083 00084 }; 00085 00086 #endif