2.0 安装与使用

CERN 成立于 1954 年 9 月 29 日,总部位于瑞士日内瓦的法瑞边境上,欧洲核子研究中心拥有世界上最大的粒子物理学实验室,也是万维网的发源地。CERN 现在已经聘用大约三千名的全职员工。并有来自 80 个国籍的大约 6500 位科学家和工程师,代表 500 余所大学机构,在 CERN 进行试验。这大约占了世界上的粒子物理学圈子的一半。

由 CERN 开发的科学分析 PB 级数据的强大工具 ROOT 已经成为最著名的开源数据分析框架之一,支持 C语言与 python语言,用户可通过ROOT官网查阅手册来学习使用方法。

ROOT 支持全平台,Mac 上安装 ROOT 请使用 homebrew,其他操作系统安装方式参考官方说明

ROOT 有命令行模式、脚本模式、图形界面模式。但是经常使用图形界面会使用户很快遗忘各种类和成员函数的名称和使用方法,这在使用脚本模式处理大量数据时是非常不利的。

基本命令

安装 ROOT 后,在终端中输入root打开,并用.q命令退出:

ROOT 命令行中的元命令都以.开头:

ROOT 也一样有参数可选,如:

-l忽略版本信息直接进入 ROOT。

-q在执行完脚本后自动退出到 shell。

其他参数:

终端中输入root filename打开 ROOT 格式文件或脚本/宏,并于 ROOT 中查看或运行。ROOT 中同样可以使用系统命令,命令前添加.!。e.g.

基本概念

树 TTree

Tree 是 ROOT 中的一个重要概念,它是一种用 Branch 存储和处理大量结构化数据的数据结构。TTree 可以看作是一个表格,其中每一行代表一个事件或数据点,每一列代表一个变量或数据字段。

它是 ROOT 数据分析和可视化的基础,与其他 ROOT 库中的功能和工具相结合,进行数据分析、表达和模拟等操作。在命令行模式中使用.ls和 Tree 的成员函数查看 Tree 的结构和 Branch:

枝 TBranch

TBranch 是 TTree 中存储数据的基本单位,每个分支对应 TTree 中的一列数据。

每个分支都有一个名称(Branch Name),用于唯一标识该分支。分支还有一个数据类型(Data Type),用于指定存储在该分支中的数据类型,如整数、浮点数、字符串等。此外,分支还可以有一个或多个维度(Dimension),用于存储数组类型的数据。

创建和使用分支的步骤:
  • 创建分支:使用 TTree 的Branch()创建一个分支,并指定分支的名称、数据类型和维度等信息。例如,可以创建一个名为energy的分支,存储浮点数类型的能量数据。

  • 填充数据:通过函数Fill()将数据填充到分支中。每次调用Fill(),都会将当前的变量值添加到分支中,并进入下一个事件或数据点。

  • 读取数据:使用 TTree 的SetBranchAddress()设置分支的地址,以便在读取数据时将数据存储到指定的变量中。通过调用GetEntry()读取 TTree 中的事件或数据点,并将数据填充到指定的变量中。

通过使用分支,可以将大量的结构化数据存储在 TTree 中,并以高效的方式进行读写和访问。分支的概念使得数据的存储和处理更加灵活和高效,适用于大型数据集的存储和分析。

e.g. 查看 Branch 的几种方法

画布 Canvas

画布是用来承载绘图的窗口或者页面。在画布上可以绘制一个或多个图形,并设置标题、坐标轴、图例等元素。画布可以个性化,如调整坐标轴的形式、范围、标题名称、轴名称等等。

画板 Pad

画板是画布上的一个独立的绘图区域,可以在上面绘制图形、直方图、函数等。画布上可以包含一个或多个图形区域,每个图形区域可以有自己的坐标轴、标题等属性。通过在画布上创建多个图形区域,可以实现多图并列,或绘制复杂的布局。参见多图绘法

TCanvas是顶层的绘图窗口,而TPadTCanvas中的一个子区域。

canvas V.S. pad

函数命名规范

  • 根类,T开头,如:TLineTTree

  • 数据成员,f开头,如:fTree

  • 成员函数,以首大写字母开头,如:Loop()

  • 常数,k开头,如:kInitialSizekRed

  • 全局变量,g开头,后跟大写字母,如:gEnv。通过全局gROOT,可以访问TROOT的单个实例。 例如要查找名为c1的画布,可以输入: gROOT->GetListOfCanvases()->FindObject("c1")

  • 获取和设置函数,以首字母大写的GetSet开头,如:SetLast()GetFirst()

多命令行模式

ROOT 中也能执行多行复杂指令,执行多行命令请先键入{。e.g.

宏模式

ROOT 宏的名称和保存宏的文件名必须匹配。e.g.

  • 在文本编辑器中创建一个新文件:

  • 保存文件 ROOT 宏,使用宏名称作为文件名:MacroName.c

  • 执行宏:

  1. 在系统提示符处执行 ROOT 宏

  1. 在 ROOT 提示符处执行宏

  1. 从 ROOT 会话中加载宏,然后调用函数

参数传递

当脚本需要传入参数时,需要将脚本名和参数使用引号(引号包括单引和双引)、参数用括号包裹:

对于包含空格或者特殊字符的参数parameter,建议使用双引号包裹:

后台运行

有时脚本filename的运行时间可能会长达几个小时或者几天,为避免终端断连后程序退出,ROOT 支持设置后台运行,并保存输出日志log.out

批量处理模式

批量模式意味着图片将不会以 GUI 的窗口形式出现,而是在后台完成一系列操作,这非常适用于长时间大作业的处理,打开方式是在宏中添加语句:gROOT->SetBatch(kTRUE)

在脚本/宏中使用 ROOT 成员函数

在编译语句中添加 ROOT 库:

图形界面模式

ROOT 库提供图形界面工具,称为 ROOT GUI,用于交互式地进行数据分析、绘图和可视化,使用户可以通过鼠标和键盘与 ROOT 库进行交互。除了菜单,你可以以图形化查看 tree 的结构,还可以在 canvas 上右击任何位置(轴、坐标点、画布、标题等)来查看和更改它们的成员函数。打开 UI 界面的命令是:


参考

最后更新于