geant4
Geant4学习——1 整体和mian函数
##整体概念
geant4在linux中运行,最重要的就是编写好main函数和cmakelist。使用geant4运行一个程序,一般有三种方式:hard—code、宏命令和命令行交互。hardcode如果需要改变参数,需要直接改变代码,一般不使用;一般使用命令行交互,这样在命令行界面可以直接改变运行参数。由于需要使用命令行可视化,必须在main函数中使用vismanager。
##模块
一个完整的geant4程序,至少需要这些:main函数,两个文件夹(include文件夹和src文件夹),一个cmakelist(采用cmake编译)。geant4利用c++来写代码,所以可以使用subtext来写好代码,之后利用cmake进行编译。接下来分别讨论各个模块。
###main函数
main函数的主要作用,是为了建立一个runmanager,引导geant4调用相关的头文件,从而实现运算。使用命令行模式进行编写。
int main(int argc, char** argv)
{
//建立默认的runmanager
G4Runmanager * runManager = new G4Runmanager;
//对类进行初始化
runManager -> SetUserInitialization(new Detectorconstruction);
runManager -> SetUserInitialization(new PhysicsList);
//所有的需要的类,即出现在include里面的强制定义类全部需要初始化,如primarygenarator
//利用命令行使用可视化,必须在main函数中添加vismanager
G4VisManager* VisManager = new MyVisManager;
VisManager ->Initialize();
//设定用户行为类
runManager ->SetUserAction (new GeneratorAction);
runManager ->SetUserAction (new RunAction);
runManager ->SetUserAction (new EventAction);
runManager ->SetUserAction (new SteppingAction)
//一个粒子每一次反应是一个step,一个粒子从产生到所有次级粒子全部消失叫一个event,所有粒子全部消失叫做一次run//
//对G4内核进行初始化
runManager -> Initializa();
//定义交互ui终端
G4UIsession * session =new G4UIterminal;
session -> SessionStart();
delete session();
//删除所有进程,释放内存
delete visManager;
delete runManager;
return 0;
}
这是一个典型的main程序,只能利用命令行交互,不能使用宏命令。