diff --git a/src/km3io/tools.py b/src/km3io/tools.py
index c684219728d953ec256d4eed865d9a1582148991..377b61155e1e0048537c1cb6a031f90278c30278 100644
--- a/src/km3io/tools.py
+++ b/src/km3io/tools.py
@@ -5,6 +5,7 @@ import numpy as np
 import awkward as ak
 import uproot3
 
+import km3io.definitions
 from km3io.definitions import reconstruction as krec
 from km3io.definitions import trigger as ktrg
 from km3io.definitions import fitparameters as kfit
@@ -536,3 +537,13 @@ def is_3dmuon(trigger_mask):
       A value or an array of the trigger_mask, either of an event, or a hit.
     """
     return is_bit_set(trigger_mask, ktrg.JTRIGGER3DMUON)
+
+
+def get_w2defs_idx(f):
+    w2s_idx = {
+        "genhen": km3io.definitions.w2list_genhen_idx,
+        "gseagen": km3io.definitions.w2list_gseagen_idx,
+    }
+    sim_program = f.header.simul.program.lower()
+    return w2s_idx.get(sim_program)
+