diff --git a/Calibration/TkAlCaRecoProducers/plugins/CalibrationTrackSelectorFromDetIdList.cc b/Calibration/TkAlCaRecoProducers/plugins/CalibrationTrackSelectorFromDetIdList.cc index 4c6f97fd747d8..2b05a8724ef9f 100644 --- a/Calibration/TkAlCaRecoProducers/plugins/CalibrationTrackSelectorFromDetIdList.cc +++ b/Calibration/TkAlCaRecoProducers/plugins/CalibrationTrackSelectorFromDetIdList.cc @@ -46,7 +46,7 @@ class dso_hidden CalibrationTrackSelectorFromDetIdList final : public edm::strea void beginRun(edm::Run const& run, const edm::EventSetup&) override; void produce(edm::Event&, const edm::EventSetup&) override; edm::EDGetTokenT m_label; - TrackCandidate makeCandidate(const reco::Track &tk, std::vector::iterator hitsBegin, std::vector::iterator hitsEnd); + TrackCandidate makeCandidate(const reco::Track &tk, std::vector >::iterator hitsBegin, std::vector >::iterator hitsEnd); std::vector detidsels_; bool m_verbose; @@ -90,9 +90,8 @@ void CalibrationTrackSelectorFromDetIdList::produce(edm::Event& iEvent, const ed for (std::vector::const_iterator ittrk = tracks->begin(), edtrk = tracks->end(); ittrk != edtrk; ++ittrk) { const reco::Track *trk = &(*ittrk); - std::vector hits; - hits.clear(); - + std::vector > hits; + bool saveTrack(false); for (trackingRecHit_iterator ith = trk->recHitsBegin(), edh = trk->recHitsEnd(); ith != edh; ++ith) { @@ -108,14 +107,12 @@ void CalibrationTrackSelectorFromDetIdList::produce(edm::Event& iEvent, const ed } // here there will be the selection - hits.push_back(hit->clone()); + hits.emplace_back(hit->clone()); } - std::vector::iterator begin = hits.begin(), end = hits.end(); - if(saveTrack){ - output->push_back( makeCandidate ( *ittrk, begin, end ) ); + output->push_back( makeCandidate ( *ittrk, hits.begin(), hits.end() ) ); } } @@ -123,7 +120,7 @@ void CalibrationTrackSelectorFromDetIdList::produce(edm::Event& iEvent, const ed } TrackCandidate -CalibrationTrackSelectorFromDetIdList::makeCandidate(const reco::Track &tk, std::vector::iterator hitsBegin, std::vector::iterator hitsEnd) { +CalibrationTrackSelectorFromDetIdList::makeCandidate(const reco::Track &tk, std::vector >::iterator hitsBegin, std::vector >::iterator hitsEnd) { PropagationDirection pdir = tk.seedDirection(); PTrajectoryStateOnDet state; @@ -142,7 +139,7 @@ CalibrationTrackSelectorFromDetIdList::makeCandidate(const reco::Track &tk, std: TrackCandidate::RecHitContainer ownHits; ownHits.reserve(hitsEnd - hitsBegin); for ( ; hitsBegin != hitsEnd; ++hitsBegin) { - ownHits.push_back( *hitsBegin ); + ownHits.push_back( hitsBegin->release() ); } TrackCandidate cand(ownHits, seed, state, tk.seedRef());