Go to the documentation of this file.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/GeometryVector/interface/GlobalPoint.h"
00008 #include "DataFormats/GeometryCommonDetAlgo/interface/GlobalError.h"
00009
00014 class VertexState;
00015
00016 class VertexDistance {
00017 public:
00018
00019 virtual ~VertexDistance() {}
00020
00021 Measurement1D distance(const reco::Vertex &,
00022 const reco::Vertex &) const;
00023
00024 Measurement1D distance(const VertexState &,
00025 const VertexState &) const;
00026
00027 Measurement1D distance(const reco::Vertex &,
00028 const VertexState &) const;
00029
00030 Measurement1D distance(const VertexState &,
00031 const reco::Vertex &) const;
00032
00045 virtual Measurement1D signedDistance(const reco::Vertex &primVtx ,
00046 const reco::Vertex &secVtx,
00047 const GlobalVector & momentum) const = 0;
00048
00049 virtual float compatibility (const reco::Vertex &,
00050 const reco::Vertex &) const;
00051
00052 virtual float compatibility (const VertexState &,
00053 const VertexState &) const;
00054
00055 virtual float compatibility(const reco::Vertex &,
00056 const VertexState &) const;
00057
00058 virtual float compatibility(const VertexState &,
00059 const reco::Vertex &) const;
00060
00061 virtual VertexDistance * clone() const = 0;
00062
00063 protected:
00064 virtual Measurement1D distance(const GlobalPoint & vtx1Position,
00065 const GlobalError & vtx1PositionError,
00066 const GlobalPoint & vtx2Position,
00067 const GlobalError & vtx2PositionError) const = 0;
00068
00069 virtual float compatibility(const GlobalPoint & vtx1Position,
00070 const GlobalError & vtx1PositionError,
00071 const GlobalPoint & vtx2Position,
00072 const GlobalError & vtx2PositionError) const = 0;
00073
00074 };
00075 #endif // Tracker_VertexDistance_H