CERN ROOT 的 Jupyter 环境
前言 ¶
ROOT 是由 CERN 开发的用于实验大数据处理的框架,主要应用于核物理和高能物理领域。ROOT 主要由 C++ 编写,但较新版本中也提供了 Python 的借口,通过引入pyroot实现。
一般而言,通常在命令行输入root后,通过TBrowser浏览文件;或者使用 C++ 编写数据处理的函数,在 ROOT 中进行调用。而使用 Jupyter 来编写 ROOT 程序在学习和开发阶段较为便利。由于预编译版本的 ROOT 已经绑定了特定 Python 版本,有可能与本机的 Python 版本不匹配,所以通过源代码编译安装的方式能够避免绝大部分的兼容性问题。
安装 ¶
本机环境
Ubuntu 20.04.6
Python 3.10.11
目前 ROOT 的最新版本为 6.28,但为了兼容本机上的 Garfield Plus Plus,因此选择 6.26 版本。在 ROOT Releases 页面下载对应版本的安装包。
依赖 ¶
在 ROOT Install Dependencies 查看对应系统版本要求的依赖,对于 Ubuntu 使用一行命令解决必备依赖:
1 | sudo apt-get install dpkg-dev cmake g++ gcc binutils libx11-dev libxpm-dev \ |
其余推荐依赖按照需求进行安装,我只需要 ROOT 的基础功能,因此没有安装其他依赖,在后续编译过程中可以设置部分编译选项加快速度。此外推荐安装 ccmake 方便后续编译。
编译 ¶
解压下载好的安装包,新建与安装包同级的目录 build,进入目录后进行编译安装:
1 | tar -zxvf root_v6.26.10.source.tar.gz |
$INSTALL_PREFIX是需要安装到的目录,CMAKE_CXX_STANDARD根据自己的 gcc 版本和需要来选择,可以通过以下命令查看:
1 | > gcc -E -dM - </dev/null | grep "STDC_VERSION" |
2017 代表支持 c17 标准。ccmake 可以生成一个在命令行的简略界面方便我们对编译选项进行调整。调整完成后根据下方的提示操作,多次按c进行确认直至出现Press [g] ...的提示,此时可以按g生成相关文件,随后进行编译安装:
1 | make -j 12 |
-j参数后面是使用的线程数,我的计算机有 8 核 16 线程,16GB 内存。不推荐使用全部线程,因为编译会占用很大内存,可能会导致编译失败,可以根据线程数和内存大小酌情调整。最后修改自己的 shell 配置文件(例如.bashrc,.zshrc),在适当位置添加:
1 | source $INSTALL_PREFIX/bin/thisroot.sh |
添加内核 ¶
使用下列命令安装 Python 所需的包:
1 | pip install jupyter metakernel |
安装后有两种方式可以在 Jupyter 中使用 ROOT:
- ROOT-flavored 的 notebook
1 | root --notebook |
- 全功能的 Jupyter Lab(推荐)
1 | cp -r $INSTALL_PREFIX/etc/notebook/kernels/root ~/.local/share/jupyter/kernels |
关于 Jupyter Lab 的相关配置,可以查看 服务与插件。
试用 ¶
一个在 Jupyter ROOT Block 中绘制直方图的示例:
1 | TCanvas c; |

问题 ¶
- WSL 中使用
new TBrowser将会开启 HTTP 服务而不是窗口[3]
在家目录(例如/home/fox)下创建.rootrc文件并写入:
1 | Browser.Name: TRootBrowser |
- ROOT 6.28 版本以下使用 Python 3.11 及以上版本编译安装时报错 [4,5,6]
1 | [.....]/CPPOverload.cxx:5:10: fatal error: 'code.h' file not found |
修改 CPPOverload.cxx 文件,将原本的内容:
1 |
修改为:
1 |
这是因为 Python 3.11 及以上版本将其移动到了 Include/cpython 中,已经被 Python.h 包含。







