2016-07-07 67 views
1

我不确定这个问题实际上是关于指针,因为我不是很确定它们是什么,但我必须使用python读取一些.root文件。以下是该文件的截图。从根python读取指针

enter image description here

我设法读取数字,但我无法读取向量(或指针 - 我不知道它们是什么)。我是新来的根。这是代码的读取部分,其中t1是文件内的TTree。

a.append(root.TChain("t1")) 

for chain in a: 
    chain.Add(input) 
entries = a[0].GetEntries() 

这是一些数字变量(不是那些在图片)的读数:

import pandas as pd 
entries = chain[0].GetEntries() 

xp_pri = [] 
yp_pri = [] 
X_shower = [] 
Y_shower = [] 

for k in range(entries): 
    for a in chain: 
     a.LoadTree(k) 
     a.GetEntry(k) 

     xp_pri = xp_pri + [chain[0].xp_pri] 
     yp_pri = yp_pri + [chain[0].yp_pri] 
     X_shower = X_shower + [chain[0].X_shower/10**10] 
     Y_shower = Y_shower + [chain[0].Y_shower/10**10] 

所以我的问题是我怎么读向量,因为如果我使用同样的方法:链[0] .xp_pri,程序停止工作?

+0

您应该包括一个完整的例子(包括任何进口),否则就很难得到解决你的问题的上下文。 – Ajean

回答

0

创建

myvec = ROOT.std.vector('float')() 

myvec = ROOT.std.vector('int')() 

然后:

chain.SetBranchAddress("the_branch_name",myvec) 

后:

chain.GetEntry(some_entry_number) 

myvec会将包含事件编号some_entry_number值。

你的其他选择是使用root_numpy它也能够检索矢量。