Import Geant4 5.0.0 source tree
This commit is contained in:
@@ -21,8 +21,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4RunManager.cc,v 1.44 2002/06/25 12:49:56 gcosmo Exp $
|
||||
// GEANT4 tag $Name: geant4-04-01 $
|
||||
// $Id: G4RunManager.cc,v 1.54 2002/12/12 08:33:51 gcosmo Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
//
|
||||
//
|
||||
|
||||
@@ -51,16 +51,30 @@
|
||||
#include "G4ProcessTable.hh"
|
||||
#include "G4UnitsTable.hh"
|
||||
#include "G4VVisManager.hh"
|
||||
|
||||
#include "G4ExceptionHandler.hh"
|
||||
#include "G4ios.hh"
|
||||
#include "g4std/strstream"
|
||||
|
||||
|
||||
G4RunManager* G4RunManager::fRunManager = 0;
|
||||
|
||||
G4RunManager* G4RunManager::GetRunManager()
|
||||
{ return fRunManager; }
|
||||
|
||||
//G4int G4RunManager::RegisterInteruption(int interuptionSignal)
|
||||
//{
|
||||
// if(signal(interuptionSignal,ReceiveInteruption)==SIG_ERR) return -1;
|
||||
// return 0;
|
||||
//}
|
||||
|
||||
//void G4RunManager::ReceiveInteruption(int sig)
|
||||
//{
|
||||
// if(!fRunManager) return;
|
||||
// G4ApplicationState state
|
||||
// = G4StateManager::GetStateManager()->GetCurrentState();
|
||||
// if(state==G4State_GeomClosed || state==G4State_EventProc)
|
||||
// { fRunManager->AbortRun(true); }
|
||||
//}
|
||||
|
||||
G4RunManager::G4RunManager()
|
||||
:userDetector(0),physicsList(0),
|
||||
userRunAction(0),userPrimaryGeneratorAction(0),userEventAction(0),
|
||||
@@ -71,6 +85,7 @@ G4RunManager::G4RunManager()
|
||||
currentRun(0),currentEvent(0),n_perviousEventsToBeStored(0),
|
||||
storeRandomNumberStatus(false)
|
||||
{
|
||||
defaultExceptionHandler = new G4ExceptionHandler();
|
||||
if(fRunManager)
|
||||
{ G4Exception("G4RunManager constructed twice."); }
|
||||
//G4UnitDefinition::BuildUnitsTable();
|
||||
@@ -82,7 +97,7 @@ G4RunManager::G4RunManager()
|
||||
G4ParticleTable::GetParticleTable()->CreateMessenger();
|
||||
G4ProcessTable::GetProcessTable()->CreateMessenger();
|
||||
randomNumberStatusDir = "./";
|
||||
versionString = " Geant4 version $Name: geant4-04-01 $\n (28-Jun-2002)";
|
||||
versionString = " Geant4 version $Name: geant4-05-00 $\n (13-Dec-2002)";
|
||||
G4cout
|
||||
<< "**********************************************" << G4endl
|
||||
<< versionString << G4endl
|
||||
@@ -94,7 +109,7 @@ G4RunManager::~G4RunManager()
|
||||
{
|
||||
if(verboseLevel>0) G4cout << "G4 kernel has come to Quit state." << G4endl;
|
||||
G4StateManager* pStateManager = G4StateManager::GetStateManager();
|
||||
pStateManager->SetNewState(Quit);
|
||||
pStateManager->SetNewState(G4State_Quit);
|
||||
|
||||
if(verboseLevel>1) G4cout << "Deletion of G4 kernel class start." << G4endl;
|
||||
delete timer;
|
||||
@@ -142,6 +157,7 @@ G4RunManager::~G4RunManager()
|
||||
delete pStateManager;
|
||||
if(verboseLevel>1) G4cout << "StateManager deleted." << G4endl;
|
||||
}
|
||||
delete defaultExceptionHandler;
|
||||
if(verboseLevel>1) G4cout << "RunManager is deleting." << G4endl;
|
||||
}
|
||||
|
||||
@@ -161,7 +177,7 @@ G4bool G4RunManager::ConfirmBeamOnCondition()
|
||||
G4StateManager* stateManager = G4StateManager::GetStateManager();
|
||||
|
||||
G4ApplicationState currentState = stateManager->GetCurrentState();
|
||||
if(currentState!=PreInit && currentState!=Idle)
|
||||
if(currentState!=G4State_PreInit && currentState!=G4State_Idle)
|
||||
{
|
||||
G4cerr << "Illegal application state - BeamOn() ignored." << G4endl;
|
||||
return false;
|
||||
@@ -210,7 +226,7 @@ void G4RunManager::RunInitialization()
|
||||
geometryNeedsToBeClosed = false;
|
||||
}
|
||||
G4StateManager* stateManager = G4StateManager::GetStateManager();
|
||||
stateManager->SetNewState(GeomClosed);
|
||||
stateManager->SetNewState(G4State_GeomClosed);
|
||||
|
||||
//previousEvents->clearAndDestroy();
|
||||
for(size_t itr=0;itr<previousEvents->size();itr++)
|
||||
@@ -249,7 +265,7 @@ void G4RunManager::DoEventLoop(G4int n_event,const char* macroFile,G4int n_selec
|
||||
G4int i_event;
|
||||
for( i_event=0; i_event<n_event; i_event++ )
|
||||
{
|
||||
stateManager->SetNewState(EventProc);
|
||||
stateManager->SetNewState(G4State_EventProc);
|
||||
|
||||
currentEvent = GenerateEvent(i_event);
|
||||
|
||||
@@ -258,7 +274,7 @@ void G4RunManager::DoEventLoop(G4int n_event,const char* macroFile,G4int n_selec
|
||||
AnalyzeEvent(currentEvent);
|
||||
|
||||
if(i_event<n_select) G4UImanager::GetUIpointer()->ApplyCommand(msg);
|
||||
stateManager->SetNewState(GeomClosed);
|
||||
stateManager->SetNewState(G4State_GeomClosed);
|
||||
StackPreviousEvent(currentEvent);
|
||||
currentEvent = 0;
|
||||
if(runAborted) break;
|
||||
@@ -320,7 +336,7 @@ void G4RunManager::RunTermination()
|
||||
currentRun = 0;
|
||||
runIDCounter++;
|
||||
|
||||
stateManager->SetNewState(Idle);
|
||||
stateManager->SetNewState(G4State_Idle);
|
||||
}
|
||||
|
||||
void G4RunManager::StackPreviousEvent(G4Event* anEvent)
|
||||
@@ -341,18 +357,18 @@ void G4RunManager::Initialize()
|
||||
{
|
||||
G4StateManager* stateManager = G4StateManager::GetStateManager();
|
||||
G4ApplicationState currentState = stateManager->GetCurrentState();
|
||||
if(currentState!=PreInit && currentState!=Idle)
|
||||
if(currentState!=G4State_PreInit && currentState!=G4State_Idle)
|
||||
{
|
||||
G4cerr << "Illegal application state - "
|
||||
<< "G4RunManager::Initialize() ignored." << G4endl;
|
||||
return;
|
||||
}
|
||||
|
||||
stateManager->SetNewState(Init);
|
||||
stateManager->SetNewState(G4State_Init);
|
||||
if(!geometryInitialized) InitializeGeometry();
|
||||
if(!physicsInitialized) InitializePhysics();
|
||||
if(!cutoffInitialized) InitializeCutOff();
|
||||
stateManager->SetNewState(Idle);
|
||||
stateManager->SetNewState(G4State_Idle);
|
||||
if(!initializedAtLeastOnce) initializedAtLeastOnce = true;
|
||||
}
|
||||
|
||||
@@ -393,15 +409,19 @@ void G4RunManager::InitializeCutOff()
|
||||
cutoffInitialized = true;
|
||||
}
|
||||
|
||||
void G4RunManager::AbortRun()
|
||||
void G4RunManager::AbortRun(G4bool softAbort)
|
||||
{
|
||||
// This method is valid only for GeomClosed or EventProc state
|
||||
G4ApplicationState currentState =
|
||||
G4StateManager::GetStateManager()->GetCurrentState();
|
||||
if(currentState==GeomClosed || currentState==EventProc)
|
||||
if(currentState==G4State_GeomClosed || currentState==G4State_EventProc)
|
||||
{
|
||||
runAborted = true;
|
||||
if(currentState==EventProc) eventManager->AbortCurrentEvent();
|
||||
if(currentState==G4State_EventProc && !softAbort)
|
||||
{
|
||||
currentEvent->SetEventAborted();
|
||||
eventManager->AbortCurrentEvent();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -409,6 +429,22 @@ void G4RunManager::AbortRun()
|
||||
}
|
||||
}
|
||||
|
||||
void G4RunManager::AbortEvent()
|
||||
{
|
||||
// This method is valid only for EventProc state
|
||||
G4ApplicationState currentState =
|
||||
G4StateManager::GetStateManager()->GetCurrentState();
|
||||
if(currentState==G4State_EventProc)
|
||||
{
|
||||
currentEvent->SetEventAborted();
|
||||
eventManager->AbortCurrentEvent();
|
||||
}
|
||||
else
|
||||
{
|
||||
G4cerr << "Event is not in progress. AbortEevnt() ignored." << G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
void G4RunManager::DefineWorldVolume(G4VPhysicalVolume* worldVol)
|
||||
{
|
||||
// set the world volume to the Navigator
|
||||
@@ -423,6 +459,33 @@ void G4RunManager::DefineWorldVolume(G4VPhysicalVolume* worldVol)
|
||||
geometryNeedsToBeClosed = true;
|
||||
}
|
||||
|
||||
void G4RunManager::ResetNavigator() const
|
||||
{
|
||||
G4StateManager* stateManager = G4StateManager::GetStateManager();
|
||||
G4ApplicationState currentState = stateManager->GetCurrentState();
|
||||
|
||||
if(!initializedAtLeastOnce)
|
||||
{
|
||||
G4cerr << " Geant4 kernel should be initialized" << G4endl;
|
||||
G4cerr << " Navigator is not touched..." << G4endl;
|
||||
return;
|
||||
}
|
||||
|
||||
if( currentState != G4State_Idle )
|
||||
{
|
||||
G4cerr << " Geant4 kernel not in Idle state" << G4endl;
|
||||
G4cerr << " Navigator is not touched..." << G4endl;
|
||||
return;
|
||||
}
|
||||
|
||||
// We have to tweak the navigator's state in case a geometry has been modified between runs
|
||||
// By the following call we ensure that navigator's state is reset properly
|
||||
G4ThreeVector center(0,0,0);
|
||||
G4TransportationManager::GetTransportationManager()
|
||||
->GetNavigatorForTracking()
|
||||
->LocateGlobalPointAndSetup(center,0,false);
|
||||
}
|
||||
|
||||
void G4RunManager::rndmSaveThisRun()
|
||||
{
|
||||
G4int runNumber = runIDCounter;
|
||||
|
||||
Reference in New Issue
Block a user