11 #include <simulation/physicslist/HyperonPhysics.h>
13 #include "G4ProcessManager.hh"
14 #include "G4LambdaInelasticProcess.hh"
15 #include "G4SigmaPlusInelasticProcess.hh"
16 #include "G4SigmaMinusInelasticProcess.hh"
17 #include "G4XiZeroInelasticProcess.hh"
18 #include "G4XiMinusInelasticProcess.hh"
19 #include "G4OmegaMinusInelasticProcess.hh"
21 #include "G4HadronElasticProcess.hh"
22 #include "G4HadronicAbsorptionBertini.hh"
24 #include "G4CascadeInterface.hh"
25 #include "G4TheoFSGenerator.hh"
26 #include "G4FTFModel.hh"
27 #include "G4ExcitedStringDecay.hh"
28 #include "G4LundStringFragmentation.hh"
29 #include "G4GeneratorPrecompoundInterface.hh"
30 #include "G4HadronElastic.hh"
32 #include "G4ChipsHyperonElasticXS.hh"
33 #include "G4ChipsHyperonInelasticXS.hh"
34 #include "G4SystemOfUnits.hh"
37 using namespace Simulation;
40 HyperonPhysics::HyperonPhysics()
41 : m_ftfp(nullptr), m_stringModel(nullptr), m_stringDecay(nullptr),
42 m_fragModel(nullptr), m_preCompoundModel(nullptr)
46 HyperonPhysics::~HyperonPhysics()
61 G4ProcessManager* procMan = 0;
64 G4HadronElastic* elModel =
new G4HadronElastic();
67 G4CascadeInterface* loInelModel =
new G4CascadeInterface;
68 loInelModel->SetMinEnergy(0.0);
69 loInelModel->SetMaxEnergy(6.0 * GeV);
72 m_ftfp =
new G4TheoFSGenerator(
"FTFP");
75 new G4ExcitedStringDecay(
m_fragModel =
new G4LundStringFragmentation);
81 m_ftfp->SetMinEnergy(4 * GeV);
82 m_ftfp->SetMaxEnergy(100 * TeV);
85 G4ChipsHyperonElasticXS* chipsElastic =
new G4ChipsHyperonElasticXS;
86 G4ChipsHyperonInelasticXS* chipsInelastic =
new G4ChipsHyperonInelasticXS;
92 procMan = G4Lambda::Lambda()->GetProcessManager();
95 G4HadronElasticProcess* lamProcEl =
new G4HadronElasticProcess;
96 lamProcEl->RegisterMe(elModel);
97 lamProcEl->AddDataSet(chipsElastic);
98 procMan->AddDiscreteProcess(lamProcEl);
101 G4LambdaInelasticProcess* lamProcInel =
new G4LambdaInelasticProcess;
102 lamProcInel->RegisterMe(loInelModel);
103 lamProcInel->RegisterMe(
m_ftfp);
104 lamProcInel->AddDataSet(chipsInelastic);
105 procMan->AddDiscreteProcess(lamProcInel);
111 procMan = G4SigmaPlus::SigmaPlus()->GetProcessManager();
114 G4HadronElasticProcess* spProcEl =
new G4HadronElasticProcess;
115 spProcEl->RegisterMe(elModel);
116 spProcEl->AddDataSet(chipsElastic);
117 procMan->AddDiscreteProcess(spProcEl);
120 G4SigmaPlusInelasticProcess* spProcInel =
new G4SigmaPlusInelasticProcess;
121 spProcInel->RegisterMe(loInelModel);
122 spProcInel->RegisterMe(
m_ftfp);
123 spProcInel->AddDataSet(chipsInelastic);
124 procMan->AddDiscreteProcess(spProcInel);
130 procMan = G4SigmaMinus::SigmaMinus()->GetProcessManager();
133 G4HadronElasticProcess* smProcEl =
new G4HadronElasticProcess;
134 smProcEl->RegisterMe(elModel);
135 smProcEl->AddDataSet(chipsElastic);
136 procMan->AddDiscreteProcess(smProcEl);
139 G4SigmaMinusInelasticProcess* smProcInel =
new G4SigmaMinusInelasticProcess;
140 smProcInel->RegisterMe(loInelModel);
141 smProcInel->RegisterMe(
m_ftfp);
142 smProcInel->AddDataSet(chipsInelastic);
143 procMan->AddDiscreteProcess(smProcInel);
146 G4HadronicAbsorptionBertini* smAbsorb =
new G4HadronicAbsorptionBertini;
147 procMan->AddRestProcess(smAbsorb);
153 procMan = G4XiZero::XiZero()->GetProcessManager();
156 G4HadronElasticProcess* xzProcEl =
new G4HadronElasticProcess;
157 xzProcEl->RegisterMe(elModel);
158 xzProcEl->AddDataSet(chipsElastic);
159 procMan->AddDiscreteProcess(xzProcEl);
162 G4XiZeroInelasticProcess* xzProcInel =
new G4XiZeroInelasticProcess;
163 xzProcInel->RegisterMe(loInelModel);
164 xzProcInel->RegisterMe(
m_ftfp);
165 xzProcInel->AddDataSet(chipsInelastic);
166 procMan->AddDiscreteProcess(xzProcInel);
172 procMan = G4XiMinus::XiMinus()->GetProcessManager();
175 G4HadronElasticProcess* xmProcEl =
new G4HadronElasticProcess;
176 xmProcEl->RegisterMe(elModel);
177 xmProcEl->AddDataSet(chipsElastic);
178 procMan->AddDiscreteProcess(xmProcEl);
181 G4XiMinusInelasticProcess* xmProcInel =
new G4XiMinusInelasticProcess;
182 xmProcInel->RegisterMe(loInelModel);
183 xmProcInel->RegisterMe(
m_ftfp);
184 xmProcInel->AddDataSet(chipsInelastic);
185 procMan->AddDiscreteProcess(xmProcInel);
188 G4HadronicAbsorptionBertini* xmAbsorb =
new G4HadronicAbsorptionBertini;
189 procMan->AddRestProcess(xmAbsorb);
195 procMan = G4OmegaMinus::OmegaMinus()->GetProcessManager();
198 G4HadronElasticProcess* omProcEl =
new G4HadronElasticProcess;
199 omProcEl->RegisterMe(elModel);
200 omProcEl->AddDataSet(chipsElastic);
201 procMan->AddDiscreteProcess(omProcEl);
204 G4OmegaMinusInelasticProcess* omProcInel =
new G4OmegaMinusInelasticProcess;
205 omProcInel->RegisterMe(loInelModel);
206 omProcInel->RegisterMe(
m_ftfp);
207 omProcInel->AddDataSet(chipsInelastic);
208 procMan->AddDiscreteProcess(omProcInel);
211 G4HadronicAbsorptionBertini* omAbsorb =
new G4HadronicAbsorptionBertini;
212 procMan->AddRestProcess(omAbsorb);