From 0d591355ae2ce5c0d24e4db653f402b2760fe255 Mon Sep 17 00:00:00 2001
From: lintao <lintao51@gmail.com>
Date: Mon, 21 Sep 2020 11:00:50 +0800
Subject: [PATCH] WIP: initialize the SD so that geant4 will invoke the correct
 Drift Chamber SD.

---
 Simulation/DetSimDedx/src/BetheBlochEquationDedxSimTool.cpp | 4 ++--
 Simulation/DetSimSD/src/DriftChamberSensDetTool.cpp         | 2 ++
 Simulation/DetSimSD/src/DriftChamberSensitiveDetector.cpp   | 2 ++
 3 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/Simulation/DetSimDedx/src/BetheBlochEquationDedxSimTool.cpp b/Simulation/DetSimDedx/src/BetheBlochEquationDedxSimTool.cpp
index 6aecca2b..1983ba72 100644
--- a/Simulation/DetSimDedx/src/BetheBlochEquationDedxSimTool.cpp
+++ b/Simulation/DetSimDedx/src/BetheBlochEquationDedxSimTool.cpp
@@ -14,8 +14,8 @@ double BetheBlochEquationDedxSimTool::dedx(const G4Step* aStep)
 
     G4Material* material = gTrack->GetMaterial();
     G4double material_density = material->GetDensity() / (CLHEP::g/CLHEP::cm3); // conert from G4 unit.
-    G4double material_Z = material->GetZ();
-    G4double material_A = material->GetA();
+    G4double material_Z = m_material_Z;
+    G4double material_A = m_material_A;
 
     m_I = material_Z*10;  // Approximate
 
diff --git a/Simulation/DetSimSD/src/DriftChamberSensDetTool.cpp b/Simulation/DetSimSD/src/DriftChamberSensDetTool.cpp
index bf053216..33df9588 100644
--- a/Simulation/DetSimSD/src/DriftChamberSensDetTool.cpp
+++ b/Simulation/DetSimSD/src/DriftChamberSensDetTool.cpp
@@ -41,6 +41,8 @@ DriftChamberSensDetTool::createSD(const std::string& name) {
     if (name == "DriftChamber") {
         DriftChamberSensitiveDetector* dcsd = new DriftChamberSensitiveDetector(name, *dd4hep_geo);
         dcsd->setDedxSimTool(m_dedx_simtool);
+
+        sd = dcsd;
     }
 
 
diff --git a/Simulation/DetSimSD/src/DriftChamberSensitiveDetector.cpp b/Simulation/DetSimSD/src/DriftChamberSensitiveDetector.cpp
index 1ba9f7bf..c6ff3db0 100644
--- a/Simulation/DetSimSD/src/DriftChamberSensitiveDetector.cpp
+++ b/Simulation/DetSimSD/src/DriftChamberSensitiveDetector.cpp
@@ -46,6 +46,8 @@ DriftChamberSensitiveDetector::ProcessHits(G4Step* step, G4TouchableHistory*) {
     HitContribution contrib = dd4hep::sim::Geant4Hit::extractContribution(step);
     // Now, invokes the dE/dx simulator
     double dedx = 0.0;
+    dedx = m_dedx_simtool->dedx(step);
+    // G4cout << "-----> dedx: " << dedx << G4endl;
 
     double de = hit_len * dedx;
     // contrib.deposit = de; // if need the de from dedx simulator
-- 
GitLab