0

TTree を開いてそこからデータを読み取る PyROOT マクロを作成しようとしていますが、ツリーにはコラボレーションのフレームワークに固有のクラスがいくつか含まれています。

ツリーをロードし、次のようにデータを読み取ろうとします。

 mctree = mcfile.Get("MC")
    totevents=mctree.GetEntries()
    for event in mctree:
        print event.PVeto.TMCVEvent.fHits.fChannelId

依存関係を手動で含めないと、次のエラーが表示されます。

TypeError: requested class 'ROOT::TPVetoMCEvent' does not exist

TPVetoMCEventそのため、が定義されているクラスと、このクラスが依存するクラス ( )を含めましたMCVRootIOが、最終的にエラーが発生します。

RuntimeError: (file "include/MCVRootIO.hh", line 11) cannot open file "globals.hh" 

私はもう試した ROOT.gInterpreter.ProcessLine('#include "/cvmfs/geant4.cern.ch/geant4/10.3.ref01/x86_64-slc6-gcc49-opt/include/Geant4/globals.hh"')

それでも同じエラーが発生します。

完全なコードは次のとおりです。

ROOT.gInterpreter.ProcessLine('#include "/cvmfs/geant4.cern.ch/geant4/10.3.ref01/x86_64-slc6-gcc49-opt/include/Geant4/globals.hh"')
ROOT.gInterpreter.ProcessLine('#include "include/MCVRootIO.hh"')
ROOT.gSystem.Load('src/MCVRootIO.cc')

ROOT.gInterpreter.ProcessLine('#include "PVeto/include/PVetoRootIO.hh"')
ROOT.gSystem.Load('PVeto/src/PVetoRootIO.cc')

#get TTree from file
mcfile = TFile("MCData.root")
mctree = mcfile.Get("MC")
totevents=mctree.GetEntries()
for event in mctree:
   print event.PVeto.TMCVEvent.fHits.fChannelId

そして、ツリーは次のように構成されています。 ツリー構造

4

0 に答える 0