本文为官方文档For Application Developer的阅读笔记,仅供参考
2.1.1
mian:
- 2个 工具类:G4RunManager, G4UImanager, G4VisManager(如果需要可视化)
- 3个 需要定义的类:DetectorCunstruction, PhysicsList, ActionInitialization
2.1.3
用户定义的类可以分为两种: Initialization类和Action类。前者在初始化阶段调用,后者在程序运行过程调用。前者需要通过RunManager->SetUserInitialization()设置,后者需要再ActionInitialization中设置。
于此来看
Initialization 的类包括
- DetectorConstruction
- PhysicsList
- ActionInitialization
而run的类包括
4. PrimaryGenerateAction(必要)
5. RunAction
6. EventAction
7. Stacking, Tracking, SteppingAction
而run中的所有类又在Initial中的ActionInitialization设置
2.4
在PhysicsList中设置运行中可能涉及的粒子,可能涉及的物理反应,以及粒子的衰减距离将被定义。
- Particle
- Physics
- Range cut
粒子的衰减距离将根据材料和粒子的种类,自动计算出相应粒子的能量阈值,当处于阈值之下时,粒子无法激发次级粒子,粒子将停止传播。
大多数情况下,只需要为大部分粒子设置一个相同的衰减距离。或者使用默认的衰减距离。当然也可以自定义每一种粒子在给定Volume下的衰减距离。
2.6
Generator
在每次event开始的时候,都会调用PrimaryGenerator 中的generatePrimaries(),在其中存在我们通过generatePrimaryVertex()而实例化的G4VPrimaryGenerator基类
对于generator, 用户还可以实现一定的能量、动量(粒子方向)、位置(发射位置)的随机化。可以使用G4GeneralParticleSource(GPS)进行更加精密的操控,定义不同形状的实体的表面或内部发射不同能量(spectral),位置(spatial), 方向(angular)分布的初始粒子。
3.1.2
虽然软件中涉及了许多的类,某些类之间存在比其他类之间更紧密的相似性或联系,通过这些相似性或联系,可以更好地组织对软件结构的理解。
- Run and Event. 他们的作用是给TrackingManager 提供需要追踪的二次粒子
- Tracking and track. 在粒子传播时进行计算,包括了初始化为模拟提供的设定,例如衰减距离,物理反应等
- Geometry and Magnetic Field
- Particle Definition and Matter
- Physics
- Hits and Digitization
- Visualization
3.3.2
用户必须为输入数据提供单位,如果不提供,将会由Geant4提供,然而后者是不推荐的方式。
3.4.4
在Run 中,Geant4将会启动DoEventLoop(),按照以下顺序交互Event类
- 构建G4Event对象,并将其交给primary vertex和primary aprticles。产生初始粒子流
- 将G4Event对象交给G4EventManager进行探测模拟,此时产生Hits和trajectories
- 记录数据
3.5
Event中的一个对象保留了此Event所有的输入输出数据。它有
4. Primary vertexes and Primary particles
5. Trajectories.
6. Hits collections
7. Digits collections
当G4EventManager接受了RunManager传递过来的Event对象后,它将
- 将与当前Event有关的G4PrimaryVertex和G4PrimaryPariticle对象转为G4Track对象。这些代表了初级粒子的G4Track对象将会交给G4StackManager保存
- 从G4StackManager中pop一个G4Track对象,交给G4TrackingManager
- G4TrackingManager将会计算,并返回二次粒子的G4Track对象,二次粒子的G4Track对象也被送往G4StackManager保存
- G4StackManager返回NULL值时,当前Event结束,退出
之前提及,必须要定义所有模拟中设计的粒子,未被G4ParticleDefinition定义的“中间”粒子将会忽略,如果“中间粒子”产生了二次粒子,这些二次粒子将会从粒子枪的位置射出。
另外粒子衰变时,程序也提供了方式强制指定其衰变的通道(channel)