diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/TrkVKalVrtFitterTestAlg.cxx b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/TrkVKalVrtFitterTestAlg.cxx
index 79c3b6e9c40ff806b8774d9809b3e0ec30b65a2d..567a4202e5a7e044a52c100c1b7b82bd356ad276 100644
--- a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/TrkVKalVrtFitterTestAlg.cxx
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/TrkVKalVrtFitterTestAlg.cxx
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration.
+ * Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration.
  */
 /**
  * @file TrkVKalVrtFitter/src/TrkVKalVrtFitterTestAlg.cxx
@@ -21,6 +21,7 @@
 #include "TestTools/FLOATassert.h"
 #include "GaudiKernel/SystemOfUnits.h"
 #include  "TrkVKalVrtFitter/IVKalState.h" //unique_ptr needs the deleter
+#include "AthContainers/ConstAccessor.h"
 
 #include <cassert>
 #include <cmath>
@@ -181,7 +182,8 @@ void dumpVertex (const xAOD::Vertex& v)
 {
   std::cout << "vvv\n";
   std::cout << v.x() << " " << v.y() << " " << v.z() << "\n";
-  if (v.isAvailable<short> ("vertexType")) {
+  static const SG::ConstAccessor<short> vertexTypeAcc ("vertexType");
+  if (vertexTypeAcc.isAvailable(v)) {
     std::cout << "vertexType " << v.vertexType() << "\n";
   }
   std::cout << "chi2/ndof " << v.chiSquared() << " " << v.numberDoF() << "\n";
@@ -192,7 +194,8 @@ void dumpVertex (const xAOD::Vertex& v)
   }
   std::cout << "\n";
 
-  if (v.isAvailable<std::vector<ElementLink<xAOD::TrackParticleContainer> > > ("trackParticleLinks")) {
+  static const SG::ConstAccessor<std::vector<ElementLink<xAOD::TrackParticleContainer> > > trackParticleLinksAcc ("trackParticleLinks");
+  if (trackParticleLinksAcc.isAvailable(v)) {
     std::cout << "tplinks ";
     for (const ElementLink< xAOD::TrackParticleContainer >& l : v.trackParticleLinks()) {
       std::cout << l.dataID() << "/" << l.index() << " ";
@@ -200,7 +203,8 @@ void dumpVertex (const xAOD::Vertex& v)
     std::cout << "\n";
   }
 
-  if (v.isAvailable<std::vector<float> > ("trackWeights")) {
+  static const SG::ConstAccessor<float> trackWeightsAcc ("trackWeights");
+  if (trackWeightsAcc.isAvailable(v)) {
     std::cout << "wt ";
     for (float f : v.trackWeights()) {
       std::cout << f << " ";
@@ -208,7 +212,8 @@ void dumpVertex (const xAOD::Vertex& v)
     std::cout << "\n";
   }
 
-  if (v.isAvailable<std::vector<ElementLink<xAOD::NeutralParticleContainer> > > ("neutralParticleLinks")) {
+  static const SG::ConstAccessor<std::vector<ElementLink<xAOD::NeutralParticleContainer> > > neutralParticleLinksAcc ("neutralParticleLinks");
+  if (neutralParticleLinksAcc.isAvailable(v)) {
     std::cout << "nplinks ";
     for (const ElementLink< xAOD::NeutralParticleContainer >& l : v.neutralParticleLinks()) {
       std::cout << l.dataID() << "/" << l.index() << " ";
@@ -216,7 +221,8 @@ void dumpVertex (const xAOD::Vertex& v)
     std::cout << "\n";
   }
 
-  if (v.isAvailable<std::vector<float> > ("neutralWeights")) {
+  static const SG::ConstAccessor<float> neutralWeightsAcc ("neutralWeights");
+  if (neutralWeightsAcc.isAvailable(v)) {
     std::cout << "wt ";
     for (float f : v.neutralWeights()) {
       std::cout << f << " ";
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalExtPropagator.cxx b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalExtPropagator.cxx
index 5b1c959f580a097bfb4437b8b9756d872759e0db..511b937e0955de5404f6c7daf7517863b7ed83a4 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalExtPropagator.cxx
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalExtPropagator.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
 */
 //
 // The VKalExtPropagator object is created if ATHENA propagator exists
@@ -19,6 +19,7 @@
 #include "TrkVKalVrtFitter/TrkVKalVrtFitter.h"
 #include "TrkSurfaces/CylinderSurface.h"
 #include "TrkSurfaces/StraightLineSurface.h"
+#include "AthContainers/ConstAccessor.h"
 //-------------------------------------------------
 #include<iostream>
 
@@ -431,7 +432,8 @@ namespace Trk {
 /*--------------------------------------------------------------------------------------*/
   const Perigee* VKalExtPropagator::myxAODFstPntOnTrk(const xAOD::TrackParticle* xprt) const
   {
-    if(!xprt->isAvailable<float>("radiusOfFirstHit")) return nullptr;  // No radiusOfFirstHit on track
+    static const SG::ConstAccessor<float> radiusOfFirstHitAcc ("radiusOfFirstHit");
+    if(!radiusOfFirstHitAcc.isAvailable (*xprt)) return nullptr;  // No radiusOfFirstHit on track
 
     const EventContext& ctx = Gaudi::Hive::currentContext();
     const Trk::Perigee*  mPer = &(xprt->perigeeParameters());
diff --git a/Tracking/TrkVertexFitter/TrkVertexFitters/src/AdaptiveMultiVertexFitterTestAlg.cxx b/Tracking/TrkVertexFitter/TrkVertexFitters/src/AdaptiveMultiVertexFitterTestAlg.cxx
index a2a1ac9fa1df38fb9bff02bdf3883c120f642ce3..a248c956f449da50adac59556c333d015c6a0aef 100644
--- a/Tracking/TrkVertexFitter/TrkVertexFitters/src/AdaptiveMultiVertexFitterTestAlg.cxx
+++ b/Tracking/TrkVertexFitter/TrkVertexFitters/src/AdaptiveMultiVertexFitterTestAlg.cxx
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration.
+ * Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration.
  */
 /**
  * @file TrkVertexFitters/src/AdaptiveMultiVertexFitterTestAlg.cxx
@@ -133,7 +133,8 @@ void dumpVertex (const xAOD::Vertex& v)
 {
   std::cout << "vvv\n";
   std::cout << v.x() << ", " << v.y() << ", " << v.z() << "\n";
-  if (v.isAvailable<short> ("vertexType")) {
+  static const SG::ConstAccessor<short> vertexTypeAcc ("vertexType");
+  if (vertexTypeAcc.isAvailable(v)) {
     std::cout << "vertexType " << v.vertexType() << "\n";
   }
   std::cout << "chi2/ndof " << v.chiSquared() << ", " << v.numberDoF() << "\n";
@@ -144,7 +145,8 @@ void dumpVertex (const xAOD::Vertex& v)
   }
   std::cout << "\n";
 
-  if (v.isAvailable<std::vector<ElementLink<xAOD::TrackParticleContainer> > > ("trackParticleLinks")) {
+  static const SG::ConstAccessor<std::vector<ElementLink<xAOD::TrackParticleContainer> > > trackParticleLinksAcc ("trackParticleLinks");
+  if (trackParticleLinksAcc.isAvailable(v)) {
     std::cout << "tplinks ";
     for (const ElementLink< xAOD::TrackParticleContainer >& l : v.trackParticleLinks()) {
       std::cout << l.dataID() << "/" << l.index() << " ";
@@ -152,7 +154,8 @@ void dumpVertex (const xAOD::Vertex& v)
     std::cout << "\n";
   }
 
-  if (v.isAvailable<std::vector<float> > ("trackWeights")) {
+  static const SG::ConstAccessor<float> trackWeightsAcc ("trackWeights");
+  if (trackWeightsAcc.isAvailable(v)) {
     std::cout << "wt ";
     for (float f : v.trackWeights()) {
       std::cout << f << " ";
@@ -160,7 +163,8 @@ void dumpVertex (const xAOD::Vertex& v)
     std::cout << "\n";
   }
 
-  if (v.isAvailable<std::vector<ElementLink<xAOD::NeutralParticleContainer> > > ("neutralParticleLinks")) {
+  static const SG::ConstAccessor<std::vector<ElementLink<xAOD::NeutralParticleContainer> > > neutralParticleLinksAcc ("neutralParticleLinks");
+  if (neutralParticleLinksAcc.isAvailable(v)) {
     std::cout << "nplinks ";
     for (const ElementLink< xAOD::NeutralParticleContainer >& l : v.neutralParticleLinks()) {
       std::cout << l.dataID() << "/" << l.index() << " ";
@@ -168,7 +172,8 @@ void dumpVertex (const xAOD::Vertex& v)
     std::cout << "\n";
   }
 
-  if (v.isAvailable<std::vector<float> > ("neutralWeights")) {
+  static const SG::ConstAccessor<float> neutralWeightsAcc ("neutralWeights");
+  if (neutralWeightsAcc.isAvailable(v)) {
     std::cout << "wt ";
     for (float f : v.neutralWeights()) {
       std::cout << f << " ";
diff --git a/Tracking/TrkVertexFitter/TrkVertexFitters/src/AdaptiveVertexFitterTestAlg.cxx b/Tracking/TrkVertexFitter/TrkVertexFitters/src/AdaptiveVertexFitterTestAlg.cxx
index 6a634b060e31aa8d4971d8308e1b98f5388866d4..84d8bb13614b54e460cbdbd6c2cace5de6115765 100644
--- a/Tracking/TrkVertexFitter/TrkVertexFitters/src/AdaptiveVertexFitterTestAlg.cxx
+++ b/Tracking/TrkVertexFitter/TrkVertexFitters/src/AdaptiveVertexFitterTestAlg.cxx
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration.
+ * Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration.
  */
 /**
  * @file TrkVertexFitters/src/AdaptiveVertexFitterTestAlg.cxx
@@ -17,6 +17,7 @@
 #include "TrkTrack/Track.h"
 #include "TrkParticleBase/TrackParticleBase.h"
 #include "EventPrimitives/EventPrimitivesHelpers.h"
+#include "AthContainers/ConstAccessor.h"
 #include "TestTools/FLOATassert.h"
 #include "GaudiKernel/SystemOfUnits.h"
 #include <cassert>
@@ -231,7 +232,8 @@ void dumpVertex (const xAOD::Vertex& v)
 {
   std::cout << "vvv\n";
   std::cout << v.x() << ", " << v.y() << ", " << v.z() << "\n";
-  if (v.isAvailable<short> ("vertexType")) {
+  static const SG::ConstAccessor<short> vertexTypeAcc ("vertexType");
+  if (vertexTypeAcc.isAvailable (v)) {
     std::cout << "vertexType " << v.vertexType() << "\n";
   }
   std::cout << "chi2/ndof " << v.chiSquared() << ", " << v.numberDoF() << "\n";
@@ -242,7 +244,8 @@ void dumpVertex (const xAOD::Vertex& v)
   }
   std::cout << "\n";
 
-  if (v.isAvailable<std::vector<ElementLink<xAOD::TrackParticleContainer> > > ("trackParticleLinks")) {
+  static const SG::ConstAccessor<std::vector<ElementLink<xAOD::TrackParticleContainer> > > trackParticleLinksAcc ("trackParticleLinks");
+  if (trackParticleLinksAcc.isAvailable(v)) {
     std::cout << "tplinks ";
     for (const ElementLink< xAOD::TrackParticleContainer >& l : v.trackParticleLinks()) {
       std::cout << l.dataID() << "/" << l.index() << " ";
@@ -250,7 +253,8 @@ void dumpVertex (const xAOD::Vertex& v)
     std::cout << "\n";
   }
 
-  if (v.isAvailable<std::vector<float> > ("trackWeights")) {
+  static const SG::ConstAccessor<float> trackWeightsAcc ("trackWeights");
+  if (trackWeightsAcc.isAvailable(v)) {
     std::cout << "wt ";
     for (float f : v.trackWeights()) {
       std::cout << f << " ";
@@ -258,7 +262,8 @@ void dumpVertex (const xAOD::Vertex& v)
     std::cout << "\n";
   }
 
-  if (v.isAvailable<std::vector<ElementLink<xAOD::NeutralParticleContainer> > > ("neutralParticleLinks")) {
+  static const SG::ConstAccessor<std::vector<ElementLink<xAOD::NeutralParticleContainer> > > neutralParticleLinksAcc ("neutralParticleLinks");
+  if (neutralParticleLinksAcc.isAvailable(v)) {
     std::cout << "nplinks ";
     for (const ElementLink< xAOD::NeutralParticleContainer >& l : v.neutralParticleLinks()) {
       std::cout << l.dataID() << "/" << l.index() << " ";
@@ -266,7 +271,8 @@ void dumpVertex (const xAOD::Vertex& v)
     std::cout << "\n";
   }
 
-  if (v.isAvailable<std::vector<float> > ("neutralWeights")) {
+  static const SG::ConstAccessor<float> neutralWeightsAcc ("neutralWeights");
+  if (neutralWeightsAcc.isAvailable(v)) {
     std::cout << "wt ";
     for (float f : v.neutralWeights()) {
       std::cout << f << " ";