【发布时间】:2011-09-08 19:35:21
【问题描述】:
我正在尝试确定 Geant4 中 (n,gamma) 反应中的目标核。我一直无法提取此信息。我发现它的唯一存储位置是 G4IsoParticleChange,如果启用了同位素计数,它由 G4HadronicProcess 创建。
不幸的是,每次调用进程时,这些信息都会丢失(也不是以一种好的方式,而是内存泄漏的方式)。在粒子创建之间,我找不到用户挂钩来询问此信息。据我所知,G4UserStackingAction 是不够的,因为次级粒子都是在堆叠之前为一个步骤创建的(* 虽然写最后一句话给了我一个想法)。
谁能帮我确定在 (n,gamma) 反应中捕获中子的原子核?有没有更简单的方法来获取这些信息?
谢谢
附:由于一个中子只能在一个步骤内被吸收一次,等到二级粒子堆叠起来获取 IsoParticleChange 信息是否安全,或者我是否有内存泄漏的风险?
编辑得更清楚:
我在问是否有人知道如何在 Geant4 的 nCapture 过程中检索作为目标的核。从源头上可以清楚地看出,如果没有检索到 G4IsoParticleChange 信息,则只要调用 G4HadronicProcess 就会发生内存泄漏。似乎没有合适的用户钩子在不丢失某些信息并导致所述内存泄漏的情况下抓取此信息,但可以打开此信息存储。我想知道获取此信息的正确方法是什么,或者是否有更好的方法来获取有关目标核的此类信息。
我之前从熟悉 Geant 的人那里得到了一些关于 SO 的帮助。我无法从 Slac Geant4 论坛获得回复,让我可以在那里发帖。反正论坛好像不是很活跃。
谢谢
跟进:
如果有人偶然发现这一点,我从 G4HadronicProcess 类的一位作者那里得到的答案是“这部分实现已经很多年没有维护了”和“让核心参与交互非常困难如果不编辑源代码不是不可能的话。”因此,我正在建立一个新的 Geant 工作区,我可以在其中执行此操作。仅供参考。
【问题讨论】:
-
我对你在问什么感到有点困惑。您是在问如何找到内存泄漏?或者您是在问如何使用特定的库 Geant4?
-
我正在寻求有关 Geant4 的具体帮助。 Geant4 是 CERN 开发的高能物理软件。
-
我想你对online documentation和software reference manual特别熟悉吧?我发现根植于类文档是解决此类问题的一种缓慢且有时令人沮丧但可靠的技术。
-
还有"Slack Geant4 forum"你是说"SLAC Geant4 forum"吗?在任何情况下,您都可以考虑在the forum maintained by the Geant developers 上提问(似乎托管在 SLAC,所以我们可能在谈论同一件事)。
-
是的,我的意思是 SLAC,我认为这是同一个论坛。我对文档很熟悉,但如果你经常使用 geant,你可能会注意到它有些欠缺!根植于源代码确实是获取有关类在 geant 中如何工作的任何真实信息的唯一方法。
标签: c++ physics montecarlo