Source code for alphatwirl.selection.modules.basic
# Tai Sakuma <tai.sakuma@cern.ch>
##__________________________________________________________________||
[docs]class All(object):
"""select events that meet all conditions
"""
def __init__(self, name = None):
self.name = name if name is not None else 'All'
self.selections = [ ]
def __repr__(self):
return '{}(name = {!r}, selections = {!r})'.format(
self.__class__.__name__,
self.name,
self.selections
)
[docs] def add(self, selection):
self.selections.append(selection)
[docs] def begin(self, event):
for s in self.selections:
if hasattr(s, 'begin'): s.begin(event)
[docs] def event(self, event):
for s in self.selections:
if not s(event): return False
return True
def __call__(self, event):
return self.event(event)
[docs] def end(self):
for s in self.selections:
if hasattr(s, 'end'): s.end()
##__________________________________________________________________||
[docs]class Any(object):
"""select events that meet any of the conditions
"""
def __init__(self, name = None):
self.name = name if name is not None else 'Any'
self.selections = [ ]
def __repr__(self):
return '{}(name = {!r}, selections = {!r})'.format(
self.__class__.__name__,
self.name,
self.selections
)
[docs] def add(self, selection):
self.selections.append(selection)
[docs] def begin(self, event):
for s in self.selections:
if hasattr(s, 'begin'): s.begin(event)
[docs] def event(self, event):
for s in self.selections:
if s(event): return True
return False
def __call__(self, event):
return self.event(event)
[docs] def end(self):
for s in self.selections:
if hasattr(s, 'end'): s.end()
##__________________________________________________________________||
[docs]class Not(object):
"""select events that do NOT pass the selection
"""
def __init__(self, selection, name = None):
self.name = name if name is not None else 'Not'
self.selection = selection
def __repr__(self):
return '{}(name = {!r}, selection = {!r})'.format(
self.__class__.__name__,
self.name,
self.selection
)
[docs] def begin(self, event):
if hasattr(self.selection, 'begin'): self.selection.begin(event)
[docs] def event(self, event):
return not self.selection(event)
def __call__(self, event):
return self.event(event)
[docs] def end(self):
if hasattr(self.selection, 'begin'): self.selection.end()
##__________________________________________________________________||