collage
Geant4 是一个免费开源工具包,用于模拟粒子穿过物质的过程。它采用 C++ 语言编写,并为用户提供了广泛的工具,供其在各类应用中使用。Geant4可用于精确模拟粒子穿过物质的过程。该工具包涵盖了模拟过程的所有方面:

  • 系统的几何结构,
  • 涉及的材料,
  • 关注的基本粒子,
  • 初级事件的生成,
  • 粒子在材料和电磁场中的追踪,
  • 控制粒子相互作用的物理过程,
  • 灵敏探测器组件的响应,
  • 事件数据的生成,
  • 事件和径迹的存储,
  • 探测器及粒子轨迹的可视化,以及在不同细节和精细度层面上对模拟数据进行捕获与分析。

用户既可以构建独立的应用程序,也可以构建基于其他面向对象框架的应用程序。无论哪种情况,该工具包都能为用户提供支持,涵盖从最初的问题定义,到最终生成用于发表的结果和图形的整个流程。为此,该工具包内置了:

  • 用户界面,
  • 内置的控制例程
  • 命令解释器

这些组件在模拟过程的各个层面上均可发挥作用。

Geant4 的核心是一套丰富的物理模型,旨在处理粒子在极宽的能量范围内与物质发生的相互作用。其数据和专业知识汇集自世界各地的诸多来源;从这一角度来看,Geant4 相当于一个知识宝库,囊括了目前人类对粒子相互作用所知的大部分知识。

Geant4 采用 C++ 语言编写,并充分利用了先进的软件工程技术和面向对象技术,以实现代码的透明性。例如,截面数据的输入或计算方式,与这些数据的使用或访问方式是相互分离的。用户可以对这两项功能进行重载(overload)。同样,终态(final state)的计算过程也可以根据能量范围、粒子类型和材料属性的不同,拆分为多种可供选择或相互补充的模型。为了构建特定的应用程序,作为物理学家的用户可以从上述选项中进行选择,并在工具包提供的“用户动作类”(user action classes)中编写相应的代码。以往的模拟代码存在一个严重问题,即难以添加新的或变体的物理模型;由于基于过程(procedure-based)的代码在规模、复杂度和相互依赖性方面不断膨胀,导致开发工作变得异常困难。相比之下,面向对象的方法通过为所有物理模型定义统一的接口和通用的组织原则,有助于管理代码的复杂性并限制其相互依赖性。在此框架下,模型的功能更易于识别与理解;此外,新模型的创建与添加是一套定义明确的流程,仅需对现有代码进行极少甚至无需任何修改。

Geant4 的历史

这些构想最初源于 1993 年 CERN(欧洲核子研究中心)和 KEK(日本高能加速器研究机构)各自独立开展的两项研究。这两个团队都致力于探索如何运用现代计算技术,来改进当时基于 FORTRAN 语言的 Geant3 模拟程序。1994 年秋季,双方的工作正式合并;随后,一份名为 RD44 的正式提案被提交至 CERN 的探测器研发委员会,提议构建一套完全基于面向对象技术的新型程序。这项倡议逐渐发展成为一项大型国际合作项目,汇聚了来自欧洲、日本、加拿大和美国众多科研院所及高校的物理学家、程序员和软件工程师,共同参与各类高能物理实验。该项目的目标是编写一套探测器模拟程序,使其具备必要的功能与灵活性,从而满足下一代亚原子物理实验的需求。随着人们逐渐意识到此类工具同样能造福核物理、加速器物理、空间物理及医学物理等领域,该项目的最初应用范围迅速得以拓展,并吸引了更多来自这些科学领域的科研人员加入其中。

RD44 项目堪称一项开创性的尝试,旨在针对基于 C++ 语言的现代面向对象(OO)环境,对 CERN 的一套核心软件组件进行重新设计。研发阶段于 1998 年 12 月宣告完成,并发布了首个正式生产版本。随后,该合作项目正式更名为 Geant4,并依据一份正式的《谅解备忘录》(MoU)重新确立了合作框架;该备忘录由众多曾参与 RD44 项目的国家级科研院所、实验室及大型高能物理实验团队共同签署。这份协议明确规定了在软件生产阶段的项目管理、维护与用户支持工作,以及该工具包后续的持续开发与优化事宜。该协议每两年自动续签一次(默示续约),并确立了一套由“合作委员会”(CB)、“技术指导委员会”(TSB)及若干工作组共同构成的合作管理架构。2006 年 2 月,一份新的《谅解备忘录》正式生效;据此,原有的“合作委员会”(CB)与“技术指导委员会”(TSB)分别更名为“监督委员会”(OB)与“指导委员会”(SB)。

如今,Geant4 合作项目已充分汲取了众多贡献者在物理探测器及物理过程的蒙特卡洛模拟领域所积累的丰富经验。尽管地理分散式软件开发和大规模面向对象系统如今已不再是新鲜事物,但就代码的规模与范畴以及贡献者的人数而言,Geant4 很可能代表了企业界之外同类项目中规模最大、抱负最为宏大的一个项目。清晰的整体问题分解造就了明确的领域层级结构。Geant4 软件的每一个部分——对应于一个可发布的组件(库)——均由一个专家工作组独立负责管理。此外,针对测试与质量保证、软件管理以及文档管理等各项具体工作,也各设有一个专门的工作组。每个工作组均由一名发布协调员牵头负责。这种在相对众多的人员之间贯彻落实的责任分配机制,构建起了一种高效的支持体系,使得外部用户能够直接向相应的专家咨询并寻求解答。

Geant4 功能概述

Geant4 的类类别图如图所示。
Geant4 类类别

图底部的类别几乎被所有上层类别所使用,构成了该工具包的基础。

Global(全局)类别涵盖了单位制、常数、数值计算以及随机数处理等内容。

Materials(材料)和 Particles(粒子)这两个类别,实现了描述粒子与材料物理特性所需的各项功能,从而支持对粒子与物质相互作用的模拟。

Geometry(几何)模块提供了描述几何结构以及让粒子高效穿越该结构的能力。

位于上述类别之上的是用于描述粒子径迹追踪及其所经历的物理过程的类别。Track(径迹)类别包含了用于描述径迹(Tracks)和步长(Steps)的类;这些类被 Processes(过程)类别所使用,而后者包含了各类物理相互作用模型的具体实现,涵盖了轻子、光子、强子及离子的电磁相互作用,-DGEANT4_USE_GDML=ON 以及强相互作用。

所有的物理过程均由 Tracking(追踪)类别负责调用;该类别管理着这些物理过程对粒子径迹状态演化所产生的贡献,并负责在灵敏体(Sensitive Volumes)内提供用于生成“击中”(Hits)数据及进行数字化处理所需的信息。

再往上层,Event(事件)类别负责以径迹为基础对单个事件进行管理;而 Run(运行)类别则负责管理一系列共享相同束流与探测器配置的事件集合。此外,Readout(读出)类别提供了处理粒子“堆积”(Pile-up)现象的功能。

最后,位于最上层的各类功能模块综合运用了上述所有类别,并通过抽象接口与工具包外部的设施进行交互,从而提供了可视化、数据持久化以及用户界面等方面的能力。

Ubuntu24.04安装Geant4

  • 一、准备工作

1)安装包下载

Geant4安装需要先下好软件包和所需要的截面数据包,Ubuntu系统选择Linux发行版。新手请注意,下载的格式后缀为“tar.gz”。下载完之后请解压好。
下载安装包
接着下载物理截面包,建议全部下载,正好15个(版本更新,包也会更新,个数可能会不一样)
下载数据包
物理截面包下好之后,记得全部解压放在一个名为data的文件夹里,留以待用。
新手解压的时候请注意:不要同名文件夹套一个一模一样的文件夹,例如解压后的G4NDL4.6文件里还有一个G4NDL4.6文件夹,这是不行的,正常的情况应该是G4NDL4.6文件里直接能够看到截面数据文件。如果使用终端tar命令解压就不会出现这种情况。

2)前置安装准备

(1)Geant4需要依赖Cern ROOT,参考ufans.top中ROOT的安装与介绍
(2)安装ROOT的过程会安装名称为“build-essential”包,它包含了GNU编辑器集合,GNU调试器,和其他编译软件所必需的开发库和工具,如cmake、gcc、g++等,这里不重复介绍。可以按照提示补充安装。

二、具体安装过程

1)创建Geant4文件夹,假设路径为/home/xxx/Geant4,xxx表示你的路径。
2)将安装包geant4-v11.4.1在Geant4目录下解压缩,得到安装包目录为/home/xxx/Geant4/geant4-v11.4.1
3)在Geant4目录下创建编译目录build,得到编译目录为/home/xxx/Geant4/build
4)在Geant4目录下创建数据目录data,将截面数据包放入并使用tar命令解压缩,得到数据目录为/home/xxx/Geant4/data
5)进入到build目录,点空白处右键打开终端,输入

cmake \
  -DCMAKE_INSTALL_PREFIX=/home/xxx/Geant4/build \
  -DGEANT4_USE_OPENGL_X11=ON \
  -DGEANT4_USE_RAYTRACER_X11=ON \
  -DGEANT4_USE_QT=ON \
  -DGEANT4_USE_GDML=ON \
  -DGEANT4_BUILD_MULTITHREADED=ON \
  -DGEANT4_INSTALL_DATADIR=/home/xxx/Geant4/data \
  /home/xxx/Geant4/geant4-v11.4.1

如果设置正常会出现编译过程提示。

Ubuntu24.04 可能会出现提示错误:failed to find XercesC
解决方法:下载libxerces-c-dev安装包,使用sudo dpkg -i libxerces-c-dev_3.2.4+debian-1.2ubuntu2_amd64.deb安装。
如果没有忽略即可。

6)编译成功后,继续输入:

make -j8

数字8视乎你的cpu能力自己设置。

7)完成后继续输入以下命令安装:

make install

安装成功后,会在你build文件夹的bin目录下找到新生成的geant4.sh,表示编译安装成功。8)配置环境变量

echo 'source /home/xxx/Geant4/build/bin/geant4.sh' >> ~/.bashrc
source ~/.bashrc

8)验证安装

(1)验证数据包是否正确路径,终端输入:

ls ${G4DATA}/

应该看到类似这样的目录列表:

G4ABLA3.3          G4NDL4.7.1          G4PII1.3             
G4SAIDDATA2.0 G4CHANNELING2.0    G4NUDEXLIB1.0      
G4PhotonEvaporation6.1.2  G4TENDL1.4 G4EMLOW8.8        
G4PARTICLEXS4.2     G4RadioactiveDecay6.1.2   G4URRPT1.1
G4ENSDFSTATE3.0    G4RealSurface2.2

如果没有,可以手动设置目录:

export G4DATA=/home/xxx/Geant4/data

并将其添加~/.bashrc末尾。

(2)检查版本

geant4-config --version

期望输出: 11.4.1

(3)检查数据集路径是否正确

geant4-config --datasets

期望输出:见上。

(3)检查 Qt 是否启用

geant4-config --features

期望看到 qt 和 opengl-x11 后面标注yes

三、运行一个实例,详细阅读文档,开始你的学习。

1)拷贝你的安装包里一个实例/home/xxx/Geant4/geant4-v11.4.1/examples/basic/B1
到/home/xxx/Geant4目录下,进入到/home/xxx/Geant4/B1目录,创建build目录

2)进入到/home/xxx/Geant4/B1/build目录,右键打开终端,依次输入

cmake ../
make -j4
./exampleB1

正常的话会看到
exampleB1
The end.

最后修改:2026 年 04 月 13 日
如果觉得我的文章对你有用,请随意赞赏