126 const std::vector<G4String> regnamesPAI = theParameters->
RegionsPAI();
127 if(regnamesPAI.size() > 0)
132 if(regnamesME.size() > 0)
136 const std::vector<G4String> regnamesMSC = theParameters->
RegionsMsc();
137 if(regnamesMSC.size() > 0)
145 void G4EmModelActivator::ActivateEmOptions()
147 const std::vector<G4String> regnamesMSC = theParameters->
RegionsMsc();
148 G4int nreg = regnamesMSC.size();
149 if(0 == nreg) {
return; }
152 G4cout <<
"### G4EmModelActivator::ActivateEmOptions for " << nreg <<
" regions"
155 const std::vector<G4String> typesMSC = theParameters->
TypesMsc();
166 for(
G4int i=0; i<nreg; ++i) {
169 G4cout << i <<
". region <" << reg <<
">; type <" << typesMSC[i] <<
"> "
173 if(baseName == typesMSC[i]) {
continue; }
175 if(
"G4EmStandard" == typesMSC[i]) {
183 }
else if(
"G4EmStandard_opt1" == typesMSC[i] ||
184 "G4EmStandard_opt2" == typesMSC[i]) {
196 }
else if(
"G4EmStandard_opt3" == typesMSC[i]) {
214 FindOrAddProcess(phot,
"Rayl");
217 FindOrAddProcess(phot,
"phot");
220 FindOrAddProcess(phot,
"compt");
224 }
else if(
"G4EmStandard_opt4" == typesMSC[i]) {
239 FindOrAddProcess(phot,
"Rayl");
242 FindOrAddProcess(phot,
"phot");
245 FindOrAddProcess(phot,
"compt");
252 }
else if(
"G4EmStandardGS" == typesMSC[i]) {
264 }
else if(
"G4EmStandardWVI" == typesMSC[i]) {
272 FindOrAddProcess(elec,
"CoulombScat");
273 FindOrAddProcess(posi,
"CoulombScat");
284 }
else if(
"G4EmStandardSS" == typesMSC[i] &&
285 baseName !=
"G4EmStandard_opt3") {
321 }
else if(
"G4EmLivermore" == typesMSC[i]) {
330 FindOrAddProcess(phot,
"Rayl");
345 }
else if(
"G4EmPenelope" == typesMSC[i]) {
353 FindOrAddProcess(phot,
"Rayl");
376 }
else if(
"G4RadioactiveDecay" == typesMSC[i]) {
388 G4cout <<
"### G4EmModelActivator::ActivateEmOptions WARNING: \n"
389 <<
" EM Physics configuration name <" << typesMSC[i]
390 <<
"> is not known - ignored" <<
G4endl;
398 void G4EmModelActivator::ActivatePAI()
400 const std::vector<G4String> regnamesPAI = theParameters->
RegionsPAI();
401 G4int nreg = regnamesPAI.size();
402 if(0 == nreg) {
return; }
405 G4cout <<
"### G4EmModelActivator::ActivatePAI for " << nreg <<
" regions"
408 const std::vector<G4String> particlesPAI = theParameters->
ParticlesPAI();
409 const std::vector<G4String> typesPAI = theParameters->
TypesPAI();
413 std::vector<G4VEnergyLossProcess*>::const_iterator itr;
422 for(
G4int i = 0; i < nreg; ++i) {
424 if(particlesPAI[i] !=
"all") {
427 G4cout <<
"### WARNING: ActivatePAI::FindParticle fails to find "
428 << particlesPAI[i] <<
G4endl;
434 G4cout <<
"### WARNING: ActivatePAI::GetRegion fails to find "
435 << regnamesPAI[i] <<
G4endl;
440 if(p == elec || p == posi)
442 else if (p == mupl || p == mumi)
445 { name =
"ionIoni"; }
447 for(itr = v.begin(); itr != v.end(); ++itr) {
454 if(name != namep) {
continue; }
456 if(namep !=
"hIoni" && namep !=
"muIoni" && namep !=
"eIoni")
461 if(typesPAI[i] ==
"PAIphoton") {
472 G4cout <<
"### G4EmModelActivator: add <" << typesPAI[i]
473 <<
"> model for " << particlesPAI[i]
474 <<
" in the " << regnamesPAI[i] <<
G4endl;
482 void G4EmModelActivator::ActivateMicroElec()
485 G4int nreg = regnamesME.size();
493 G4cout <<
"### G4EmModelActivator::ActivateMicroElec for " << nreg
505 G4bool emsc = HasMsc(eman);
538 for(
G4int i = 0; i < nreg; ++i)
542 G4cout <<
"### MicroElec models are activated for G4Region " << reg
544 <<
" Energy limits for e- elastic: " << elowest/
eV <<
" eV - "
545 << elimel/
MeV <<
" MeV"
547 <<
" Energy limits for e- inelastic: " << elowest/
eV <<
" eV - "
548 << elimin/
MeV <<
" MeV"
550 <<
" Energy limits for hadrons/ions: " << pmin/
MeV <<
" MeV - "
551 << pmax/
MeV <<
" MeV"
564 em_config->
SetExtraEmModel(
"e-",
"CoulombScat", mod, reg, 0.0, elimel);
569 "e-G4MicroElecElastic",
587 "e-G4MicroElecInelastic",
616 "p_G4MicroElecInelastic",
645 "ion_G4MicroElecInelastic",
660 for(
G4int i = 0; i < nproc; ++i)
677 for(
G4int i = 0; i<nproc; ++i) {
678 if(((*pv)[i])->GetProcessName() == name) {
return; }
680 if(name ==
"CoulombScat") {
684 }
else if(name ==
"Rayl") {
G4EmConfigurator * EmConfigurator()
void SetActivationHighEnergyLimit(G4double)
static G4MuonPlus * MuonPlus()
G4Region * GetRegion(const G4String &name, G4bool verbose=true) const
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
static G4LossTableManager * Instance()
void SetDeexcitationIgnoreCut(G4bool val)
void SetAuger(G4bool val)
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
void SetExtraEmModel(const G4String &particleName, const G4String &processName, G4VEmModel *, const G4String ®ionName="", G4double emin=0.0, G4double emax=DBL_MAX, G4VEmFluctuationModel *fm=nullptr)
const std::vector< G4String > & ParticlesPAI() const
const std::vector< G4String > & RegionsMicroElec() const
const std::vector< G4String > & RegionsPAI() const
void SetStepLimitType(G4MscStepLimitType)
void SetDeexActiveRegion(const G4String ®ion, G4bool fdeex, G4bool fauger, G4bool fpixe)
const std::vector< G4String > & RegionsMsc() const
static const G4double reg
void SetHighEnergyLimit(G4double)
static constexpr double TeV
static G4RegionStore * GetInstance()
void AddEmModel(G4int, G4VEmModel *, G4VEmFluctuationModel *fluc=0, const G4Region *region=nullptr)
void SetEmModel(G4VEmModel *, G4int index=1)
G4GLOB_DLL std::ostream G4cout
void SetRangeFactor(G4double)
void SetAugerCascade(G4bool val)
static G4Proton * Proton()
static constexpr double eV
const G4String & GetProcessName() const
const std::vector< G4VEnergyLossProcess * > & GetEnergyLossProcessVector()
void SetActivationLowEnergyLimit(G4double)
static G4Positron * Positron()
static G4GenericIon * GenericIon()
const std::vector< G4String > & TypesMsc() const
static G4ParticleTable * GetParticleTable()
G4ProcessManager * GetProcessManager() const
static G4EmParameters * Instance()
void DefineRegParamForDeex(G4VAtomDeexcitation *) const
static constexpr double GeV
G4EmModelActivator(const G4String &emphys="")
static G4MuonMinus * MuonMinus()
static G4Electron * Electron()
static constexpr double MeV
G4VAtomDeexcitation * AtomDeexcitation()
G4int GetProcessListLength() const
static constexpr double keV
const std::vector< G4String > & TypesPAI() const
void SetPolarAngleLimit(G4double)
G4ProcessVector * GetProcessList() const
G4bool IsIonisationProcess() const