File indexing completed on 2024-11-27 03:17:56
0001
0002
0003
0004
0005
0006
0007 from ROOT import gROOT, gSystem, AutoLibraryLoader
0008 from DataFormats.FWLite import Events, Handle
0009
0010
0011 class FWLiteAnalyzer(object):
0012
0013 def __init__(self, inputFiles=None, handles=None, firstEvent=None, maxEvents=None):
0014 gROOT.SetBatch()
0015
0016 if inputFiles:
0017 if isinstance(inputFiles, str):
0018 self.inputFiles = [inputFiles]
0019 else:
0020 self.inputFiles = inputFiles
0021 else:
0022 self.inputFiles = []
0023
0024 self.events = Events(self.inputFiles)
0025
0026 self.handles = {}
0027 self.handle_labels = {}
0028 if handles:
0029 for k, v in handles.items():
0030 self.handles[k] = Handle(v[0])
0031 self.handle_labels[k] = v[1]
0032
0033 self.setup = {}
0034
0035 if firstEvent:
0036 self.firstEvent = firstEvent
0037 else:
0038 self.firstEvent = 0
0039
0040 if maxEvents:
0041 self.maxEvents = maxEvents
0042 else:
0043 self.maxEvents = 0x7FFFFFFFFFFFFFFF
0044 return
0045
0046 def analyze(self):
0047 self.beginLoop()
0048 for evt in self.processLoop():
0049 pass
0050 self.endLoop()
0051 return
0052
0053 def beginLoop(self):
0054 return
0055
0056 def endLoop(self):
0057 return
0058
0059 def processLoop(self):
0060 for ievt, evt in enumerate(self.events):
0061
0062
0063 self.process(evt)
0064 yield evt
0065 return
0066
0067 def process(self, event):
0068 self.getHandles(event)
0069 return
0070
0071 def getHandles(self, event):
0072 for k, v in self.handles.items():
0073 label = self.handle_labels[k]
0074 event.getByLabel(label, v)
0075 return
0076
0077
0078
0079 if __name__ == "__main__":
0080
0081 print("Loading FW Lite")
0082 gSystem.Load("libFWCoreFWLite")
0083 gROOT.ProcessLine("FWLiteEnabler::enable();")
0084
0085
0086
0087
0088
0089 analyzer = FWLiteAnalyzer(inputFiles='pippo.root')
0090 analyzer.analyze()