11 #include <simulation/physicslist/AntiBaryonPhysics.h>
13 #include "G4ProcessManager.hh"
14 #include "G4AntiProtonInelasticProcess.hh"
15 #include "G4AntiNeutronInelasticProcess.hh"
16 #include "G4AntiLambdaInelasticProcess.hh"
17 #include "G4AntiSigmaPlusInelasticProcess.hh"
18 #include "G4AntiSigmaMinusInelasticProcess.hh"
19 #include "G4AntiXiZeroInelasticProcess.hh"
20 #include "G4AntiXiMinusInelasticProcess.hh"
21 #include "G4AntiOmegaMinusInelasticProcess.hh"
23 #include "G4AntiDeuteronInelasticProcess.hh"
24 #include "G4AntiTritonInelasticProcess.hh"
25 #include "G4AntiHe3InelasticProcess.hh"
26 #include "G4AntiAlphaInelasticProcess.hh"
27 #include "G4HadronElasticProcess.hh"
29 #include "G4TheoFSGenerator.hh"
30 #include "G4FTFModel.hh"
31 #include "G4ExcitedStringDecay.hh"
32 #include "G4LundStringFragmentation.hh"
33 #include "G4GeneratorPrecompoundInterface.hh"
34 #include "G4HadronElastic.hh"
35 #include "G4AntiNuclElastic.hh"
36 #include "G4HadronicAbsorptionFritiof.hh"
38 #include "G4ChipsAntiBaryonElasticXS.hh"
39 #include "G4ChipsAntiBaryonInelasticXS.hh"
40 #include "G4ComponentAntiNuclNuclearXS.hh"
41 #include "G4CrossSectionInelastic.hh"
42 #include "G4CrossSectionElastic.hh"
44 #include "G4SystemOfUnits.hh"
47 using namespace Simulation;
50 AntiBaryonPhysics::AntiBaryonPhysics()
51 : m_ftfp(nullptr), m_stringModel(nullptr), m_stringDecay(nullptr),
52 m_fragModel(nullptr), m_preCompoundModel(nullptr),
53 m_theAntiNucleonXS(nullptr)
57 AntiBaryonPhysics::~AntiBaryonPhysics()
74 G4ProcessManager* procMan = 0;
77 G4HadronElastic* elModel =
new G4HadronElastic();
80 G4HadronElastic* loelModel =
new G4HadronElastic();
81 loelModel->SetMaxEnergy(100.1 * MeV);
83 G4AntiNuclElastic* anucEl =
new G4AntiNuclElastic();
84 anucEl->SetMinEnergy(100.0 * MeV);
87 m_ftfp =
new G4TheoFSGenerator(
"FTFP");
90 new G4ExcitedStringDecay(
m_fragModel =
new G4LundStringFragmentation);
97 m_ftfp->SetMaxEnergy(100 * TeV);
100 G4CrossSectionElastic* anucElxs =
101 new G4CrossSectionElastic(anucEl->GetComponentCrossSection());
105 G4VCrossSectionDataSet* antiNucleonData =
108 G4ChipsAntiBaryonElasticXS* hchipsElastic =
new G4ChipsAntiBaryonElasticXS;
109 G4ChipsAntiBaryonInelasticXS* hchipsInelastic =
new G4ChipsAntiBaryonInelasticXS;
115 procMan = G4AntiProton::AntiProton()->GetProcessManager();
118 G4HadronElasticProcess* apProcEl =
new G4HadronElasticProcess;
119 apProcEl->RegisterMe(loelModel);
120 apProcEl->RegisterMe(anucEl);
121 apProcEl->AddDataSet(anucElxs);
122 procMan->AddDiscreteProcess(apProcEl);
125 G4AntiProtonInelasticProcess* apProcInel =
new G4AntiProtonInelasticProcess;
126 apProcInel->RegisterMe(
m_ftfp);
127 apProcInel->AddDataSet(antiNucleonData);
128 procMan->AddDiscreteProcess(apProcInel);
131 G4HadronicAbsorptionFritiof* apAbsorb =
new G4HadronicAbsorptionFritiof();
132 procMan->AddRestProcess(apAbsorb);
138 procMan = G4AntiNeutron::AntiNeutron()->GetProcessManager();
141 G4HadronElasticProcess* anProcEl =
new G4HadronElasticProcess;
142 anProcEl->RegisterMe(elModel);
143 anProcEl->AddDataSet(hchipsElastic);
144 procMan->AddDiscreteProcess(anProcEl);
147 G4AntiNeutronInelasticProcess* anProcInel =
new G4AntiNeutronInelasticProcess;
148 anProcInel->RegisterMe(
m_ftfp);
149 anProcInel->AddDataSet(antiNucleonData);
150 procMan->AddDiscreteProcess(anProcInel);
156 procMan = G4AntiDeuteron::AntiDeuteron()->GetProcessManager();
159 G4HadronElasticProcess* adProcEl =
new G4HadronElasticProcess;
160 adProcEl->RegisterMe(loelModel);
161 adProcEl->RegisterMe(anucEl);
162 adProcEl->AddDataSet(anucElxs);
163 procMan->AddDiscreteProcess(adProcEl);
166 G4AntiDeuteronInelasticProcess* adProcInel =
new G4AntiDeuteronInelasticProcess;
167 adProcInel->RegisterMe(
m_ftfp);
168 adProcInel->AddDataSet(antiNucleonData);
169 procMan->AddDiscreteProcess(adProcInel);
172 G4HadronicAbsorptionFritiof* adAbsorb =
new G4HadronicAbsorptionFritiof();
173 procMan->AddRestProcess(adAbsorb);
179 procMan = G4AntiTriton::AntiTriton()->GetProcessManager();
182 G4HadronElasticProcess* atProcEl =
new G4HadronElasticProcess;
183 atProcEl->RegisterMe(loelModel);
184 atProcEl->RegisterMe(anucEl);
185 atProcEl->AddDataSet(anucElxs);
186 procMan->AddDiscreteProcess(atProcEl);
189 G4AntiTritonInelasticProcess* atProcInel =
new G4AntiTritonInelasticProcess;
190 atProcInel->RegisterMe(
m_ftfp);
191 atProcInel->AddDataSet(antiNucleonData);
192 procMan->AddDiscreteProcess(atProcInel);
195 G4HadronicAbsorptionFritiof* atAbsorb =
new G4HadronicAbsorptionFritiof();
196 procMan->AddRestProcess(atAbsorb);
202 procMan = G4AntiHe3::AntiHe3()->GetProcessManager();
205 G4HadronElasticProcess* ahe3ProcEl =
new G4HadronElasticProcess;
206 ahe3ProcEl->RegisterMe(loelModel);
207 ahe3ProcEl->RegisterMe(anucEl);
208 ahe3ProcEl->AddDataSet(anucElxs);
209 procMan->AddDiscreteProcess(ahe3ProcEl);
212 G4AntiHe3InelasticProcess* ahe3ProcInel =
new G4AntiHe3InelasticProcess;
213 ahe3ProcInel->RegisterMe(
m_ftfp);
214 ahe3ProcInel->AddDataSet(antiNucleonData);
215 procMan->AddDiscreteProcess(ahe3ProcInel);
218 G4HadronicAbsorptionFritiof* ahe3Absorb =
new G4HadronicAbsorptionFritiof();
219 procMan->AddRestProcess(ahe3Absorb);
225 procMan = G4AntiAlpha::AntiAlpha()->GetProcessManager();
228 G4HadronElasticProcess* aaProcEl =
new G4HadronElasticProcess;
229 aaProcEl->RegisterMe(loelModel);
230 aaProcEl->RegisterMe(anucEl);
231 aaProcEl->AddDataSet(anucElxs);
232 procMan->AddDiscreteProcess(aaProcEl);
235 G4AntiAlphaInelasticProcess* aaProcInel =
new G4AntiAlphaInelasticProcess;
236 aaProcInel->RegisterMe(
m_ftfp);
237 aaProcInel->AddDataSet(antiNucleonData);
238 procMan->AddDiscreteProcess(aaProcInel);
241 G4HadronicAbsorptionFritiof* aaAbsorb =
new G4HadronicAbsorptionFritiof();
242 procMan->AddRestProcess(aaAbsorb);
248 procMan = G4AntiLambda::AntiLambda()->GetProcessManager();
251 G4HadronElasticProcess* alamProcEl =
new G4HadronElasticProcess;
252 alamProcEl->RegisterMe(elModel);
253 alamProcEl->AddDataSet(hchipsElastic);
254 procMan->AddDiscreteProcess(alamProcEl);
257 G4AntiLambdaInelasticProcess* alamProcInel =
new G4AntiLambdaInelasticProcess;
258 alamProcInel->RegisterMe(
m_ftfp);
259 alamProcInel->AddDataSet(hchipsInelastic);
260 procMan->AddDiscreteProcess(alamProcInel);
266 procMan = G4AntiSigmaPlus::AntiSigmaPlus()->GetProcessManager();
269 G4HadronElasticProcess* aspProcEl =
new G4HadronElasticProcess;
270 aspProcEl->RegisterMe(elModel);
271 aspProcEl->AddDataSet(hchipsElastic);
272 procMan->AddDiscreteProcess(aspProcEl);
275 G4AntiSigmaPlusInelasticProcess* aspProcInel =
new G4AntiSigmaPlusInelasticProcess;
276 aspProcInel->RegisterMe(
m_ftfp);
277 aspProcInel->AddDataSet(hchipsInelastic);
278 procMan->AddDiscreteProcess(aspProcInel);
281 G4HadronicAbsorptionFritiof* aspAbsorb =
new G4HadronicAbsorptionFritiof();
282 procMan->AddRestProcess(aspAbsorb);
288 procMan = G4AntiSigmaMinus::AntiSigmaMinus()->GetProcessManager();
291 G4HadronElasticProcess* asmProcEl =
new G4HadronElasticProcess;
292 asmProcEl->RegisterMe(elModel);
293 asmProcEl->AddDataSet(hchipsElastic);
294 procMan->AddDiscreteProcess(asmProcEl);
297 G4AntiSigmaMinusInelasticProcess* asmProcInel =
new G4AntiSigmaMinusInelasticProcess;
298 asmProcInel->RegisterMe(
m_ftfp);
299 asmProcInel->AddDataSet(hchipsInelastic);
300 procMan->AddDiscreteProcess(asmProcInel);
306 procMan = G4AntiXiZero::AntiXiZero()->GetProcessManager();
309 G4HadronElasticProcess* axzProcEl =
new G4HadronElasticProcess;
310 axzProcEl->RegisterMe(elModel);
311 axzProcEl->AddDataSet(hchipsElastic);
312 procMan->AddDiscreteProcess(axzProcEl);
315 G4AntiXiZeroInelasticProcess* axzProcInel =
new G4AntiXiZeroInelasticProcess;
316 axzProcInel->RegisterMe(
m_ftfp);
317 axzProcInel->AddDataSet(hchipsInelastic);
318 procMan->AddDiscreteProcess(axzProcInel);
324 procMan = G4AntiXiMinus::AntiXiMinus()->GetProcessManager();
327 G4HadronElasticProcess* axmProcEl =
new G4HadronElasticProcess;
328 axmProcEl->RegisterMe(elModel);
329 axmProcEl->AddDataSet(hchipsElastic);
330 procMan->AddDiscreteProcess(axmProcEl);
333 G4AntiXiMinusInelasticProcess* axmProcInel =
new G4AntiXiMinusInelasticProcess;
334 axmProcInel->RegisterMe(
m_ftfp);
335 axmProcInel->AddDataSet(hchipsInelastic);
336 procMan->AddDiscreteProcess(axmProcInel);
342 procMan = G4AntiOmegaMinus::AntiOmegaMinus()->GetProcessManager();
345 G4HadronElasticProcess* aomProcEl =
new G4HadronElasticProcess;
346 aomProcEl->RegisterMe(elModel);
347 aomProcEl->AddDataSet(hchipsElastic);
348 procMan->AddDiscreteProcess(aomProcEl);
351 G4AntiOmegaMinusInelasticProcess* aomProcInel =
new G4AntiOmegaMinusInelasticProcess;
352 aomProcInel->RegisterMe(
m_ftfp);
353 aomProcInel->AddDataSet(hchipsInelastic);
354 procMan->AddDiscreteProcess(aomProcInel);