Import Geant4 10.4.2 source tree
This commit is contained in:
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4ExceptionHandler.cc 66892 2013-01-17 10:57:59Z gunter $
|
||||
// $Id: G4ExceptionHandler.cc 110119 2018-05-15 12:22:31Z gcosmo $
|
||||
//
|
||||
//
|
||||
// ------------------------------------------------------------
|
||||
@@ -91,20 +91,23 @@ G4bool G4ExceptionHandler::Notify(const char* originOfException,
|
||||
switch(severity)
|
||||
{
|
||||
case FatalException:
|
||||
G4cerr << es_banner << message.str() << "*** Fatal Exception *** core dump ***"
|
||||
<< ee_banner << G4endl;
|
||||
G4cerr << es_banner << message.str() << "*** Fatal Exception *** core dump ***" << G4endl;
|
||||
DumpTrackInfo();
|
||||
G4cerr << ee_banner << G4endl;
|
||||
abortionForCoreDump = true;
|
||||
break;
|
||||
case FatalErrorInArgument:
|
||||
G4cerr << es_banner << message.str() << "*** Fatal Error In Argument *** core dump ***"
|
||||
<< ee_banner << G4endl;
|
||||
G4cerr << es_banner << message.str() << "*** Fatal Error In Argument *** core dump ***" << G4endl;
|
||||
DumpTrackInfo();
|
||||
G4cerr << ee_banner << G4endl;
|
||||
abortionForCoreDump = true;
|
||||
break;
|
||||
case RunMustBeAborted:
|
||||
if(aps==G4State_GeomClosed || aps==G4State_EventProc)
|
||||
{
|
||||
G4cerr << es_banner << message.str() << "*** Run Must Be Aborted ***"
|
||||
<< ee_banner << G4endl;
|
||||
G4cerr << es_banner << message.str() << "*** Run Must Be Aborted ***" << G4endl;
|
||||
DumpTrackInfo();
|
||||
G4cerr << ee_banner << G4endl;
|
||||
G4RunManager::GetRunManager()->AbortRun(false);
|
||||
}
|
||||
abortionForCoreDump = false;
|
||||
@@ -112,8 +115,9 @@ G4bool G4ExceptionHandler::Notify(const char* originOfException,
|
||||
case EventMustBeAborted:
|
||||
if(aps==G4State_EventProc)
|
||||
{
|
||||
G4cerr << es_banner << message.str() << "*** Event Must Be Aborted ***"
|
||||
<< ee_banner << G4endl;
|
||||
G4cerr << es_banner << message.str() << "*** Event Must Be Aborted ***" << G4endl;
|
||||
DumpTrackInfo();
|
||||
G4cerr << ee_banner << G4endl;
|
||||
G4RunManager::GetRunManager()->AbortEvent();
|
||||
}
|
||||
abortionForCoreDump = false;
|
||||
@@ -126,3 +130,104 @@ G4bool G4ExceptionHandler::Notify(const char* originOfException,
|
||||
}
|
||||
return abortionForCoreDump;
|
||||
}
|
||||
|
||||
#include "G4RunManagerKernel.hh"
|
||||
#include "G4EventManager.hh"
|
||||
#include "G4TrackingManager.hh"
|
||||
#include "G4SteppingManager.hh"
|
||||
#include "G4Track.hh"
|
||||
#include "G4Step.hh"
|
||||
#include "G4StepPoint.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4VProcess.hh"
|
||||
#include "G4VPhysicalVolume.hh"
|
||||
#include "G4Material.hh"
|
||||
#include "G4UnitsTable.hh"
|
||||
|
||||
void G4ExceptionHandler::DumpTrackInfo()
|
||||
{
|
||||
G4ApplicationState aps = G4StateManager::GetStateManager()->GetCurrentState();
|
||||
G4SteppingManager* steppingMgr = G4RunManagerKernel::GetRunManagerKernel()
|
||||
->GetTrackingManager()->GetSteppingManager();
|
||||
const G4Track* theTrack = steppingMgr->GetfTrack();
|
||||
const G4Step* theStep = steppingMgr->GetfStep();
|
||||
|
||||
if(aps!=G4State_EventProc || !theTrack)
|
||||
{
|
||||
G4cerr << " **** Track information is not available at this moment" << G4endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
G4cerr << "G4Track (" << theTrack << ") - track ID = " << theTrack->GetTrackID()
|
||||
<< ", parent ID = " << theTrack->GetParentID() << G4endl;
|
||||
G4cerr << " Particle type : " << theTrack->GetParticleDefinition()->GetParticleName();
|
||||
if(theTrack->GetCreatorProcess())
|
||||
{ G4cerr
|
||||
<< " - creator process : " << theTrack->GetCreatorProcess()->GetProcessName()
|
||||
<< ", creator model : " << theTrack->GetCreatorModelName() << G4endl;
|
||||
}
|
||||
else
|
||||
{ G4cerr << " - creator process : not available" << G4endl; }
|
||||
G4cerr << " Kinetic energy : " << G4BestUnit(theTrack->GetKineticEnergy(),"Energy")
|
||||
<< " - Momentum direction : " << theTrack->GetMomentumDirection() << G4endl;
|
||||
}
|
||||
|
||||
if(aps!=G4State_EventProc || !theStep)
|
||||
{
|
||||
G4cerr << " **** Step information is not available at this moment" << G4endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
G4cerr << " Step length : " << G4BestUnit(theStep->GetStepLength(),"Length")
|
||||
<< " - total energy deposit : " << G4BestUnit(theStep->GetTotalEnergyDeposit(),"Energy")
|
||||
<< G4endl;
|
||||
G4cerr << " Pre-step point : " << theStep->GetPreStepPoint()->GetPosition();
|
||||
G4cerr << " - Physical volume : ";
|
||||
if(theStep->GetPreStepPoint()->GetPhysicalVolume())
|
||||
{
|
||||
G4cerr << theStep->GetPreStepPoint()->GetPhysicalVolume()->GetName();
|
||||
if(theStep->GetPreStepPoint()->GetMaterial())
|
||||
{ G4cerr << " (" << theStep->GetPreStepPoint()->GetMaterial()->GetName() << ")"; }
|
||||
else
|
||||
{ G4cerr << " (material not available)"; }
|
||||
}
|
||||
else
|
||||
{ G4cerr << "not available"; }
|
||||
G4cerr << G4endl;
|
||||
if(theStep->GetPreStepPoint()->GetProcessDefinedStep())
|
||||
{
|
||||
G4cerr << " - defined by : "
|
||||
<< theStep->GetPreStepPoint()->GetProcessDefinedStep()->GetProcessName()
|
||||
<< " - step status : " << theStep->GetPreStepPoint()->GetStepStatus() << G4endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
G4cerr << " - defined by : not available" << G4endl;
|
||||
}
|
||||
G4cerr << " Post-step point : " << theStep->GetPostStepPoint()->GetPosition();
|
||||
G4cerr << " - Physical volume : ";
|
||||
if(theStep->GetPostStepPoint()->GetPhysicalVolume())
|
||||
{
|
||||
G4cerr << theStep->GetPostStepPoint()->GetPhysicalVolume()->GetName();
|
||||
if(theStep->GetPostStepPoint()->GetMaterial())
|
||||
{ G4cerr << " (" << theStep->GetPostStepPoint()->GetMaterial()->GetName() << ")"; }
|
||||
else
|
||||
{ G4cerr << " (material not available)"; }
|
||||
}
|
||||
else
|
||||
{ G4cerr << "not available"; }
|
||||
G4cerr << G4endl;
|
||||
if(theStep->GetPostStepPoint()->GetProcessDefinedStep())
|
||||
{
|
||||
G4cerr << " - defined by : "
|
||||
<< theStep->GetPostStepPoint()->GetProcessDefinedStep()->GetProcessName()
|
||||
<< " - step status : " << theStep->GetPostStepPoint()->GetStepStatus() << G4endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
G4cerr << " - defined by : not available" << G4endl;
|
||||
}
|
||||
G4cerr << " *** Note: Step information might not be properly updated." << G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user