2014-05-11 4 views
1

내가이 된 ttree 처리하는 클래스를 만들고 싶었 :pyroot Ntuple 핸들러

from ROOT import * 
from Exceptions import * 
import os.path 

class NTupleHandler: 

    def __init__(self, fileName, eventType): 
     if not os.path.isfile(fileName): 
      raise InputError(fileName) 
     f = TFile(fileName, 'read') 
     if f is None: 
      raise InputError("openError"+fileName) 
     dir=f.Get(eventType) 
     if dir is None: 
      raise InputError("directory Error"+eventType) 
     tree=dir.Get('particle') 
     self.tree=tree 
     self.tree.GetEntriesFast() 
     print 

    def getEntry(self): 
     return self.tree.GetEntriesFast() 

을하지만 난 오류가 발생 함수 getEntry 전화 :

Error 
Traceback (most recent call last): 
    File "/home/ja/PycharmProjects/studyChi2/python/NTupleHandlerTester.py", line 19, in testHandlerShouldReturnNoEvents 
    self.assertLess(handler.getEntry(),10) 
    File "/home/ja/PycharmProjects/studyChi2/python/NTupleHandler.py", line 23, in getEntry 
    return self.tree.GetEntriesFast() 
AttributeError: 'PyROOT_NoneType' object has no attribute 'GetEntriesFast' 

난의 종류를 기억하는 파이썬을 강제 수있는 방법을 NtupleHandler.tree?

답변

1

Python 환경에서 ROOT 클래스를 사용하려면 pyroot보다 rootpy를 사용하는 것이 더 좋습니다. rootpy에서 PyTables를 사용하여 나무를 포함하는 ROOT 파일을 HDF5 형식으로 변환하는 작업이 이미 완료되었습니다. 당신이 원하는 것이 rootpy에 있는지보십시오.