16 #include "G4ProcessManager.hh"
18 #include "G4Version.hh"
19 #if G4VERSION_NUMBER < 1100
20 #include "G4AntiProtonInelasticProcess.hh"
21 #include "G4AntiNeutronInelasticProcess.hh"
22 #include "G4AntiLambdaInelasticProcess.hh"
23 #include "G4AntiSigmaPlusInelasticProcess.hh"
24 #include "G4AntiSigmaMinusInelasticProcess.hh"
25 #include "G4AntiXiZeroInelasticProcess.hh"
26 #include "G4AntiXiMinusInelasticProcess.hh"
27 #include "G4AntiOmegaMinusInelasticProcess.hh"
28 #include "G4AntiDeuteronInelasticProcess.hh"
29 #include "G4AntiTritonInelasticProcess.hh"
30 #include "G4AntiHe3InelasticProcess.hh"
31 #include "G4AntiAlphaInelasticProcess.hh"
33 #include "G4HadronInelasticProcess.hh"
36 #include "G4HadronElasticProcess.hh"
38 #include "G4TheoFSGenerator.hh"
39 #include "G4FTFModel.hh"
40 #include "G4ExcitedStringDecay.hh"
41 #include "G4LundStringFragmentation.hh"
42 #include "G4GeneratorPrecompoundInterface.hh"
43 #include "G4HadronElastic.hh"
44 #include "G4AntiNuclElastic.hh"
45 #include "G4HadronicAbsorptionFritiof.hh"
47 #include "G4ChipsAntiBaryonElasticXS.hh"
48 #include "G4ChipsHyperonInelasticXS.hh"
49 #include "G4ComponentAntiNuclNuclearXS.hh"
50 #include "G4ChipsAntiBaryonElasticXS.hh"
51 #include "G4CrossSectionInelastic.hh"
52 #include "G4CrossSectionElastic.hh"
54 #include "G4SystemOfUnits.hh"
56 #if G4VERSION_NUMBER < 1100
71 : G4VPhysicsConstructor(
"eASTAntiBaryon")
84 G4ProcessManager* procMan = 0;
87 G4HadronElastic* elModel =
new G4HadronElastic();
90 G4HadronElastic* loelModel =
new G4HadronElastic();
91 loelModel->SetMaxEnergy(100.1*
MeV);
93 G4AntiNuclElastic* anucEl =
new G4AntiNuclElastic();
94 anucEl->SetMinEnergy(100.0*
MeV);
97 ftfp =
new G4TheoFSGenerator(
"FTFP");
100 new G4ExcitedStringDecay(
fragModel =
new G4LundStringFragmentation);
106 ftfp->SetMinEnergy(0.0);
110 G4CrossSectionElastic* anucElxs =
111 new G4CrossSectionElastic(anucEl->GetComponentCrossSection() );
112 G4VCrossSectionDataSet* abaryElXs =
new G4ChipsAntiBaryonElasticXS;
114 G4VCrossSectionDataSet* anucnucElxs =
115 new G4CrossSectionElastic(
new G4ComponentAntiNuclNuclearXS);
119 G4VCrossSectionDataSet* antiNucleonData =
122 G4ChipsHyperonInelasticXS* hchipsInelastic =
new G4ChipsHyperonInelasticXS;
128 procMan = G4AntiProton::AntiProton()->GetProcessManager();
131 G4HadronElasticProcess* apProcEl =
new G4HadronElasticProcess;
132 apProcEl->RegisterMe(loelModel);
133 apProcEl->RegisterMe(anucEl);
134 apProcEl->AddDataSet(anucElxs);
135 procMan->AddDiscreteProcess(apProcEl);
138 #if G4VERSION_NUMBER < 1100
139 G4AntiProtonInelasticProcess* apProcInel =
new G4AntiProtonInelasticProcess;
141 auto* apProcInel =
new G4HadronInelasticProcess(
"AntiProtonInelasticProcess",
142 G4AntiProton::AntiProton() );
144 apProcInel->RegisterMe(
ftfp);
145 apProcInel->AddDataSet(antiNucleonData);
146 procMan->AddDiscreteProcess(apProcInel);
149 G4HadronicAbsorptionFritiof* apAbsorb =
new G4HadronicAbsorptionFritiof();
150 procMan->AddRestProcess(apAbsorb);
156 procMan = G4AntiNeutron::AntiNeutron()->GetProcessManager();
159 G4HadronElasticProcess* anProcEl =
new G4HadronElasticProcess;
160 anProcEl->RegisterMe(elModel);
161 anProcEl->AddDataSet(anucnucElxs);
162 procMan->AddDiscreteProcess(anProcEl);
165 #if G4VERSION_NUMBER < 1100
166 G4AntiNeutronInelasticProcess* anProcInel =
new G4AntiNeutronInelasticProcess;
168 auto* anProcInel =
new G4HadronInelasticProcess(
"AntiNeutronInelasticProcess",
169 G4AntiNeutron::AntiNeutron() );
171 anProcInel->RegisterMe(
ftfp);
172 anProcInel->AddDataSet(antiNucleonData);
173 procMan->AddDiscreteProcess(anProcInel);
179 procMan = G4AntiDeuteron::AntiDeuteron()->GetProcessManager();
182 G4HadronElasticProcess* adProcEl =
new G4HadronElasticProcess;
183 adProcEl->RegisterMe(loelModel);
184 adProcEl->RegisterMe(anucEl);
185 adProcEl->AddDataSet(anucElxs);
186 procMan->AddDiscreteProcess(adProcEl);
189 #if G4VERSION_NUMBER < 1100
190 G4AntiDeuteronInelasticProcess* adProcInel =
new G4AntiDeuteronInelasticProcess;
192 auto* adProcInel =
new G4HadronInelasticProcess(
"AntiDeuteronInelasticProcess",
193 G4AntiDeuteron::AntiDeuteron() );
195 adProcInel->RegisterMe(
ftfp);
196 adProcInel->AddDataSet(antiNucleonData);
197 procMan->AddDiscreteProcess(adProcInel);
200 G4HadronicAbsorptionFritiof* adAbsorb =
new G4HadronicAbsorptionFritiof();
201 procMan->AddRestProcess(adAbsorb);
207 procMan = G4AntiTriton::AntiTriton()->GetProcessManager();
210 G4HadronElasticProcess* atProcEl =
new G4HadronElasticProcess;
211 atProcEl->RegisterMe(loelModel);
212 atProcEl->RegisterMe(anucEl);
213 atProcEl->AddDataSet(anucElxs);
214 procMan->AddDiscreteProcess(atProcEl);
217 #if G4VERSION_NUMBER < 1100
218 G4AntiTritonInelasticProcess* atProcInel =
new G4AntiTritonInelasticProcess;
220 auto* atProcInel =
new G4HadronInelasticProcess(
"AntiTritonInelasticProcess",
221 G4AntiTriton::AntiTriton() );
223 atProcInel->RegisterMe(
ftfp);
224 atProcInel->AddDataSet(antiNucleonData);
225 procMan->AddDiscreteProcess(atProcInel);
228 G4HadronicAbsorptionFritiof* atAbsorb =
new G4HadronicAbsorptionFritiof();
229 procMan->AddRestProcess(atAbsorb);
235 procMan = G4AntiHe3::AntiHe3()->GetProcessManager();
238 G4HadronElasticProcess* ahe3ProcEl =
new G4HadronElasticProcess;
239 ahe3ProcEl->RegisterMe(loelModel);
240 ahe3ProcEl->RegisterMe(anucEl);
241 ahe3ProcEl->AddDataSet(anucElxs);
242 procMan->AddDiscreteProcess(ahe3ProcEl);
245 #if G4VERSION_NUMBER < 1100
246 G4AntiHe3InelasticProcess* ahe3ProcInel =
new G4AntiHe3InelasticProcess;
248 auto* ahe3ProcInel =
new G4HadronInelasticProcess(
"Anti3HeInelasticProcess",
249 G4AntiHe3::AntiHe3() );
251 ahe3ProcInel->RegisterMe(
ftfp);
252 ahe3ProcInel->AddDataSet(antiNucleonData);
253 procMan->AddDiscreteProcess(ahe3ProcInel);
256 G4HadronicAbsorptionFritiof* ahe3Absorb =
new G4HadronicAbsorptionFritiof();
257 procMan->AddRestProcess(ahe3Absorb);
263 procMan = G4AntiAlpha::AntiAlpha()->GetProcessManager();
266 G4HadronElasticProcess* aaProcEl =
new G4HadronElasticProcess;
267 aaProcEl->RegisterMe(loelModel);
268 aaProcEl->RegisterMe(anucEl);
269 aaProcEl->AddDataSet(anucElxs);
270 procMan->AddDiscreteProcess(aaProcEl);
273 #if G4VERSION_NUMBER < 1100
274 G4AntiAlphaInelasticProcess* aaProcInel =
new G4AntiAlphaInelasticProcess;
276 auto* aaProcInel =
new G4HadronInelasticProcess(
"AntiAlphaInelasticProcess",
277 G4AntiAlpha::AntiAlpha() );
279 aaProcInel->RegisterMe(
ftfp);
280 aaProcInel->AddDataSet(antiNucleonData);
281 procMan->AddDiscreteProcess(aaProcInel);
284 G4HadronicAbsorptionFritiof* aaAbsorb =
new G4HadronicAbsorptionFritiof();
285 procMan->AddRestProcess(aaAbsorb);
291 procMan = G4AntiLambda::AntiLambda()->GetProcessManager();
294 G4HadronElasticProcess* alamProcEl =
new G4HadronElasticProcess;
295 alamProcEl->RegisterMe(elModel);
296 alamProcEl->AddDataSet(abaryElXs);
297 procMan->AddDiscreteProcess(alamProcEl);
300 #if G4VERSION_NUMBER < 1100
301 G4AntiLambdaInelasticProcess* alamProcInel =
new G4AntiLambdaInelasticProcess;
303 auto* alamProcInel =
new G4HadronInelasticProcess(
"AntiLambdaInelasticProcess",
304 G4AntiLambda::AntiLambda() );
306 alamProcInel->RegisterMe(
ftfp);
307 alamProcInel->AddDataSet(hchipsInelastic);
308 procMan->AddDiscreteProcess(alamProcInel);
314 procMan = G4AntiSigmaPlus::AntiSigmaPlus()->GetProcessManager();
317 G4HadronElasticProcess* aspProcEl =
new G4HadronElasticProcess;
318 aspProcEl->RegisterMe(elModel);
319 aspProcEl->AddDataSet(abaryElXs);
320 procMan->AddDiscreteProcess(aspProcEl);
323 #if G4VERSION_NUMBER < 1100
324 G4AntiSigmaPlusInelasticProcess* aspProcInel =
new G4AntiSigmaPlusInelasticProcess;
326 auto* aspProcInel =
new G4HadronInelasticProcess(
"AntiSigmaPInelasticProcess",
327 G4AntiSigmaPlus::AntiSigmaPlus() );
329 aspProcInel->RegisterMe(
ftfp);
330 aspProcInel->AddDataSet(hchipsInelastic);
331 procMan->AddDiscreteProcess(aspProcInel);
334 G4HadronicAbsorptionFritiof* aspAbsorb =
new G4HadronicAbsorptionFritiof();
335 procMan->AddRestProcess(aspAbsorb);
341 procMan = G4AntiSigmaMinus::AntiSigmaMinus()->GetProcessManager();
344 G4HadronElasticProcess* asmProcEl =
new G4HadronElasticProcess;
345 asmProcEl->RegisterMe(elModel);
346 asmProcEl->AddDataSet(abaryElXs);
347 procMan->AddDiscreteProcess(asmProcEl);
350 #if G4VERSION_NUMBER < 1100
351 G4AntiSigmaMinusInelasticProcess* asmProcInel =
new G4AntiSigmaMinusInelasticProcess;
353 auto* asmProcInel =
new G4HadronInelasticProcess(
"AntiSigmaMInelasticProcess",
354 G4AntiSigmaMinus::AntiSigmaMinus() );
356 asmProcInel->RegisterMe(
ftfp);
357 asmProcInel->AddDataSet(hchipsInelastic);
358 procMan->AddDiscreteProcess(asmProcInel);
364 procMan = G4AntiXiZero::AntiXiZero()->GetProcessManager();
367 G4HadronElasticProcess* axzProcEl =
new G4HadronElasticProcess;
368 axzProcEl->RegisterMe(elModel);
369 axzProcEl->AddDataSet(abaryElXs);
370 procMan->AddDiscreteProcess(axzProcEl);
373 #if G4VERSION_NUMBER < 1100
374 G4AntiXiZeroInelasticProcess* axzProcInel =
new G4AntiXiZeroInelasticProcess;
376 auto* axzProcInel =
new G4HadronInelasticProcess(
"AntiXi0InelasticProcess",
377 G4AntiXiZero::AntiXiZero() );
379 axzProcInel->RegisterMe(
ftfp);
380 axzProcInel->AddDataSet(hchipsInelastic);
381 procMan->AddDiscreteProcess(axzProcInel);
387 procMan = G4AntiXiMinus::AntiXiMinus()->GetProcessManager();
390 G4HadronElasticProcess* axmProcEl =
new G4HadronElasticProcess;
391 axmProcEl->RegisterMe(elModel);
392 axmProcEl->AddDataSet(abaryElXs);
393 procMan->AddDiscreteProcess(axmProcEl);
396 #if G4VERSION_NUMBER < 1100
397 G4AntiXiMinusInelasticProcess* axmProcInel =
new G4AntiXiMinusInelasticProcess;
399 auto* axmProcInel =
new G4HadronInelasticProcess(
"AntiXiMInelasticProcess",
400 G4AntiXiMinus::AntiXiMinus() );
402 axmProcInel->RegisterMe(
ftfp);
403 axmProcInel->AddDataSet(hchipsInelastic);
404 procMan->AddDiscreteProcess(axmProcInel);
410 procMan = G4AntiOmegaMinus::AntiOmegaMinus()->GetProcessManager();
413 G4HadronElasticProcess* aomProcEl =
new G4HadronElasticProcess;
414 aomProcEl->RegisterMe(elModel);
415 aomProcEl->AddDataSet(abaryElXs);
416 procMan->AddDiscreteProcess(aomProcEl);
419 #if G4VERSION_NUMBER < 1100
420 G4AntiOmegaMinusInelasticProcess* aomProcInel =
new G4AntiOmegaMinusInelasticProcess;
422 auto* aomProcInel =
new G4HadronInelasticProcess(
"AntiOmegaMInelasticProcess",
423 G4AntiOmegaMinus::AntiOmegaMinus() );
425 aomProcInel->RegisterMe(
ftfp);
426 aomProcInel->AddDataSet(hchipsInelastic);
427 procMan->AddDiscreteProcess(aomProcInel);