Import Geant4 11.4.0.beta source tree

This commit is contained in:
Gabriele Cosmo
2025-06-26 09:17:29 +02:00
parent 20a218bbe1
commit a499fb82e9
1941 changed files with 203285 additions and 95593 deletions
@@ -91,6 +91,7 @@
#include "G4DNASancheExcitationModel.hh"
#include "G4DNAEmfietzoglouIonisationModel.hh"
#include "G4DNACPA100IonisationModel.hh"
#include "G4DNABornIonisationModel.hh"
#include "G4DNABornIonisationModel1.hh"
#include "G4DNAMeltonAttachmentModel.hh"
#include "G4DNAIonElasticModel.hh"
@@ -98,6 +99,8 @@
#include "G4DNABornExcitationModel.hh"
#include "G4DNARuddIonisationModel.hh"
#include "G4DNARuddIonisationExtendedModel.hh"
#include "G4DNARuddIonisationDynamicModel.hh"
#include "G4DNAGeneralIonIonisationModel.hh"
#include "G4DNADingfelderChargeDecreaseModel.hh"
#include "G4DNADingfelderChargeIncreaseModel.hh"
#include "G4DNARPWBAExcitationModel.hh"
@@ -106,6 +109,8 @@
static const G4double lowEnergyRPWBA = 100*CLHEP::MeV;
static const G4double lowEnergyMSC = 1*CLHEP::MeV;
static const G4double lowEnergyProtonIoni = 2*CLHEP::MeV;
static const G4double highEnergyMillerGrean = 0.5*CLHEP::MeV;
static const G4double highEnergyChargeExchange = 100*CLHEP::MeV;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -314,7 +319,7 @@ G4EmDNABuilder::ConstructDNAElectronPhysics(const G4double emaxDNA,
G4double emaxT = 7.4*CLHEP::eV;
// limit for CPA100 models
G4double emaxCPA100 = 250*CLHEP::keV;
if(4 == opt) {
if (4 == opt || 8 == opt) {
emaxE = 10.*CLHEP::keV;
emaxT = 10.*CLHEP::eV;
} else if(5 < opt) {
@@ -329,9 +334,9 @@ G4EmDNABuilder::ConstructDNAElectronPhysics(const G4double emaxDNA,
// *** Elastic scattering ***
auto pElasticProcess = FindOrBuildElastic(part, "e-_G4DNAElastic");
G4VEmModel* elast = nullptr;
G4VEmModel* elast;
G4VEmModel* elast2 = nullptr;
if(4 == opt) {
if(4 == opt || 8 == opt) {
elast = new G4DNAUeharaScreenedRutherfordElasticModel();
} else if(5 < opt) {
auto mod = new G4DNACPA100ElasticModel();
@@ -359,7 +364,7 @@ G4EmDNABuilder::ConstructDNAElectronPhysics(const G4double emaxDNA,
modE->SelectStationary(stationary);
modE->SetHighEnergyLimit(emaxE);
}
G4VEmModel* modB = nullptr;
G4VEmModel* modB;
G4VEmModel* modB2 = nullptr;
if(6 == opt) {
auto mod = new G4DNACPA100ExcitationModel();
@@ -392,21 +397,16 @@ G4EmDNABuilder::ConstructDNAElectronPhysics(const G4double emaxDNA,
modE->SelectStationary(stationary);
modE->SetHighEnergyLimit(emaxE);
}
G4VEmModel* modI = nullptr;
G4VEmModel* modI;
G4VEmModel* modI2 = nullptr;
if(6 == opt) {
if (6 == opt) {
auto mod = new G4DNACPA100IonisationModel();
mod->SelectStationary(stationary);
mod->SelectFasterComputation(fast);
modI = mod;
auto mod1 = new G4DNABornIonisationModel();
mod1->SelectStationary(stationary);
modI2 = mod1;
modI2 = new G4DNABornIonisationModel1();
} else {
auto mod = new G4DNABornIonisationModel1();
mod->SelectStationary(stationary);
mod->SelectFasterComputation(fast);
modI = mod;
modI = new G4DNABornIonisationModel1();
}
modI->SetLowEnergyLimit(emaxE);
modI->SetHighEnergyLimit(emaxDNA);
@@ -446,6 +446,8 @@ G4EmDNABuilder::ConstructDNAProtonPhysics(const G4double e1DNA,
G4EmParameters* param = G4EmParameters::Instance();
const G4double emax = param->MaxKinEnergy();
G4ParticleDefinition* part = G4Proton::Proton();
G4double e2DNA = (8 == opt) ?
std::min(lowEnergyRPWBA, emax) : std::min(e1DNA, lowEnergyRPWBA);
// *** Elastic scattering ***
auto pElasticProcess = FindOrBuildElastic(part, "proton_G4DNAElastic");
@@ -455,7 +457,6 @@ G4EmDNABuilder::ConstructDNAProtonPhysics(const G4double e1DNA,
pElasticProcess->AddEmModel(-1, modE, reg);
// *** Excitation ***
G4double e2DNA = std::min(e1DNA, lowEnergyRPWBA);
auto theDNAExc = FindOrBuildExcitation(part, "proton_G4DNAExcitation");
auto modMGE = new G4DNAMillerGreenExcitationModel();
modMGE->SetHighEnergyLimit(e2DNA);
@@ -479,28 +480,24 @@ G4EmDNABuilder::ConstructDNAProtonPhysics(const G4double e1DNA,
// *** Ionisation ***
auto theDNAIoni = FindOrBuildIonisation(part, "proton_G4DNAIonisation");
G4VEmModel* modRI = nullptr;
if(2 == opt) {
auto mod = new G4DNARuddIonisationExtendedModel();
mod->SelectStationary(stationary);
modRI = mod;
G4VEmModel* modRI;
if (2 == opt) {
modRI = new G4DNARuddIonisationExtendedModel();
} else if (8 == opt) {
modRI = new G4DNARuddIonisationDynamicModel();
} else {
auto mod = new G4DNARuddIonisationModel();
mod->SelectStationary(stationary);
modRI = mod;
modRI = new G4DNARuddIonisationModel();
}
modRI->SetHighEnergyLimit(e1DNA);
modRI->SetHighEnergyLimit(e2DNA);
theDNAIoni->AddEmModel(-1, modRI, reg);
if(e2DNA < lowEnergyRPWBA) {
auto modI = new G4DNABornIonisationModel1();
modI->SelectFasterComputation(fast);
modI->SelectStationary(stationary);
if (e2DNA < lowEnergyRPWBA) {
G4VEmModel* modI = new G4DNABornIonisationModel1();
modI->SetLowEnergyLimit(e2DNA);
modI->SetHighEnergyLimit(lowEnergyRPWBA);
theDNAIoni->AddEmModel(-2, modI, reg);
}
if(lowEnergyRPWBA < emaxIonDNA) {
if (lowEnergyRPWBA < emaxIonDNA) {
auto modJ = new G4DNARPWBAIonisationModel();
modJ->SelectFasterComputation(fast);
modJ->SelectStationary(stationary);
@@ -515,25 +512,26 @@ G4EmDNABuilder::ConstructDNAProtonPhysics(const G4double e1DNA,
auto modDCD = new G4DNADingfelderChargeDecreaseModel();
modDCD->SelectStationary(stationary);
modDCD->SetLowEnergyLimit(0.0);
modDCD->SetHighEnergyLimit(emax);
modDCD->SetHighEnergyLimit(highEnergyChargeExchange);
theDNAChargeDecreaseProcess->AddEmModel(-1, modDCD, reg);
FindOrBuildCapture(0.1*CLHEP::keV, part);
// *** Tracking cut ***
G4double cut = (8 == opt) ? 0.05*CLHEP::keV : 1*CLHEP::keV;
FindOrBuildCapture(cut, part);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void
G4EmDNABuilder::ConstructDNAIonPhysics(const G4double emaxIonDNA,
const G4bool stationary,
const G4int opt,
const G4Region* reg)
{
G4ParticleDefinition* part = G4GenericIon::GenericIon();
// *** Ionisation ***
auto theDNAIoni = FindOrBuildIonisation(part, "GenericIon_G4DNAIonisation");
auto mod = new G4DNARuddIonisationExtendedModel();
mod->SelectStationary(stationary);
G4VEmModel* mod = new G4DNAGeneralIonIonisationModel();
mod->SetHighEnergyLimit(emaxIonDNA);
theDNAIoni->AddEmModel(-1, mod, reg);
@@ -541,7 +539,8 @@ G4EmDNABuilder::ConstructDNAIonPhysics(const G4double emaxIonDNA,
FindOrBuildNuclearStopping(part, CLHEP::MeV);
// *** Tracking cut ***
FindOrBuildCapture(1*CLHEP::keV, part);
G4double cut = (8 == opt) ? 0.05*CLHEP::keV : 1*CLHEP::keV;
FindOrBuildCapture(cut, part);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -555,9 +554,13 @@ G4EmDNABuilder::ConstructDNALightIonPhysics(G4ParticleDefinition* part,
const G4bool stationary,
const G4Region* reg)
{
G4EmParameters* param = G4EmParameters::Instance();
const G4double emax = param->MaxKinEnergy();
const G4String& name = part->GetParticleName();
G4double elim1 = emaxIonDNA;
G4double elim2 = emaxIonDNA;
if (part->GetParticleName() == "hydrogen") {
elim1 = highEnergyMillerGrean;
elim2 = highEnergyChargeExchange;
}
// *** Elastic ***
auto theDNAElastic = FindOrBuildElastic(part, name + "_G4DNAElastic");
@@ -571,23 +574,21 @@ G4EmDNABuilder::ConstructDNALightIonPhysics(G4ParticleDefinition* part,
auto modMGE = new G4DNAMillerGreenExcitationModel();
modMGE->SelectStationary(stationary);
modMGE->SetLowEnergyLimit(0.0);
modMGE->SetHighEnergyLimit(emaxIonDNA);
modMGE->SetHighEnergyLimit(elim1);
theDNAExc->AddEmModel(-1, modMGE, reg);
// *** Ionisation ***
auto theDNAIoni = FindOrBuildIonisation(part, name + "_G4DNAIonisation");
G4VEmModel* modRI = nullptr;
if(2 == opt) {
auto mod = new G4DNARuddIonisationExtendedModel();
mod->SelectStationary(stationary);
modRI = mod;
G4VEmModel* modRI;
if (2 == opt) {
modRI = new G4DNARuddIonisationExtendedModel();
} else if (8 == opt) {
modRI = new G4DNARuddIonisationDynamicModel();
} else {
auto mod = new G4DNARuddIonisationModel();
mod->SelectStationary(stationary);
modRI = mod;
modRI = new G4DNARuddIonisationModel();
}
modRI->SetHighEnergyLimit(emaxIonDNA);
theDNAIoni->AddEmModel(-1, modRI, reg);
modRI->SetHighEnergyLimit(elim2);
theDNAIoni->AddEmModel(-2, modRI, reg);
// *** Charge increase ***
if(2 > charge) {
@@ -596,7 +597,7 @@ G4EmDNABuilder::ConstructDNALightIonPhysics(G4ParticleDefinition* part,
auto modDCI = new G4DNADingfelderChargeIncreaseModel();
modDCI->SelectStationary(stationary);
modDCI->SetLowEnergyLimit(0.0);
modDCI->SetHighEnergyLimit(emax);
modDCI->SetHighEnergyLimit(elim2);
theDNAChargeIncrease->AddEmModel(-1, modDCI, reg);
}
@@ -607,12 +608,13 @@ G4EmDNABuilder::ConstructDNALightIonPhysics(G4ParticleDefinition* part,
auto modDCD = new G4DNADingfelderChargeDecreaseModel();
modDCD->SelectStationary(stationary);
modDCD->SetLowEnergyLimit(0.0);
modDCD->SetHighEnergyLimit(emax);
modDCD->SetHighEnergyLimit(elim2);
theDNAChargeDecrease->AddEmModel(-1, modDCD, reg);
}
// *** Tracking cut ***
FindOrBuildCapture(1*CLHEP::keV, part);
G4double cut = (8 == opt) ? 0.05*CLHEP::keV : 1*CLHEP::keV;
FindOrBuildCapture(cut, part);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -98,7 +98,7 @@ void G4EmDNAPhysics::ConstructProcess()
G4EmParameters* param = G4EmParameters::Instance();
const G4double emaxDNA = 1.*CLHEP::MeV;
const G4double emaxIonDNA = 300.*CLHEP::MeV;
const G4double emaxLightIonDNA = 400.*CLHEP::MeV;
const G4double emaxLightIonDNA = 300.*CLHEP::MeV;
const G4double eminBorn = 500.*CLHEP::keV;
const G4bool fast = param->DNAFast();
const G4bool st = param->DNAStationary();
@@ -119,7 +119,7 @@ void G4EmDNAPhysics::ConstructProcess()
// DNA physics
G4EmDNABuilder::ConstructDNAElectronPhysics(emaxDNA, 0, fast, st);
G4EmDNABuilder::ConstructDNAProtonPhysics(eminBorn, emaxIonDNA, 0, fast, st);
G4EmDNABuilder::ConstructDNAIonPhysics(emaxIonDNA, st);
G4EmDNABuilder::ConstructDNAIonPhysics(emaxIonDNA, 0);
G4ParticleDefinition* part = genericIonsManager->GetIon("hydrogen");
G4EmDNABuilder::ConstructDNALightIonPhysics(part, 0, 0, emaxIonDNA, fast, st);
@@ -170,7 +170,7 @@ void G4EmDNAPhysicsActivator::ConstructProcess()
DeactivateHadronProcesses(prot, emaxIonDNA, emax, reg);
G4EmDNABuilder::ConstructDNAProtonPhysics(eminBorn, emaxIonDNA, opt, fast, st, reg);
DeactivateIonProcesses(gion, emaxIonDNA, emax, reg);
G4EmDNABuilder::ConstructDNAIonPhysics(emaxIonDNA, st, reg);
G4EmDNABuilder::ConstructDNAIonPhysics(emaxIonDNA, opt, reg);
DeactivateIonProcesses(alpha2, emaxLightIonDNA, emax, reg);
G4EmDNABuilder::ConstructDNALightIonPhysics(alpha2, 2, opt, emaxLightIonDNA, fast, st, reg);
DeactivateHadronProcesses(alpha1, emaxLightIonDNA, emax, reg);
@@ -62,7 +62,7 @@ void G4EmDNAPhysics_option2::ConstructProcess()
G4EmParameters* param = G4EmParameters::Instance();
const G4double emaxDNA = 1.*CLHEP::MeV;
const G4double emaxIonDNA = 300.*CLHEP::MeV;
const G4double emaxLightIonDNA = 400.*CLHEP::MeV;
const G4double emaxLightIonDNA = 300.*CLHEP::MeV;
const G4double eminBorn = 500.*CLHEP::keV;
const G4bool fast = param->DNAFast();
const G4bool st = param->DNAStationary();
@@ -83,7 +83,7 @@ void G4EmDNAPhysics_option2::ConstructProcess()
// DNA physics
G4EmDNABuilder::ConstructDNAElectronPhysics(emaxDNA, 2, fast, st);
G4EmDNABuilder::ConstructDNAProtonPhysics(eminBorn, emaxIonDNA, 2, fast, st);
G4EmDNABuilder::ConstructDNAIonPhysics(emaxIonDNA, st);
G4EmDNABuilder::ConstructDNAIonPhysics(emaxIonDNA, 2);
G4ParticleDefinition* part = genericIonsManager->GetIon("hydrogen");
G4EmDNABuilder::ConstructDNALightIonPhysics(part, 0, 2, emaxIonDNA, fast, st);
@@ -59,7 +59,7 @@ void G4EmDNAPhysics_option4::ConstructProcess()
G4EmParameters* param = G4EmParameters::Instance();
const G4double emaxDNA = 1.*CLHEP::MeV;
const G4double emaxIonDNA = 300.*CLHEP::MeV;
const G4double emaxLightIonDNA = 400.*CLHEP::MeV;
const G4double emaxLightIonDNA = 300.*CLHEP::MeV;
const G4double eminBorn = 500.*CLHEP::keV;
const G4bool fast = param->DNAFast();
const G4bool st = param->DNAStationary();
@@ -80,7 +80,7 @@ void G4EmDNAPhysics_option4::ConstructProcess()
// DNA physics
G4EmDNABuilder::ConstructDNAElectronPhysics(emaxDNA, 4, fast, st);
G4EmDNABuilder::ConstructDNAProtonPhysics(eminBorn, emaxIonDNA, 4, fast, st);
G4EmDNABuilder::ConstructDNAIonPhysics(emaxIonDNA, st);
G4EmDNABuilder::ConstructDNAIonPhysics(emaxIonDNA, 4);
G4ParticleDefinition* part = genericIonsManager->GetIon("hydrogen");
G4EmDNABuilder::ConstructDNALightIonPhysics(part, 0, 4, emaxIonDNA, fast, st);
@@ -61,7 +61,7 @@ G4EmDNAPhysics_option6::G4EmDNAPhysics_option6(G4int ver, const G4String& nam)
: G4EmDNAPhysics(ver, nam)
{
G4EmParameters* param = G4EmParameters::Instance();
param->SetDNAFast(true);
param->SetDNAFast(false);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -72,7 +72,7 @@ void G4EmDNAPhysics_option6::ConstructProcess()
G4EmParameters* param = G4EmParameters::Instance();
const G4double emaxDNA = 1.*CLHEP::MeV;
const G4double emaxIonDNA = 300.*CLHEP::MeV;
const G4double emaxLightIonDNA = 400.*CLHEP::MeV;
const G4double emaxLightIonDNA = 300.*CLHEP::MeV;
const G4double eminBorn = 500.*CLHEP::keV;
const G4bool fast = param->DNAFast();
const G4bool st = param->DNAStationary();
@@ -93,7 +93,7 @@ void G4EmDNAPhysics_option6::ConstructProcess()
// DNA physics
G4EmDNABuilder::ConstructDNAElectronPhysics(emaxDNA, 6, fast, st);
G4EmDNABuilder::ConstructDNAProtonPhysics(eminBorn, emaxIonDNA, 6, fast, st);
G4EmDNABuilder::ConstructDNAIonPhysics(emaxIonDNA, st);
G4EmDNABuilder::ConstructDNAIonPhysics(emaxIonDNA, 6);
G4ParticleDefinition* part = genericIonsManager->GetIon("hydrogen");
G4EmDNABuilder::ConstructDNALightIonPhysics(part, 0, 6, emaxIonDNA, fast, st);
@@ -49,10 +49,7 @@ G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_option8);
G4EmDNAPhysics_option8::G4EmDNAPhysics_option8(G4int ver, const G4String& nam)
: G4EmDNAPhysics(ver, nam)
{
G4EmParameters* param = G4EmParameters::Instance();
param->SetDNAFast(true);
}
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -62,7 +59,7 @@ void G4EmDNAPhysics_option8::ConstructProcess()
G4EmParameters* param = G4EmParameters::Instance();
const G4double emaxDNA = 1.*CLHEP::MeV;
const G4double emaxIonDNA = 300.*CLHEP::MeV;
const G4double emaxLightIonDNA = 400.*CLHEP::MeV;
const G4double emaxLightIonDNA = 300.*CLHEP::MeV;
const G4double eminBorn = 500.*CLHEP::keV;
const G4bool fast = param->DNAFast();
const G4bool st = param->DNAStationary();
@@ -83,7 +80,7 @@ void G4EmDNAPhysics_option8::ConstructProcess()
// DNA physics
G4EmDNABuilder::ConstructDNAElectronPhysics(emaxDNA, 8, fast, st);
G4EmDNABuilder::ConstructDNAProtonPhysics(eminBorn, emaxIonDNA, 8, fast, st);
G4EmDNABuilder::ConstructDNAIonPhysics(emaxIonDNA, st);
G4EmDNABuilder::ConstructDNAIonPhysics(emaxIonDNA, 8);
G4ParticleDefinition* part = genericIonsManager->GetIon("hydrogen");
G4EmDNABuilder::ConstructDNALightIonPhysics(part, 0, 8, emaxIonDNA, fast, st);
@@ -39,9 +39,11 @@ G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_stationary_option2);
G4EmDNAPhysics_stationary_option2::G4EmDNAPhysics_stationary_option2(G4int ver, const G4String& nam)
: G4EmDNAPhysics_option2(ver, nam)
{
G4cout << "!!! G4EmDNAPhysics_stationary_option2 physics constructor is instantiated." << G4endl;
G4cout << " This constructor is obsolete and will be removed in the next major Geant4 release."
<< G4endl;
G4EmParameters* param = G4EmParameters::Instance();
param->SetDNAStationary(true);
param->SetDNAFast(true);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -39,6 +39,9 @@ G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_stationary_option4);
G4EmDNAPhysics_stationary_option4::G4EmDNAPhysics_stationary_option4(G4int ver, const G4String& nam)
: G4EmDNAPhysics_option4(ver, nam)
{
G4cout << "!!! G4EmDNAPhysics_stationary_option4 physics constructor is instantiated." << G4endl;
G4cout << " This constructor is obsolete and will be removed in the next major Geant4 release."
<< G4endl;
G4EmParameters* param = G4EmParameters::Instance();
param->SetDNAStationary(true);
}
@@ -36,6 +36,9 @@ G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_stationary_option6);
G4EmDNAPhysics_stationary_option6::G4EmDNAPhysics_stationary_option6(G4int ver, const G4String& nam)
: G4EmDNAPhysics_option6(ver, nam)
{
G4cout << "!!! G4EmDNAPhysics_stationary_option6 physics constructor is instantiated." << G4endl;
G4cout << " This constructor is obsolete and will be removed in the next major Geant4 release."
<< G4endl;
G4EmParameters* param = G4EmParameters::Instance();
param->SetDNAStationary(true);
}
@@ -100,12 +100,7 @@ G4GammaGeneralProcess::G4GammaGeneralProcess(const G4String& pname):
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
G4GammaGeneralProcess::~G4GammaGeneralProcess()
{
if(isTheMaster) {
delete theHandler;
theHandler = nullptr;
}
}
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....