00001 #ifndef VertexCompatibleWithBeam_H 00002 #define VertexCompatibleWithBeam_H 00003 00004 #include "DataFormats/VertexReco/interface/Vertex.h" 00005 #include "RecoVertex/VertexPrimitives/interface/VertexState.h" 00006 #include "DataFormats/BeamSpot/interface/BeamSpot.h" 00007 00008 class VertexDistance; 00009 00015 class VertexCompatibleWithBeam { 00016 00017 public: 00018 00019 VertexCompatibleWithBeam(const VertexDistance & dist, float cut); 00020 VertexCompatibleWithBeam(const VertexDistance & dist, float cut, 00021 const reco::BeamSpot & beamSpot); 00022 00023 VertexCompatibleWithBeam(const VertexCompatibleWithBeam & other); 00024 VertexCompatibleWithBeam & operator=(const VertexCompatibleWithBeam & other); 00025 virtual ~VertexCompatibleWithBeam(); 00026 00027 void setBeamSpot(const reco::BeamSpot & beamSpot); 00028 virtual bool operator()(const reco::Vertex &) const; 00029 virtual bool operator()(const reco::Vertex &, const VertexState &) const; 00030 00031 // return value of VertexDistance to beam 00032 float distanceToBeam(const reco::Vertex &) const; 00033 float distanceToBeam(const reco::Vertex &, const VertexState &) const; 00034 00035 private: 00036 00037 VertexDistance * theDistance; 00038 float theCut; 00039 VertexState theBeam; 00040 00041 }; 00042 00043 #endif