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