150{
151 const std::vector<G4String>& regnamesDNA = theParameters->
RegionsDNA();
152 G4int nreg = regnamesDNA.size();
153 if(0 == nreg)
154 {
155 return;
156 }
157 const std::vector<G4String>& typesDNA = theParameters->
TypesDNA();
158
159 if(IsVerbose()) {
160 G4cout <<
"### G4EmDNAPhysicsActivator::ConstructProcess for " << nreg
161 <<
" regions; DNA physics type " << typesDNA[0] <<
G4endl;
162 }
163
164
168
175
183
184
189
190 G4bool emsc = HasMsc(eman);
191 G4bool pmsc = HasMsc(pman);
192 G4bool a2msc = HasMsc(a2man);
193 G4bool a1msc = HasMsc(a1man);
194
195
196
197
201
206
211
216
221
226
227
232
237
242
247
252
257
258
263
264
269
274
279
284
289
294
299
300
305
306
311
316
321
326
331
336
337
338
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;
345
346
347
348
349
350
351
355
368
369
370 for(
G4int i = 0; i < nreg; ++i)
371 {
373 if(IsVerbose())
374 {
375 G4cout <<
"### DNA models type " << typesDNA[i]
376 <<
" are activated for G4Region " << reg <<
G4endl;
377 }
378
379 if(typesDNA[i] == "DNA_Opt0") {
380 AddElectronModels0(reg, emsc, elimel);
381 }
382 else if(typesDNA[i] == "DNA_Opt2"){
383 AddElectronModels2(reg, emsc, elimel);
384 }
385 else if(typesDNA[i] == "DNA_Opt4"){
386 AddElectronModels4(reg, emsc, elimel);
387 }
388 else if(typesDNA[i] == "DNA_Opt4a"){
389 AddElectronModels4a(reg, emsc, elimel);
390 }
391 else if(typesDNA[i] == "DNA_Opt6"){
392 AddElectronModels6(reg, emsc, elimel);
393 }
394 else if(typesDNA[i] == "DNA_Opt6a"){
395 AddElectronModels6a(reg, emsc, elimel);
396 }
397 else if(typesDNA[i] == "DNA_Opt7") {
398 AddElectronModels7(reg, emsc, elimel);
399 }
400
401
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);
408 }
409
411 ltman->EmConfigurator()->AddModels();
412}
G4GLOB_DLL std::ostream G4cout
static G4VEmModel * GetMacroDefinedModel()
One step thermalization model can be chosen via macro using /process/dna/e-SolvationSubType Ritchie19...
const std::vector< G4String > & TypesDNA() const
const std::vector< G4String > & RegionsDNA() const
static G4GenericIon * GenericIon()
static G4LossTableManager * Instance()
G4ProcessManager * GetProcessManager() const
G4bool RegisterProcess(G4VProcess *process, G4ParticleDefinition *particle)
static G4PhysicsListHelper * GetPhysicsListHelper()
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
void SetEmModel(G4VEmModel *, G4int index=0)