0

PyROOT で TTree を読み取るための TTreeReader アプローチを使用して、起動して実行しようとしています。ガイドとして、ROOT 6 Analysis Workshop ( http://root.cern.ch/drupal/content/7-using-ttreereader ) とそれに関連する ROOT ファイル ( http://root.cern.ch/root ) を使用しています。 /files/tutorials/mockupx.root )。

from ROOT import *
fileName = "mockupx.root"
file = TFile(fileName)
tree = file.Get("MyTree")
treeReader = TTreeReader("MyTree", file)

この後、私は少し迷っています。TTreeReader オブジェクトを使用して変数情報にアクセスしようとしましたが、うまくいきません。

>>> rvMissingET = TTreeReaderValue(treeReader, "missingET")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/user/ROOT/v6-03-01/root/lib/ROOT.py", line 198, in __call__
    result = _root.MakeRootTemplateClass( *newargs )
SystemError: error return without exception set

ここでどこが間違っていますか?

4

1 に答える 1

1

TTreeReaderValueドキュメントの例に示されているように、テンプレート化されたクラスであるTTreeReaderため、テンプレートの種類を指定する必要があります。

これを行うことができます

rvMissingET = ROOT.TTreeReaderValue(ROOT.Double)(treeReader, "missingET")

Python ビルトインintは、型とfloat型に使用できます。

rvInt = ROOT.TTreeReaderValue(int)(treeReader, "intBranch")
rvFloat = ROOT.TTreeReaderValue(float)(treeReader, "floatBranch")

また、PyROOTでの使用TTreeReaderは推奨されないことに注意してください。(Python でより高速な ntuple ブランチ アクセスを探している場合は、Ntuple私が書いたクラスを調べることができます。)

于 2014-11-06T13:51:54.373 に答える