Import Geant4 10.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-10 11:51:14 +02:00
parent e2d2f9810a
commit 286caacf06
12421 changed files with 730077 additions and 502383 deletions
@@ -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.....