68 if (
mode ==
"firstVertex") {
70 }
else if (
mode ==
"nearestToCandidate") {
72 }
else if (
mode ==
"fromCandidate") {
74 }
else if (
mode ==
"beamSpot") {
78 <<
"PATSingleVertexSelector: Mode '" <<
mode <<
"' not recognized or not supported.\n";
83 : vtxPreselection_(iConfig.existsAs<
std::
string>(
"vertexPreselection")
84 ? iConfig.getParameter<
std::
string>(
"vertexPreselection")
86 candPreselection_(iConfig.existsAs<
std::
string>(
"candidatePreselection")
87 ? iConfig.getParameter<
std::
string>(
"candidatePreselection")
89 doFilterEvents_(
false) {
93 if (iConfig.
exists(
"fallbacks")) {
94 vector<string> modes = iConfig.
getParameter<vector<string>>(
"fallbacks");
95 for (vector<string>::const_iterator
it = modes.begin(), ed = modes.end();
it != ed; ++
it) {
105 [
this](
edm::InputTag const &
tag) { return consumes<edm::View<reco::Candidate>>(tag); });
111 if (iConfig.
exists(
"filter"))
114 produces<vector<reco::Vertex>>();
136 for (vector<reco::Vertex>::const_iterator itv =
vertices->begin(), edv =
vertices->end(); itv != edv; ++itv) {
144 vector<pair<double, reco::CandidatePtr>>
cands;
150 iEvent.getByToken(*itt, theseCands);
155 cands.push_back(pair<double, reco::CandidatePtr>(
164 std::unique_ptr<vector<reco::Vertex>>
result;
166 for (std::vector<Mode>::const_iterator itm =
modes_.begin(), endm =
modes_.end(); itm != endm; ++itm) {
187 auto result = std::make_unique<std::vector<reco::Vertex>>();
216 float dzmin = 9999.0;
217 for (
auto itv =
selVtxs_.begin(), edv =
selVtxs_.end(); itv != edv; ++itv) {
224 if (
which.isNonnull())
Produces a list containing a single vertex selected by some criteria.
edm::EDGetTokenT< reco::BeamSpot > beamSpotToken_
T getParameter(std::string const &) const
const VtxSel vtxPreselection_
~PATSingleVertexSelector() override
bool exists(std::string const ¶meterName) const
checks if a parameter exists
edm::EDGetTokenT< std::vector< reco::Vertex > > verticesToken_
math::Error< dimension >::type Error
covariance error matrix (3x3)
auto vector_transform(std::vector< InputType > const &input, Function predicate) -> std::vector< typename std::remove_cv< typename std::remove_reference< decltype(predicate(input.front()))>::type >::type >
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
std::vector< reco::VertexRef > selVtxs_
bool isNull() const
Checks for null.
reco::CandidatePtr bestCand_
Mode parseMode(const std::string &name) const
Abs< T >::type abs(const T &t)
#define DEFINE_FWK_MODULE(type)
const CandSel candPreselection_
std::vector< edm::EDGetTokenT< edm::View< reco::Candidate > > > candidatesToken_
bool hasMode_(Mode mode) const
bool filter(edm::Event &iEvent, const edm::EventSetup &iSetup) override
PATSingleVertexSelector(const edm::ParameterSet &iConfig)
edm::Ptr< Candidate > CandidatePtr
persistent reference to an object in a collection of Candidate objects
StringCutObjectSelector< reco::Vertex > VtxSel
StringCutObjectSelector< reco::Candidate > CandSel
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
std::unique_ptr< std::vector< reco::Vertex > > filter_(Mode mode, const edm::Event &iEvent, const edm::EventSetup &iSetup)
std::vector< Mode > modes_