网站大量收购独家精品文档,联系QQ:2885784924

第三讲——GEANT4程序结构及基本类.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三讲——GEANT4程序结构及基本类

有了C++的基础知识我们就能够很好地理解G4的程序结构了。 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开始后)就不再继续调用了。 而其余的类则是在每发射一个粒子后都需要调用的,具体调用过程请复习第二讲中的模拟算法。 下面讲一个特殊的类。 G4UImanager——UI(user interface)管理器 这个类的英文全名是user interface manager,顾名思义是用于人机交互的,用户可以通过这个类来向模拟过程发出“命令”, 这个类在一定程度上使用很简洁的命令语句代替了上述用户干涉类的功能。 需要说明的是,上面所说的几个类并没有包括所有可选类,根据每个用户的需求,用户可以有很多其他类。 下面以$G4INSTALL/example/novice/N01的例子为例看一下这些类, 因为这个粒子仅为了说明Geant4的基本运用,所以这个例子里面只定义了3个强制类,没有使用可选类来输出感兴趣的信息。 但是通过UI管理器查看了粒子输运过程中的一些信息。 // Construct the default run manager //首先是要创建一个运行管理器的实例,根据C++的知识我们知道每个类都必须通过他的实例来进行操作 G4RunManager* runManager = new G4RunManager; // set mandat

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档