Import Geant4 11.2.0 source tree

This commit is contained in:
Gabriele Cosmo
2023-12-08 10:43:34 +01:00
parent dd1f179cda
commit 860a2b92bf
3962 changed files with 139318 additions and 164259 deletions
@@ -438,3 +438,29 @@ void G4EmBuilder::ConstructElectronMscProcess(G4VMscModel* msc1, G4VMscModel* ms
ph->RegisterProcess(msc, particle);
}
}
void G4EmBuilder::ConstructElectronSSProcess(G4VEmModel* ss, G4ParticleDefinition* particle)
{
G4TransportationWithMscType type = G4EmParameters::Instance()->TransportationWithMsc();
G4ProcessManager* procManager = particle->GetProcessManager();
auto plist = procManager->GetProcessList();
G4int ptype = (0 < plist->size()) ? (*plist)[0]->GetProcessSubType() : 0;
if (type != G4TransportationWithMscType::fDisabled && ptype == TRANSPORTATION) {
// Remove default G4Transportation and replace with G4TransportationWithMsc.
procManager->RemoveProcess(0);
G4TransportationWithMsc* transportWithMsc =
new G4TransportationWithMsc(G4TransportationWithMsc::ScatteringType::SingleScattering);
if (type == G4TransportationWithMscType::fMultipleSteps) {
transportWithMsc->SetMultipleSteps(true);
}
transportWithMsc->AddSSModel(ss);
procManager->AddProcess(transportWithMsc, -1, 0, 0);
}
else {
// Register as a separate process.
G4CoulombScattering* ssProc = new G4CoulombScattering(false);
ssProc->SetEmModel(ss);
G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
ph->RegisterProcess(ssProc, particle);
}
}
@@ -536,7 +536,7 @@ G4EmDNABuilder::ConstructDNAIonPhysics(const G4double emaxIonDNA,
mod->SetHighEnergyLimit(emaxIonDNA);
theDNAIoni->AddEmModel(-1, mod, reg);
FindOrBuildCapture(25.0*CLHEP::keV, part);
FindOrBuildCapture(0.1*CLHEP::keV, part);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -748,7 +748,7 @@ G4EmDNABuilder::FindOrBuildChargeIncrease(G4ParticleDefinition* part,
G4LowECapture*
G4EmDNABuilder::FindOrBuildCapture(const G4double elim, G4ParticleDefinition* part)
{
auto p = G4PhysListUtil::FindProcess(part, 66);
auto p = G4PhysListUtil::FindProcess(part, -1);
G4LowECapture* ptr = dynamic_cast<G4LowECapture*>(p);
if(nullptr == ptr) {
ptr = new G4LowECapture(elim);
@@ -182,33 +182,32 @@ void G4EmStandardPhysicsSS::ConstructProcess()
// e-
particle = G4Electron::Electron();
G4CoulombScattering* ss = new G4CoulombScattering(false);
G4VEmModel* ss = nullptr;
if(param->UseMottCorrection()) {
ss->SetEmModel(new G4eDPWACoulombScatteringModel());
ss = new G4eDPWACoulombScatteringModel();
} else {
ss->SetEmModel(new G4eCoulombScatteringModel(false));
ss = new G4eCoulombScatteringModel(false);
}
ph->RegisterProcess(new G4eIonisation(), particle);
ph->RegisterProcess(new G4eBremsstrahlung(), particle);
G4ePairProduction* ee = new G4ePairProduction();
ph->RegisterProcess(ee, particle);
ph->RegisterProcess(ss, particle);
G4EmBuilder::ConstructElectronSSProcess(ss, particle);
// e+
particle = G4Positron::Positron();
ss = new G4CoulombScattering(false);
if(param->UseMottCorrection()) {
ss->SetEmModel(new G4eDPWACoulombScatteringModel());
ss = new G4eDPWACoulombScatteringModel();
} else {
ss->SetEmModel(new G4eCoulombScatteringModel(false));
ss = new G4eCoulombScatteringModel(false);
}
ph->RegisterProcess(new G4eIonisation(), particle);
ph->RegisterProcess(new G4eBremsstrahlung(), particle);
ph->RegisterProcess(ee, particle);
ph->RegisterProcess(ss, particle);
ph->RegisterProcess(new G4eplusAnnihilation(), particle);
G4EmBuilder::ConstructElectronSSProcess(ss, particle);
// generic ion
particle = G4GenericIon::GenericIon();
@@ -217,8 +216,7 @@ void G4EmStandardPhysicsSS::ConstructProcess()
ionIoni->SetFluctModel(fluc);
ionIoni->SetEmModel(new G4LindhardSorensenIonModel());
ph->RegisterProcess(ionIoni, particle);
ss = new G4CoulombScattering(false);
ph->RegisterProcess(ss, particle);
ph->RegisterProcess(new G4CoulombScattering(false), particle);
// muons, hadrons, ions
G4EmBuilder::ConstructChargedSS(hmsc);