AlmaLinux (兼容centos)安装Geant4 与 ROOT

AlmaLinux 介绍

AlmaLinux OS 是一个开源、社区驱动的 Linux 操作系统,它填补了因 CentOS 稳定版本停止维护而留下的空白,同时更加强大。

安装 AlmaLinux

这个我用的是 windows 子系统进行安装

首先打开微软商店,然后搜索AlmaLinux,选择AlmaLinux9安装。

安装依赖软件包

Cmake 安装

这里Cmake我是直接安装的,并没有自己编译,直接安装的版本完全够用。

复制代码
sudo dnf install cmake

expat 安装

复制代码
sudo dnf install expat.x86_64 expat expat-devel

qt5core安装

arduino 复制代码
sudo dnf install 'qt5*-devel.x86_64'

安装X11、Xmu和Motif库

复制代码
sudo dnf install libX11-devel libXmu-devel motif-devel

XercesC 安装

XercesC在AmlaLinux中并不可以直接安装(也可能是我没找到),这里通过源码进行编译安装。

  1. xerces-c网站获取下载链接
  1. 到终端使用命令wget download-link进行下载

  2. 使用命令解压tar -zxvf 文件名.tar.gz对文件进行解压

  3. cd 下载后的文件夹

  4. 执行./configure命令

  5. 执行make -j线程数,如make -j8

  6. 执行sudo make install

这样就是安装好了。

安装Geant4

这里说一下,我一开始编译的是最新版的Geant4-11.1.2(截止到2023.10.10),但是报错,这里我就降低一个版本。

下载Geant4源码压缩文件与数据压缩文件

打开Old Geant4 releases

可以看到,最新版的是11.1.2,所以我就下载11.1.1,这里对11.1.1 进行点击,打开网页页面如下图,这里获取下载链接方法与XercesC安装获取下载链接方法相同,不再过多赘述。

然后就在终端进行wget下载。

注意:这里我把Geant4的源码压缩包与dataset文件在同一文件夹下

这里对于数据集的下载我是mkdir dataset一个文件夹,然后进入dataset文件夹中,对数据集文件进行wget,这里数据集的下载链接获取同上。

这里可以使用解压命令对Geant4的压缩文件进行解压。

看上图可以发现我也创建了一个data文件夹,这时候我把dataset里面的数据集压缩文件复制到data文件夹中,这里dataset文件夹是做备份用的,防止以后用。这里之所以创建一个data文件夹是因为后面编译好的Geant4还需要data文件夹存放数据集,这里我就直接创建,到时候复制就好了。

bash 复制代码
# 把dataset中的数据集压缩文件复制到data文件夹
cp -r /path/to/dataset/*tar.gz /path/to/data

# 批量解压tar.gz文件 
for file in *.tar.gz; do tar -zxvf "$file"; done

# 批量删除tag.gz文件
rm -rf *tar.gz

编译Geant4

注意都是在Geant-v11.1.1-build内操作

  1. cmake

当解压好Geant4压缩文件后,创建一个Geant-v11.1.1-build文件夹(可以根据自己的文件创建,甚至创建为Geant4-build都可以,没有要求),然后使用下面命令进行编译(cd到Geant-v11.1.1-build文件夹内进行执行)。

ini 复制代码
cmake -DCMAKE_INSTALL_PREFIX=/path/to/geant4-v11.1.1-build -DGEANT4_BUILD_MULTITHREADED=ON -DGEANT4_USE_GDML=ON -DGEANT4_USE_QT=ON -DGEANT4_USE_OPENGL_X11=ON -DGEANT4_USE_RAYTRACER_X11=ON -DGEANT4_USE_XM=ON /path/to/geant4-v11.1.1

注意/path/togeant4-v11.1.1-build文件夹的父路径,需要自己替换/path/to/geant4-v11.1.1-build为源码文件夹,/path/to/geant4-v11.1.1-build为要安装的位置,这里pwd一下自己进行路径替换。如geant4-v11.1.1-build/home/admin/app下,那么path/to就是/home/admin/app,下面遇到的所有情况同理。

cmake成功后的示例,只要中间不爆红,不退出编译就行。

  1. make -j

再执行 make -j(j为并行核数),如make -j8

  1. make install 最后执行make install,就会将安装文件写入,指定的安装文件夹中。

  2. 将数据包copy到Geant中

bash 复制代码
cp -r /path/to/data /path/to/geant4-v11.1.1-build/share/Geant4

以上就编译好了

配置环境变量

  1. 执行vi ~/.bashrc命令,把下面内容添加到结尾。
bash 复制代码
# Geant4配置
export GEANT4=/path/to/geant4-v11.1.1-build
source $GEANT4/bin/geant4.sh
  1. 执行source ~/.bashrc命令

测试

进入存放例子的文件夹,复制一个例程。

我的存放路径是/path/to/geant4-v11.1.1-build/share/Geant4/examples/basic/B1

这里我复制的是B1,其在/path/to/geant4-v11.1.1-build/share/Geant4/examples/basic路径下。basic文件夹是基本的例程,有B1~B5的5个例程。

测试步骤:

  1. 进入复制的B1文件夹中
  2. 创建一个build文件夹并进入build文件夹:mkdir build && cd build
  3. 运行cmake ..命令
  1. 运行make -j

可以看到已经生成一个exampleB1文件。

  1. 运行./exampleB1命令

ROOT安装

命令:

复制代码
sudo dnf install root python3-root

这里无法使用jupyter,发现其依赖gui,暂时不可用,但是可以在python上使用ROOT,运行python3就可以import ROOT,对于在该系统下的jupyter使用ROOT,后面解决了再出文章。

示例:

ini 复制代码
from ROOT import TH1D,TCanvas
# 创建一个叫c1的画布,标题为Histograms Exmple,画布宽600,高900
c1 = TCanvas("c1", "Histograms Exmple", 800, 600)
# 创建一个叫h1d1,标题为TH1D Exmple,把[-10,10]区间分为200个小区间的直方图
h1d1 = TH1D("h1d1", "TH1D Exmple", 200, -10, 10)
# FillRandom 用于高斯分布、泊松分布等填充。
h1d1.FillRandom("gaus", 10000)  # 使用gaus,并填充10000个数据
h1d1.Draw()

个人感觉如果使用python来写root没有docker里面构建jupyter环境方便,而且在jupyter中可以写C++的ROOT代码。(需要Docker文件构建jupyter环境的私我)

直接使用root也是可以的。

END

好了,本期到此结束,我们下期再见

相关推荐
白总Server9 分钟前
GaussDB 分布式数据库调优(架构到全链路优化)
java·网络·c++·架构·go·scala·数据库架构
whoarethenext43 分钟前
C++/OpenCV地砖识别系统结合 Libevent 实现网络化 AI 接入
c++·人工智能·opencv
Antonio9151 小时前
【Linux】Linux基础I/O
linux·c++
虾球xz1 小时前
CppCon 2015 学习:C++ devirtualization in clang
开发语言·c++·学习
呆呆的小鳄鱼1 小时前
IO之详解cin(c++IO关键理解)
linux·c语言·c++
看到我,请让我去学习1 小时前
C++核心编程(动态类型转换,STL,Lanmda)
c语言·开发语言·c++·stl
羚羊角uou2 小时前
【C++】模拟实现map和set
java·前端·c++
泽02022 小时前
C++之模板进阶
开发语言·c++·算法
byte轻骑兵4 小时前
【C++特殊工具与技术】优化内存分配(五):显式析构函数的调用
开发语言·c++
谷雨不太卷5 小时前
AVL树的实现
数据结构·c++·算法