diff --git a/MuonSpectrometer/MuonConfig/python/MuonGeometryConfig.py b/MuonSpectrometer/MuonConfig/python/MuonGeometryConfig.py
index eaed2788e7079bb07f793b984cff61bcec3f0d0e..495e54eb2754f0bf1f73f1d54d462287aa085a74 100644
--- a/MuonSpectrometer/MuonConfig/python/MuonGeometryConfig.py
+++ b/MuonSpectrometer/MuonConfig/python/MuonGeometryConfig.py
@@ -3,7 +3,6 @@
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
 from AthenaConfiguration.AccumulatorCache import AccumulatorCache
-from AthenaConfiguration.Enums import ProductionStep
 from AtlasGeoModel.GeoModelConfig import GeoModelCfg
 from AthenaConfiguration.Enums import LHCPeriod
 
@@ -45,17 +44,9 @@ def MuonDetectorToolCfg(flags, name = "MuonDetectorTool", **kwargs):
     kwargs.setdefault("HasCSC", flags.Detector.GeometryCSC)
     kwargs.setdefault("HasSTgc", flags.Detector.GeometrysTGC)
     kwargs.setdefault("HasMM", flags.Detector.GeometryMM)
-
    
     kwargs.setdefault("UseConditionDb", flags.Muon.enableAlignment)
-    # call fill cache of MuonDetectorTool such that all MdtReadoutElement caches are filled
-    # already during initialize() -> this will increase memory -> needs to be measured
-    kwargs.setdefault("FillCacheInitTime", flags.Common.ProductionStep != ProductionStep.Simulation or \
-                                           flags.Muon.enableAlignment) 
-
     kwargs.setdefault("UseAsciiConditionData", flags.Muon.enableAlignment)
-    # turn on/off caching of MdtReadoutElement surfaces
-    kwargs.setdefault("CachingFlag", 1)
     
     UseIlinesFromGM = False
     EnableCscInternalAlignment = False
@@ -225,5 +216,5 @@ def MuonDetectorCondAlgCfg(flags, name = "MuonDetectorCondAlg", **kwargs):
 def MuonGeoModelToolCfg(flags):
     result = ComponentAccumulator()
     geoModelSvc = result.getPrimaryAndMerge(GeoModelCfg(flags))
-    geoModelSvc.DetectorTools+= [result.popToolsAndMerge(MuonDetectorToolCfg(flags, FillCacheInitTime = 0))]
+    geoModelSvc.DetectorTools+= [result.popToolsAndMerge(MuonDetectorToolCfg(flags))]
     return result
diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/CscReadoutElement.h b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/CscReadoutElement.h
index 59ec717a6c03005a83fc8c11475d4fcb5fcb5b40..2ba993dfd7b3ae7ab22b7cb0ba14c5dc95c8f719 100644
--- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/CscReadoutElement.h
+++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/CscReadoutElement.h
@@ -256,10 +256,6 @@ namespace MuonGM {
         double sinStereo(const Identifier& stripId) const;
 
         virtual void fillCache() override;
-        virtual void refreshCache() override {
-            clearCache();
-            fillCache();
-        }
         double xCoordinateInTrackingFrame(const Identifier& id) const;
 
     private:
diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MMReadoutElement.h b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MMReadoutElement.h
index dd4f02e5476dd0863e6e83f554efc202801e8e4f..cc16c4e2c8e58c15fb440a44d073bdacd4ec3181 100644
--- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MMReadoutElement.h
+++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MMReadoutElement.h
@@ -89,7 +89,6 @@ namespace MuonGM {
         
         /** @brief function to fill tracking cache */
         virtual void fillCache() override final;
-        virtual void refreshCache() override final;
 
         /** @brief returns the hash to be used to look up the surface and transform in the MuonClusterReadoutElement tracking cache */
         virtual int surfaceHash(const Identifier& id) const override final;
diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MdtReadoutElement.h b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MdtReadoutElement.h
index 4ff527a019c871c24154424e5e3e6965c407bbdf..9db3cad652ac93754dff67e0c1721c3d523b2796 100644
--- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MdtReadoutElement.h
+++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MdtReadoutElement.h
@@ -158,11 +158,8 @@ namespace MuonGM {
         //// Tracking interfaces
         ////////////////////////////////////////////////////////////
 
-        void clearCache() override;
-        void fillCache() override;
-        void refreshCache() override { clearCache(); }
-        void clearBLineCache();
-        void fillBLineCache();
+        void clearCache() override final;
+        void fillCache() override final;
 
         virtual const Trk::Surface& surface() const override final;
         virtual const Trk::SaggedLineSurface& surface(const Identifier& id) const override final;
diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonClusterReadoutElement.h b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonClusterReadoutElement.h
index 4e9f5c6534a8089f2abbf1eb198444ab6096ece3..eb91db67ce496e97cbe8dbba4368610a30b6b98f 100644
--- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonClusterReadoutElement.h
+++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonClusterReadoutElement.h
@@ -75,10 +75,7 @@ namespace MuonGM {
         virtual int numberOfStrips(int layer, bool measuresPhi) const = 0;
 
         /** clear the cache of the readout elememt */
-        virtual void clearCache() override;
-
-        /** fill the cache of the readout element, to be implemented by the concrete implementations */
-        virtual void fillCache() override = 0;
+        virtual void clearCache() override final;
 
         /** access to chamber surface (phi orientation), uses the first gas gap */
         virtual const Trk::PlaneSurface& surface() const override;
@@ -120,9 +117,6 @@ namespace MuonGM {
         
         MuonClusterReadoutElement(GeoVFullPhysVol* pv, MuonDetectorManager* mgr, Trk::DetectorElemType detType);
 
-        void shiftSurface(const Identifier& id);
-        void restoreSurfaces();
-
         std::unique_ptr<SurfaceData> m_surfaceData{};
     };
 
@@ -138,8 +132,6 @@ namespace MuonGM {
     inline const Amg::Vector3D& MuonClusterReadoutElement::normal(const Identifier& id) const { return normal(layerHash(id)); }
     inline const Trk::SurfaceBounds& MuonClusterReadoutElement::bounds(const Identifier& id) const { return bounds(boundaryHash(id)); }
 
-    inline void MuonClusterReadoutElement::clearCache() { m_surfaceData.reset(); }
-
     inline const Trk::PlaneSurface& MuonClusterReadoutElement::surface(int hash) const {
         if (!m_surfaceData) {
             ATH_MSG_FATAL(__FILE__<<":"<<__LINE__<<" "<<__func__<<" Requesting surface but cache is empty");
diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h
index 5225280e2d73633ddefc763882d1528b596aab36..8c62d738383dc3a56c1355083d8d23434a684e51 100644
--- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h
+++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h
@@ -127,10 +127,6 @@ namespace MuonGM {
         void setGenericTgcDescriptor(const GenericTGCCache& tc);
         inline const GenericTGCCache* getGenericTgcDescriptor() const;
 
-        void setCachingFlag(int value);
-        inline int cachingFlag() const;
-        void setCacheFillingFlag(int value);
-        inline int cacheFillingFlag() const;
 
         void setMinimalGeoFlag(int flag);
         inline int  MinimalGeoFlag() const;
@@ -202,30 +198,8 @@ namespace MuonGM {
         static std::string muonStationKey(const std::string& stName, int statEtaIndex, int statPhiIndex) ;
 
         void clearCache();
-        void refreshCache();
         void fillCache();
 
-        void clearMdtCache();
-        void clearRpcCache();
-        void clearCscCache();
-        void clearTgcCache();
-        void clearsTgcCache();
-        void clearMMCache();
-
-        void refreshMdtCache();
-        void refreshRpcCache();
-        void refreshCscCache();
-        void refreshTgcCache();
-        void refreshsTgcCache();
-        void refreshMMCache();
-
-        void fillMdtCache();
-        void fillRpcCache();
-        void fillCscCache();
-        void fillTgcCache();
-        void fillsTgcCache();
-        void fillMMCache();
-
         StatusCode updateAlignment(const ALineContainer& a);
         StatusCode updateDeformations(const BLineContainer& a);
         StatusCode updateMdtAsBuiltParams(const MdtAsBuiltContainer& a);
@@ -261,8 +235,6 @@ namespace MuonGM {
         /// detector element
         int rpcIdentToArrayIdx(const Identifier& id, int& dbz_index) const;
 
-        int m_cachingFlag{1};
-        int m_cacheFillingFlag{1};
         int m_minimalgeo{0};
         int m_includeCutouts{0};
         int m_includeCutoutsBog{0};
@@ -365,9 +337,6 @@ namespace MuonGM {
     unsigned int MuonDetectorManager::nRpcDE() const { return m_n_rpcDE; }
     unsigned int MuonDetectorManager::nTgcDE() const { return m_n_tgcDE; }
 
-    int MuonDetectorManager::cacheFillingFlag() const { return m_cacheFillingFlag; }
-    int MuonDetectorManager::cachingFlag() const { return m_cachingFlag; }
-
 }  // namespace MuonGM
 
 #ifndef GAUDI_NEUTRAL
diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h
index 43524f6e2461bbb046fadce4d6e54c35bf13c3cd..4cd86f492ab9f81d74530589bf23d10787e87af4 100644
--- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h
+++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h
@@ -129,11 +129,9 @@ namespace MuonGM {
         // Tracking related interfaces
         // Element Surface
         // This creates a new surface. The client is responsible for deleting it.
-        inline int cachingFlag() const;
-        void setCachingFlag(int value);
         virtual void clearCache() = 0;
         virtual void fillCache() = 0;
-        virtual void refreshCache() = 0;
+        void refreshCache();
         
         const Muon::IMuonIdHelperSvc* idHelperSvc() const { return m_idHelperSvc.get(); }
         
@@ -208,7 +206,6 @@ namespace MuonGM {
    
     bool MuonReadoutElement::sideA() const { return (getStationEta() > 0); }
     bool MuonReadoutElement::sideC() const { return (getStationEta() < 0); }
-    int MuonReadoutElement::cachingFlag() const { return m_caching; }
 
     inline const Amg::Transform3D& MuonReadoutElement::absTransform() const { return getMaterialGeom()->getAbsoluteTransform(); }
 
diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonStation.h b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonStation.h
index 8c4ae37e4acd5172bc1819222aedd108cef5e961..115e0a60e01ba7398a806b0def60e868281b4b23 100644
--- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonStation.h
+++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonStation.h
@@ -101,10 +101,8 @@ namespace MuonGM {
         
         inline int nMuonReadoutElements() const;
         void clearCache();
-        void refreshCache();
         void fillCache();
-        void clearBLineCache();
-        void fillBLineCache();
+        void refreshCache();
         void setBline(const BLinePar* bline);
         inline GeoAlignableTransform* getGeoTransform() const;
         inline Amg::Transform3D getTransform() const;
diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/RpcReadoutElement.h b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/RpcReadoutElement.h
index 1b20261331eca68b329eed877a1139f62004905e..7a46518e024657117d33f3e1913f1897071a61ed 100644
--- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/RpcReadoutElement.h
+++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/RpcReadoutElement.h
@@ -136,10 +136,6 @@ namespace MuonGM {
 
         /** @brief function to fill tracking cache */
         virtual void fillCache() override final;
-        virtual void refreshCache() override final {
-            clearCache();
-            fillCache();
-        }
 
         /** @brief returns the hash to be used to look up the surface and transform in the MuonClusterReadoutElement tracking cache */
         virtual int surfaceHash(const Identifier& id) const override final;
diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/TgcReadoutElement.h b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/TgcReadoutElement.h
index 686a0f8ec89ccbdf61d048ff4de11aa33185bd0e..e30b3850c45d950a1a6c620ec89a6ad599fd5a6b 100644
--- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/TgcReadoutElement.h
+++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/TgcReadoutElement.h
@@ -258,10 +258,6 @@ namespace MuonGM {
         inline const TgcReadoutParams* getReadoutParams() const;
 
         virtual void fillCache() override;
-        virtual void refreshCache() override {
-            clearCache();
-            fillCache();
-        }
 
     private:
         int m_ngasgaps{0};
diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h
index 5a6064be33cbe15f29a6e99717b6fe609799eab1..40060a49b9e85ffff7fc1c8936443445ddc90576 100644
--- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h
+++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h
@@ -130,10 +130,6 @@ namespace MuonGM {
 
         /** @brief function to fill tracking cache */
         virtual void fillCache() override final;
-        virtual void refreshCache() override final {
-            clearCache();
-            fillCache();
-        }
 
         /** @brief returns the hash to be used to look up the surface and transform in the MuonClusterReadoutElement tracking cache */
         virtual int surfaceHash(const Identifier& id) const override final;
diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/CscReadoutElement.cxx b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/CscReadoutElement.cxx
index 5dbcd9355e609122e720810cb83cc370f22f17b5..24140c62d0c7971304cbdf77666d06d337d46d32 100644
--- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/CscReadoutElement.cxx
+++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/CscReadoutElement.cxx
@@ -39,8 +39,7 @@ namespace MuonGM {
     CscReadoutElement::CscReadoutElement(GeoVFullPhysVol* pv, const std::string& stName, MuonDetectorManager* mgr) :
         MuonClusterReadoutElement(pv, mgr, Trk::DetectorElemType::Csc) {
         // Set a few parameters here.  The rest are set in MuonChamber::setCscReadoutGeometry
-        // get the setting of the caching flag from the manager
-        setCachingFlag(mgr->cachingFlag());
+
 
         // st name
         setStationName(stName);
diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MMReadoutElement.cxx b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MMReadoutElement.cxx
index 1704ed3dfe5628c49734da8d8ecb2a5335e76974..8ed7a6ed2e9cdefee7cc446741efeda411131e00 100644
--- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MMReadoutElement.cxx
+++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MMReadoutElement.cxx
@@ -52,10 +52,6 @@ namespace MuonGM {
       m_passivData(passivData),
       m_ml(mL) {
       
-
-        // get the setting of the caching flag from the manager
-        setCachingFlag(mgr->cachingFlag());
-
         std::string fixName = (stName[2] == 'L') ? "MML" : "MMS";
         setStationName(fixName);       
         setChamberLayer(mL);
@@ -138,7 +134,7 @@ namespace MuonGM {
 
 
     //============================================================================
-    MMReadoutElement::~MMReadoutElement() { clearCache(); }
+    MMReadoutElement::~MMReadoutElement() = default;
 
     //============================================================================
     void MMReadoutElement::initDesign() {
@@ -397,7 +393,6 @@ namespace MuonGM {
 
     //============================================================================
     void MMReadoutElement::setDelta(const ALinePar& aline) {
-
         // amdb frame (s, z, t) = chamber frame (y, z, x)
         if (aline) {
             m_delta = aline.delta();
@@ -487,11 +482,6 @@ namespace MuonGM {
         locPosML[2] += dz;
     }
 
-    void MMReadoutElement::refreshCache() {
-        clearCache();
-        fillCache();
-    }
-    
 
     //============================================================================
     bool MMReadoutElement::spacePointPosition(const Identifier& layerId, const Amg::Vector2D& lpos, Amg::Vector3D& pos) const {
diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MdtReadoutElement.cxx b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MdtReadoutElement.cxx
index 53f4d441b6317f2b33fbdfc2641b3b47f72dc129..34295dc08071a71cc1eb824bfa211189200d857f 100644
--- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MdtReadoutElement.cxx
+++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MdtReadoutElement.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
 */
 
 /***************************************************************************
@@ -16,6 +16,8 @@
 #include "GeoModelKernel/GeoTube.h"
 #include "GeoModelUtilities/GeoGetIds.h"
 #include "GeoPrimitives/GeoPrimitivesHelpers.h"
+#include "GeoPrimitives/GeoPrimitivesToStringConverter.h"
+
 
 #include "MuonAlignmentData/BLinePar.h"
 #include "MuonIdHelpers/MdtIdHelper.h"
@@ -57,8 +59,6 @@ namespace MuonGM {
     MdtReadoutElement::MdtReadoutElement(GeoVFullPhysVol* pv, const std::string& stName, MuonDetectorManager* mgr) :
         MuonReadoutElement(pv, mgr, Trk::DetectorElemType::Mdt) {
         // get the setting of the caching flag from the manager
-        setCachingFlag(mgr->cachingFlag());
-
         m_inBarrel = stName[0]== 'B';
 
         setStationName(stName);
@@ -141,8 +141,7 @@ namespace MuonGM {
                                 found = true;
                             }
                             ++kk;
-                        },
-                        &*cv);
+                        }, cv);
                     if (found) {
                         ATH_MSG_DEBUG( " MdtReadoutElement tube match found for BMG - input : tube(" << tube << "), layer("
                             << tubeLayer << ") - output match : tube(" << ii % maxNTubesPerLayer << "), layer(" << ii / maxNTubesPerLayer
@@ -816,12 +815,6 @@ namespace MuonGM {
 
     const Trk::SaggedLineSurface& MdtReadoutElement::surface(const int tubeLayer, const int tube) const {
 
-
-
-
-
-
-
         int ntot_tubes = m_nlayers * m_ntubesperlayer;
         int itube = (tubeLayer - 1) * m_ntubesperlayer + tube - 1;
         // consistency checks
@@ -916,21 +909,6 @@ namespace MuonGM {
         }
         return *m_associatedBounds;
     }
-
-    void MdtReadoutElement::fillBLineCache() {
-        ATH_MSG_DEBUG( "Filling BLine cache for ReadoutElement " << idHelperSvc()->toStringDetEl(identify()));
-        for (int tubeL = 1; tubeL <= m_nlayers; ++tubeL) {
-            for (int tube = 1; tube <= m_ntubesperlayer; ++tube) { fromIdealToDeformed(tubeL, tube); }
-        }
-    }
-    void MdtReadoutElement::clearBLineCache() {
-        ATH_MSG_VERBOSE( "Clearing BLine cache for ReadoutElement " << idHelperSvc()->toStringDetEl(identify()));
-        if (m_haveDeformTransf) {
-            m_haveDeformTransf = false;
-            for (auto& d : m_deformTransf) { d.release(); }
-        }
-    }
-
     void MdtReadoutElement::clearCache() {
         ATH_MSG_DEBUG( "Clearing cache for ReadoutElement " << idHelperSvc()->toStringDetEl(identify()) );
         if (m_associatedSurface) {
@@ -954,13 +932,20 @@ namespace MuonGM {
             m_haveTubeBounds = false;
             for (auto& b : m_tubeBounds) { b.release(); }
         }
-        // reset here the deform-related transforms
-        clearBLineCache();
+        // reset here the deform-related transforms        
+        if (m_haveDeformTransf) {
+            m_haveDeformTransf = false;
+            for (auto& d : m_deformTransf) { d.release(); }
+        }
     }
 
     void MdtReadoutElement::setBLinePar(const BLinePar* bLine) {
         ATH_MSG_DEBUG( "Setting B-line for " << idHelperSvc()->toStringDetEl(identify()) );
+        if (m_BLinePar == bLine) {
+            return;
+        }
         m_BLinePar = bLine;
+        refreshCache();
     }
 
     void MdtReadoutElement::fillCache() {
@@ -978,8 +963,8 @@ namespace MuonGM {
 #endif
         const Trk::CylinderBounds* tmpCil = nullptr;
         const Trk::SaggedLineSurface* tmpSaggL = nullptr;
-        Amg::Vector3D myPoint;
-        Amg::Transform3D myTransform;
+        Amg::Vector3D myPoint{Amg::Vector3D::Zero()};
+        Amg::Transform3D myTransform{Amg::Transform3D::Identity()};
         for (int tl = 1; tl <= getNLayers(); ++tl) {
             for (int tube = 1; tube <= getNtubesperlayer(); ++tube) {
                 // in case of BMG chambers, do not check the 'dead' tubes
@@ -1006,7 +991,7 @@ namespace MuonGM {
 #ifndef NDEBUG
                     if (found) {
                         ATH_MSG_VERBOSE( "tubeLayer/tube " << tl << " " << tube << " transform at origin  "
-                            << myTransform * Amg::Vector3D::Zero() );
+                            << Amg::toString(myTransform.linear()) );
                         ATH_MSG_VERBOSE( "tubeLayer/tube " << tl << " " << tube << " tube center          " << myPoint );
                         ATH_MSG_VERBOSE( "tubeLayer/tube " << tl << " " << tube << " tube bounds pointer  " << tmpCil );
                         ATH_MSG_VERBOSE( "tubeLayer/tube " << tl << " " << tube << " tube surface pointer " << tmpSaggL );
diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonClusterReadoutElement.cxx b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonClusterReadoutElement.cxx
index c29722cf9bda15b0fc7b0e2c8d69027a12e8c1f7..a50654afbf74d10e544e1661da97642896f02e6f 100644
--- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonClusterReadoutElement.cxx
+++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonClusterReadoutElement.cxx
@@ -10,11 +10,6 @@ namespace MuonGM {
 
     MuonClusterReadoutElement::~MuonClusterReadoutElement() = default;
 
-    void MuonClusterReadoutElement::shiftSurface(const Identifier&) { fillCache(); }
-
-    void MuonClusterReadoutElement::restoreSurfaces() {
-        m_surfaceData.reset();
-        fillCache();
-    }
+    void MuonClusterReadoutElement::clearCache() { m_surfaceData.reset(); }
 
 }  // namespace MuonGM
diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx
index c8ff1b8f4d81eb0baeb355c1a4b0914adeffc051..26672988fab702a2f2f272aff82cba19341091c3 100644
--- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx
+++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx
@@ -41,73 +41,23 @@ namespace MuonGM {
             if (ele) ele->fillCache();
         }
     }
-    template <typename read_out, size_t N> void MuonDetectorManager::refreshCache(std::array<std::unique_ptr<read_out>, N>& array) {
-        for (std::unique_ptr<read_out>& ele : array) {
-            if (!ele) continue;
-            ele->clearCache();
-            ele->fillCache();
-        }
-    }
-    void MuonDetectorManager::clearCache() {
-        clearMdtCache();
-        clearRpcCache();
-        clearTgcCache();
-        clearCscCache();
-    }
 
-    void MuonDetectorManager::refreshCache() {
-        refreshMdtCache();
-        refreshRpcCache();
-        refreshTgcCache();
-        refreshCscCache();
-    }
-    void MuonDetectorManager::refreshMdtCache() {
-        // NEED to fill since FillCacheInitTime = 1 is the default now.
-        refreshCache(m_mdtArray);
-    }
-    void MuonDetectorManager::refreshRpcCache() { refreshCache(m_rpcArray); }
-    void MuonDetectorManager::refreshTgcCache() { refreshCache(m_tgcArray); }
-    void MuonDetectorManager::refreshCscCache() {
-        if (nCscRE()) refreshCache(m_cscArray);
-    }
-    void MuonDetectorManager::refreshMMCache() {
-        if (nMMRE()) refreshCache(m_mmcArray);
-    }
-    void MuonDetectorManager::refreshsTgcCache() {
-        if (nsTgcRE()) refreshCache(m_stgArray);
-    }
-
-    void MuonDetectorManager::clearMdtCache() { clearCache(m_mdtArray); }
-    void MuonDetectorManager::clearRpcCache() { clearCache(m_rpcArray); }
-    void MuonDetectorManager::clearTgcCache() { clearCache(m_tgcArray); }
-    void MuonDetectorManager::clearCscCache() {
-        if (nCscRE()) clearCache(m_cscArray);
-    }
-    void MuonDetectorManager::clearMMCache() {
-        if (nMMRE()) clearCache(m_mmcArray);
-    }
-    void MuonDetectorManager::clearsTgcCache() {
-        if (nsTgcRE()) clearCache(m_stgArray);
-    }
-    void MuonDetectorManager::fillMMCache() {
-        if (nMMRE()) fillCache(m_mmcArray);
-    }
-    void MuonDetectorManager::fillsTgcCache() {
-        if (nsTgcRE()) fillCache(m_stgArray);
-    }
-    void MuonDetectorManager::fillCache() {
-       
+    void MuonDetectorManager::clearCache() {
+        clearCache(m_mdtArray);
+        clearCache(m_rpcArray);
+        clearCache(m_tgcArray);
+        if (nCscRE())   clearCache(m_cscArray);
+        if (nMMRE())    clearCache(m_mmcArray);
+        if (nsTgcRE())  clearCache(m_stgArray);
+    }
+    void MuonDetectorManager::fillCache() {       
         ATH_MSG_INFO( "Filling cache" );
-        fillMdtCache();
-        fillRpcCache();
-        fillTgcCache();
-        fillCscCache();
-    }
-    void MuonDetectorManager::fillMdtCache() { fillCache(m_mdtArray); }
-    void MuonDetectorManager::fillRpcCache() { fillCache(m_rpcArray); }
-    void MuonDetectorManager::fillTgcCache() { fillCache(m_tgcArray); }
-    void MuonDetectorManager::fillCscCache() {
+        fillCache(m_mdtArray);
+        fillCache(m_rpcArray);
+        fillCache(m_tgcArray);
         if (nCscRE()) fillCache(m_cscArray);
+        if (nMMRE()) fillCache(m_mmcArray);
+        if (nsTgcRE()) fillCache(m_stgArray);
     }
 
     unsigned int MuonDetectorManager::getNumTreeTops() const { return m_envelope.size(); }
@@ -490,12 +440,9 @@ namespace MuonGM {
                                                 ALine.getParameter(Parameter::rotS),
                                                 ALine.getParameter(Parameter::rotZ),
                                                 ALine.getParameter(Parameter::rotT));
-                if (cacheFillingFlag()) {
-                    thisStation->clearCache();
-                    thisStation->fillCache();
-                } else {
-                    thisStation->refreshCache();
-                }
+                
+                thisStation->clearCache();
+                thisStation->fillCache();                
             } else {
                 // job different than 0 (standard for TGC conditions for Sept 2010 repro.)
                 ATH_MSG_DEBUG( "Setting delta transform for component " << ALine);
@@ -506,12 +453,9 @@ namespace MuonGM {
                                                 ALine.getParameter(Parameter::rotS),
                                                 ALine.getParameter(Parameter::rotZ),
                                                 ALine.getParameter(Parameter::rotT));
-                if (cacheFillingFlag()) {
-                    thisStation->getMuonReadoutElement(job)->clearCache();
-                    thisStation->getMuonReadoutElement(job)->fillCache();
-                } else {
-                    thisStation->getMuonReadoutElement(job)->refreshCache();
-                }
+                
+                thisStation->getMuonReadoutElement(job)->refreshCache();
+                
             }
             nUpdates++;
         }
@@ -586,9 +530,7 @@ namespace MuonGM {
                     continue;
                 }
                 ATH_MSG_DEBUG( "Setting deformation parameters for Station " << stType << " " << jzz << " " << jff << " ");
-                thisStation->clearBLineCache();
-                thisStation->setBline(&BLine);
-                if (cacheFillingFlag()) thisStation->fillBLineCache();
+                thisStation->setBline(&BLine);                
                 nUpdates++;
             } else {
                 ATH_MSG_WARNING("BLinePar with AmdbId " << stType << " " << jzz << " " << jff << " " << job << " has JOB not 0 ");
@@ -631,13 +573,9 @@ namespace MuonGM {
                     ATH_MSG_ERROR( "The CSC I-lines container includes stations which are no CSCs! This is impossible." );
                 else {
                     CscRE->setCscInternalAlignmentPar(ILine);
-                }
-                if (cacheFillingFlag()) {
-                    thisStation->clearCache();
-                    thisStation->fillCache();
-                } else {
-                    thisStation->refreshCache();
-                }
+                }               
+                thisStation->refreshCache();
+                
                 nUpdates++;
 
             } else {
@@ -671,9 +609,7 @@ namespace MuonGM {
             if (thisStation) {
                 
                 ATH_MSG_DEBUG( "Setting as-built parameters for Station " << AsBuiltPar );
-                thisStation->clearBLineCache();
                 thisStation->setMdtAsBuiltParams(&AsBuiltPar);
-                if (cacheFillingFlag()) thisStation->fillBLineCache();
                 nUpdates++;
             } else {
                 ATH_MSG_WARNING("MdtAsBuiltPar with AmdbId " <<AsBuiltPar
@@ -783,8 +719,6 @@ namespace MuonGM {
         m_rpcIdxToStat.insert(std::make_pair(RpcStatType::BIL, rpcHelper.stationNameIndex("BIL")));
         m_rpcIdxToStat.insert(std::make_pair(RpcStatType::BIS, rpcHelper.stationNameIndex("BIS")));
     }    
-    void MuonDetectorManager::setCacheFillingFlag(int value) { m_cacheFillingFlag = value; }
-    void MuonDetectorManager::setCachingFlag(int value) { m_cachingFlag = value; }
     void MuonDetectorManager::set_DBMuonVersion(const std::string& version) { m_DBMuonVersion = version; }
     void MuonDetectorManager::setGeometryVersion(const std::string& version) { m_geometryVersion = version; }
     void MuonDetectorManager::setMinimalGeoFlag(int flag) { m_minimalgeo = flag; }
diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx
index 0082625a3422050a494472462d522fa9cb5033e4..dc0cdd381f1bd7fe31d4afe3c20aacc4d7076fe8 100644
--- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx
+++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx
@@ -174,5 +174,8 @@ namespace MuonGM {
     void MuonReadoutElement::setSsize(double v) { m_Ssize = v; }
     void MuonReadoutElement::setRsize(double v) { m_Rsize = v; }
     void MuonReadoutElement::setZsize(double v) { m_Zsize = v; }
-    void MuonReadoutElement::setCachingFlag(int value) { m_caching = value; }
+    void MuonReadoutElement::refreshCache() {
+        clearCache();
+        fillCache();
+    }
 }  // namespace MuonGM
diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonStation.cxx b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonStation.cxx
index d6efadb4f56959430234def166c84fb3eac6b3fa..545c47df046b1e24f09b400274ab2368d7c82a58 100644
--- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonStation.cxx
+++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonStation.cxx
@@ -234,20 +234,6 @@ namespace MuonGM {
         }
     }
 
-    void MuonStation::refreshCache() {
-        ATH_MSG_DEBUG("n. of RE in this station is " << m_REwithAlTransfInStation.size());
-        for (auto& [jobId, readAlignPair] : m_REwithAlTransfInStation) {
-            ATH_MSG_DEBUG("refreshCache cache .... for RE ... iteration n. " << jobId);
-            MuonReadoutElement* re = readAlignPair.first;
-            if (!re) {
-                ATH_MSG_WARNING(" in MuonStation:refreshCache " << getStationType() << " at zi/fi " << getEtaIndex() << "/"
-                        << getPhiIndex() << " trying to get a not existing RE (iteration n. )   " << jobId << " RE is null, skipping" );
-                continue;
-            }
-            re->refreshCache();
-        }
-    }
-
     void MuonStation::fillCache() {
         for (auto& [jobId, readAlignPair] : m_REwithAlTransfInStation) {
             ATH_MSG_DEBUG("fillCache cache .... for RE ... iteration n. " << jobId);
@@ -261,6 +247,11 @@ namespace MuonGM {
         }
     }
 
+    void MuonStation::refreshCache() {
+        clearCache();
+        fillCache();
+    }
+
     void MuonStation::setBline(const BLinePar* bline) {
         m_hasBLines = true;
         for (auto& [jobId, readAlignPair] : m_REwithAlTransfInStation) {
@@ -279,36 +270,6 @@ namespace MuonGM {
         }
     }
 
-    void MuonStation::clearBLineCache() {
-        for (auto& [jobId, readAlignPair] : m_REwithAlTransfInStation) {
-            MuonReadoutElement* re = readAlignPair.first;
-            if (!re) {
-               ATH_MSG_WARNING(" in MuonStation:clearBLineCache " << getStationType() << " at zi/fi " << getEtaIndex() << "/"
-                            << getPhiIndex() << " trying to get a not existing RE (iteration n. )   " << jobId << " RE is null, skipping");
-                continue;
-            }
-            if (re->detectorType() !=Trk::DetectorElemType::Mdt) {
-                continue;
-            }
-            MdtReadoutElement* mdt = dynamic_cast<MdtReadoutElement*>(re);
-            mdt->clearBLineCache();           
-        }
-    }
-    void MuonStation::fillBLineCache() {
-        for (auto& [jobId, readAlignPair] : m_REwithAlTransfInStation) {
-            MuonReadoutElement* re = readAlignPair.first;
-            if (!re) {
-                ATH_MSG_WARNING(" in MuonStation:fillBLineCache " << getStationType() << " at zi/fi " << getEtaIndex() << "/"
-                        << getPhiIndex() << " trying to get a non existing RE, skipping "<<jobId);
-                continue;
-            }
-            if (re->detectorType() !=Trk::DetectorElemType::Mdt) {
-                continue;
-            }
-            MdtReadoutElement* mdt = dynamic_cast<MdtReadoutElement*>(re);
-            mdt->fillBLineCache();            
-        }
-    }
 
 #if defined(FLATTEN)
     // We compile this package with optimization, even in debug builds; otherwise,
@@ -400,7 +361,10 @@ namespace MuonGM {
         return m_XTomoData;
     }
 
-    void MuonStation::setMdtAsBuiltParams(const MdtAsBuiltPar* xtomo) { m_XTomoData = xtomo; }
+    void MuonStation::setMdtAsBuiltParams(const MdtAsBuiltPar* xtomo) { 
+        m_XTomoData = xtomo; 
+        refreshCache();
+    }
     void MuonStation::setPhysVol(const PVLink& vol) { m_physVol = vol; }
     PVConstLink MuonStation::getPhysVol() const {return m_physVol; }
     PVLink MuonStation::getPhysVol() { return m_physVol; }
diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/RpcReadoutElement.cxx b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/RpcReadoutElement.cxx
index fac4089f3d83ec66624d6834b04da1c15fe0fe59..16332f6961a8d216718ace8fbd6b853024037cfb 100644
--- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/RpcReadoutElement.cxx
+++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/RpcReadoutElement.cxx
@@ -41,9 +41,6 @@ namespace MuonGM {
         m_mirrored{is_mirrored}  {
         std::string gVersion = manager()->geometryVersion();
 
-        // get the setting of the caching flag from the manager
-        setCachingFlag(mgr->cachingFlag());
-
         m_descratzneg = (zi < 0 && !is_mirrored);
 
 
@@ -78,7 +75,7 @@ namespace MuonGM {
         }
     }
 
-    RpcReadoutElement::~RpcReadoutElement() { clearCache(); }
+    RpcReadoutElement::~RpcReadoutElement()  = default;
 
     double RpcReadoutElement::localStripSCoord(int doubletZ, int doubletPhi, bool measphi  , int strip) const {
         if ((doubletZ != m_dbZ && m_netastrippanels == 1) || (m_netastrippanels != 1 && (doubletZ < 1 || doubletZ > m_netastrippanels))) {
diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/TgcReadoutElement.cxx b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/TgcReadoutElement.cxx
index 69f78e08f40fe9f0cd244d46cd0b4b9a62789b61..966047ddbb8cf875f6ce3fbc9c0088831a9a0359 100644
--- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/TgcReadoutElement.cxx
+++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/TgcReadoutElement.cxx
@@ -34,10 +34,9 @@ namespace MuonGM {
         MuonClusterReadoutElement(pv, mgr, Trk::DetectorElemType::Tgc) {
         setStationName(stName);
         // get the setting of the caching flag from the manager
-        setCachingFlag(mgr->cachingFlag());
     }
 
-    TgcReadoutElement::~TgcReadoutElement() { clearCache(); }
+    TgcReadoutElement::~TgcReadoutElement() = default;
 
     Amg::Transform3D TgcReadoutElement::localToGlobalTransf(int gasGap) const {
         const Amg::Vector3D gasgapP = localGasGapPos(gasGap);
diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx
index 3951328c725a1c24b713204245e762e17d879bfe..5ff7efb2d662dc5186a1d332fd38e67662b51f28 100644
--- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx
+++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx
@@ -52,9 +52,6 @@ namespace MuonGM {
     : MuonClusterReadoutElement(pv, mgr, Trk::DetectorElemType::sTgc)
     , m_ml(mL) {
 
-        // get the setting of the caching flag from the manager
-        setCachingFlag(mgr->cachingFlag());
-
         std::string fixName = (stName[1] == 'L') ? "STL" : "STS";
         Identifier id = mgr->stgcIdHelper()->channelID(fixName, zi, fi, mL, 1, 2, 1);
 
@@ -116,7 +113,7 @@ namespace MuonGM {
 
 
     //============================================================================
-    sTgcReadoutElement::~sTgcReadoutElement() { clearCache(); }
+    sTgcReadoutElement::~sTgcReadoutElement() = default;
 
     //============================================================================
   void sTgcReadoutElement::initDesign(double /*largeX*/, double /*smallX*/, double /*lengthY*/, double /*stripPitch*/,
diff --git a/MuonSpectrometer/MuonGeoModel/MuonGeoModel/MuonDetectorFactory001.h b/MuonSpectrometer/MuonGeoModel/MuonGeoModel/MuonDetectorFactory001.h
index dee338cea8c33a7c65160233a050f9bc771e910b..42ca0e03128a598d7e7bf1d88ae411deeb4dddb5 100644
--- a/MuonSpectrometer/MuonGeoModel/MuonGeoModel/MuonDetectorFactory001.h
+++ b/MuonSpectrometer/MuonGeoModel/MuonGeoModel/MuonDetectorFactory001.h
@@ -56,7 +56,6 @@ namespace MuonGM {
         inline void setSelection(const std::vector<std::string>&,
                                  const std::vector<int>&,
                                  const std::vector<int>&);
-        inline void setCachingFlag(int value);
         inline void setDumpMemoryBreakDown(bool value);
         inline void setCacheFillingFlag(int value);
         inline void setMdtDeformationFlag(int mdtDeformationFlag);
@@ -67,8 +66,8 @@ namespace MuonGM {
         inline void hasMM(bool value);
         inline void setNSWAsBuiltAsciiPath(const std::string &, const std::string &);
 
-	inline void disableBEEShift(bool flag);
-	inline bool BEEShiftDisabled() const;
+	      inline void disableBEEShift(bool flag);
+	      inline bool BEEShiftDisabled() const;
  
 
       private:
@@ -87,15 +86,13 @@ namespace MuonGM {
         int m_rdb{1};
         int m_minimalGeoFlag{0};
 
-
-        int m_caching{0};
-        int m_cacheFillingFlag{0};
         bool m_dumpMemoryBreakDown{false};
         int m_enableFineClashFixing{0};
         bool m_hasCSC{true};
         bool m_hasSTgc{true};
         bool m_hasMM{true};
-	bool m_disableBEEShift{false};
+        
+        bool m_disableBEEShift{false};
 
         std::vector<std::string> m_selectedStations;
         std::vector<int> m_selectedStEta;
@@ -131,8 +128,6 @@ namespace MuonGM {
         m_selectedStPhi = vphi;
     }
 
-    void MuonDetectorFactory001::setCachingFlag(int value) { m_caching = value; }
-    void MuonDetectorFactory001::setCacheFillingFlag(int value) { m_cacheFillingFlag = value; }
     void MuonDetectorFactory001::setDumpMemoryBreakDown(bool value) { m_dumpMemoryBreakDown = value; }
     void MuonDetectorFactory001::setFineClashFixingFlag(int value) { m_enableFineClashFixing = value; }
     void MuonDetectorFactory001::hasCSC(bool value) { m_hasCSC = value; }
diff --git a/MuonSpectrometer/MuonGeoModel/MuonGeoModel/MuonDetectorTool.h b/MuonSpectrometer/MuonGeoModel/MuonGeoModel/MuonDetectorTool.h
index 0ef5f5b415631e31d6b6ce057844235ae6da603a..23302d3d34c80e7e8e016de49bb8753a941f2113 100644
--- a/MuonSpectrometer/MuonGeoModel/MuonGeoModel/MuonDetectorTool.h
+++ b/MuonSpectrometer/MuonGeoModel/MuonGeoModel/MuonDetectorTool.h
@@ -43,7 +43,6 @@ class MuonDetectorTool final : public GeoModelTool {
     Gaudi::Property<bool> m_includeCutoutsBog{this, "IncludeCutoutsBog", false };
     Gaudi::Property<bool> m_includeCtbBis{this, "IncludeCtbBis" , false };
       
-    Gaudi::Property<bool> m_fillCache_initTime{this, "FillCacheInitTime", false};
     Gaudi::Property<bool> m_dumpMemoryBreakDown{this, "DumpMemoryBreakDown", false};
     Gaudi::Property<bool> m_enableFineClashFixing{this, "EnableFineClashFixing", false};
     Gaudi::Property<bool> m_hasCSC{this,"HasCSC", true};
@@ -67,7 +66,6 @@ class MuonDetectorTool final : public GeoModelTool {
     Gaudi::Property<bool> m_useCscIntAlinesFromGM{this, "UseIlinesFromGM", true};
     Gaudi::Property<std::string> m_altCscIntAlinesFile{this, "AlternateCscIntAlignFile", ""};
     
-    Gaudi::Property<bool> m_cachingFlag{this, "CachingFlag", true, "Turn on/off caching of ReadoutElement surfaces etc. (i.e. for MDTs)"};
     Gaudi::Property<bool> m_beeNoShiftInDefault{this, "BEENoShift", false, "Turn off the initial 111 mm shift in BEE station (real data)"};
     MuonGM::MuonDetectorManager* m_manager{nullptr};
 };
diff --git a/MuonSpectrometer/MuonGeoModel/src/MuonDetectorFactory001.cxx b/MuonSpectrometer/MuonGeoModel/src/MuonDetectorFactory001.cxx
index 596eaea1df17441a9cfe014b56d0830d35492ac3..490cece782da230d111efadc72837aca006de1e6 100644
--- a/MuonSpectrometer/MuonGeoModel/src/MuonDetectorFactory001.cxx
+++ b/MuonSpectrometer/MuonGeoModel/src/MuonDetectorFactory001.cxx
@@ -125,8 +125,6 @@ namespace MuonGM {
         log << MSG::INFO << "MuonLayout set to <" << m_layout << "> = Development version for DC3 - infrastructures " << endmsg;
         log << MSG::INFO << "                   BOG cutouts are activated " << m_includeCutoutsBog << " , all other cutouts are disabled " << m_includeCutouts << endmsg;
 
-        m_manager->setCachingFlag(m_caching);
-        m_manager->setCacheFillingFlag(m_cacheFillingFlag);
         // set here the flag defining the geometry granularity
         // minimalgeo = 1 => The geo tree is built up to the Detector Level (Full PhysVol)
         //                     no internal structure of the Detector is built
diff --git a/MuonSpectrometer/MuonGeoModel/src/MuonDetectorTool.cxx b/MuonSpectrometer/MuonGeoModel/src/MuonDetectorTool.cxx
index 970d8914cbde568fe50f7bf98c34c59ab67a83e1..3dba4468187d4b27bb63e412fcd8b72deb8808a8 100644
--- a/MuonSpectrometer/MuonGeoModel/src/MuonDetectorTool.cxx
+++ b/MuonSpectrometer/MuonGeoModel/src/MuonDetectorTool.cxx
@@ -157,17 +157,7 @@ StatusCode MuonDetectorTool::createFactory(MuonGM::MuonDetectorManager * & mgr,
       mgr=theFactory.getDetectorManager();
       mgr->setMinimalGeoFlag(m_minimalGeoFlag);
       mgr->setGeometryVersion(tempLayout);
-      mgr->setCachingFlag(m_cachingFlag);
-      if (m_fillCache_initTime) {
-        mgr->fillCache();
-      } else {
-        // cache for RPC / TGC / CSC must be filled once forever
-        mgr->fillRpcCache();
-        mgr->fillTgcCache();
-        mgr->fillCscCache();
-        mgr->fillMMCache();
-        mgr->fillsTgcCache();
-      }
+      mgr->fillCache();
     
       return StatusCode::SUCCESS;
     }
@@ -222,8 +212,7 @@ StatusCode MuonDetectorTool::createFactory(MuonGM::MuonDetectorManager * & mgr,
                                                          << "    IncludeCutoutsBog              " << m_includeCutoutsBog << endmsg
                                                          << "    IncludeCtbBis                  " << m_includeCtbBis << endmsg 
                                                          << "    MinimalGeoFlag                 " << m_minimalGeoFlag << endmsg
-                                                         << "    EnableCscIntAlignmentFromGM    "
-                                                         << m_useCscIntAlinesFromGM << endmsg << "    FillCacheInitTime              " << m_fillCache_initTime);
+                                                         << "    EnableCscIntAlignmentFromGM    " << m_useCscIntAlinesFromGM);
    
     if (m_stationSelection > 0) {
         StationSelector::SetSelectionType(m_stationSelection);
@@ -281,8 +270,6 @@ StatusCode MuonDetectorTool::createFactory(MuonGM::MuonDetectorManager * & mgr,
         theFactory.setCtbBisFlag(m_includeCtbBis);
         theFactory.setMinimalGeoFlag(m_minimalGeoFlag);
         theFactory.setDumpMemoryBreakDown(m_dumpMemoryBreakDown);
-        theFactory.setCachingFlag(m_cachingFlag);
-        theFactory.setCacheFillingFlag(m_fillCache_initTime);
         theFactory.setFineClashFixingFlag(m_enableFineClashFixing);
         theFactory.hasCSC(m_hasCSC);
         theFactory.hasSTgc(m_hasSTgc);
@@ -312,17 +299,6 @@ StatusCode MuonDetectorTool::createFactory(MuonGM::MuonDetectorManager * & mgr,
             mem = umem;
             cpu = ucpu;
         }
-        // Register the MuonDetectorNode instance with the Transient Detector Store
-        MuonGM::MuonDetectorManager *theManager = theFactory.getDetectorManager();
-       
-        if (m_fillCache_initTime) {
-            theManager->fillCache();
-        } else {
-            // cache for RPC / TGC / CSC must be filled once forever
-            theManager->fillRpcCache();
-            theManager->fillTgcCache();
-            theManager->fillCscCache();
-        }
 
         if (m_dumpMemoryBreakDown) {
             umem = GeoPerfUtils::getMem();
@@ -334,6 +310,7 @@ StatusCode MuonDetectorTool::createFactory(MuonGM::MuonDetectorManager * & mgr,
         }
     }
     mgr=theFactory.getDetectorManager();
+    mgr->fillCache();
     return StatusCode::SUCCESS;
 }
 
diff --git a/MuonSpectrometer/MuonPhaseII/MuonCnv/MuonGeometryCnv/src/MuonReadoutGeomCnvAlg.cxx b/MuonSpectrometer/MuonPhaseII/MuonCnv/MuonGeometryCnv/src/MuonReadoutGeomCnvAlg.cxx
index 5fafdbf328b7393964e3860259e0f3ce6ce749dc..e72897f432b35d973e57cf05a3702047a998053d 100644
--- a/MuonSpectrometer/MuonPhaseII/MuonCnv/MuonGeometryCnv/src/MuonReadoutGeomCnvAlg.cxx
+++ b/MuonSpectrometer/MuonPhaseII/MuonCnv/MuonGeometryCnv/src/MuonReadoutGeomCnvAlg.cxx
@@ -167,7 +167,6 @@ StatusCode MuonReadoutGeomCnvAlg::buildMdt(const ActsGeometryContext& gctx,
         station->setMdtAsBuiltParams(distort.asBuilt);
         newElement->geoInitDone();
         newElement->fillCache();
-        newElement->fillBLineCache();
         /// Add the readout element to the manager
         if (msgLvl(MSG::DEBUG)) {
             ATH_MSG_ALWAYS("Detector element "<<m_idHelperSvc->toString(copyMe->identify())
diff --git a/Tools/PROCTools/data/q442_AOD_digest.ref b/Tools/PROCTools/data/q442_AOD_digest.ref
index 12a615ab2d8f9b19d0261fedcbef98800a45d427..755839c416f0d61606fb1357f0c0e7a68a0c9d41 100644
--- a/Tools/PROCTools/data/q442_AOD_digest.ref
+++ b/Tools/PROCTools/data/q442_AOD_digest.ref
@@ -15,12 +15,12 @@
       330470  1183746710           4           0           0           0           0           0           0           0           0           0           0
       330470  1183751782         212         245          12           3           0           0           0           0           3           0           3
       330470  1183752624         329         368          49           5           2           3           0           3          13           0          13
-      330470  1183753006         321         398          59           8           0           5           0           5          10           0          10
+      330470  1183753006         321         398          59           8           1           5           0           5          10           0          10
       330470  1183754806         362         425          63           8           0           4           0           4           9           0           9
       330470  1183769295         292         334          14           2           2           1           0           1           6           0           6
       330470  1183769939         300         362          33           3           0           5           0           5          11           0          11
       330470  1183773832         229         209           9           2           0           1           0           1           8           0           8
       330470  1183775209          21           0           0           0           0           0           0           0           0           0           0
       330470  1183787124         370         384          26           4           1           3           0           3           6           0           6
-      330470  1183787946         262         326          30           4           0           2           0           2           5           0           5
+      330470  1183787946         262         326          30           4           1           2           0           2           5           0           5
       330470  1183795329         376         358          33           5           0           3           0           3           7           0           7
diff --git a/Tools/PROCTools/data/q449_AOD_digest.ref b/Tools/PROCTools/data/q449_AOD_digest.ref
index 3d04eacba0b8a3a8d588d2adf5547da524b3f7fb..0d65b3192e9d0a774505b1940d656e03c1c45a4a 100644
--- a/Tools/PROCTools/data/q449_AOD_digest.ref
+++ b/Tools/PROCTools/data/q449_AOD_digest.ref
@@ -4,8 +4,8 @@
       431493  1096112143         266         389          47           4           1           1           0           1           2           0           2
       431493  1096113011         366         400          84          10           0           9           0           9          11           0          11
       431493  1096113187         272         317          65           6           1           8           0           8          14           0          14
-      431493  1096113771         293         401          78           7           0          10           0          10          12           0          12
-      431493  1096114154         361         566          89           7           1           7           0           7          17           0          17
+      431493  1096113771         293         401          78           7           1          10           0          10          12           0          12
+      431493  1096114154         361         566          89           7           0           7           0           7          17           0          17
       431493  1096114168         133         153          23           5           0           2           0           2           6           0           6
       431493  1096115980         388         521         136          11           1          21           0          21          22           0          22
       431493  1096116200         306         408          35           4           1           4           0           4          12           0          12
@@ -19,7 +19,7 @@
       431493  1096123504         258         340          52           5           0           8           0           8          11           0          11
       431493  1096125003         349         449          84           7           0          10           0          10          17           0          17
       431493  1096125237         355         495          76           6           1           8           0           8          15           0          15
-      431493  1096125348         295         346          63           6           2           8           0           8           8           0           8
+      431493  1096125348         295         346          63           6           1           8           0           8           8           0           8
       431493  1096125522         251         303          64           9           1           7           0           7          16           0          16
       431493  1096127413         396         579         105           7           1          11           0          11          22           0          22
       431493  1096127722         221         418          74           9           1           7           0           7           7           0           7
@@ -69,7 +69,7 @@
       431493  1096167556         330         426          75           7           1           9           0           9          11           0          11
       431493  1096168429         297         412          99           8           0           6           0           6           8           0           8
       431493  1096171532         337         414          86           9           0          13           0          13          13           0          13
-      431493  1096171788         303         440          58           4           1           9           0           9          12           0          12
+      431493  1096171788         303         440          58           4           0           9           0           9          12           0          12
       431493  1096171838         413         605         118           8           0          10           0          10          24           0          24
       431493  1096173554         313         423          46           5           1           4           0           4           9           0           9
       431493  1096173910         352         570          98           7           1          11           0          11          10           0          10
diff --git a/Tools/WorkflowTestRunner/python/References.py b/Tools/WorkflowTestRunner/python/References.py
index cd7c3731cecb8fcc108b7e2ad712f99e7d3aeac9..bf7a8c1a8c7840449b296a1a0844fbccfc8cacbd 100644
--- a/Tools/WorkflowTestRunner/python/References.py
+++ b/Tools/WorkflowTestRunner/python/References.py
@@ -23,8 +23,8 @@ references_map = {
     "d1759": "v12",
     "d1912": "v1",
     # Reco
-    "q442": "v43",
-    "q449": "v67",
+    "q442": "v44",
+    "q449": "v68",
     "q452": "v1",
     "q454": "v1",
     # Derivations