Files
geant4/examples/extended/parallel/ParN04/docs/BUG.userStackingAction
T
2016-06-08 16:39:52 +02:00

29 lines
1.2 KiB
Plaintext

$Id: BUG.userStackingAction,v 1.1 2002/03/05 15:22:07 gcosmo Exp $
-------------------------------------------------------------------
When Geant4 4.0 sees empty event, it still calls userStackingAction.
In the function:
G4StackManager::PopNextTrack(G4VTrajectory**newTrajectory)
in Geant4 4.0, one has:
145 if(userStackingAction) userStackingAction->NewStage();
146 #ifdef G4VERBOSE
147 if( verboseLevel > 0 ) G4cout << " " << GetNUrgentTrack()
148 << " urgent tracks and " << GetNWaitingTrack()
149 << " waiting tracks." << G4endl;
150 #endif
151 if( ( GetNUrgentTrack()==0 ) && ( GetNWaitingTrack()==0 ) ) return 0;
It seems to me that the call, `return 0' (line 151), should occur before
the call to `NewStage()' (line 145). If there are no tracks to
be stacked (neither GetNUrgentTrack() nor GetNWaitingTrack()),
then there is no new stage. So, it's a mistake to call
userStackingAction->NewStage().
This affects my parallelization of Geant4, in which I need to purposely
create a trivial event on the master, and call
G4EventManager()::ProcessOneEvent() on it to initialize the event on the
master. I am doing this in order to copy the hits from the slave into
an event on the master.