105static const G4double lowEnergyRPWBA = 100*CLHEP::MeV;
106static const G4double lowEnergyMSC = 1*CLHEP::MeV;
107static const G4double lowEnergyProtonIoni = 2*CLHEP::MeV;
119 genericIonsManager->
GetIon(
"alpha+");
120 genericIonsManager->
GetIon(
"helium");
121 genericIonsManager->
GetIon(
"hydrogen");
151 cModel->SetHighEnergyLimit(20*CLHEP::MeV);
152 theComptonScattering->AddEmModel(0, cModel);
164 if(emin_elec < emax) {
170 }
else if(mscType ==
dnaGS) {
176 msc_el->SetEmModel(msc_model_el);
181 mb_el->SetActivationLowEnergyLimit(emin_elec);
182 ioni->SetEmModel(mb_el);
187 sb_el->SetActivationLowEnergyLimit(emin_elec);
188 sb_el->SetHighEnergyLimit(emax);
190 brem->SetEmModel(sb_el);
200 }
else if(mscType ==
dnaGS) {
205 msc_pos->SetEmModel(msc_model_pos);
211 sb->SetHighEnergyLimit(emax);
213 brem->SetEmModel(sb);
218 if(emin_proton < emax) {
220 StandardHadronPhysics(part, lowEnergyMSC, emin_proton, emax,
225 if(emin_ion < emax) {
227 StandardHadronPhysics(ion, lowEnergyMSC, emin_ion, emax,
232 if(emin_alpha < emax) {
234 StandardHadronPhysics(part, lowEnergyMSC, emin_alpha, emax,
240 part = genericIonsManager->
GetIon(
"alpha+");
241 StandardHadronPhysics(part, lowEnergyMSC, emin_alpha, emax,
245 const std::vector<G4int> chargedParticles = {
246 13, -13, 211, -211, 321, -321, -2212,
247 1000010020, 1000010030, 1000020030
315 G4double emaxCPA100 = 250*CLHEP::keV;
317 emaxE = 10.*CLHEP::keV;
318 emaxT = 10.*CLHEP::eV;
320 emaxT = 11.*CLHEP::eV;
326 therm->SetHighEnergyLimit(emaxT);
337 mod->SelectStationary(stationary);
344 pElasticProcess->AddEmModel(-2, elast, reg);
346 if(
nullptr != elast2) {
350 pElasticProcess->AddEmModel(-3, elast2, reg);
357 theDNAExc->AddEmModel(-1, modE, reg);
358 modE->SelectStationary(stationary);
359 modE->SetHighEnergyLimit(emaxE);
365 mod->SelectStationary(stationary);
368 mod1->SelectStationary(stationary);
372 mod->SelectStationary(stationary);
377 theDNAExc->AddEmModel(-2, modB, reg);
378 if(
nullptr != modB2) {
382 theDNAExc->AddEmModel(-3, modB2, reg);
389 theDNAIoni->AddEmModel(-1, modE, reg);
390 modE->SelectFasterComputation(fast);
391 modE->SelectStationary(stationary);
392 modE->SetHighEnergyLimit(emaxE);
398 mod->SelectStationary(stationary);
399 mod->SelectFasterComputation(fast);
402 mod1->SelectStationary(stationary);
406 mod->SelectStationary(stationary);
407 mod->SelectFasterComputation(fast);
412 theDNAIoni->AddEmModel(-2, modI, reg);
413 if(
nullptr != modI2) {
417 theDNAIoni->AddEmModel(-3, modI2, reg);
420 if(4 != opt && 6 != opt) {
424 theDNAVibExc->AddEmModel(-1, modS, reg);
425 modS->SelectStationary(stationary);
430 theDNAAttach->AddEmModel(-1, modM, reg);
431 modM->SelectStationary(stationary);
452 modE->SetHighEnergyLimit(lowEnergyMSC);
453 modE->SelectStationary(stationary);
454 pElasticProcess->AddEmModel(-1, modE, reg);
457 G4double e2DNA = std::min(e1DNA, lowEnergyRPWBA);
460 modMGE->SetHighEnergyLimit(e2DNA);
461 modMGE->SelectStationary(stationary);
462 theDNAExc->AddEmModel(-1, modMGE, reg);
464 if(e2DNA < lowEnergyRPWBA) {
466 modB->SelectStationary(stationary);
467 modB->SetLowEnergyLimit(e2DNA);
468 modB->SetHighEnergyLimit(lowEnergyRPWBA);
469 theDNAExc->AddEmModel(-2, modB, reg);
471 if(lowEnergyRPWBA < emaxIonDNA) {
473 modC->SelectStationary(stationary);
474 modC->SetLowEnergyLimit(lowEnergyRPWBA);
475 modC->SetHighEnergyLimit(emaxIonDNA);
476 theDNAExc->AddEmModel(-3, modC, reg);
484 mod->SelectStationary(stationary);
488 mod->SelectStationary(stationary);
492 theDNAIoni->AddEmModel(-1, modRI, reg);
494 if(e2DNA < lowEnergyRPWBA) {
496 modI->SelectFasterComputation(fast);
497 modI->SelectStationary(stationary);
498 modI->SetLowEnergyLimit(e2DNA);
499 modI->SetHighEnergyLimit(lowEnergyRPWBA);
500 theDNAIoni->AddEmModel(-2, modI, reg);
502 if(lowEnergyRPWBA < emaxIonDNA) {
504 modJ->SelectFasterComputation(fast);
505 modJ->SelectStationary(stationary);
506 modJ->SetLowEnergyLimit(lowEnergyRPWBA);
507 modJ->SetHighEnergyLimit(emaxIonDNA);
508 theDNAIoni->AddEmModel(-3, modJ, reg);
512 auto theDNAChargeDecreaseProcess =
515 modDCD->SelectStationary(stationary);
516 modDCD->SetLowEnergyLimit(0.0);
517 modDCD->SetHighEnergyLimit(emax);
518 theDNAChargeDecreaseProcess->AddEmModel(-1, modDCD, reg);
535 mod->SelectStationary(stationary);
536 mod->SetHighEnergyLimit(emaxIonDNA);
537 theDNAIoni->AddEmModel(-1, mod, reg);
560 modEI->SelectStationary(stationary);
561 modEI->SetHighEnergyLimit(lowEnergyMSC);
562 theDNAElastic->AddEmModel(-1, modEI, reg);
567 modMGE->SelectStationary(stationary);
568 modMGE->SetLowEnergyLimit(0.0);
569 modMGE->SetHighEnergyLimit(emaxIonDNA);
570 theDNAExc->AddEmModel(-1, modMGE, reg);
577 mod->SelectStationary(stationary);
581 mod->SelectStationary(stationary);
585 theDNAIoni->AddEmModel(-1, modRI, reg);
589 auto theDNAChargeIncrease =
592 modDCI->SelectStationary(stationary);
593 modDCI->SetLowEnergyLimit(0.0);
594 modDCI->SetHighEnergyLimit(emax);
595 theDNAChargeIncrease->AddEmModel(-1, modDCI, reg);
600 auto theDNAChargeDecrease =
603 modDCD->SelectStationary(stationary);
604 modDCD->SetLowEnergyLimit(0.0);
605 modDCD->SetHighEnergyLimit(emax);
606 theDNAChargeDecrease->AddEmModel(-1, modDCD, reg);
G4DNABornExcitationModel1 G4DNABornExcitationModel
#define G4DNABornIonisationModel
@ fLowEnergyChargeIncrease
@ fLowEnergyVibrationalExcitation
@ fLowEnergyElectronSolvation
@ fLowEnergyChargeDecrease
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()
static void ConstructMinimalEmSet()
static void PrepareEMPhysics()
static void ConstructBasicEmPhysics(G4hMultipleScattering *hmsc, const std::vector< G4int > &listHadrons)
static G4LowECapture * FindOrBuildCapture(const G4double elim, G4ParticleDefinition *part)
static void ConstructDNALightIonPhysics(G4ParticleDefinition *part, const G4int charge, const G4int opt, const G4double emax, const G4bool fast, const G4bool stationary, const G4Region *reg=nullptr)
static G4DNAChargeDecrease * FindOrBuildChargeDecrease(G4ParticleDefinition *part, const G4String &name)
static G4DNAExcitation * FindOrBuildExcitation(G4ParticleDefinition *part, const G4String &name)
static G4DNAElastic * FindOrBuildElastic(G4ParticleDefinition *part, const G4String &name)
static G4DNAChargeIncrease * FindOrBuildChargeIncrease(G4ParticleDefinition *part, const G4String &name)
static void ConstructDNAParticles()
static void ConstructDNAIonPhysics(const G4double emax, const G4bool stationary, const G4Region *reg=nullptr)
static G4DNAElectronSolvation * FindOrBuildElectronSolvation()
static void ConstructDNAProtonPhysics(const G4double e1DNA, const G4double emaxDNA, const G4int opt, const G4bool fast, const G4bool stationary, const G4Region *reg=nullptr)
static G4DNAVibExcitation * FindOrBuildVibExcitation(G4ParticleDefinition *part, const G4String &name)
static void ConstructStandardEmPhysics(const G4double emin_electron, const G4double emin_proton, const G4double emin_alpha, const G4double emin_ion, const G4EmDNAMscModelType mscType, const G4bool fast)
static G4DNAAttachment * FindOrBuildAttachment(G4ParticleDefinition *part, const G4String &name)
static G4DNAIonisation * FindOrBuildIonisation(G4ParticleDefinition *part, const G4String &name)
static void ConstructDNAElectronPhysics(const G4double emaxDNA, const G4int opt, const G4bool fast, const G4bool stationary, const G4Region *reg=nullptr)
static G4EmParameters * Instance()
G4double MaxKinEnergy() const
static G4GenericIon * GenericIon()
G4ProcessManager * GetProcessManager() const
G4double GetPDGMass() const
const G4String & GetParticleName() const
static G4VProcess * FindProcess(const G4ParticleDefinition *, G4int subtype)
G4bool RegisterProcess(G4VProcess *process, G4ParticleDefinition *particle)
static G4PhysicsListHelper * GetPhysicsListHelper()
static G4Positron * Positron()
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
static G4Proton * Proton()
void SetHighEnergyLimit(G4double)
void SetActivationLowEnergyLimit(G4double)
void SetLowEnergyLimit(G4double)
void AddEmModel(G4int, G4VEmModel *, const G4Region *region=nullptr)
void SetEmModel(G4VEmModel *, G4int index=0)
void SetEmModel(G4VEmModel *, G4int index=0)
void SetEmModel(G4VMscModel *, G4int idx=0)