猪头Geant4讲座(3)

时间:2025-04-20

G4是采用的gcc编译器,因此其程序结构是和C++一样的。

首先包括有一个主程序main,然后分别包含有子程序src和头文件include

以及其他调用文件others

G4里面为了与C++相区别,程序后缀都是.cc,头文件后缀都是.hh

其中头文件在.cc里面写也没问题,但是那样看起来不方便,建议还是按照c++的习惯一一对应比较好。 那么,关键问题是要进行一个模拟我们都需要写哪些src和include的?

下面我们首先看G4里面的几个基本类,这些基本类基本上是与src一一对应的。

G4RunManager——对应主程序

这个类在主程序中用以初始化模拟信息的,或者形象地说是用于连接子程序的,

而连接方式是通过Set函数来完成的

大家可以从$G4INSTALL/source/run/G4RunManager.hh里面查看各种Set函数,如

public: // with description

inline void SetUserInitialization(G4VUserDetectorConstruction* userInit)

{ userDetector = userInit; }

inline void SetUserInitialization(G4VUserPhysicsList* userInit)

{

physicsList = userInit;

kernel->SetPhysics(userInit);

}

可以说G4RunManager类是贯穿整个程序模拟过程的总线,因此一般说来只能有一个

而开始一次Run的信号则是通过BeamOn函数发出的,其格式是

virtual void BeamOn(G4int n_event,const char* macroFile=0,G4int n_select=-1);

可以通过多次调用BeamOn来实现循环计算。

其余子类包括几何结构类、物理设定类、粒子发射器类(源描述类)、事件处理类、径迹处理类等。 这些类可以按照两种不同的分类方式分类,每种分类方式都可以分为两类。

子类按照重要性分为强制类和可选类。

其中几何结构类(DetectorConstruction)、物理设定类(PhysicsList)、

源描述类(PrimaryGenerator)都属于强制类,是必须有的,缺少任一个程序都无法运行。

而事件处理类(EventAction)、步数据处理类(SteppingAction)、径迹处理类(TrackingAction)、运行处理类(RunAction)

都属于可选类,用户可以通过设定这些类来获取感兴趣的信息,虽然没有这些类程序一样可以运行,但是如果一个都没有的话,

这样的模拟是没有意义的,除非是用来检验几何结构的完备性。

子类按照调用过程分为初始化类和用户干涉类

其中几何结构类(DetectorConstruction)、物理设定类(PhysicsList)属于初始化类,

这两个类在每次Run开始后就对模拟过程进行初始化,之后在粒子发射开始后(BeamOn开始后)就不再继续调用了。

而其余的类则是在每发射一个粒子后都需要调用的,具体调用过程请复习第二讲中的模拟算法。

下面讲一个特殊的类。

猪头Geant4讲座(3).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219