Import Geant4 10.6.0 source tree

This commit is contained in:
Gabriele Cosmo
2019-12-06 15:12:28 +01:00
parent b2a62ae692
commit 5baee230e9
2997 changed files with 141580 additions and 98673 deletions
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm14/src/DetectorConstruction.cc
/// \file DetectorConstruction.cc
/// \brief Implementation of the DetectorConstruction class
//
//
@@ -153,7 +153,7 @@ void DetectorConstruction::DefineMaterials()
new G4Material("Uranium" , z=92., a=238.03*g/mole, density= 18.95*g/cm3);
G4cout << *(G4Material::GetMaterialTable()) << G4endl;
/// G4cout << *(G4Material::GetMaterialTable()) << G4endl;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -195,6 +195,7 @@ void DetectorConstruction::PrintParameters()
{
G4cout << "\n The Box is " << G4BestUnit(fBoxSize,"Length")
<< " of " << fMaterial->GetName() << G4endl;
G4cout << "\n" << fMaterial << G4endl;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm14/src/DetectorMessenger.cc
/// \file DetectorMessenger.cc
/// \brief Implementation of the DetectorMessenger class
//
//
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm18/src/PhysListEmLivermore.cc
/// \file PhysListEmLivermore.cc
/// \brief Implementation of the PhysListEmLivermore class
//
//
@@ -35,7 +35,6 @@
#include "G4BuilderType.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
#include "G4PhysicsListHelper.hh"
// gamma
@@ -93,8 +92,6 @@ PhysListEmLivermore::PhysListEmLivermore(const G4String& name)
param->SetMaxEnergy(10*TeV);
param->SetNumberOfBinsPerDecade(10);
param->SetBuildCSDARange(true);
param->SetMaxEnergyForCSDARange(10*TeV);
SetPhysicsType(bElectromagnetic);
param->SetVerbose(0);
param->Dump();
@@ -109,14 +106,13 @@ PhysListEmLivermore::~PhysListEmLivermore()
void PhysListEmLivermore::ConstructProcess()
{
G4PhysicsListHelper* list = G4PhysicsListHelper::GetPhysicsListHelper();
// Add Livermore EM Processes
auto particleIterator=GetParticleIterator();
particleIterator->reset();
while( (*particleIterator)() ){
G4ParticleDefinition* particle = particleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
G4String particleName = particle->GetParticleName();
//Applicability range for Livermore models
@@ -131,28 +127,29 @@ void PhysListEmLivermore::ConstructProcess()
photModel = new G4LivermorePhotoElectricModel();
photModel->SetHighEnergyLimit(highEnergyLimit);
phot->AddEmModel(0, photModel);
list->RegisterProcess(phot, particle);
///list->RegisterProcess(phot, particle);
pmanager->AddDiscreteProcess(phot);
G4ComptonScattering* compt = new G4ComptonScattering();
G4LivermoreComptonModel*
comptModel = new G4LivermoreComptonModel();
comptModel->SetHighEnergyLimit(highEnergyLimit);
compt->AddEmModel(0, comptModel);
list->RegisterProcess(compt, particle);
pmanager->AddDiscreteProcess(compt);
G4GammaConversion* conv = new G4GammaConversion();
G4LivermoreGammaConversionModel*
convModel = new G4LivermoreGammaConversionModel();
convModel->SetHighEnergyLimit(highEnergyLimit);
conv->AddEmModel(0, convModel);
list->RegisterProcess(conv, particle);
pmanager->AddDiscreteProcess(conv);
G4RayleighScattering* rayl = new G4RayleighScattering();
G4LivermoreRayleighModel*
raylModel = new G4LivermoreRayleighModel();
raylModel->SetHighEnergyLimit(highEnergyLimit);
rayl->AddEmModel(0, raylModel);
list->RegisterProcess(rayl, particle);
pmanager->AddDiscreteProcess(rayl);
} else if (particleName == "e-") {
//electron
@@ -162,38 +159,39 @@ void PhysListEmLivermore::ConstructProcess()
eIoniModel = new G4LivermoreIonisationModel();
eIoniModel->SetHighEnergyLimit(highEnergyLimit);
eIoni->AddEmModel(0, eIoniModel, new G4UniversalFluctuation() );
list->RegisterProcess(eIoni, particle);
pmanager->AddProcess(eIoni, -1,-1, 1);
G4eBremsstrahlung* eBrem = new G4eBremsstrahlung();
G4LivermoreBremsstrahlungModel*
eBremModel = new G4LivermoreBremsstrahlungModel();
eBremModel->SetHighEnergyLimit(highEnergyLimit);
eBrem->AddEmModel(0, eBremModel);
list->RegisterProcess(eBrem, particle);
pmanager->AddProcess(eBrem, -1,-1, 2);
} else if (particleName == "e+") {
//positron
list->RegisterProcess(new G4eIonisation, particle);
list->RegisterProcess(new G4eBremsstrahlung, particle);
list->RegisterProcess(new G4eplusAnnihilation, particle);
pmanager->AddProcess(new G4eIonisation, -1,-1, 1);
pmanager->AddProcess(new G4eBremsstrahlung, -1,-1, 2);
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1, 3);
} else if( particleName == "mu+" ||
particleName == "mu-" ) {
//muon
list->RegisterProcess(new G4MuIonisation, particle);
list->RegisterProcess(new G4MuBremsstrahlung, particle);
list->RegisterProcess(new G4MuPairProduction, particle);
pmanager->AddProcess(new G4MuIonisation, -1,-1, 1);
pmanager->AddProcess(new G4MuBremsstrahlung, -1,-1, 2);
pmanager->AddProcess(new G4MuPairProduction, -1,-1, 3);
} else if( particleName == "alpha" || particleName == "GenericIon" ) {
list->RegisterProcess(new G4ionIonisation, particle);
pmanager->AddProcess(new G4ionIonisation, -1,-1, 1);
} else if ((!particle->IsShortLived()) &&
(particle->GetPDGCharge() != 0.0) &&
(particle->GetParticleName() != "chargedgeantino")) {
//all others charged particles except geantino
list->RegisterProcess(new G4hIonisation, particle);
}
pmanager->AddProcess(new G4hIonisation, -1,-1, 1);
}
}
// Deexcitation
//
G4VAtomDeexcitation* deex = new G4UAtomicDeexcitation();
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm18/src/PhysListEmPenelope.cc
/// \file PhysListEmPenelope.cc
/// \brief Implementation of the PhysListEmPenelope class
//
//
@@ -35,7 +35,6 @@
#include "G4BuilderType.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
#include "G4PhysicsListHelper.hh"
// gamma
@@ -93,9 +92,6 @@ PhysListEmPenelope::PhysListEmPenelope(const G4String& name)
param->SetMinEnergy(10*eV);
param->SetMaxEnergy(10*TeV);
param->SetNumberOfBinsPerDecade(10);
param->SetBuildCSDARange(true);
param->SetMaxEnergyForCSDARange(10*TeV);
SetPhysicsType(bElectromagnetic);
param->SetVerbose(0);
param->Dump();
@@ -110,14 +106,13 @@ PhysListEmPenelope::~PhysListEmPenelope()
void PhysListEmPenelope::ConstructProcess()
{
G4PhysicsListHelper* list = G4PhysicsListHelper::GetPhysicsListHelper();
// Add standard EM Processes
auto particleIterator=GetParticleIterator();
particleIterator->reset();
while( (*particleIterator)() ){
G4ParticleDefinition* particle = particleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
G4String particleName = particle->GetParticleName();
//Applicability range for Penelope models
@@ -132,29 +127,29 @@ void PhysListEmPenelope::ConstructProcess()
photModel = new G4PenelopePhotoElectricModel();
photModel->SetHighEnergyLimit(highEnergyLimit);
phot->AddEmModel(0, photModel);
list->RegisterProcess(phot, particle);
pmanager->AddDiscreteProcess(phot);
G4ComptonScattering* compt = new G4ComptonScattering();
G4PenelopeComptonModel*
comptModel = new G4PenelopeComptonModel();
comptModel->SetHighEnergyLimit(highEnergyLimit);
compt->AddEmModel(0, comptModel);
list->RegisterProcess(compt, particle);
pmanager->AddDiscreteProcess(compt);
G4GammaConversion* conv = new G4GammaConversion();
G4PenelopeGammaConversionModel*
convModel = new G4PenelopeGammaConversionModel();
convModel->SetHighEnergyLimit(highEnergyLimit);
conv->AddEmModel(0, convModel);
list->RegisterProcess(conv, particle);
pmanager->AddDiscreteProcess(conv);
G4RayleighScattering* rayl = new G4RayleighScattering();
G4PenelopeRayleighModel*
raylModel = new G4PenelopeRayleighModel();
raylModel->SetHighEnergyLimit(highEnergyLimit);
rayl->AddEmModel(0, raylModel);
list->RegisterProcess(rayl, particle);
pmanager->AddDiscreteProcess(rayl);
} else if (particleName == "e-") {
//electron
@@ -163,14 +158,14 @@ void PhysListEmPenelope::ConstructProcess()
eIoniModel = new G4PenelopeIonisationModel();
eIoniModel->SetHighEnergyLimit(highEnergyLimit);
eIoni->AddEmModel(0, eIoniModel, new G4UniversalFluctuation() );
list->RegisterProcess(eIoni, particle);
pmanager->AddProcess(eIoni, -1,-1, 1);
G4eBremsstrahlung* eBrem = new G4eBremsstrahlung();
G4PenelopeBremsstrahlungModel*
eBremModel = new G4PenelopeBremsstrahlungModel();
eBremModel->SetHighEnergyLimit(highEnergyLimit);
eBrem->AddEmModel(0, eBremModel);
list->RegisterProcess(eBrem, particle);
pmanager->AddProcess(eBrem, -1,-1, 2);
} else if (particleName == "e+") {
//positron
@@ -179,39 +174,40 @@ void PhysListEmPenelope::ConstructProcess()
eIoniModel = new G4PenelopeIonisationModel();
eIoniModel->SetHighEnergyLimit(highEnergyLimit);
eIoni->AddEmModel(0, eIoniModel, new G4UniversalFluctuation() );
list->RegisterProcess(eIoni, particle);
pmanager->AddProcess(eIoni, -1,-1, 1);
G4eBremsstrahlung* eBrem = new G4eBremsstrahlung();
G4PenelopeBremsstrahlungModel*
eBremModel = new G4PenelopeBremsstrahlungModel();
eBremModel->SetHighEnergyLimit(highEnergyLimit);
eBrem->AddEmModel(0, eBremModel);
list->RegisterProcess(eBrem, particle);
pmanager->AddProcess(eBrem, -1,-1, 2);
G4eplusAnnihilation* eAnni = new G4eplusAnnihilation();
G4PenelopeAnnihilationModel*
eAnniModel = new G4PenelopeAnnihilationModel();
eAnniModel->SetHighEnergyLimit(highEnergyLimit);
eAnni->AddEmModel(0, eAnniModel);
list->RegisterProcess(eAnni, particle);
pmanager->AddProcess(eAnni, 0,-1, 3);
} else if( particleName == "mu+" ||
particleName == "mu-" ) {
//muon
list->RegisterProcess(new G4MuIonisation, particle);
list->RegisterProcess(new G4MuBremsstrahlung, particle);
list->RegisterProcess(new G4MuPairProduction, particle);
pmanager->AddProcess(new G4MuIonisation, -1,-1, 1);
pmanager->AddProcess(new G4MuBremsstrahlung, -1,-1, 2);
pmanager->AddProcess(new G4MuPairProduction, -1,-1, 3);
} else if( particleName == "alpha" || particleName == "GenericIon" ) {
list->RegisterProcess(new G4ionIonisation, particle);
pmanager->AddProcess(new G4ionIonisation, -1,-1, 1);
} else if ((!particle->IsShortLived()) &&
(particle->GetPDGCharge() != 0.0) &&
(particle->GetParticleName() != "chargedgeantino")) {
//all others charged particles except geantino
list->RegisterProcess(new G4hIonisation, particle);
}
pmanager->AddProcess(new G4hIonisation, -1,-1, 1);
}
}
// Deexcitation
//
G4VAtomDeexcitation* deex = new G4UAtomicDeexcitation();
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm18/src/PhysListEmStandard.cc
/// \file PhysListEmStandard.cc
/// \brief Implementation of the PhysListEmStandard class
//
//
@@ -35,13 +35,13 @@
#include "G4BuilderType.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
#include "G4PhysicsListHelper.hh"
#include "G4ComptonScattering.hh"
#include "G4GammaConversion.hh"
#include "G4PhotoElectricEffect.hh"
#include "G4RayleighScattering.hh"
#include "G4PhotoElectricEffect.hh"
#include "G4ComptonScattering.hh"
#include "G4KleinNishinaModel.hh"
#include "G4GammaConversion.hh"
#include "G4GammaConversionToMuons.hh"
#include "G4eIonisation.hh"
#include "G4eBremsstrahlung.hh"
@@ -57,7 +57,6 @@
#include "G4ionIonisation.hh"
#include "G4IonParametrisedLossModel.hh"
#include "G4NuclearStopping.hh"
#include "G4LossTableManager.hh"
#include "G4UAtomicDeexcitation.hh"
@@ -74,9 +73,6 @@ PhysListEmStandard::PhysListEmStandard(const G4String& name)
param->SetMinEnergy(10*eV);
param->SetMaxEnergy(10*TeV);
param->SetNumberOfBinsPerDecade(10);
param->SetBuildCSDARange(true);
param->SetMaxEnergyForCSDARange(10*TeV);
SetPhysicsType(bElectromagnetic);
param->SetVerbose(0);
param->Dump();
@@ -90,71 +86,69 @@ PhysListEmStandard::~PhysListEmStandard()
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysListEmStandard::ConstructProcess()
{
G4PhysicsListHelper* list = G4PhysicsListHelper::GetPhysicsListHelper();
{
// Add standard EM Processes
//
auto particleIterator=GetParticleIterator();
particleIterator->reset();
while( (*particleIterator)() ){
G4ParticleDefinition* particle = particleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
G4String particleName = particle->GetParticleName();
if (particleName == "gamma") {
////list->RegisterProcess(new G4RayleighScattering, particle);
list->RegisterProcess(new G4PhotoElectricEffect, particle);
////pmanager->AddDiscreteProcess(new G4RayleighScattering);
pmanager->AddDiscreteProcess(new G4PhotoElectricEffect);
G4ComptonScattering* compt = new G4ComptonScattering;
compt->SetEmModel(new G4KleinNishinaModel());
list->RegisterProcess(compt, particle);
list->RegisterProcess(new G4GammaConversion, particle);
pmanager->AddDiscreteProcess(compt);
pmanager->AddDiscreteProcess(new G4GammaConversion);
pmanager->AddDiscreteProcess(new G4GammaConversionToMuons);
} else if (particleName == "e-") {
list->RegisterProcess(new G4eIonisation(), particle);
list->RegisterProcess(new G4eBremsstrahlung(), particle);
pmanager->AddProcess(new G4eIonisation, -1,-1,1);
pmanager->AddProcess(new G4eBremsstrahlung, -1,-1,2);
} else if (particleName == "e+") {
list->RegisterProcess(new G4eIonisation(), particle);
list->RegisterProcess(new G4eBremsstrahlung(), particle);
list->RegisterProcess(new G4eplusAnnihilation(), particle);
pmanager->AddProcess(new G4eIonisation, -1,-1,1);
pmanager->AddProcess(new G4eBremsstrahlung, -1,-1,2);
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,3);
} else if (particleName == "mu+" ||
particleName == "mu-" ) {
list->RegisterProcess(new G4MuIonisation(), particle);
list->RegisterProcess(new G4MuBremsstrahlung(), particle);
list->RegisterProcess(new G4MuPairProduction(), particle);
pmanager->AddProcess(new G4MuIonisation, -1,-1,1);
pmanager->AddProcess(new G4MuBremsstrahlung, -1,-1,2);
pmanager->AddProcess(new G4MuPairProduction, -1,-1,3);
} else if( particleName == "proton" ||
particleName == "pi-" ||
particleName == "pi+" ) {
list->RegisterProcess(new G4hIonisation(), particle);
list->RegisterProcess(new G4hBremsstrahlung(), particle);
list->RegisterProcess(new G4hPairProduction(), particle);
pmanager->AddProcess(new G4hIonisation, -1,-1,1);
pmanager->AddProcess(new G4hBremsstrahlung, -1,-1,2);
pmanager->AddProcess(new G4hPairProduction, -1,-1,3);
} else if( particleName == "alpha" ||
particleName == "He3" ) {
list->RegisterProcess(new G4ionIonisation(), particle);
list->RegisterProcess(new G4NuclearStopping(), particle);
pmanager->AddProcess(new G4ionIonisation, -1,-1,1);
} else if( particleName == "GenericIon" ) {
G4ionIonisation* ionIoni = new G4ionIonisation();
ionIoni->SetEmModel(new G4IonParametrisedLossModel());
list->RegisterProcess(ionIoni, particle);
list->RegisterProcess(new G4NuclearStopping(), particle);
pmanager->AddProcess(ionIoni, -1,-1,1);
} else if ((!particle->IsShortLived()) &&
(particle->GetPDGCharge() != 0.0) &&
(particle->GetParticleName() != "chargedgeantino")) {
//all others charged particles except geantino
list->RegisterProcess(new G4hIonisation(), particle);
pmanager->AddProcess(new G4hIonisation, -1,-1,1);
}
}
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm14/src/PhysicsList.cc
/// \file PhysicsList.cc
/// \brief Implementation of the PhysicsList class
//
//
@@ -60,7 +60,6 @@ PhysicsList::PhysicsList()
fMessenger(0)
{
G4LossTableManager::Instance();
SetDefaultCutValue(1.0*mm);
fMessenger = new PhysicsListMessenger(this);
@@ -159,3 +158,20 @@ void PhysicsList::AddPhysicsList(const G4String& name)
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4Gamma.hh"
#include "G4Electron.hh"
#include "G4Positron.hh"
void PhysicsList::SetCuts()
{
// fixe lower limit for cut
G4ProductionCutsTable::GetProductionCutsTable()->SetEnergyRange(100*eV, 1*GeV);
// call base class method to set cuts which default value can be
// modified via /run/setCut/* commands
G4VUserPhysicsList::SetCuts();
DumpCutValuesTable();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm14/src/PhysicsListMessenger.cc
/// \file PhysicsListMessenger.cc
/// \brief Implementation of the PhysicsListMessenger class
//
//
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm14/src/PrimaryGeneratorAction.cc
/// \file PrimaryGeneratorAction.cc
/// \brief Implementation of the PrimaryGeneratorAction class
//
//
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm14/src/Run.cc
/// \file Run.cc
/// \brief Implementation of the Run class
//
//
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm14/src/RunAction.cc
/// \file RunAction.cc
/// \brief Implementation of the RunAction class
//
//
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm14/src/SteppingAction.cc
/// \file SteppingAction.cc
/// \brief Implementation of the SteppingAction class
//
//
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm14/src/SteppingVerbose.cc
/// \file SteppingVerbose.cc
/// \brief Implementation of the SteppingVerbose class
//
//