Import Geant4 11.2.0 source tree
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user