Geant4零基础学习记录1

入门视频观看竹子姐的教学视频,geant4的安装请参考我之前文章。

Geant4的学习没有系统的教程,不要急于求成想要一次性学到精通,建议先把geant4的知识框架搭建好,实现一个能够满足自己需求的模型,然后在日常的使用中再去不断积累其中的知识点。

一、运行一个简单的例子

1.交互模式运行

使用交互模式运行一个简单的example1,到B1的目录下面创建文件夹build

cd B1
mkdir build

在build文件夹中进行编译可执行文件

cd build
cmake ..
make

此时在build中已生成可执行文件,运行可执行文件

./example

运行后可以看到B1的模型

2.批量模式运行

在上一节的build文件中,有以.mac结尾的文件,这些文件可以用来做批量运行,这里可以用来定义出射粒子的数量,类型,能量以及其他很多信息,其运行方式为:

./example run1.mac

打印信息中会有.mac文件中的信息

3.交互模式实现图形界面的方法

在主函数example.cc中

int main(int argc,char** argv)
{
  // Detect interactive mode (if no arguments) and define UI session
  //
  G4UIExecutive* ui = nullptr;
  if ( argc == 1 ) { ui = new G4UIExecutive(argc, argv); }

这里根据输入参数的不同给ui进行赋值,当只有一个输入参数时,会给ui赋值,否则ui=0。

if ( ! ui ) {
    // batch mode
    G4String command = "/control/execute ";
    G4String fileName = argv[1];
    UImanager->ApplyCommand(command+fileName);
  }
  else {
    // interactive mode
    UImanager->ApplyCommand("/control/execute init_vis.mac");
    ui->SessionStart();
    delete ui;
  }

在文件的末尾,根据ui的值来执行不同的文件,其中当ui存在,则!ui=0时执行else的内容,会执行一个init_vis.mac的文件,其中有图形界面的命令。

二、Geant4的简单介绍

1.Geant4实现模拟的架构

作为一名初学者,这一架构仅仅是我对自己当前所学知识的总结可能存在优化的空间,但是应该不存在原则性的问题,我认为都可以作为初学者搭建自己模型的框架。

geant4实现模拟需要我们自己实现的部分为模型的搭建,我们需要根据自己的实际情况将自己使用的探测器系统的几何结构进行搭建,然后定义好初始时间(粒子源),最后定义粒子源在输运过程中会发生的反应。

以上内容为需要我们自己定义的部分,然后geant4会根据我们定义好的模型进行计算,其中run、event、track、step都是geant4的内核自行运算的,不同的类为运算的不同进展,提供接口让我们对需要的信息进行收集。

geant4提供了一些信息收集的类,这一部分需要我们自己定义需要收集的信息,在geant4的模拟计算过程中根据我们定义,对需要收集的信息进行统计。

以上为我理解的一个genat4模拟程序模拟计算的基本过程,在加下来的学习中,希望能够学会对每一个功能进行实现的具体实现方法的掌握。

2.模拟不同计算过程的概念

  1. Run  
    1. 一次模拟从开始到结束为一个run,例如一次模拟发射1000个光子,那么从第一个光子开始,一直到最后一个光子结束,所有的模拟结算全部完成为一个run。
  2. Event
    1. 还是上面的例子,一次模拟发射1000个光子,那么这个run就有1000个event,
    2. event是指单个初始事件开始,包括其次级粒子所有的模拟计算结束,为一个event
  3. Step
    1. 粒子从上一个位置到下次与物质发生反应的过程称为一个step
    2. step起始位置:PreStePoint
    3. step结束位置:PostStepPoint
  4. Track
    1. 直接翻译是径迹,我的理解是一次反应产生的粒子数,不同的粒子产生不同的径迹,这里有点忘了,后面复习后补充

以上这些Geant4内核自动计算的过程之所以提供了动作类供使用者更改,是因为在这些类中间提供了一些方法(接口),能够让我们在恰当的进程中提取我们需要的物理信息。

所有笔记都是观看竹子姐视频后编写,有任何疑可以结合视频进行理解。

竹子姐【Genat4基础入门】视频讲解

  • 9
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Geant4 B1例程是Geant4官方提供的一个基础的粒子物理模拟程序,用于介绍Geant4的基本概念和使用方法。下面是对B1例程的详细解读: 1. 主程序:B1.cc B1.cc是B1例程的主程序。在主程序中,定义了一个B1DetectorConstruction类和一个B1ActionInitialization类的实例,并调用了G4RunManager类的Initialize()和BeamOn()函数,完成Geant4模拟运行的初始化和运行操作。 2. B1DetectorConstruction类 B1DetectorConstruction类是B1例程中的探测器构建类。在该类中,定义了一个立方体探测器,并设置了其材料、大小和位置等属性。同时,还定义了一个世界空间,并将该立方体探测器置于其中。在Geant4模拟运行中,该类用于构建探测器几何结构。 3. B1PrimaryGeneratorAction类 B1PrimaryGeneratorAction类用于定义粒子源。在该类中,定义了一个粒子源,并设置了其位置和初始动量等属性。在Geant4模拟运行中,该类用于生成初始粒子。 4. B1RunAction类 B1RunAction类用于定义每次模拟运行结束后的操作。在该类中,定义了输出模拟结果的操作,并将模拟结果保存到文件中。在Geant4模拟运行中,该类用于输出模拟结果。 5. B1EventAction类 B1EventAction类用于定义每个事件结束后的操作。在该类中,定义了统计能量沉积和计数器等操作,并将结果保存到B1Analysis类中。在Geant4模拟运行中,该类用于统计每个事件的能量沉积。 6. B1SteppingAction类 B1SteppingAction类用于定义每个粒子每次运动结束后的操作。在该类中,定义了统计能量沉积和计数器等操作,并将结果保存到B1Analysis类中。在Geant4模拟运行中,该类用于统计每个粒子每次运动的能量沉积。 7. B1ActionInitialization类 B1ActionInitialization类用于初始化B1例程中的所有动作类。在该类中,初始化了B1PrimaryGeneratorAction、B1RunAction、B1EventAction和B1SteppingAction类的实例,并将其传递给G4VUserActionInitialization类。 8. B1Analysis类 B1Analysis类用于定义模拟结果的输出格式和保存方法。在该类中,定义了输出文件的格式和存储路径,并提供了将模拟结果保存到文件的方法。在Geant4模拟运行中,该类用于保存模拟结果。 总之,B1例程是一个基础Geant4粒子物理模拟程序,包含了探测器构建、粒子源定义、模拟结果输出和统计等基本内容。通过学习B1例程,可以了解Geant4的基本概念和使用方法,并且可以根据需要进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值