diff --git a/Examples/options/tut_detsim_SDT.py b/Examples/options/tut_detsim_SDT.py index 027d581388a4aa46983f6d34629364e4c694ce80..1b2adeb71c0ad157b683506b2332b766a106ff7f 100644 --- a/Examples/options/tut_detsim_SDT.py +++ b/Examples/options/tut_detsim_SDT.py @@ -121,6 +121,11 @@ detsimalg.RootDetElem = "WorldDetElemTool" from Configurables import AnExampleDetElemTool example_dettool = AnExampleDetElemTool("AnExampleDetElemTool") +from Configurables import CalorimeterSensDetTool +from Configurables import DriftChamberSensDetTool + +calo_sensdettool = CalorimeterSensDetTool("CalorimeterSensDetTool") +driftchamber_sensdettool = DriftChamberSensDetTool("DriftChamberSensDetTool") ############################################################################## # POD I/O diff --git a/Simulation/DetSimGeom/src/AnExampleDetElemTool.cpp b/Simulation/DetSimGeom/src/AnExampleDetElemTool.cpp index 87ad61b35a7fb05c9bd18999bcc3ea5e40d66c9f..0212a0e3d9b2c6fae5e608fcc540d57fa062b693 100644 --- a/Simulation/DetSimGeom/src/AnExampleDetElemTool.cpp +++ b/Simulation/DetSimGeom/src/AnExampleDetElemTool.cpp @@ -110,6 +110,17 @@ AnExampleDetElemTool::ConstructSDandField() { } } else if (typ=="tracker") { + // if drift chamber + if (nam == "DriftChamber") { + m_driftchamber_sdtool = ToolHandle<ISensDetTool>("DriftChamberSensDetTool"); + if (m_driftchamber_sdtool) { + info() << "Find the DriftChamberSensDetTool" << endmsg; + g4sd = m_calo_sdtool->createSD(nam); + } else { + warning() << "DriftChamberSensDetTool is not found. " << endmsg; + } + } + } } @@ -186,6 +197,9 @@ AnExampleDetElemTool::initialize() { return StatusCode::FAILURE; } + m_calo_sdtool = ToolHandle<ISensDetTool>("CalorimeterSensDetTool"); + m_driftchamber_sdtool = ToolHandle<ISensDetTool>("DriftChamberSensDetTool"); + return sc; } diff --git a/Simulation/DetSimGeom/src/AnExampleDetElemTool.h b/Simulation/DetSimGeom/src/AnExampleDetElemTool.h index b0b22861b892c0817876e9c325853e843acf7dc4..ba1990715d10ca9f07eb5a2791314f8ce0d090ee 100644 --- a/Simulation/DetSimGeom/src/AnExampleDetElemTool.h +++ b/Simulation/DetSimGeom/src/AnExampleDetElemTool.h @@ -33,6 +33,7 @@ private: SmartIF<IGeoSvc> m_geosvc; ToolHandle<ISensDetTool> m_calo_sdtool; + ToolHandle<ISensDetTool> m_driftchamber_sdtool; }; #endif diff --git a/Simulation/DetSimSD/src/DriftChamberSensDetTool.cpp b/Simulation/DetSimSD/src/DriftChamberSensDetTool.cpp index e3c2e98a03f145628d6a65e61a4897235dc39fed..2220500ce3989664c0070292010a1b348741d538 100644 --- a/Simulation/DetSimSD/src/DriftChamberSensDetTool.cpp +++ b/Simulation/DetSimSD/src/DriftChamberSensDetTool.cpp @@ -4,6 +4,8 @@ #include "DD4hep/Detector.h" +#include "DriftChamberSensitiveDetector.h" + DECLARE_COMPONENT(DriftChamberSensDetTool); StatusCode DriftChamberSensDetTool::initialize() { @@ -28,7 +30,7 @@ G4VSensitiveDetector* DriftChamberSensDetTool::createSD(const std::string& name) { dd4hep::Detector* dd4hep_geo = m_geosvc->lcdd(); - G4VSensitiveDetector* sd = nullptr; + G4VSensitiveDetector* sd = new DriftChamberSensitiveDetector(name, *dd4hep_geo); return sd; }