From bc18e29b917e864a672b69016eb761498d62cfee Mon Sep 17 00:00:00 2001
From: lintao <lintao51@gmail.com>
Date: Thu, 8 Aug 2019 17:56:16 +0800
Subject: [PATCH] WIP: invoke IDetSimSvc in DetSimAlg.

---
 Simulation/src/DetSimCore/DetSimAlg.cpp | 33 ++++++++++++++++++++++++-
 Simulation/src/DetSimCore/DetSimAlg.h   |  3 +++
 2 files changed, 35 insertions(+), 1 deletion(-)

diff --git a/Simulation/src/DetSimCore/DetSimAlg.cpp b/Simulation/src/DetSimCore/DetSimAlg.cpp
index db328fce..81aab60f 100644
--- a/Simulation/src/DetSimCore/DetSimAlg.cpp
+++ b/Simulation/src/DetSimCore/DetSimAlg.cpp
@@ -1,10 +1,12 @@
 #include "DetSimAlg.h"
 
+#include "G4RunManager.hh"
+
 DECLARE_COMPONENT(DetSimAlg)
 
 DetSimAlg::DetSimAlg(const std::string& name, ISvcLocator* pSvcLocator)
 : Algorithm(name, pSvcLocator) {
-
+    i_event = -1;
 }
 
 StatusCode
@@ -13,18 +15,47 @@ DetSimAlg::initialize() {
 
     info() << "Initialize DetSimAlg... " << endmsg;
 
+    m_detsimsvc = service("DetSimSvc");
+    if (!m_detsimsvc) {
+        error() << "Failed to find DetSimSvc. " << endmsg;
+        return StatusCode::FAILURE;
+    }
+
+    // Initialize the Run Manager
+    G4RunManager* runmgr = m_detsimsvc->getRM();
+    if (!runmgr) {
+        error() << "Failed to get Run Manager. " << endmsg;
+        return StatusCode::FAILURE;
+    }
+
+    runmgr->SetUserInitialization((G4VUserDetectorConstruction*)0);
+    runmgr->SetUserInitialization((G4VUserPhysicsList*)0);
+    runmgr->SetUserAction((G4VUserPrimaryGeneratorAction*)0);
+
+    // after set up the user initialization and user actions, start the initialization.
+    m_detsimsvc->initializeRM();
+
     return sc;
 }
 
 StatusCode
 DetSimAlg::execute() {
     StatusCode sc;
+
+    m_detsimsvc->simulateEvent(++i_event);
+
     return sc;
 }
 
 StatusCode
 DetSimAlg::finalize() {
     StatusCode sc;
+    if (!m_detsimsvc) { 
+        return StatusCode::FAILURE;
+    }
+    m_detsimsvc->finalizeRM();
+
+
     return sc;
 }
 
diff --git a/Simulation/src/DetSimCore/DetSimAlg.h b/Simulation/src/DetSimCore/DetSimAlg.h
index 683456f4..5c7371e3 100644
--- a/Simulation/src/DetSimCore/DetSimAlg.h
+++ b/Simulation/src/DetSimCore/DetSimAlg.h
@@ -25,6 +25,9 @@ private:
     Gaudi::Property<std::vector<std::string>> m_run_macs{this, "RunMacs"};
     Gaudi::Property<std::vector<std::string>> m_run_cmds{this, "RunCmds"};
     Gaudi::Property<std::vector<std::string>> m_vis_macs{this, "VisMacs"};
+
+private:
+    int i_event;
 };
 
 
-- 
GitLab