Geant4  v4-10.4-release
 모두 클래스 네임스페이스들 파일들 함수 변수 타입정의 열거형 타입 열거형 멤버 Friends 매크로 그룹들 페이지들
examples/extended/medical/dna/icsd/src/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 // $Id$
34 //
37 
38 #include "PhysicsList.hh"
39 #include "G4SystemOfUnits.hh"
40 #include "G4RunManager.hh"
41 #include "G4PhysicsListHelper.hh"
42 
43 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
44 
47 {
48  SetVerboseLevel(1);
49 }
50 
51 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
52 
54 {
55 }
56 
57 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
58 
60 {
64 }
65 
66 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
67 
69 {
70  // gamma
72 }
73 
74 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
75 
77 {
78  // leptons
81 }
82 
83 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
84 
85 //DNA
87 //ENDDNA
88 
90 {
91  // baryons
94 
95  // Geant4 DNA new particles
96  G4DNAGenericIonsManager * genericIonsManager;
97  genericIonsManager=G4DNAGenericIonsManager::Instance();
98  genericIonsManager->GetIon("alpha++");
99  genericIonsManager->GetIon("alpha+");
100  genericIonsManager->GetIon("helium");
101  genericIonsManager->GetIon("hydrogen");
102  genericIonsManager->GetIon("carbon");
103  genericIonsManager->GetIon("nitrogen");
104  genericIonsManager->GetIon("oxygen");
105  genericIonsManager->GetIon("iron");
106 }
107 
108 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
109 
111 {
113  ConstructEM();
115 }
116 
117 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
118 
119 // Geant4-DNA MODELS
120 
121 #include "G4DNAElastic.hh"
124 #include "G4DNAPTBElasticModel.hh"
125 
126 #include "G4DNAExcitation.hh"
131 
132 #include "G4DNAIonisation.hh"
137 
138 #include "G4DNAChargeDecrease.hh"
140 
141 #include "G4DNAChargeIncrease.hh"
143 
144 #include "G4DNAAttachment.hh"
146 
147 #include "G4DNAVibExcitation.hh"
149 
150 //
151 
152 #include "G4LossTableManager.hh"
153 #include "G4EmConfigurator.hh"
154 #include "G4DNAVacuumModel.hh"
155 #include "G4VEmModel.hh"
156 #include "G4DNAModelInterface.hh"
157 
158 //#include "G4ElectronCapture.hh"
159 
160 //....oooOO0OOooo........oooOO0OOooo........oooOOG4DNAPTB0OOooo........oooOO0OOooo....
161 
163 {
165 
166  auto myParticleIterator=GetParticleIterator();
167  myParticleIterator->reset();
168  while( (*myParticleIterator)() )
169  {
170  G4ParticleDefinition* particle = myParticleIterator->value();
171  G4String particleName = particle->GetParticleName();
172 
173  if(particleName == "e-")
174  {
175  // **********************************************************
176  // Instanciate models
177  // **********************************************************
178 
179  G4DNAScreenedRutherfordElasticModel* e_modelDNARutherfordElastic =
181  G4DNAEmfietzoglouIonisationModel* e_modelDNAEmfietzoglouIonisation =
183  G4DNAEmfietzoglouExcitationModel* e_modelDNAEmfietzoglouExcitation =
185  // G4DNAMeltonAttachmentModel* e_modelDNAAttachement=
187  // G4DNASancheExcitationModel* e_modelDNAVibra=
189 
190  G4DNAPTBElasticModel* modelDNAPTBElastic =
191  new G4DNAPTBElasticModel("THF/TMP/PY", particle);
192  G4DNAPTBIonisationModel* modelDNAPTBIonisation =
193  new G4DNAPTBIonisationModel("THF/TMP/PY",particle);
194  G4DNAPTBExcitationModel* modelDNAPTBExcitation =
195  new G4DNAPTBExcitationModel("THF/TMP/PY",particle);
196 
197 
198  // Register models in the model interface
199 
200  //for elastics in three types of materials
201  G4DNAModelInterface* e_elasticInteraction =
202  new G4DNAModelInterface("e-_elastic_interaction");
203  e_elasticInteraction->
204  RegisterModel(e_modelDNARutherfordElastic, particle);
205  e_elasticInteraction->RegisterModel(modelDNAPTBElastic);
206  e_elasticInteraction->RegisterModel(new G4DNAVacuumModel());
207 
208 
209  //for ionization in three types of material
210 
211  G4DNAModelInterface* e_ionisationInteraction=
212  new G4DNAModelInterface("e-_ionisation_interaction");
213  e_ionisationInteraction->
214  RegisterModel(e_modelDNAEmfietzoglouIonisation,particle);
215  e_ionisationInteraction->RegisterModel(modelDNAPTBIonisation);
216  e_ionisationInteraction->RegisterModel(new G4DNAVacuumModel());
217 
218  //for excitation in three types of material
219  G4DNAModelInterface* e_excitationInteraction=
220  new G4DNAModelInterface("e-_excitation_interaction");
221  e_excitationInteraction->
222  RegisterModel(e_modelDNAEmfietzoglouExcitation,particle);
223  e_excitationInteraction->RegisterModel(modelDNAPTBExcitation);
224  e_excitationInteraction->RegisterModel(new G4DNAVacuumModel());
225 
226  //Instanciate Processes
227  // Elastic
228  G4DNAElastic* e_DNAElasticProcess =
229  new G4DNAElastic("e-_G4DNAElastic");
230  e_DNAElasticProcess->SetEmModel(e_elasticInteraction);
231  // Ionisation
232  G4DNAIonisation* e_DNAIonisationProcess =
233  new G4DNAIonisation("e-_G4DNAIonisation");
234  e_DNAIonisationProcess->SetEmModel(e_ionisationInteraction);
235  // Excitation
236  G4DNAExcitation* e_DNAExcitationProcess =
237  new G4DNAExcitation("e-_G4DNAExcitation");
238  e_DNAExcitationProcess->SetEmModel(e_excitationInteraction);
239  /* G4DNAAttachment* e_DNAAttachementProcess=
240  new G4DNAAttachment("e-_G4DNAAttachement");
241  e_DNAAttachementProcess->SetEmModel(e_attachementInteraction);
242  G4DNAVibExcitation* e_DNAVibraProcess=
243  new G4DNAVibExcitation("e-_G4DNAVibraExci");
244  e_DNAVibraProcess->SetEmModel(e_VibInteraction);*/
245 
246 
247  // **********************************************************
248  // Add previous process
249  // **********************************************************
250 
251  // *** Elastic ***
252  ph->RegisterProcess(e_DNAElasticProcess, particle);
253  // *** Excitation ***
254  ph->RegisterProcess(e_DNAExcitationProcess, particle);
255  // *** Ionisation ***
256  ph->RegisterProcess(e_DNAIonisationProcess, particle);
257 
258 
259  } /*else if ( particleName == "proton" ) {
260 
261  G4DNAPTBIonisationModel* p_modelDNAPTBIonisation =
262  new G4DNAPTBIonisationModel("THF/TMP/PY", particle);
263  G4DNARuddIonisationModel* p_modelDNARuddIonisation =
264  new G4DNARuddIonisationModel();
265  // G4DNABornIonisationModel* p_modelDNABornIonisation =
266  new G4DNABornIonisationModel();
267  // G4DNABornExcitationModel* p_modelDNABornExcitation =
268  new G4DNABornExcitationModel();
269 
270  G4DNAModelInterface* p_ionisationInteraction=
271  new G4DNAModelInterface("p_ionisation_interaction");
272  p_ionisationInteraction->RegisterModel(p_modelDNAPTBIonisation);
273  p_ionisationInteraction->RegisterModel(new G4DNAVacuumModel());
274  p_ionisationInteraction->RegisterModel(p_modelDNARuddIonisation, particle);
275 
276  G4DNAIonisation* p_DNAIonisationProcess =
277  new G4DNAIonisation("p_G4DNAIonisation");
278  p_DNAIonisationProcess->SetEmModel(p_ionisationInteraction);
279  ph->RegisterProcess(p_DNAIonisationProcess, particle);
280 
281  }*/
282  }
283 }
284 
285 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
286 
288 {
289 }
290 
291 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
292 
294 {
295 //Set default cut value to 1 nm for all particles
296 
297  SetDefaultCutValue(0.000001);
298 }
299 
300 
The G4DNAPTBIonisationModel class Implements the PTB ionisation model.
const G4String & GetParticleName() const
G4ParticleTable::G4PTblDicIterator * GetParticleIterator() const
static G4Proton * ProtonDefinition()
Definition: G4Proton.cc:88
void SetEmModel(G4VEmModel *, G4int index=0)
PhysicsList()
Implementation of the PhysicsList class.
The G4DNAPTBElasticModel class This class implements the elastic model for the DNA materials and prec...
void SetDefaultCutValue(G4double newCutValue)
static G4Electron * ElectronDefinition()
Definition: G4Electron.cc:89
G4bool RegisterProcess(G4VProcess *process, G4ParticleDefinition *particle)
static G4Gamma * GammaDefinition()
Definition: G4Gamma.cc:81
static G4GenericIon * GenericIonDefinition()
Definition: G4GenericIon.cc:88
static G4PhysicsListHelper * GetPhysicsListHelper()
G4ParticleDefinition * GetIon(const G4String &name)
static G4DNAGenericIonsManager * Instance(void)
The G4DNAPTBExcitationModel class This class implements the PTB excitation model. ...
static G4Positron * PositronDefinition()
Definition: G4Positron.cc:89
The G4DNAVacuumModel class Implementation of the vacuum model allowing the user to use G4_Galactic as...
void RegisterModel(G4VDNAModel *model)
RegisterModel Method used to associate a model with the interaction.