ECCE @ EIC Software
 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 // J. Comput. Phys. 274 (2014) 841-882
31 // The Geant4-DNA web site is available at http://geant4-dna.org
32 //
33 //
36 
37 #include "PhysicsList.hh"
38 #include "G4SystemOfUnits.hh"
39 #include "G4RunManager.hh"
40 #include "G4PhysicsListHelper.hh"
41 
42 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
43 
46 {
47  SetVerboseLevel(1);
48 }
49 
50 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
51 
53 {
54 }
55 
56 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
57 
59 {
63 }
64 
65 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
66 
68 {
69  // gamma
71 }
72 
73 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
74 
76 {
77  // leptons
80 }
81 
82 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
83 
84 //DNA
86 //ENDDNA
87 
89 {
90  // baryons
93 
94  // Geant4 DNA new particles
95  G4DNAGenericIonsManager * genericIonsManager;
96  genericIonsManager=G4DNAGenericIonsManager::Instance();
97  genericIonsManager->GetIon("alpha++");
98  genericIonsManager->GetIon("alpha+");
99  genericIonsManager->GetIon("helium");
100  genericIonsManager->GetIon("hydrogen");
101  genericIonsManager->GetIon("carbon");
102  genericIonsManager->GetIon("nitrogen");
103  genericIonsManager->GetIon("oxygen");
104  genericIonsManager->GetIon("iron");
105 }
106 
107 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
108 
110 {
112  ConstructEM();
114 }
115 
116 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
117 
118 // Geant4-DNA MODELS
119 
120 #include "G4DNAElastic.hh"
123 #include "G4DNAPTBElasticModel.hh"
124 
125 #include "G4DNAExcitation.hh"
130 
131 #include "G4DNAIonisation.hh"
136 
137 #include "G4DNAChargeDecrease.hh"
139 
140 #include "G4DNAChargeIncrease.hh"
142 
143 #include "G4DNAAttachment.hh"
145 
146 #include "G4DNAVibExcitation.hh"
148 
149 //
150 
151 #include "G4LossTableManager.hh"
152 #include "G4EmConfigurator.hh"
153 #include "G4DNAVacuumModel.hh"
154 #include "G4VEmModel.hh"
155 #include "G4DNAModelInterface.hh"
156 
157 //#include "G4ElectronCapture.hh"
158 
159 //....oooOO0OOooo........oooOO0OOooo........oooOOG4DNAPTB0OOooo........oooOO0OOooo....
160 
162 {
164 
165  auto myParticleIterator=GetParticleIterator();
166  myParticleIterator->reset();
167  while( (*myParticleIterator)() )
168  {
169  G4ParticleDefinition* particle = myParticleIterator->value();
170  G4String particleName = particle->GetParticleName();
171 
172  if(particleName == "e-")
173  {
174  // **********************************************************
175  // Instanciate models
176  // **********************************************************
177 
178  G4DNAScreenedRutherfordElasticModel* e_modelDNARutherfordElastic =
180  G4DNAEmfietzoglouIonisationModel* e_modelDNAEmfietzoglouIonisation =
182  G4DNAEmfietzoglouExcitationModel* e_modelDNAEmfietzoglouExcitation =
184  // G4DNAMeltonAttachmentModel* e_modelDNAAttachement=
186  // G4DNASancheExcitationModel* e_modelDNAVibra=
188 
189  G4DNAPTBElasticModel* modelDNAPTBElastic =
190  new G4DNAPTBElasticModel("THF/TMP/PY", particle);
191  G4DNAPTBIonisationModel* modelDNAPTBIonisation =
192  new G4DNAPTBIonisationModel("THF/TMP/PY",particle);
193  G4DNAPTBExcitationModel* modelDNAPTBExcitation =
194  new G4DNAPTBExcitationModel("THF/TMP/PY",particle);
195 
196 
197  // Register models in the model interface
198 
199  //for elastics in three types of materials
200  G4DNAModelInterface* e_elasticInteraction =
201  new G4DNAModelInterface("e-_elastic_interaction");
202  e_elasticInteraction->
203  RegisterModel(e_modelDNARutherfordElastic, particle);
204  e_elasticInteraction->RegisterModel(modelDNAPTBElastic);
205  e_elasticInteraction->RegisterModel(new G4DNAVacuumModel());
206 
207 
208  //for ionization in three types of material
209 
210  G4DNAModelInterface* e_ionisationInteraction=
211  new G4DNAModelInterface("e-_ionisation_interaction");
212  e_ionisationInteraction->
213  RegisterModel(e_modelDNAEmfietzoglouIonisation,particle);
214  e_ionisationInteraction->RegisterModel(modelDNAPTBIonisation);
215  e_ionisationInteraction->RegisterModel(new G4DNAVacuumModel());
216 
217  //for excitation in three types of material
218  G4DNAModelInterface* e_excitationInteraction=
219  new G4DNAModelInterface("e-_excitation_interaction");
220  e_excitationInteraction->
221  RegisterModel(e_modelDNAEmfietzoglouExcitation,particle);
222  e_excitationInteraction->RegisterModel(modelDNAPTBExcitation);
223  e_excitationInteraction->RegisterModel(new G4DNAVacuumModel());
224 
225  //Instanciate Processes
226  // Elastic
227  G4DNAElastic* e_DNAElasticProcess =
228  new G4DNAElastic("e-_G4DNAElastic");
229  e_DNAElasticProcess->SetEmModel(e_elasticInteraction);
230  // Ionisation
231  G4DNAIonisation* e_DNAIonisationProcess =
232  new G4DNAIonisation("e-_G4DNAIonisation");
233  e_DNAIonisationProcess->SetEmModel(e_ionisationInteraction);
234  // Excitation
235  G4DNAExcitation* e_DNAExcitationProcess =
236  new G4DNAExcitation("e-_G4DNAExcitation");
237  e_DNAExcitationProcess->SetEmModel(e_excitationInteraction);
238  /* G4DNAAttachment* e_DNAAttachementProcess=
239  new G4DNAAttachment("e-_G4DNAAttachement");
240  e_DNAAttachementProcess->SetEmModel(e_attachementInteraction);
241  G4DNAVibExcitation* e_DNAVibraProcess=
242  new G4DNAVibExcitation("e-_G4DNAVibraExci");
243  e_DNAVibraProcess->SetEmModel(e_VibInteraction);*/
244 
245 
246  // **********************************************************
247  // Add previous process
248  // **********************************************************
249 
250  // *** Elastic ***
251  ph->RegisterProcess(e_DNAElasticProcess, particle);
252  // *** Excitation ***
253  ph->RegisterProcess(e_DNAExcitationProcess, particle);
254  // *** Ionisation ***
255  ph->RegisterProcess(e_DNAIonisationProcess, particle);
256 
257 
258  } /*else if ( particleName == "proton" ) {
259 
260  G4DNAPTBIonisationModel* p_modelDNAPTBIonisation =
261  new G4DNAPTBIonisationModel("THF/TMP/PY", particle);
262  G4DNARuddIonisationModel* p_modelDNARuddIonisation =
263  new G4DNARuddIonisationModel();
264  // G4DNABornIonisationModel* p_modelDNABornIonisation =
265  new G4DNABornIonisationModel();
266  // G4DNABornExcitationModel* p_modelDNABornExcitation =
267  new G4DNABornExcitationModel();
268 
269  G4DNAModelInterface* p_ionisationInteraction=
270  new G4DNAModelInterface("p_ionisation_interaction");
271  p_ionisationInteraction->RegisterModel(p_modelDNAPTBIonisation);
272  p_ionisationInteraction->RegisterModel(new G4DNAVacuumModel());
273  p_ionisationInteraction->RegisterModel(p_modelDNARuddIonisation, particle);
274 
275  G4DNAIonisation* p_DNAIonisationProcess =
276  new G4DNAIonisation("p_G4DNAIonisation");
277  p_DNAIonisationProcess->SetEmModel(p_ionisationInteraction);
278  ph->RegisterProcess(p_DNAIonisationProcess, particle);
279 
280  }*/
281  }
282 }
283 
284 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
285 
287 {
288 }
289 
290 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
291 
293 {
294 //Set default cut value to 1 nm for all particles
295 
296  SetDefaultCutValue(0.000001);
297 }
298 
299