00001 #ifndef _VertexReconstructor_H_ 00002 #define _VertexReconstructor_H_ 00003 00004 #include "RecoVertex/VertexPrimitives/interface/TransientVertex.h" 00005 #include "TrackingTools/TransientTrack/interface/TransientTrack.h" 00006 #include "DataFormats/BeamSpot/interface/BeamSpot.h" 00007 #include <vector> 00008 00013 class VertexReconstructor { 00014 00015 public: 00016 00017 VertexReconstructor() {} 00018 virtual ~VertexReconstructor() {} 00019 00022 virtual std::vector<TransientVertex> 00023 vertices(const std::vector<reco::TransientTrack> &) const = 0; 00024 00028 virtual std::vector<TransientVertex> 00029 vertices( const std::vector<reco::TransientTrack> & t, const 00030 reco::BeamSpot & ) const 00031 { 00032 return vertices ( t ); 00033 } 00034 00044 virtual std::vector<TransientVertex> 00045 vertices( const std::vector<reco::TransientTrack> & primaries, 00046 const std::vector<reco::TransientTrack> & tracks, 00047 const reco::BeamSpot & spot ) const 00048 { 00049 return vertices ( tracks, spot ); 00050 } 00051 00052 virtual VertexReconstructor * clone() const = 0; 00053 00054 }; 00055 00056 #endif