From 6663deb6fe2ed2a47a94e051af76cfba8e7a3d57 Mon Sep 17 00:00:00 2001
From: Johannes Schumann <johannes.schumann@fau.de>
Date: Thu, 8 Aug 2024 16:21:35 +0200
Subject: [PATCH] Add additional check for timestamp

---
 src/tools/helpers.jl | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/src/tools/helpers.jl b/src/tools/helpers.jl
index d8149848..4fdef7f9 100644
--- a/src/tools/helpers.jl
+++ b/src/tools/helpers.jl
@@ -11,7 +11,19 @@ Base.lastindex(itr::MCEventMatcher) = length(itr)
 function Base.getindex(itr::MCEventMatcher, idx::Integer)
     event = itr.f.online.events[idx]
     mc_idx = event.header.trigger_counter + 1
-    mc_event = itr.f.offline[mc_idx]
+    mc_ids = getproperty.(itr.f.offline, :id)
+    mc_events = itr.f.offline[mc_ids .== mc_idx]
+    if length(mc_events) == 1
+        mc_event = mc_events[begin]
+    else
+        offline_seconds = getproperty.(getproperty.(mc_events, :mc_event_time), :s)
+        online_seconds = itr.f.online.events.headers[idx].t.s
+        time_selection = mc_events[offline_seconds .== online_seconds]
+        if length(time_selection) != 1
+            throw("Online and offline event entry cannot be uniquely merged together.")
+        end
+        mc_event = time_selection[begin]
+    end
     (event, mc_event)
 end
 function Base.iterate(itr::MCEventMatcher, state=1)
-- 
GitLab