CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_2_9/src/RecoVertex/KalmanVertexFit/interface/KalmanVertexTrackUpdator.h

Go to the documentation of this file.
00001 #ifndef KalmanVertexTrackUpdator_H
00002 #define KalmanVertexTrackUpdator_H
00003 
00004 #include "RecoVertex/VertexPrimitives/interface/VertexTrackUpdator.h"
00005 #include "RecoVertex/VertexPrimitives/interface/CachingVertex.h"
00006 #include "RecoVertex/VertexPrimitives/interface/VertexTrack.h"
00007 #include "RecoVertex/VertexTools/interface/VertexTrackFactory.h"
00008 #include "RecoVertex/KalmanVertexFit/interface/KVFHelper.h"
00009 #include "RecoVertex/KalmanVertexFit/interface/KalmanVertexUpdator.h"
00010 
00016 template <unsigned int N>
00017 class KalmanVertexTrackUpdator : public VertexTrackUpdator<N> {
00018 
00019 public:
00020 
00021   typedef typename CachingVertex<N>::RefCountedVertexTrack RefCountedVertexTrack;
00022   typedef typename VertexTrack<N>::RefCountedLinearizedTrackState RefCountedLinearizedTrackState;
00023   typedef typename VertexTrack<N>::RefCountedRefittedTrackState RefCountedRefittedTrackState;
00024 
00025 
00030   KalmanVertexTrackUpdator(){}
00031 
00032   virtual ~KalmanVertexTrackUpdator(){}
00033 
00042   RefCountedVertexTrack update(const CachingVertex<N> & vertex,
00043                                RefCountedVertexTrack track) const;
00044 
00045 
00050   KalmanVertexTrackUpdator<N> * clone() const
00051   {
00052     return new KalmanVertexTrackUpdator(*this);
00053   }
00054 
00055   typedef ROOT::Math::SMatrix<double,3,N-2,ROOT::Math::MatRepStd<double,3,N-2> > AlgebraicMatrix3M;
00056   typedef ROOT::Math::SMatrix<double,N+1,N+1,ROOT::Math::MatRepSym<double,N+1> > AlgebraicSymMatrixOO;
00057   typedef std::pair< RefCountedRefittedTrackState, AlgebraicSymMatrixOO > trackMatrixPair; 
00058 
00066   trackMatrixPair trackRefit(const VertexState & vertex,
00067                 RefCountedLinearizedTrackState linTrackState,
00068                 float weight) const;
00069 
00070 private:
00071 
00072   VertexTrackFactory<N> theVTFactory;
00073   KVFHelper<N> helper;
00074   KalmanVertexUpdator<N> updator;
00075 };
00076 
00077 #endif