Geant4 不完全学习指南10 (关于track 和step的学习)

在不完全学习指南10中,我简单的学习分析了run,G4Run,event,G4Event,stack(栈)之间的基本知识,下面将继续讨论学习

track 和step的基础知识。

2019年8月6日于兰州 下午4:40

             什么是step

G4Step 存储一个 step 的瞬态信息。包括 step 的两个端点, PreStepPoint 和 PostStepPoint ,
包括这些点的坐标和包含它们的 volume。 G4Step 也存储在两个点之间 track 属性的变化。这
些属性包括能量和动量,它们在各种活动物理过程调用的时候更新。
 

G4Step源码

G4Step中一些常用的公用方法

 G4UserSteppingAction 源码

G4SteppingManager

G4SteppingManager 是一个在粒子跟踪中扮演重要角色的类。它处理在所有 G4 模块中,与
粒子输运有关的对像之间的信息传递。(例如,几何,在物质中的相互作用等)。 它的公有方
法 Stepping() 进行粒子跟踪的分步工作。处理一个 step 的算法如下:

1. 计算粒子在 step 开始时的速度。

2. 每个活动的离散或者连续物理过程,必须根据它所描述的相互作用来假定一个步长。
Stepping 使用这些步长中的最小值。

3. 几何 navigator 计算到相邻 volume 的边界距离"newSafety",如果物理过程中的最小物
理步长小于"newSafety",将使用这个物理步长作为下一步的步长。在这种情况下,不
需要在进行其它的几何计算。

4. 如果从物理过程获得的最小物理步长比"newSafety"大,那么,将进行以下的处理:

  •      如果前一步没有被几何所限制,那么回到前一步的开始位置,并且
  •      重新计算到下一个边界的距离

5. 将最小物理步长和几何步长中的较小者作为步长

6. 调用所有活动的连续物理过程。注意,只有在所有的调用完成之后,粒子的动能才被
更新。粒子动能的改变量,就是这个过程对粒子的贡献的和。

7. 检査 track 是否已经被一个连续物理过程所中止。

8. 在离散物理过程调用之前,更新 track 的属性,包括:

  •   更新当前粒子动能(注意, 'sumEnergyChange'是指在每个连续过程调用完成之后的动能改变的和,而不是物理过程开始前能     量差的和)
  •  更新位置和时间。

9. 调用离散物理过程。在过程开始之后:

  •     更新当前跟踪的粒子的能量,
  • 在 SecondaryList 中存储来自 ParticleChange 的次级粒子。这包括构造"G4Track"对象设置它们的成员数据。注意,stepping manager 负责删除这些次级粒子

10. 检査 track,看是否已经被离散物理过程中止。

11. 更新"newSafety"

12. 如果几何边界限制了 step,这个粒子将继续输运到下个几何体中

13. 调用用户干预活动 G4UserSteppingAction.

14. 处理 hit 信息。
15. 将数据保存到 Trajectory。
16. 更新离散物理过程的的平均自由程。
17. 如果初始粒子仍然存活,那么重置发生离散物理过程的最大作用距离。
18. 到这,已经完成了一个 step。

           什么是track

G4Track 保存粒子完成一个 step 之后的最终状态信息。这意味着它在 AlongStepDoIt 运行期
间,保存了前一个 step 的信息。只有在 AlongStepDoIt 's 结束之后,G4Track 才拥有最终信
息 (例如,最终位置)。同时需要注意,如前所述,G4Track 将在每次 PostStepDoIt 开始之后更新。

G4Track 源码

G4TrackingManager

G4TrackingManager 是一个接口类,处理 event,track,tracking 模块之间的信息交换。这个类的一个 singleton 实例,处理上层的
事件管理对像和下层 tracking 模块中的对像之间的消息传递。事件管理器是 G4EventManager类的一个 singleton 实例。

tracking manager 从事件管理器接收一个 track,进行相应的处理(actions),完成粒子跟踪。G4TrackingManager 中集合了那些指向 G4SteppingManager, G4Trajectory 和G4UserTrackingAction 的指针。同时,对与 G4Track 和 G4Step 有一个"使用"的关系。

G4UserTrackingAction源码

         track中包含的信息

Track 信息可以通过调用 G4Track 类提供的 Get 方法来进行存取,典型的信息包括:

  • (x,y,z)
  • 全局时间 (从事件建立时开始的时间)
  • 局部时间 (从 track 建立时开始的时间)
  • 本征时间 Proper time
  • 动量方向 (单位向量)
  • 动能
  • 累计的几何径迹长度
  • 累计的真实径迹长度
  • 指向动态粒子的指针
  • 指向物理体的指针
  • Track ID 号
  • 父 track 的 Track ID 号
  • 当前 step 号
  • Track 状态
  • (x,y,z) track 的开始位置 (顶点位置)
  • 在 track 开始位置(顶点位置)的动量方向
  • 在 track 开始位置(顶点位置)的动能
  • 指向建立当前 track 的物理过程的指针

       step中包含的信息

Step 和 step-point 信息可以通过调用 G4Step/G4StepPoint 类的 Get 方法来获取,G4Step 中的信息包括:•

  • 指向 PreStep 和 PostStepPoint 的指针
  • 几何步长 (多次散射校正之前的步长)
  • 真实步长 (多次散射校正之后的步长)
  • 在 Pre 和 PostStepPoint 之间,时间/位置的变化量
  • 在 Pre 和 PostStepPoint 之间,动量/能量的变化量。 (注意:要获取在 step 中沉积的
  • 能量,不能使用这个'能量变化量。用户只能向下面那样使用“总能量沉积”。)
  • 指向的 G4Track 指针
  • 在 step 期间的总能量沉积――这是下面这些量的和
  • (1)由能量损失的物理过程沉积的能量,
  • (2)那些因低于截断阈值,而并没有产生的次级粒子引起的能量损失

在 G4StepPoint ( Pre 和 PostStepPoint ) 中的信息包括:

  • (x, y, z, t)
  • (px, py, pz, Ek)
  • 动量方向 (单位向量)
  • 指向物理体的指针
  • Safety
  • Beta, gamma
  • 极化
  • Step 状态
  • 指向定义当前 step 和它的 DoIt 类型的物理过程的指针
  • 指向定义前一个 step 和它的 DoIt 类型的物理过程的指针
  • 总的径迹长度
  • 全局时间 (从事件建立时开始的时间)
  • 局部时间 (从 track 建立时开始的时间)
  • 本征时间 Proper time

截止10,自我感觉看程序的基本需求已经达到,后面的内容将会结合程序进行分析,在实战中提升建模能力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值