• AlmaLinux (兼容centos)安装Geant4与ROOT


    AlmaLinux 介绍

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

    安装 AlmaLinux

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

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

    AlmaLinux安装

    安装依赖软件包

    Cmake 安装

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

    sudo dnf install cmake
    
    • 1

    expat 安装

    sudo dnf install expat.x86_64 expat expat-devel
    
    • 1

    qt5core 安装

    sudo dnf install 'qt5*-devel.x86_64'
    
    • 1

    安装 X11、Xmu 和 Motif 库

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

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    编译 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
    
    • 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

    以上就编译好了

    配置环境变量

    1. 执行vi ~/.bashrc命令,把下面内容添加到结尾。
    # Geant4配置
    export GEANT4=/path/to/geant4-v11.1.1-build
    source $GEANT4/bin/geant4.sh
    
    • 1
    • 2
    • 3
    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
    
    • 1

    这里无法使用 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()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    运行结果

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

    直接使用 root 也是可以的。

    直接使用root截图

    END

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

  • 相关阅读:
    python 数字字符识别验证码
    java版工程管理系统Spring Cloud+Spring Boot+Mybatis实现工程管理系统源码
    Spark 离线开发框架设计与实现
    powershell和cmd对比
    java计算机毕业设计停车场信息管理系统源码+系统+数据库+lw文档+mybatis+运行部署
    浅识k8s中的准入控制器
    计算机毕业设计springboot+vue基本微信小程序的码高教育课后在线小程序
    HttpUtils带连接池
    c++ Reference Collapsing
    ALV概念讲解
  • 原文地址:https://blog.csdn.net/weixin_45886778/article/details/133746930