ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
PhysicsList.cc
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file PhysicsList.cc
1
//
2
// ********************************************************************
3
// * License and Disclaimer *
4
// * *
5
// * The Geant4 software is copyright of the Copyright Holders of *
6
// * the Geant4 Collaboration. It is provided under the terms and *
7
// * conditions of the Geant4 Software License, included in the file *
8
// * LICENSE and available at http://cern.ch/geant4/license . These *
9
// * include a list of copyright holders. *
10
// * *
11
// * Neither the authors of this software system, nor their employing *
12
// * institutes,nor the agencies providing financial support for this *
13
// * work make any representation or warranty, express or implied, *
14
// * regarding this software system or assume any liability for its *
15
// * use. Please see the license in the file LICENSE and URL above *
16
// * for the full disclaimer and the limitation of liability. *
17
// * *
18
// * This code implementation is the result of the scientific and *
19
// * technical work of the GEANT4 collaboration. *
20
// * By using, copying, modifying or distributing the software (or *
21
// * any work based on the software) you agree to acknowledge its *
22
// * use in resulting scientific publications, and indicate your *
23
// * acceptance of all terms of the Geant4 Software license. *
24
// ********************************************************************
25
//
26
// This example is provided by the Geant4-DNA collaboration
27
// Any report or published results obtained using the Geant4-DNA software
28
// shall cite the following Geant4-DNA collaboration publication:
29
// Med. Phys. 37 (2010) 4692-4708
30
// The Geant4-DNA web site is available at http://geant4-dna.org
31
//
34
35
#include "PhysicsList.hh"
36
#include "
G4SystemOfUnits.hh
"
37
38
// Geant4-DNA MODELS
39
40
#include "
G4DNAElastic.hh
"
41
#include "
G4DNAChampionElasticModel.hh
"
42
#include "
G4DNAScreenedRutherfordElasticModel.hh
"
43
44
#include "
G4DNAExcitation.hh
"
45
#include "
G4DNAMillerGreenExcitationModel.hh
"
46
#include "
G4DNABornExcitationModel.hh
"
47
48
#include "
G4DNAIonisation.hh
"
49
#include "
G4DNABornIonisationModel.hh
"
50
#include "
G4DNARuddIonisationModel.hh
"
51
52
#include "
G4DNAChargeDecrease.hh
"
53
#include "
G4DNADingfelderChargeDecreaseModel.hh
"
54
55
#include "
G4DNAChargeIncrease.hh
"
56
#include "
G4DNADingfelderChargeIncreaseModel.hh
"
57
58
#include "
G4DNAAttachment.hh
"
59
#include "
G4DNAMeltonAttachmentModel.hh
"
60
61
#include "
G4DNAVibExcitation.hh
"
62
#include "
G4DNASancheExcitationModel.hh
"
63
64
#include "
G4DNAElectronSolvation.hh
"
65
66
//
67
68
#include "
G4LossTableManager.hh
"
69
#include "
G4EmConfigurator.hh
"
70
#include "
G4VEmModel.hh
"
71
#include "
G4DummyModel.hh
"
72
#include "
G4eIonisation.hh
"
73
#include "
G4hIonisation.hh
"
74
#include "
G4ionIonisation.hh
"
75
#include "
G4eMultipleScattering.hh
"
76
#include "
G4hMultipleScattering.hh
"
77
#include "
G4BraggIonGasModel.hh
"
78
#include "
G4BetheBlochIonGasModel.hh
"
79
#include "
G4UrbanMscModel.hh
"
80
#include "
G4MollerBhabhaModel.hh
"
81
#include "
G4IonFluctuations.hh
"
82
#include "
G4UniversalFluctuation.hh
"
83
84
#include "G4ElectronCapture.hh"
85
86
//seb
87
#include "
G4PhysicsListHelper.hh
"
88
#include "
G4WentzelVIModel.hh
"
89
#include "
G4CoulombScattering.hh
"
90
#include "
G4eCoulombScatteringModel.hh
"
91
#include "
G4BraggIonModel.hh
"
92
#include "
G4BraggModel.hh
"
93
#include "
G4BetheBlochModel.hh
"
94
#include "
G4DNAElastic.hh
"
95
96
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
97
98
PhysicsList::PhysicsList
():
G4VUserPhysicsList
()
99
{
100
defaultCutValue
= 1*
micrometer
;
101
fCutForGamma
=
defaultCutValue
;
102
fCutForElectron
=
defaultCutValue
;
103
fCutForPositron
=
defaultCutValue
;
104
fCutForProton
=
defaultCutValue
;
105
106
SetVerboseLevel
(1);
107
}
108
109
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
110
111
PhysicsList::~PhysicsList
()
112
{}
113
114
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
115
116
void
PhysicsList::ConstructParticle
()
117
{
118
ConstructBosons
();
119
ConstructLeptons
();
120
ConstructBarions
();
121
}
122
123
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
124
125
void
PhysicsList::ConstructBosons
()
126
{
127
// gamma
128
G4Gamma::GammaDefinition
();
129
}
130
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
131
132
void
PhysicsList::ConstructLeptons
()
133
{
134
// leptons
135
G4Electron::ElectronDefinition
();
136
G4Positron::PositronDefinition
();
137
}
138
139
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
140
141
//DNA
142
#include "
G4DNAGenericIonsManager.hh
"
143
//ENDDNA
144
145
void
PhysicsList::ConstructBarions
()
146
{
147
// baryons
148
G4Proton::ProtonDefinition
();
149
G4GenericIon::GenericIonDefinition
();
150
151
// Geant4 DNA new particles
152
G4DNAGenericIonsManager
* genericIonsManager;
153
genericIonsManager=
G4DNAGenericIonsManager::Instance
();
154
genericIonsManager->
GetIon
(
"alpha++"
);
155
genericIonsManager->
GetIon
(
"alpha+"
);
156
genericIonsManager->
GetIon
(
"helium"
);
157
genericIonsManager->
GetIon
(
"hydrogen"
);
158
}
159
160
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
161
162
void
PhysicsList::ConstructProcess
()
163
{
164
AddTransportation
();
165
ConstructEM
();
166
ConstructGeneral
();
167
}
168
169
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
170
171
void
PhysicsList::ConstructEM
()
172
{
173
174
auto
particleIterator
=
GetParticleIterator
();
175
particleIterator
->reset();
176
177
while
( (*
particleIterator
)() )
178
{
179
180
G4ParticleDefinition
*
particle
=
particleIterator
->value();
181
G4ProcessManager
* pmanager = particle->
GetProcessManager
();
182
G4String
particleName = particle->
GetParticleName
();
183
184
G4PhysicsListHelper
* ph =
G4PhysicsListHelper::GetPhysicsListHelper
();
185
186
// *********************************
187
// 1) Processes for the World region
188
// *********************************
189
190
if
(particleName ==
"e-"
) {
191
192
// STANDARD msc is active in the world
193
G4eMultipleScattering
* msc =
new
G4eMultipleScattering
();
194
msc->
AddEmModel
(1,
new
G4UrbanMscModel
());
195
ph->
RegisterProcess
(msc, particle);
196
197
// STANDARD ionisation is active in the world
198
G4eIonisation
* eion =
new
G4eIonisation
();
199
eion->
SetEmModel
(
new
G4MollerBhabhaModel
(), 1);
200
ph->
RegisterProcess
(eion, particle);
201
202
// DNA elastic is not active in the world
203
G4DNAElastic
* theDNAElasticProcess =
new
G4DNAElastic
(
"e-_G4DNAElastic"
);
204
theDNAElasticProcess->
SetEmModel
(
new
G4DummyModel
(),1);
205
pmanager->
AddDiscreteProcess
(theDNAElasticProcess);
206
207
// DNA excitation is not active in the world
208
G4DNAExcitation
* dnaex =
new
G4DNAExcitation
(
"e-_G4DNAExcitation"
);
209
dnaex->
SetEmModel
(
new
G4DummyModel
(),1);
210
pmanager->
AddDiscreteProcess
(dnaex);
211
212
// DNA ionisation is not active in the world
213
G4DNAIonisation
* dnaioni =
new
G4DNAIonisation
(
"e-_G4DNAIonisation"
);
214
dnaioni->
SetEmModel
(
new
G4DummyModel
(),1);
215
pmanager->
AddDiscreteProcess
(dnaioni);
216
217
// DNA attachment is not active in the world
218
G4DNAAttachment
* dnaatt =
new
G4DNAAttachment
(
"e-_G4DNAAttachment"
);
219
dnaatt->
SetEmModel
(
new
G4DummyModel
(),1);
220
pmanager->
AddDiscreteProcess
(dnaatt);
221
222
// DNA vib. excitation is not active in the world
223
G4DNAVibExcitation
* dnavib =
224
new
G4DNAVibExcitation
(
"e-_G4DNAVibExcitation"
);
225
dnavib->
SetEmModel
(
new
G4DummyModel
(),1);
226
pmanager->
AddDiscreteProcess
(dnavib);
227
228
// THE FOLLOWING PROCESS WILL KILL ALL ELECTRONS BELOW A
229
// SELECTED ENERY THRESHOLD
230
// Capture of low-energy e-
231
G4ElectronCapture
* ecap =
new
G4ElectronCapture
(
"Target"
, 7.4*
eV
);
232
pmanager->
AddDiscreteProcess
(ecap);
233
// 7.4 eV is compatible with the validity range of the elastic model
234
235
}
else
if
( particleName ==
"proton"
) {
236
237
// STANDARD msc is active in the world
238
G4hMultipleScattering
* msc =
new
G4hMultipleScattering
();
239
msc->
AddEmModel
(1,
new
G4WentzelVIModel
());
240
ph->
RegisterProcess
(msc, particle);
241
242
// STANDARD Coulomb scattering is active in the world
243
G4CoulombScattering
* pcou =
new
G4CoulombScattering
();
244
ph->
RegisterProcess
(pcou, particle);
245
246
// STANDARD ionisation is active in the world
247
G4hIonisation
* hion =
new
G4hIonisation
();
248
hion->
SetEmModel
(
new
G4BraggModel
(), 1);
249
hion->
SetEmModel
(
new
G4BetheBlochModel
(), 2);
250
ph->
RegisterProcess
(hion, particle);
251
252
// DNA excitation is not active in the world
253
G4DNAExcitation
* dnaex =
new
G4DNAExcitation
(
"proton_G4DNAExcitation"
);
254
dnaex->
SetEmModel
(
new
G4DummyModel
(),1);
255
dnaex->
SetEmModel
(
new
G4DummyModel
(),2);
256
pmanager->
AddDiscreteProcess
(dnaex);
257
258
// DNA ionisation is not active in the world
259
G4DNAIonisation
* dnaioni =
new
G4DNAIonisation
(
"proton_G4DNAIonisation"
);
260
dnaioni->
SetEmModel
(
new
G4DummyModel
(),1);
261
dnaioni->
SetEmModel
(
new
G4DummyModel
(),2);
262
pmanager->
AddDiscreteProcess
(dnaioni);
263
264
// DNA elastic is not active in the world
265
G4DNAElastic
* dnael =
new
G4DNAElastic
(
"proton_G4DNAElastic"
);
266
dnael->
SetEmModel
(
new
G4DummyModel
(),1);
267
pmanager->
AddDiscreteProcess
(dnael);
268
269
// DNA charge decrease is not active in the world
270
G4DNAChargeDecrease
* dnacd =
new
G4DNAChargeDecrease
271
(
"proton_G4DNAChargeDecrease"
);
272
dnacd->
SetEmModel
(
new
G4DummyModel
(),1);
273
pmanager->
AddDiscreteProcess
(dnacd);
274
275
}
else
if
( particleName ==
"hydrogen"
) {
276
277
// DNA excitation is not active in the world
278
G4DNAExcitation
* dnaex =
new
G4DNAExcitation
(
"hydrogen_G4DNAExcitation"
);
279
dnaex->
SetEmModel
(
new
G4DummyModel
(),1);
280
pmanager->
AddDiscreteProcess
(dnaex);
281
282
// DNA ionisation is not active in the world
283
G4DNAIonisation
* dnaioni =
new
G4DNAIonisation
284
(
"hydrogen_G4DNAIonisation"
);
285
dnaioni->
SetEmModel
(
new
G4DummyModel
(),1);
286
pmanager->
AddDiscreteProcess
(dnaioni);
287
288
// DNA elastic is not active in the world
289
G4DNAElastic
* dnael =
new
G4DNAElastic
(
"hydrogen_G4DNAElastic"
);
290
dnael->
SetEmModel
(
new
G4DummyModel
(),1);
291
pmanager->
AddDiscreteProcess
(dnael);
292
293
// DNA charge increase is not active in the world
294
G4DNAChargeIncrease
* dnaci =
new
G4DNAChargeIncrease
295
(
"hydrogen_G4DNAChargeIncrease"
);
296
dnaci->
SetEmModel
(
new
G4DummyModel
(),1);
297
pmanager->
AddDiscreteProcess
(dnaci);
298
299
}
else
if
(particleName ==
"GenericIon"
) {
300
301
// WARNING : THIS IS NEEDED FOR STANDARD ALPHA G4ionIonisation PROCESS
302
303
// STANDARD msc is active in the world
304
G4hMultipleScattering
* msc =
new
G4hMultipleScattering
();
305
msc->
AddEmModel
(1,
new
G4UrbanMscModel
());
306
ph->
RegisterProcess
(msc, particle);
307
308
// STANDARD ionisation is active in the world
309
G4ionIonisation
* hion =
new
G4ionIonisation
();
310
hion->
SetEmModel
(
new
G4BraggIonModel
(), 1);
311
hion->
SetEmModel
(
new
G4BetheBlochModel
(), 2);
312
ph->
RegisterProcess
(hion, particle);
313
314
}
else
if
( particleName ==
"alpha"
) {
315
316
// STANDARD msc is active in the world
317
G4hMultipleScattering
* msc =
new
G4hMultipleScattering
();
318
msc->
AddEmModel
(1,
new
G4UrbanMscModel
());
319
ph->
RegisterProcess
(msc, particle);
320
321
// STANDARD ionisation is active in the world
322
G4ionIonisation
* hion =
new
G4ionIonisation
();
323
hion->
SetEmModel
(
new
G4BraggIonModel
(), 1);
324
hion->
SetEmModel
(
new
G4BetheBlochModel
(), 2);
325
ph->
RegisterProcess
(hion, particle);
326
327
// DNA excitation is not active in the world
328
G4DNAExcitation
* dnaex =
new
G4DNAExcitation
(
"alpha_G4DNAExcitation"
);
329
dnaex->
SetEmModel
(
new
G4DummyModel
(),1);
330
pmanager->
AddDiscreteProcess
(dnaex);
331
332
// DNA ionisation is not active in the world
333
G4DNAIonisation
* dnaioni =
new
G4DNAIonisation
(
"alpha_G4DNAIonisation"
);
334
dnaioni->
SetEmModel
(
new
G4DummyModel
(),1);
335
pmanager->
AddDiscreteProcess
(dnaioni);
336
337
// DNA elastic is not active in the world
338
G4DNAElastic
* dnael =
new
G4DNAElastic
(
"alpha_G4DNAElastic"
);
339
dnael->
SetEmModel
(
new
G4DummyModel
(),1);
340
pmanager->
AddDiscreteProcess
(dnael);
341
342
// DNA charge decrease is not active in the world
343
G4DNAChargeDecrease
* dnacd =
new
G4DNAChargeDecrease
344
(
"alpha_G4DNAChargeDecrease"
);
345
dnacd->
SetEmModel
(
new
G4DummyModel
(),1);
346
pmanager->
AddDiscreteProcess
(dnacd);
347
348
}
else
if
( particleName ==
"alpha+"
) {
349
350
// STANDARD msc is active in the world
351
G4hMultipleScattering
* msc =
new
G4hMultipleScattering
();
352
msc->
AddEmModel
(1,
new
G4UrbanMscModel
());
353
ph->
RegisterProcess
(msc, particle);
354
355
// STANDARD ionisation is active in the world
356
G4ionIonisation
* hion =
new
G4ionIonisation
();
357
hion->
SetEmModel
(
new
G4BraggIonModel
(),1);
358
hion->
SetEmModel
(
new
G4BetheBlochModel
(), 2);
359
ph->
RegisterProcess
(hion, particle);
360
361
// DNA excitation is not active in the world
362
G4DNAExcitation
* dnaex =
new
G4DNAExcitation
(
"alpha+_G4DNAExcitation"
);
363
dnaex->
SetEmModel
(
new
G4DummyModel
(),1);
364
pmanager->
AddDiscreteProcess
(dnaex);
365
366
// DNA ionisation is not active in the world
367
G4DNAIonisation
* dnaioni =
new
G4DNAIonisation
(
"alpha+_G4DNAIonisation"
);
368
dnaioni->
SetEmModel
(
new
G4DummyModel
(),1);
369
pmanager->
AddDiscreteProcess
(dnaioni);
370
371
// DNA elastic is not active in the world
372
G4DNAElastic
* dnael =
new
G4DNAElastic
(
"alpha+_G4DNAElastic"
);
373
dnael->
SetEmModel
(
new
G4DummyModel
(),1);
374
pmanager->
AddDiscreteProcess
(dnael);
375
376
// DNA charge decrease is not active in the world
377
G4DNAChargeDecrease
* dnacd =
new
G4DNAChargeDecrease
378
(
"alpha+_G4DNAChargeDecrease"
);
379
dnacd->
SetEmModel
(
new
G4DummyModel
(),1);
380
pmanager->
AddDiscreteProcess
(dnacd);
381
382
// DNA charge increase is not active in the world
383
G4DNAChargeIncrease
* dnaci =
new
G4DNAChargeIncrease
384
(
"alpha+_G4DNAChargeIncrease"
);
385
dnaci->
SetEmModel
(
new
G4DummyModel
(),1);
386
pmanager->
AddDiscreteProcess
(dnaci);
387
388
}
else
if
( particleName ==
"helium"
) {
389
390
// DNA excitation is not active in the world
391
G4DNAExcitation
* dnaex =
new
G4DNAExcitation
(
"helium_G4DNAExcitation"
);
392
dnaex->
SetEmModel
(
new
G4DummyModel
(),1);
393
pmanager->
AddDiscreteProcess
(dnaex);
394
395
// DNA ionisation is not active in the world
396
G4DNAIonisation
* dnaioni =
new
G4DNAIonisation
(
"helium_G4DNAIonisation"
);
397
dnaioni->
SetEmModel
(
new
G4DummyModel
(),1);
398
pmanager->
AddDiscreteProcess
(dnaioni);
399
400
// DNA elastic is not active in the world
401
G4DNAElastic
* dnael =
new
G4DNAElastic
(
"helium_G4DNAElastic"
);
402
dnael->
SetEmModel
(
new
G4DummyModel
(),1);
403
pmanager->
AddDiscreteProcess
(dnael);
404
405
// DNA charge increase is not active in the world
406
G4DNAChargeIncrease
* dnaci =
new
G4DNAChargeIncrease
407
(
"helium_G4DNAChargeIncrease"
);
408
dnaci->
SetEmModel
(
new
G4DummyModel
(),1);
409
pmanager->
AddDiscreteProcess
(dnaci);
410
411
}
412
}
413
414
415
416
// **************************************
417
// 2) Define processes for Target region
418
// **************************************
419
420
// STANDARD EM processes should be inactivated when
421
// corresponding DNA processes are used
422
// - STANDARD EM e- processes are inactivated below 1 MeV
423
// - STANDARD EM proton & alpha processes are inactivated below
424
// standEnergyLimit
425
G4double
standEnergyLimit = 9.9*
MeV
;
426
//
427
428
G4double
massFactor = 1.0079/4.0026;
429
G4EmConfigurator
*
em_config
=
430
G4LossTableManager::Instance
()->
EmConfigurator
();
431
432
G4VEmModel
* mod;
433
434
// *** e-
435
436
// ---> STANDARD EM processes are inactivated below 1 MeV
437
438
mod =
new
G4UrbanMscModel
();
439
mod->
SetActivationLowEnergyLimit
(1.*
MeV
);
440
em_config->
SetExtraEmModel
(
"e-"
,
"msc"
,mod,
"Target"
);
441
442
mod =
new
G4MollerBhabhaModel
();
443
mod->
SetActivationLowEnergyLimit
(1.*
MeV
);
444
em_config->
SetExtraEmModel
(
"e-"
,
445
"eIoni"
,
446
mod,
447
"Target"
,
448
0.0,
449
100*
TeV
,
450
new
G4UniversalFluctuation
());
451
452
// ---> DNA processes activated
453
454
mod =
new
G4DNAChampionElasticModel
();
455
em_config->
SetExtraEmModel
(
"e-"
,
"e-_G4DNAElastic"
,
456
mod,
"Target"
,7.4*
eV
,1.*
MeV
);
457
458
mod =
new
G4DNABornIonisationModel
();
459
em_config->
SetExtraEmModel
(
"e-"
,
"e-_G4DNAIonisation"
,
460
mod,
"Target"
,11.*
eV
,1.*
MeV
);
461
// Note: valid from 11 eV to 0.999.. MeV then switch to std models at
462
// higher energies ; same for other models
463
464
mod =
new
G4DNABornExcitationModel
();
465
em_config->
SetExtraEmModel
(
"e-"
,
"e-_G4DNAExcitation"
,
466
mod,
"Target"
,9.*
eV
,1.*
MeV
);
467
468
mod =
new
G4DNAMeltonAttachmentModel
();
469
em_config->
SetExtraEmModel
(
"e-"
,
"e-_G4DNAAttachment"
,
470
mod,
"Target"
,4.*
eV
,13.*
eV
);
471
472
mod =
new
G4DNASancheExcitationModel
();
473
em_config->
SetExtraEmModel
(
"e-"
,
"e-_G4DNAVibExcitation"
,
474
mod,
"Target"
,2.*
eV
,100.*
eV
);
475
476
// *** proton
477
478
// ---> STANDARD EM processes inactivated below standEnergyLimit
479
// or below 1 MeV for scattering
480
481
// Inactivate following STANDARD processes
482
483
mod =
new
G4WentzelVIModel
();
484
mod->
SetActivationLowEnergyLimit
(1.*
MeV
);
485
em_config->
SetExtraEmModel
(
"proton"
,
"msc"
,mod,
"Target"
, 0, 100*
TeV
);
486
487
mod =
new
G4eCoulombScatteringModel
();
488
mod->
SetActivationLowEnergyLimit
(1.*
MeV
);
489
em_config->
SetExtraEmModel
(
"proton"
,
"CoulombScat"
,mod,
"Target"
, 0, 100*
TeV
);
490
491
mod =
new
G4BraggModel
();
492
mod->
SetActivationLowEnergyLimit
(standEnergyLimit);
493
em_config->
SetExtraEmModel
(
"proton"
,
"hIoni"
,
494
mod,
"Target"
,0.0,2*
MeV
,
new
G4IonFluctuations
());
495
496
mod =
new
G4BetheBlochModel
();
497
mod->
SetActivationLowEnergyLimit
(standEnergyLimit);
498
em_config->
SetExtraEmModel
(
"proton"
,
"hIoni"
,
499
mod,
"Target"
,2*
MeV
,100*
TeV
,
500
new
G4UniversalFluctuation
());
501
502
// ---> DNA processes activated
503
504
mod =
new
G4DNAIonElasticModel
();
505
em_config->
SetExtraEmModel
(
"proton"
,
"proton_G4DNAElastic"
,
506
mod,
"Target"
,100*
eV
,1.*
MeV
);
507
508
mod =
new
G4DNARuddIonisationModel
();
509
em_config->
SetExtraEmModel
(
"proton"
,
"proton_G4DNAIonisation"
,
510
mod,
"Target"
,100*
eV
,0.5*
MeV
);
511
512
mod =
new
G4DNABornIonisationModel
();
513
em_config->
SetExtraEmModel
(
"proton"
,
"proton_G4DNAIonisation"
,
514
mod,
"Target"
,0.5*
MeV
,10*
MeV
);
515
516
mod =
new
G4DNAMillerGreenExcitationModel
();
517
em_config->
SetExtraEmModel
(
"proton"
,
"proton_G4DNAExcitation"
,
518
mod,
"Target"
,10*
eV
,0.5*
MeV
);
519
520
mod =
new
G4DNABornExcitationModel
();
521
em_config->
SetExtraEmModel
(
"proton"
,
"proton_G4DNAExcitation"
,
522
mod,
"Target"
,0.5*
MeV
,10*
MeV
);
523
524
mod =
new
G4DNADingfelderChargeDecreaseModel
();
525
em_config->
SetExtraEmModel
(
"proton"
,
"proton_G4DNAChargeDecrease"
,
526
mod,
"Target"
,100*
eV
,10*
MeV
);
527
528
// *** hydrogen
529
530
// ---> NO STANDARD EM processes
531
532
// ---> DNA processes activated
533
534
mod =
new
G4DNAIonElasticModel
();
535
em_config->
SetExtraEmModel
(
"hydrogen"
,
"hydrogen_G4DNAElastic"
,
536
mod,
"Target"
,100.*
eV
,1.*
MeV
);
537
538
mod =
new
G4DNARuddIonisationModel
();
539
em_config->
SetExtraEmModel
(
"hydrogen"
,
"hydrogen_G4DNAIonisation"
,
540
mod,
"Target"
,100*
eV
,10*
MeV
);
541
542
mod =
new
G4DNAMillerGreenExcitationModel
();
543
em_config->
SetExtraEmModel
(
"hydrogen"
,
"hydrogen_G4DNAExcitation"
,
544
mod,
"Target"
,10*
eV
,0.5*
MeV
);
545
546
547
mod =
new
G4DNADingfelderChargeIncreaseModel
();
548
em_config->
SetExtraEmModel
(
"hydrogen"
,
"hydrogen_G4DNAChargeIncrease"
,
549
mod,
"Target"
,100*
eV
,10*
MeV
);
550
551
// *** alpha
552
553
// ---> STANDARD EM processes inactivated below standEnergyLimit
554
// or below 1 MeV for scattering
555
556
// Inactivate following STANDARD processes
557
558
mod =
new
G4UrbanMscModel
();
559
mod->
SetActivationLowEnergyLimit
(1.*
MeV
);
560
em_config->
SetExtraEmModel
(
"alpha"
,
"msc"
,mod,
"Target"
, 0, 100*
TeV
);
561
562
mod =
new
G4BraggIonModel
();
563
mod->
SetActivationLowEnergyLimit
(standEnergyLimit);
564
em_config->
SetExtraEmModel
(
"alpha"
,
"ionIoni"
,
565
mod,
"Target"
,0.0,2*
MeV
/massFactor,
566
new
G4IonFluctuations
());
567
568
mod =
new
G4BetheBlochModel
();
569
mod->
SetActivationLowEnergyLimit
(standEnergyLimit);
570
em_config->
SetExtraEmModel
(
"alpha"
,
"ionIoni"
,
571
mod,
"Target"
,2*
MeV
/massFactor,100*
TeV
,
572
new
G4UniversalFluctuation
());
573
574
// ---> DNA processes activated
575
576
mod =
new
G4DNAIonElasticModel
();
577
em_config->
SetExtraEmModel
(
"alpha"
,
"alpha_G4DNAElastic"
,
578
mod,
"Target"
,100*
eV
,1.*
MeV
);
579
580
mod =
new
G4DNARuddIonisationModel
();
581
em_config->
SetExtraEmModel
(
"alpha"
,
"alpha_G4DNAIonisation"
,
582
mod,
"Target"
,1*
keV
,10*
MeV
);
583
584
mod =
new
G4DNAMillerGreenExcitationModel
();
585
em_config->
SetExtraEmModel
(
"alpha"
,
"alpha_G4DNAExcitation"
,
586
mod,
"Target"
,1*
keV
,10*
MeV
);
587
588
mod =
new
G4DNADingfelderChargeDecreaseModel
();
589
em_config->
SetExtraEmModel
(
"alpha"
,
"alpha_G4DNAChargeDecrease"
,
590
mod,
"Target"
,1*
keV
,10*
MeV
);
591
592
// *** alpha+
593
594
// ---> STANDARD EM processes inactivated below standEnergyLimit
595
// or below 1 MeV for scattering
596
597
// Inactivate following STANDARD processes
598
599
mod =
new
G4UrbanMscModel
();
600
mod->
SetActivationLowEnergyLimit
(1.*
MeV
);
601
em_config->
SetExtraEmModel
(
"alpha+"
,
"msc"
,mod,
"Target"
, 0, 100*
TeV
);
602
603
mod =
new
G4BraggIonModel
();
604
mod->
SetActivationLowEnergyLimit
(standEnergyLimit);
605
em_config->
SetExtraEmModel
(
"alpha+"
,
"ionIoni"
,
606
mod,
"Target"
,0.0,2*
MeV
/massFactor,
607
new
G4IonFluctuations
());
608
609
mod =
new
G4BetheBlochModel
();
610
mod->
SetActivationLowEnergyLimit
(standEnergyLimit);
611
em_config->
SetExtraEmModel
(
"alpha+"
,
"ionIoni"
,
612
mod,
"Target"
,2*
MeV
/massFactor,100*
TeV
,
613
new
G4UniversalFluctuation
());
614
615
// ---> DNA processes activated
616
617
mod =
new
G4DNAIonElasticModel
();
618
em_config->
SetExtraEmModel
(
"alpha+"
,
"alpha+_G4DNAElastic"
,
619
mod,
"Target"
,100*
eV
,1.*
MeV
);
620
621
mod =
new
G4DNARuddIonisationModel
();
622
em_config->
SetExtraEmModel
(
"alpha+"
,
"alpha+_G4DNAIonisation"
,
623
mod,
"Target"
,1*
keV
,10*
MeV
);
624
625
mod =
new
G4DNAMillerGreenExcitationModel
();
626
em_config->
SetExtraEmModel
(
"alpha+"
,
"alpha+_G4DNAExcitation"
,
627
mod,
"Target"
,1*
keV
,10*
MeV
);
628
629
mod =
new
G4DNADingfelderChargeIncreaseModel
();
630
em_config->
SetExtraEmModel
(
"alpha+"
,
"alpha+_G4DNAChargeIncrease"
,
631
mod,
"Target"
,1*
keV
,10*
MeV
);
632
633
mod =
new
G4DNADingfelderChargeDecreaseModel
();
634
em_config->
SetExtraEmModel
(
"alpha+"
,
"alpha+_G4DNAChargeDecrease"
,
635
mod,
"Target"
,1*
keV
,10*
MeV
);
636
637
// *** helium
638
639
// ---> NO STANDARD EM processes
640
641
// ---> DNA processes activated
642
643
mod =
new
G4DNAIonElasticModel
();
644
em_config->
SetExtraEmModel
(
"helium"
,
"helium_G4DNAElastic"
,
645
mod,
"Target"
,100*
eV
,1.*
MeV
);
646
647
mod =
new
G4DNARuddIonisationModel
();
648
em_config->
SetExtraEmModel
(
"helium"
,
"helium_G4DNAIonisation"
,
649
mod,
"Target"
,1*
keV
,10*
MeV
);
650
651
mod =
new
G4DNAMillerGreenExcitationModel
();
652
em_config->
SetExtraEmModel
(
"helium"
,
"helium_G4DNAExcitation"
,
653
mod,
"Target"
,1*
keV
,10*
MeV
);
654
655
mod =
new
G4DNADingfelderChargeIncreaseModel
();
656
em_config->
SetExtraEmModel
(
"helium"
,
"helium_G4DNAChargeIncrease"
,
657
mod,
"Target"
,1*
keV
,10*
MeV
);
658
659
}
660
661
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
662
663
void
PhysicsList::ConstructGeneral
()
664
{ }
665
666
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
667
668
void
PhysicsList::SetCuts
()
669
{
670
if
(
verboseLevel
>0)
671
{
672
G4cout
<<
"PhysicsList::SetCuts:"
;
673
G4cout
<<
"CutLength : "
<<
G4BestUnit
(
defaultCutValue
,
"Length"
) <<
G4endl
;
674
}
675
676
// set cut values for gamma at first and for e- second and next for e+,
677
// because some processes for e+/e- need cut values for gamma
678
SetCutValue
(
fCutForGamma
,
"gamma"
);
679
SetCutValue
(
fCutForElectron
,
"e-"
);
680
SetCutValue
(
fCutForPositron
,
"e+"
);
681
SetCutValue
(
fCutForProton
,
"proton"
);
682
683
if
(
verboseLevel
>0) {
DumpCutValuesTable
(); }
684
}
geant4
tree
geant4-10.6-release
examples
extended
medical
dna
microdosimetry
src
PhysicsList.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:24:50
using
1.8.2 with
ECCE GitHub integration