CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_13_patch3/src/RecoVertex/VertexTools/interface/SequentialVertexSmoother.h

Go to the documentation of this file.
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