Import Geant4 10.0.0 source tree
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
/// \file F05ActionInitialization.cc
|
||||
/// \brief Implementation of the F04ActionInitialization class
|
||||
|
||||
#include "F05ActionInitialization.hh"
|
||||
#include "F05PrimaryGeneratorAction.hh"
|
||||
#include "F05SteppingAction.hh"
|
||||
#include "F05SteppingVerbose.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
F05ActionInitialization::F05ActionInitialization()
|
||||
: G4VUserActionInitialization()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
F05ActionInitialization::~F05ActionInitialization()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void F05ActionInitialization::BuildForMaster() const
|
||||
{
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void F05ActionInitialization::Build() const
|
||||
{
|
||||
SetUserAction(new F05PrimaryGeneratorAction());
|
||||
SetUserAction(new F05SteppingAction());
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4VSteppingVerbose* F05ActionInitialization::InitializeSteppingVerbose() const
|
||||
{
|
||||
return new F05SteppingVerbose();
|
||||
}
|
||||
@@ -23,12 +23,11 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: F05DetectorConstruction.cc 75672 2013-11-05 08:47:41Z gcosmo $
|
||||
//
|
||||
/// \file field/field05/src/F05DetectorConstruction.cc
|
||||
/// \brief Implementation of the F05DetectorConstruction class
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -55,25 +54,32 @@
|
||||
|
||||
#include "F05Field.hh"
|
||||
|
||||
#include "G4RunManager.hh"
|
||||
#include "G4FieldManager.hh"
|
||||
#include "G4TransportationManager.hh"
|
||||
|
||||
//#include "G4RepleteEofM.hh"
|
||||
#include "G4EqEMFieldWithSpin.hh"
|
||||
|
||||
#include "G4ClassicalRK4.hh"
|
||||
#include "G4MagIntegratorStepper.hh"
|
||||
#include "G4ChordFinder.hh"
|
||||
#include "G4PropagatorInField.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
F05DetectorConstruction::F05DetectorConstruction()
|
||||
: Vacuum(0), field(0)
|
||||
: fVacuum(0), fWorldSizeXY(0), fWorldSizeZ(0),
|
||||
fSolidWorld(0), fLogicWorld(0), fPhysiWorld(0)
|
||||
{
|
||||
// materials
|
||||
DefineMaterials();
|
||||
|
||||
// ensure the global field is initialized
|
||||
field = new F05Field();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
F05DetectorConstruction::~F05DetectorConstruction()
|
||||
{
|
||||
delete field;
|
||||
if (fField) delete fField;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -82,7 +88,7 @@ void F05DetectorConstruction::DefineMaterials()
|
||||
{
|
||||
G4NistManager* nistMan = G4NistManager::Instance();
|
||||
|
||||
Vacuum = nistMan->FindOrBuildMaterial("G4_Galactic");
|
||||
fVacuum = nistMan->FindOrBuildMaterial("G4_Galactic");
|
||||
|
||||
G4cout << *(G4Material::GetMaterialTable()) << G4endl;
|
||||
}
|
||||
@@ -91,42 +97,96 @@ void F05DetectorConstruction::DefineMaterials()
|
||||
|
||||
G4VPhysicalVolume* F05DetectorConstruction::Construct()
|
||||
{
|
||||
//
|
||||
//
|
||||
// World
|
||||
//
|
||||
|
||||
WorldSizeXY = 20.0*m;
|
||||
WorldSizeZ = 1.0*mm;
|
||||
fWorldSizeXY = 20.0*m;
|
||||
fWorldSizeZ = 1.0*mm;
|
||||
|
||||
solidWorld = new G4Box("World", //its name
|
||||
WorldSizeXY/2,WorldSizeXY/2,WorldSizeZ/2);//its size
|
||||
|
||||
logicWorld = new G4LogicalVolume(solidWorld, //its solid
|
||||
Vacuum, //its material
|
||||
"World"); //its name
|
||||
|
||||
physiWorld = new G4PVPlacement(0, //no rotation
|
||||
G4ThreeVector(), //at (0,0,0)
|
||||
logicWorld, //its logical volume
|
||||
"World", //its name
|
||||
0, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
fSolidWorld = new G4Box("World", //its name
|
||||
fWorldSizeXY/2,fWorldSizeXY/2,fWorldSizeZ/2); //its size
|
||||
|
||||
fLogicWorld = new G4LogicalVolume(fSolidWorld, //its solid
|
||||
fVacuum, //its material
|
||||
"World"); //its name
|
||||
|
||||
fPhysiWorld = new G4PVPlacement(0, //no rotation
|
||||
G4ThreeVector(), //at (0,0,0)
|
||||
fLogicWorld, //its logical volume
|
||||
"World", //its name
|
||||
0, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
G4UserLimits* stepLimit;
|
||||
stepLimit = new G4UserLimits(5*mm);
|
||||
stepLimit = new G4UserLimits(5*mm);
|
||||
|
||||
logicWorld->SetUserLimits(stepLimit);
|
||||
fLogicWorld->SetUserLimits(stepLimit);
|
||||
|
||||
//
|
||||
//
|
||||
// Visualization attributes
|
||||
//
|
||||
// logicWorld->SetVisAttributes (G4VisAttributes::Invisible);
|
||||
// fLogicWorld->SetVisAttributes (G4VisAttributes::Invisible);
|
||||
|
||||
//
|
||||
//always return the physical World
|
||||
//
|
||||
return physiWorld;
|
||||
return fPhysiWorld;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4ThreadLocal F05Field* F05DetectorConstruction::fField = 0;
|
||||
|
||||
void F05DetectorConstruction::ConstructSDandField()
|
||||
|
||||
{
|
||||
if (!fField) {
|
||||
|
||||
fField = new F05Field();
|
||||
|
||||
// G4RepleteEofM* equation = new G4RepleteEofM(fField);
|
||||
G4EqEMFieldWithSpin* equation = new G4EqEMFieldWithSpin(fField);
|
||||
// equation->SetBField();
|
||||
// equation->SetEField();
|
||||
// equation->SetSpin();
|
||||
|
||||
G4FieldManager* fieldManager
|
||||
= G4TransportationManager::GetTransportationManager()->GetFieldManager();
|
||||
fieldManager->SetDetectorField(fField);
|
||||
|
||||
G4MagIntegratorStepper* stepper = new G4ClassicalRK4(equation,12);
|
||||
|
||||
G4double minStep = 0.01*mm;
|
||||
|
||||
G4ChordFinder* chordFinder =
|
||||
new G4ChordFinder((G4MagneticField*)fField,minStep,stepper);
|
||||
|
||||
// Set accuracy parameters
|
||||
G4double deltaChord = 3.0*mm;
|
||||
chordFinder->SetDeltaChord( deltaChord );
|
||||
|
||||
G4double deltaOneStep = 0.01*mm;
|
||||
fieldManager->SetAccuraciesWithDeltaOneStep(deltaOneStep);
|
||||
|
||||
G4double deltaIntersection = 0.1*mm;
|
||||
fieldManager->SetDeltaIntersection(deltaIntersection);
|
||||
|
||||
G4TransportationManager* transportManager =
|
||||
G4TransportationManager::GetTransportationManager();
|
||||
|
||||
G4PropagatorInField* fieldPropagator =
|
||||
transportManager->GetPropagatorInField();
|
||||
|
||||
G4double epsMin = 2.5e-7*mm;
|
||||
G4double epsMax = 0.05*mm;
|
||||
|
||||
fieldPropagator->SetMinimumEpsilonStep(epsMin);
|
||||
fieldPropagator->SetMaximumEpsilonStep(epsMax);
|
||||
|
||||
fieldManager->SetChordFinder(chordFinder);
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -23,12 +23,12 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: F05ExtraPhysics.cc 69563 2013-05-08 12:30:36Z gcosmo $
|
||||
//
|
||||
/// \file field/field05/src/F05ExtraPhysics.cc
|
||||
/// \brief Implementation of the F05ExtraPhysics class
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
@@ -39,19 +39,27 @@
|
||||
|
||||
#include "F05ExtraPhysics.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
F05ExtraPhysics::F05ExtraPhysics()
|
||||
: G4VPhysicsConstructor("Extra") {;}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
F05ExtraPhysics::~F05ExtraPhysics() {;}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void F05ExtraPhysics::ConstructParticle() {;}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void F05ExtraPhysics::ConstructProcess()
|
||||
{
|
||||
theParticleIterator->reset();
|
||||
aParticleIterator->reset();
|
||||
|
||||
while ((*theParticleIterator)()) {
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
while ((*aParticleIterator)()) {
|
||||
G4ParticleDefinition* particle = aParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
G4double charge = particle->GetPDGCharge();
|
||||
|
||||
@@ -23,84 +23,36 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: F05Field.cc 75672 2013-11-05 08:47:41Z gcosmo $
|
||||
//
|
||||
/// \file field/field05/src/F05Field.cc
|
||||
/// \brief Implementation of the F05Field class
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "F05Field.hh"
|
||||
|
||||
#include "G4FieldManager.hh"
|
||||
#include "G4TransportationManager.hh"
|
||||
|
||||
#include "G4EqEMFieldWithSpin.hh"
|
||||
#include "G4ChordFinder.hh"
|
||||
#include "G4PropagatorInField.hh"
|
||||
|
||||
#include "G4MagIntegratorStepper.hh"
|
||||
#include "G4ClassicalRK4.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
F05Field::F05Field() : G4ElectroMagneticField()
|
||||
{
|
||||
fEquation = new G4EqEMFieldWithSpin(this);
|
||||
|
||||
G4FieldManager* fieldMgr
|
||||
= G4TransportationManager::GetTransportationManager()->GetFieldManager();
|
||||
|
||||
fieldMgr->SetDetectorField(this);
|
||||
|
||||
fStepper = new G4ClassicalRK4(fEquation,12);
|
||||
|
||||
G4double minStep = 0.01*mm;
|
||||
|
||||
fChordFinder = new G4ChordFinder((G4MagneticField*)this,minStep,fStepper);
|
||||
|
||||
// Set accuracy parameters
|
||||
G4double deltaChord = 3.0*mm;
|
||||
fChordFinder->SetDeltaChord( deltaChord );
|
||||
|
||||
G4double deltaOneStep = 0.01*mm;
|
||||
fieldMgr->SetAccuraciesWithDeltaOneStep(deltaOneStep);
|
||||
|
||||
G4double deltaIntersection = 0.1*mm;
|
||||
fieldMgr->SetDeltaIntersection(deltaIntersection);
|
||||
|
||||
G4TransportationManager* fTransportManager =
|
||||
G4TransportationManager::GetTransportationManager();
|
||||
|
||||
fieldPropagator = fTransportManager->GetPropagatorInField();
|
||||
|
||||
G4double epsMin = 2.5e-7*mm;
|
||||
G4double epsMax = 0.05*mm;
|
||||
|
||||
fieldPropagator->SetMinimumEpsilonStep(epsMin);
|
||||
fieldPropagator->SetMaximumEpsilonStep(epsMax);
|
||||
|
||||
fieldMgr->SetChordFinder(fChordFinder);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
F05Field::~F05Field()
|
||||
{
|
||||
if (fEquation) delete fEquation;
|
||||
if (fStepper) delete fStepper;
|
||||
if (fChordFinder) delete fChordFinder;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void F05Field::GetFieldValue( const G4double Point[3],G4double* Bfield ) const
|
||||
void F05Field::GetFieldValue( const G4double Point[4], G4double* Bfield ) const
|
||||
{
|
||||
// Point[0],Point[1],Point[2] are x-, y-, z-cordinates
|
||||
// Point[0],Point[1],Point[2] are x-, y-, z-cordinates, Point[3] is time
|
||||
|
||||
const G4double Bz = 0.24*tesla;
|
||||
const G4double Er = 2.113987E+6*volt/m;
|
||||
|
||||
@@ -23,13 +23,12 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: F05PhysicsList.cc 75672 2013-11-05 08:47:41Z gcosmo $
|
||||
//
|
||||
/// \file field/field05/src/F05PhysicsList.cc
|
||||
/// \brief Implementation of the F05PhysicsList class
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
#include "F05PhysicsList.hh"
|
||||
|
||||
#include "F05ExtraPhysics.hh"
|
||||
@@ -48,19 +47,26 @@
|
||||
#include "G4MuonDecayChannelWithSpin.hh"
|
||||
#include "G4MuonRadiativeDecayChannelWithSpin.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
F05PhysicsList::F05PhysicsList() : G4VModularPhysicsList()
|
||||
{
|
||||
RegisterPhysics(new G4DecayPhysics());
|
||||
RegisterPhysics(new F05ExtraPhysics());
|
||||
}
|
||||
|
||||
F05PhysicsList::~F05PhysicsList()
|
||||
{;}
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
F05PhysicsList::~F05PhysicsList() {;}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void F05PhysicsList::ConstructParticle()
|
||||
{
|
||||
G4VModularPhysicsList::ConstructParticle();
|
||||
|
||||
G4GenericIon::GenericIonDefinition();
|
||||
|
||||
G4DecayTable* MuonPlusDecayTable = new G4DecayTable();
|
||||
MuonPlusDecayTable -> Insert(new
|
||||
G4MuonDecayChannelWithSpin("mu+",0.986));
|
||||
@@ -76,6 +82,8 @@ void F05PhysicsList::ConstructParticle()
|
||||
G4MuonMinus::MuonMinusDefinition() -> SetDecayTable(MuonMinusDecayTable);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void F05PhysicsList::ConstructProcess()
|
||||
{
|
||||
G4VModularPhysicsList::ConstructProcess();
|
||||
@@ -138,6 +146,8 @@ void F05PhysicsList::ConstructProcess()
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void F05PhysicsList::SetCuts()
|
||||
{
|
||||
SetCutsWithDefault();
|
||||
|
||||
@@ -23,12 +23,11 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: F05PrimaryGeneratorAction.cc 69563 2013-05-08 12:30:36Z gcosmo $
|
||||
//
|
||||
/// \file field/field05/src/F05PrimaryGeneratorAction.cc
|
||||
/// \brief Implementation of the F05PrimaryGeneratorAction class
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -49,19 +48,19 @@
|
||||
F05PrimaryGeneratorAction::F05PrimaryGeneratorAction(void)
|
||||
{
|
||||
G4int n_particle = 1;
|
||||
particleGun = new G4ParticleGun(n_particle);
|
||||
fParticleGun = new G4ParticleGun(n_particle);
|
||||
|
||||
G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
|
||||
G4ParticleDefinition* particle = particleTable->FindParticle("mu+");
|
||||
|
||||
particleGun->SetParticleDefinition(particle);
|
||||
fParticleGun->SetParticleDefinition(particle);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
F05PrimaryGeneratorAction::~F05PrimaryGeneratorAction()
|
||||
{
|
||||
delete particleGun;
|
||||
delete fParticleGun;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -80,12 +79,12 @@ void F05PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
|
||||
G4double y0 = 0.00*m;
|
||||
G4double z0 = 0.00*m;
|
||||
|
||||
particleGun->SetParticleEnergy(Kmu);
|
||||
particleGun->SetParticlePosition(G4ThreeVector(x0,y0,z0));
|
||||
particleGun->SetParticlePolarization(G4ThreeVector(0.,1.,0.));
|
||||
particleGun->SetParticleMomentumDirection(G4ThreeVector(0.,1.,0.));
|
||||
fParticleGun->SetParticleEnergy(Kmu);
|
||||
fParticleGun->SetParticlePosition(G4ThreeVector(x0,y0,z0));
|
||||
fParticleGun->SetParticlePolarization(G4ThreeVector(0.,1.,0.));
|
||||
fParticleGun->SetParticleMomentumDirection(G4ThreeVector(0.,1.,0.));
|
||||
|
||||
particleGun->GeneratePrimaryVertex(anEvent);
|
||||
fParticleGun->GeneratePrimaryVertex(anEvent);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -23,12 +23,11 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: F05SteppingAction.cc 68021 2013-03-13 13:36:07Z gcosmo $
|
||||
//
|
||||
/// \file field/field05/src/F05SteppingAction.cc
|
||||
/// \brief Implementation of the F05SteppingAction class
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -0,0 +1,194 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
/// \file field/field05/src/F05SteppingVerbose.cc
|
||||
/// \brief Implementation of the F05SteppingVerbose class
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
|
||||
|
||||
#include "F05SteppingVerbose.hh"
|
||||
|
||||
#include "G4SteppingManager.hh"
|
||||
#include "G4UnitsTable.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
|
||||
|
||||
F05SteppingVerbose::F05SteppingVerbose()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
|
||||
|
||||
F05SteppingVerbose::~F05SteppingVerbose()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
|
||||
|
||||
void F05SteppingVerbose::StepInfo()
|
||||
{
|
||||
CopyState();
|
||||
|
||||
G4int prec = G4cout.precision(6);
|
||||
|
||||
if( verboseLevel >= 1 ){
|
||||
if( verboseLevel >= 4 ) VerboseTrack();
|
||||
if( verboseLevel >= 3 ){
|
||||
G4cout << G4endl;
|
||||
G4cout << std::setw( 5) << "#Step#" << " "
|
||||
<< std::setw(10) << "X" << " "
|
||||
<< std::setw(10) << "Y" << " "
|
||||
<< std::setw(10) << "Z" << " "
|
||||
<< std::setw(10) << "Direction x" << " "
|
||||
<< std::setw(10) << "dir y" << " "
|
||||
<< std::setw(10) << "dir z" << " "
|
||||
<< std::setw( 8) << "Time" << " "
|
||||
<< std::setw( 6) << "dEStep" << " "
|
||||
<< std::setw(10) << "StepLeng"
|
||||
<< std::setw(10) << "TrakLeng"
|
||||
<< std::setw(10) << "NextVolu"
|
||||
<< std::setw(10) << "Process" << " "
|
||||
<< G4endl;
|
||||
}
|
||||
|
||||
G4cout << std::setw( 5) << fTrack->GetCurrentStepNumber() << " "
|
||||
<< std::setw(10) << G4BestUnit(fTrack->GetPosition().x(),"Length")
|
||||
<< std::setw(10) << G4BestUnit(fTrack->GetPosition().y(),"Length")
|
||||
<< std::setw(10) << G4BestUnit(fTrack->GetPosition().z(),"Length");
|
||||
G4cout << std::setw(10) << fTrack->GetMomentumDirection().x() << " "
|
||||
<< std::setw(10) << fTrack->GetMomentumDirection().y() << " "
|
||||
<< std::setw(10) << fTrack->GetMomentumDirection().z() << " ";
|
||||
G4cout << std::setw( 8) << G4BestUnit(fTrack->GetGlobalTime(),"Time")
|
||||
<< std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy")
|
||||
<< std::setw(10) << G4BestUnit(fStep->GetStepLength(),"Length")
|
||||
<< std::setw(10) << G4BestUnit(fTrack->GetTrackLength(),"Length");
|
||||
|
||||
if( fTrack->GetNextVolume() != 0 ) {
|
||||
G4cout << std::setw(10) << fTrack->GetVolume()->GetName();
|
||||
} else {
|
||||
G4cout << std::setw(10) << "OutOfWorld";
|
||||
}
|
||||
|
||||
if(fStep->GetPostStepPoint()->GetProcessDefinedStep() != 0){
|
||||
G4cout << " "
|
||||
<< std::setw(10) << fStep->GetPostStepPoint()->GetProcessDefinedStep()
|
||||
->GetProcessName();
|
||||
} else {
|
||||
G4cout << " UserLimit";
|
||||
}
|
||||
G4cout << G4endl;
|
||||
|
||||
if( verboseLevel == 2 ){
|
||||
G4int tN2ndariesTot = fN2ndariesAtRestDoIt +
|
||||
fN2ndariesAlongStepDoIt +
|
||||
fN2ndariesPostStepDoIt;
|
||||
if(tN2ndariesTot>0){
|
||||
G4cout << " :----- List of 2ndaries - "
|
||||
<< "#SpawnInStep=" << std::setw(3) << tN2ndariesTot
|
||||
<< "(Rest=" << std::setw(2) << fN2ndariesAtRestDoIt
|
||||
<< ",Along=" << std::setw(2) << fN2ndariesAlongStepDoIt
|
||||
<< ",Post=" << std::setw(2) << fN2ndariesPostStepDoIt
|
||||
<< "), "
|
||||
<< "#SpawnTotal=" << std::setw(3) << (*fSecondary).size()
|
||||
<< " ---------------"
|
||||
<< G4endl;
|
||||
|
||||
for(size_t lp1=(*fSecondary).size()-tN2ndariesTot;
|
||||
lp1<(*fSecondary).size(); lp1++)
|
||||
{
|
||||
G4cout << " : "
|
||||
<< std::setw(6)
|
||||
<< G4BestUnit((*fSecondary)[lp1]->GetPosition().x(),"Length")
|
||||
<< std::setw(6)
|
||||
<< G4BestUnit((*fSecondary)[lp1]->GetPosition().y(),"Length")
|
||||
<< std::setw(6)
|
||||
<< G4BestUnit((*fSecondary)[lp1]->GetPosition().z(),"Length")
|
||||
<< std::setw(6)
|
||||
<< G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy(),"Energy")
|
||||
<< std::setw(10)
|
||||
<< (*fSecondary)[lp1]->GetDefinition()->GetParticleName();
|
||||
G4cout << G4endl;
|
||||
}
|
||||
|
||||
G4cout << " :-----------------------------"
|
||||
<< "----------------------------------"
|
||||
<< "-- EndOf2ndaries Info ---------------"
|
||||
<< G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
G4cout.precision(prec);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
|
||||
|
||||
void F05SteppingVerbose::TrackingStarted()
|
||||
{
|
||||
|
||||
CopyState();
|
||||
G4int prec = G4cout.precision(6);
|
||||
if( verboseLevel > 0 ){
|
||||
|
||||
G4cout << std::setw( 5) << "Step#" << " "
|
||||
<< std::setw(10) << "X" << " "
|
||||
<< std::setw(10) << "Y" << " "
|
||||
<< std::setw(10) << "Z" << " "
|
||||
<< std::setw(10) << "Direction x" << " "
|
||||
<< std::setw(10) << "dir y" << " "
|
||||
<< std::setw(10) << "dir z" << " "
|
||||
<< std::setw(10) << "Time" << " "
|
||||
<< std::setw(10) << "dEStep" << " "
|
||||
<< std::setw(10) << "StepLeng"
|
||||
<< std::setw(10) << "TrakLeng"
|
||||
<< std::setw(10) << "Volume" << " "
|
||||
<< std::setw(10) << "Process"
|
||||
<< G4endl;
|
||||
|
||||
G4cout << std::setw( 5) << fTrack->GetCurrentStepNumber() << " "
|
||||
<< std::setw(10) << G4BestUnit(fTrack->GetPosition().x(),"Length")
|
||||
<< std::setw(10) << G4BestUnit(fTrack->GetPosition().y(),"Length")
|
||||
<< std::setw(10) << G4BestUnit(fTrack->GetPosition().z(),"Length");
|
||||
G4cout << std::setw(10) << fTrack->GetMomentumDirection().x() << " "
|
||||
<< std::setw(10) << fTrack->GetMomentumDirection().y() << " "
|
||||
<< std::setw(10) << fTrack->GetMomentumDirection().z() << " ";
|
||||
G4cout << std::setw( 8) << G4BestUnit(fTrack->GetGlobalTime(),"Time")
|
||||
<< std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy")
|
||||
<< std::setw(10) << G4BestUnit(fStep->GetStepLength(),"Length")
|
||||
<< std::setw(10) << G4BestUnit(fTrack->GetTrackLength(),"Length");
|
||||
|
||||
if(fTrack->GetNextVolume()){
|
||||
G4cout << std::setw(10) << fTrack->GetVolume()->GetName();
|
||||
} else {
|
||||
G4cout << std::setw(10) << "OutOfWorld";
|
||||
}
|
||||
G4cout << " initStep" << G4endl;
|
||||
}
|
||||
G4cout.precision(prec);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
|
||||
Reference in New Issue
Block a user