ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AntiBaryonPhysics.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file AntiBaryonPhysics.cc
1 // $Id: $
3 // //
4 // File: AntiBaryonPhysics.cc //
5 // Description: Anti-baryon hadronic physics constructor for EICPhysicsList //
6 // //
7 // Author: Dennis H. Wright (SLAC) //
8 // Date: 5 July 2018 //
9 // //
11 
12 
13 #include "AntiBaryonPhysics.hh"
14 
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>
24 
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>
30 
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>
39 
40 #include <Geant4/G4ChipsHyperonInelasticXS.hh>
41 #include <Geant4/G4ComponentAntiNuclNuclearXS.hh>
42 #include <Geant4/G4CrossSectionInelastic.hh>
43 #include <Geant4/G4CrossSectionElastic.hh>
44 
45 #include <Geant4/G4SystemOfUnits.hh>
46 
47 
49  ftfp(nullptr),
50  stringModel(nullptr),
51  stringDecay(nullptr),
52  fragModel(nullptr),
53  preCompoundModel(nullptr),
54  theAntiNucleonXS(nullptr)
55 {}
56 
57 
59 {
60  delete stringDecay;
61  delete stringModel;
62  delete fragModel;
63  delete preCompoundModel;
64 
65  delete theAntiNucleonXS;
66 }
67 
68 
70 {}
71 
72 
74 {
75  G4ProcessManager* procMan = 0;
76 
77  // One elastic model for all anti-hyperon and anti-neutron energies
78  G4HadronElastic* elModel = new G4HadronElastic();
79 
80  // Elastic models for anti-(p, d, t, He3, alpha)
81  G4HadronElastic* loelModel = new G4HadronElastic();
82  loelModel->SetMaxEnergy(100.1*MeV);
83 
84  G4AntiNuclElastic* anucEl = new G4AntiNuclElastic();
85  anucEl->SetMinEnergy(100.0*MeV);
86 
87  // Use FTFP for all energies ==>> eventually replace this with new class FTFPInterface
88  ftfp = new G4TheoFSGenerator("FTFP");
89  stringModel = new G4FTFModel;
90  stringDecay =
94 
97  ftfp->SetMinEnergy(0.0);
98  ftfp->SetMaxEnergy(100*TeV);
99 
100  // Elastic data set
101  G4CrossSectionElastic* anucElxs =
103 
104  // Inelastic cross section sets
106  G4VCrossSectionDataSet* antiNucleonData =
107  new G4CrossSectionInelastic(theAntiNucleonXS);
108 
110 
112  // Anti-proton //
114 
116 
117  // elastic
119  apProcEl->RegisterMe(loelModel);
120  apProcEl->RegisterMe(anucEl);
121  apProcEl->AddDataSet(anucElxs);
122  procMan->AddDiscreteProcess(apProcEl);
123 
124  // inelastic
126  apProcInel->RegisterMe(ftfp);
127  apProcInel->AddDataSet(antiNucleonData);
128  procMan->AddDiscreteProcess(apProcInel);
129 
130  // stopping
132  procMan->AddRestProcess(apAbsorb);
133 
135  // Anti-neutron //
137 
139 
140  // elastic
142  anProcEl->RegisterMe(elModel);
143  procMan->AddDiscreteProcess(anProcEl);
144 
145  // inelastic
147  anProcInel->RegisterMe(ftfp);
148  anProcInel->AddDataSet(antiNucleonData);
149  procMan->AddDiscreteProcess(anProcInel);
150 
152  // Anti-deuteron //
154 
156 
157  // elastic
159  adProcEl->RegisterMe(loelModel);
160  adProcEl->RegisterMe(anucEl);
161  adProcEl->AddDataSet(anucElxs);
162  procMan->AddDiscreteProcess(adProcEl);
163 
164  // inelastic
166  adProcInel->RegisterMe(ftfp);
167  adProcInel->AddDataSet(antiNucleonData);
168  procMan->AddDiscreteProcess(adProcInel);
169 
170  // stopping
172  procMan->AddRestProcess(adAbsorb);
173 
175  // Anti-triton //
177 
179 
180  // elastic
182  atProcEl->RegisterMe(loelModel);
183  atProcEl->RegisterMe(anucEl);
184  atProcEl->AddDataSet(anucElxs);
185  procMan->AddDiscreteProcess(atProcEl);
186 
187  // inelastic
189  atProcInel->RegisterMe(ftfp);
190  atProcInel->AddDataSet(antiNucleonData);
191  procMan->AddDiscreteProcess(atProcInel);
192 
193  // stopping
195  procMan->AddRestProcess(atAbsorb);
196 
198  // Anti-He3 //
200 
201  procMan = G4AntiHe3::AntiHe3()->GetProcessManager();
202 
203  // elastic
205  ahe3ProcEl->RegisterMe(loelModel);
206  ahe3ProcEl->RegisterMe(anucEl);
207  ahe3ProcEl->AddDataSet(anucElxs);
208  procMan->AddDiscreteProcess(ahe3ProcEl);
209 
210  // inelastic
212  ahe3ProcInel->RegisterMe(ftfp);
213  ahe3ProcInel->AddDataSet(antiNucleonData);
214  procMan->AddDiscreteProcess(ahe3ProcInel);
215 
216  // stopping
218  procMan->AddRestProcess(ahe3Absorb);
219 
221  // Anti-alpha //
223 
225 
226  // elastic
228  aaProcEl->RegisterMe(loelModel);
229  aaProcEl->RegisterMe(anucEl);
230  aaProcEl->AddDataSet(anucElxs);
231  procMan->AddDiscreteProcess(aaProcEl);
232 
233  // inelastic
235  aaProcInel->RegisterMe(ftfp);
236  aaProcInel->AddDataSet(antiNucleonData);
237  procMan->AddDiscreteProcess(aaProcInel);
238 
239  // stopping
241  procMan->AddRestProcess(aaAbsorb);
242 
244  // Anti-lambda //
246 
248 
249  // elastic
251  alamProcEl->RegisterMe(elModel);
252  procMan->AddDiscreteProcess(alamProcEl);
253 
254  // inelastic
256  alamProcInel->RegisterMe(ftfp);
257  alamProcInel->AddDataSet(hchipsInelastic);
258  procMan->AddDiscreteProcess(alamProcInel);
259 
261  // Anti-sigma+ //
263 
265 
266  // elastic
268  aspProcEl->RegisterMe(elModel);
269  procMan->AddDiscreteProcess(aspProcEl);
270 
271  // inelastic
273  aspProcInel->RegisterMe(ftfp);
274  aspProcInel->AddDataSet(hchipsInelastic);
275  procMan->AddDiscreteProcess(aspProcInel);
276 
277  // stopping
279  procMan->AddRestProcess(aspAbsorb);
280 
282  // Anti-sigma- //
284 
286 
287  // elastic
289  asmProcEl->RegisterMe(elModel);
290  procMan->AddDiscreteProcess(asmProcEl);
291 
292  // inelastic
294  asmProcInel->RegisterMe(ftfp);
295  asmProcInel->AddDataSet(hchipsInelastic);
296  procMan->AddDiscreteProcess(asmProcInel);
297 
299  // Anti-xi0 //
301 
303 
304  // elastic
306  axzProcEl->RegisterMe(elModel);
307  procMan->AddDiscreteProcess(axzProcEl);
308 
309  // inelastic
311  axzProcInel->RegisterMe(ftfp);
312  axzProcInel->AddDataSet(hchipsInelastic);
313  procMan->AddDiscreteProcess(axzProcInel);
314 
316  // Anti-xi- //
318 
320 
321  // elastic
323  axmProcEl->RegisterMe(elModel);
324  procMan->AddDiscreteProcess(axmProcEl);
325 
326  // inelastic
328  axmProcInel->RegisterMe(ftfp);
329  axmProcInel->AddDataSet(hchipsInelastic);
330  procMan->AddDiscreteProcess(axmProcInel);
331 
333  // Anti-omega- //
335 
337 
338  // elastic
340  aomProcEl->RegisterMe(elModel);
341  procMan->AddDiscreteProcess(aomProcEl);
342 
343  // inelastic
345  aomProcInel->RegisterMe(ftfp);
346  aomProcInel->AddDataSet(hchipsInelastic);
347  procMan->AddDiscreteProcess(aomProcInel);
348 
349 }
350