![]() |
![]() |
00001 #ifndef VertexTrackFactory_H 00002 #define VertexTrackFactory_H 00003 00004 #include "DataFormats/GeometrySurface/interface/ReferenceCounted.h" 00005 #include "RecoVertex/VertexPrimitives/interface/VertexTrack.h" 00006 #include "RecoVertex/VertexPrimitives/interface/LinearizedTrackState.h" 00007 00015 template <unsigned int N> 00016 class VertexTrackFactory { 00017 00018 public: 00019 00020 typedef ReferenceCountingPointer<RefittedTrackState<N> > RefCountedRefittedTrackState; 00021 typedef ReferenceCountingPointer<VertexTrack<N> > RefCountedVertexTrack; 00022 typedef ReferenceCountingPointer<LinearizedTrackState<N> > RefCountedLinearizedTrackState; 00023 typedef ROOT::Math::SMatrix<double,3,N-2,ROOT::Math::MatRepStd<double,3,N-2> > AlgebraicMatrix3M; 00024 00025 VertexTrackFactory() {} 00026 ~VertexTrackFactory() {} 00027 00028 RefCountedVertexTrack 00029 vertexTrack(const RefCountedLinearizedTrackState lt, 00030 const VertexState vs, 00031 float weight = 1.0 ) const { 00032 return RefCountedVertexTrack(new VertexTrack<N>(lt, vs, weight )); 00033 }; 00034 00035 RefCountedVertexTrack 00036 vertexTrack(const RefCountedLinearizedTrackState lt, 00037 const VertexState vs, 00038 const RefCountedRefittedTrackState & refittedState, 00039 float smoothedChi2, float weight = 1.0 ) const { 00040 return RefCountedVertexTrack(new VertexTrack<N>(lt, vs, weight, refittedState, 00041 smoothedChi2)); 00042 }; 00043 00044 RefCountedVertexTrack 00045 vertexTrack(const RefCountedLinearizedTrackState lt, 00046 const VertexState vs, 00047 const RefCountedRefittedTrackState & refittedState, 00048 float smoothedChi2, 00049 const AlgebraicMatrix3M & tVCov, float weight = 1.0 ) const { 00050 return RefCountedVertexTrack(new VertexTrack<N>(lt, vs, weight, 00051 refittedState, smoothedChi2, tVCov)); 00052 }; 00053 }; 00054 00055 #endif