Geant4认识1
来源:互联网 发布:阿里云主机绑定域名 编辑:程序博客网 时间:2024/06/05 08:57
Geant4 是一个针对物理问题封装好的C++工具包,一个C++类的集合。我们在使用的过程中主要是对于工具包中的接口类进行重载和实现。
使用Geant4工具包的主要步骤:
1. 继承关键接口类,重载其中所有的关键函数。 cnscott的博客
这些个类和函数是运行Geant4程序所必需的,必需被继承和重载并在main()函数中调用。具体的类和函数如下:
G4VUserDetectorConstructionl类
· Construct() //建立整个空间结构和材料,注册探测器(Sensitive Detector)
G4VUserPhysicsList类
· ConstructParticle() //注册输运过程要考虑的粒子
· ConstructProcess() //注册不同粒子对应的物理过程
· SetCuts() //设置不同粒子的截断值
G4UserPrimaryGeneratorAction类
· GeneratePrimaries() //产生粒子
2. 编写自己的mian()函数,添加核心代码 cnscott的博客
//运行管理器
G4RunManager*runManager = new G4RunManager;
//探测器
G4VUserDetectorConstruction*detector = new MyDetectorConstruction;
runManager->SetUserInitialization(detector);
//物理过程
G4VUserPhysicsList*physics = new MyPhysicsList;
runManager->SetUserInitialization(physics);
//粒子产生
G4VUserPrimaryGeneratorAction*gen_action = new MyPrimaryGeneratorAction;
runManager->SetUserAction(gen_action);
//初始化Gent4内核
runManager->Initialize();
//进行输运计算
G4intnumberOfEvent=1000000;
runManager->BeamOn(numberOfEvent); //一个程序中可以有多个BeamOn
3. 获得计算结果 cnscott的博客
首先要明确Run、Event和Step所代表的不同概念。Run是指程序的一个运行周期,比如BeamOn 函数从开始执行到执行结束就是一个Run。Event 是一个事件,比如一个源粒子的整个输运过程。而Step是指粒子两个碰撞点之间这一部分。因此,他们之间的关系为Run>Event>Step。也就是说,一个Run包含多个Event,一个Event包含多个Step。在输运过程中,一个Event的所有Step都完成之后才会开始下一个Event,一个Run的所有Event都完成后才会开始下一个Run(如果存在的话)。
重载相关类和函数来获取关心的物理信息。这些类和函数并不是必需的,可以根据需要来重载相应的类和函数。几个常用的类和函数如下:
G4UserRunAction类
· BeginOfRunAction() //每个Run开始时被调用
· EndOfRunAction() //每个Run结束时被调用
G4UserEventAction类
· BeginOfEventAction() //每个Event开始时被调用
· EndOfEventAction() //每个Event结束时被调用
G4UserSteppingAction类
· UserSteppingAction() //每个Step完成时被调用
举个一个简单的例子,如果我们想要得到能谱数据,可以在G4UserRunAction类中设置一个用于存储能谱数据的成员变量数组,在BeginOfEventAction()函数中对沉积能量清零,在UserSteppingAction()函数中对每一步的沉积能量进行累加,在EndOfEventAction()中根据沉积能量对数组进行寻址加1操作,最后在EndOfRunAction()中将该数组的值保存到文件中或进行其他处理。不同类之间的数据传递可以使用指针、专用类或者全局变量来实现。当然上述过程并不是得到能谱数据的唯一途径,使用Geant4内置的MultiFunctionalDetector 和PrimitiveScorer或者编写自己的Sensitive Detector子类同样可以实现。cns- Geant4认识1
- GEANT4 初学
- Geant4的一些资源
- 通向GEANT4的结晶
- Geant4 颜色设置
- linux下安装geant4
- Geant4 模拟过程
- Geant4教程学习(一)
- 自行安装Geant4+OpenGL Qt
- geant4 binContent相关应用 一
- [转]Ubuntu下安装Geant4参考
- 使用codelite2构建geant4专用IDE
- Geant4程序的一点技巧总结
- Geant4资源网站整理 第二批
- Geant4程序的一点技巧总结 2
- scientific linux cern63安装、geant4安装
- Geant4.10.1.p02例子学习之一(basic)
- Geant4.10.01.p02例子学习-(basic)
- http://wenku.baidu.com/view/f9b3b08a680203d8ce2f2452.html
- 修改Cygwin的默认启动目录
- linux下c语言可变参函数
- libvirt中使用 virtio 总线类型
- 关于VirtualBox
- Geant4认识1
- MediaInfo源代码分析 5:JPEG解析代码分析
- C++单体类 || 单例模式 的实现
- 使用标准模板库 (STL)之一
- Java基础 之强引用(Strong Reference)、软引用(Soft Reference)、弱引用(WeakReference)、虚引用(Phantom Reference)
- CentOS 中增加新的工作区
- 建立简单的服务器端程序
- 曾经的“战友”!
- 关于路由的一点理解,还有编址