1

我想知道如何使用 Python 在 ROOT 文件中向我的 TTree 之一添加新分支。

with root_open('MC_output.root', mode='a') as myfile:
    new_column = numpy.array(gb_weights , dtype=[('weight', 'f8')])
    root_numpy.array2tree(new_column , tree=myfile.TrainTree)
    new_column_test = numpy.array(gb_weights_test , dtype=[('weight', 'f8')])
    root_numpy.array2tree(new_column_test, tree=myfile.TestTree)
    myfile.write()
    myfile.close()

在此示例中,TrainTree 和 TestTree 已存在于 ROOT 文件中。我只想为他们添加一个新的分支“权重”。我在这里遇到的问题是它会复制树,所以在我的文件中我有 2 个 TrainTree 和 2 个 TestTree。

我必须使用临时文件来解决此问题吗?还是有更好、更简单的方法来做到这一点?

谢谢你的帮助!

4

1 回答 1

1

其实我可以自己找到解决方案:

我没有使用 numpy 的正确方法,我应该使用 array2root 而不是 array2tree。

new_column = numpy.array(gb_weights , dtype=[('weight', 'f8')])
root_numpy.array2root(new_column, 'MC_output.root' , 'TrainTree')

new_column_test = numpy.array(gb_weights_test , dtype=[('weight', 'f8')])
root_numpy.array2root(new_column_test, 'MC_output.root', 'TestTree')

是正确的做法。请注意,在这种情况下,文件没有打开,因此它的包含没有临时加载。

于 2017-06-08T14:51:24.527 回答