我正在尝试使用python简单地定义一个根TTree,并给它一个TBranch。听起来很合理,对吧?我试过了:
from ROOT import *
myvar = int()
mytree = TTree('mytree', 'mytree')
tree.Branch('myvar', AddressOf(myvar), 'myvar/I')
exit(0)这段代码崩溃了,错误如下:
ValueError: invalid argument for AddressOf().我怀疑AddressOf()的参数可能需要是像python这样的根类型,但我不认为Int_t数据类型需要显式--而且我不知道如何将int的数据类型强制为Int_t。最后,如果您执行相同的操作,只是将“int”替换为“TString”,将“/I”替换为“/S”,事情不会崩溃。任何建议都是值得感谢的。
发布于 2014-12-06 00:14:43
您需要为"myvar“使用不同的数据类型。这是因为在root内部使用数据的方式。
from ROOT import *
from array import array
myvar = array( 'i', [ 0 ] )
mytree = TTree('mytree', 'mytree')
mytree.Branch('myvar', myvar, 'myvar/I')
exit(0)这应该是有效的,它消除了您的示例中的崩溃,例如,查看此网页以获取更多信息:http://wlav.web.cern.ch/wlav/pyroot/tpytree.html
发布于 2015-07-09 02:21:36
不同的数据类型可能确实是必需的,Int_t对于整数应该是正确的。请看一下使用pyroot here的根Cern人员示例。
https://stackoverflow.com/questions/22625726
复制相似问题