@@ -160,8 +160,7 @@ void DisplacedRegionSeedingVertexProducer::produce(edm::StreamID streamID,
160160 }
161161
162162 const auto pseudoROIPred = [](const DisplacedVertexCluster &a) { return !a.valid (); };
163- auto remove_it = std::remove_if (pseudoROIs.begin (), pseudoROIs.end (), pseudoROIPred);
164- pseudoROIs.erase (remove_it, pseudoROIs.end ());
163+ auto remove_invalid = std::remove_if (pseudoROIs.begin (), pseudoROIs.end (), pseudoROIPred);
165164
166165 // Remove invalid ROIs.
167166 const auto roiPred = [&](const DisplacedVertexCluster &roi) {
@@ -175,16 +174,16 @@ void DisplacedRegionSeedingVertexProducer::produce(edm::StreamID streamID,
175174 return true ;
176175 return false ;
177176 };
178- auto remove_it2 = std::remove_if (pseudoROIs.begin (), pseudoROIs.end (), roiPred);
179- pseudoROIs.erase (remove_it2, pseudoROIs.end ());
177+ auto remove_pred = std::remove_if (pseudoROIs.begin (), remove_invalid, roiPred);
180178
181179 auto nearRegionsOfInterest = make_unique<vector<reco::Vertex> >();
182180 auto farRegionsOfInterest = make_unique<vector<reco::Vertex> >();
183181
184182 constexpr std::array<double , 6 > errorA{{1.0 , 0.0 , 1.0 , 0.0 , 0.0 , 1.0 }};
185183 static const reco::Vertex::Error errorRegion (errorA.begin (), errorA.end (), true , true );
186184
187- for (const auto &roi : pseudoROIs) {
185+ for (auto it = pseudoROIs.begin (); it != remove_pred; ++it) {
186+ auto const &roi = *it;
188187 const auto &x (roi.centerOfMass ());
189188 if ((x - bs).rho () < nearThreshold_)
190189 nearRegionsOfInterest->emplace_back (reco::Vertex::Point (roi.centerOfMass ()), errorRegion);
0 commit comments