From 943c18ba011eea3b1a8d460644350e413ebf39e3 Mon Sep 17 00:00:00 2001
From: lintao <lintao51@gmail.com>
Date: Mon, 12 Aug 2019 13:28:50 +0800
Subject: [PATCH] WIP: Add the Run/Event Action.

---
 Simulation/DetSimCore/CMakeLists.txt          |  3 +++
 .../DetSimCore/src/ActionInitialization.cpp   | 26 +++++++++++++++++++
 .../DetSimCore/src/ActionInitialization.h     | 18 +++++++++++++
 Simulation/DetSimCore/src/DetSimAlg.cpp       | 12 ++++++---
 Simulation/DetSimCore/src/EventAction.cpp     | 21 +++++++++++++++
 Simulation/DetSimCore/src/EventAction.h       | 19 ++++++++++++++
 Simulation/DetSimCore/src/RunAction.cpp       | 26 +++++++++++++++++++
 Simulation/DetSimCore/src/RunAction.h         | 20 ++++++++++++++
 8 files changed, 141 insertions(+), 4 deletions(-)
 create mode 100644 Simulation/DetSimCore/src/ActionInitialization.cpp
 create mode 100644 Simulation/DetSimCore/src/ActionInitialization.h
 create mode 100644 Simulation/DetSimCore/src/EventAction.cpp
 create mode 100644 Simulation/DetSimCore/src/EventAction.h
 create mode 100644 Simulation/DetSimCore/src/RunAction.cpp
 create mode 100644 Simulation/DetSimCore/src/RunAction.h

diff --git a/Simulation/DetSimCore/CMakeLists.txt b/Simulation/DetSimCore/CMakeLists.txt
index e6dd0669..abda7f59 100644
--- a/Simulation/DetSimCore/CMakeLists.txt
+++ b/Simulation/DetSimCore/CMakeLists.txt
@@ -13,6 +13,9 @@ set(DetSimCore_srcs
     src/DetSimSvc.cpp
     src/DetectorConstruction.cpp
     src/PrimaryGeneratorAction.cpp
+    src/ActionInitialization.cpp
+    src/RunAction.cpp
+    src/EventAction.cpp
 )
 
 gaudi_add_module(DetSimCore ${DetSimCore_srcs}
diff --git a/Simulation/DetSimCore/src/ActionInitialization.cpp b/Simulation/DetSimCore/src/ActionInitialization.cpp
new file mode 100644
index 00000000..7a16a831
--- /dev/null
+++ b/Simulation/DetSimCore/src/ActionInitialization.cpp
@@ -0,0 +1,26 @@
+#include "ActionInitialization.h"
+
+#include "RunAction.h"
+
+ActionInitialization::ActionInitialization()
+    : G4VUserActionInitialization() {
+
+}
+
+ActionInitialization::~ActionInitialization() {
+
+}
+
+void
+ActionInitialization::BuildForMaster() const {
+
+}
+
+void
+ActionInitialization::Build() const {
+
+
+    RunAction* runAction = new RunAction();
+    SetUserAction(runAction);
+
+}
diff --git a/Simulation/DetSimCore/src/ActionInitialization.h b/Simulation/DetSimCore/src/ActionInitialization.h
new file mode 100644
index 00000000..6ad9791d
--- /dev/null
+++ b/Simulation/DetSimCore/src/ActionInitialization.h
@@ -0,0 +1,18 @@
+#ifndef ActionInitialization_h
+#define ActionInitialization_h
+
+#include "G4VUserActionInitialization.hh"
+
+class ActionInitialization: public G4VUserActionInitialization {
+public:
+
+    ActionInitialization();
+    ~ActionInitialization();
+
+    void BuildForMaster() const override;
+    void Build() const override;
+
+};
+
+
+#endif
diff --git a/Simulation/DetSimCore/src/DetSimAlg.cpp b/Simulation/DetSimCore/src/DetSimAlg.cpp
index 209a51f0..8bd06abb 100644
--- a/Simulation/DetSimCore/src/DetSimAlg.cpp
+++ b/Simulation/DetSimCore/src/DetSimAlg.cpp
@@ -4,15 +4,16 @@
 #include "GaudiKernel/GaudiException.h"
 
 #include "G4RunManager.hh"
-
-#include "DetectorConstruction.h"
-
-#include "G4PhysListFactory.hh"
 #include "G4UImanager.hh"
 #include "G4VisExecutive.hh"
 #include "G4UIExecutive.hh"
+
+#include "DetectorConstruction.h"
+#include "G4PhysListFactory.hh"
 #include "PrimaryGeneratorAction.h"
 
+#include "ActionInitialization.h"
+
 DECLARE_COMPONENT(DetSimAlg)
 
 DetSimAlg::DetSimAlg(const std::string& name, ISvcLocator* pSvcLocator)
@@ -54,6 +55,9 @@ DetSimAlg::initialize() {
     // Primary Generator Action
     runmgr->SetUserAction(new PrimaryGeneratorAction());
 
+    // User Actions
+    runmgr->SetUserInitialization(new ActionInitialization());
+
     // Vis Mac
     bool hasVis = false;
     G4VisManager* visManager = nullptr;
diff --git a/Simulation/DetSimCore/src/EventAction.cpp b/Simulation/DetSimCore/src/EventAction.cpp
new file mode 100644
index 00000000..c0a9ab35
--- /dev/null
+++ b/Simulation/DetSimCore/src/EventAction.cpp
@@ -0,0 +1,21 @@
+#include "EventAction.h"
+
+EventAction::EventAction() 
+    : G4UserEventAction() {
+
+}
+
+EventAction::~EventAction() {
+
+}
+
+void
+EventAction::BeginOfEventAction(const G4Event*) {
+
+}
+
+void
+EventAction::EndOfEventAction(const G4Event*) {
+
+}
+
diff --git a/Simulation/DetSimCore/src/EventAction.h b/Simulation/DetSimCore/src/EventAction.h
new file mode 100644
index 00000000..af2bc93a
--- /dev/null
+++ b/Simulation/DetSimCore/src/EventAction.h
@@ -0,0 +1,19 @@
+#ifndef EventAction_h
+#define EventAction_h
+
+#include "G4UserEventAction.hh"
+
+class G4Event;
+
+class EventAction: public G4UserEventAction {
+public:
+
+    EventAction();
+    ~EventAction();
+
+    void BeginOfEventAction(const G4Event*) override;
+    void EndOfEventAction(const G4Event*) override;
+
+};
+
+#endif
diff --git a/Simulation/DetSimCore/src/RunAction.cpp b/Simulation/DetSimCore/src/RunAction.cpp
new file mode 100644
index 00000000..b86ff14c
--- /dev/null
+++ b/Simulation/DetSimCore/src/RunAction.cpp
@@ -0,0 +1,26 @@
+#include "RunAction.h"
+
+#include "G4Run.hh"
+
+RunAction::RunAction() 
+    : G4UserRunAction() {
+
+}
+
+RunAction::~RunAction() {
+
+}
+
+void 
+RunAction::BeginOfRunAction(const G4Run* aRun)
+{
+
+}
+
+void
+RunAction::EndOfRunAction(const G4Run* aRun)
+{
+
+}
+
+
diff --git a/Simulation/DetSimCore/src/RunAction.h b/Simulation/DetSimCore/src/RunAction.h
new file mode 100644
index 00000000..72b76012
--- /dev/null
+++ b/Simulation/DetSimCore/src/RunAction.h
@@ -0,0 +1,20 @@
+#ifndef RunAction_h
+#define RunAction_h
+
+#include "G4UserRunAction.hh"
+
+class G4Run;
+
+
+class RunAction: public G4UserRunAction {
+
+public:
+    RunAction();
+    ~RunAction();
+
+    virtual void BeginOfRunAction(const G4Run*);
+    virtual void EndOfRunAction(const G4Run*);
+
+};
+
+#endif
-- 
GitLab