ROOT 中的基本概念

树 TTree

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

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

->Show()   
# 使用该命令可以指定查看某个编号下的branch,例如Show(24)           
# 注意:展示的数据只会保留6位有效数字,在root中仍以本身的数值存储
->Print()  
# 依次打印出每个branch的数据->Scan()   
# 每次扫描25行tree中的数据           
# ->用于通过指针访问对象的成员,这三个函数都是Tree这个类的成员函数

枝 TBranch

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

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

创建和使用分支的步骤:

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

画布 Canvas

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

画板 Pad

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

文件串联与合并

TChain* ch = new TChain("TreeName");    // 合并读取/home/username/data/目录下的所有root
ch->Add("/home/username/data/*.root");
[zhangzh@node01 gamma_4300M_10deg_700m_10GeV]$ hadd total.root nonoise*.root
hadd Target file: total.root
hadd compression setting for all output: 1
hadd Source file 1: nonoise_pix5pe14pmt5_CER100001.root
hadd Source file 2: nonoise_pix5pe14pmt5_CER100002.root
hadd Source file 3: nonoise_pix5pe14pmt5_CER100003.root
hadd Target path: total.root:/
[zhangzh@node01 gamma_4300M_10deg_700m_10GeV]$ ls
nonoise_pix5pe14pmt5_CER100001.root  nonoise_pix5pe14pmt5_CER100005.root  nonoise_pix5pe14pmt5_CER100009.root
nonoise_pix5pe14pmt5_CER100002.root  nonoise_pix5pe14pmt5_CER100006.root  nonoise_pix5pe14pmt5_CER100010.root
nonoise_pix5pe14pmt5_CER100003.root  nonoise_pix5pe14pmt5_CER100007.root  total.root
nonoise_pix5pe14pmt5_CER100004.root  nonoise_pix5pe14pmt5_CER100008.root