Import Geant4 5.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-08 16:57:27 +02:00
parent 330b82b769
commit 37fff30d2e
5733 changed files with 263867 additions and 74574 deletions
+80 -17
View File
@@ -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;