Import Geant4 4.1.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-08 16:39:52 +02:00
parent 921d3b1cda
commit 330b82b769
4524 changed files with 178689 additions and 43575 deletions
+64 -3
View File
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4StackManager.cc,v 1.6 2001/07/19 00:14:17 asaim Exp $
// GEANT4 tag $Name: geant4-04-00 $
// $Id: G4StackManager.cc,v 1.7 2002/05/29 22:51:45 asaim Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
// Last Modification : 09/Dec/96 M.Asai
@@ -301,6 +301,7 @@ void G4StackManager::SetNumberOfAdditionalWaitingStacks(G4int iAdd)
void G4StackManager::TransferStackedTracks(G4ClassificationOfNewTrack origin, G4ClassificationOfNewTrack destination)
{
if(origin==destination) return;
G4TrackStack* originStack = 0;
switch(origin)
{
@@ -351,12 +352,72 @@ void G4StackManager::TransferStackedTracks(G4ClassificationOfNewTrack origin, G4
break;
}
if(!targetStack) return;
if(originStack==targetStack) return;
originStack->TransferTo(targetStack);
}
return;
}
void G4StackManager::TransferOneStackedTrack(G4ClassificationOfNewTrack origin, G4ClassificationOfNewTrack destination)
{
if(origin==destination) return;
G4TrackStack* originStack = 0;
switch(origin)
{
case fUrgent:
originStack = urgentStack;
break;
case fWaiting:
originStack = waitingStack;
break;
case fPostpone:
originStack = postponeStack;
break;
case fKill:
break;
default:
int i = origin - 10;
if(i<=numberOfAdditionalWaitingStacks) originStack = additionalWaitingStacks[i-1];
break;
}
if(!originStack) return;
G4StackedTrack * aStackedTrack;
if(destination==fKill)
{
if( (aStackedTrack=originStack->PopFromStack()) != 0 )
{
delete aStackedTrack->GetTrack();
delete aStackedTrack;
}
}
else
{
G4TrackStack* targetStack = 0;
switch(destination)
{
case fUrgent:
targetStack = urgentStack;
break;
case fWaiting:
targetStack = waitingStack;
break;
case fPostpone:
targetStack = postponeStack;
break;
default:
int i = origin - 10;
if(i<=numberOfAdditionalWaitingStacks) targetStack = additionalWaitingStacks[i-1];
break;
}
if(!targetStack) return;
if( (aStackedTrack=originStack->PopFromStack()) != 0 )
{
targetStack->PushToStack(aStackedTrack);
}
}
return;
}