From aba9a0a3559b45d69af367e3194eb01fcc17d2bb Mon Sep 17 00:00:00 2001
From: scott snyder <snyder@bnl.gov>
Date: Wed, 8 Jul 2020 17:54:23 +0200
Subject: [PATCH] InDetAlignmentMonitoring: createSummary -> summary

Use ITrackSummaryTool::summary instead of createSummary to resolve
thread-safety issues.
---
 .../src/IDAlignMonEfficiencies.cxx                        | 6 ++----
 .../InDetAlignmentMonitoring/src/IDAlignMonSivsTRT.cxx    | 8 +++-----
 .../src/IDAlignMonTrackSegments.cxx                       | 8 ++------
 .../InDetAlignmentMonitoring/src/TrackSelectionAlg.cxx    | 8 ++------
 4 files changed, 9 insertions(+), 21 deletions(-)

diff --git a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonEfficiencies.cxx b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonEfficiencies.cxx
index 190c97da5a76..a3651a9ff7bd 100755
--- a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonEfficiencies.cxx
+++ b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonEfficiencies.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 // **********************************************************************
@@ -1237,13 +1237,11 @@ StatusCode IDAlignMonEfficiencies::fillHistograms()
       } // end of outliers 
     } // TSOS on track 
     
-    const Trk::TrackSummary* summary = m_trackSumTool->createSummary(**trksItr);
+    std::unique_ptr<Trk::TrackSummary> summary = m_trackSumTool->summary(**trksItr);
     if( !summary->get(Trk::numberOfPixelHits) && !summary->get(Trk::numberOfSCTHits) && (summary->get(Trk::numberOfPixelHoles)==0) && (summary->get(Trk::numberOfSCTHoles)==0) && (m_doHoleSearch)){
       if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "No Pixel or SCT hits skip hole search" << endmsg;
-      delete summary;
       continue;
     }
-    delete summary;
 
     const DataVector<const Trk::TrackStateOnSurface>* HTSOS;
     HTSOS = m_holeSearchTool->getHolesOnTrack(**trksItr); 
diff --git a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonSivsTRT.cxx b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonSivsTRT.cxx
index 23b83e689896..35c72f34082e 100644
--- a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonSivsTRT.cxx
+++ b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonSivsTRT.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 // **********************************************************************
@@ -276,15 +276,13 @@ StatusCode IDAlignMonSivsTRT::fillHistograms()
       continue;
     }
 
-    const Trk::TrackSummary* summary = NULL;       
-    summary = m_trackSumTool->createSummary(*trackTRT);
+    std::unique_ptr<Trk::TrackSummary> summary = m_trackSumTool->summary(*trackTRT);
     int nhpix=0, nhsct=0, nhtrt=0;
 
-    if ( summary != NULL ){
+    if ( summary  ){
       nhpix = summary->get(Trk::numberOfPixelHits);
       nhsct = summary->get(Trk::numberOfSCTHits);
       nhtrt = summary->get(Trk::numberOfTRTHits);
-      delete summary;
     }
     
 
diff --git a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonTrackSegments.cxx b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonTrackSegments.cxx
index 25a6de7bcc24..7c4f54fc87e9 100644
--- a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonTrackSegments.cxx
+++ b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonTrackSegments.cxx
@@ -681,8 +681,7 @@ StatusCode IDAlignMonTrackSegments::fillHistograms()
     }else
       if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Got the "<< nTracksUpper << " Upper Track" << endmsg;
 
-    const Trk::TrackSummary* summary = NULL;       
-    summary = m_trackSumTool->createSummary(*trackUpper);
+    std::unique_ptr<Trk::TrackSummary> summary = m_trackSumTool->summary(*trackUpper);
     unsigned int nHitsPixUp = 0;
     unsigned int nHitsSCTUp=0;
     unsigned int nHitsTRTUp=0;
@@ -690,7 +689,6 @@ StatusCode IDAlignMonTrackSegments::fillHistograms()
     nHitsSCTUp = summary->get(Trk::numberOfSCTHits);
     nHitsTRTUp = summary->get(Trk::numberOfTRTHits);
     unsigned int nHitsUp = nHitsPixUp + nHitsSCTUp + nHitsTRTUp;
-    delete summary;
 
     
     const Trk::Perigee* measUpperPer = trackUpper->perigeeParameters();
@@ -797,8 +795,7 @@ StatusCode IDAlignMonTrackSegments::fillHistograms()
 	continue;
       }
 
-      const Trk::TrackSummary* summary = NULL;       
-      summary = m_trackSumTool->createSummary(*trackLower);
+      std::unique_ptr<Trk::TrackSummary> summary = m_trackSumTool->summary(*trackLower);
       unsigned int nHitsPixLow = 0;
       unsigned int nHitsSCTLow = 0;
       unsigned int nHitsTRTLow = 0;
@@ -806,7 +803,6 @@ StatusCode IDAlignMonTrackSegments::fillHistograms()
       nHitsSCTLow = summary->get(Trk::numberOfSCTHits);
       nHitsTRTLow = summary->get(Trk::numberOfTRTHits);
       nHitsLow = nHitsPixLow + nHitsSCTLow + nHitsTRTLow;
-      delete summary;
 
       
       const Trk::Perigee* measLowerPer = trackLower->perigeeParameters();
diff --git a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/TrackSelectionAlg.cxx b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/TrackSelectionAlg.cxx
index 1f03f22ba693..8c30ca9ee67e 100644
--- a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/TrackSelectionAlg.cxx
+++ b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/TrackSelectionAlg.cxx
@@ -164,8 +164,7 @@ bool TrackSelectionAlg::makeTrackCuts(const Trk::Track* track, float zVtx)
   if(z0zVtx > m_trackMaxVtxZ0) trackPassed = false;
   if(fabs(d0) > m_trackMaxD0) trackPassed = false;
 
-  const Trk::TrackSummary* summary = NULL;       
-  summary = m_trackSumTool->createSummary(*track);
+  std::unique_ptr<Trk::TrackSummary> summary = m_trackSumTool->summary(*track);
   
   int nhtrt = 0;
   int nhtrtHT = 0;
@@ -173,7 +172,7 @@ bool TrackSelectionAlg::makeTrackCuts(const Trk::Track* track, float zVtx)
   int nhsct = 0;
   int nhblay = 0;
 
-  if(summary==0){
+  if(!summary){
     if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Could not create TrackSummary  - Track will likely fail hits requirements" << endmsg;}  
   else{
 
@@ -191,8 +190,5 @@ bool TrackSelectionAlg::makeTrackCuts(const Trk::Track* track, float zVtx)
   if(nhtrt < m_minTRTHits) trackPassed = false;
   if(nhtrtHT < m_minTRTHitsHT) trackPassed = false;
 
-    
-  delete summary;
-  
   return trackPassed;
 }
-- 
GitLab