TTree是ROOT的一个存储数据的类,大概可以理解成一个二维数据表格。每一个Branch代表一种属性(或者一列),Entry代表一个事例(或者一行)。用户可以通过读取每一Entry中的特定Branch,来统计一个样本的某个属性的分布。
下面来写一棵tree
首先要创造(或打开)一个文件
myfile=ROOT.TFile(“tree.root”,”RECREATE”)
对于第二个参数,有如下选项:
“RECREATE”:创建一个ROOT文件,如果该文件已存在,则替换它
“CREATE”:创建一个ROOT文件,如果该文件已存在,会提示无法创建
“UPDATE”:更新ROOT文件
“READ”:打开ROOT文件进行读取
创建一棵树
mytree=ROOT.TTree(“tree”,”the tree title”)
创建分支
tree.Branch(“branch0”,branch0,“branch0/F”)
其中“branch0”是branch的name
branch0是branch数据存储的位置
“branch0/F”表明数据存储的类型,F表示float
填充树
mytree.Fill()
将树写入文件
mytree.Write()
查看一棵树
ROOT.tree.Print() 查看树结构的摘要
ROOT.tree.Show() 显示树条目的内容
ROOT.tree.Scan() 显示树条目的各分支值
ROOT.tree.GetEntries() 获取树条目数
TBrowser b 打开交互式浏览界面
读取一棵树
for entry in myTree:
print(entry.branchName) #在pyroot,用for遍历语句去读取一棵树中的数据
例子:
from array import array #引入array模块,array是python中的数组
import ROOT #在python中引入ROOT
myFile = ROOT.TFile("file.root", "RECREATE")
tree = ROOT.TTree("tree", "The Tree Title")
var = array('f', [ 0 ]) #创建数组,用来存储数据
tree.Branch("branch0", var, "leafname/F");
for iEntry in range(1000):
var[0] = 0.3 * iEntry #产生数据
tree.Fill() #每产生一个数据,就往tree里面填充
tree.Write() #把tree存储到文件中
myFile.Close() #关闭文件
#这样一棵树就算建好了,以下是从tree中读取数据
myFile = ROOT.TFile("file.root")
myTree = myFile.tree #将myFile中的tree赋值给myTree
for entry in myTree:
print(entry.branch0) #用for遍历读取数据