Geant4: 官方文档第一遍阅读笔记(3)

5.1

G4TrackingManager并不直接参与计算过程,它是Event, Track, Tracking这些类数据交换的窗口。

而G4SteppingManager在追踪粒子中发挥了关键的作用。在其中的Stepping中,进行每一步Step的计算,顺序为

  1. 根据当前粒子的能量状态、空间位置等信息,使用对应的Process产生相应的最小步长(空间步长和时间步长):
    发生不同Process的概率,考虑概率的前提下,选择步长最短的反应
  2. Volume的范围非常重要,例如不同Volume可能有不同的材料构成,而不同的材料会涉及不同的物理反应。因此需要比较粒子的physical-step-length与粒子到边界的距离“Safety”,选择其中最短的
  3. 更新Track信息,更新SecondaryList
  4. 启动对应的Process
    1. 如果粒子停止,调用AtRest Process,该Process也会产生一个步长,决定和其他Process进行的时间顺序
    2. 或者调用PhysicsList与当前Volume材料的信息,给出与当前与材料
  5. 查看粒子是否终止
  6. 更新粒子当前Volu当前ppingAction
  7. 将数据保存在 Trajectory中
  8. 其他后处理,直至当前Step完成

其中值得关注的对象是G4Track, 和SecondaryList。大部分我们想要获得的输出都可以通过这两个对象获得,而主要情况下来自于前者。

Process中最重要的包括DoIt和GetPhysicalInteraction两个方法,这两个方法都有三个阶段,分别对应六个函数。这是三个阶段分别是 ,AlongStep, PostSte分, AtRest。Process调用这些方法对G4Track和SecondaryList进行修改,从而保证程勋运行,和记录我们感兴趣的数据项

G4Track保存当前粒子的信息,因此它只保留Step中的瞬态数据,每次Step后其中间值都会被更新。

Step存储每个Step中的瞬态信息,例如Step的两点,和两点之间数据的变化

Trajectory

当EventManager将一个Event交给TrackingManager后,Tracking会创建一个Trajectory对象。

Trajectory对象主要包含的数据成员是粒子定义和TrajectoryPoint指针。TrajectoryPoint对象具体是被TrackingManger的方法创建,对应着track上的每一个step point。

Trajectory可以保存在整个Event产生的信息,因为G4Track和G4Step在每一个Step都会更新数据。而Trajectory提供了一个相对简便的方式,直接在Event层次整合信息

为了实现自定义的Trajectory,用户需要再G4UserTrackingAction::PreUserTrackingAction()中创建一个MyTracjectory对象,并且使用SetTrajectory()让TrackingManger使用我们创建的MyTrajectory对象。

如果还需要实现自定义的TrajectoryPoint对象,那么还需要再自定义的Trajectory中创建对应的AppendStep()方法,在其中调用我们自定义的TrajectoryPoint对象。

6.4

有两种方式可以获得Geant4其中运行获得的信息

  1. 通过基类,例如Run, Hits, Digitization, Tracking
  2. 通过对应层次的Information类
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值