NPTool 1
关于 NPTool 模拟工具的报告
应用场景(来源)
在论文 Validation of the \(^{10}\)Be Ground-State Molecular Structure Using \(^{10}\)Be(p, p\(\alpha\)) \(\ ^{6}\)He Triple Differential Reaction Cross-Section Measurements 中:
NPTool(Nuclear Physics Tool)被用于模拟和分析低能核物理实验中的探测效率,以进行实验测量与理论计算的比较。帮助验证了 \(^{10}Be\) 的基态可以被描述为一个 \(\alpha-\alpha\) 核心,以及两个价中子占据 \(\pi\) 型分子轨道的结构。
其中 NPTool 被用于计算在特定角度下,同时探测质子 \((p)\) 和 \(\alpha\) 粒子 \((\alpha)\) 的总效率 \((\epsilon _{p\alpha}(\theta _p))\)。这种效率对于实验数据分析至关重要,因为它直接影响到实验中观测到的事件数量。
介绍
NPTool框架是专为低能核物理实验设计的开源数据分析和蒙特卡洛模拟框架,具有高度灵活性和可靠性,能够适应多种探测器配置和实验需求。以下是其核心内容概述:
背景与意义
- 复杂实验需求:随着放射性离子束设施的发展,低能核物理实验装置的复杂性急剧增加,需要处理大量电子通道和多种检测系统。
- 效率与可靠性需求:当前众多项目专注于特定探测器的模拟或分析,两者之间缺乏联系。NPTool 旨在提供一个通用框架,耦合分析和模拟代码,方便添加新探测器支持并自由组合现有探测器。
优势与特点
- 灵活性与适应性:模块化设计允许用户根据实验需求自由组合不同探测器,通过简单修改输入文件即可改变装置设置。
- 耦合性与一致性:将分析和模拟代码进行耦合,确保两者使用相同的几何和物理设置,提高结果一致性。
- 易扩展性:便于添加新探测器支持和新分析功能,适应不断发展的实验技术需求。
- 专用性:包含特定的事件生成器和适应低能物理社区的工具,如校准管理器设施。
技术基础
- 编程语言与工具:基于 C++ 开发,利用 Geant4 蒙特卡洛模拟工具包和 ROOT 数据分析框架。
- 架构设计:采用分层架构,包括核心层(NPLib)、应用层(npsimulation 和 npanalysis程序)和用户层。
S
工作流程
- 模拟流程:使用 npsimulation 工具,通过指定几何和事件生成器文件,运行自定义命令行启动模拟。
- 分析流程:使用 npanalysis 工具,结合几何、事件生成器、校准和运行文件进行数据分析。
应用与成果
- 应用范围:成功用于 GANIL、RIKEN、ALTO 和 TRIUMF 等机构的复杂实验分析和模拟。
- 验证与基准测试:通过与实验数据的比较验证框架的可靠性,包括带电粒子识别、两体运动学和角分布、γ 射线谱学等方面。
未来发展方向
- 在线分析:开发独立的在线分析工具,实现模拟过程中的动态几何和事件调整。
- 截面偏差:实施截面偏差功能,提高特定核过程的模拟效率。
结论
NPTool是一个灵活、可靠且可扩展的框架,满足低能核物理社区对异构探测器系统进行模拟和分析的需求。它简化了分析和模拟过程,并在多个博士论文和同行评审论文中得到广泛应用和验证。
实践
开源项目
NPTool 的开发始于 2009 年,采用 GNU Public License 2.0 开源协议,可在 https://github.com/adrien-matta/nptool 下载。项目网站 http://nptool.org 提供了详细的安装和使用文档。
(代码仓库已经迁移至GitLab IN2P3服务,以确保更高的稳定性。https://gitlab.in2p3.fr/np/nptool)
安装
- 编译和部署使用 Cmake bulid system
- NPLib 编译需要 NPTool 的库 ROOT 5 (tested with 5.34) or 6
- NPSimulation 编译需要 Geant4 (tested with version 9.6 and 10.1),如果想要使用 GDML 则需要下载支持的 Geant4 版本
Build 步骤 (具体略过,可查看开源项目文档)
- 设置环境变量
- 编译 NPLib
- 编译 NPSimulation
以上步骤能设置 NPTool 的环境变量并编译其核心库 NPLib 和模拟部分的 NPSimulation。
运行基准测试
-
下载额外文件:
在$NPTOOL目录下,运行以下命令以克隆所需的文件:git clone https://github.com/adrien-matta/NPData -
运行第一个基准测试(cats):
cd $NPTOOL/Benchmarks/cats npanalysis -D benchmark_cats.detector -C calibration.txt -R RunToTreat.txt -O benchmark_cats -
运行第二个基准测试(gaspard):
cd $NPTOOL/Benchmarks/gaspard npsimulation -D benchmark_gaspard.detector -E 132Sndp_benchmark.reaction -O benchmark_gaspard -B batch.mac -
查看结果:
运行以下命令查看结果并与参考结果进行比较:root -l ShowResult.C
运行示例
-
运行示例 1:
npsimulation -D Example1.detector -E Example1.reaction -O Example1这将打开 npsimulation 的 GUI(如果你使用的是 Qt)或命令行终端。在任一情况下,可以使用以下命令生成事件:
run/beamOn/ 10000 exit这将模拟
11Li(d,3He)10He->8He+n+n反应,并生成一个输出 ROOT 文件,位于$NPTOOL/Outputs/Simulation/Example1.root。 -
分析模拟文件:
npp Example1 cmake ./ make -jn npanalysis -R RunToTreat.txt -O Example1这将生成一个分析树,位于
$NPTOOL/Outputs/Analysis/Example1.root文件中。 -
查看结果:
root -l ShowResult.C你应该能够看到轻粒子识别、轻粒子运动学线以及由高斯拟合的激发能谱。
示例文件说明
- Example1.detector 文件位于
$NPTOOL/Inputs/DetectorConfiguration,定义了模拟中使用的探测器配置。 - Example1.reaction 文件位于
$NPTOOL/Inputs/EventGenerator,定义了模拟的反应事件。
这些示例和基准测试为用户提供了一个标准化的测试案例,可以帮助用户开始自己的模拟和分析工作。
工作流程
NPTool 的工作流程主要分为两个部分:模拟流程和分析流程。以下是这两个流程的详细说明:
模拟流程
-
准备输入文件:
- 几何文件:描述实验装置的几何结构。
- 事件生成器文件:定义模拟的物理过程和事件类型。
-
运行
npsimulation:npsimulation -D geometry_filename -E generator_filename -O output_rootfilename-D:指定几何文件。-E:指定事件生成器文件。-O:指定输出的 ROOT 文件名。
-
生成模拟数据:
npsimulation会根据输入文件生成模拟数据,并将其存储在指定的 ROOT 文件中。- 如果 Geant4 是用 QT 支持编译的,
npsimulation会启动一个自定义的 QT 界面,否则会使用命令行界面。 - 可以在运行时修改和重新加载几何和事件生成器文件。
- 支持 OpenGL 和 VRML 可视化,并可以将几何导出为 GDML 格式。
分析流程
-
准备输入文件:
- 几何文件:与模拟流程中使用的几何文件相同,确保分析时的几何配置与模拟时相同,以便正确解读探测器数据。
- 事件生成器文件:与模拟流程中使用的事件生成器文件相同,以便分析时能够准确地还原模拟的物理过程和事件类型。
- 校准文件:用于校准探测器数据,将探测器的原始读数转换为物理量。
- 运行文件:指定要分析的数据文件,可以是模拟生成的 ROOT 文件,也可以是实验实际采集的数据文件。
-
运行
npanalysis:npanalysis -D geometry_filename -E generator_filename -C calibration_filename -R runstotreat_filename -O output_rootfilename-D:指定几何文件。-E:指定事件生成器文件。-C:指定校准文件。-R:指定运行文件。-O:指定输出的 ROOT 文件名。
如果当前目录下存在自定义的分析库
libNPAnalysis,npanalysis会自动加载并使用它,以实现更复杂的分析功能和物理量计算;如果没有,则分析功能将仅限于构建PhysicsTree,即生成一个包含基本物理信息的树结构,用于后续的数据处理和分析。 -
分析数据:
npanalysis会根据输入文件分析数据,并生成一个包含分析结果的 ROOT 文件。- 输出的 ROOT 文件中包含一个名为
PhysicsTree的 TTree,其中每个分支对应一个探测器的校准和处理后的数据。这些数据可以方便地用于进一步的物理分析。 - 如果存在共享库
libNPAnalysis,可以计算需要多个探测器信息的额外物理量,并将这些信息存储在输出文件中,为更深入的物理研究提供数据支持。
示例
假设你已经完成了模拟流程并生成了模拟数据,现在要进行分析:
-
进入分析目录:
cd $NPTOOL/Analysis -
运行分析命令:
npanalysis -D benchmark_gaspard.detector -E 132Sndp_benchmark.reaction -C calibration.txt -R RunToTreat.txt -O benchmark_gaspard -
查看结果:
root -l ShowResult.C
通过以上步骤,你可以完成从模拟到分析的整个工作流程,并生成可用于进一步研究的分析结果。
添加新探测器
由于 NPTool 的高模块性,使用 nptool-wizard 工具添加新探测器非常简单。以下是具体步骤和相关信息:
-
启动
nptool-wizard工具:- 运行可执行文件后,用户需要提供作者信息、联系邮箱和探测器名称。
-
自动生成文件和文件夹:
- 工具会自动在 NPLib 和 NPSimulation 中创建与新探测器相关的文件和文件夹。
- 新探测器的类会被注册到
DetectorManager类中,确保新探测器在框架中完全功能和集成。
-
新探测器的类:
- TNewDetectorData:负责存储实验或蒙特卡洛模拟中获取的原始(未校准)数据。
- TNewDetectorPhysics:执行校准、应用阈值和探测器的物理处理。例如,可以选择在双面硅条探测器(DSSSD)的两侧具有相同能量沉积的事件,或计算位置敏感探测器中电荷分布的质心。
- TNewDetectorSpectra:可选类,用于生成控制谱,这些谱可用于在线应用。
-
NPSimulation 中的几何描述:
- NewDetector 类:负责描述探测器的几何结构,并定义几何中记录粒子信息的敏感元素。
- 几何结构可以是硬编码的,以获得更好的启动性能,也可以从 GDML 文件加载,以便在不同项目中交换几何结构。
-
GDML 支持:
- 支持 GDML 格式,便于在不同项目中共享几何模型。
总结
通过 nptool-wizard 工具,用户可以轻松地在 NPTool 框架中添加新探测器。工具会自动生成必要的文件和类,并确保新探测器与框架的其他部分无缝集成。这种模块化设计使得 NPTool 能够适应低能核物理实验中各种不同的探测器配置需求。
运行技巧
运行灵活性
- 从任意目录运行:
npsimulation和npanalysis可以从任何目录运行,不需要在特定的项目目录下。这使得用户可以在不同的工作目录中灵活地进行模拟和分析。
快速分析
- 快速分析最近的模拟:使用
npanalysis --last-sim可以快速分析最近一次蒙特卡洛模拟的结果。这个命令会自动找到最近生成的模拟数据并进行分析,无需手动指定输入文件。 - 加载自定义分析库:如果当前目录下存在自定义的分析库
libNPAnalysis,npanalysis会自动加载并使用它。如果没有,则分析功能将仅限于构建PhysicsTree。
批处理模式
- 批处理模式运行模拟:
npsimulation可以在批处理模式下运行(无需用户界面),只需提供一个 Geant4 宏文件并用-B标志指定。例如:
这对于在服务器或集群上进行大规模模拟任务非常有用,可以方便地批量处理多个模拟任务。npsimulation -D Example1.detector -E Example1.reaction -B path/to/macro.mac -O FileName
其他技巧
- 灵活的命令行参数:
npsimulation和npanalysis都支持多种命令行参数,用户可以根据需要灵活组合使用。例如,可以指定不同的探测器配置文件、事件生成器文件、输出文件名等。 - 结合使用多个技巧:用户可以将上述技巧结合起来使用,例如在批处理模式下运行模拟,然后使用快速分析功能对结果进行分析,进一步提高工作效率。
物理/事件 生成器
Physics List
- 模块化物理列表:NPTool 使用 Geant4 风格的模块化物理列表。默认参考列表是 Geant4 的电磁物理列表,使用 Option 4(emstandard_opt4),这是最准确的标准和低能模型。用户可以调整次级粒子的截止能量,也可以用 livermore 或 penelope 低能电磁模型替换 emstandard_opt4。
- 附加物理过程:用户还可以激活其他物理过程,如核衰变、离子二元级联、停止物理、额外电磁物理、光学物理、强子弹性物理和强子 QGSP BIC HP 物理。
- 能量损失表:为了确保 npsimulation 和 npanalysis 之间的一致性,npsimulation 会为每个在事件生成器中定义的带电粒子对和几何中使用的材料生成能量损失表文件。在分析真实数据时,NPEnergyLoss 设施可以使用生成的表文件、SRIM 表或 LISE++ 表。
Event Generators
- 专用事件生成器:NPTool 包含为低能核物理社区开发的专用事件生成器。所有 NPTool 事件生成器可以无缝链接,输出可以作为另一个事件生成器的初始条件。
- 粒子属性:粒子的动量和方向在事件生成器之前计算,确保所有粒子在事件开始时发射。
- 添加新事件生成器:由于 NPTool 的模块化设计,如果现有事件生成器不涵盖特定物理情况,可以轻松添加新的事件生成器。
Beam
- 束流生成:Beam 事件生成器是 NPTool 的关键组件之一,用于描述离子束与靶材料的相互作用。它可以表征束流的发射度和能量分布。
- 模型选择:束流信息可以通过高斯解析模型或 ASCII/ROOT 格式的分布文件提供。高斯模型适用于实验前的模拟,而分布文件适用于实验过程中确定束流发射度和能量分布后的情况。
- 束流参数:Beam 事件生成器会为每个事件生成束流能量、方向和在靶入口处的撞击位置。束流在靶中通过 Geant4 能量损失表减速到一个随机选择的相互作用层。
Two-body reactions
- 双体反应:TwoBodyReaction 事件生成器用于描述离子束与靶核之间的双体核反应,其中出射道中有两个核。
- 反应条件:离子束能量来自 Beam 事件生成器的结果,发射的核可以处于基态或任何激发态。任何双体反应只要满足质量和电荷守恒都是有效的。
- 运动学计算:运动学计算是完全相对论的,使用表格质量计算反应的 Q 值。计算的起点是质心系角度,然后根据动量和能量守恒定律推导出发射核的能量和发射角度(相对于入射束方向)。每个出射核的发射角度随后转换为实验室系。
- 微分截面文件:为了描述反应机制(直接反应、复合核等),可以指定一个质心系角度的微分截面文件。对于具有较大束流能量分散的双体反应,还可以指定一个相对于质心系角度和束流能量的双微分截面文件。
Particle and γ-ray decays
- 粒子和伽马衰变:使用 ParticleDecay 和 GammaDecay 事件生成器分别模拟粒子和伽马射线的衰变。
- 参考系:所有计算在衰变核的参考系中进行,然后变换到实验室系。这在伽马射线衰变的情况下隐式地考虑了相对论多普勒效应。
- 角分布模式:对于单个粒子或伽马射线的发射,可以在衰变核参考系中指定一个角分布模式,反映向最终态的跃迁。对于伽马射线衰变,支持级联情况,并可以模拟复杂的衰变方案。对于多粒子发射(不包括伽马射线),也完全支持,并使用 ROOT 相空间算法进行蒙特卡洛相空间计算,生成具有恒定截面的 n 体事件。
总结
- 这个软件需要在 linux 环境下运行,并且具有一定技术需求,我可以负责所有的技术细节,但是涉及具体的物理相关信息需要你们提供指导
- 关于对应探测器的文件配置与数据收集相关内容不是很明确,在设计实验的过程中我们需要更多的讨论与交流才能给出具体流程(我可能不会读表)
- 作为验证理论的模拟工具看上去还挺有用的,而且范围也很广。我个人认为有较多的潜在应用场景

浙公网安备 33010602011771号