Tree 是 ROOT 中的一个重要概念,它是一种用 Branch 存储和处理大量结构化数据的数据结构。TTree 可以看作是一个表格,其中每一行代表一个事件或数据点,每一列代表一个变量或数据字段。
它是 ROOT 数据分析和可视化的基础,与其他 ROOT 库中的功能和工具相结合,进行数据分析、表达和模拟等操作。在命令行模式中使用.ls和 Tree 的成员函数查看 Tree 的结构和 Branch:
->Show()
# 使用该命令可以指定查看某个编号下的branch,例如Show(24)
# 注意:展示的数据只会保留6位有效数字,在root中仍以本身的数值存储
->Print()
# 依次打印出每个branch的数据->Scan()
# 每次扫描25行tree中的数据
# ->用于通过指针访问对象的成员,这三个函数都是Tree这个类的成员函数
TBranch 是 TTree 中存储数据的基本单位,每个分支对应 TTree 中的一列数据。
每个分支都有一个名称(Branch Name),用于唯一标识该分支。分支还有一个数据类型(Data Type),用于指定存储在该分支中的数据类型,如整数、浮点数、字符串等。此外,分支还可以有一个或多个维度(Dimension),用于存储数组类型的数据。
创建和使用分支的步骤:
Branch()创建一个分支,并指定分支的名称、数据类型和维度等信息。例如,可以创建一个名为energy的分支,存储浮点数类型的能量数据。Fill()将数据填充到分支中。每次调用Fill(),都会将当前的变量值添加到分支中,并进入下一个事件或数据点。SetBranchAddress()设置分支的地址,以便在读取数据时将数据存储到指定的变量中。通过调用GetEntry()读取 TTree 中的事件或数据点,并将数据填充到指定的变量中。通过使用分支,可以将大量的结构化数据存储在 TTree 中,并以高效的方式进行读写和访问。分支的概念使得数据的存储和处理更加灵活和高效,适用于大型数据集的存储和分析。
画布是用来承载绘图的窗口或者页面。在画布上可以绘制一个或多个图形,并设置标题、坐标轴、图例等元素。画布可以个性化,如调整坐标轴的形式、范围、标题名称、轴名称等等:
画板是画布上的一个独立的绘图区域,可以在上面绘制图形、直方图、函数等。画布上可以包含一个或多个图形区域,每个图形区域可以有自己的坐标轴、标题等属性。通过在画布上创建多个图形区域,可以实现多图并列,或绘制复杂的布局。
TChain函数:用于若干格式一致的 ROOT 文件串联读取。E.g.TChain* ch = new TChain("TreeName"); // 合并读取/home/username/data/目录下的所有root
ch->Add("/home/username/data/*.root");
hadd命令:用于文件合并。E.g.[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