From fba931eb0dadfd7d993076927faaae3ab7a181cb Mon Sep 17 00:00:00 2001
From: lintao <lintao51@gmail.com>
Date: Thu, 17 Sep 2020 16:26:44 +0800
Subject: [PATCH] WIP: add the DriftChamberSensDetTool. The SD is not created
 yet.

---
 Simulation/DetSimSD/CMakeLists.txt            |  2 ++
 .../DetSimSD/src/DriftChamberSensDetTool.cpp  | 34 ++++++++++++++++++
 .../DetSimSD/src/DriftChamberSensDetTool.h    | 36 +++++++++++++++++++
 3 files changed, 72 insertions(+)
 create mode 100644 Simulation/DetSimSD/src/DriftChamberSensDetTool.cpp
 create mode 100644 Simulation/DetSimSD/src/DriftChamberSensDetTool.h

diff --git a/Simulation/DetSimSD/CMakeLists.txt b/Simulation/DetSimSD/CMakeLists.txt
index 10b1a15a..10ac6793 100644
--- a/Simulation/DetSimSD/CMakeLists.txt
+++ b/Simulation/DetSimSD/CMakeLists.txt
@@ -16,6 +16,8 @@ set(DetSimSD_srcs
 
     src/DDG4SensitiveDetector.cpp
     src/CaloSensitiveDetector.cpp
+
+    src/DriftChamberSensDetTool.cpp
 )
 
 gaudi_add_module(DetSimSD ${DetSimSD_srcs}
diff --git a/Simulation/DetSimSD/src/DriftChamberSensDetTool.cpp b/Simulation/DetSimSD/src/DriftChamberSensDetTool.cpp
new file mode 100644
index 00000000..e3c2e98a
--- /dev/null
+++ b/Simulation/DetSimSD/src/DriftChamberSensDetTool.cpp
@@ -0,0 +1,34 @@
+#include "DriftChamberSensDetTool.h"
+
+#include "G4VSensitiveDetector.hh"
+
+#include "DD4hep/Detector.h"
+
+DECLARE_COMPONENT(DriftChamberSensDetTool);
+
+StatusCode DriftChamberSensDetTool::initialize() {
+    StatusCode sc;
+
+    m_geosvc = service<IGeoSvc>("GeoSvc");
+    if (!m_geosvc) {
+        error() << "Failed to find GeoSvc." << endmsg;
+        return StatusCode::FAILURE;
+    }
+
+    return sc;
+}
+
+StatusCode DriftChamberSensDetTool::finalize() {
+    StatusCode sc;
+    
+    return sc;
+}
+
+G4VSensitiveDetector*
+DriftChamberSensDetTool::createSD(const std::string& name) {
+    dd4hep::Detector* dd4hep_geo = m_geosvc->lcdd();
+
+    G4VSensitiveDetector* sd = nullptr;
+
+    return sd;
+}
diff --git a/Simulation/DetSimSD/src/DriftChamberSensDetTool.h b/Simulation/DetSimSD/src/DriftChamberSensDetTool.h
new file mode 100644
index 00000000..83e75aa7
--- /dev/null
+++ b/Simulation/DetSimSD/src/DriftChamberSensDetTool.h
@@ -0,0 +1,36 @@
+#ifndef DriftChamberSensDetTool_h
+#define DriftChamberSensDetTool_h
+
+/*
+ * DriftChamberSensDetTool is used to create Drift Chamber SD.
+ * 
+ * It will use DedxSimTool to give the dE/dx value.
+ *
+ * -- 17 Sept 2020, Tao Lin <lintao@ihep.ac.cn>
+ */
+
+#include "GaudiKernel/AlgTool.h"
+#include "DetSimInterface/ISensDetTool.h"
+#include "DetInterface/IGeoSvc.h"
+
+class DriftChamberSensDetTool: public extends<AlgTool, ISensDetTool> {
+
+public:
+
+    using extends::extends;
+
+    /// Overriding initialize and finalize
+    StatusCode initialize() override;
+    StatusCode finalize() override;
+
+    /// Override ISensDetTool
+    virtual G4VSensitiveDetector* createSD(const std::string& name) override;
+
+private:
+
+    // in order to initialize SD, we need to get the lcdd()
+    SmartIF<IGeoSvc> m_geosvc;
+
+};
+
+#endif
-- 
GitLab