File indexing completed on 2023-03-17 11:16:11
0001 #ifndef PatAlgos_PATPrimaryVertexSelector_H_
0002 #define PatAlgos_PATPrimaryVertexSelector_H_
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #include "FWCore/Framework/interface/Event.h"
0017 #include "FWCore/Framework/interface/EventSetup.h"
0018 #include "FWCore/Framework/interface/ConsumesCollector.h"
0019 #include "DataFormats/Common/interface/Handle.h"
0020 #include "DataFormats/VertexReco/interface/Vertex.h"
0021 #include "DataFormats/VertexReco/interface/VertexFwd.h"
0022
0023 class PATPrimaryVertexSelector {
0024 public:
0025 typedef reco::VertexCollection collection;
0026 typedef std::vector<const reco::Vertex*> container;
0027 typedef container::const_iterator const_iterator;
0028 PATPrimaryVertexSelector(const edm::ParameterSet& cfg, edm::ConsumesCollector&& iC);
0029
0030 const_iterator begin() const { return selected_.begin(); }
0031
0032 const_iterator end() const { return selected_.end(); }
0033
0034 void select(const edm::Handle<collection>&, const edm::Event&, const edm::EventSetup&);
0035
0036 size_t size() const { return selected_.size(); }
0037
0038 bool operator()(const reco::Vertex*, const reco::Vertex*) const;
0039
0040 private:
0041
0042 void getVertexVariables(const reco::Vertex&, unsigned int&, double&) const;
0043
0044 bool acceptTrack(const reco::Track&) const;
0045
0046 private:
0047 container selected_;
0048 unsigned int multiplicityCut_;
0049 float ptSumCut_;
0050 float trackEtaCut_;
0051 float chi2Cut_;
0052 float dr2Cut_;
0053 float dzCut_;
0054 };
0055
0056 #endif