cern root中的pyroot--TTree

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遍历读取数据

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值