00001 #ifndef Vertex_VertexDistance3D_H 00002 #define Vertex_VertexDistance3D_H 00003 00004 #include "RecoVertex/VertexTools/interface/VertexDistance.h" 00005 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h" 00006 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" 00007 #include "DataFormats/GeometryCommonDetAlgo/interface/GlobalError.h" 00008 00014 class VertexDistance3D : public VertexDistance { 00015 00016 public: 00017 using VertexDistance::compatibility; 00018 00019 VertexDistance3D() : theNullMatrix(3, 0) {} 00020 00029 virtual Measurement1D signedDistance(const reco::Vertex &primVtx , 00030 const reco::Vertex &secVtx, 00031 const GlobalVector & momentum) const; 00032 00033 virtual VertexDistance3D * clone() const 00034 { 00035 return new VertexDistance3D(*this); 00036 } 00037 00038 using VertexDistance::distance; 00039 00040 private: 00041 00042 AlgebraicSymMatrix theNullMatrix; 00043 virtual Measurement1D distance(const GlobalPoint & vtx1Position, 00044 const GlobalError & vtx1PositionError, 00045 const GlobalPoint & vtx2Position, 00046 const GlobalError & vtx2PositionError) const; 00047 00048 virtual float compatibility(const GlobalPoint & vtx1Position, 00049 const GlobalError & vtx1PositionError, 00050 const GlobalPoint & vtx2Position, 00051 const GlobalError & vtx2PositionError) const; 00052 }; 00053 00054 00055 #endif 00056 00057 00058