Source code for alphatwirl.cmsedm.CMSEDMEvents
# Tai Sakuma <tai.sakuma@cern.ch>
try:
from DataFormats.FWLite import Events as EDMEvents
# https://github.com/cms-sw/cmssw/blob/CMSSW_9_1_X/DataFormats/FWLite/python/__init__.py
except ImportError:
pass
from .load_fwlite import load_fwlite
##__________________________________________________________________||
[docs]class CMSEDMEvents(object):
def __init__(self, paths, maxEvents = -1, start = 0):
load_fwlite()
if start < 0:
raise ValueError("start must be greater than or equal to zero: {} is given".format(start))
self.edm_event = EDMEvents(paths)
# https://github.com/cms-sw/cmssw/blob/CMSSW_8_1_X/DataFormats/FWLite/python/__init__.py#L457
nevents_in_dataset = self.edm_event.size()
start = min(nevents_in_dataset, start)
if maxEvents > -1:
self.nEvents = min(nevents_in_dataset - start, maxEvents)
else:
self.nEvents = nevents_in_dataset - start
self.start = start
self.iEvent = -1
def __repr__(self):
return '{}(edm_event = {!r}, maxEvents = {!r}, start = {!r}, nEvents = {!r}, iEvent = {!r})'.format(
self.__class__.__name__,
self.edm_event,
self.maxEvents,
self.start,
self.nEvents,
self.iEvent
)
def __iter__(self):
for self.iEvent in xrange(self.nEvents):
self.edm_event.to(self.start + self.iEvent)
yield self
self.iEvent = -1
##__________________________________________________________________||