Day 09(上) B2a实例分析-----如何理解Sensitive detector 和 Hit
Day 09(上) B2a实例分析-----如何理解Sensitive detector 和 Hit
一、Sensitive detector(G4VSensitiveDetector)
含义:是一个虚基类,用来模拟或获取想要读取的一些信息,若把某个区域设置成为sensitive detector,那么可以借助这个sensitive detector所具备的一些能力去模拟并获得在这个区域里面想要获得的一些信息,这个区域的每一个step都可以获取。只需要告诉系统这个区域被我设置成了这个,那么一些信息都可以通过每一个step得到。若指定为这个sensitive detector,那么sensitive detector本身有一个方法叫ProcessHits(),在这个方法中可以写一些用于获取物理信息的代码
G4VSensitiveDetector::ProcessHits()
获取信息对比:B1 VS B2a
- B1里面通过继承G4UserSteppingAction,访问每一个step,确定这个step是在我们想要统计物理信息的体积区域以内(if判断语句),然后将这个step信息记录下来在一个event中,存在一个event成员变量中,当一个event结束(run)以后,将这些信息进行汇总;
- **B2a通过sensitive detector,用processHits()**方法进行获取统计想要获取的物理信息,写统计方法的代码,自己做加和。
二、如何使用sensitive detector
- 每一个logical volume都可以有一个指针指向sensitive detector,这样这个volume就变成sensitive了;
- 然后需要知道要统计哪些信息(Hit中说明),将这些信息加和到一起
提取有用的信息(当建立一个程序时,需要关注建模、physics list[粒子进入模型会发生什么反应需要知道,最好使用G4已经写好的physicslist]、useful information[我们想要统计的信息,全程自己写]、输出[输出形式,让想要收集的信息都可以写在这个文件中])。其中,第三部分—我们想要统计的信息:
三、写一些代码提取这些信息并存储输出的方法:
- Built-in scoring commands
- User scorers in the tracking volume
- Assign G4VSensitiveDetector to a volume to generate “hit”
- 使用User Hooks(继承G4VUserTrackongAction,G4UserSteppingAction…)便可以调用其中的方法进行统计
四、Hit(G4VHit , B2aTrackerHit)
含义:用于存储一些具体步骤的意思,每一个我们需要模拟和记录的信息(信息抓取)。自己写一个类B2aTrackerHit,用来继承G4VHit。
做实验想要统计的一些物理变量信息(就B2a而言):(Hit所包含的信息)
- the track identifier(an integer) - TrackID(进入到某一个体积内的粒子序号)
- the chamber number
- the toal energy deposit in this step(每一个step的能量沉积)
- the position of the energy deposit(每一个step能量沉积下去时的位置)
和sensitive detector一起使用
Hit Collection(G4THitsCollection,用法类似vector,是用来存储我们收集到的Hit的,但是也不是完全类似,初始化的时候,需要指定两个G4String)
- vector Vec:容器,用于储存double变量
- G4THitsCollectionB2TrackerHitsCollection:容器,用于储存Hit变量,这个容器名叫G4THitsCollection,并给它一个变量叫B2TrackerHitsCollection,若B2TrackerHitsCollection容量为10个,那么里面有10个B2TrackerHit
- typedef G4THitsCollectionB2TrackerHitsCollection
五、B2a简要介绍
大致可以看以下文件,通常都会继承G4已有的类,然后在此基础上写自己的方法代码:
ReadMe:对该程序的解说,包含程序有什么、程序的模型是什么样的、怎么去发射、模型怎么样变化、程序运用了哪些东西(方法)、每个文件是什么用,写了什么…
ExampleB2a.cc(主程序)
ActionInitialization
PrimaryGeneratorAction
DetectorConstruction
TrackerSD
TrackerHit
EventAction
DetectorMessenger:改代码时,不需要去重新编译
RunAction
G4UserLimits:需要对每一个step设置一个最大步长(平均自由长),但只针对于chamber,不针对靶物质
G4StepLimiterPhysics
还可以看代码的结构,比如src文件夹下有哪些文件,每个文件都是干什么的,G4中给文件取名字都是保留类作用取命名