MOMO为G4初学者建立探测器和添加粒子、物理过程提供了很大的方便。
可是所谓任何人事都不是完美的,MOMO的设计也出现了部分低级BUG。
.
问题出在MOMO的粒子创建(emPhysics栏)子页,
建立"玻色子"的部分有错误,生成代码的void a::ConstructBosons()函数中:
.
添加γ粒子生成的代码是 G4Geantino::GeantinoDefinition();
添加geantino生成的代码是 G4ChargedGeantino::ChargedGeantinoDefinition();
添加chargedgeantino生成的代码是 G4Gamma::GammaDefinition();
.
显然是顺序错了..结果就是某人由于在程序只使用了γ粒子,用MOMO生成的代码在运行是总被告知
*** G4Exception : Event00003
issued by : G4ParticleGun::SetParticleDefinition()
Null pointer is given.
.
报错报在SetParticleDefinition()函数上,还一直以为是生成粒子的地方出错,找了N久..结果发现被忽悠了=.=`
.
原想在MOMO的官方网站发个Bug报告,可是现在网站好像已经关了。也然怪MOMO几年没有更新过。
.
---------------------------------------------
补充:随着G4版本的不断发展,老旧的MOMO有些地方已经不太适用了,G4.9.3之后更将低能光电过程分成三套不同的物理模型类型,并取消了原来的LowEnergy类型物理过程,低能过程代码的编写方法和原来也不一样..这些估计可以让更多的原先的(以及用MOMO生成的)G4程序全部编译报错=.=^偷懒少写代码有时候更麻烦噢,不是万全之计哎。
---------------------------------------------
纠正:原来我说"G4好像要取消低能光电过程"是说错了哈..后来看了UserManual,已经把上面的这段话改正了。