文|梁佐佐
应唐光毅博士/后之约,对于Geant4模拟,我们看是否能解决这么一个问题:我现在想模拟探测器不同角度下的响应,每次模拟需要/run/beamOn 100, 可是我真的不想一遍一遍的去http://DetectorConstruction.cc中修改几何放置角度,然后编译完怒敲exampleB1 run1.mac;或者,我想只编译运行一次G4就可以跑几百次/run/beamOn 100 且需要每次Run的时候射线源的出射位置、能量等参数不同?
这么机智的事情,有助于解决做模拟会哭的问题。让我们开始吧!
以G4中的basic/B5 例子为基础,我们现在要模拟第一个场景:
a. 设置一个探测器,绕Y轴可设置不同的旋转角度θ,θ范围为0°-45°,分别 间隔5°采样一次;
b. 射线源在每个角度下/run/beamOn 100;
c. 要求得到每个角度下探测器探测到的计数,可以认为此目的是对比探测器在不同射线入射角度下的探测效率;
d. 总共10个角度,定义一个输出文件,总共输出10个数值,代表不同角度下的测得计数。
以G4中的basic/B5 例子为基础,我们可以分以下几步实现上述场景:
1.定义宏命令/B5/detector/armAngle X deg 用以在*.mac文件中设置探测器角度,B5中,这是现成的!
2.关键点——定义一个loop.mac 和一个angle.mac
2.1 loop.mac
/run/initialize
/gun/particle gamma
/gun/energy 611.7 keV
/control/loop angle.mac angle 0.0 45.1 5.0
## 0.0 45.1 5.0 表示从0.0°开始,每间隔5.0°赋予一次数值,到小于45.1为止,和for循环很像
2.2 angle.mac
/B5/detector/armAngle {angle} deg
/run/beamOn 100
3.在http://Steppin