Import Geant4 10.4.2 source tree

This commit is contained in:
Gabriele Cosmo
2018-05-25 16:18:53 +02:00
parent fe04dcb406
commit fe81a77428
233 changed files with 44301 additions and 105671 deletions
+5 -1
View File
@@ -1,4 +1,4 @@
$Id: History 108682 2018-02-27 07:54:34Z gcosmo $
$Id: History 110119 2018-05-15 12:22:31Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -17,6 +17,10 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
April 3, 2018, M. Asai (run-V10-03-19)
- G4ExceptionHandler: Add track/step/volume information when
exception happens while event is in process.
February 27, 2018, G. Cosmo (run-V10-03-18)
- G4RunManagerKernel: updated also MT banner.
+3 -1
View File
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: G4ExceptionHandler.hh 66892 2013-01-17 10:57:59Z gunter $
// $Id: G4ExceptionHandler.hh 110119 2018-05-15 12:22:31Z gcosmo $
//
//
// ------------------------------------------------------------
@@ -79,6 +79,8 @@ private:
G4ExceptionHandler(const G4ExceptionHandler &right);
G4ExceptionHandler& operator=(const G4ExceptionHandler &right);
private:
void DumpTrackInfo();
};
#endif
+114 -9
View File
@@ -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;
}
}