Import Geant4 10.5.0.beta source tree

This commit is contained in:
Gabriele Cosmo
2018-06-29 10:58:11 +02:00
parent fe81a77428
commit 6aa23be517
1581 changed files with 124288 additions and 83758 deletions
@@ -23,18 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm14/src/PhysListEmLivermore.cc
/// \file electromagnetic/TestEm18/src/PhysListEmLivermore.cc
/// \brief Implementation of the PhysListEmLivermore class
//
//
// $Id: PhysListEmLivermore.cc 100278 2016-10-17 08:34:03Z gcosmo $
// $Id: PhysListEmLivermore.cc 108013 2017-12-19 09:03:56Z gcosmo $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "PhysListEmLivermore.hh"
#include "G4BuilderType.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
#include "G4PhysicsListHelper.hh"
// gamma
@@ -74,6 +76,8 @@
#include "G4hIonisation.hh"
#include "G4ionIonisation.hh"
// deexcitation
#include "G4LossTableManager.hh"
#include "G4UAtomicDeexcitation.hh"
@@ -83,7 +87,19 @@
PhysListEmLivermore::PhysListEmLivermore(const G4String& name)
: G4VPhysicsConstructor(name)
{ }
{
G4EmParameters* param = G4EmParameters::Instance();
param->SetDefaults();
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();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -94,13 +110,14 @@ PhysListEmLivermore::~PhysListEmLivermore()
void PhysListEmLivermore::ConstructProcess()
{
// Add standard EM Processes
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
@@ -115,28 +132,28 @@ void PhysListEmLivermore::ConstructProcess()
photModel = new G4LivermorePhotoElectricModel();
photModel->SetHighEnergyLimit(highEnergyLimit);
phot->AddEmModel(0, photModel);
pmanager->AddDiscreteProcess(phot);
list->RegisterProcess(phot, particle);
G4ComptonScattering* compt = new G4ComptonScattering();
G4LivermoreComptonModel*
comptModel = new G4LivermoreComptonModel();
comptModel->SetHighEnergyLimit(highEnergyLimit);
compt->AddEmModel(0, comptModel);
pmanager->AddDiscreteProcess(compt);
list->RegisterProcess(compt, particle);
G4GammaConversion* conv = new G4GammaConversion();
G4LivermoreGammaConversionModel*
convModel = new G4LivermoreGammaConversionModel();
convModel->SetHighEnergyLimit(highEnergyLimit);
conv->AddEmModel(0, convModel);
pmanager->AddDiscreteProcess(conv);
list->RegisterProcess(conv, particle);
G4RayleighScattering* rayl = new G4RayleighScattering();
G4LivermoreRayleighModel*
raylModel = new G4LivermoreRayleighModel();
raylModel->SetHighEnergyLimit(highEnergyLimit);
rayl->AddEmModel(0, raylModel);
pmanager->AddDiscreteProcess(rayl);
list->RegisterProcess(rayl, particle);
} else if (particleName == "e-") {
//electron
@@ -146,46 +163,42 @@ void PhysListEmLivermore::ConstructProcess()
eIoniModel = new G4LivermoreIonisationModel();
eIoniModel->SetHighEnergyLimit(highEnergyLimit);
eIoni->AddEmModel(0, eIoniModel, new G4UniversalFluctuation() );
pmanager->AddProcess(eIoni, -1,-1, 1);
list->RegisterProcess(eIoni, particle);
G4eBremsstrahlung* eBrem = new G4eBremsstrahlung();
G4LivermoreBremsstrahlungModel*
eBremModel = new G4LivermoreBremsstrahlungModel();
eBremModel->SetHighEnergyLimit(highEnergyLimit);
eBrem->AddEmModel(0, eBremModel);
pmanager->AddProcess(eBrem, -1,-1, 2);
list->RegisterProcess(eBrem, particle);
} else if (particleName == "e+") {
//positron
pmanager->AddProcess(new G4eIonisation, -1,-1, 1);
pmanager->AddProcess(new G4eBremsstrahlung, -1,-1, 2);
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1, 3);
list->RegisterProcess(new G4eIonisation, particle);
list->RegisterProcess(new G4eBremsstrahlung, particle);
list->RegisterProcess(new G4eplusAnnihilation, particle);
} else if( particleName == "mu+" ||
particleName == "mu-" ) {
//muon
pmanager->AddProcess(new G4MuIonisation, -1,-1, 1);
pmanager->AddProcess(new G4MuBremsstrahlung, -1,-1, 2);
pmanager->AddProcess(new G4MuPairProduction, -1,-1, 3);
list->RegisterProcess(new G4MuIonisation, particle);
list->RegisterProcess(new G4MuBremsstrahlung, particle);
list->RegisterProcess(new G4MuPairProduction, particle);
} else if( particleName == "alpha" || particleName == "GenericIon" ) {
pmanager->AddProcess(new G4ionIonisation, -1,-1, 1);
list->RegisterProcess(new G4ionIonisation, particle);
} else if ((!particle->IsShortLived()) &&
(particle->GetPDGCharge() != 0.0) &&
(particle->GetParticleName() != "chargedgeantino")) {
//all others charged particles except geantino
pmanager->AddProcess(new G4hIonisation, -1,-1, 1);
list->RegisterProcess(new G4hIonisation, particle);
}
}
// Deexcitation
//
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
de->SetFluo(true);
de->SetAuger(false);
de->SetPIXE(false);
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
G4VAtomDeexcitation* deex = new G4UAtomicDeexcitation();
G4LossTableManager::Instance()->SetAtomDeexcitation(deex);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,18 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm14/src/PhysListEmPenelope.cc
/// \file electromagnetic/TestEm18/src/PhysListEmPenelope.cc
/// \brief Implementation of the PhysListEmPenelope class
//
//
// $Id: PhysListEmPenelope.cc 100278 2016-10-17 08:34:03Z gcosmo $
// $Id: PhysListEmPenelope.cc 108013 2017-12-19 09:03:56Z gcosmo $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "PhysListEmPenelope.hh"
#include "G4BuilderType.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
#include "G4PhysicsListHelper.hh"
// gamma
@@ -75,6 +77,8 @@
#include "G4hIonisation.hh"
#include "G4ionIonisation.hh"
// deexcitation
#include "G4LossTableManager.hh"
#include "G4UAtomicDeexcitation.hh"
@@ -84,7 +88,19 @@
PhysListEmPenelope::PhysListEmPenelope(const G4String& name)
: G4VPhysicsConstructor(name)
{ }
{
G4EmParameters* param = G4EmParameters::Instance();
param->SetDefaults();
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();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -95,13 +111,14 @@ 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
@@ -116,28 +133,28 @@ void PhysListEmPenelope::ConstructProcess()
photModel = new G4PenelopePhotoElectricModel();
photModel->SetHighEnergyLimit(highEnergyLimit);
phot->AddEmModel(0, photModel);
pmanager->AddDiscreteProcess(phot);
list->RegisterProcess(phot, particle);
G4ComptonScattering* compt = new G4ComptonScattering();
G4PenelopeComptonModel*
comptModel = new G4PenelopeComptonModel();
comptModel->SetHighEnergyLimit(highEnergyLimit);
compt->AddEmModel(0, comptModel);
pmanager->AddDiscreteProcess(compt);
list->RegisterProcess(compt, particle);
G4GammaConversion* conv = new G4GammaConversion();
G4PenelopeGammaConversionModel*
convModel = new G4PenelopeGammaConversionModel();
convModel->SetHighEnergyLimit(highEnergyLimit);
conv->AddEmModel(0, convModel);
pmanager->AddDiscreteProcess(conv);
list->RegisterProcess(conv, particle);
G4RayleighScattering* rayl = new G4RayleighScattering();
G4PenelopeRayleighModel*
raylModel = new G4PenelopeRayleighModel();
raylModel->SetHighEnergyLimit(highEnergyLimit);
rayl->AddEmModel(0, raylModel);
pmanager->AddDiscreteProcess(rayl);
list->RegisterProcess(rayl, particle);
} else if (particleName == "e-") {
//electron
@@ -147,14 +164,14 @@ void PhysListEmPenelope::ConstructProcess()
eIoniModel = new G4PenelopeIonisationModel();
eIoniModel->SetHighEnergyLimit(highEnergyLimit);
eIoni->AddEmModel(0, eIoniModel, new G4UniversalFluctuation() );
pmanager->AddProcess(eIoni, -1,-1, 1);
list->RegisterProcess(eIoni, particle);
G4eBremsstrahlung* eBrem = new G4eBremsstrahlung();
G4PenelopeBremsstrahlungModel*
eBremModel = new G4PenelopeBremsstrahlungModel();
eBremModel->SetHighEnergyLimit(highEnergyLimit);
eBrem->AddEmModel(0, eBremModel);
pmanager->AddProcess(eBrem, -1,-1, 2);
list->RegisterProcess(eBrem, particle);
} else if (particleName == "e+") {
//positron
@@ -163,47 +180,43 @@ void PhysListEmPenelope::ConstructProcess()
eIoniModel = new G4PenelopeIonisationModel();
eIoniModel->SetHighEnergyLimit(highEnergyLimit);
eIoni->AddEmModel(0, eIoniModel, new G4UniversalFluctuation() );
pmanager->AddProcess(eIoni, -1,-1, 1);
list->RegisterProcess(eIoni, particle);
G4eBremsstrahlung* eBrem = new G4eBremsstrahlung();
G4PenelopeBremsstrahlungModel*
eBremModel = new G4PenelopeBremsstrahlungModel();
eBremModel->SetHighEnergyLimit(highEnergyLimit);
eBrem->AddEmModel(0, eBremModel);
pmanager->AddProcess(eBrem, -1,-1, 2);
list->RegisterProcess(eBrem, particle);
G4eplusAnnihilation* eAnni = new G4eplusAnnihilation();
G4PenelopeAnnihilationModel*
eAnniModel = new G4PenelopeAnnihilationModel();
eAnniModel->SetHighEnergyLimit(highEnergyLimit);
eAnni->AddEmModel(0, eAnniModel);
pmanager->AddProcess(eAnni, 0,-1, 3);
list->RegisterProcess(eAnni, particle);
} else if( particleName == "mu+" ||
particleName == "mu-" ) {
//muon
pmanager->AddProcess(new G4MuIonisation, -1,-1, 1);
pmanager->AddProcess(new G4MuBremsstrahlung, -1,-1, 2);
pmanager->AddProcess(new G4MuPairProduction, -1,-1, 3);
list->RegisterProcess(new G4MuIonisation, particle);
list->RegisterProcess(new G4MuBremsstrahlung, particle);
list->RegisterProcess(new G4MuPairProduction, particle);
} else if( particleName == "alpha" || particleName == "GenericIon" ) {
pmanager->AddProcess(new G4ionIonisation, -1,-1, 1);
list->RegisterProcess(new G4ionIonisation, particle);
} else if ((!particle->IsShortLived()) &&
(particle->GetPDGCharge() != 0.0) &&
(particle->GetParticleName() != "chargedgeantino")) {
//all others charged particles except geantino
pmanager->AddProcess(new G4hIonisation, -1,-1, 1);
list->RegisterProcess(new G4hIonisation, particle);
}
}
// Deexcitation
//
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
de->SetFluo(true);
de->SetAuger(false);
de->SetPIXE(false);
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
G4VAtomDeexcitation* deex = new G4UAtomicDeexcitation();
G4LossTableManager::Instance()->SetAtomDeexcitation(deex);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,25 +23,26 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file electromagnetic/TestEm14/src/PhysListEmStandard.cc
/// \file electromagnetic/TestEm18/src/PhysListEmStandard.cc
/// \brief Implementation of the PhysListEmStandard class
//
//
// $Id: PhysListEmStandard.cc 100278 2016-10-17 08:34:03Z gcosmo $
// $Id: PhysListEmStandard.cc 108013 2017-12-19 09:03:56Z gcosmo $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "PhysListEmStandard.hh"
#include "G4BuilderType.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
#include "G4PhysicsListHelper.hh"
#include "G4RayleighScattering.hh"
#include "G4PhotoElectricEffect.hh"
#include "G4ComptonScattering.hh"
#include "G4KleinNishinaModel.hh"
#include "G4GammaConversion.hh"
#include "G4GammaConversionToMuons.hh"
#include "G4PhotoElectricEffect.hh"
#include "G4RayleighScattering.hh"
#include "G4KleinNishinaModel.hh"
#include "G4eIonisation.hh"
#include "G4eBremsstrahlung.hh"
@@ -52,7 +53,12 @@
#include "G4MuPairProduction.hh"
#include "G4hIonisation.hh"
#include "G4hBremsstrahlung.hh"
#include "G4hPairProduction.hh"
#include "G4ionIonisation.hh"
#include "G4IonParametrisedLossModel.hh"
#include "G4NuclearStopping.hh"
#include "G4LossTableManager.hh"
#include "G4UAtomicDeexcitation.hh"
@@ -62,73 +68,101 @@
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysListEmStandard::PhysListEmStandard(const G4String& name)
: G4VPhysicsConstructor(name)
{ }
: G4VPhysicsConstructor(name)
{
G4EmParameters* param = G4EmParameters::Instance();
param->SetDefaults();
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();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
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") {
// gamma
////pmanager->AddDiscreteProcess(new G4RayleighScattering);
pmanager->AddDiscreteProcess(new G4PhotoElectricEffect);
G4ComptonScattering* cs = new G4ComptonScattering;
cs->SetEmModel(new G4KleinNishinaModel());
pmanager->AddDiscreteProcess(cs);
pmanager->AddDiscreteProcess(new G4GammaConversion);
pmanager->AddDiscreteProcess(new G4GammaConversionToMuons);
////list->RegisterProcess(new G4RayleighScattering, particle);
list->RegisterProcess(new G4PhotoElectricEffect, particle);
G4ComptonScattering* compt = new G4ComptonScattering;
compt->SetEmModel(new G4KleinNishinaModel());
list->RegisterProcess(compt, particle);
list->RegisterProcess(new G4GammaConversion, particle);
} else if (particleName == "e-") {
//electron
pmanager->AddProcess(new G4eIonisation, -1,-1,1);
pmanager->AddProcess(new G4eBremsstrahlung, -1,-1,2);
list->RegisterProcess(new G4eIonisation(), particle);
list->RegisterProcess(new G4eBremsstrahlung(), particle);
} else if (particleName == "e+") {
//positron
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
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" ) {
pmanager->AddProcess(new G4ionIonisation, -1,-1,1);
list->RegisterProcess(new G4eIonisation(), particle);
list->RegisterProcess(new G4eBremsstrahlung(), particle);
list->RegisterProcess(new G4eplusAnnihilation(), particle);
} else if (particleName == "mu+" ||
particleName == "mu-" ) {
list->RegisterProcess(new G4MuIonisation(), particle);
list->RegisterProcess(new G4MuBremsstrahlung(), particle);
list->RegisterProcess(new G4MuPairProduction(), particle);
} else if( particleName == "proton" ||
particleName == "pi-" ||
particleName == "pi+" ) {
list->RegisterProcess(new G4hIonisation(), particle);
list->RegisterProcess(new G4hBremsstrahlung(), particle);
list->RegisterProcess(new G4hPairProduction(), particle);
} else if( particleName == "alpha" ||
particleName == "He3" ) {
list->RegisterProcess(new G4ionIonisation(), particle);
list->RegisterProcess(new G4NuclearStopping(), particle);
} else if( particleName == "GenericIon" ) {
G4ionIonisation* ionIoni = new G4ionIonisation();
ionIoni->SetEmModel(new G4IonParametrisedLossModel());
list->RegisterProcess(ionIoni, particle);
list->RegisterProcess(new G4NuclearStopping(), particle);
} else if ((!particle->IsShortLived()) &&
(particle->GetPDGCharge() != 0.0) &&
(particle->GetParticleName() != "chargedgeantino")) {
//all others charged particles except geantino
pmanager->AddProcess(new G4hIonisation, -1,-1,1);
list->RegisterProcess(new G4hIonisation(), particle);
}
}
// Deexcitation
//
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
de->SetFluo(true);
de->SetAuger(false);
de->SetPIXE(false);
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
G4VAtomDeexcitation* deex = new G4UAtomicDeexcitation();
G4LossTableManager::Instance()->SetAtomDeexcitation(deex);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......