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