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

本文为官方文档For Application Developer的阅读笔记,仅供参考

2.1.1

mian:

  1. 2个 工具类:G4RunManager, G4UImanager, G4VisManager(如果需要可视化)
  2. 3个 需要定义的类:DetectorCunstruction, PhysicsList, ActionInitialization

2.1.3

用户定义的类可以分为两种: Initialization类和Action类。前者在初始化阶段调用,后者在程序运行过程调用。前者需要通过RunManager->SetUserInitialization()设置,后者需要再ActionInitialization中设置。

于此来看
Initialization 的类包括

  1. DetectorConstruction
  2. PhysicsList
  3. ActionInitialization

而run的类包括
4. PrimaryGenerateAction(必要)
5. RunAction
6. EventAction
7. Stacking, Tracking, SteppingAction

而run中的所有类又在Initial中的ActionInitialization设置

初始化
DetectorConstruction
PhysicsList
ActionInitialization
运行
PriamryGeneratorAction
RunAction
EventAction
StackAction_TrackingAction_SteppingAction

2.4

在PhysicsList中设置运行中可能涉及的粒子,可能涉及的物理反应,以及粒子的衰减距离将被定义。

  1. Particle
  2. Physics
  3. Range cut

粒子的衰减距离将根据材料和粒子的种类,自动计算出相应粒子的能量阈值,当处于阈值之下时,粒子无法激发次级粒子,粒子将停止传播。

大多数情况下,只需要为大部分粒子设置一个相同的衰减距离。或者使用默认的衰减距离。当然也可以自定义每一种粒子在给定Volume下的衰减距离。

2.6

Generator

在每次event开始的时候,都会调用PrimaryGenerator 中的generatePrimaries(),在其中存在我们通过generatePrimaryVertex()而实例化的G4VPrimaryGenerator基类

对于generator, 用户还可以实现一定的能量、动量(粒子方向)、位置(发射位置)的随机化。可以使用G4GeneralParticleSource(GPS)进行更加精密的操控,定义不同形状的实体的表面或内部发射不同能量(spectral),位置(spatial), 方向(angular)分布的初始粒子。

3.1.2

虽然软件中涉及了许多的类,某些类之间存在比其他类之间更紧密的相似性或联系,通过这些相似性或联系,可以更好地组织对软件结构的理解。

  1. Run and Event. 他们的作用是给TrackingManager 提供需要追踪的二次粒子
  2. Tracking and track. 在粒子传播时进行计算,包括了初始化为模拟提供的设定,例如衰减距离,物理反应等
  3. Geometry and Magnetic Field
  4. Particle Definition and Matter
  5. Physics
  6. Hits and Digitization
  7. Visualization

3.3.2

用户必须为输入数据提供单位,如果不提供,将会由Geant4提供,然而后者是不推荐的方式。

3.4.4

在Run 中,Geant4将会启动DoEventLoop(),按照以下顺序交互Event类

  1. 构建G4Event对象,并将其交给primary vertex和primary aprticles。产生初始粒子流
  2. 将G4Event对象交给G4EventManager进行探测模拟,此时产生Hits和trajectories
  3. 记录数据

3.5

Event中的一个对象保留了此Event所有的输入输出数据。它有
4. Primary vertexes and Primary particles
5. Trajectories.
6. Hits collections
7. Digits collections

当G4EventManager接受了RunManager传递过来的Event对象后,它将

  1. 将与当前Event有关的G4PrimaryVertex和G4PrimaryPariticle对象转为G4Track对象。这些代表了初级粒子的G4Track对象将会交给G4StackManager保存
  2. 从G4StackManager中pop一个G4Track对象,交给G4TrackingManager
  3. G4TrackingManager将会计算,并返回二次粒子的G4Track对象,二次粒子的G4Track对象也被送往G4StackManager保存
  4. G4StackManager返回NULL值时,当前Event结束,退出

之前提及,必须要定义所有模拟中设计的粒子,未被G4ParticleDefinition定义的“中间”粒子将会忽略,如果“中间粒子”产生了二次粒子,这些二次粒子将会从粒子枪的位置射出。

另外粒子衰变时,程序也提供了方式强制指定其衰变的通道(channel)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值