ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
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
48
AntiBaryonPhysics::AntiBaryonPhysics
():
49
ftfp(nullptr),
50
stringModel(nullptr),
51
stringDecay(nullptr),
52
fragModel(nullptr),
53
preCompoundModel(nullptr),
54
theAntiNucleonXS(nullptr)
55
{}
56
57
58
AntiBaryonPhysics::~AntiBaryonPhysics
()
59
{
60
delete
stringDecay
;
61
delete
stringModel
;
62
delete
fragModel
;
63
delete
preCompoundModel
;
64
65
delete
theAntiNucleonXS
;
66
}
67
68
69
void
AntiBaryonPhysics::ConstructParticle
()
70
{}
71
72
73
void
AntiBaryonPhysics::ConstructProcess
()
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
=
91
new
G4ExcitedStringDecay
(
fragModel
=
new
G4LundStringFragmentation
);
92
stringModel
->
SetFragmentationModel
(
stringDecay
);
93
preCompoundModel
=
new
G4GeneratorPrecompoundInterface
();
94
95
ftfp
->
SetHighEnergyGenerator
(
stringModel
);
96
ftfp
->
SetTransport
(
preCompoundModel
);
97
ftfp
->
SetMinEnergy
(0.0);
98
ftfp
->
SetMaxEnergy
(100*
TeV
);
99
100
// Elastic data set
101
G4CrossSectionElastic
* anucElxs =
102
new
G4CrossSectionElastic
(anucEl->
GetComponentCrossSection
() );
103
104
// Inelastic cross section sets
105
theAntiNucleonXS
=
new
G4ComponentAntiNuclNuclearXS
;
106
G4VCrossSectionDataSet
* antiNucleonData =
107
new
G4CrossSectionInelastic
(theAntiNucleonXS);
108
109
G4ChipsHyperonInelasticXS
* hchipsInelastic =
new
G4ChipsHyperonInelasticXS
;
110
112
// Anti-proton //
114
115
procMan =
G4AntiProton::AntiProton
()->
GetProcessManager
();
116
117
// elastic
118
G4HadronElasticProcess
* apProcEl =
new
G4HadronElasticProcess
;
119
apProcEl->
RegisterMe
(loelModel);
120
apProcEl->
RegisterMe
(anucEl);
121
apProcEl->
AddDataSet
(anucElxs);
122
procMan->
AddDiscreteProcess
(apProcEl);
123
124
// inelastic
125
G4AntiProtonInelasticProcess
* apProcInel =
new
G4AntiProtonInelasticProcess
;
126
apProcInel->
RegisterMe
(
ftfp
);
127
apProcInel->
AddDataSet
(antiNucleonData);
128
procMan->
AddDiscreteProcess
(apProcInel);
129
130
// stopping
131
G4HadronicAbsorptionFritiof
* apAbsorb =
new
G4HadronicAbsorptionFritiof
();
132
procMan->
AddRestProcess
(apAbsorb);
133
135
// Anti-neutron //
137
138
procMan =
G4AntiNeutron::AntiNeutron
()->
GetProcessManager
();
139
140
// elastic
141
G4HadronElasticProcess
* anProcEl =
new
G4HadronElasticProcess
;
142
anProcEl->
RegisterMe
(elModel);
143
procMan->
AddDiscreteProcess
(anProcEl);
144
145
// inelastic
146
G4AntiNeutronInelasticProcess
* anProcInel =
new
G4AntiNeutronInelasticProcess
;
147
anProcInel->
RegisterMe
(
ftfp
);
148
anProcInel->
AddDataSet
(antiNucleonData);
149
procMan->
AddDiscreteProcess
(anProcInel);
150
152
// Anti-deuteron //
154
155
procMan =
G4AntiDeuteron::AntiDeuteron
()->
GetProcessManager
();
156
157
// elastic
158
G4HadronElasticProcess
* adProcEl =
new
G4HadronElasticProcess
;
159
adProcEl->
RegisterMe
(loelModel);
160
adProcEl->
RegisterMe
(anucEl);
161
adProcEl->
AddDataSet
(anucElxs);
162
procMan->
AddDiscreteProcess
(adProcEl);
163
164
// inelastic
165
G4AntiDeuteronInelasticProcess
* adProcInel =
new
G4AntiDeuteronInelasticProcess
;
166
adProcInel->
RegisterMe
(
ftfp
);
167
adProcInel->
AddDataSet
(antiNucleonData);
168
procMan->
AddDiscreteProcess
(adProcInel);
169
170
// stopping
171
G4HadronicAbsorptionFritiof
* adAbsorb =
new
G4HadronicAbsorptionFritiof
();
172
procMan->
AddRestProcess
(adAbsorb);
173
175
// Anti-triton //
177
178
procMan =
G4AntiTriton::AntiTriton
()->
GetProcessManager
();
179
180
// elastic
181
G4HadronElasticProcess
* atProcEl =
new
G4HadronElasticProcess
;
182
atProcEl->
RegisterMe
(loelModel);
183
atProcEl->
RegisterMe
(anucEl);
184
atProcEl->
AddDataSet
(anucElxs);
185
procMan->
AddDiscreteProcess
(atProcEl);
186
187
// inelastic
188
G4AntiTritonInelasticProcess
* atProcInel =
new
G4AntiTritonInelasticProcess
;
189
atProcInel->
RegisterMe
(
ftfp
);
190
atProcInel->
AddDataSet
(antiNucleonData);
191
procMan->
AddDiscreteProcess
(atProcInel);
192
193
// stopping
194
G4HadronicAbsorptionFritiof
* atAbsorb =
new
G4HadronicAbsorptionFritiof
();
195
procMan->
AddRestProcess
(atAbsorb);
196
198
// Anti-He3 //
200
201
procMan =
G4AntiHe3::AntiHe3
()->
GetProcessManager
();
202
203
// elastic
204
G4HadronElasticProcess
* ahe3ProcEl =
new
G4HadronElasticProcess
;
205
ahe3ProcEl->
RegisterMe
(loelModel);
206
ahe3ProcEl->
RegisterMe
(anucEl);
207
ahe3ProcEl->
AddDataSet
(anucElxs);
208
procMan->
AddDiscreteProcess
(ahe3ProcEl);
209
210
// inelastic
211
G4AntiHe3InelasticProcess
* ahe3ProcInel =
new
G4AntiHe3InelasticProcess
;
212
ahe3ProcInel->
RegisterMe
(
ftfp
);
213
ahe3ProcInel->
AddDataSet
(antiNucleonData);
214
procMan->
AddDiscreteProcess
(ahe3ProcInel);
215
216
// stopping
217
G4HadronicAbsorptionFritiof
* ahe3Absorb =
new
G4HadronicAbsorptionFritiof
();
218
procMan->
AddRestProcess
(ahe3Absorb);
219
221
// Anti-alpha //
223
224
procMan =
G4AntiAlpha::AntiAlpha
()->
GetProcessManager
();
225
226
// elastic
227
G4HadronElasticProcess
* aaProcEl =
new
G4HadronElasticProcess
;
228
aaProcEl->
RegisterMe
(loelModel);
229
aaProcEl->
RegisterMe
(anucEl);
230
aaProcEl->
AddDataSet
(anucElxs);
231
procMan->
AddDiscreteProcess
(aaProcEl);
232
233
// inelastic
234
G4AntiAlphaInelasticProcess
* aaProcInel =
new
G4AntiAlphaInelasticProcess
;
235
aaProcInel->
RegisterMe
(
ftfp
);
236
aaProcInel->
AddDataSet
(antiNucleonData);
237
procMan->
AddDiscreteProcess
(aaProcInel);
238
239
// stopping
240
G4HadronicAbsorptionFritiof
* aaAbsorb =
new
G4HadronicAbsorptionFritiof
();
241
procMan->
AddRestProcess
(aaAbsorb);
242
244
// Anti-lambda //
246
247
procMan =
G4AntiLambda::AntiLambda
()->
GetProcessManager
();
248
249
// elastic
250
G4HadronElasticProcess
* alamProcEl =
new
G4HadronElasticProcess
;
251
alamProcEl->
RegisterMe
(elModel);
252
procMan->
AddDiscreteProcess
(alamProcEl);
253
254
// inelastic
255
G4AntiLambdaInelasticProcess
* alamProcInel =
new
G4AntiLambdaInelasticProcess
;
256
alamProcInel->
RegisterMe
(
ftfp
);
257
alamProcInel->
AddDataSet
(hchipsInelastic);
258
procMan->
AddDiscreteProcess
(alamProcInel);
259
261
// Anti-sigma+ //
263
264
procMan =
G4AntiSigmaPlus::AntiSigmaPlus
()->
GetProcessManager
();
265
266
// elastic
267
G4HadronElasticProcess
* aspProcEl =
new
G4HadronElasticProcess
;
268
aspProcEl->
RegisterMe
(elModel);
269
procMan->
AddDiscreteProcess
(aspProcEl);
270
271
// inelastic
272
G4AntiSigmaPlusInelasticProcess
* aspProcInel =
new
G4AntiSigmaPlusInelasticProcess
;
273
aspProcInel->
RegisterMe
(
ftfp
);
274
aspProcInel->
AddDataSet
(hchipsInelastic);
275
procMan->
AddDiscreteProcess
(aspProcInel);
276
277
// stopping
278
G4HadronicAbsorptionFritiof
* aspAbsorb =
new
G4HadronicAbsorptionFritiof
();
279
procMan->
AddRestProcess
(aspAbsorb);
280
282
// Anti-sigma- //
284
285
procMan =
G4AntiSigmaMinus::AntiSigmaMinus
()->
GetProcessManager
();
286
287
// elastic
288
G4HadronElasticProcess
* asmProcEl =
new
G4HadronElasticProcess
;
289
asmProcEl->
RegisterMe
(elModel);
290
procMan->
AddDiscreteProcess
(asmProcEl);
291
292
// inelastic
293
G4AntiSigmaMinusInelasticProcess
* asmProcInel =
new
G4AntiSigmaMinusInelasticProcess
;
294
asmProcInel->
RegisterMe
(
ftfp
);
295
asmProcInel->
AddDataSet
(hchipsInelastic);
296
procMan->
AddDiscreteProcess
(asmProcInel);
297
299
// Anti-xi0 //
301
302
procMan =
G4AntiXiZero::AntiXiZero
()->
GetProcessManager
();
303
304
// elastic
305
G4HadronElasticProcess
* axzProcEl =
new
G4HadronElasticProcess
;
306
axzProcEl->
RegisterMe
(elModel);
307
procMan->
AddDiscreteProcess
(axzProcEl);
308
309
// inelastic
310
G4AntiXiZeroInelasticProcess
* axzProcInel =
new
G4AntiXiZeroInelasticProcess
;
311
axzProcInel->
RegisterMe
(
ftfp
);
312
axzProcInel->
AddDataSet
(hchipsInelastic);
313
procMan->
AddDiscreteProcess
(axzProcInel);
314
316
// Anti-xi- //
318
319
procMan =
G4AntiXiMinus::AntiXiMinus
()->
GetProcessManager
();
320
321
// elastic
322
G4HadronElasticProcess
* axmProcEl =
new
G4HadronElasticProcess
;
323
axmProcEl->
RegisterMe
(elModel);
324
procMan->
AddDiscreteProcess
(axmProcEl);
325
326
// inelastic
327
G4AntiXiMinusInelasticProcess
* axmProcInel =
new
G4AntiXiMinusInelasticProcess
;
328
axmProcInel->
RegisterMe
(
ftfp
);
329
axmProcInel->
AddDataSet
(hchipsInelastic);
330
procMan->
AddDiscreteProcess
(axmProcInel);
331
333
// Anti-omega- //
335
336
procMan =
G4AntiOmegaMinus::AntiOmegaMinus
()->
GetProcessManager
();
337
338
// elastic
339
G4HadronElasticProcess
* aomProcEl =
new
G4HadronElasticProcess
;
340
aomProcEl->
RegisterMe
(elModel);
341
procMan->
AddDiscreteProcess
(aomProcEl);
342
343
// inelastic
344
G4AntiOmegaMinusInelasticProcess
* aomProcInel =
new
G4AntiOmegaMinusInelasticProcess
;
345
aomProcInel->
RegisterMe
(
ftfp
);
346
aomProcInel->
AddDataSet
(hchipsInelastic);
347
procMan->
AddDiscreteProcess
(aomProcInel);
348
349
}
350
coresoftware
blob
master
simulation
g4simulation
EICPhysicsList
AntiBaryonPhysics.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:24:40
using
1.8.2 with
ECCE GitHub integration