diff --git a/Examples/options/tut_detsim_SDT.py b/Examples/options/tut_detsim_SDT.py
index 1b2adeb71c0ad157b683506b2332b766a106ff7f..1fd7773b2c4ab648b53f3a77cb44d138be3f07e6 100644
--- a/Examples/options/tut_detsim_SDT.py
+++ b/Examples/options/tut_detsim_SDT.py
@@ -126,6 +126,10 @@ from Configurables import DriftChamberSensDetTool
 
 calo_sensdettool = CalorimeterSensDetTool("CalorimeterSensDetTool")
 driftchamber_sensdettool = DriftChamberSensDetTool("DriftChamberSensDetTool")
+driftchamber_sensdettool.DedxSimTool = "DummyDedxSimTool"
+
+from Configurables import DummyDedxSimTool
+dedx_simtool = DummyDedxSimTool("DummyDedxSimTool")
 
 ##############################################################################
 # POD I/O
diff --git a/Simulation/DetSimDedx/src/DummyDedxSimTool.cpp b/Simulation/DetSimDedx/src/DummyDedxSimTool.cpp
index df1aa692b7ffbb973205384c31aa4c8df9763122..291b8c205eafd630a9e45f9be64a99cbd0827c87 100644
--- a/Simulation/DetSimDedx/src/DummyDedxSimTool.cpp
+++ b/Simulation/DetSimDedx/src/DummyDedxSimTool.cpp
@@ -17,7 +17,7 @@ StatusCode DummyDedxSimTool::finalize() {
 }
 
 double DummyDedxSimTool::dedx(const G4Step* aStep) {
-    double result = 0.0;
+    double result = aStep->GetTotalEnergyDeposit();
 
 
     return result;
diff --git a/Simulation/DetSimSD/src/DriftChamberSensDetTool.cpp b/Simulation/DetSimSD/src/DriftChamberSensDetTool.cpp
index 2220500ce3989664c0070292010a1b348741d538..bf0532165fcf820a10563af25f9ff172fbdacc8e 100644
--- a/Simulation/DetSimSD/src/DriftChamberSensDetTool.cpp
+++ b/Simulation/DetSimSD/src/DriftChamberSensDetTool.cpp
@@ -17,6 +17,12 @@ StatusCode DriftChamberSensDetTool::initialize() {
         return StatusCode::FAILURE;
     }
 
+    m_dedx_simtool = ToolHandle<IDedxSimTool>(m_dedx_sim_option.value());
+    if (!m_dedx_simtool) {
+        error() << "Failed to find dedx simtoo." << endmsg;
+        return StatusCode::FAILURE;
+    }
+
     return sc;
 }
 
@@ -30,7 +36,13 @@ G4VSensitiveDetector*
 DriftChamberSensDetTool::createSD(const std::string& name) {
     dd4hep::Detector* dd4hep_geo = m_geosvc->lcdd();
 
-    G4VSensitiveDetector* sd = new DriftChamberSensitiveDetector(name, *dd4hep_geo);
+    G4VSensitiveDetector* sd = nullptr;
+
+    if (name == "DriftChamber") {
+        DriftChamberSensitiveDetector* dcsd = new DriftChamberSensitiveDetector(name, *dd4hep_geo);
+        dcsd->setDedxSimTool(m_dedx_simtool);
+    }
+
 
     return sd;
 }
diff --git a/Simulation/DetSimSD/src/DriftChamberSensDetTool.h b/Simulation/DetSimSD/src/DriftChamberSensDetTool.h
index 83e75aa77a0b2b449f56df096f54593f3d7a8213..ae727ed09fbcb58c5ea918cf3e86813bd2625a2f 100644
--- a/Simulation/DetSimSD/src/DriftChamberSensDetTool.h
+++ b/Simulation/DetSimSD/src/DriftChamberSensDetTool.h
@@ -10,9 +10,12 @@
  */
 
 #include "GaudiKernel/AlgTool.h"
+#include "GaudiKernel/ToolHandle.h"
 #include "DetSimInterface/ISensDetTool.h"
+#include "DetSimInterface/IDedxSimTool.h"
 #include "DetInterface/IGeoSvc.h"
 
+
 class DriftChamberSensDetTool: public extends<AlgTool, ISensDetTool> {
 
 public:
@@ -30,6 +33,8 @@ private:
 
     // in order to initialize SD, we need to get the lcdd()
     SmartIF<IGeoSvc> m_geosvc;
+    ToolHandle<IDedxSimTool> m_dedx_simtool;
+    Gaudi::Property<std::string> m_dedx_sim_option{this, "DedxSimTool"};
 
 };
 
diff --git a/Simulation/DetSimSD/src/DriftChamberSensitiveDetector.cpp b/Simulation/DetSimSD/src/DriftChamberSensitiveDetector.cpp
index 9f5ce3e0089b2584860a2e1c13852da2ab635d4a..1ba9f7bff59a19d93519bf36368daee33035a7e9 100644
--- a/Simulation/DetSimSD/src/DriftChamberSensitiveDetector.cpp
+++ b/Simulation/DetSimSD/src/DriftChamberSensitiveDetector.cpp
@@ -12,6 +12,12 @@ DriftChamberSensitiveDetector::DriftChamberSensitiveDetector(const std::string&
     collectionName.insert(coll_name);
 }
 
+bool DriftChamberSensitiveDetector::setDedxSimTool(ToolHandle<IDedxSimTool> simtool) {
+    m_dedx_simtool = simtool;
+
+    return true;
+}
+
 void
 DriftChamberSensitiveDetector::Initialize(G4HCofThisEvent* HCE) {
 
diff --git a/Simulation/DetSimSD/src/DriftChamberSensitiveDetector.h b/Simulation/DetSimSD/src/DriftChamberSensitiveDetector.h
index ebe455de4ba4d7e6074ee3bed4ebf600d5fbfa68..638e146bcad688dc5a0fdefb4f1178394c6c09ad 100644
--- a/Simulation/DetSimSD/src/DriftChamberSensitiveDetector.h
+++ b/Simulation/DetSimSD/src/DriftChamberSensitiveDetector.h
@@ -8,6 +8,8 @@
  */
 
 #include "DetSimSD/DDG4SensitiveDetector.h"
+#include "DetSimInterface/IDedxSimTool.h"
+#include "GaudiKernel/ToolHandle.h"
 
 class DriftChamberSensitiveDetector: public DDG4SensitiveDetector {
 public:
@@ -16,6 +18,8 @@ public:
 
 public:
     DriftChamberSensitiveDetector(const std::string& name, dd4hep::Detector& description);
+
+    bool setDedxSimTool(ToolHandle<IDedxSimTool>);
     
 public:
     // Geant4 interface
@@ -28,6 +32,9 @@ protected:
 
     HitCollection* m_hc;
 
+    // this is passed from SensDetTool
+    ToolHandle<IDedxSimTool> m_dedx_simtool;
+
 };
 
 #endif