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>
55 using namespace GroundPropagatorAG;
60 G4LossTableManager::Instance();
61 defaultCutValue = 0.7*
mm;
112 if (verboseLevel>0) {
113 G4cerr <<
"PhysicsList::AddPhysicsList: <" << name <<
">" << G4endl;
115 if (name ==
"emstandard_opt2") {
120 }
else if (name ==
"emstandard_opt3") {
125 }
else if (name ==
"emstandard_opt1") {
130 }
else if (name ==
"emstandard_opt0") {
135 }
else if (name ==
"FTFP_BERT_EMV") {
140 }
else if (name ==
"FTFP_BERT_EMX") {
145 }
else if (name ==
"FTFP_BERT") {
148 hadronPhys.push_back(
new HadronPhysicsFTFP_BERT());
150 }
else if (name ==
"FTF_BIC") {
153 hadronPhys.push_back(
new HadronPhysicsFTF_BIC());
154 hadronPhys.push_back(
new G4NeutronCrossSectionXS(verboseLevel));
156 }
else if (name ==
"LHEP") {
159 hadronPhys.push_back(
new HadronPhysicsLHEP());
161 }
else if (name ==
"LHEP_EMV") {
165 hadronPhys.push_back(
new HadronPhysicsLHEP_EMV());
167 }
else if (name ==
"QBBC") {
171 hadronPhys.push_back(
new G4HadronInelasticQBBC());
173 }
else if (name ==
"QGSC_BERT") {
176 hadronPhys.push_back(
new HadronPhysicsQGSC_BERT());
178 }
else if (name ==
"QGSP") {
181 hadronPhys.push_back(
new HadronPhysicsQGSP());
183 }
else if (name ==
"QGSP_BERT") {
186 hadronPhys.push_back(
new HadronPhysicsQGSP_BERT());
188 }
else if (name ==
"QGSP_FTFP_BERT") {
191 hadronPhys.push_back(
new HadronPhysicsQGSP_FTFP_BERT());
193 }
else if (name ==
"QGSP_BERT_EMV") {
198 }
else if (name ==
"QGSP_BERT_EMX") {
203 }
else if (name ==
"QGSP_BERT_HP") {
206 hadronPhys.push_back(
new HadronPhysicsQGSP_BERT_HP());
208 }
else if (name ==
"QGSP_BIC") {
211 hadronPhys.push_back(
new HadronPhysicsQGSP_BIC());
213 }
else if (name ==
"QGSP_BIC_EMY") {
217 hadronPhys.push_back(
new HadronPhysicsQGSP_BIC());
219 }
else if (name ==
"QGS_BIC") {
222 hadronPhys.push_back(
new HadronPhysicsQGS_BIC());
223 hadronPhys.push_back(
new G4NeutronCrossSectionXS(verboseLevel));
225 }
else if (name ==
"QGSP_BIC_HP") {
228 hadronPhys.push_back(
new HadronPhysicsQGSP_BIC_HP());
232 G4cerr <<
"PhysicsList::AddPhysicsList: <" << name <<
">"
242 hadronPhys.push_back(
new G4EmExtraPhysics(verboseLevel));
244 hadronPhys.push_back(
new G4HadronElasticPhysicsHP(verboseLevel) );
246 hadronPhys.push_back(
new G4HadronElasticPhysics(verboseLevel) );
248 hadronPhys.push_back(
new G4QStoppingPhysics(verboseLevel));
249 hadronPhys.push_back(
new G4IonBinaryCascadePhysics(verboseLevel));
250 hadronPhys.push_back(
new G4NeutronTrackingCut(verboseLevel));
257 hadronPhys.push_back(
new G4EmExtraPhysics(verboseLevel));
259 hadronPhys.push_back(
new G4HadronElasticPhysicsHP(verboseLevel) );
261 hadronPhys.push_back(
new G4HadronElasticPhysics(verboseLevel) );
263 hadronPhys.push_back(
new G4QStoppingPhysics(verboseLevel));
264 hadronPhys.push_back(
new G4IonPhysics(verboseLevel));
265 hadronPhys.push_back(
new G4NeutronTrackingCut(verboseLevel));
272 hadronPhys.push_back(
new G4EmExtraPhysics(verboseLevel));
273 hadronPhys.push_back(
new G4HadronElasticPhysicsLHEP(verboseLevel));
274 if(addStopping) {
hadronPhys.push_back(
new G4QStoppingPhysics(verboseLevel)); }
275 hadronPhys.push_back(
new G4IonPhysics(verboseLevel));
282 hadronPhys.push_back(
new G4EmExtraPhysics(verboseLevel));
283 RegisterPhysics(
new G4HadronElasticPhysicsXS(verboseLevel) );
284 hadronPhys.push_back(
new G4QStoppingPhysics(verboseLevel));
285 hadronPhys.push_back(
new G4IonBinaryCascadePhysics(verboseLevel));
286 hadronPhys.push_back(
new G4NeutronTrackingCut(verboseLevel));
293 hadronPhys.push_back(
new G4EmExtraPhysics(verboseLevel));
294 hadronPhys.push_back(
new G4HadronQElasticPhysics(verboseLevel));
295 hadronPhys.push_back(
new G4QStoppingPhysics(verboseLevel));
296 hadronPhys.push_back(
new G4IonPhysics(verboseLevel));
297 hadronPhys.push_back(
new G4NeutronTrackingCut(verboseLevel));
305 if (verboseLevel >0) {
306 G4cerr <<
"PhysicsList::SetCuts:";
307 G4cerr <<
"CutLength : " << G4BestUnit(defaultCutValue,
"Length") << G4endl;
318 DumpCutValuesTable();
355 G4cerr <<
"### PhysicsLists available: FTFP_BERT FTFP_BERT_EMV FTFP_BERT_EMX FTF_BIC"
357 G4cerr <<
" LHEP LHEP_EMV QBBC QGS_BIC QGSP"
359 G4cerr <<
" QGSC_BERT QGSP_BERT QGSP_BERT_EMV QGSP_BIC_EMY"
361 G4cerr <<
" QGSP_BERT_EMX QGSP_BERT_HP QGSP_BIC QGSP_BIC_HP"
void SetCutForElectron(G4double)
G4VPhysicsConstructor * particleList
void SetBuilderList2(G4bool addStopping=false)
void SetCutForProton(G4double)
void AddPhysicsList(const G4String &name)
void SetCutForGamma(G4double)
std::vector< G4VPhysicsConstructor * > hadronPhys
void SetCutForPositron(G4double)
PhysicsListMessenger * pMessenger
void SetBuilderList0(G4bool flagHP=false)
G4VPhysicsConstructor * emPhysicsList
void SetBuilderList1(G4bool flagHP=false)