CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_14/src/PhysicsTools/PythonAnalysis/python/readProv.py

Go to the documentation of this file.
00001 
00002 import copy
00003 
00004 class filereader:
00005 
00006     class Module:
00007         def __init__(self,label='',value=[]):
00008             self.label=label
00009             self.value=value
00010 
00011     def __init__(self):
00012         self.aList=['Module', 'ESSource']
00013         
00014     def startswith(self,line):
00015         "Checks if the first word of the line starts with any of the aList elements"
00016         for item in self.aList:
00017             if line.startswith(item):
00018                 return True
00019         return False    
00020 
00021     def readfile(self,nomefile):
00022         "Reads the file line by line and searches for the begin and the end of each Module block"       
00023         aFile = open(nomefile)
00024         module=[]
00025         value=[]
00026         file_modules = {}
00027         processHistory=False
00028         processing=False
00029         insideModuleBlock = False
00030         insideParameterBlock = False
00031         nprocess=-1
00032         key=''
00033         for line in aFile.readlines():
00034             if line.startswith("Processing History:"):
00035                 value=[]
00036                 processHistory=True
00037             elif (not line.startswith('---------Event')) and processHistory:
00038                 splitLine= line.split()
00039                 if splitLine[3]=='[2]':
00040                     processing=True
00041                     value.append(line)
00042                 elif  processing:
00043                     value.append(line)
00044             elif line.startswith('---------Event') and processing:
00045                 file_modules['Processing']=value
00046                 processHistory=False
00047                 processing=False
00048             elif self.startswith(line):
00049                 if  insideParameterBlock:
00050                     module.append(tuple(value))
00051                     file_modules[key].append(module)
00052                     insideParameterBlock = False
00053                     insideModuleBlock = False  ###controllare
00054                 value=[]
00055                 module=[]
00056                 splitLine= line.split()
00057                 key=splitLine[-1]
00058                 if key not in file_modules.keys():
00059                     file_modules[key]=[]
00060                 module.append(splitLine[-2])
00061                 value.append(line[:-1])
00062                 insideModuleBlock = True
00063                 insideParameterBlock = False
00064             elif (line.startswith(' parameters')) and insideModuleBlock:
00065                 insideParameterBlock = True
00066                 value.append(line[:-1])
00067             elif line.startswith('ESModule') and insideParameterBlock:
00068                 module.append(tuple(value))
00069                 file_modules[key].append(module)
00070                 insideParameterBlock = False
00071                 insideModuleBlock = False
00072             #elif line=='}' and insideParameterBlock:
00073                 #module.append(tuple(value))
00074                 #file_modules[key].append(module)
00075                 #insideParameterBlock = False
00076                 #insideModuleBlock = False
00077             elif (insideParameterBlock):
00078                 value.append(line[:-1])
00079             
00080         if   insideParameterBlock:
00081             module.append(tuple(value))
00082             file_modules[key].append(module)
00083             insideParameterBlock = False
00084             insideModuleBlock = False 
00085 
00086         
00087         return file_modules 
00088