00001 #ifndef KalmanVertexTrackCompatibilityEstimator_H 00002 #define KalmanVertexTrackCompatibilityEstimator_H 00003 00004 00005 #include "RecoVertex/VertexPrimitives/interface/VertexTrackCompatibilityEstimator.h" 00006 //#include "TrackingTools/PatternTools/interface/TSCPBuilderNoMaterial.h" 00007 #include "RecoVertex/VertexPrimitives/interface/VertexTrack.h" 00008 #include "RecoVertex/VertexPrimitives/interface/CachingVertex.h" 00009 #include "RecoVertex/KalmanVertexFit/interface/KalmanVertexUpdator.h" 00010 #include "RecoVertex/KalmanVertexFit/interface/KalmanVertexTrackUpdator.h" 00011 #include "RecoVertex/VertexTools/interface/VertexTrackFactory.h" 00012 #include "RecoVertex/KalmanVertexFit/interface/KVFHelper.h" 00013 00024 template <unsigned int N> 00025 class KalmanVertexTrackCompatibilityEstimator : public VertexTrackCompatibilityEstimator<N> 00026 { 00027 00028 public: 00029 00030 typedef typename CachingVertex<N>::RefCountedVertexTrack RefCountedVertexTrack; 00031 typedef typename VertexTrack<N>::RefCountedLinearizedTrackState RefCountedLinearizedTrackState; 00032 typedef typename VertexTrack<N>::RefCountedRefittedTrackState RefCountedRefittedTrackState; 00033 typedef typename std::pair<bool, double> BDpair; 00034 00035 KalmanVertexTrackCompatibilityEstimator(){} 00036 00037 virtual ~KalmanVertexTrackCompatibilityEstimator(){} 00038 00047 virtual BDpair estimate(const CachingVertex<N> & vrt, const RefCountedVertexTrack track) const; 00048 00049 virtual BDpair estimate(const CachingVertex<N> & v, 00050 const RefCountedLinearizedTrackState track) const; 00051 00052 virtual BDpair estimate(const reco::Vertex & vertex, 00053 const reco::TransientTrack & track) const; 00054 00055 virtual KalmanVertexTrackCompatibilityEstimator<N> * clone() const 00056 { 00057 return new KalmanVertexTrackCompatibilityEstimator(* this); 00058 } 00059 00060 00061 private: 00062 00063 BDpair estimateFittedTrack(const CachingVertex<N> & v, const RefCountedVertexTrack track) const; 00064 BDpair estimateNFittedTrack(const CachingVertex<N> & v, const RefCountedVertexTrack track) const; 00065 BDpair estimateDifference(const CachingVertex<N> & more, const CachingVertex<N> & less, 00066 const RefCountedVertexTrack track) const; 00067 KalmanVertexUpdator<N> updator; 00068 KalmanVertexTrackUpdator<N> trackUpdator; 00069 VertexTrackFactory<N> vTrackFactory; 00070 KVFHelper<N> helper; 00071 00072 }; 00073 00074 #endif