Geant4--探测器从能量沉积谱到模拟真实能谱(1)
文|梁佐佐
核辐射探测器模拟是绝大多数Geant4使用者的主要任务,今天给大家带来一个题主自己写的例子。该例子实现了“模拟一个闪烁晶体对于某放射性同位素的伽玛能谱输出”。因内容实在繁杂,大家可下载该例子自行参考。
链接: https://pan.baidu.com/s/1qRt3HOy1Fv8EmS6bqSXGVw 提取码: dknf 。
现列出该例子的主要功能:
1. 放射源的衰变模拟和物理过程,编译好程序后,运行 csi Co60.mac 即可输出能谱信息的数据文件。
2. 模拟抽样的物理过程截断值设置,诸如在EmStandardPhysics.cc、PhysicsList.cc、DetectorConstruction.cc 及宏文件中,都可以进行设置,它们之间的区别可自行谷歌。相应的语句为:
emOptions.SetStepFunction(0.1, 100*um);
void PhysicsList::SetCuts(){SetCutValue(0*mm, "proton");/*****/}
fLogicCrystal->SetUserLimits(new G4UserLimits(0.01*um));
/run/setCut 0.01 um
3. 自定义多种物理过程,并添加到一个统一的物理过程列表:EmStandardPhysics.cc、GammaPhysics.cc ---->PhysicsList.cc。
4. 怎样把能量沉积谱通过高斯抽样展宽为真实能谱,即具有一定的能量分辨率。见EventAction.cc。(这本来应该是该帖子的重点,但因当下时间紧张推迟到下次)
对能谱模拟流程作一次特别的说明:
1. 真实的探测器做实验,获得多种放射性同位素的能谱,做能量刻度、能量分辨率刻度:能量刻度——能量与chanel的对应关系;能量分辨率刻度:能量分辨率与能量的对应关系。
2. Sigma=sqrt(a*E2+b*E+c)/2.35482; outenergy= GaussRand()*sigma+E。这里E是单事例沉积能量,而outenergy就是G4输出的能量(带有能量分辨率了)。
再来几张示意图:
另外,传授大家一个妙招,那就是改程序运行的名字!!每次exampleB1 *.mac都要哭了。在linux下:
1. mv exampleB1.cc myname.cc
2. vi GNUmakefile --> name := myname
3. 然后make!(很多时候我习惯先 make clean 然后再make)
喜欢的话,分享一下吧~^o^~