Skip to content
Snippets Groups Projects
Commit c158b73a authored by lintao@ihep.ac.cn's avatar lintao@ihep.ac.cn
Browse files

WIP: a dummpy script.

parent c172e867
No related branches found
No related tags found
No related merge requests found
/run/initialize
/vis/initialize
/vis/open OGL
#
####/vis/open OGLSXm
####/vis/open HepRepXML
#
#/vis/open DAWNFILE
#
# draw scene
#
/vis/drawVolume worlds
/tracking/storeTrajectory 1
/vis/scene/add/trajectories
...@@ -10,6 +10,7 @@ include(${Geant4_USE_FILE}) ...@@ -10,6 +10,7 @@ include(${Geant4_USE_FILE})
set(DetSimCore_srcs set(DetSimCore_srcs
src/DetSimAlg.cpp src/DetSimAlg.cpp
src/DetSimSvc.cpp
src/DetectorConstruction.cpp src/DetectorConstruction.cpp
src/PrimaryGeneratorAction.cpp src/PrimaryGeneratorAction.cpp
) )
......
...@@ -5,7 +5,9 @@ ...@@ -5,7 +5,9 @@
#include "DetectorConstruction.h" #include "DetectorConstruction.h"
#include "G4PhysListFactory.hh" #include "G4PhysListFactory.hh"
#include "G4UImanager.hh"
#include "G4VisExecutive.hh"
#include "G4UIExecutive.hh"
#include "PrimaryGeneratorAction.h" #include "PrimaryGeneratorAction.h"
DECLARE_COMPONENT(DetSimAlg) DECLARE_COMPONENT(DetSimAlg)
...@@ -49,6 +51,50 @@ DetSimAlg::initialize() { ...@@ -49,6 +51,50 @@ DetSimAlg::initialize() {
// Primary Generator Action // Primary Generator Action
runmgr->SetUserAction(new PrimaryGeneratorAction()); runmgr->SetUserAction(new PrimaryGeneratorAction());
// Vis Mac
bool hasVis = false;
G4VisManager* visManager = nullptr;
G4UIExecutive* ui = nullptr;
if (not m_vis_macs.value().empty()) {
hasVis = true;
info() << "Start Geant4 Visualization." << endmsg;
// initialize Vis
visManager = new G4VisExecutive;
char* argv[1] = {"geant4Vis"};
ui = new G4UIExecutive(1,argv);
}
for (auto vismac: m_vis_macs.value()) {
G4UImanager *UImanager = G4UImanager::GetUIpointer();
std::string command = "/control/execute ";
UImanager->ApplyCommand( command + vismac);
}
// Run Mac & Run Cmds
for (auto runmac: m_run_macs.value()) {
G4UImanager *UImanager = G4UImanager::GetUIpointer();
std::string command = "/control/execute ";
UImanager->ApplyCommand( command + runmac);
}
for (auto runcmd: m_run_cmds.value()) {
G4UImanager *UImanager = G4UImanager::GetUIpointer();
UImanager->ApplyCommand(runcmd);
}
// if has vis, we stop here
if (hasVis) {
ui->SessionStart();
delete ui;
delete visManager;
// fixme: how to stop the run?
return StatusCode::FAILURE;
}
// Initialize G4 Kernel
runmgr->Initialize();
// after set up the user initialization and user actions, start the initialization. // after set up the user initialization and user actions, start the initialization.
m_detsimsvc->initializeRM(); m_detsimsvc->initializeRM();
......
#include "DetSimSvc.h"
#include "G4RunManager.hh"
DECLARE_COMPONENT(DetSimSvc)
DetSimSvc::DetSimSvc(const std::string& name, ISvcLocator* svc)
: base_class(name, svc) {
m_runmgr = nullptr;
}
DetSimSvc::~DetSimSvc() {
}
G4RunManager*
DetSimSvc::getRM() {
return m_runmgr;
}
StatusCode
DetSimSvc::initializeRM() {
StatusCode sc;
G4bool cond = m_runmgr->ConfirmBeamOnCondition();
if(!cond) {
return StatusCode::FAILURE;
}
m_runmgr->ConstructScoringWorlds();
m_runmgr->RunInitialization();
return sc;
}
StatusCode
DetSimSvc::simulateEvent(int i_event) {
StatusCode sc;
m_runmgr->ProcessOneEvent(i_event);
return sc;
}
StatusCode
DetSimSvc::finalizeRM() {
StatusCode sc;
m_runmgr->RunTermination();
return sc;
}
StatusCode
DetSimSvc::initialize() {
StatusCode sc;
m_runmgr = new G4RunManager();
return sc;
}
StatusCode
DetSimSvc::finalize() {
StatusCode sc;
delete m_runmgr;
return sc;
}
#ifndef DetSimSvc_h
#define DetSimSvc_h
#include "DetSimInterface/IDetSimSvc.h"
#include <GaudiKernel/Service.h>
class DetSimSvc: public extends<Service, IDetSimSvc> {
public:
DetSimSvc(const std::string& name, ISvcLocator* svc );
~DetSimSvc();
// Get the Run Manager
G4RunManager* getRM() override;
// Control the run manager directly.
StatusCode initializeRM() override;
StatusCode simulateEvent(int i_event) override;
StatusCode finalizeRM() override;
StatusCode initialize() override;
StatusCode finalize() override;
private:
G4RunManager* m_runmgr;
};
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment