3

我正在尝试在 python 中使用pyROOT. 我从具有多个分支的 TTree 获取信息,其中一些是 C++ 类型或vector<int>' s。vector<float>vector<string>

为了将信息传递到新树中,我需要从旧树中访问它,我需要将向量等的地址传递给树,然后填充树。为此,我需要访问这样一个新向量的地址。这在 C++ 中很容易,但是在查看 Cython 和 boost 之后,我无法解决。最终我想要类似的东西:

cppintvectorinpython = getcppintvector()    
oldtree.setbranchaddress(branchname,cppintvectorinpython)

这可能吗?

4

1 回答 1

6

CINT 为您导出了许多 STL 类,其中std::vector. std::vector<double>从 pyROOT创建例如一个

import ROOT as r
vec = r.vector('double')()

由于 pyROOT,设置的分支地址TTree非常透明,例如,您不需要使用指针

tree = r.gDirectory.Get('oldtree')
tree.SetBranchAddress("vec_branch_name", vec)
于 2012-07-26T17:22:45.950 回答