@@ -433,6 +433,8 @@ def __setupGeneratorActions(self, kernel, geant4):
433433 if actionList :
434434 generationInit = self ._buildInputStage (geant4 , actionList , output_level = self .output .inputStage ,
435435 have_mctruth = self ._enablePrimaryHandler ())
436+ # Store on self so run() can read numberOfEvents before terminate() destroys it
437+ self ._generationInit = generationInit
436438
437439 # ================================================================================================
438440
@@ -632,12 +634,10 @@ def run(self):
632634 if not PyDDG4 .run (master ):
633635 logger .error ("Simulation failed!" )
634636 exitCode += 1
635- if not PyDDG4 .terminate (master ):
636- exitCode += 1
637- logger .error ("Termination failed!" )
638637
639638 totalTimeUser , totalTimeSys , _cuTime , _csTime , _elapsedTime = os .times ()
640639 processedEvents = self .numberOfEvents
640+ generationInit = getattr (self , '_generationInit' , None )
641641 if generationInit :
642642 processedEvents = int (generationInit .numberOfEvents )
643643 if self .numberOfEvents < 0 :
@@ -652,6 +652,11 @@ def run(self):
652652 perEventTime = eventTime / processedEvents
653653 logger .info ("StartUp Time: %3.2f s, Processing and Init: %3.2f s (~%3.2f s/Event @ %d threads) "
654654 % (startUpTime , eventTime , perEventTime , self .numberOfThreads ))
655+
656+ if not PyDDG4 .terminate (master ):
657+ exitCode += 1
658+ logger .error ("Termination failed!" )
659+
655660 return exitCode
656661
657662 def __setMagneticFieldOptions (self , geant4 ):
0 commit comments