113G4bool G4EmDNAPhysicsActivator::IsVerbose()
const
137 genericIonsManager->
GetIon(
"alpha+");
138 genericIonsManager->
GetIon(
"helium");
139 genericIonsManager->
GetIon(
"hydrogen");
151 const std::vector<G4String>& regnamesDNA = theParameters->
RegionsDNA();
152 G4int nreg = regnamesDNA.size();
157 const std::vector<G4String>& typesDNA = theParameters->
TypesDNA();
160 G4cout <<
"### G4EmDNAPhysicsActivator::ConstructProcess for " << nreg
161 <<
" regions; DNA physics type " << typesDNA[0] <<
G4endl;
190 G4bool emsc = HasMsc(eman);
191 G4bool pmsc = HasMsc(pman);
192 G4bool a2msc = HasMsc(a2man);
193 G4bool a1msc = HasMsc(a1man);
339 static const G4double elimel = 1 * MeV;
340 static const G4double pminbb = 2 * MeV;
341 static const G4double pmin = 0.1 * keV;
342 static const G4double pmax = 100 * MeV;
343 static const G4double hemin = 1 * keV;
344 static const G4double ionmin = 0.5 * MeV;
370 for(
G4int i = 0; i < nreg; ++i)
375 G4cout <<
"### DNA models type " << typesDNA[i]
376 <<
" are activated for G4Region " << reg <<
G4endl;
379 if(typesDNA[i] ==
"DNA_Opt0") {
380 AddElectronModels0(reg, emsc, elimel);
382 else if(typesDNA[i] ==
"DNA_Opt2"){
383 AddElectronModels2(reg, emsc, elimel);
385 else if(typesDNA[i] ==
"DNA_Opt4"){
386 AddElectronModels4(reg, emsc, elimel);
388 else if(typesDNA[i] ==
"DNA_Opt4a"){
389 AddElectronModels4a(reg, emsc, elimel);
391 else if(typesDNA[i] ==
"DNA_Opt6"){
392 AddElectronModels6(reg, emsc, elimel);
394 else if(typesDNA[i] ==
"DNA_Opt6a"){
395 AddElectronModels6a(reg, emsc, elimel);
397 else if(typesDNA[i] ==
"DNA_Opt7") {
398 AddElectronModels7(reg, emsc, elimel);
402 AddProtonModels0(reg, pmsc, elimel, pminbb, pmax);
403 AddHeliumModels0(reg, a1msc, a2msc, elimel, pminbb, pmax);
404 AddGenericIonModels0(reg, pminbb);
405 DeactivateNuclearStopping(pman, elimel);
406 DeactivateNuclearStopping(a1man, elimel);
407 DeactivateNuclearStopping(a2man, elimel);
411 ltman->EmConfigurator()->AddModels();
416void G4EmDNAPhysicsActivator::AddElectronModels0(
const G4String& reg,
424 static const G4double elowest = 7.4 * eV;
425 static const G4double elimin = 1 * MeV;
426 static const G4double elimvb = 100 * eV;
427 static const G4double elimat = 13 * eV;
428 static const G4double elim1 = 10 * keV;
436 G4double emaxmsc = std::min(100*MeV, emax);
447 mod, reg, 0., elowest);
452 mod, reg, 0.0, elimel);
462 mod, reg, elim1, elimin);
466 mod, reg, 0.0, elim1);
471 mod, reg, 0.0, elim1);
475 mod, reg, elim1, elimin);
479 mod, reg, 0.0, elimvb);
483 mod, reg, 0.0, elimat);
489void G4EmDNAPhysicsActivator::AddElectronModels2(
const G4String ®,
497 static const G4double elowest = 7.4 * eV;
498 static const G4double elimin = 1 * MeV;
499 static const G4double elimvb = 100 * eV;
500 static const G4double elimat = 13 * eV;
509 G4double emaxmsc = std::min(100 * MeV, emax);
520 mod, reg, 0., elowest);
525 mod, reg, 0.0, elimel);
537 mod, reg, elowest, elimin);
542 mod, reg, 0., elimin);
547 mod, reg, 0.0, elimvb);
552 mod, reg, 0.0, elimat);
559void G4EmDNAPhysicsActivator::AddElectronModels4(
const G4String& reg,
567 static const G4double elowest = 10 * eV;
568 static const G4double elimin = 1 * MeV;
579 G4double emaxmsc = std::min(100 * MeV, emax);
590 mod, reg, 0., elowest);
595 mod, reg, 0.0, elimel);
606 mod, reg, elowest, elimin);
611 mod, reg, 0., elimin);
632void G4EmDNAPhysicsActivator::AddElectronModels4a(
const G4String& reg,
640 static const G4double elowest = 10 * eV;
641 static const G4double elimin = 1 * MeV;
642 static const G4double elimvb = 100 * eV;
643 static const G4double elimat = 13 * eV;
652 G4double emaxmsc = std::min(100 * MeV, emax);
663 mod, reg, 0., elowest);
668 mod, reg, 0.0, elimel);
679 mod, reg, elowest, elimin);
684 mod, reg, 0., elimin);
694 mod, reg, 0.0, elimvb);
699 mod, reg, 0.0, elimat);
705void G4EmDNAPhysicsActivator::AddElectronModels6(
const G4String& reg,
713 static const G4double elowest = 11 * eV;
714 static const G4double elimin = 1 * MeV;
724 G4double emaxmsc = std::min(100 * MeV, emax);
735 mod, reg, 0., elowest);
740 mod, reg, 0.0, elimel);
751 mod, reg, elowest, elimin);
756 mod, reg, 0., elimin);
776void G4EmDNAPhysicsActivator::AddElectronModels6a(
const G4String& reg,
784 static const G4double elowest = 11 * eV;
785 static const G4double elimin = 1 * MeV;
786 static const G4double elimvb = 100 * eV;
787 static const G4double elimat = 13 * eV;
796 G4double emaxmsc = std::min(100 * MeV, emax);
807 mod, reg, 0., elowest);
812 mod, reg, 0.0, elimel);
823 mod, reg, elowest, elimin);
828 mod, reg, 0., elimin);
837 mod, reg, 0.0, elimvb);
842 mod, reg, 0.0, elimat);
848void G4EmDNAPhysicsActivator::AddElectronModels7(
const G4String ®,
856 static const G4double elowest = 10 * eV;
857 static const G4double elimin = 1 * MeV;
858 static const G4double elimvb = 100 * eV;
859 static const G4double elimat = 13 * eV;
860 static const G4double elim1 = 10 * keV;
868 G4double emaxmsc = std::min(100 * MeV, emax);
879 mod, reg, 0., elowest);
884 mod, reg, 0.0, elimel);
899 mod, reg, elim1, elimin);
903 mod, reg, elowest, elim1);
909 mod, reg, 8 * eV, elim1);
913 mod, reg, elim1, elimin);
918 mod, reg, 0.0, elimvb);
923 mod, reg, 0.0, elimat);
933void G4EmDNAPhysicsActivator::AddProtonModels0(
const G4String& reg,
941 static const G4double gmmax = 500 * keV;
956 em_config->
SetExtraEmModel(
"proton",
"CoulombScat", mod, reg, 0.0, emax);
961 mod, reg, 0.0, pminbb,
967 mod, reg, pminbb, emax,
972 mod, reg, 0.0, gmmax);
976 mod, reg, gmmax, pmax);
980 mod, reg, 0.0, gmmax);
984 mod, reg, gmmax, pmax);
988 mod, reg, 0.0, pmax);
992 mod, reg, 0.0, elimel);
997 mod, reg, 0.0, pmax);
1001 mod, reg, 0.0, gmmax);
1004 em_config->
SetExtraEmModel(
"hydrogen",
"hydrogen_G4DNAChargeIncrease",
1005 mod, reg, 0.0, pmax);
1009 mod, reg, 0.0, elimel);
1015void G4EmDNAPhysicsActivator::AddGenericIonModels0(
const G4String& reg,
1023 G4double iemax = std::min(10*MeV, emax);
1029 mod, reg, 0.0, pminbb,
1035 mod, reg, pminbb, emax,
1039 em_config->
SetExtraEmModel(
"GenericIon",
"GenericIon_G4DNAIonisation",
1040 mod, reg, 0.0, iemax);
1046void G4EmDNAPhysicsActivator::AddHeliumModels0(
const G4String& reg,
1055 static const G4double hemax = 400 * MeV;
1059 G4double pminbba = massRatio*pminbb;
1061 G4cout <<
"AddHeliumModels0 for <" << reg <<
"> a1msc: " << a1msc <<
" a2msc: " << a2msc
1062 <<
" elimel= " << elimel <<
" pminbba= " << pminbba <<
G4endl;
1073 em_config->
SetExtraEmModel(
"alpha",
"CoulombScat", mod, reg, 0.0, emax);
1080 mod, reg, 0.0, pminbba,
1086 mod, reg, pminbba, emax,
1091 mod, reg, 0.0, hemax);
1095 mod, reg, 0.0, hemax);
1099 mod, reg, 0.0, hemax);
1103 mod, reg, 0.0, elimel);
1115 em_config->
SetExtraEmModel(
"alpha+",
"CoulombScat", mod, reg, 0.0, emax);
1122 mod, reg, 0.0, pminbba,
1128 mod, reg, pminbba, emax,
1133 mod, reg, 0.0, hemax);
1137 mod, reg, 0.0, hemax);
1141 mod, reg, 0.0, hemax);
1145 mod, reg, 0.0, hemax);
1149 mod, reg, 0.0, elimel);
1155 mod, reg, 0.0, hemax);
1159 mod, reg, 0.0, hemax);
1163 mod, reg, 0.0, hemax);
1167 mod, reg, 0.0, elimel);
1172void G4EmDNAPhysicsActivator::DeactivateNuclearStopping(
G4ProcessManager* pman,
1177 for(
G4int i = 0; i < nproc; ++i) {
1197 for(
G4int i = 0; i < nproc; ++i)
G4DNABornExcitationModel1 G4DNABornExcitationModel
#define G4DNABornIonisationModel
G4TDNAOneStepThermalizationModel< DNA::Penetration::Meesungnoen2002 > G4DNAOneStepThermalizationModel
G4GLOB_DLL std::ostream G4cout
static G4DNAGenericIonsManager * Instance(void)
G4ParticleDefinition * GetIon(const G4String &name)
static G4VEmModel * GetMacroDefinedModel()
One step thermalization model can be chosen via macro using /process/dna/e-SolvationSubType Ritchie19...
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)
void ConstructProcess() override
void ConstructParticle() override
~G4EmDNAPhysicsActivator() override
G4EmDNAPhysicsActivator(G4int ver=1)
static G4EmParameters * Instance()
const std::vector< G4String > & TypesDNA() const
const std::vector< G4String > & RegionsDNA() const
G4double MaxKinEnergy() const
static G4GenericIon * GenericIonDefinition()
static G4GenericIon * GenericIon()
static G4LossTableManager * Instance()
G4EmConfigurator * EmConfigurator()
G4ProcessManager * GetProcessManager() const
G4double GetPDGMass() const
G4bool RegisterProcess(G4VProcess *process, G4ParticleDefinition *particle)
static G4PhysicsListHelper * GetPhysicsListHelper()
static G4Positron * Positron()
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
G4int GetProcessListLength() const
G4ProcessVector * GetProcessList() const
static G4Proton * Proton()
void SetActivationLowEnergyLimit(G4double)
void SetEmModel(G4VEmModel *, G4int index=0)