Geant4  v4-10.4-release
 모두 클래스 네임스페이스들 파일들 함수 변수 타입정의 열거형 타입 열거형 멤버 Friends 매크로 그룹들 페이지들
examples/advanced/nanobeam/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 // Please cite the following paper if you use this software
27 // Nucl.Instrum.Meth.B260:20-27, 2007
28 
29 #include "PhysicsList.hh"
30 #include "G4SystemOfUnits.hh"
31 
32 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
33 
35 {
41 
42  SetVerboseLevel(1);
43 }
44 
45 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
46 
48 {}
49 
50 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
51 
53 {
57 }
58 
59 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
60 
62 {
63  // gamma
65 
66  // optical photon
68 }
69  //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
70 
72 {
73  // leptons
76 }
77 
78 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
79 
81 {
82  // barions
86 }
87 
88 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
89 
91 {
93  ConstructEM();
95 }
96 
97 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
98 
99 #include "G4PhotoElectricEffect.hh"
100 #include "G4ComptonScattering.hh"
101 #include "G4GammaConversion.hh"
102 
103 #include "G4eMultipleScattering.hh"
104 #include "G4eIonisation.hh"
105 #include "G4eBremsstrahlung.hh"
106 #include "G4eplusAnnihilation.hh"
107 
108 #include "G4MuMultipleScattering.hh"
109 #include "G4WentzelVIModel.hh"
110 
111 #include "G4MuIonisation.hh"
112 #include "G4MuBremsstrahlung.hh"
113 #include "G4MuPairProduction.hh"
114 #include "G4CoulombScattering.hh"
115 
116 #include "G4hMultipleScattering.hh"
117 #include "G4ionIonisation.hh"
118 #include "G4hIonisation.hh"
119 #include "G4hBremsstrahlung.hh"
120 #include "G4hPairProduction.hh"
121 
122 #include "G4StepLimiter.hh"
123 
124 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
125 
127 {
128 
130 
131 // ****************************************************************
132 // Identical to G4EmStandardPhysics but added G4StepLimiter process
133 // ****************************************************************
134 
135 
137  particleIterator->reset();
138 
139  while( (*particleIterator)() ){
140 
141  G4ParticleDefinition* particle = particleIterator->value();
142 
143  G4String particleName = particle->GetParticleName();
144 
145  if (particleName == "gamma") {
146 
147  ph->RegisterProcess(new G4PhotoElectricEffect(), particle);
148  ph->RegisterProcess(new G4ComptonScattering(), particle);
149  ph->RegisterProcess(new G4GammaConversion(), particle);
150 
151  } else if (particleName == "e-") {
152 
153  ph->RegisterProcess(new G4eMultipleScattering(), particle);
154  ph->RegisterProcess(new G4eIonisation(), particle);
155  ph->RegisterProcess(new G4eBremsstrahlung(), particle);
156 
157  } else if (particleName == "e+") {
158 
159  ph->RegisterProcess(new G4eMultipleScattering(), particle);
160  ph->RegisterProcess(new G4eIonisation(), particle);
161  ph->RegisterProcess(new G4eBremsstrahlung(), particle);
162  ph->RegisterProcess(new G4eplusAnnihilation(), particle);
163 
164  } else if( particleName == "mu+" ||
165  particleName == "mu-" ) {
166 
168  msc->AddEmModel(0, new G4WentzelVIModel());
169 
170  ph->RegisterProcess(msc, particle);
171  ph->RegisterProcess(new G4MuIonisation(), particle);
172  ph->RegisterProcess(new G4MuBremsstrahlung(), particle);
173  ph->RegisterProcess(new G4MuPairProduction(), particle);
174  ph->RegisterProcess(new G4CoulombScattering(), particle);
175 
176  } else if (particleName == "alpha" ||
177  particleName == "He3") {
178 
179  ph->RegisterProcess(new G4hMultipleScattering(), particle);
180  ph->RegisterProcess(new G4ionIonisation(), particle);
181 
182  } else if (particleName == "GenericIon") {
183 
184  ph->RegisterProcess(new G4hMultipleScattering(), particle);
185  ph->RegisterProcess(new G4ionIonisation(), particle);
186 
187  } else if (particleName == "proton") {
188  ph->RegisterProcess(new G4hMultipleScattering(), particle);
189  ph->RegisterProcess(new G4hIonisation(), particle);
190  ph->RegisterProcess(new G4hBremsstrahlung(), particle);
191  ph->RegisterProcess(new G4hPairProduction(), particle);
192 
193  ph->RegisterProcess(new G4StepLimiter(), particle);
194 
195  }
196  }
197 }
198 
199 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
200 
202 { }
203 
204 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
205 
207 {
208  if (verboseLevel >0){
209  G4cout << "PhysicsList::SetCuts:";
210  G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl;
211  }
212 
213  SetCutValue(fCutForGamma, "gamma");
216  SetCutValue(fCutForProton, "proton");
217  SetCutValue(fCutForProton, "anti_proton");
218 
220 }
221 
222 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
223 
225 {
226  fCutForGamma = val;
227 }
228 
229 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
230 
232 {
233  fCutForElectron = val;
234 }
235 
236 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
237 
239 {
240  fCutForPositron = val;
241 }
242 
243 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
244 
246 {
247  fCutForProton = val;
248 }
static constexpr double micrometer
Definition: G4SIunits.hh:100
#define G4endl
Definition: G4ios.hh:61
const G4String & GetParticleName() const
G4ParticleTable::G4PTblDicIterator * GetParticleIterator() const
double G4double
Definition: G4Types.hh:76
static G4Proton * ProtonDefinition()
Definition: G4Proton.cc:88
PhysicsList()
Implementation of the PhysicsList class.
static G4OpticalPhoton * OpticalPhotonDefinition()
static G4Electron * ElectronDefinition()
Definition: G4Electron.cc:89
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1
G4bool RegisterProcess(G4VProcess *process, G4ParticleDefinition *particle)
static G4Gamma * GammaDefinition()
Definition: G4Gamma.cc:81
static G4GenericIon * GenericIonDefinition()
Definition: G4GenericIon.cc:88
static G4PhysicsListHelper * GetPhysicsListHelper()
std::vector< G4InuclElementaryParticle >::iterator particleIterator
Definition: G4BigBanger.cc:65
G4GLOB_DLL std::ostream G4cout
void SetCutValue(G4double aCut, const G4String &pname)
void AddEmModel(G4int order, G4VEmModel *, const G4Region *region=nullptr)
static G4Positron * PositronDefinition()
Definition: G4Positron.cc:89
void DumpCutValuesTable(G4int flag=1)
static G4AntiProton * AntiProtonDefinition()
Definition: G4AntiProton.cc:88
void SetVerboseLevel(G4int value)