6 #include "G4SystemOfUnits.hh"
7 #include "G4ParticleDefinition.hh"
8 #include "G4ParticleTable.hh"
10 #include "G4PionBuilder.hh"
11 #include "G4FTFPPionBuilder.hh"
12 #include "G4QGSPPionBuilder.hh"
13 #include "G4BertiniPionBuilder.hh"
15 #include "G4KaonBuilder.hh"
16 #include "G4FTFPKaonBuilder.hh"
17 #include "G4QGSPKaonBuilder.hh"
18 #include "G4BertiniKaonBuilder.hh"
20 #include "G4ProtonBuilder.hh"
21 #include "G4FTFPProtonBuilder.hh"
22 #include "G4QGSPProtonBuilder.hh"
23 #include "G4BertiniProtonBuilder.hh"
25 #include "G4NeutronBuilder.hh"
26 #include "G4FTFPNeutronBuilder.hh"
27 #include "G4QGSPNeutronBuilder.hh"
28 #include "G4BertiniNeutronBuilder.hh"
30 #include "G4HyperonFTFPBuilder.hh"
31 #include "G4AntiBarionBuilder.hh"
32 #include "G4FTFPAntiBarionBuilder.hh"
33 #include "G4MesonConstructor.hh"
34 #include "G4BaryonConstructor.hh"
35 #include "G4ShortLivedConstructor.hh"
36 #include "G4IonConstructor.hh"
38 #include "G4HadronCaptureProcess.hh"
39 #include "G4NeutronRadCapture.hh"
40 #include "G4NeutronInelasticXS.hh"
41 #include "G4NeutronCaptureXS.hh"
42 #include "G4CrossSectionDataSetRegistry.hh"
44 #include "G4PhysListUtil.hh"
45 #include "G4ProcessManager.hh"
51 G4double
e1, G4double e2, G4double
e3, G4double
e4, G4double e5)
52 : G4VPhysicsConstructor(
"hInelasticQGSPCMS_FTFP_BERT") {
63 G4MesonConstructor pMesonConstructor;
64 pMesonConstructor.ConstructParticle();
66 G4BaryonConstructor pBaryonConstructor;
67 pBaryonConstructor.ConstructParticle();
69 G4ShortLivedConstructor pShortLivedConstructor;
70 pShortLivedConstructor.ConstructParticle();
94 auto neu =
new G4NeutronBuilder;
96 auto qgs =
new G4QGSPNeutronBuilder(
true);
100 auto ftf =
new G4FTFPNeutronBuilder(
false);
104 neu->RegisterMe(ftf);
105 auto bert =
new G4BertiniNeutronBuilder;
107 bert->SetMinEnergy(0.0);
109 neu->RegisterMe(bert);
114 auto pro =
new G4ProtonBuilder;
116 auto qgs =
new G4QGSPProtonBuilder(
true);
119 pro->RegisterMe(qgs);
120 auto ftf =
new G4FTFPProtonBuilder(
false);
124 pro->RegisterMe(ftf);
125 auto bert =
new G4BertiniProtonBuilder;
127 bert->SetMinEnergy(0.0);
129 pro->RegisterMe(bert);
134 auto pi =
new G4PionBuilder;
136 auto qgs =
new G4QGSPPionBuilder(
true);
140 auto ftf =
new G4FTFPPionBuilder(
false);
145 auto bert =
new G4BertiniPionBuilder;
147 bert->SetMinEnergy(0.0);
149 pi->RegisterMe(bert);
154 auto k =
new G4KaonBuilder;
156 auto qgs =
new G4QGSPKaonBuilder(
true);
160 auto ftf =
new G4FTFPKaonBuilder(
false);
165 auto bert =
new G4BertiniKaonBuilder;
169 bert->SetMinEnergy(0.0);
178 auto abar =
new G4AntiBarionBuilder();
180 auto ftf =
new G4FTFPAntiBarionBuilder(
false);
182 abar->RegisterMe(ftf);
187 if (G4Threading::IsMasterThread()) {
195 const G4ParticleDefinition* neutron = G4Neutron::Neutron();
196 G4HadronicProcess* inel = G4PhysListUtil::FindInelasticProcess(neutron);
198 inel->AddDataSet(
new G4NeutronInelasticXS());
201 G4HadronicProcess*
capture =
nullptr;
202 G4ProcessVector* pvec = neutron->GetProcessManager()->GetProcessList();
203 size_t n = pvec->size();
204 for (
size_t i = 0;
i <
n; ++
i) {
205 if (fCapture == ((*pvec)[
i])->GetProcessSubType()) {
206 capture = static_cast<G4HadronicProcess*>((*pvec)[
i]);
211 capture->RegisterMe(
new G4NeutronRadCapture());
212 capture->AddDataSet(
new G4NeutronCaptureXS());