6 #include <G4DecayPhysics.hh>
7 #include <G4EmStandardPhysics.hh>
8 #include <G4EmStandardPhysics_option1.hh>
9 #include <G4EmStandardPhysics_option2.hh>
10 #include <G4EmStandardPhysics_option3.hh>
11 #include <G4EmLivermorePhysics.hh>
12 #include <G4EmPenelopePhysics.hh>
13 #include <G4HadronElasticPhysics.hh>
14 #include <G4HadronElasticPhysicsXS.hh>
15 #include <G4HadronElasticPhysicsHP.hh>
16 #include <G4HadronElasticPhysicsLHEP.hh>
17 #include <G4HadronQElasticPhysics.hh>
18 #include <G4ChargeExchangePhysics.hh>
19 #include <G4NeutronTrackingCut.hh>
20 #include <G4NeutronCrossSectionXS.hh>
21 #include <G4QStoppingPhysics.hh>
22 #include <G4LHEPStoppingPhysics.hh>
23 #include <G4IonBinaryCascadePhysics.hh>
24 #include <G4IonPhysics.hh>
25 #include <G4EmExtraPhysics.hh>
26 #include <G4EmProcessOptions.hh>
28 #include <HadronPhysicsFTFP_BERT.hh>
29 #include <HadronPhysicsFTF_BIC.hh>
30 #include <HadronPhysicsLHEP.hh>
31 #include <HadronPhysicsLHEP_EMV.hh>
32 #include <G4HadronInelasticQBBC.hh>
33 #include <HadronPhysicsQGSC_BERT.hh>
34 #include <HadronPhysicsQGSP.hh>
35 #include <HadronPhysicsQGSP_BERT.hh>
36 #include <HadronPhysicsQGSP_BERT_HP.hh>
37 #include <HadronPhysicsQGSP_BIC.hh>
38 #include <HadronPhysicsQGSP_BIC_HP.hh>
39 #include <HadronPhysicsQGSP_FTFP_BERT.hh>
40 #include <HadronPhysicsQGS_BIC.hh>
42 #include <G4IonPhysics.hh>
44 #include <G4LossTableManager.hh>
46 #include <G4ProcessManager.hh>
47 #include <G4ParticleTypes.hh>
48 #include <G4ParticleTable.hh>
50 #include <G4Electron.hh>
51 #include <G4Positron.hh>
52 #include <G4Proton.hh>
54 using namespace EdepSimulatorAG;
59 G4LossTableManager::Instance();
60 defaultCutValue = 0.7*
mm;
108 if (verboseLevel>0) {
109 G4cerr <<
"PhysicsList::AddPhysicsList: <" << name <<
">" << G4endl;
111 if (name ==
"emstandard_opt2") {
116 }
else if (name ==
"emstandard_opt3") {
121 }
else if (name ==
"emstandard_opt1") {
126 }
else if (name ==
"emstandard_opt0") {
131 }
else if (name ==
"FTFP_BERT_EMV") {
136 }
else if (name ==
"FTFP_BERT_EMX") {
141 }
else if (name ==
"FTFP_BERT") {
144 hadronPhys.push_back(
new HadronPhysicsFTFP_BERT());
146 }
else if (name ==
"FTF_BIC") {
149 hadronPhys.push_back(
new HadronPhysicsFTF_BIC());
150 hadronPhys.push_back(
new G4NeutronCrossSectionXS(verboseLevel));
152 }
else if (name ==
"LHEP") {
155 hadronPhys.push_back(
new HadronPhysicsLHEP());
157 }
else if (name ==
"LHEP_EMV") {
161 hadronPhys.push_back(
new HadronPhysicsLHEP_EMV());
163 }
else if (name ==
"QBBC") {
167 hadronPhys.push_back(
new G4HadronInelasticQBBC());
169 }
else if (name ==
"QGSC_BERT") {
172 hadronPhys.push_back(
new HadronPhysicsQGSC_BERT());
174 }
else if (name ==
"QGSP") {
177 hadronPhys.push_back(
new HadronPhysicsQGSP());
179 }
else if (name ==
"QGSP_BERT") {
182 hadronPhys.push_back(
new HadronPhysicsQGSP_BERT());
184 }
else if (name ==
"QGSP_FTFP_BERT") {
187 hadronPhys.push_back(
new HadronPhysicsQGSP_FTFP_BERT());
189 }
else if (name ==
"QGSP_BERT_EMV") {
194 }
else if (name ==
"QGSP_BERT_EMX") {
199 }
else if (name ==
"QGSP_BERT_HP") {
202 hadronPhys.push_back(
new HadronPhysicsQGSP_BERT_HP());
204 }
else if (name ==
"QGSP_BIC") {
207 hadronPhys.push_back(
new HadronPhysicsQGSP_BIC());
209 }
else if (name ==
"QGSP_BIC_EMY") {
213 hadronPhys.push_back(
new HadronPhysicsQGSP_BIC());
215 }
else if (name ==
"QGS_BIC") {
218 hadronPhys.push_back(
new HadronPhysicsQGS_BIC());
219 hadronPhys.push_back(
new G4NeutronCrossSectionXS(verboseLevel));
221 }
else if (name ==
"QGSP_BIC_HP") {
224 hadronPhys.push_back(
new HadronPhysicsQGSP_BIC_HP());
228 G4cerr <<
"PhysicsList::AddPhysicsList: <" << name <<
">"
238 hadronPhys.push_back(
new G4EmExtraPhysics(verboseLevel));
240 hadronPhys.push_back(
new G4HadronElasticPhysicsHP(verboseLevel) );
242 hadronPhys.push_back(
new G4HadronElasticPhysics(verboseLevel) );
244 hadronPhys.push_back(
new G4QStoppingPhysics(verboseLevel));
245 hadronPhys.push_back(
new G4IonBinaryCascadePhysics(verboseLevel));
246 hadronPhys.push_back(
new G4NeutronTrackingCut(verboseLevel));
253 hadronPhys.push_back(
new G4EmExtraPhysics(verboseLevel));
255 hadronPhys.push_back(
new G4HadronElasticPhysicsHP(verboseLevel) );
257 hadronPhys.push_back(
new G4HadronElasticPhysics(verboseLevel) );
259 hadronPhys.push_back(
new G4QStoppingPhysics(verboseLevel));
260 hadronPhys.push_back(
new G4IonPhysics(verboseLevel));
261 hadronPhys.push_back(
new G4NeutronTrackingCut(verboseLevel));
268 hadronPhys.push_back(
new G4EmExtraPhysics(verboseLevel));
269 hadronPhys.push_back(
new G4HadronElasticPhysicsLHEP(verboseLevel));
270 if(addStopping) {
hadronPhys.push_back(
new G4QStoppingPhysics(verboseLevel)); }
271 hadronPhys.push_back(
new G4IonPhysics(verboseLevel));
278 hadronPhys.push_back(
new G4EmExtraPhysics(verboseLevel));
279 RegisterPhysics(
new G4HadronElasticPhysicsXS(verboseLevel) );
280 hadronPhys.push_back(
new G4QStoppingPhysics(verboseLevel));
281 hadronPhys.push_back(
new G4IonBinaryCascadePhysics(verboseLevel));
282 hadronPhys.push_back(
new G4NeutronTrackingCut(verboseLevel));
289 hadronPhys.push_back(
new G4EmExtraPhysics(verboseLevel));
290 hadronPhys.push_back(
new G4HadronQElasticPhysics(verboseLevel));
291 hadronPhys.push_back(
new G4QStoppingPhysics(verboseLevel));
292 hadronPhys.push_back(
new G4IonPhysics(verboseLevel));
293 hadronPhys.push_back(
new G4NeutronTrackingCut(verboseLevel));
301 if (verboseLevel >0){
302 G4cerr <<
"PhysicsList::SetCuts:";
303 G4cerr <<
"CutLength : " << G4BestUnit(defaultCutValue,
"Length") << G4endl;
314 DumpCutValuesTable();
351 G4cerr <<
"### PhysicsLists available: FTFP_BERT FTFP_BERT_EMV FTFP_BERT_EMX FTF_BIC"
353 G4cerr <<
" LHEP LHEP_EMV QBBC QGS_BIC QGSP"
355 G4cerr <<
" QGSC_BERT QGSP_BERT QGSP_BERT_EMV QGSP_BIC_EMY"
357 G4cerr <<
" QGSP_BERT_EMX QGSP_BERT_HP QGSP_BIC QGSP_BIC_HP"
G4VPhysicsConstructor * particleList
void SetCutForPositron(G4double)
void SetCutForProton(G4double)
void SetBuilderList0(G4bool flagHP=false)
void SetCutForElectron(G4double)
void AddPhysicsList(const G4String &name)
void SetCutForGamma(G4double)
void SetBuilderList2(G4bool addStopping=false)
std::vector< G4VPhysicsConstructor * > hadronPhys
G4VPhysicsConstructor * emPhysicsList
void SetBuilderList1(G4bool flagHP=false)