From aa93522d11c759f2de0fca5d96d2244b95e2e667 Mon Sep 17 00:00:00 2001 From: lintao <lintao51@gmail.com> Date: Fri, 18 Sep 2020 14:02:01 +0800 Subject: [PATCH] WIP: use the DriftChamberSensDetTool to create the Sensitive Detector. --- Examples/options/tut_detsim_SDT.py | 5 +++++ Simulation/DetSimGeom/src/AnExampleDetElemTool.cpp | 14 ++++++++++++++ Simulation/DetSimGeom/src/AnExampleDetElemTool.h | 1 + .../DetSimSD/src/DriftChamberSensDetTool.cpp | 4 +++- 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/Examples/options/tut_detsim_SDT.py b/Examples/options/tut_detsim_SDT.py index 027d5813..1b2adeb7 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 87ad61b3..0212a0e3 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 b0b22861..ba199071 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 e3c2e98a..2220500c 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; } -- GitLab