diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MMReadoutElement.cxx b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MMReadoutElement.cxx
index 8ed7a6ed2e9cdefee7cc446741efeda411131e00..71728f6bc43897dfbb79600ae6b877201c30129b 100644
--- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MMReadoutElement.cxx
+++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MMReadoutElement.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
 */
 
 /***************************************************************************
@@ -59,6 +59,17 @@ namespace MuonGM {
         setIdentifier(id);
         bool foundShape = false;
 
+        const PVConstLink pvc {getMaterialGeom()};
+        const GeoTrd* trd=dynamic_cast<const GeoTrd *> (pvc->getLogVol()->getShape());
+        if (trd) {
+            setSsize(2*trd->getYHalfLength1());
+            setLongSsize( 2*trd->getYHalfLength2());
+            setRsize(2*trd->getZHalfLength());
+            setZsize(trd->getXHalfLength1());
+        } else {
+            ATH_MSG_DEBUG("Not a valid GeoTrd");
+        }
+
         if (!mgr->MinimalGeoFlag()) {
             if (GeoFullPhysVol* pvc = dynamic_cast<GeoFullPhysVol*>(pv)) {
                 const GeoLogVol *lvol=pvc->getLogVol();
diff --git a/Trigger/TrigT1/TrigT1NSWSimTools/src/MMT_Hit.cxx b/Trigger/TrigT1/TrigT1NSWSimTools/src/MMT_Hit.cxx
index 6c2913692a4e5e359beaeb515a37cb61a3266ec4..dd2396d0e01ac86dc61b2b68f233dee1d7bbdd4a 100644
--- a/Trigger/TrigT1/TrigT1NSWSimTools/src/MMT_Hit.cxx
+++ b/Trigger/TrigT1/TrigT1NSWSimTools/src/MMT_Hit.cxx
@@ -3,8 +3,6 @@
  */
 
 #include "TrigT1NSWSimTools/MMT_Hit.h"
-#include "MuonAGDDDescription/MMDetectorDescription.h"
-#include "MuonAGDDDescription/MMDetectorHelper.h"
 #include "MuonReadoutGeometry/MuonChannelDesign.h"
 #include "MuonReadoutGeometry/MuonDetectorManager.h"
 #include "MuonReadoutGeometry/MMReadoutElement.h"
@@ -82,19 +80,14 @@ MMT_Hit::MMT_Hit(const hitData_entry &entry, const MuonGM::MuonDetectorManager*
   Amg::Vector3D globalPos(0.0, 0.0, 0.0);
   if(readout->stripGlobalPosition(strip_id, globalPos)) {
 
-    MMDetectorHelper aHelper;
-    char side = (globalPos.z() > 0.) ? 'A' : 'C';
-    MMDetectorDescription* mm = aHelper.Get_MMDetector(m_sector, std::abs(m_station_eta), m_station_phi, m_multiplet, side);
-    MMReadoutParameters roP   = mm->GetReadoutParameters();
-
     m_R = globalPos.perp();
     m_Z = globalPos.z();
-    m_PitchOverZ = roP.stripPitch/m_Z;
+    m_PitchOverZ = (readout->getDesign(strip_id))->inputPitch/m_Z;
     m_RZslope = m_R / m_Z;
 
     double index = std::round((std::abs(m_RZslope)-0.1)/5e-04); // 0.0005 is approx. the step in slope achievable with a road size of 8 strips
-    double roundedSlope = 0.1 + index*((0.6 - 0.1)/1000.);
-    m_Rp = roP.distanceFromZAxis + roundedSlope*(planeCoordinates[m_plane].Z() - planeCoordinates[0].Z());
+    const double distanceFromZAxis = readout->absTransform().translation().perp() - 0.5*readout->getRsize();
+    m_Rp = distanceFromZAxis + (0.1 + index*((0.6 - 0.1)/1000.))*(planeCoordinates[m_plane].Z() - planeCoordinates[0].Z());
     m_shift = m_Rp / m_Z;
   }
 }
diff --git a/Trigger/TrigT1/TrigT1NSWSimTools/src/MMT_struct.cxx b/Trigger/TrigT1/TrigT1NSWSimTools/src/MMT_struct.cxx
index 3b0afc9815ec93fa61becd065583a94528b6ba40..9ab56ec0fd0a86f72e28f616647fd2e867644d76 100644
--- a/Trigger/TrigT1/TrigT1NSWSimTools/src/MMT_struct.cxx
+++ b/Trigger/TrigT1/TrigT1NSWSimTools/src/MMT_struct.cxx
@@ -3,8 +3,6 @@
 */
 
 #include "TrigT1NSWSimTools/MMT_struct.h"
-#include "MuonAGDDDescription/MMDetectorDescription.h"
-#include "MuonAGDDDescription/MMDetectorHelper.h"
 #include "MuonReadoutGeometry/MuonChannelDesign.h"
 #include "MuonReadoutGeometry/MuonDetectorManager.h"
 
@@ -13,68 +11,27 @@ MMT_Parameters::MMT_Parameters(std::string layerSetup, char wedgeSize, const Muo
 
   // Get the modules for each multiplet, the sector and side arguement (third and fifth argument, respectively) shouldn't matter
   // since the algorithm computes locally
-  char side   = 'A';
+  std::string wedgeString = (wedgeSize=='L' ? "MML" : "MMS");
   m_sector = wedgeSize;
-  MMDetectorHelper aHelper;
-  MMDetectorDescription* mm_top_mult1    = aHelper.Get_MMDetector(m_sector, 2, 5, 1, side); // Parameters: sector, eta, phi, layer/multiplet
-  MMDetectorDescription* mm_top_mult2    = aHelper.Get_MMDetector(m_sector, 2, 5, 2, side);
-  MMDetectorDescription* mm_bottom_mult1 = aHelper.Get_MMDetector(m_sector, 1, 5, 1, side);
-  MMDetectorDescription* mm_bottom_mult2 = aHelper.Get_MMDetector(m_sector, 1, 5, 2, side);
 
-  MMReadoutParameters roParam_top_mult1    = mm_top_mult1->GetReadoutParameters();
-  MMReadoutParameters roParam_top_mult2    = mm_top_mult2->GetReadoutParameters();
-  MMReadoutParameters roParam_bottom_mult1 = mm_bottom_mult1->GetReadoutParameters();
-  MMReadoutParameters roParam_bottom_mult2 = mm_bottom_mult2->GetReadoutParameters();
+  Identifier mm_top_ele_id = detManager->mmIdHelper()->elementID(wedgeString, 2, 5);
+  Identifier mm_bottom_ele_id = detManager->mmIdHelper()->elementID(wedgeString, 1, 5);
+
+  const MuonGM::MMReadoutElement* mm_ReadOut_top = detManager->getMMReadoutElement(mm_top_ele_id);
+  const MuonGM::MMReadoutElement* mm_ReadOut_bottom = detManager->getMMReadoutElement(mm_bottom_ele_id);
+
+  m_lWidth = mm_ReadOut_top->getLongSsize();
+  m_pitch = mm_ReadOut_top->getDesign(mm_top_ele_id)->inputPitch;
 
   //Needed to get the max channels for the deadZone in the x planes... a little annoying...
   //Only changes for small or large and per module. Phi, layer, etc don't matter (just set to 1)
-  std::string wedgeString = (wedgeSize=='L' ? "MML" : "MMS");
 
-  m_pitch = roParam_bottom_mult1.stripPitch;
-  m_lWidth = mm_top_mult1->lWidth();
-  m_innerRadiusEta1 = roParam_bottom_mult1.distanceFromZAxis;
-  m_innerRadiusEta2 = roParam_top_mult1.distanceFromZAxis;
-  m_missedBottomEta = roParam_bottom_mult1.nMissedBottomEta;
-  m_missedBottomStereo = roParam_bottom_mult1.nMissedBottomStereo;
-  if (m_sector == 'L') {
-    ATH_MSG_DEBUG("LM1 \n" <<
-                 "\t\t\t\t Total Strips: " << roParam_bottom_mult1.tStrips << " with pitch: " << roParam_bottom_mult1.stripPitch << "\n" <<
-                 "\t\t\t\t KO strips TopEta: " << roParam_bottom_mult1.nMissedTopEta << " - BottomEta: " << roParam_bottom_mult1.nMissedBottomEta << "\n" <<
-                 "\t\t\t\t KO strips TopStereo: " << roParam_bottom_mult1.nMissedTopStereo << " - BottomStereo: " << roParam_bottom_mult1.nMissedBottomStereo << "\n" <<
-                 "\t\t\t\t (Top, Bottom, Length): (" << mm_bottom_mult1->lWidth() << ", " << mm_bottom_mult1->sWidth() << ", " << mm_bottom_mult1->Length() << ")\n" <<
-                 "\t\t\t\t Zpos - Distance from ZAxis: " << roParam_bottom_mult1.zpos << " - " << roParam_bottom_mult1.distanceFromZAxis << "\n" <<
-                 "\t\t\t\t dlStereoTop/Bottom: " << roParam_bottom_mult1.dlStereoTop << " " << roParam_bottom_mult1.dlStereoBottom << "\n" <<
-                 "\t\t\t\t Active area --> (Bottom, Top, Height) : (" << roParam_bottom_mult1.activeBottomLength << ", " << roParam_bottom_mult1.activeTopLength << ", " << roParam_bottom_mult1.activeH << ")");
-  } else if (m_sector == 'S') {
-    ATH_MSG_DEBUG("SM1 \n" <<
-                 "\t\t\t\t KO strips TopEta: " << roParam_bottom_mult1.nMissedTopEta << " - BottomEta: " << roParam_bottom_mult1.nMissedBottomEta << "\n" <<
-                 "\t\t\t\t KO strips TopStereo: " << roParam_bottom_mult1.nMissedTopStereo << " - BottomStereo: " << roParam_bottom_mult1.nMissedBottomStereo << "\n" <<
-                 "\t\t\t\t Total Strips: " << roParam_bottom_mult1.tStrips << " with pitch: " << roParam_bottom_mult1.stripPitch << "\n" <<
-                 "\t\t\t\t (Top, Bottom, Length): (" << mm_bottom_mult1->lWidth() << ", " << mm_bottom_mult1->sWidth() << ", " << mm_bottom_mult1->Length() << ")\n" <<
-                 "\t\t\t\t Zpos - Distance from ZAxis: " << roParam_bottom_mult1.zpos << " - " << roParam_bottom_mult1.distanceFromZAxis << "\n" <<
-                 "\t\t\t\t dlStereoTop/Bottom: " << roParam_bottom_mult1.dlStereoTop << " " << roParam_bottom_mult1.dlStereoBottom << "\n" <<
-                 "\t\t\t\t Active area --> (Bottom, Top, Height) : (" << roParam_bottom_mult1.activeBottomLength << ", " << roParam_bottom_mult1.activeTopLength << ", " << roParam_bottom_mult1.activeH << ")");
-  }
+  m_innerRadiusEta1 = mm_ReadOut_bottom->absTransform().translation().perp() - 0.5*mm_ReadOut_bottom->getRsize();
+  m_innerRadiusEta2 = mm_ReadOut_top->absTransform().translation().perp() - 0.5*mm_ReadOut_top->getRsize();
 
-  if (m_sector == 'L') {
-    ATH_MSG_DEBUG("LM2 \n" <<
-                 "\t\t\t\t Total Strips: " << roParam_top_mult1.tStrips << " with pitch: " << roParam_top_mult1.stripPitch << "\n" <<
-                 "\t\t\t\t KO strips TopEta: " << roParam_top_mult1.nMissedTopEta << " - BottomEta: " << roParam_top_mult1.nMissedBottomEta << "\n" <<
-                 "\t\t\t\t KO strips TopStereo: " << roParam_top_mult1.nMissedTopStereo << " - BottomStereo: " << roParam_top_mult1.nMissedBottomStereo << "\n" <<
-                 "\t\t\t\t (Top, Bottom, Length): (" << mm_top_mult1->lWidth() << ", " << mm_top_mult1->sWidth() << ", " << mm_top_mult1->Length() << ")\n" <<
-                 "\t\t\t\t Zpos - Distance from ZAxis: " << roParam_top_mult1.zpos << " - " << roParam_top_mult1.distanceFromZAxis << "\n" <<
-                 "\t\t\t\t dlStereoTop/Bottom: " << roParam_top_mult1.dlStereoTop << " " << roParam_top_mult1.dlStereoBottom << "\n" <<
-                 "\t\t\t\t Active area --> (Top, Bottom, Height) : (" << roParam_top_mult1.activeTopLength << ", " << roParam_top_mult1.activeBottomLength << ", " << roParam_top_mult1.activeH << ")");
-  } else if (m_sector == 'S') {
-    ATH_MSG_DEBUG("SM2 \n" <<
-                 "\t\t\t\t KO strips TopEta: " << roParam_top_mult1.nMissedTopEta << " - BottomEta: " << roParam_top_mult1.nMissedBottomEta << "\n" <<
-                 "\t\t\t\t KO strips TopStereo: " << roParam_top_mult1.nMissedTopStereo << " - BottomStereo: " << roParam_top_mult1.nMissedBottomStereo << "\n" <<
-                 "\t\t\t\t (Top, Bottom, Length): (" << mm_top_mult1->lWidth() << ", " << mm_top_mult1->sWidth() << ", " << mm_top_mult1->Length() << ")\n" <<
-                 "\t\t\t\t Zpos - Distance from ZAxis: " << roParam_top_mult1.zpos << " - " << roParam_top_mult1.distanceFromZAxis << "\n" <<
-                 "\t\t\t\t dlStereoTop/Bottom: " << roParam_top_mult1.dlStereoTop << " " << roParam_top_mult1.dlStereoBottom << "\n" <<
-                 "\t\t\t\t Active area --> (Top, Bottom, Height) : (" << roParam_top_mult1.activeTopLength << ", " << roParam_top_mult1.activeBottomLength << ", " << roParam_top_mult1.activeH << ")");
-    for (const auto &angle : roParam_top_mult1.stereoAngle) ATH_MSG_DEBUG("Stereo angle: " << angle);
-  }
+  const auto design = mm_ReadOut_bottom->getDesign(mm_bottom_ele_id);
+  m_missedBottomEta = design->nMissedBottomEta;
+  m_missedBottomStereo = design->nMissedBottomStereo;
 
   // retrieve the z-position of the planes
   std::vector<double> z_nominal;