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