From f58016228376d5db1022fa61020a5e1d1e1bd6c9 Mon Sep 17 00:00:00 2001
From: Bastian Schlag <bastian.schlag@cern.ch>
Date: Wed, 11 Nov 2020 13:47:12 +0100
Subject: [PATCH] fix mem leak in acts vertexing

---
 .../src/ActsAdaptiveMultiPriVtxFinderTool.cxx    | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/Tracking/Acts/ActsPriVtxFinder/src/ActsAdaptiveMultiPriVtxFinderTool.cxx b/Tracking/Acts/ActsPriVtxFinder/src/ActsAdaptiveMultiPriVtxFinderTool.cxx
index 617ce48c3ad..7a79a9e10f2 100755
--- a/Tracking/Acts/ActsPriVtxFinder/src/ActsAdaptiveMultiPriVtxFinderTool.cxx
+++ b/Tracking/Acts/ActsPriVtxFinder/src/ActsAdaptiveMultiPriVtxFinderTool.cxx
@@ -47,7 +47,7 @@ namespace
 StatusCode
 ActsAdaptiveMultiPriVtxFinderTool::initialize()
 {
-	using namespace std::literals::string_literals;
+    using namespace std::literals::string_literals;
 
     ATH_CHECK(m_beamSpotKey.initialize());
     ATH_CHECK(m_trkFilter.retrieve());
@@ -66,7 +66,7 @@ ActsAdaptiveMultiPriVtxFinderTool::initialize()
     auto stepper = Acts::EigenStepper<BField_t>(std::move(bField));
     auto propagator = std::make_shared<Propagator>(std::move(stepper), 
       std::move(navigator));
-  	// IP Estimator
+    // IP Estimator
     using IPEstimator = Acts::ImpactPointEstimator<TrackWrapper, Propagator>;
     IPEstimator::Config ipEstCfg(bField, propagator);
     ipEstCfg.maxIterations = m_ipEstMaxIterations;
@@ -92,7 +92,7 @@ ActsAdaptiveMultiPriVtxFinderTool::initialize()
     fitterCfg.doSmoothing = m_fitterDoSmoothing;
     VertexFitter fitter(fitterCfg, extractParameters);
 
-  	// Linearizer for Acts::BoundParameters type test
+    // Linearizer for Acts::BoundParameters type test
     TrackLinearizer::Config ltConfig(bField, propagator);
     TrackLinearizer linearizer(ltConfig);
 
@@ -322,15 +322,15 @@ ActsAdaptiveMultiPriVtxFinderTool::findVertex(const EventContext& ctx, std::vect
         }
 
         Trk::Perigee* fittedPerigee = actsBoundToTrkPerigee(trk.fittedParams, beamSpotPos);
-        Trk::Perigee* originalPerigee = actsBoundToTrkPerigee((trk.originalParams)->parameters(), beamSpotPos);
-
-        Trk::VxTrackAtVertex trkAtVtx(trk.chi2Track, fittedPerigee, originalPerigee);
+        Trk::VxTrackAtVertex trkAtVtx((trk.originalParams)->trackLink()->clone());
+        trkAtVtx.setPerigeeAtVertex(fittedPerigee);
+        trkAtVtx.setTrackQuality(Trk::FitQuality(trk.chi2Track, trk.ndf));
         trkAtVtx.setVtxCompatibility(trk.vertexCompatibility);
         trkAtVtx.setWeight(trk.trackWeight);
         trkAtVtxVec->push_back(trkAtVtx);
 
-        Trk::LinkToXAODTrackParticle* linkToXAODTP =
-        dynamic_cast<Trk::LinkToXAODTrackParticle*>((trk.originalParams)->trackLink()->clone());
+        const Trk::LinkToXAODTrackParticle* linkToXAODTP =
+        dynamic_cast<const Trk::LinkToXAODTrackParticle*>((trk.originalParams)->trackLink());
         if (linkToXAODTP) {
           xAODVtx->addTrackAtVertex(*linkToXAODTP, trk.trackWeight);
         }
-- 
GitLab