Skip to content

Commit

Permalink
Merge pull request #24626 from Sam-Harper/MemLeakFixForTrkSel1030pre3
Browse files Browse the repository at this point in the history
Fixing memory leak in new Tracking AlCa producer
  • Loading branch information
cmsbuild committed Sep 28, 2018
2 parents 6cb583d + dd4bef9 commit 286baaa
Showing 1 changed file with 7 additions and 10 deletions.
Expand Up @@ -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<reco::TrackCollection> m_label;
TrackCandidate makeCandidate(const reco::Track &tk, std::vector<TrackingRecHit *>::iterator hitsBegin, std::vector<TrackingRecHit *>::iterator hitsEnd);
TrackCandidate makeCandidate(const reco::Track &tk, std::vector<std::unique_ptr<TrackingRecHit> >::iterator hitsBegin, std::vector<std::unique_ptr<TrackingRecHit> >::iterator hitsEnd);

std::vector<DetIdSelector> detidsels_;
bool m_verbose;
Expand Down Expand Up @@ -90,9 +90,8 @@ void CalibrationTrackSelectorFromDetIdList::produce(edm::Event& iEvent, const ed
for (std::vector<reco::Track>::const_iterator ittrk = tracks->begin(), edtrk = tracks->end(); ittrk != edtrk; ++ittrk) {
const reco::Track *trk = &(*ittrk);

std::vector<TrackingRecHit *> hits;
hits.clear();

std::vector<std::unique_ptr<TrackingRecHit> > hits;

bool saveTrack(false);

for (trackingRecHit_iterator ith = trk->recHitsBegin(), edh = trk->recHitsEnd(); ith != edh; ++ith) {
Expand All @@ -108,22 +107,20 @@ 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<TrackingRecHit *>::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() ) );
}

}
iEvent.put(std::move(output));
}

TrackCandidate
CalibrationTrackSelectorFromDetIdList::makeCandidate(const reco::Track &tk, std::vector<TrackingRecHit *>::iterator hitsBegin, std::vector<TrackingRecHit *>::iterator hitsEnd) {
CalibrationTrackSelectorFromDetIdList::makeCandidate(const reco::Track &tk, std::vector<std::unique_ptr<TrackingRecHit> >::iterator hitsBegin, std::vector<std::unique_ptr<TrackingRecHit> >::iterator hitsEnd) {

PropagationDirection pdir = tk.seedDirection();
PTrajectoryStateOnDet state;
Expand All @@ -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());
Expand Down

0 comments on commit 286baaa

Please sign in to comment.