Geant4  v4-10.4-release
 모두 클래스 네임스페이스들 파일들 함수 변수 타입정의 열거형 타입 열거형 멤버 Friends 매크로 그룹들 페이지들
examples/extended/medical/dna/neuron/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 // and papers
31 // M. Batmunkh et al. J Radiat Res Appl Sci 8 (2015) 498-507
32 // O. Belov et al. Physica Medica 32 (2016) 1510-1520
33 // The Geant4-DNA web site is available at http://geant4-dna.org
34 //
35 // -------------------------------------------------------------------
36 // November 2016
37 // -------------------------------------------------------------------
38 //
39 // $Id$
40 //
43 
44 #include "PhysicsList.hh"
45 #include "G4SystemOfUnits.hh"
47 // G4RegisterPhysicsConstructors.icc is necessary for static builds
48 #define REGREF PhysicsList
49 #include "G4RegisterPhysicsConstructors.icc"
50 #include "CommandLineParser.hh"
51 #include "G4EmParameters.hh"
52 // for discrete physics constructors!
53 #include "G4EmDNAPhysics.hh"
60 #include "G4EmDNAChemistry.hh"
61 // for condensed physics constructors!
62 #include "G4EmLivermorePhysics.hh"
63 #include "G4EmPenelopePhysics.hh"
64 #include "G4EmStandardPhysics.hh"
66 // for hadronic physics constructors!
69 #include "G4StoppingPhysics.hh"
71 #include "G4EmExtraPhysics.hh"
72 #include "G4NeutronTrackingCut.hh"
73 #include "G4DecayPhysics.hh"
75 
76 // G4.10.3 and later version
78 
79 using namespace G4DNAPARSER ;
80 
81 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
82 
85 {
86  double currentDefaultCut ;
87  currentDefaultCut = 1.*micrometer ;
88  SetDefaultCutValue(currentDefaultCut);
89  SetVerboseLevel(1);
90  // fixe lower limit for cut
92  SetEnergyRange(100*eV, 1*GeV);
93 
94  // Options of combination Geant4-DNA processes (Physics/Chemistry)
95  // with Standard and Hadronic Physics:
96 
97  // a) DNAphysics and Livermore physics inside and outside neuron
98  if(CommandLineParser::GetParser()->GetCommandIfActive("-dnaliv"))
99  {
100  G4cout<< "Livermore + DNAphysics is activated!"<<G4endl;
101  RegisterConstructor("G4EmLivermorePhysics");
102 
103  // G4.10.2 and before version
104  // G4EmParameters::Instance()->AddDNA("BoundingSlice","Opt4");
105  // G4EmParameters::Instance()->AddDNA("Soma","Opt4");
106  // G4EmParameters::Instance()->AddDNA("Dendrites","Opt4");
107  // G4EmParameters::Instance()->AddDNA("Axon","Opt4");
108 
109  // G4.10.3 and later version!
110  // 'G4EmParameters' works together with 'G4EmDNAPhysicsActivator'
111  RegisterPhysics(new G4EmDNAPhysicsActivator());
112  G4EmParameters::Instance()->AddDNA("Soma","Opt4");
113  G4EmParameters::Instance()->AddDNA("Dendrites","Opt4");
114  G4EmParameters::Instance()->AddDNA("Axon","Opt4");
115  }
116 
117  // b) Livermore + DNAPhysics + DNAChemistry
118  else if(CommandLineParser::GetParser()->GetCommandIfActive("-dnachemON"))
119  {
120  G4cout<< "'Livermore + DNAphysics + DNAChemistry' is activated!"<<G4endl;
121  RegisterConstructor("G4EmLivermorePhysics");
122 
123  // G4.10.2 and before version
124  // G4EmParameters::Instance()->AddDNA("BoundingSlice","Opt4");
125  // RegisterConstructor("G4EmDNAChemistry");
126 
127  // G4.10.3 and later version
128  RegisterPhysics(new G4EmDNAPhysicsActivator());
129  RegisterPhysics(new G4EmDNAChemistry());
130  G4EmParameters::Instance()->AddDNA("Soma","Opt4");
131  G4EmParameters::Instance()->AddDNA("Dendrites","Opt4");
132  G4EmParameters::Instance()->AddDNA("Axon","Opt4");
133  }
134 
135  // d) "QGSP_BIC_EMY" package from hadrontherapy advanced example
136  else if(CommandLineParser::GetParser()->GetCommandIfActive("-dnahad"))
137  {
138  G4cout
139  << "HadronPhysics + LivermorePhysics + DNAPhysics is activated!"<<G4endl;
140  // Hadron Elastic Physics
141  RegisterConstructor("G4HadronElasticPhysics");
142  // Hadron Inelastic Physics
143  RegisterConstructor("G4HadronPhysicsQGSP_BIC");
144  // Stopping
145  RegisterConstructor("G4StoppingPhysics");
146  // Ion Physics
147  RegisterConstructor("G4IonBinaryCascadePhysics");
148  // Gamma-Lepto nuclear
149  RegisterConstructor("G4EmExtraPhysics");
150  // Limiters
151  RegisterConstructor("G4NeutronTrackingCut");
152  // Decay
153  RegisterConstructor("G4DecayPhysics");
154  // Radioactive decay
155  // RegisterConstructor("G4RadioactiveDecayPhysics");
156 
157  // EM physics: Livermore
158  RegisterConstructor("G4EmLivermorePhysics");
159 
160  // EM physics: DNAPhysics inside BoundingSliceVolume
161  // G4.10.2 and before version
162  //G4EmParameters::Instance()->AddDNA("BoundingSlice","Opt4");
163 
164  // G4.10.3 and later version
165  RegisterPhysics(new G4EmDNAPhysicsActivator());
166  G4EmParameters::Instance()->AddDNA("Soma","Opt4");
167  G4EmParameters::Instance()->AddDNA("Dendrites","Opt4");
168  G4EmParameters::Instance()->AddDNA("Axon","Opt4");
169  }
170 
171  // Only G4EmStandardPhysics or G4EmLivermorePhysics in all volume
172  else
173  {
174  G4cout<< "Only LivermorePhysics is activated!"<<G4endl;
175  RegisterConstructor("G4EmLivermorePhysics");
176  //RegisterConstructor("G4EmStandardPhysics_option4");
177  //RegisterConstructor("G4EmDNAPhysics_option4");
178  }
179 }
180 
181 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
182 
184 {
186  GetPhysicsConstructor(name));
187 }
188 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
189 
191 {
192 }
193 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
static constexpr double micrometer
Definition: G4SIunits.hh:100
const XML_Char * name
Definition: expat.h:151
#define G4endl
Definition: G4ios.hh:61
static G4PhysicsConstructorRegistry * Instance()
void RegisterPhysics(G4VPhysicsConstructor *)
PhysicsList()
Implementation of the PhysicsList class.
static constexpr double eV
Definition: G4SIunits.hh:215
void AddDNA(const G4String &region, const G4String &type)
static G4ProductionCutsTable * GetProductionCutsTable()
G4GLOB_DLL std::ostream G4cout
static constexpr double GeV
Definition: G4SIunits.hh:217
static G4EmParameters * Instance()