00001 #ifndef VertexDistance_H 00002 #define VertexDistance_H 00003 00004 #include "DataFormats/GeometryCommonDetAlgo/interface/Measurement1D.h" 00005 #include "DataFormats/VertexReco/interface/Vertex.h" 00006 #include "DataFormats/GeometryVector/interface/GlobalVector.h" 00007 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h" 00008 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" 00009 #include "DataFormats/GeometryCommonDetAlgo/interface/GlobalError.h" 00010 00015 class VertexState; 00016 00017 class VertexDistance { 00018 public: 00019 00020 virtual ~VertexDistance() {} 00021 00022 Measurement1D distance(const reco::Vertex &, 00023 const reco::Vertex &) const; 00024 00025 Measurement1D distance(const VertexState &, 00026 const VertexState &) const; 00027 00028 Measurement1D distance(const reco::Vertex &, 00029 const VertexState &) const; 00030 00031 Measurement1D distance(const VertexState &, 00032 const reco::Vertex &) const; 00033 00046 virtual Measurement1D signedDistance(const reco::Vertex &primVtx , 00047 const reco::Vertex &secVtx, 00048 const GlobalVector & momentum) const = 0; 00049 00050 virtual float compatibility (const reco::Vertex &, 00051 const reco::Vertex &) const; 00052 00053 virtual float compatibility (const VertexState &, 00054 const VertexState &) const; 00055 00056 virtual float compatibility(const reco::Vertex &, 00057 const VertexState &) const; 00058 00059 virtual float compatibility(const VertexState &, 00060 const reco::Vertex &) const; 00061 00062 virtual VertexDistance * clone() const = 0; 00063 00064 protected: 00065 virtual Measurement1D distance(const GlobalPoint & vtx1Position, 00066 const GlobalError & vtx1PositionError, 00067 const GlobalPoint & vtx2Position, 00068 const GlobalError & vtx2PositionError) const = 0; 00069 00070 virtual float compatibility(const GlobalPoint & vtx1Position, 00071 const GlobalError & vtx1PositionError, 00072 const GlobalPoint & vtx2Position, 00073 const GlobalError & vtx2PositionError) const = 0; 00074 00075 }; 00076 #endif // Tracker_VertexDistance_H