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 vector<reco::TransientTrack> & tracks) const = 0; 00032 00036 virtual CachingVertex<N> 00037 vertex(const vector<typename CachingVertex<N>::RefCountedVertexTrack > & tracks) const = 0; 00038 00042 virtual CachingVertex<N> 00043 vertex(const vector<reco::TransientTrack> & tracks, const GlobalPoint& linPoint) const = 0; 00044 00050 virtual CachingVertex<N> 00051 vertex(const vector<reco::TransientTrack> & tracks, const GlobalPoint& priorPos, 00052 const GlobalError& priorError) const = 0; 00053 00058 virtual CachingVertex<N> 00059 vertex(const vector<reco::TransientTrack> & tracks, const reco::BeamSpot& beamSpot) const = 0; 00060 00065 virtual CachingVertex<N> 00066 vertex(const vector<typename CachingVertex<N>::RefCountedVertexTrack > & tracks, 00067 const GlobalPoint& priorPos, 00068 const GlobalError& priorError) const = 0; 00069 00072 // virtual CachingVertex<N> 00073 // vertex(const RefCountedVertexSeed vtxSeed) const = 0; 00074 00075 virtual VertexFitter * clone() const = 0; 00076 00077 }; 00078 00079 #endif