ChinaNet

标题: belongself专题(3)——geant的程序结构 [打印本页]

作者: 鸿飞冥冥    时间: 2015-4-8 10:10
标题: belongself专题(3)——geant的程序结构
  Geant的程序中首先要实现三个类,物理结构,粒子定义,反应过程。如果大家用过MCNP,就会知道MCNP也有几何卡,材料卡,粒子卡,过程卡,这几个部分是模拟物理过程的根本。几何(材料)、物理过程和粒子定义这三个文件的编写,认真看一下example和manual,纯粹是一个搭积木的过程,需要的只是细心和严谨。稍微解释的一个问题是,这些信息是如何被geant程序组织,并完成模拟过程的呢?

  这个过程是由运行管理器G4RunManager来实现的,感兴趣的可以自己去看这个类的定义,顺便再说一句,了解一个类最好的办法是直接去看它的定义。不要忽略了主要的cc文件(比如,example02中这个文件是example02.cc),其中的main函数是程序的入口,程序在这里完成设置,初始化,并进入模拟过程。上述的三个类是必须要创建对象指针并传给runManager进行初始化的,这是因为这三个类的基类定义为纯虚类,只提供了一个形式上的接口;事实上,几何材料、粒子和物理过程是完全由用户设置的,所以必须由用户来派生实现。

    许多人学习geant的时候是从C开始的,我也是。之前我曾经反复拜读"Thinking in C++",无奈天资驽钝,没有搞清楚C++最重要的几个概念:继承,派生和虚拟。直到我看geant的example,并且自己动手想要从Event里记录下感兴趣的信息时,才逐渐明白。对于大多数人来说,可能也是如此,需要先有一些理论储备,即使你一开始并不太清楚;然后在实践中慢慢去琢磨,并最终明白这种做法在程序结构设计上的精妙之处。


转自www.52mc.net





欢迎光临 ChinaNet (http://www.nuclear.net.cn/) Powered by Discuz! X3.1