我正在尝试确定 Geant4 中 (n,gamma) 反应中的目标核。我一直无法提取此信息。我发现它的唯一存储位置是 G4IsoParticleChange,如果启用了同位素计数,它由 G4HadronicProcess 创建。
不幸的是,每次调用该进程时,此信息都会丢失(也不是以一种好的方式,而是内存泄漏方式)。在粒子创建之间,我找不到用户挂钩来询问此信息。据我所知,G4UserStackingAction 是不够的,因为次级粒子都是在堆叠之前为一个步骤创建的(* 尽管写最后一句话给了我一个想法)。
谁能帮我确定在 (n,gamma) 反应中捕获中子的原子核?有没有更简单的方法来获取这些信息?
谢谢
PS 由于一个中子只能在一个步骤内被吸收一次,等到二级粒子被堆叠以获得 IsoParticleChange 信息是否安全,或者我是否冒着内存泄漏的风险?
编辑更清楚:
我在问是否有人知道如何在 Geant4 的 nCapture 过程中检索作为目标的核。从源头上可以清楚地看出,如果没有检索到 G4IsoParticleChange 信息,则只要调用 G4HadronicProcess 就会发生内存泄漏。似乎没有合适的用户钩子在不丢失某些信息并导致所述内存泄漏的情况下获取此信息,但可以打开此信息存储。我想知道获取此信息的正确方法是什么,或者是否有更好的方法来获取有关目标核的此类信息。
我以前从熟悉 Geant 的人那里得到了一些关于 SO 的帮助。我无法从 Slac Geant4 论坛获得回复,让我可以在那里发帖。无论如何,论坛似乎并不十分活跃。
谢谢
跟进:
万一有人偶然发现这一点,我从 G4HadronicProcess 类的一位作者那里得到的答案是“这部分实现已经很多年没有维护了”和“让核心参与交互是非常困难的,如果不是不可能的话无需编辑源代码。” 因此,我正在建立一个新的 Geant 工作区,我可以在其中执行此操作。供参考。