From 4cd80b6a4af9a9ea44a7950cc24fd63e7460f388 Mon Sep 17 00:00:00 2001
From: Stewart Martin-Haugh <stewart.martin-haugh@cern.ch>
Date: Wed, 21 Oct 2020 11:33:08 +0000
Subject: [PATCH] Add EventContext to conditions calls

---
 .../SiTrajectoryElement_xk.h                  |  5 ++-
 .../SiTrajectoryElement_xk.icc                | 33 +++++++-------
 .../SiTrajectory_xk.h                         |  5 ++-
 .../src/SiTrajectoryElement_xk.cxx            |  4 +-
 .../src/SiTrajectory_xk.cxx                   | 13 +++---
 .../ISiCombinatorialTrackFinder.h             | 11 +++--
 .../SiCombinatorialTrackFinder_xk.h           | 12 ++---
 .../src/SiCombinatorialTrackFinder_xk.cxx     | 45 ++++++++++---------
 .../src/SiTrackMaker_xk.cxx                   | 16 +++----
 .../src/TRT_SeededTrackFinder_ATL.cxx         |  2 +-
 10 files changed, 80 insertions(+), 66 deletions(-)

diff --git a/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiTrajectoryElement_xk.h b/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiTrajectoryElement_xk.h
index 2fbe398ed4d..a4d8f2b378b 100644
--- a/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiTrajectoryElement_xk.h
+++ b/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiTrajectoryElement_xk.h
@@ -144,7 +144,8 @@ namespace InDet{
 	       const InDet::SiDetElementBoundaryLink_xk*& dl,
 	       const T& sb,
 	       const T& se,
-	       const InDet::SiCluster* si);
+	       const InDet::SiCluster* si,
+	       const EventContext& ctx);
 
       void setTools(const InDet::SiTools_xk*); 
       void setParameters(); 
@@ -377,7 +378,7 @@ namespace InDet{
       double                                      m_radlength   ;
       double                                      m_radlengthN  ;
       double                                      m_energylose  ;
-      double                                      m_halflenght  ;
+      double                                      m_halflength  ;
       double                                      m_step        ;
       double                                      m_xi2max      ;
       double                                      m_xi2maxNoAdd ;
diff --git a/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiTrajectoryElement_xk.icc b/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiTrajectoryElement_xk.icc
index 58d21e48c47..bf339d646c7 100644
--- a/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiTrajectoryElement_xk.icc
+++ b/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiTrajectoryElement_xk.icc
@@ -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
 */
 
 #include <type_traits>
@@ -79,7 +79,7 @@ int InDet::SiTrajectoryElement_xk::searchClustersWithStereo
 
     r1  = fabs(r1+d*((PV1*v2-PV2*v1)*r0+(PV2*v0-PV1*v1)*r1));  
     x  -= (r1*r1)/MV2                                       ;
-    r1 -= m_halflenght                                      ;
+    r1 -= m_halflength                                      ;
     
     if(r1 > 0. &&  (x+=((r1*r1)/PV2)) > Xc) continue;
 
@@ -189,10 +189,10 @@ int InDet::SiTrajectoryElement_xk::searchClustersWithoutStereoSCT
     
     double dP1 = (P1-M[1])+PV1*d*r0;
 
-    if(fabs(dP1) > m_halflenght) {
+    if(fabs(dP1) > m_halflength) {
 
       double r1; 
-      dP1 > m_halflenght ? r1 = m_halflenght-P1 : r1 = -(m_halflenght+P1);
+      dP1 > m_halflength ? r1 = m_halflength-P1 : r1 = -(m_halflength+P1);
       
       double v1 = PV1;
       double v2 = PV2;  
@@ -261,7 +261,7 @@ int InDet::SiTrajectoryElement_xk::searchClustersWithStereoAss
 
     r1  = fabs(r1+d*((PV1*v2-PV2*v1)*r0+(PV2*v0-PV1*v1)*r1));  
     x  -= (r1*r1)/MV2                                       ;
-    r1 -= m_halflenght                                      ;
+    r1 -= m_halflength                                      ;
     
     if(r1 > 0. &&  (x+=((r1*r1)/PV2)) > Xc) continue;
 
@@ -374,10 +374,10 @@ int InDet::SiTrajectoryElement_xk::searchClustersWithoutStereoAssSCT
     
     double dP1 = (P1-M[1])+PV1*d*r0;
 
-    if(fabs(dP1) > m_halflenght) {
+    if(fabs(dP1) > m_halflength) {
 
       double r1; 
-      dP1 > m_halflenght ? r1 = m_halflenght-P1 : r1 = -(m_halflenght+P1);
+      dP1 > m_halflength ? r1 = m_halflength-P1 : r1 = -(m_halflength+P1);
       
       double v1 = PV1;
       double v2 = PV2;  
@@ -411,7 +411,8 @@ void InDet::SiTrajectoryElement_xk::set
  const InDet::SiDetElementBoundaryLink_xk*& dl,
  const T& sb, 
  const T& se,
- const InDet::SiCluster* si)
+ const InDet::SiCluster* si,
+ const EventContext& ctx)
 {
   if      (std::is_same<T, InDet::SiClusterCollection::const_iterator>::value)    m_itType = SiClusterColl;
   else if (std::is_same<T, InDet::PixelClusterCollection::const_iterator>::value) m_itType = PixelClusterColl;
@@ -448,7 +449,7 @@ void InDet::SiTrajectoryElement_xk::set
   m_xi2totalF    = 0.                      ;
   m_xi2totalB    = 0.                      ;
   m_tools->electron() ? m_xi2max = m_tools->xi2maxBrem() : m_xi2max = m_tools->xi2max();
-  m_halflenght   = 0.                      ;
+  m_halflength   = 0.                      ;
   m_detelement->isSCT() ? m_ndf=1 : m_ndf=2;
 
   if(m_tools->heavyion()) {
@@ -460,13 +461,13 @@ void InDet::SiTrajectoryElement_xk::set
   (m_detelement->isSCT() && (m_detelement->design().shape()==InDetDD::Trapezoid || m_detelement->design().shape()==InDetDD::Annulus)   ) ? 
     m_stereo = true : m_stereo = false;
 
-  if(m_detstatus && m_ndf == 1) m_halflenght = (*sb)->width().z()*.5;
+  if(m_detstatus && m_ndf == 1) m_halflength = (*sb)->width().z()*.5;
 
   if(!m_detstatus) {
 
     IdentifierHash idHash = m_detelement->identifyHash();
-    if(m_ndf==2) {if(!m_tools->pixcond()->isGood(idHash)) m_detstatus = -1;}
-    else         {if(!m_tools->sctcond()->isGood(idHash)) m_detstatus = -1;}
+    if(m_ndf==2) {if(!m_tools->pixcond()->isGood(idHash, ctx)) m_detstatus = -1;}
+    else         {if(!m_tools->sctcond()->isGood(idHash, ctx)) m_detstatus = -1;}
   }
   
   const Amg::Transform3D& tr = m_surface->transform();
@@ -506,13 +507,13 @@ bool InDet::SiTrajectoryElement_xk::ForwardPropagationForClusterSeach
   m_detlink      = dl                      ;
   m_surface      = &m_detelement->surface();
   m_detelement->isSCT() ? m_ndf=1 : m_ndf=2;
-  m_halflenght   = 0.                      ;
+  m_halflength   = 0.                      ;
   m_stereo       = false                   ;
 
   (m_detelement->isSCT() && m_detelement->design().shape()==InDetDD::Trapezoid) ? 
     m_stereo = true : m_stereo = false;
 
-  if(m_detstatus && m_ndf == 1) m_halflenght = (*sb)->width().z()*.5;
+  if(m_detstatus && m_ndf == 1) m_halflength = (*sb)->width().z()*.5;
 
   if(!n) {
     Trk::PatternTrackParameters Tp; if(!Tp.production(&Tpa)) return false;
@@ -562,12 +563,12 @@ void InDet::SiTrajectoryElement_xk::CloseClusterSeach
   m_detlink      = dl                      ;
   m_surface      = &m_detelement->surface();
   m_detelement->isSCT() ? m_ndf=1 : m_ndf=2;
-  m_halflenght   = 0.                      ;
+  m_halflength   = 0.                      ;
   m_stereo       = false                   ;
 
   (m_detelement->isSCT() && m_detelement->design().shape()==InDetDD::Trapezoid) ? 
     m_stereo = true : m_stereo = false;
-  if(m_detstatus && m_ndf == 1) m_halflenght = (*sb)->width().z()*.5;
+  if(m_detstatus && m_ndf == 1) m_halflength = (*sb)->width().z()*.5;
 
   if(m_detlink->intersect(Tpa,m_dist) > 0 || !searchClusters(Tpa,m_linkF)) return;
   m_cluster = m_linkF[0].cluster();
diff --git a/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiTrajectory_xk.h b/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiTrajectory_xk.h
index cdc10859aec..c7dc76f8988 100644
--- a/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiTrajectory_xk.h
+++ b/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiTrajectory_xk.h
@@ -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
 */
 
 /////////////////////////////////////////////////////////////////////////////////
@@ -68,7 +68,8 @@ namespace InDet{
          const Trk::TrackParameters                          &,
          std::list<const InDet::SiCluster*>                  &,
          std::vector<const InDet::SiDetElementBoundaryLink_xk*>&,
-         bool                                                &);
+         bool                                                &,
+         const EventContext&);
 
       bool trackParametersToClusters
         (const PixelClusterContainer*                             ,
diff --git a/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/src/SiTrajectoryElement_xk.cxx b/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/src/SiTrajectoryElement_xk.cxx
index 968f48aeb16..12351565477 100644
--- a/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/src/SiTrajectoryElement_xk.cxx
+++ b/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/src/SiTrajectoryElement_xk.cxx
@@ -1318,7 +1318,7 @@ InDet::SiTrajectoryElement_xk::SiTrajectoryElement_xk()
   m_xi2B        = 0.;
   m_xi2totalF   = 0.;
   m_xi2totalB   = 0.;
-  m_halflenght  = 0.;
+  m_halflength  = 0.;
   m_step        = 0.;
   m_xi2max      = 0.;
   m_dist        = 0.;
@@ -1385,7 +1385,7 @@ InDet::SiTrajectoryElement_xk& InDet::SiTrajectoryElement_xk::operator =
   m_radlength    = E.m_radlength   ;
   m_radlengthN   = E.m_radlengthN  ;
   m_energylose   = E.m_energylose  ;
-  m_halflenght   = E.m_halflenght  ;
+  m_halflength   = E.m_halflength  ;
   m_step         = E.m_step        ;
   m_nlinksF      = E.m_nlinksF     ;
   m_nlinksB      = E.m_nlinksB     ;
diff --git a/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/src/SiTrajectory_xk.cxx b/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/src/SiTrajectory_xk.cxx
index 5169446082b..6d30898c9ae 100644
--- a/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/src/SiTrajectory_xk.cxx
+++ b/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/src/SiTrajectory_xk.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
 */
 
 #include "SiSPSeededTrackFinderData/SiTrajectory_xk.h"
@@ -487,7 +487,8 @@ bool InDet::SiTrajectory_xk::initialize
  const Trk::TrackParameters                          & Tp        ,
  std::list<const InDet::SiCluster*>                  & lSiCluster, 
  std::vector<const InDet::SiDetElementBoundaryLink_xk*>& DE      ,
- bool                                                & rquality  )
+ bool                                                & rquality  ,
+ const EventContext                                  & ctx       )
 {
   m_nholes          =    0;
   m_nholesb         =    0;
@@ -539,10 +540,10 @@ bool InDet::SiTrajectory_xk::initialize
               break;
             }
           }
-          m_elements[m_nElements].set(1,(*r),sib,sie,sic);
+          m_elements[m_nElements].set(1,(*r),sib,sie,sic,ctx);
           ++m_naElements;
         } else if (m_naElements) {
-          m_elements[m_nElements].set(0,(*r),sib,sie,sic);
+          m_elements[m_nElements].set(0,(*r),sib,sie,sic,ctx);
         } else {
           continue;
         }
@@ -568,10 +569,10 @@ bool InDet::SiTrajectory_xk::initialize
             break;
           }
         }
-        m_elements[m_nElements].set(1,(*r),sib,sie,sic);
+        m_elements[m_nElements].set(1,(*r),sib,sie,sic,ctx);
         ++m_naElements;
       } else if (m_naElements) {
-        m_elements[m_nElements].set(0,(*r),sib,sie,sic);
+        m_elements[m_nElements].set(0,(*r),sib,sie,sic,ctx);
       } else {
         continue;
       }
diff --git a/InnerDetector/InDetRecTools/InDetRecToolInterfaces/InDetRecToolInterfaces/ISiCombinatorialTrackFinder.h b/InnerDetector/InDetRecTools/InDetRecToolInterfaces/InDetRecToolInterfaces/ISiCombinatorialTrackFinder.h
index af76e3c2eb8..a6f62e4d0d1 100644
--- a/InnerDetector/InDetRecTools/InDetRecToolInterfaces/InDetRecToolInterfaces/ISiCombinatorialTrackFinder.h
+++ b/InnerDetector/InDetRecTools/InDetRecToolInterfaces/InDetRecToolInterfaces/ISiCombinatorialTrackFinder.h
@@ -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
 */
 
 /////////////////////////////////////////////////////////////////////////////////
@@ -72,7 +72,8 @@ namespace InDet {
 	 const std::vector<const Trk::SpacePoint*>&,
 	 const std::list<Amg::Vector3D>&,
 	 std::list<const InDetDD::SiDetectorElement*>&,
-	 const TrackQualityCuts&) const =0;
+	 const TrackQualityCuts&,
+   const EventContext&) const =0;
 
       virtual const std::list<Trk::Track*>& getTracks
 	(SiCombinatorialTrackFinderData_xk& data,
@@ -80,7 +81,8 @@ namespace InDet {
 	 const std::vector<const Trk::SpacePoint*>&,
 	 const std::list<Amg::Vector3D>&,
 	 std::list<const InDetDD::SiDetectorElement*>&,
-	 std::multimap<const Trk::PrepRawData*, const Trk::Track*>&) const =0;
+	 std::multimap<const Trk::PrepRawData*, const Trk::Track*>&,
+   const EventContext&) const =0;
 
       virtual const std::list<Trk::Track*>& getTracksWithBrem
 	(SiCombinatorialTrackFinderData_xk& data,
@@ -89,7 +91,8 @@ namespace InDet {
 	 const std::list<Amg::Vector3D>&,
 	 std::list<const InDetDD::SiDetectorElement*>&,
 	 std::multimap<const Trk::PrepRawData*, const Trk::Track*>&,
-	 bool) const =0;
+	 bool,
+   const EventContext&) const =0;
 
       virtual void newEvent(const EventContext& ctx, SiCombinatorialTrackFinderData_xk& data) const =0;
 
diff --git a/InnerDetector/InDetRecTools/SiCombinatorialTrackFinderTool_xk/SiCombinatorialTrackFinderTool_xk/SiCombinatorialTrackFinder_xk.h b/InnerDetector/InDetRecTools/SiCombinatorialTrackFinderTool_xk/SiCombinatorialTrackFinderTool_xk/SiCombinatorialTrackFinder_xk.h
index 4cbf8092ee9..00bbd54cfb4 100644
--- a/InnerDetector/InDetRecTools/SiCombinatorialTrackFinderTool_xk/SiCombinatorialTrackFinderTool_xk/SiCombinatorialTrackFinder_xk.h
+++ b/InnerDetector/InDetRecTools/SiCombinatorialTrackFinderTool_xk/SiCombinatorialTrackFinderTool_xk/SiCombinatorialTrackFinder_xk.h
@@ -91,7 +91,7 @@ namespace InDet {
 	 const std::vector<const Trk::SpacePoint*>&,
 	 const std::list<Amg::Vector3D>&,
 	 std::list<const InDetDD::SiDetectorElement*>&,
-	 const TrackQualityCuts&) const override;
+	 const TrackQualityCuts&, const EventContext& ctx) const override;
 
       virtual const std::list<Trk::Track*>& getTracks
         (SiCombinatorialTrackFinderData_xk& data,
@@ -99,7 +99,7 @@ namespace InDet {
 	 const std::vector<const Trk::SpacePoint*>&,
 	 const std::list<Amg::Vector3D>&,
 	 std::list<const InDetDD::SiDetectorElement*>&,
-	 std::multimap<const Trk::PrepRawData*, const Trk::Track*>&) const override;
+	 std::multimap<const Trk::PrepRawData*, const Trk::Track*>&, const EventContext& ctx) const override;
 
       virtual const std::list<Trk::Track*>& getTracksWithBrem
         (SiCombinatorialTrackFinderData_xk& data,
@@ -108,7 +108,7 @@ namespace InDet {
 	 const std::list<Amg::Vector3D>&,
 	 std::list<const InDetDD::SiDetectorElement*>&,
 	 std::multimap<const Trk::PrepRawData*, const Trk::Track*>&,
-	 bool) const override;
+	 bool, const EventContext& ctx) const override;
    
       virtual void newEvent(const EventContext& ctx, SiCombinatorialTrackFinderData_xk& data) const override;
       virtual void newEvent(const EventContext& ctx, SiCombinatorialTrackFinderData_xk& data,
@@ -196,7 +196,8 @@ namespace InDet {
 	 const std::vector<const Trk::SpacePoint*>&,
 	 const std::list<Amg::Vector3D>&,
 	 std::list<const InDetDD::SiDetectorElement*>&,
-	 std::multimap<const Trk::PrepRawData*, const Trk::Track*>&) const;
+	 std::multimap<const Trk::PrepRawData*, const Trk::Track*>&,
+   const EventContext&) const;
 
       void getTrackQualityCuts(SiCombinatorialTrackFinderData_xk& data, const TrackQualityCuts&) const;
 
@@ -211,7 +212,8 @@ namespace InDet {
 
       void detectorElementLinks
 	(std::list<const InDetDD::SiDetectorElement*>        &,
-	 std::vector<const InDet::SiDetElementBoundaryLink_xk*>&) const;
+	 std::vector<const InDet::SiDetElementBoundaryLink_xk*>&,
+   const EventContext& ctx) const;
 
       MsgStream& dumpconditions(MsgStream& out) const;
       MsgStream& dumpevent(SiCombinatorialTrackFinderData_xk& data, MsgStream& out) const;
diff --git a/InnerDetector/InDetRecTools/SiCombinatorialTrackFinderTool_xk/src/SiCombinatorialTrackFinder_xk.cxx b/InnerDetector/InDetRecTools/SiCombinatorialTrackFinderTool_xk/src/SiCombinatorialTrackFinder_xk.cxx
index 75e10775baa..d7a3ca2f1a3 100644
--- a/InnerDetector/InDetRecTools/SiCombinatorialTrackFinderTool_xk/src/SiCombinatorialTrackFinder_xk.cxx
+++ b/InnerDetector/InDetRecTools/SiCombinatorialTrackFinderTool_xk/src/SiCombinatorialTrackFinder_xk.cxx
@@ -337,10 +337,11 @@ const std::list<Trk::Track*>&  InDet::SiCombinatorialTrackFinder_xk::getTracks
  const std::vector<const Trk::SpacePoint*>& Sp,
  const std::list<Amg::Vector3D>& Gp,
  std::list<const InDetDD::SiDetectorElement*>& DE,
- const TrackQualityCuts& Cuts) const
+ const TrackQualityCuts& Cuts,
+ const EventContext& ctx) const
 {
 
-  if (not data.isInitialized()) initializeCombinatorialData(Gaudi::Hive::currentContext(), data);
+  if (not data.isInitialized()) initializeCombinatorialData(ctx, data);
 
   data.statistic().fill(false);
 
@@ -357,7 +358,7 @@ const std::list<Trk::Track*>&  InDet::SiCombinatorialTrackFinder_xk::getTracks
   getTrackQualityCuts(data, Cuts);
   std::multimap<const Trk::PrepRawData*, const Trk::Track*> PT;
 
-  EStat_t FT = findTrack(data, Tp, Sp, Gp, DE, PT);
+  EStat_t FT = findTrack(data, Tp, Sp, Gp, DE, PT, ctx);
  
   if(FT!=Success) {
     data.statistic()[FT] = true;
@@ -390,10 +391,11 @@ const std::list<Trk::Track*>& InDet::SiCombinatorialTrackFinder_xk::getTracks
  const std::vector<const Trk::SpacePoint*>& Sp,
  const std::list<Amg::Vector3D>& Gp,
  std::list<const InDetDD::SiDetectorElement*>& DE,
- std::multimap<const Trk::PrepRawData*, const Trk::Track*>& PT) const
+ std::multimap<const Trk::PrepRawData*, const Trk::Track*>& PT,
+ const EventContext& ctx) const
 {
 
-  if (not data.isInitialized()) initializeCombinatorialData(Gaudi::Hive::currentContext(), data);
+  if (not data.isInitialized()) initializeCombinatorialData(ctx, data);
 
   data.tools().setBremNoise(false, false);
   data.tracks().erase(data.tracks().begin(), data.tracks().end());
@@ -404,7 +406,7 @@ const std::list<Trk::Track*>& InDet::SiCombinatorialTrackFinder_xk::getTracks
     return data.tracks();
   }
 
-  EStat_t FT = findTrack(data, Tp, Sp, Gp, DE, PT);
+  EStat_t FT = findTrack(data, Tp, Sp, Gp, DE, PT,ctx);
   if(FT!=Success) {
     data.statistic()[FT] = true;
     return data.tracks();
@@ -445,10 +447,11 @@ const std::list<Trk::Track*>&  InDet::SiCombinatorialTrackFinder_xk::getTracksWi
  const std::list<Amg::Vector3D>& Gp,
  std::list<const InDetDD::SiDetectorElement*>& DE,
  std::multimap<const Trk::PrepRawData*, const Trk::Track*>& PT,
- bool isCaloCompatible) const
+ bool isCaloCompatible,
+ const EventContext& ctx) const
 {
 
-  if (not data.isInitialized()) initializeCombinatorialData(Gaudi::Hive::currentContext(), data);
+  if (not data.isInitialized()) initializeCombinatorialData(ctx, data);
 
   data.statistic().fill(false);
 
@@ -466,7 +469,7 @@ const std::list<Trk::Track*>&  InDet::SiCombinatorialTrackFinder_xk::getTracksWi
     return data.tracks();
   }
 
-  EStat_t FT = findTrack(data,Tp,Sp,Gp,DE,PT);
+  EStat_t FT = findTrack(data,Tp,Sp,Gp,DE,PT,ctx);
   
   bool Q = (FT==Success);
   if (Q){
@@ -502,7 +505,7 @@ const std::list<Trk::Track*>&  InDet::SiCombinatorialTrackFinder_xk::getTracksWi
   data.statistic()[BremAttempt] = true;
 
   data.tools().setBremNoise(true,true);
-  FT = findTrack(data, Tp, Sp, Gp, DE, PT);
+  FT = findTrack(data, Tp, Sp, Gp, DE, PT,ctx);
 
   if (FT!=Success) {
     data.statistic()[FT] = true;
@@ -544,26 +547,27 @@ InDet::SiCombinatorialTrackFinder_xk::EStat_t InDet::SiCombinatorialTrackFinder_
  const Trk::TrackParameters& Tp,
  const std::vector<const Trk::SpacePoint*>& Sp,const std::list<Amg::Vector3D>& Gp,
  std::list<const InDetDD::SiDetectorElement*>& DE,
- std::multimap<const Trk::PrepRawData*,const Trk::Track*>& PT) const
+ std::multimap<const Trk::PrepRawData*,const Trk::Track*>& PT,
+ const EventContext& ctx) const
 {
-  if (not data.isInitialized()) initializeCombinatorialData(Gaudi::Hive::currentContext(), data);
+  if (not data.isInitialized()) initializeCombinatorialData(ctx, data);
 
   // List detector element links preparation
   //
   std::vector<const InDet::SiDetElementBoundaryLink_xk*> DEL;
-  detectorElementLinks(DE, DEL);
+  detectorElementLinks(DE, DEL,ctx);
 
   // Retrieve cached pointers to SG collections, or create the cache
   //
   const InDet::PixelClusterContainer* p_pixcontainer = data.pixContainer();
   if (m_usePIX && !p_pixcontainer) {
-    SG::ReadHandle<InDet::PixelClusterContainer> pixcontainer(m_pixcontainerkey);
+    SG::ReadHandle<InDet::PixelClusterContainer> pixcontainer(m_pixcontainerkey,ctx);
     p_pixcontainer = pixcontainer.ptr();
     data.setPixContainer(p_pixcontainer);
   }
   const InDet::SCT_ClusterContainer* p_sctcontainer = data.sctContainer();
   if (m_useSCT && !p_sctcontainer) {
-    SG::ReadHandle<InDet::SCT_ClusterContainer> sctcontainer(m_sctcontainerkey);
+    SG::ReadHandle<InDet::SCT_ClusterContainer> sctcontainer(m_sctcontainerkey,ctx);
     p_sctcontainer = sctcontainer.ptr();
     data.setSctContainer(p_sctcontainer);
   }
@@ -588,13 +592,13 @@ InDet::SiCombinatorialTrackFinder_xk::EStat_t InDet::SiCombinatorialTrackFinder_
   // Build initial trajectory
   //
   bool Qr;
-  bool Q = data.trajectory().initialize(m_usePIX, m_useSCT, p_pixcontainer, p_sctcontainer, Tp, Cl, DEL, Qr);
+  bool Q = data.trajectory().initialize(m_usePIX, m_useSCT, p_pixcontainer, p_sctcontainer, Tp, Cl, DEL, Qr,ctx);
 
   if (!Q && Sp.size() < 2 && Gp.size() > 3) {
 
     Cl.clear();
     if (!data.trajectory().trackParametersToClusters(p_pixcontainer, p_sctcontainer, Tp, DEL, PT, Cl)) return TwoCluster;
-    if (!data.trajectory().initialize(m_usePIX, m_useSCT, p_pixcontainer, p_sctcontainer, Tp, Cl, DEL, Qr)) return TwoCluster;
+    if (!data.trajectory().initialize(m_usePIX, m_useSCT, p_pixcontainer, p_sctcontainer, Tp, Cl, DEL, Qr,ctx)) return TwoCluster;
     Q = Qr = true;
   }
 
@@ -733,19 +737,20 @@ bool InDet::SiCombinatorialTrackFinder_xk::spacePointsToClusters
 
 void InDet::SiCombinatorialTrackFinder_xk::detectorElementLinks
 (std::list<const InDetDD::SiDetectorElement*>        & DE,
- std::vector<const InDet::SiDetElementBoundaryLink_xk*>& DEL) const
+ std::vector<const InDet::SiDetElementBoundaryLink_xk*>& DEL,
+ const EventContext& ctx) const
 {
   const InDet::SiDetElementBoundaryLinks_xk* boundaryPixel{nullptr};
   const InDet::SiDetElementBoundaryLinks_xk* boundarySCT{nullptr};
   if (m_usePIX) {
-    SG::ReadCondHandle<InDet::SiDetElementBoundaryLinks_xk> boundaryPixelHandle(m_boundaryPixelKey);
+    SG::ReadCondHandle<InDet::SiDetElementBoundaryLinks_xk> boundaryPixelHandle(m_boundaryPixelKey,ctx);
     boundaryPixel = *boundaryPixelHandle;
     if (boundaryPixel==nullptr) {
       ATH_MSG_FATAL(m_boundaryPixelKey.fullKey() << " returns null pointer");
     }
   }
   if (m_useSCT) {
-    SG::ReadCondHandle<InDet::SiDetElementBoundaryLinks_xk> boundarySCTHandle(m_boundarySCTKey);
+    SG::ReadCondHandle<InDet::SiDetElementBoundaryLinks_xk> boundarySCTHandle(m_boundarySCTKey,ctx);
     boundarySCT = *boundarySCTHandle;
     if (boundarySCT==nullptr) {
       ATH_MSG_FATAL(m_boundarySCTKey.fullKey() << " returns null pointer");
diff --git a/InnerDetector/InDetRecTools/SiTrackMakerTool_xk/src/SiTrackMaker_xk.cxx b/InnerDetector/InDetRecTools/SiTrackMakerTool_xk/src/SiTrackMaker_xk.cxx
index 1390b1de699..efc016c513e 100644
--- a/InnerDetector/InDetRecTools/SiTrackMakerTool_xk/src/SiTrackMaker_xk.cxx
+++ b/InnerDetector/InDetRecTools/SiTrackMakerTool_xk/src/SiTrackMaker_xk.cxx
@@ -695,15 +695,15 @@ std::list<Trk::Track*> InDet::SiTrackMaker_xk::getTracks
   // Find possible list of tracks using space points space points information
   //
   if (!m_useBremModel) {
-    tracks = m_tracksfinder->getTracks        (data.combinatorialData(), *Tp, Sp, Gp, DE, data.clusterTrack());
+    tracks = m_tracksfinder->getTracks        (data.combinatorialData(), *Tp, Sp, Gp, DE, data.clusterTrack(),ctx);
   } else if (!m_useCaloSeeds) {
     ++data.summaryStatAll()[kTotalBremSeeds][K];
-    tracks = m_tracksfinder->getTracksWithBrem(data.combinatorialData(), *Tp, Sp, Gp, DE, data.clusterTrack(), false);
+    tracks = m_tracksfinder->getTracksWithBrem(data.combinatorialData(), *Tp, Sp, Gp, DE, data.clusterTrack(), false,ctx);
   } else if (isCaloCompatible(data)) {
     ++data.summaryStatAll()[kTotalBremSeeds][K];
-    tracks = m_tracksfinder->getTracksWithBrem(data.combinatorialData(), *Tp, Sp, Gp, DE, data.clusterTrack(), true);
+    tracks = m_tracksfinder->getTracksWithBrem(data.combinatorialData(), *Tp, Sp, Gp, DE, data.clusterTrack(), true,ctx);
   } else {
-    tracks = m_tracksfinder->getTracks        (data.combinatorialData(), *Tp, Sp, Gp, DE, data.clusterTrack());
+    tracks = m_tracksfinder->getTracks        (data.combinatorialData(), *Tp, Sp, Gp, DE, data.clusterTrack(),ctx);
   }
 
   std::array<bool,SiCombinatorialTrackFinderData_xk::kNCombStats> inf{0,0,0,0,0,0};   m_tracksfinder->fillStatistic(data.combinatorialData(),inf);                                      
@@ -780,13 +780,13 @@ std::list<Trk::Track*> InDet::SiTrackMaker_xk::getTracks
   std::vector<const Trk::SpacePoint*>  Sp;
   
   if (!m_useBremModel) {
-    tracks = m_tracksfinder->getTracks        (data.combinatorialData(), Tp, Sp, Gp, DE, data.clusterTrack());
+    tracks = m_tracksfinder->getTracks        (data.combinatorialData(), Tp, Sp, Gp, DE, data.clusterTrack(),ctx);
   } else if (!m_useCaloSeeds) {
-   tracks = m_tracksfinder->getTracksWithBrem(data.combinatorialData(), Tp, Sp, Gp, DE, data.clusterTrack(), false);
+   tracks = m_tracksfinder->getTracksWithBrem(data.combinatorialData(), Tp, Sp, Gp, DE, data.clusterTrack(), false,ctx);
   } else if (isCaloCompatible(data)) {
-    tracks = m_tracksfinder->getTracksWithBrem(data.combinatorialData(), Tp, Sp, Gp, DE, data.clusterTrack(), true);
+    tracks = m_tracksfinder->getTracksWithBrem(data.combinatorialData(), Tp, Sp, Gp, DE, data.clusterTrack(), true,ctx);
   } else {
-    tracks = m_tracksfinder->getTracks        (data.combinatorialData(), Tp, Sp, Gp, DE, data.clusterTrack());
+    tracks = m_tracksfinder->getTracks        (data.combinatorialData(), Tp, Sp, Gp, DE, data.clusterTrack(),ctx);
   }
   
   if (m_seedsfilter) {
diff --git a/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/src/TRT_SeededTrackFinder_ATL.cxx b/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/src/TRT_SeededTrackFinder_ATL.cxx
index 76d2640a6b5..ad9c5f3869c 100755
--- a/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/src/TRT_SeededTrackFinder_ATL.cxx
+++ b/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/src/TRT_SeededTrackFinder_ATL.cxx
@@ -707,7 +707,7 @@ std::list<Trk::Track*> InDet::TRT_SeededTrackFinder_ATL::findTrack
     // --------------- Get the Si extensions using the combinatorial track finding tool
     //
     std::list<Amg::Vector3D> Gp;
-    aTracks = m_tracksfinder->getTracks(combinatorialData, *mesTP, SpVec, Gp, DE, m_trackquality);
+    aTracks = m_tracksfinder->getTracks(combinatorialData, *mesTP, SpVec, Gp, DE, m_trackquality, ctx);
     if(int(aTracks.size())==0) {
       if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG)<<"No tracks found by the combinatorial track finder!"<<endmsg;
     }
-- 
GitLab