29 lines
1.2 KiB
Plaintext
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.
|