From 8b70de52748a81cdc33dad1e59c3a98bf29e7e1c Mon Sep 17 00:00:00 2001 From: stahn Date: Tue, 25 Aug 2026 13:38:01 +0200 Subject: [PATCH 1/4] beam_monitor array length is now better defined - but still inconsistend with `-mt n` option --- eos/file_reader.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/eos/file_reader.py b/eos/file_reader.py index 1c8d452..18ec7fa 100644 --- a/eos/file_reader.py +++ b/eos/file_reader.py @@ -572,18 +572,19 @@ class AmorEventData(AmorHeader): def read_beam_monitor_stream(self, packets): if self._beam_monitor is None: return None - _signal = self._beam_monitor.signal - _time = self._beam_monitor.time plse = np.array([0, 5, 6, 11]) base = np.array([2, 3, 8, 9]) - i = 0 - beam_monitor = np.recarray(shape=np.shape(packets.time)[0], dtype=BM_TYPE) - for tt, tme in enumerate(_time): - if (tme>=packets.time[0])&(tme<=packets.time[-1]): - beam_monitor.value[i] = _signal[tt][plse].sum() - _signal[tt][base].sum() - beam_monitor.time[i] = tme - i += 1 - return beam_monitor[:i+1] + _time = self._beam_monitor.time + _signal = self._beam_monitor.signal[(packets.time[0]<=_time)& + (_time<=packets.time[-1])] + _time = _time[(packets.time[0]<=_time)& + (_time<=packets.time[-1])] + beam_monitor = np.recarray(shape=np.shape(_time)[0], dtype=BM_TYPE) + beam_monitor.time = _time + beam_monitor.value[:] = _signal[:][plse].sum() - _signal[:][base].sum() + return beam_monitor + #TODO: causes an error if '-mt n' is used: The `beam_monitor` array is one entry too short...? + #but making it longer also causes problems def info(self): output = "" -- 2.54.0 From be161bc2ba5da83bf8b724cf15cb6ef6d080ecf2 Mon Sep 17 00:00:00 2001 From: stahn Date: Tue, 25 Aug 2026 17:55:41 +0200 Subject: [PATCH 2/4] eos/file_reader.py aktualisiert --- eos/file_reader.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/eos/file_reader.py b/eos/file_reader.py index 18ec7fa..09cc31e 100644 --- a/eos/file_reader.py +++ b/eos/file_reader.py @@ -575,16 +575,14 @@ class AmorEventData(AmorHeader): plse = np.array([0, 5, 6, 11]) base = np.array([2, 3, 8, 9]) _time = self._beam_monitor.time - _signal = self._beam_monitor.signal[(packets.time[0]<=_time)& + _signal = self._beam_monitor.signal[(self.eventStartTime<=_time)& (_time<=packets.time[-1])] - _time = _time[(packets.time[0]<=_time)& + _time = _time[(self.eventStartTime<=_time)& (_time<=packets.time[-1])] beam_monitor = np.recarray(shape=np.shape(_time)[0], dtype=BM_TYPE) beam_monitor.time = _time beam_monitor.value[:] = _signal[:][plse].sum() - _signal[:][base].sum() return beam_monitor - #TODO: causes an error if '-mt n' is used: The `beam_monitor` array is one entry too short...? - #but making it longer also causes problems def info(self): output = "" -- 2.54.0 From d60e405152f6ceac59fb00e6797e51dc27653c1a Mon Sep 17 00:00:00 2001 From: stahn Date: Wed, 26 Aug 2026 10:11:06 +0200 Subject: [PATCH 3/4] fix in summing over neutron beam time bins (.sum() to np.sum(..., axis=1)) --- eos/file_reader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eos/file_reader.py b/eos/file_reader.py index 09cc31e..3f64e81 100644 --- a/eos/file_reader.py +++ b/eos/file_reader.py @@ -581,7 +581,7 @@ class AmorEventData(AmorHeader): (_time<=packets.time[-1])] beam_monitor = np.recarray(shape=np.shape(_time)[0], dtype=BM_TYPE) beam_monitor.time = _time - beam_monitor.value[:] = _signal[:][plse].sum() - _signal[:][base].sum() + beam_monitor.value[:] = np.sum(_signal[:, plse], axis=1) - np.sum(_signal[:, base], axis=1) return beam_monitor def info(self): -- 2.54.0 From 707e00b360dcb2213e4eb3839a025fa892d43534 Mon Sep 17 00:00:00 2001 From: glavic_a Date: Thu, 27 Aug 2026 10:26:48 +0200 Subject: [PATCH 4/4] eos/file_reader.py aktualisiert Some simplifications and cleanups --- eos/file_reader.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/eos/file_reader.py b/eos/file_reader.py index 3f64e81..3bc1806 100644 --- a/eos/file_reader.py +++ b/eos/file_reader.py @@ -575,13 +575,12 @@ class AmorEventData(AmorHeader): plse = np.array([0, 5, 6, 11]) base = np.array([2, 3, 8, 9]) _time = self._beam_monitor.time - _signal = self._beam_monitor.signal[(self.eventStartTime<=_time)& - (_time<=packets.time[-1])] - _time = _time[(self.eventStartTime<=_time)& - (_time<=packets.time[-1])] - beam_monitor = np.recarray(shape=np.shape(_time)[0], dtype=BM_TYPE) + fltr = (self.eventStartTime<=_time)&(_time<=packets.time[-1]) + _time = _time[fltr] + _signal = self._beam_monitor.signal[fltr] + beam_monitor = np.recarray(shape=_time.shape[0], dtype=BM_TYPE) beam_monitor.time = _time - beam_monitor.value[:] = np.sum(_signal[:, plse], axis=1) - np.sum(_signal[:, base], axis=1) + beam_monitor.value = _signal[:, plse].sum(axis=1) - _signal[:, base].sum(axis=1) return beam_monitor def info(self): -- 2.54.0