128 if(regnamesPAI.size() > 0)
133 if(regnamesME.size() > 0)
138 if(regnamesMSC.size() > 0)
149 G4int nreg = regnamesPhys.size();
150 if(0 == nreg) {
return; }
153 G4cout <<
"### G4EmModelActivator::ActivateEmOptions for " << nreg <<
" regions"
178 for(
G4int i=0; i<nreg; ++i) {
181 G4cout << i <<
". region <" <<
reg <<
">; type <" << typesPhys[i] <<
"> "
185 if(
baseName == typesPhys[i]) {
continue; }
187 if(
"G4EmStandard" == typesPhys[i]) {
194 }
else if(
"G4EmStandard_opt1" == typesPhys[i] ||
"G4EmStandard_opt2" == typesPhys[i]) {
201 }
else if(
"G4EmStandard_opt3" == typesPhys[i]) {
237 }
else if(
"G4EmStandard_opt4" == typesPhys[i]) {
266 }
else if(
"G4EmStandardGS" == typesPhys[i]) {
273 }
else if(
"G4EmStandardWVI" == typesPhys[i]) {
287 }
else if(
"G4EmStandardSS" == typesPhys[i] &&
290 for(
const auto& particleName : emList.
PartNames()) {
298 if(particleName ==
"mu+" || particleName ==
"mu-") {
312 }
else if(
"G4EmLivermore" == typesPhys[i]) {
344 }
else if(
"G4EmPenelope" == typesPhys[i]) {
386 G4cout <<
"### G4EmModelActivator::ActivateEmOptions WARNING: \n"
387 <<
" EM Physics configuration name <" << typesPhys[i]
388 <<
"> is not known - ignored" <<
G4endl;
399 G4int nreg = regnamesPAI.size();
400 if(0 == nreg) {
return; }
403 G4cout <<
"### G4EmModelActivator::ActivatePAI for " << nreg <<
" regions"
420 for(
G4int i = 0; i < nreg; ++i) {
422 if(particlesPAI[i] !=
"all") {
425 G4cout <<
"### WARNING: ActivatePAI::FindParticle fails to find "
426 << particlesPAI[i] <<
G4endl;
432 G4cout <<
"### WARNING: ActivatePAI::GetRegion fails to find "
433 << regnamesPAI[i] <<
G4endl;
438 if(p == elec || p == posi)
440 else if (p == mupl || p == mumi)
443 {
name =
"ionIoni"; }
447 if(!proc->IsIonisationProcess()) {
continue; }
449 G4String namep = proc->GetProcessName();
451 if(
name != namep) {
continue; }
453 if(namep !=
"hIoni" && namep !=
"muIoni" &&
454 namep !=
"eIoni" && namep !=
"ionIoni")
458 if(namep ==
"eIoni") emin = 110*
CLHEP::eV;
459 else if(namep ==
"muIoni") emin = 5*
CLHEP::keV;
463 if(typesPAI[i] ==
"PAIphoton" || typesPAI[i] ==
"pai_photon") {
474 proc->AddEmModel(0, em, fm, r);
477 if(namep ==
"eIoni") {
480 }
else if(namep ==
"ionIoni") {
488 proc->AddEmModel(-1, em, fm, r);
491 G4cout <<
"### G4EmModelActivator: add <" << typesPAI[i]
492 <<
"> model for " << particlesPAI[i]
493 <<
" in the " << regnamesPAI[i]
505 G4int nreg = regnamesME.size();
513 G4cout <<
"### G4EmModelActivator::ActivateMicroElec for " << nreg
558 for(
G4int i = 0; i < nreg; ++i)
562 G4cout <<
"### MicroElec models are activated for G4Region " <<
reg
564 <<
" Energy limits for e- elastic: " << elowest/
eV <<
" eV - "
565 << elimel/
MeV <<
" MeV"
567 <<
" Energy limits for e- inelastic: " << elowest/
eV <<
" eV - "
568 << elimin/
MeV <<
" MeV"
570 <<
" Energy limits for hadrons/ions: " << pmin/
MeV <<
" MeV - "
571 << pmax/
MeV <<
" MeV"
589 "e-G4MicroElecElastic",
607 "e-G4MicroElecInelastic",
636 "p_G4MicroElecInelastic",
665 "ion_G4MicroElecInelastic",
680 for(
G4int i = 0; i < nproc; ++i)
725 if(phys ==
"G4EmStandard_opt1" || phys ==
"G4EmStandard_opt2") {
728 }
else if(phys ==
"G4EmStandard_opt3") {
730 }
else if(phys ==
"G4EmStandard_opt4" || phys ==
"G4EmLivermore" || phys ==
"G4EmPenelope") {
734 }
else if(phys ==
"G4EmStandardGS") {
738 if(phys !=
"G4EmStandard" && phys !=
"G4EmStandard_opt1" && phys !=
"G4EmStandard_opt2") {
753 for(
G4int i = 0; i<nproc; ++i) {
754 if(((*pv)[i])->GetProcessName() ==
name) {
return; }
756 if(
name ==
"CoulombScat") {
760 }
else if(
name ==
"Rayl") {
static const G4double e1[44]
static const G4double e2[44]
static const G4double reg
static constexpr double keV
static constexpr double eV
static constexpr double GeV
static constexpr double MeV
static constexpr double TeV
G4GLOB_DLL std::ostream G4cout
static G4Electron * Electron()
void SetExtraEmModel(const G4String &particleName, const G4String &processName, G4VEmModel *, const G4String ®ionName="", G4double emin=0.0, G4double emax=DBL_MAX, G4VEmFluctuationModel *fm=nullptr)
G4EmModelActivator(const G4String &emphys="")
G4EmParameters * theParameters
void FindOrAddProcess(const G4ParticleDefinition *, const G4String &)
void AddStandardScattering(const G4ParticleDefinition *, G4EmConfigurator *, G4VMscModel *, const G4String &, G4double, G4double, const G4String &)
G4bool HasMsc(G4ProcessManager *) const
void SetMscParameters(const G4ParticleDefinition *, G4VMscModel *, const G4String &phys)
void SetNumberOfBinsPerDecade(G4int val)
static G4EmParameters * Instance()
const std::vector< G4String > & TypesPhysics() const
void SetMscThetaLimit(G4double val)
G4double MscEnergyLimit() const
const std::vector< G4String > & RegionsPAI() const
void SetDeexActiveRegion(const G4String ®ion, G4bool fdeex, G4bool fauger, G4bool fpixe)
const std::vector< G4String > & ParticlesPAI() const
const std::vector< G4String > & RegionsPhysics() const
void DefineRegParamForDeex(G4VAtomDeexcitation *) const
G4double MaxKinEnergy() const
void SetUseMottCorrection(G4bool val)
const std::vector< G4String > & RegionsMicroElec() const
const std::vector< G4String > & TypesPAI() const
const std::vector< G4String > & PartNames() const
static G4GenericIon * GenericIon()
static G4LossTableManager * Instance()
G4EmConfigurator * EmConfigurator()
const std::vector< G4VEnergyLossProcess * > & GetEnergyLossProcessVector()
G4VAtomDeexcitation * AtomDeexcitation()
static G4MuonMinus * MuonMinus()
static G4MuonPlus * MuonPlus()
G4ProcessManager * GetProcessManager() const
G4double GetPDGCharge() const
const G4String & GetParticleName() const
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
static G4ParticleTable * GetParticleTable()
static G4Positron * Positron()
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
G4int GetProcessListLength() const
G4ProcessVector * GetProcessList() const
static G4Proton * Proton()
static G4RegionStore * GetInstance()
G4Region * GetRegion(const G4String &name, G4bool verbose=true) const
void SetPolarAngleLimit(G4double)
void SetHighEnergyLimit(G4double)
void SetActivationLowEnergyLimit(G4double)
void SetLowEnergyLimit(G4double)
void SetActivationHighEnergyLimit(G4double)
void SetEmModel(G4VEmModel *, G4int index=0)
void SetRangeFactor(G4double)
void SetLateralDisplasmentFlag(G4bool val)
void SetStepLimitType(G4MscStepLimitType)
static constexpr double keV
static constexpr double eV
const char * name(G4int ptype)