15 #include <Geant4/G4ProcessManager.hh>
16 #include <Geant4/G4AntiProtonInelasticProcess.hh>
17 #include <Geant4/G4AntiNeutronInelasticProcess.hh>
18 #include <Geant4/G4AntiLambdaInelasticProcess.hh>
19 #include <Geant4/G4AntiSigmaPlusInelasticProcess.hh>
20 #include <Geant4/G4AntiSigmaMinusInelasticProcess.hh>
21 #include <Geant4/G4AntiXiZeroInelasticProcess.hh>
22 #include <Geant4/G4AntiXiMinusInelasticProcess.hh>
23 #include <Geant4/G4AntiOmegaMinusInelasticProcess.hh>
25 #include <Geant4/G4AntiDeuteronInelasticProcess.hh>
26 #include <Geant4/G4AntiTritonInelasticProcess.hh>
27 #include <Geant4/G4AntiHe3InelasticProcess.hh>
28 #include <Geant4/G4AntiAlphaInelasticProcess.hh>
29 #include <Geant4/G4HadronElasticProcess.hh>
31 #include <Geant4/G4TheoFSGenerator.hh>
32 #include <Geant4/G4FTFModel.hh>
33 #include <Geant4/G4ExcitedStringDecay.hh>
34 #include <Geant4/G4LundStringFragmentation.hh>
35 #include <Geant4/G4GeneratorPrecompoundInterface.hh>
36 #include <Geant4/G4HadronElastic.hh>
37 #include <Geant4/G4AntiNuclElastic.hh>
38 #include <Geant4/G4HadronicAbsorptionFritiof.hh>
40 #include <Geant4/G4ChipsHyperonInelasticXS.hh>
41 #include <Geant4/G4ComponentAntiNuclNuclearXS.hh>
42 #include <Geant4/G4CrossSectionInelastic.hh>
43 #include <Geant4/G4CrossSectionElastic.hh>
45 #include <Geant4/G4SystemOfUnits.hh>
53 preCompoundModel(nullptr),
54 theAntiNucleonXS(nullptr)
75 G4ProcessManager* procMan = 0;
78 G4HadronElastic* elModel =
new G4HadronElastic();
81 G4HadronElastic* loelModel =
new G4HadronElastic();
82 loelModel->SetMaxEnergy(100.1*
MeV);
84 G4AntiNuclElastic* anucEl =
new G4AntiNuclElastic();
85 anucEl->SetMinEnergy(100.0*
MeV);
88 ftfp =
new G4TheoFSGenerator(
"FTFP");
91 new G4ExcitedStringDecay(
fragModel =
new G4LundStringFragmentation);
97 ftfp->SetMinEnergy(0.0);
101 G4CrossSectionElastic* anucElxs =
102 new G4CrossSectionElastic(anucEl->GetComponentCrossSection() );
106 G4VCrossSectionDataSet* antiNucleonData =
107 new G4CrossSectionInelastic(theAntiNucleonXS);
109 G4ChipsHyperonInelasticXS* hchipsInelastic =
new G4ChipsHyperonInelasticXS;
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(
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 procMan->AddDiscreteProcess(anProcEl);
146 G4AntiNeutronInelasticProcess* anProcInel =
new G4AntiNeutronInelasticProcess;
147 anProcInel->RegisterMe(
ftfp);
148 anProcInel->AddDataSet(antiNucleonData);
149 procMan->AddDiscreteProcess(anProcInel);
155 procMan = G4AntiDeuteron::AntiDeuteron()->GetProcessManager();
158 G4HadronElasticProcess* adProcEl =
new G4HadronElasticProcess;
159 adProcEl->RegisterMe(loelModel);
160 adProcEl->RegisterMe(anucEl);
161 adProcEl->AddDataSet(anucElxs);
162 procMan->AddDiscreteProcess(adProcEl);
165 G4AntiDeuteronInelasticProcess* adProcInel =
new G4AntiDeuteronInelasticProcess;
166 adProcInel->RegisterMe(
ftfp);
167 adProcInel->AddDataSet(antiNucleonData);
168 procMan->AddDiscreteProcess(adProcInel);
171 G4HadronicAbsorptionFritiof* adAbsorb =
new G4HadronicAbsorptionFritiof();
172 procMan->AddRestProcess(adAbsorb);
178 procMan = G4AntiTriton::AntiTriton()->GetProcessManager();
181 G4HadronElasticProcess* atProcEl =
new G4HadronElasticProcess;
182 atProcEl->RegisterMe(loelModel);
183 atProcEl->RegisterMe(anucEl);
184 atProcEl->AddDataSet(anucElxs);
185 procMan->AddDiscreteProcess(atProcEl);
188 G4AntiTritonInelasticProcess* atProcInel =
new G4AntiTritonInelasticProcess;
189 atProcInel->RegisterMe(
ftfp);
190 atProcInel->AddDataSet(antiNucleonData);
191 procMan->AddDiscreteProcess(atProcInel);
194 G4HadronicAbsorptionFritiof* atAbsorb =
new G4HadronicAbsorptionFritiof();
195 procMan->AddRestProcess(atAbsorb);
201 procMan = G4AntiHe3::AntiHe3()->GetProcessManager();
204 G4HadronElasticProcess* ahe3ProcEl =
new G4HadronElasticProcess;
205 ahe3ProcEl->RegisterMe(loelModel);
206 ahe3ProcEl->RegisterMe(anucEl);
207 ahe3ProcEl->AddDataSet(anucElxs);
208 procMan->AddDiscreteProcess(ahe3ProcEl);
211 G4AntiHe3InelasticProcess* ahe3ProcInel =
new G4AntiHe3InelasticProcess;
212 ahe3ProcInel->RegisterMe(
ftfp);
213 ahe3ProcInel->AddDataSet(antiNucleonData);
214 procMan->AddDiscreteProcess(ahe3ProcInel);
217 G4HadronicAbsorptionFritiof* ahe3Absorb =
new G4HadronicAbsorptionFritiof();
218 procMan->AddRestProcess(ahe3Absorb);
224 procMan = G4AntiAlpha::AntiAlpha()->GetProcessManager();
227 G4HadronElasticProcess* aaProcEl =
new G4HadronElasticProcess;
228 aaProcEl->RegisterMe(loelModel);
229 aaProcEl->RegisterMe(anucEl);
230 aaProcEl->AddDataSet(anucElxs);
231 procMan->AddDiscreteProcess(aaProcEl);
234 G4AntiAlphaInelasticProcess* aaProcInel =
new G4AntiAlphaInelasticProcess;
235 aaProcInel->RegisterMe(
ftfp);
236 aaProcInel->AddDataSet(antiNucleonData);
237 procMan->AddDiscreteProcess(aaProcInel);
240 G4HadronicAbsorptionFritiof* aaAbsorb =
new G4HadronicAbsorptionFritiof();
241 procMan->AddRestProcess(aaAbsorb);
247 procMan = G4AntiLambda::AntiLambda()->GetProcessManager();
250 G4HadronElasticProcess* alamProcEl =
new G4HadronElasticProcess;
251 alamProcEl->RegisterMe(elModel);
252 procMan->AddDiscreteProcess(alamProcEl);
255 G4AntiLambdaInelasticProcess* alamProcInel =
new G4AntiLambdaInelasticProcess;
256 alamProcInel->RegisterMe(
ftfp);
257 alamProcInel->AddDataSet(hchipsInelastic);
258 procMan->AddDiscreteProcess(alamProcInel);
264 procMan = G4AntiSigmaPlus::AntiSigmaPlus()->GetProcessManager();
267 G4HadronElasticProcess* aspProcEl =
new G4HadronElasticProcess;
268 aspProcEl->RegisterMe(elModel);
269 procMan->AddDiscreteProcess(aspProcEl);
272 G4AntiSigmaPlusInelasticProcess* aspProcInel =
new G4AntiSigmaPlusInelasticProcess;
273 aspProcInel->RegisterMe(
ftfp);
274 aspProcInel->AddDataSet(hchipsInelastic);
275 procMan->AddDiscreteProcess(aspProcInel);
278 G4HadronicAbsorptionFritiof* aspAbsorb =
new G4HadronicAbsorptionFritiof();
279 procMan->AddRestProcess(aspAbsorb);
285 procMan = G4AntiSigmaMinus::AntiSigmaMinus()->GetProcessManager();
288 G4HadronElasticProcess* asmProcEl =
new G4HadronElasticProcess;
289 asmProcEl->RegisterMe(elModel);
290 procMan->AddDiscreteProcess(asmProcEl);
293 G4AntiSigmaMinusInelasticProcess* asmProcInel =
new G4AntiSigmaMinusInelasticProcess;
294 asmProcInel->RegisterMe(
ftfp);
295 asmProcInel->AddDataSet(hchipsInelastic);
296 procMan->AddDiscreteProcess(asmProcInel);
302 procMan = G4AntiXiZero::AntiXiZero()->GetProcessManager();
305 G4HadronElasticProcess* axzProcEl =
new G4HadronElasticProcess;
306 axzProcEl->RegisterMe(elModel);
307 procMan->AddDiscreteProcess(axzProcEl);
310 G4AntiXiZeroInelasticProcess* axzProcInel =
new G4AntiXiZeroInelasticProcess;
311 axzProcInel->RegisterMe(
ftfp);
312 axzProcInel->AddDataSet(hchipsInelastic);
313 procMan->AddDiscreteProcess(axzProcInel);
319 procMan = G4AntiXiMinus::AntiXiMinus()->GetProcessManager();
322 G4HadronElasticProcess* axmProcEl =
new G4HadronElasticProcess;
323 axmProcEl->RegisterMe(elModel);
324 procMan->AddDiscreteProcess(axmProcEl);
327 G4AntiXiMinusInelasticProcess* axmProcInel =
new G4AntiXiMinusInelasticProcess;
328 axmProcInel->RegisterMe(
ftfp);
329 axmProcInel->AddDataSet(hchipsInelastic);
330 procMan->AddDiscreteProcess(axmProcInel);
336 procMan = G4AntiOmegaMinus::AntiOmegaMinus()->GetProcessManager();
339 G4HadronElasticProcess* aomProcEl =
new G4HadronElasticProcess;
340 aomProcEl->RegisterMe(elModel);
341 procMan->AddDiscreteProcess(aomProcEl);
344 G4AntiOmegaMinusInelasticProcess* aomProcInel =
new G4AntiOmegaMinusInelasticProcess;
345 aomProcInel->RegisterMe(
ftfp);
346 aomProcInel->AddDataSet(hchipsInelastic);
347 procMan->AddDiscreteProcess(aomProcInel);