import ROOT, glob class PyFileParser : def __init__(self) : print "PyFileParser.__init__" self.fileList = [] self.runList = [] self.path = "" self.pattern="" self.exclude="" self.inRunFolder=False print "PyFileParser initialized" def setPath(self,pa): print "PyFileParser.setPath: set path to:",pa self.path=pa def setFiles(self,fl) : print "PyFileParser::setFiles called with",fl self.fileList = glob.glob(fl) def setInRunFolder(self): self.inRunFolder=True def setRuns(self,theruns) : colindex = theruns.find(",") if colindex > 0: runs = theruns.split(",") for i in range(len(runs)) : dashIndex = runs[i].find("-") if dashIndex > 0 : runs[i] = runs[i].split("-") for j in range(int(runs[i][0]), int(runs[i][1])+1) : self.runList.append(j) if dashIndex < 0 and len(runs) > 1 : self.runList.append(int(runs[i])) else : dashIndex = theruns.find("-") if dashIndex > 0 : runs = theruns.split("-") self.runList = range(int(runs[0]), int(runs[1])+1) else: self.runList = [theruns] def makeFileList(self): if self.inRunFolder: thefiles=[] for run in self.runList: tmpfiles=glob.glob('{0}/run_{1}/*'.format(self.path,run)) for f in tmpfiles: thefiles.append(f) else: thefiles=glob.glob(self.path+"/*") thefiles.sort() for f in thefiles: if len(self.runList)!=0: for run in self.runList: if self.pattern!="" and f.find(self.pattern)==-1: continue if self.exclude!="" and f.find(self.exclude)!=-1: continue if f.find(str(run))>-1: self.fileList.append(f) continue else: if self.pattern!="" and f.find(self.pattern)==-1: continue if self.exclude!="" and f.find(self.exclude)!=-1: continue self.fileList.append(f) #print "parseFiles.setRuns: Setting runs to:",self.runList,", found",len(self.fileList),"files" #return int(self.runList[0]) def resetFiles(self): self.fileList=[] def setPattern(self,pat): print "parseFile.setPattern: set pattern to:",pat self.pattern=pat def setExcludePattern(self,pat): self.exclude=pat def printFiles(self) : for f in self.fileList: print f def getNum(self) : return len(self.fileList) def getFile(self, i) : if i < len(self.fileList) : #print self.fileList[i] return self.fileList[i] else : print "parseFile.py ERROR: index",i," out of bound!" return "" def printFiles(self): for f in self.fileList: print f