belongself专题(3)——geant的程序结构 - 核能革新 ChinaNet
热图推荐
    查看: 6712|回复: 0
    打印 上一主题 下一主题

    belongself专题(3)——geant的程序结构

    [复制链接]

    39

    主题

    49

    帖子

    152

    积分

    QQ游客

    积分
    152
    跳转到指定楼层
    楼主
    发表于 2015-4-8 10:10:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
      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
    回复

    使用道具 举报

      关注我们
    • 微信公众号:
    • NuclearNet
    • 扫描二维码加关注

    Powered by Discuz! X3.2 © 2001-2013 Comsenz Inc.

    联系我们|网站声明|中国核网-核能领域第一垂直门户网站

    快速回复 返回顶部 返回列表