From 89b181daf6ba0e89d3ddb10b56463858dc3d4135 Mon Sep 17 00:00:00 2001
From: Christos Anastopoulos <christos.anastopoulos@cern.ch>
Date: Fri, 4 Dec 2020 17:47:20 +0000
Subject: [PATCH] Start a bit of cleanup on I(Extended)TrackSummaryTool

---
 .../InDetTrackSummaryHelperTool.h             |  75 ++++++-------
 .../src/InDetTrackSummaryHelperTool.cxx       |  65 +++++++----
 .../src/MuonTrackSummaryHelperTool.h          |  78 +++++---------
 .../ISF_TrackSummaryHelperTool.h              | 101 +++++++-----------
 .../src/ISF_TrackSummaryHelperTool.cxx        |  68 ++++++------
 .../IExtendedTrackSummaryHelperTool.h         |  81 ++++++++------
 .../ITrackSummaryHelperTool.h                 |  44 ++++----
 .../src/TrackSummaryTool.cxx                  |   8 +-
 8 files changed, 253 insertions(+), 267 deletions(-)

diff --git a/InnerDetector/InDetRecTools/InDetTrackSummaryHelperTool/InDetTrackSummaryHelperTool/InDetTrackSummaryHelperTool.h b/InnerDetector/InDetRecTools/InDetTrackSummaryHelperTool/InDetTrackSummaryHelperTool/InDetTrackSummaryHelperTool.h
index 5d44f38c256..1309b85481c 100755
--- a/InnerDetector/InDetRecTools/InDetTrackSummaryHelperTool/InDetTrackSummaryHelperTool/InDetTrackSummaryHelperTool.h
+++ b/InnerDetector/InDetRecTools/InDetTrackSummaryHelperTool/InDetTrackSummaryHelperTool/InDetTrackSummaryHelperTool.h
@@ -58,6 +58,8 @@ namespace InDet {
         Input quantities rot, tsos are used to increment the counts for hits and outliers in information and to set the proper bits in hitPattern.
     */
     using IExtendedTrackSummaryHelperTool::analyse;
+    using IExtendedTrackSummaryHelperTool::addDetailedTrackSummary;
+
     virtual void analyse(
       const EventContext& ctx,
       const Trk::Track& track,
@@ -74,49 +76,34 @@ namespace InDet {
       const Trk::CompetingRIOsOnTrack* crot,
       const Trk::TrackStateOnSurface* tsos,
       std::vector<int>& information,
-      std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const override final;
+      std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const override final ;
+    /** @copydoc Trk::ITrackSummaryHelperTool::addDetailedTrackSummary(const
+     * Trk::Track&, Trk::TrackSummary&)*/
 
-    virtual void analyse(
-      const Trk::Track& track,
-      const Trk::RIO_OnTrack* rot,
-      const Trk::TrackStateOnSurface* tsos,
-      std::vector<int>& information,
-      std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const override
-    {
-      analyse(track, nullptr, rot, tsos, information, hitPattern);
-    }
-
-    virtual void analyse(
-      const Trk::Track& track,
-      const Trk::CompetingRIOsOnTrack* crot,
-      const Trk::TrackStateOnSurface* tsos,
-      std::vector<int>& information,
-      std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const override
-    {
-      analyse(track, nullptr, crot, tsos, information, hitPattern);
-    }
+    virtual void addDetailedTrackSummary(const EventContext& ctx,
+                                         const Trk::Track&,
+                                         Trk::TrackSummary&) const override final;
 
     /** Input : track, partHyp
         Output: Changes in information
-        This method first calls the method getListOfHits to isolate the relevant hits on the track before calling the method
-        performHoleSearchStepWise which then performs the actual hole search.
-        Additionally the Layers of the Pixel Detector which contribute measurements to the track are counted  
-        If problems occur, the information counters for Holes and PixelLayers are reset to -1 flagging them as not set.
+        This method first calls the method getListOfHits to isolate the relevant
+       hits on the track before calling the method performHoleSearchStepWise
+       which then performs the actual hole search. Additionally the Layers of
+       the Pixel Detector which contribute measurements to the track are counted
+        If problems occur, the information counters for Holes and PixelLayers
+       are reset to -1 flagging them as not set.
     */
-    virtual void searchForHoles(const Trk::Track& track, 
-                        std::vector<int>& information ,
-                        const Trk::ParticleHypothesis partHyp = Trk::pion) const override;
-
-    /** this method simply updaes the shared hit content - it is designed/optimised for track collection merging */
-    virtual void updateSharedHitCount(const Trk::Track& track,
-                                      const Trk::PRDtoTrackMap *prd_to_track_map,
-                                      Trk::TrackSummary& summary) const override;
-
-    /** this method simply updaes the shared hit content - it is designed/optimised for track collection merging */
-    virtual void updateSharedHitCount(const Trk::Track& track,
-                                      Trk::TrackSummary& summary) const override {
-      updateSharedHitCount(track,nullptr,summary);
-    }
+    virtual void searchForHoles(
+      const Trk::Track& track,
+      std::vector<int>& information,
+      const Trk::ParticleHypothesis partHyp = Trk::pion) const override final;
+
+    /** this method simply updaes the shared hit content - it is
+     * designed/optimised for track collection merging */
+    virtual void updateSharedHitCount(
+      const Trk::Track& track,
+      const Trk::PRDtoTrackMap* prd_to_track_map,
+      Trk::TrackSummary& summary) const override final;
 
     /** this method simply updaes the electron PID content - it is
      * designed/optimised for track collection merging */
@@ -124,14 +111,12 @@ namespace InDet {
                                       std::vector<float>& eprob,
                                       float& dedx,
                                       int& nclus,
-                                      int& noverflowclus) const override;
-    /** This method updates the expect... hit info*/
-    virtual void updateExpectedHitInfo(const Trk::Track& track, Trk::TrackSummary& summary) const override;
-
-    /** @copydoc Trk::ITrackSummaryHelperTool::addDetailedTrackSummary(const Trk::Track&, Trk::TrackSummary&)*/
-
-    virtual void addDetailedTrackSummary(const Trk::Track&, Trk::TrackSummary&) const override;
+                                      int& noverflowclus) const override final;
 
+    /** This method updates the expect... hit info*/
+    virtual void updateExpectedHitInfo(
+      const Trk::Track& track,
+      Trk::TrackSummary& summary) const override final;
 
   private:
     const Trk::ClusterSplitProbabilityContainer::ProbabilityInfo&
diff --git a/InnerDetector/InDetRecTools/InDetTrackSummaryHelperTool/src/InDetTrackSummaryHelperTool.cxx b/InnerDetector/InDetRecTools/InDetTrackSummaryHelperTool/src/InDetTrackSummaryHelperTool.cxx
index e9482a0348b..5e2967a1bb7 100755
--- a/InnerDetector/InDetRecTools/InDetTrackSummaryHelperTool/src/InDetTrackSummaryHelperTool.cxx
+++ b/InnerDetector/InDetRecTools/InDetTrackSummaryHelperTool/src/InDetTrackSummaryHelperTool.cxx
@@ -395,8 +395,13 @@ void InDet::InDetTrackSummaryHelperTool::updateSharedHitCount(const Trk::Track &
               if (pixPrd and splitProb.isSplit()) {
                 summary.m_information[Trk::numberOfPixelSplitHits]++;
                 hitIsSplit=true;
-                if ( m_pixelId->is_barrel(id) and m_pixelId->layer_disk(id)==0) summary.m_information[Trk::numberOfInnermostLayerSplitHits]++;
-                if ( m_pixelId->is_barrel(id) and m_pixelId->layer_disk(id)==1) summary.m_information[Trk::numberOfNextToInnermostLayerSplitHits]++;
+                if (m_pixelId->is_barrel(id) and m_pixelId->layer_disk(id) == 0){
+                  summary.m_information[Trk::numberOfInnermostLayerSplitHits]++;
+                }
+                if (m_pixelId->is_barrel(id) and m_pixelId->layer_disk(id) == 1){
+                  summary.m_information
+                    [Trk::numberOfNextToInnermostLayerSplitHits]++;
+                }
               }
             }
           }
@@ -434,7 +439,11 @@ void InDet::InDetTrackSummaryHelperTool::updateSharedHitCount(const Trk::Track &
   return;
 }
 
-void  InDet::InDetTrackSummaryHelperTool::updateExpectedHitInfo(const Trk::Track &track, Trk::TrackSummary& summary) const{
+void
+InDet::InDetTrackSummaryHelperTool::updateExpectedHitInfo(
+  const Trk::Track& track,
+  Trk::TrackSummary& summary) const
+{
 
   if (m_usePixel and not m_testBLayerTool.empty() ) {
 
@@ -475,9 +484,14 @@ void  InDet::InDetTrackSummaryHelperTool::updateExpectedHitInfo(const Trk::Track
   return;
 }
 
-
-void InDet::InDetTrackSummaryHelperTool::updateAdditionalInfo(Trk::TrackSummary& summary, std::vector<float>& eprob,
-                                                              float& dedx, int& nclus, int& noverflowclus) const {
+void
+InDet::InDetTrackSummaryHelperTool::updateAdditionalInfo(
+  Trk::TrackSummary& summary,
+  std::vector<float>& eprob,
+  float& dedx,
+  int& nclus,
+  int& noverflowclus) const
+{
   summary.m_eProbability = eprob;
   summary.m_dedx = dedx;
   summary.m_nhitsdedx =  nclus;
@@ -486,34 +500,49 @@ void InDet::InDetTrackSummaryHelperTool::updateAdditionalInfo(Trk::TrackSummary&
   return;
 }
 
-void  InDet::InDetTrackSummaryHelperTool::addDetailedTrackSummary(const Trk::Track& track, Trk::TrackSummary& summary) const {
+void
+InDet::InDetTrackSummaryHelperTool::addDetailedTrackSummary(
+  const EventContext& ctx,
+  const Trk::Track& track,
+  Trk::TrackSummary& summary) const
+{
   if (summary.m_indetTrackSummary and not m_overwriteidsummary) {
-    ATH_MSG_DEBUG("TrackSummary already has detailed indet track summary, not adding a new one");
+    ATH_MSG_DEBUG("TrackSummary already has detailed indet track summary, not "
+                  "adding a new one");
     return;
   }
   if (not m_usePixel) {
-    ATH_MSG_DEBUG("Pixels are off, so no need for an detailed indet track summary");
+    ATH_MSG_DEBUG(
+      "Pixels are off, so no need for an detailed indet track summary");
     return;
   }
   ATH_MSG_DEBUG("Adding detailed indet track summary");
   delete summary.m_indetTrackSummary;
   Trk::InDetTrackSummary* indetTrackSummary = new Trk::InDetTrackSummary();
-  Trk::InDetTrackSummary& trackSummary      = *indetTrackSummary;
-  if (m_usePixel and not m_pixeldedxtool.empty() and (track.perigeeParameters() or not track.trackParameters()->empty())) {
+  Trk::InDetTrackSummary& trackSummary = *indetTrackSummary;
+  if (m_usePixel and not m_pixeldedxtool.empty() and
+      (track.perigeeParameters() or not track.trackParameters()->empty())) {
     const Trk::TrackParameters* par = track.perigeeParameters();
-    if (par==nullptr) par = *track.trackParameters()->begin();
-    double p      = (par->parameters()[Trk::qOverP]!=0) ? 1./par->parameters()[Trk::qOverP] : 1.e15;
-    double dedx   = summary.getPixeldEdx();
+
+    if (par == nullptr){
+      par = *track.trackParameters()->begin();
+    }
+    double p = (par->parameters()[Trk::qOverP] != 0)
+                 ? 1. / par->parameters()[Trk::qOverP]
+                 : 1.e15;
+    double dedx = summary.getPixeldEdx();
     int ngoodhits = summary.numberOfUsedHitsdEdx();
-    if (ngoodhits>0 and dedx>0 and track.info().trackFitter()!=Trk::TrackInfo::Unknown and p<1.e15) {
-      trackSummary.m_likelihoodspixeldedx = m_pixeldedxtool->getLikelihoods(dedx, p, ngoodhits);
-      trackSummary.m_massdedx             = m_pixeldedxtool->getMass(dedx, p, ngoodhits);
+    if (ngoodhits > 0 and dedx > 0 and
+        track.info().trackFitter() != Trk::TrackInfo::Unknown and p < 1.e15) {
+      trackSummary.m_likelihoodspixeldedx =
+        m_pixeldedxtool->getLikelihoods(ctx, dedx, p, ngoodhits);
+      trackSummary.m_massdedx =
+        m_pixeldedxtool->getMass(ctx, dedx, p, ngoodhits);
     }
   }
   summary.m_indetTrackSummary = indetTrackSummary;
 }
 
-// ====================================================================================================================
 
 StatusCode InDet::InDetTrackSummaryHelperTool::finalize() {
   return StatusCode::SUCCESS;
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTrackSummaryHelperTool/src/MuonTrackSummaryHelperTool.h b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTrackSummaryHelperTool/src/MuonTrackSummaryHelperTool.h
index 2b072f2b099..879a5f3f0fe 100755
--- a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTrackSummaryHelperTool/src/MuonTrackSummaryHelperTool.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTrackSummaryHelperTool/src/MuonTrackSummaryHelperTool.h
@@ -45,58 +45,38 @@ namespace Muon {
         
     virtual StatusCode initialize() override;
 
-    using IExtendedTrackSummaryHelperTool::analyse;    
-    using IExtendedTrackSummaryHelperTool::updateSharedHitCount;    
+    using IExtendedTrackSummaryHelperTool::analyse;
+    using IExtendedTrackSummaryHelperTool::updateSharedHitCount;
+    using IExtendedTrackSummaryHelperTool::addDetailedTrackSummary;
     virtual void analyse(
-                         const Trk::Track& trk,
-                         const Trk::RIO_OnTrack* rot,
-                         const Trk::TrackStateOnSurface* tsos,
-                         std::vector<int>& information,
-                         std::bitset<Trk::numberOfDetectorTypes>& hitPattern  ) const override;
-
-    virtual void analyse( 
-                         const Trk::Track& trk,
-                         const Trk::CompetingRIOsOnTrack* crot,
-                         const Trk::TrackStateOnSurface* tsos,
-                         std::vector<int>& information,
-                         std::bitset<Trk::numberOfDetectorTypes>& hitPattern ) const override;
+      const Trk::Track& trk,
+      const Trk::RIO_OnTrack* rot,
+      const Trk::TrackStateOnSurface* tsos,
+      std::vector<int>& information,
+      std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const override final;
 
     virtual void analyse(
-                         const Trk::Track& trk,
-                         const Trk::PRDtoTrackMap *prd_to_track_map,
-                         const Trk::RIO_OnTrack* rot,
-                         const Trk::TrackStateOnSurface* tsos,
-                         std::vector<int>& information,
-                         std::bitset<Trk::numberOfDetectorTypes>& hitPattern  ) const override {
-      (void) prd_to_track_map;
-      analyse(trk,rot,tsos,information,hitPattern);
-    }
-
-    virtual void analyse(
-                         const Trk::Track& trk,
-                         const Trk::PRDtoTrackMap *prd_to_track_map,
-                         const Trk::CompetingRIOsOnTrack* crot,
-                         const Trk::TrackStateOnSurface* tsos,
-                         std::vector<int>& information,
-                         std::bitset<Trk::numberOfDetectorTypes>& hitPattern ) const override {
-      (void) prd_to_track_map;
-      analyse(trk,crot,tsos,information, hitPattern);
-    }
-
-    virtual
-    void searchForHoles(
-                        const Trk::Track& track,
-                        std::vector<int>& information, Trk::ParticleHypothesis hyp) const override;
-
-    virtual
-    void updateSharedHitCount(const Trk::Track&,
-                              const Trk::PRDtoTrackMap *,
-                              Trk::TrackSummary&) const override  {};
-
-    virtual
-    void addDetailedTrackSummary( const Trk::Track& track, Trk::TrackSummary& summary ) const override;
-
-private:
+      const Trk::Track& trk,
+      const Trk::CompetingRIOsOnTrack* crot,
+      const Trk::TrackStateOnSurface* tsos,
+      std::vector<int>& information,
+      std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const override final;
+
+    virtual void searchForHoles(
+      const Trk::Track& track,
+      std::vector<int>& information,
+      Trk::ParticleHypothesis hyp) const override final;
+
+    virtual void updateSharedHitCount(
+      const Trk::Track&,
+      const Trk::PRDtoTrackMap*,
+      Trk::TrackSummary&) const override final{};
+
+    virtual void addDetailedTrackSummary(
+      const Trk::Track& track,
+      Trk::TrackSummary& summary) const override final;
+
+  private:
 
     const MdtPrepDataCollection* findMdtPrdCollection( const Identifier& chId ) const;
     void calculateRoadHits(Trk::MuonTrackSummary::ChamberHitSummary& chamberHitSummary, const Trk::TrackParameters& pars) const;
diff --git a/Simulation/ISF/ISF_Fatras/ISF_FatrasRecoTools/ISF_FatrasRecoTools/ISF_TrackSummaryHelperTool.h b/Simulation/ISF/ISF_Fatras/ISF_FatrasRecoTools/ISF_FatrasRecoTools/ISF_TrackSummaryHelperTool.h
index f1478e30d46..dc460948270 100644
--- a/Simulation/ISF/ISF_Fatras/ISF_FatrasRecoTools/ISF_FatrasRecoTools/ISF_TrackSummaryHelperTool.h
+++ b/Simulation/ISF/ISF_Fatras/ISF_FatrasRecoTools/ISF_FatrasRecoTools/ISF_TrackSummaryHelperTool.h
@@ -46,76 +46,55 @@ namespace iFatras {
     */
     using IExtendedTrackSummaryHelperTool::analyse;
     using IExtendedTrackSummaryHelperTool::updateSharedHitCount;
-    virtual void analyse(const Trk::Track& track,
-                         const Trk::PRDtoTrackMap *prd_to_track_map,
-                         const Trk::RIO_OnTrack* rot,
-                         const Trk::TrackStateOnSurface* tsos,
-                         std::vector<int>& information,
-                         std::bitset<Trk::numberOfDetectorTypes>& hitPattern ) const override;
-
-    virtual void analyse(const Trk::Track& track,
-                         const Trk::PRDtoTrackMap *prd_to_track_map,
-                         const Trk::CompetingRIOsOnTrack* crot,
-                         const Trk::TrackStateOnSurface* tsos,
-                         std::vector<int>& information,
-                         std::bitset<Trk::numberOfDetectorTypes>& hitPattern ) const override;
-
-    /** Input : rot, tsos
-	Output: Changes in information and hitPattern
-	Input: quantities rot, tsos are used to increment the counts for hits and outliers in information and to set the proper bits inhitPattern.
-    */
-    virtual void analyse(const Trk::Track& track,
-			 const Trk::RIO_OnTrack* rot,
-			 const Trk::TrackStateOnSurface* tsos,
-			 std::vector<int>& information,
-			 std::bitset<Trk::numberOfDetectorTypes>& hitPattern ) const override
-    {
-      analyse(track,nullptr,rot,tsos,information,hitPattern);
-    }
+    using IExtendedTrackSummaryHelperTool::addDetailedTrackSummary;
+    virtual void analyse(
+      const EventContext& ctx,
+      const Trk::Track& track,
+      const Trk::PRDtoTrackMap* prd_to_track_map,
+      const Trk::RIO_OnTrack* rot,
+      const Trk::TrackStateOnSurface* tsos,
+      std::vector<int>& information,
+      std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const override final;
 
     /** Not used --> running with RIO_OnTrack only
-    */
-    virtual void analyse(const Trk::Track& track,
-			 const Trk::CompetingRIOsOnTrack* crot,
-			 const Trk::TrackStateOnSurface* tsos,
-			 std::vector<int>& information,
-			 std::bitset<Trk::numberOfDetectorTypes>& hitPattern ) const override
-    {
-      analyse(track,nullptr, crot,tsos,information,hitPattern);
-    }
+     */
+    virtual void analyse(
+      const Trk::Track& track,
+      const Trk::CompetingRIOsOnTrack* crot,
+      const Trk::TrackStateOnSurface* tsos,
+      std::vector<int>& information,
+      std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const override final;
 
     /** Not used --> HoleSearchTool not used
-    */
-    virtual
-    void searchForHoles(const Trk::Track& track,
-			std::vector<int>& information ,
-			const Trk::ParticleHypothesis partHyp = Trk::pion) const override;
+     */
+    virtual void searchForHoles(
+      const Trk::Track& track,
+      std::vector<int>& information,
+      const Trk::ParticleHypothesis partHyp = Trk::pion) const override final;
 
-      /** this method simply updaes the shared hit content - it is designed/optimised for track collection merging */
-    virtual void updateSharedHitCount(const Trk::Track& track,
-                                      const Trk::PRDtoTrackMap *prd_to_track_map,
-                                      Trk::TrackSummary& summary) const override;
-
-  /** this method simply updaes the shared hit content - it is designed/optimised for track collection merging */
-    virtual
-    void updateSharedHitCount(const Trk::Track& /*track*/,
-                              Trk::TrackSummary& /*summary*/) const override
-    {
-      ATH_MSG_DEBUG("updateSharedHitCount not implemented !!");
-    }
+    /** this method simply updaes the shared hit content - it is
+     * designed/optimised for track collection merging */
+    virtual void updateSharedHitCount(
+      const Trk::Track& track,
+      const Trk::PRDtoTrackMap* prd_to_track_map,
+      Trk::TrackSummary& summary) const override final;
 
     /** this method simply updaes the electron PID content - it is designed/optimised for track collection merging */
-    virtual
-    void updateAdditionalInfo(Trk::TrackSummary& summary,std::vector<float>& eprob,float& dedx, int& nclus, int& noverflowclus) const override;
+    virtual void updateAdditionalInfo(Trk::TrackSummary& summary,
+                                      std::vector<float>& eprob,
+                                      float& dedx,
+                                      int& nclus,
+                                      int& noverflowclus) const override final;
     /** This method updates the expect... hit info*/
-    virtual
-    void updateExpectedHitInfo(const Trk::Track& track, Trk::TrackSummary& summary) const override;
-    
+    virtual void updateExpectedHitInfo(
+      const Trk::Track& track,
+      Trk::TrackSummary& summary) const override final;
+
     /** @copydoc Trk::ITrackSummaryHelperTool::addDetailedTrackSummary(const Trk::Track&, Trk::TrackSummary&)*/
-    
-    virtual void addDetailedTrackSummary(const Trk::Track&, Trk::TrackSummary&) const override;
-    
-    
+
+    virtual void addDetailedTrackSummary(const Trk::Track&,
+                                         Trk::TrackSummary&) const override final;
+
   private:
 
     inline
diff --git a/Simulation/ISF/ISF_Fatras/ISF_FatrasRecoTools/src/ISF_TrackSummaryHelperTool.cxx b/Simulation/ISF/ISF_Fatras/ISF_FatrasRecoTools/src/ISF_TrackSummaryHelperTool.cxx
index 4190d8771d8..f0ac78edac9 100644
--- a/Simulation/ISF/ISF_Fatras/ISF_FatrasRecoTools/src/ISF_TrackSummaryHelperTool.cxx
+++ b/Simulation/ISF/ISF_Fatras/ISF_FatrasRecoTools/src/ISF_TrackSummaryHelperTool.cxx
@@ -23,7 +23,7 @@ iFatras::ISF_TrackSummaryHelperTool::ISF_TrackSummaryHelperTool(const std::strin
   base_class(t,n,p),
   m_pixelId(0),
   m_sctId(0),
-  m_assoTool("iFatras::ISF_PRD_AssociationTool"), 
+  m_assoTool("iFatras::ISF_PRD_AssociationTool"),
   m_doSharedHits(false)
 {
   declareProperty("AssoTool",            m_assoTool);
@@ -31,7 +31,7 @@ iFatras::ISF_TrackSummaryHelperTool::ISF_TrackSummaryHelperTool(const std::strin
   declareProperty("usePixel",            m_usePixel = true);
   declareProperty("useSCT",              m_useSCT   = true);
   declareProperty("OverwriteIDSummary",  m_overwriteidsummary = false);
-} 
+}
 
 //==========================================================================
 
@@ -47,14 +47,14 @@ StatusCode iFatras::ISF_TrackSummaryHelperTool::initialize()
       return StatusCode::FAILURE;
     } else msg(MSG::VERBOSE) << "PixelID helper retrieved successfully!" << endmsg;
   }
-  
+
   if (m_useSCT) {
     if (detStore()->retrieve(m_sctId, "SCT_ID").isFailure()) {
       msg(MSG::ERROR) << "Could not get SCT_ID helper !" << endmsg;
       return StatusCode::FAILURE;
     } else msg(MSG::VERBOSE) << "PixelID helper retrieved successfully!" << endmsg;
   }
-  
+
   ATH_CHECK(m_assoTool.retrieve(DisableTool{!m_doSharedHits || m_assoTool.empty() } ) );
 
   msg(MSG::INFO) << "initialize() successful in " << name() << endmsg;
@@ -64,25 +64,28 @@ StatusCode iFatras::ISF_TrackSummaryHelperTool::initialize()
 
 //==========================================================================
 
-void iFatras::ISF_TrackSummaryHelperTool::analyse(const Trk::Track& track,
-                                                  const Trk::PRDtoTrackMap *prd_to_track_map,
-						  const Trk::RIO_OnTrack* rot,
-						  const Trk::TrackStateOnSurface* tsos,
-						  std::vector<int>& information,
-						  std::bitset<Trk::numberOfDetectorTypes>& hitPattern ) const
+void
+iFatras::ISF_TrackSummaryHelperTool::analyse(
+  const EventContext&,
+  const Trk::Track& track,
+  const Trk::PRDtoTrackMap* prd_to_track_map,
+  const Trk::RIO_OnTrack* rot,
+  const Trk::TrackStateOnSurface* tsos,
+  std::vector<int>& information,
+  std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const
 {
   const Identifier& id = rot->identify();
   bool  isOutlier      = (tsos->type(Trk::TrackStateOnSurface::Outlier));
   bool  ispatterntrack =  (track.info().trackFitter()==Trk::TrackInfo::Unknown);
-  
+
   if (msgLvl(MSG::DEBUG)) msg() << "Starting analyse()" << endmsg;
 
   if ( m_usePixel && m_pixelId->is_pixel(id) ) {
 
     if (msgLvl(MSG::DEBUG)) msg() << "Pixel hit found" << endmsg;
-    
+
     if (isOutlier && !ispatterntrack ) { // ME: outliers on pattern tracks may be reintegrated by fitter, so count them as hits
-      
+
       if (msgLvl(MSG::DEBUG)) msg() << "Pixel outlier info storing" << endmsg;
 
       information[Trk::numberOfPixelOutliers]++;
@@ -93,16 +96,16 @@ void iFatras::ISF_TrackSummaryHelperTool::analyse(const Trk::Track& track,
 	information[Trk::numberOfNextToInnermostPixelLayerOutliers]++;
       }
     } else {
-      
+
       if (msgLvl(MSG::DEBUG)) msg() << "Pixel info storing" << endmsg;
 
       information[Trk::numberOfPixelHits]++;
       if (m_pixelId->layer_disk(id)==0 && m_pixelId->is_barrel(id)) information[Trk::numberOfInnermostPixelLayerHits]++;
-      if (m_pixelId->layer_disk(id)==1 && m_pixelId->is_barrel(id)) information[Trk::numberOfNextToInnermostPixelLayerHits]++;  
-      
+      if (m_pixelId->layer_disk(id)==1 && m_pixelId->is_barrel(id)) information[Trk::numberOfNextToInnermostPixelLayerHits]++;
+
       if ( ( m_pixelId->is_barrel(id) ) ) {
 	if (msgLvl(MSG::DEBUG)) msg() << "Barrel hit" << endmsg;
-	int offset = m_pixelId->layer_disk(id); 
+	int offset = m_pixelId->layer_disk(id);
 	if (!hitPattern.test(offset)) information[Trk::numberOfContribPixelLayers]++;
 	hitPattern.set(offset); // assumes numbered consecutively
       } else {
@@ -120,20 +123,20 @@ void iFatras::ISF_TrackSummaryHelperTool::analyse(const Trk::Track& track,
 	  information[Trk::numberOfPixelSharedHits]++;
 	  if ( (m_pixelId->is_barrel(id) && m_pixelId->layer_disk(id)==0) ) {
 	    if (msgLvl(MSG::DEBUG)) msg() << "--> shared Pixel hit is in innermost layer" << endmsg;
-	    information[Trk::numberOfInnermostPixelLayerSharedHits]++;        
-	  } 
+	    information[Trk::numberOfInnermostPixelLayerSharedHits]++;
+	  }
 	  if ( (m_pixelId->is_barrel(id) && m_pixelId->layer_disk(id)==1) ) {
 	    if (msgLvl(MSG::DEBUG)) msg() << "--> shared Pixel hit is in next to innermost layer" << endmsg;
-	    information[Trk::numberOfNextToInnermostPixelLayerSharedHits]++;        
+	    information[Trk::numberOfNextToInnermostPixelLayerSharedHits]++;
 	  }
 	} else ATH_MSG_DEBUG("shared Pixel hit NOT found");
       }
     }
   } else if (m_useSCT && m_sctId->is_sct(id) ) {
-    
+
     if (msgLvl(MSG::DEBUG)) msg() << "SCT hit found" << endmsg;
-    
-    if (isOutlier && !ispatterntrack ) { // ME: outliers on pattern tracks may be reintegrated by fitter, so count them as hits    
+
+    if (isOutlier && !ispatterntrack ) { // ME: outliers on pattern tracks may be reintegrated by fitter, so count them as hits
       if (msgLvl(MSG::DEBUG)) msg() << "SCT outlier info storing" << endmsg;
       information[Trk::numberOfSCTOutliers]++;
     } else {
@@ -164,18 +167,19 @@ void iFatras::ISF_TrackSummaryHelperTool::analyse(const Trk::Track& track,
       }
     }
   } else  ATH_MSG_WARNING("Nor Pixel or SCT used... Check!!");
-  
+
   return;
 }
-
-void iFatras::ISF_TrackSummaryHelperTool::analyse(const Trk::Track&,
-                                                  const Trk::PRDtoTrackMap *,
-						  const Trk::CompetingRIOsOnTrack*,
-						  const Trk::TrackStateOnSurface*,
-						  std::vector<int>&,
-						  std::bitset<Trk::numberOfDetectorTypes>&) const
+void
+iFatras::ISF_TrackSummaryHelperTool::analyse(
+  const Trk::Track&,
+  const Trk::CompetingRIOsOnTrack*,
+  const Trk::TrackStateOnSurface*,
+  std::vector<int>& ,
+  std::bitset<Trk::numberOfDetectorTypes>&) const
 {
-  ATH_MSG_DEBUG("analyse not implemented for Trk::CompetingRIOsOnTrack !!");
+
+  ATH_MSG_DEBUG("Analyze not implemented for Trk::CompetingRIOsOnTrack!!");
   return;
 }
 
diff --git a/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/IExtendedTrackSummaryHelperTool.h b/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/IExtendedTrackSummaryHelperTool.h
index 2fd7cec77d5..2bb75e741c8 100644
--- a/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/IExtendedTrackSummaryHelperTool.h
+++ b/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/IExtendedTrackSummaryHelperTool.h
@@ -37,21 +37,13 @@ namespace Trk {
   {
   public:
     static const InterfaceID& interfaceID();
-
-    /** fill 'information' and 'hitpattern' using information from 'rot'. Should
-      be overloaded by concrete TrackSummaryHelperTools. It is mandatory that
-      the RIO_OnTrack* points to exactly the object contained inside the
-      TrackStateOnSurface. This is to avoid that the RTTI from the
-      TrackSummaryTool is done twice.
-      */
-    using ITrackSummaryHelperTool::analyse;
-    using ITrackSummaryHelperTool::updateSharedHitCount;
     using ITrackSummaryHelperTool::addDetailedTrackSummary;
+    using ITrackSummaryHelperTool::analyse;
 
-    /*
-     * First the context aware methods.
-     * If this set is not overloaded , it
-     * will call the methods without EventContext
+    /* Expand/Extend the interface , with methods  using the EventContext
+     * and Trk::PRDtoTrackMap.
+     * For now due to compatibility we provide a default  implementation
+     * in terms of the the older interface
      */
 
     virtual void analyse(
@@ -63,9 +55,10 @@ namespace Trk {
       std::vector<int>& information,
       std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const
     {
-      (void)(ctx);
-      analyse(track, prd_to_track_map, rot, tsos, information, hitPattern);
-    }
+      (void)ctx;
+      (void) prd_to_track_map;
+      analyse(track, rot, tsos, information, hitPattern);
+    };
 
     virtual void analyse(
       const EventContext& ctx,
@@ -76,27 +69,48 @@ namespace Trk {
       std::vector<int>& information,
       std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const
     {
-      (void)(ctx);
-      analyse(track, prd_to_track_map, crot, tsos, information, hitPattern);
+      (void)ctx;
+      (void)prd_to_track_map;
+      analyse(track, crot, tsos, information, hitPattern);
     }
 
+    virtual void addDetailedTrackSummary(const EventContext& ctx,
+                                         const Track& track,
+                                         Trk::TrackSummary& summary) const
+    {
+      (void)ctx;
+      addDetailedTrackSummary(track,summary);
+    };
+    virtual void updateSharedHitCount(
+      const Trk::Track&,
+      const Trk::PRDtoTrackMap*,
+      Trk::TrackSummary&) const {};
+
+    virtual void updateExpectedHitInfo(const Trk::Track&,
+                                       Trk::TrackSummary&) const {};
+
+    virtual void updateAdditionalInfo(Trk::TrackSummary&,
+                                      std::vector<float>&,
+                                      float&,
+                                      int&,
+                                      int&) const {};
+
     /*
-     * The context unaware methods.
-     * If this set is not overloaded , it
-     * will call the methods with EventContext
+     * Implement the ITrackSummaryHelperTool part
+     * of the interface for  the methods with the same
+     * name as the method above.
      */
 
     virtual void analyse(
       const Trk::Track& track,
-      const Trk::PRDtoTrackMap* prd_to_track_map,
       const RIO_OnTrack* rot,
       const TrackStateOnSurface* tsos,
       std::vector<int>& information,
-      std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const
+      std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const override
     {
       analyse(Gaudi::Hive::currentContext(),
               track,
-              prd_to_track_map,
+              nullptr,
               rot,
               tsos,
               information,
@@ -105,29 +119,28 @@ namespace Trk {
 
     virtual void analyse(
       const Trk::Track& track,
-      const Trk::PRDtoTrackMap* prd_to_track_map,
       const CompetingRIOsOnTrack* crot,
       const TrackStateOnSurface* tsos,
       std::vector<int>& information,
-      std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const
+      std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const override
     {
       analyse(Gaudi::Hive::currentContext(),
               track,
-              prd_to_track_map,
+              nullptr,
               crot,
               tsos,
               information,
               hitPattern);
     }
 
-    virtual void updateSharedHitCount(
-      const Trk::Track&,
-      const Trk::PRDtoTrackMap* prd_to_track_map,
-      Trk::TrackSummary&) const = 0;
-
-    virtual void addDetailedTrackSummary(const Track& track,
-                                         Trk::TrackSummary& summary) const = 0;
+    virtual void addDetailedTrackSummary(
+      const Track& track,
+      Trk::TrackSummary& summary) const override
+    {
+      addDetailedTrackSummary(Gaudi::Hive::currentContext(), track, summary);
+    }
   };
+
   inline const InterfaceID& Trk::IExtendedTrackSummaryHelperTool::interfaceID()
   {
     return IID_ITrackSummaryHelperTool;
diff --git a/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/ITrackSummaryHelperTool.h b/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/ITrackSummaryHelperTool.h
index b3c29b83abe..068e6e8f3bf 100755
--- a/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/ITrackSummaryHelperTool.h
+++ b/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/ITrackSummaryHelperTool.h
@@ -34,8 +34,6 @@ namespace Trk {
 
     @author Edward Moyse, Martin Siebel <http://consult.cern.ch/xwho>
 */
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Woverloaded-virtual"
   class ITrackSummaryHelperTool : virtual public IAlgTool {
   public:
     static const InterfaceID& interfaceID();
@@ -44,35 +42,31 @@ namespace Trk {
     TrackSummaryHelperTools. It is mandatory that the RIO_OnTrack* points to exactly the object contained
       inside the TrackStateOnSurface. This is to avoid that the RTTI from the TrackSummaryTool is done twice.
         */
-      virtual void analyse(const Trk::Track& track, 
-			   const RIO_OnTrack* rot,
-			   const TrackStateOnSurface* tsos,
-			   std::vector<int>& information, 
-			   std::bitset<Trk::numberOfDetectorTypes>& hitPattern ) const = 0;
+    virtual void analyse(
+      const Trk::Track& track,
+      const RIO_OnTrack* rot,
+      const TrackStateOnSurface* tsos,
+      std::vector<int>& information,
+      std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const = 0;
 
-      virtual void analyse(const Trk::Track& track, 
-			   const CompetingRIOsOnTrack* crot,
-			   const TrackStateOnSurface* tsos,
-			   std::vector<int>& information, 
-			   std::bitset<Trk::numberOfDetectorTypes>& hitPattern ) const = 0;
-      
-      virtual void searchForHoles(const Trk::Track& track, 
-				  std::vector<int>& information ,
-				  const Trk::ParticleHypothesis partHyp = Trk::pion) const =0;
-                  
-      virtual void updateSharedHitCount(const Trk::Track&, Trk::TrackSummary&) const {};
+    virtual void analyse(
+      const Trk::Track& track,
+      const CompetingRIOsOnTrack* crot,
+      const TrackStateOnSurface* tsos,
+      std::vector<int>& information,
+      std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const = 0;
 
-      virtual void  updateExpectedHitInfo(const Trk::Track&, Trk::TrackSummary&) const {};
+    virtual void searchForHoles(
+      const Trk::Track& track,
+      std::vector<int>& information,
+      const Trk::ParticleHypothesis partHyp = Trk::pion) const = 0;
 
-      virtual void updateAdditionalInfo(Trk::TrackSummary&, std::vector<float>&, float&,int&, int&) const {};
-                  
+    virtual void addDetailedTrackSummary(const Trk::Track& track,
+                                         Trk::TrackSummary& summary) const = 0;
 
-      virtual void addDetailedTrackSummary(const Trk::Track& track, Trk::TrackSummary& summary ) const = 0;
-
-    
 
   };
-#pragma GCC diagnostic pop
+  
   inline const InterfaceID& Trk::ITrackSummaryHelperTool::interfaceID()
   { 
     return IID_ITrackSummaryHelperTool; 
diff --git a/Tracking/TrkTools/TrkTrackSummaryTool/src/TrackSummaryTool.cxx b/Tracking/TrkTools/TrkTrackSummaryTool/src/TrackSummaryTool.cxx
index 10719a22b0d..e86b1766abd 100755
--- a/Tracking/TrkTools/TrkTrackSummaryTool/src/TrackSummaryTool.cxx
+++ b/Tracking/TrkTools/TrkTrackSummaryTool/src/TrackSummaryTool.cxx
@@ -290,11 +290,11 @@ Trk::TrackSummaryTool::fillSummary(const EventContext& ctx,
 
   // add detailed summary for indet
   if( m_addInDetDetailedSummary && !m_idTool.empty() ){
-    m_idTool->addDetailedTrackSummary(track,ts);
+    m_idTool->addDetailedTrackSummary(ctx,track,ts);
   }
   // add detailed summary for muons
   if( m_addMuonDetailedSummary && !m_muonTool.empty() ){
-    m_muonTool->addDetailedTrackSummary(track,ts);
+    m_muonTool->addDetailedTrackSummary(ctx,track,ts);
   }
 }
 
@@ -332,7 +332,9 @@ Trk::TrackSummaryTool::updateAdditionalInfo(const Track& track,
   }
   m_idTool->updateAdditionalInfo(summary, eProbability,dedx, nHitsUsed_dEdx,nOverflowHits_dEdx);
   m_idTool->updateExpectedHitInfo(track, summary);
-  if (m_addInDetDetailedSummary) m_idTool->addDetailedTrackSummary(track,summary);
+  if (m_addInDetDetailedSummary) {
+    m_idTool->addDetailedTrackSummary(track,summary);
+  }
 }
 
 /*
-- 
GitLab