diff --git a/km3io/jpp.py b/km3io/jpp.py index 4caa6f32c9b2876420af09bb615da4c9110ddcc4..c80d5d936815ae3112739b2ec510b6850b785e0b 100644 --- a/km3io/jpp.py +++ b/km3io/jpp.py @@ -6,6 +6,7 @@ class JppReader: def __init__(self, filename): self.fobj = uproot.open(filename) self._events = None + self._timeslices = None @property def events(self): @@ -30,6 +31,48 @@ class JppReader: self._events = JppEvents(headers, snapshot_hits, triggered_hits) return self._events + @property + def timeslices(self): + if self._timeslices is None: + self._timeslices = JppTimeslices(self.fobj) + return self._timeslices + + +class JppTimeslices: + """A simple wrapper for Jpp timeslices""" + def __init__(self, fobj): + self._timeslices = {} + streams = [ + s.split(b"KM3NET_TIMESLICE_")[1].split(b';')[0] + for s in fobj.keys() if b"KM3NET_TIMESLICE_" in s + ] + for stream in streams: + tree = fobj[b'KM3NET_TIMESLICE_' + stream] + self._timeslices[stream] = JppTimeslice(tree[b'km3net_timeslice_' + + stream]) + + def __str__(self): + return "Available timeslice streams: {}".format(','.join( + s.decode("ascii") for s in self._timeslices.keys())) + + def __repr__(self): + return str(self) + + +class JppTimeslice: + """A wrapper for a Jpp timeslice""" + def __init__(self, tree): + self.header = tree[b'KM3NETDAQ::JDAQTimeslice'][ + b'KM3NETDAQ::JDAQTimesliceHeader'][b'KM3NETDAQ::JDAQHeader'][ + b'KM3NETDAQ::JDAQChronometer'] + # [b'KM3NETDAQ::JDAQTimeslice'][b'vector<KM3NETDAQ::JDAQSuperFrame>'] + + def __str__(self): + return "Jpp timeslice" + + def __repr__(self): + return str(self) + class JppEvents: """A simple wrapper for Jpp events"""