Geant4-11
G4EmDNAPhysics_stationary.cc
Go to the documentation of this file.
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
27
28#include "G4SystemOfUnits.hh"
29
31
32// *** Processes and models for Geant4-DNA
33
34#include "G4DNAElastic.hh"
38
39#include "G4DNAExcitation.hh"
40#include "G4DNAAttachment.hh"
41#include "G4DNAVibExcitation.hh"
42#include "G4DNAIonisation.hh"
45
46// particles
47
48#include "G4Electron.hh"
49#include "G4Proton.hh"
50#include "G4Alpha.hh"
51#include "G4GenericIon.hh"
52
53#include "G4EmParameters.hh"
54
56#include "G4BuilderType.hh"
57
58// factory
60//
62
63
64//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
65
67 : G4EmDNAPhysics(ver, nam)
68{
70 param->SetDNAStationary(true);
71}
72
73//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
74
76{}
77
78//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
79
81{
82 if(verboseLevel > 1) {
83 G4cout << "### " << GetPhysicsName() << " Construct Processes " << G4endl;
84 }
86
88 G4DNAGenericIonsManager* genericIonsManager
90
91 // e-
93
94 // *** Elastic scattering ***
95 G4DNAElastic* theDNAElastic = new G4DNAElastic("e-_G4DNAElastic");
96 theDNAElastic->SetEmModel(new G4DNAChampionElasticModel());
97 ph->RegisterProcess(theDNAElastic, part);
98
99 // *** Excitation ***
100 G4DNAExcitation* theDNAExc = new G4DNAExcitation("e-_G4DNAExcitation");
102 theDNAExc->SetEmModel(modB);
103 modB->SelectStationary(true);
104 ph->RegisterProcess(theDNAExc, part);
105
106 // *** Ionisation ***
107 G4DNAIonisation* theDNAIoni = new G4DNAIonisation("e-_G4DNAIonisation");
109 theDNAIoni->SetEmModel(modI);
110 modI->SelectStationary(true);
111 ph->RegisterProcess(theDNAIoni, part);
112
113 // *** Vibrational excitation ***
114 G4DNAVibExcitation* theDNAVibExc =
115 new G4DNAVibExcitation("e-_G4DNAVibExcitation");
117 theDNAVibExc->SetEmModel(modS);
118 modS->SelectStationary(true);
119 ph->RegisterProcess(theDNAVibExc, part);
120
121 // *** Attachment ***
122 G4DNAAttachment* theDNAAttach = new G4DNAAttachment("e-_G4DNAAttachment");
124 theDNAAttach->SetEmModel(modM);
125 modM->SelectStationary(true);
126 ph->RegisterProcess(theDNAAttach, part);
127
128 // proton
129 part = G4Proton::Proton();
130
131 // *** Elastic ***
132 theDNAElastic = new G4DNAElastic("proton_G4DNAElastic");
134 theDNAElastic->SetEmModel(modE);
135 modE->SelectStationary(true);
136 ph->RegisterProcess(theDNAElastic, part);
137
138 // *** Excitation ***
139 theDNAExc = new G4DNAExcitation("proton_G4DNAExcitation");
142 modMGE->SetLowEnergyLimit(10*eV);
143 modMGE->SetHighEnergyLimit(500*keV);
144 modMGE->SelectStationary(true);
145 theDNAExc->SetEmModel(modMGE);
147 modBE->SetLowEnergyLimit(500*keV);
148 modBE->SetHighEnergyLimit(100*MeV);
149 modBE->SelectStationary(true);
150 theDNAExc->SetEmModel(modBE);
151 ph->RegisterProcess(theDNAExc, part);
152
153 // *** Ionisation ***
154 theDNAIoni = new G4DNAIonisation("proton_G4DNAIonisation");
156 modRI->SetLowEnergyLimit(0*eV);
157 modRI->SetHighEnergyLimit(500*keV);
158 modRI->SelectStationary(true);
159 theDNAIoni->SetEmModel(modRI);
161 modBI->SetLowEnergyLimit(500*keV);
162 modBI->SetHighEnergyLimit(100*MeV);
163 modBI->SelectStationary(true);
164 theDNAIoni->SetEmModel(modBI);
165 ph->RegisterProcess(theDNAIoni, part);
166
167 // *** Charge decrease ***
168 G4DNAChargeDecrease* theDNAChargeDecreaseProcess =
169 new G4DNAChargeDecrease("proton_G4DNAChargeDecrease");
172 modDCD->SelectStationary(true);
173 theDNAChargeDecreaseProcess->SetEmModel(modDCD);
174 ph->RegisterProcess(theDNAChargeDecreaseProcess, part);
175
176 // hydrogen
177 part = genericIonsManager->GetIon("hydrogen");
178
179 // *** Elastic ***
180 theDNAElastic = new G4DNAElastic("hydrogen_G4DNAElastic");
182 modEI->SelectStationary(true);
183 theDNAElastic->SetEmModel(modEI);
184 ph->RegisterProcess(theDNAElastic, part);
185
186 // *** Excitation ***
187 theDNAExc = new G4DNAExcitation("hydrogen_G4DNAExcitation");
188 modMGE = new G4DNAMillerGreenExcitationModel();
189 modMGE->SelectStationary(true);
190 theDNAExc->SetEmModel(modMGE);
191 ph->RegisterProcess(theDNAExc, part);
192
193 // *** Ionisation ***
194 theDNAIoni = new G4DNAIonisation("hydrogen_G4DNAIonisation");
195 modRI = new G4DNARuddIonisationModel();
196 theDNAIoni->SetEmModel(new G4DNARuddIonisationModel());
197 modRI->SelectStationary(true);
198 ph->RegisterProcess(theDNAIoni, part);
199
200 // *** Charge increase ***
201 G4DNAChargeIncrease* theDNAChargeIncreaseProcess =
202 new G4DNAChargeIncrease("hydrogen_G4DNAChargeIncrease");
205 modDCI->SelectStationary(true);
206 theDNAChargeIncreaseProcess->SetEmModel(modDCI);
207 ph->RegisterProcess(theDNAChargeIncreaseProcess, part);
208
209 // alpha++
210 part = G4Alpha::Alpha();
211
212 // *** Elastic ***
213 theDNAElastic = new G4DNAElastic("alpha_G4DNAElastic");
214 modEI = new G4DNAIonElasticModel();
215 modEI->SelectStationary(true);
216 theDNAElastic->SetEmModel(modEI);
217 ph->RegisterProcess(theDNAElastic, part);
218
219 // *** Excitation ***
220 theDNAExc = new G4DNAExcitation("alpha_G4DNAExcitation");
221 modMGE = new G4DNAMillerGreenExcitationModel();
222 modMGE->SelectStationary(true);
223 theDNAExc->SetEmModel(modMGE);
224 ph->RegisterProcess(theDNAExc, part);
225
226 // *** Ionisation ***
227 theDNAIoni = new G4DNAIonisation("alpha_G4DNAIonisation");
228 modRI = new G4DNARuddIonisationModel();
229 theDNAIoni->SetEmModel(new G4DNARuddIonisationModel());
230 modRI->SelectStationary(true);
231 ph->RegisterProcess(theDNAIoni, part);
232
233 // *** Charge decrease ***
234 theDNAChargeDecreaseProcess =
235 new G4DNAChargeDecrease("alpha_G4DNAChargeDecrease");
237 modDCD->SelectStationary(true);
238 theDNAChargeDecreaseProcess->SetEmModel(modDCD);
239 ph->RegisterProcess(theDNAChargeDecreaseProcess, part);
240
241 // alpha+
242 part = genericIonsManager->GetIon("alpha+");
243
244 // *** Elastic ***
245 theDNAElastic = new G4DNAElastic("alpha+_G4DNAElastic");
246 modEI = new G4DNAIonElasticModel();
247 modEI->SelectStationary(true);
248 theDNAElastic->SetEmModel(modEI);
249 ph->RegisterProcess(theDNAElastic, part);
250
251 // *** Excitation ***
252 theDNAExc = new G4DNAExcitation("alpha+_G4DNAExcitation");
253 modMGE = new G4DNAMillerGreenExcitationModel();
254 modMGE->SelectStationary(true);
255 theDNAExc->SetEmModel(modMGE);
256 ph->RegisterProcess(theDNAExc, part);
257
258 // *** Ionisation ***
259 theDNAIoni = new G4DNAIonisation("alpha+_G4DNAIonisation");
260 modRI = new G4DNARuddIonisationModel();
261 theDNAIoni->SetEmModel(new G4DNARuddIonisationModel());
262 modRI->SelectStationary(true);
263 ph->RegisterProcess(theDNAIoni, part);
264
265 // *** Charge decrease ***
266 theDNAChargeDecreaseProcess =
267 new G4DNAChargeDecrease("alpha+_G4DNAChargeDecrease");
269 modDCD->SelectStationary(true);
270 theDNAChargeDecreaseProcess->SetEmModel(modDCD);
271 ph->RegisterProcess(theDNAChargeDecreaseProcess, part);
272
273 // *** Charge increase ***
274 theDNAChargeIncreaseProcess =
275 new G4DNAChargeIncrease("alpha+_G4DNAChargeIncrease");
277 modDCI->SelectStationary(true);
278 theDNAChargeIncreaseProcess->SetEmModel(modDCI);
279 ph->RegisterProcess(theDNAChargeIncreaseProcess, part);
280
281 // helium
282 part = genericIonsManager->GetIon("helium");
283
284 // *** Elastic ***
285 theDNAElastic = new G4DNAElastic("helium_G4DNAElastic");
286 modEI = new G4DNAIonElasticModel();
287 modEI->SelectStationary(true);
288 theDNAElastic->SetEmModel(modEI);
289 ph->RegisterProcess(theDNAElastic, part);
290
291 // *** Excitation ***
292 theDNAExc = new G4DNAExcitation("helium_G4DNAExcitation");
293 modMGE = new G4DNAMillerGreenExcitationModel();
294 modMGE->SelectStationary(true);
295 theDNAExc->SetEmModel(modMGE);
296 ph->RegisterProcess(theDNAExc, part);
297
298 // *** Ionisation ***
299 theDNAIoni = new G4DNAIonisation("helium_G4DNAIonisation");
300 modRI = new G4DNARuddIonisationModel();
301 theDNAIoni->SetEmModel(new G4DNARuddIonisationModel());
302 modRI->SelectStationary(true);
303 ph->RegisterProcess(theDNAIoni, part);
304
305 // *** Charge increase ***
306 theDNAChargeIncreaseProcess =
307 new G4DNAChargeIncrease("helium_G4DNAChargeIncrease");
309 modDCI->SelectStationary(true);
310 theDNAChargeIncreaseProcess->SetEmModel(modDCI);
311 ph->RegisterProcess(theDNAChargeIncreaseProcess, part);
312
313 // other ions
315
316 // *** Ionisation ***
317 theDNAIoni = new G4DNAIonisation("GenericIon_G4DNAIonisation");
320 mod->SelectStationary(true);
321 theDNAIoni->SetEmModel(mod);
322 ph->RegisterProcess(theDNAIoni, part);
323}
324
G4DNABornExcitationModel1 G4DNABornExcitationModel
#define G4DNABornIonisationModel
G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_stationary)
static constexpr double keV
Definition: G4SIunits.hh:202
static constexpr double eV
Definition: G4SIunits.hh:201
static constexpr double MeV
Definition: G4SIunits.hh:200
int G4int
Definition: G4Types.hh:85
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
static G4Alpha * Alpha()
Definition: G4Alpha.cc:88
static G4DNAGenericIonsManager * Instance(void)
G4ParticleDefinition * GetIon(const G4String &name)
void SelectStationary(G4bool input)
static G4Electron * Electron()
Definition: G4Electron.cc:93
G4EmDNAPhysics_stationary(G4int ver=1, const G4String &nam="G4EmDNAPhysics_stationary")
virtual void ConstructGammaPositronProcesses()
static G4EmParameters * Instance()
void SetDNAStationary(G4bool val)
static G4GenericIon * GenericIon()
Definition: G4GenericIon.cc:92
G4bool RegisterProcess(G4VProcess *process, G4ParticleDefinition *particle)
static G4PhysicsListHelper * GetPhysicsListHelper()
static G4Proton * Proton()
Definition: G4Proton.cc:92
void SetHighEnergyLimit(G4double)
Definition: G4VEmModel.hh:767
void SetLowEnergyLimit(G4double)
Definition: G4VEmModel.hh:774
void SetEmModel(G4VEmModel *, G4int index=0)
const G4String & GetPhysicsName() const