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

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

相关推荐
圆头猫爹4 分钟前
第34次CCF-CSP认证第4题,货物调度
c++·算法·动态规划
十五年专注C++开发15 分钟前
hiredis: 一个轻量级、高性能的 C 语言 Redis 客户端库
开发语言·数据库·c++·redis·缓存
hi0_643 分钟前
03 数组 VS 链表
java·数据结构·c++·笔记·算法·链表
碧海蓝天20221 小时前
C++法则21:避免将#include放在命名空间内部。
开发语言·c++
CodeWithMe2 小时前
【读书笔记】《C++ Software Design》第一章《The Art of Software Design》
开发语言·c++
Tanecious.3 小时前
C++--红黑树
开发语言·c++
tanyongxi666 小时前
C++ Map 和 Set 详解:从原理到实战应用
开发语言·c++
飒飒真编程6 小时前
C++类模板继承部分知识及测试代码
开发语言·c++·算法
救赎小恶魔7 小时前
C++11的整理笔记
c++·笔记
岁忧7 小时前
(LeetCode 面试经典 150 题 ) 209. 长度最小的子数组(双指针)
java·c++·算法·leetcode·面试·go