From bea5d8da6ee3ba19a33c26a6f2c32b5acd120b45 Mon Sep 17 00:00:00 2001
From: Walter Lampl <Walter.Lampl@cern.ch>
Date: Tue, 8 Dec 2020 18:35:31 +0100
Subject: [PATCH] add few delete statements to fix leaks in
 CombinedMuonTrackBuilder

---
 .../MuidTrackBuilder/src/CombinedMuonTrackBuilder.cxx        | 5 ++++-
 .../MuonCombinedBaseTools/src/MuonCandidateTool.cxx          | 1 +
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/Reconstruction/MuonIdentification/MuidTrackBuilder/src/CombinedMuonTrackBuilder.cxx b/Reconstruction/MuonIdentification/MuidTrackBuilder/src/CombinedMuonTrackBuilder.cxx
index 82b44be853bd..42bea06c3c07 100755
--- a/Reconstruction/MuonIdentification/MuidTrackBuilder/src/CombinedMuonTrackBuilder.cxx
+++ b/Reconstruction/MuonIdentification/MuidTrackBuilder/src/CombinedMuonTrackBuilder.cxx
@@ -1560,6 +1560,7 @@ CombinedMuonTrackBuilder::standaloneFit(const Trk::Track& inputSpectrometerTrack
         // fail as calo incorrectly described
         m_messageHelper->printWarning(12);
         delete track;
+	delete extrapolated;
         spectrometerTSOS->clear();
         delete spectrometerTSOS;
 
@@ -1576,7 +1577,7 @@ CombinedMuonTrackBuilder::standaloneFit(const Trk::Track& inputSpectrometerTrack
 
     if (m_refineELossStandAloneTrackFit) {
         ATH_MSG_VERBOSE("Refining Calorimeter TSOS in StandAlone Fit ...");
-        std::unique_ptr<Trk::Track> oldTrack = std::make_unique<Trk::Track>(Trk::Track(*track));
+        std::unique_ptr<Trk::Track> oldTrack = std::make_unique<Trk::Track>(Trk::Track(*track)); //Deep copy of track here??? 
 
         m_materialUpdator->updateCaloTSOS(*track);
 
@@ -1592,6 +1593,7 @@ CombinedMuonTrackBuilder::standaloneFit(const Trk::Track& inputSpectrometerTrack
             track = refinedTrack;
         } else {
             ATH_MSG_VERBOSE("refined track fit failed");
+	    delete track;
             track = oldTrack.release();
             improvementsFailed++;
         }
@@ -1645,6 +1647,7 @@ CombinedMuonTrackBuilder::standaloneFit(const Trk::Track& inputSpectrometerTrack
             ++m_countDegradedStandaloneFit;
             if (improvementsFailed == 2) {
                 ATH_MSG_WARNING("reject track, quality degraded and improvements failed");
+		delete track;
                 return nullptr;
             }
         }
diff --git a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCandidateTool.cxx b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCandidateTool.cxx
index 7092da07242c..a41f99e43186 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCandidateTool.cxx
+++ b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCandidateTool.cxx
@@ -119,6 +119,7 @@ namespace MuonCombined {
 	  }
 	}
 	if(!skipTrack){
+	  delete standaloneTrack;
 	  standaloneTrack=new Trk::Track(msTrack);
 	  trackLinks[ standaloneTrack ] = std::make_pair(trackLink,nullptr);
 	}
-- 
GitLab