当前位置: 首页 > news >正文

AlmaLinux (兼容centos)安装Geant4与ROOT

AlmaLinux 介绍

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

安装 AlmaLinux

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

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

AlmaLinux安装

安装依赖软件包

Cmake 安装

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

sudo dnf install cmake

expat 安装

sudo dnf install expat.x86_64 expat expat-devel

qt5core 安装

sudo dnf install 'qt5*-devel.x86_64'

安装 X11、Xmu 和 Motif 库

sudo dnf install libX11-devel libXmu-devel motif-devel

XercesC 安装

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

Geant4历史版本局部图片

可以看到,最新版的是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文件夹存放数据集,这里我就直接创建,到时候复制就好了。

# 把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 文件夹内进行执行)。

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成功示例

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

  1. make -j

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

成功示例(copy人家的)

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

  2. 将数据包 copy 到 Geant 中

cp -r /path/to/data /path/to/geant4-v11.1.1-build/share/Geant4

以上就编译好了

配置环境变量

  1. 执行vi ~/.bashrc命令,把下面内容添加到结尾。
# 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 ..命令

cmake成功示例

  1. 运行make -j

make -j成功示例

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

  1. 运行./exampleB1命令

成功示例

ROOT 安装

命令:

sudo dnf install root python3-root

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

示例:

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 也是可以的。

直接使用root截图

END

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

http://www.lryc.cn/news/190564.html

相关文章:

  • FPGA面试题(2)
  • 【C++ Primer Plus学习记录】指针——使用new来创建动态数组
  • 移动app广告变现,对接广告联盟还是选择第三方聚合广告平台?
  • ARM 按键控制 LED灯,蜂鸣器,风扇
  • VirtualBox Ubuntu扩展虚拟机磁盘空间
  • C#开发的OpenRA游戏之电力系统之二
  • Java架构师基础框架设计
  • tortoise创建本地仓库
  • 【FreeRTOS】【STM32】03 FreeRTOSConfig.h头文件简介与修改
  • VScode商店无法访问
  • 【UnityUGUI】复合控件详解,你还记得多少
  • ubuntu下使用gcc编译c程序: “error: stray ‘\357’ in program“
  • LeetCode 143.重排链表
  • 不做决策的“RPA机器人”,不是合格的“数字化劳动力”
  • 网页开发中使用highlight.js实现代码高亮 + 行号
  • 访问Apache Tomcat的manager页面
  • Ubuntu 20.04.6 LTS repo int 提示/usr/bin/env: “python“: 权限不够
  • python随手小练5
  • 一分钟!图片生成32种动画;Adobe绘画工具大升级;复盘Kaggle首场LLM比赛;VR科普万字长文 | ShowMeAI日报
  • [Framework] Android Handler 工作原理
  • KITTI数据集中的二进制激光雷达数据(.bin文件)转换为点云数据(.pcd文件)(C++代码)
  • 全球AI人工智能领袖:Anthropic联合创始人丹妮拉·阿莫迪!
  • CoT 的方式使用 LLM 设计测试用例实践
  • 神秘的锦衣卫
  • Springboot中使用Redis
  • 超声波波形生成电路设计
  • C#和JS交互之Microsoft.ClearScript.V8(V8引擎)
  • 9月活动回顾(免费领取PPT)|火山引擎DataLeap、ByteHouse多位专家带来DataOps、实时计算等前沿技术分享!
  • salesforce的按钮执行js代码如何链接到apex代码
  • C语言 —— 操作符