You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.2 KiB
66 lines
2.2 KiB
#include "ActionInitialization.hh" // 用户初始化
|
|
#include "DetectorConstruction.hh" // 探测器构建文件
|
|
#include "G4MTRunManager.hh" // 管理类
|
|
#include "G4SteppingVerbose.hh" // step信息管理 verbose越大,输出越丰富
|
|
#include "G4UIExecutive.hh" // UI操作
|
|
#include "G4UImanager.hh" // UI管理
|
|
#include "G4VisExecutive.hh" // 可视化
|
|
#include "QBBC.hh" // 物理过程
|
|
#include "Randomize.hh" // 随机数
|
|
|
|
using namespace B1;
|
|
|
|
int main(int argc, char** argv) {
|
|
// argc 为 1 时,说明参数只有可执行文件本身,运行在GUI模式下
|
|
// 如果 argc 不为 1,则运行在 batch mode,例如 example.exe run1.mac
|
|
G4UIExecutive* ui = nullptr;
|
|
if (argc == 1) {
|
|
ui = new G4UIExecutive(argc, argv);
|
|
}
|
|
|
|
// 调整 step 的输出信息
|
|
G4int precision = 4;
|
|
G4SteppingVerbose::UseBestUnit(precision);
|
|
|
|
// 构建运行管理器
|
|
G4MTRunManager* runManager = new G4MTRunManager;
|
|
|
|
// 进行强制类的初始化
|
|
//
|
|
// 探测器构建
|
|
runManager->SetUserInitialization(new DetectorConstruction());
|
|
|
|
// 物理过程列表
|
|
G4VModularPhysicsList* physicsList = new QBBC;
|
|
physicsList->SetVerboseLevel(1);
|
|
runManager->SetUserInitialization(physicsList);
|
|
|
|
// 用户初始化
|
|
runManager->SetUserInitialization(new ActionInitialization());
|
|
|
|
// 可视化初始化
|
|
// G4VisExecutive 可以输入 verbose 参数,用于控制输出的详细程度
|
|
// https://www.hep.ph.ic.ac.uk/~yoshiu/COMET/comet_g4HTMLdoc/_vis_.html
|
|
G4VisManager* visManager = new G4VisExecutive;
|
|
visManager->Initialize();
|
|
|
|
// 用户界面管理器的指针
|
|
G4UImanager* UImanager = G4UImanager::GetUIpointer();
|
|
|
|
// 根据模式,选择开始进行模拟,或打开GUI
|
|
if (!ui) {
|
|
// batch mode
|
|
G4String command = "/control/execute ";
|
|
G4String fileName = argv[1];
|
|
UImanager->ApplyCommand(command + fileName);
|
|
} else {
|
|
// interactive mode
|
|
UImanager->ApplyCommand("/control/execute init_vis.mac");
|
|
ui->SessionStart();
|
|
delete ui;
|
|
}
|
|
|
|
// 释放指针
|
|
delete visManager;
|
|
delete runManager;
|
|
}
|
|
|