在不完全学习指南10中,我简单的学习分析了run,G4Run,event,G4Event,stack(栈)之间的基本知识,下面将继续讨论学习
track 和step的基础知识。
2019年8月6日于兰州 下午4:40
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 的属性,包括:
9. 调用离散物理过程。在过程开始之后:
10. 检査 track,看是否已经被离散物理过程中止。
11. 更新"newSafety"
12. 如果几何边界限制了 step,这个粒子将继续输运到下个几何体中
13. 调用用户干预活动 G4UserSteppingAction.
14. 处理 hit 信息。
15. 将数据保存到 Trajectory。
16. 更新离散物理过程的的平均自由程。
17. 如果初始粒子仍然存活,那么重置发生离散物理过程的最大作用距离。
18. 到这,已经完成了一个 step。
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 信息可以通过调用 G4Track 类提供的 Get 方法来进行存取,典型的信息包括:
Step 和 step-point 信息可以通过调用 G4Step/G4StepPoint 类的 Get 方法来获取,G4Step 中的信息包括:•
在 G4StepPoint ( Pre 和 PostStepPoint ) 中的信息包括:
截止10,自我感觉看程序的基本需求已经达到,后面的内容将会结合程序进行分析,在实战中提升建模能力。