00001 #ifndef _SequentialVertexSmoother_H_ 00002 #define _SequentialVertexSmoother_H_ 00003 00004 00005 #include "RecoVertex/VertexPrimitives/interface/VertexSmoother.h" 00006 #include "RecoVertex/VertexPrimitives/interface/VertexTrackUpdator.h" 00007 #include "RecoVertex/VertexPrimitives/interface/VertexSmoothedChiSquaredEstimator.h" 00008 #include "RecoVertex/VertexPrimitives/interface/TrackToTrackCovCalculator.h" 00009 00015 template <unsigned int N> 00016 class SequentialVertexSmoother : public VertexSmoother<N> { 00017 00018 public: 00019 00020 typedef ReferenceCountingPointer<RefittedTrackState<N> > RefCountedRefittedTrackState; 00021 typedef ReferenceCountingPointer<VertexTrack<N> > RefCountedVertexTrack; 00022 typedef ReferenceCountingPointer<LinearizedTrackState<N> > RefCountedLinearizedTrackState; 00023 00031 SequentialVertexSmoother(const VertexTrackUpdator<N> & vtu, 00032 const VertexSmoothedChiSquaredEstimator<N> & vse, 00033 const TrackToTrackCovCalculator<N> & covCalc); 00034 00035 virtual ~SequentialVertexSmoother(); 00036 00040 SequentialVertexSmoother(const SequentialVertexSmoother<N> & smoother); 00041 00052 virtual CachingVertex<N> smooth(const CachingVertex<N> & vertex) const; 00053 00057 const VertexTrackUpdator<N> * vertexTrackUpdator() const 00058 { return theVertexTrackUpdator; } 00059 const VertexSmoothedChiSquaredEstimator<N> * vertexSmoothedChiSquaredEstimator() const 00060 { return theVertexSmoothedChiSquaredEstimator; } 00061 const TrackToTrackCovCalculator<N> * trackToTrackCovCalculator() const 00062 { return theTrackToTrackCovCalculator; } 00063 00067 virtual SequentialVertexSmoother<N> * clone() const 00068 { 00069 return new SequentialVertexSmoother(* this); 00070 } 00071 00072 private: 00073 VertexTrackUpdator<N> * theVertexTrackUpdator; 00074 VertexSmoothedChiSquaredEstimator<N> * theVertexSmoothedChiSquaredEstimator; 00075 TrackToTrackCovCalculator<N> * theTrackToTrackCovCalculator; 00076 }; 00077 00078 #endif