CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_9_patch3/src/RecoVertex/VertexTools/interface/VertexDistance.h

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