Draft idea to skip long events:
Considering different option, I figured the best option is indeed using a
G4UserSteppingAction - it is not perfect IMHO since it isn't really related to a step, but AFAIK there is nothing in G4 that could make this cleaner, and external wrappers don't work nicely here. The only other good idea I have is to run a timer in parallel an call
run_manager_g4_->AbortRun(), but idk if that works cleanly.
In terms of interface, event timeouts are completely optional since intercepting each step is not exactly a cheap operation - even though I kept the footprint as small as possible. Testing with a more complex simulation, I could not measure a performance impact since most of the time the event was in GenericPropagation (G4 event duration < 10ms).
event_timeout is not set, no
SteppingAction is added to the
ActionInitialization - thus no performance is lost at all. I don't think the timeout should be enabled by default, but I believe it is a useful tool to debug apsq - knowing how many events take long and which ones without actually trying it out and setting
skip_events by hand.
Proper exception handling code
Proper performance testing