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
HyperonPhysics.cc
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file HyperonPhysics.cc
1
// $Id: $
3
// //
4
// File: HyperonPhysics.cc //
5
// Description: Hyperon hadronic physics constructor for EICPhysicsList //
6
// //
7
// Author: Dennis H. Wright (SLAC) //
8
// Date: 5 July 2018 //
9
// //
11
12
13
#include "
HyperonPhysics.hh
"
14
15
#include <Geant4/G4ProcessManager.hh>
16
#include <Geant4/G4LambdaInelasticProcess.hh>
17
#include <Geant4/G4SigmaPlusInelasticProcess.hh>
18
#include <Geant4/G4SigmaMinusInelasticProcess.hh>
19
#include <Geant4/G4XiZeroInelasticProcess.hh>
20
#include <Geant4/G4XiMinusInelasticProcess.hh>
21
#include <Geant4/G4OmegaMinusInelasticProcess.hh>
22
23
#include <Geant4/G4HadronElasticProcess.hh>
24
#include <Geant4/G4HadronicAbsorptionBertini.hh>
25
26
#include <Geant4/G4CascadeInterface.hh>
27
#include <Geant4/G4TheoFSGenerator.hh>
28
#include <Geant4/G4FTFModel.hh>
29
#include <Geant4/G4ExcitedStringDecay.hh>
30
#include <Geant4/G4LundStringFragmentation.hh>
31
#include <Geant4/G4GeneratorPrecompoundInterface.hh>
32
#include <Geant4/G4HadronElastic.hh>
33
34
#include <Geant4/G4ChipsHyperonInelasticXS.hh>
35
#include <Geant4/G4SystemOfUnits.hh>
36
37
38
HyperonPhysics::HyperonPhysics
():
39
ftfp(nullptr),
40
stringModel(nullptr),
41
stringDecay(nullptr),
42
fragModel(nullptr),
43
preCompoundModel(nullptr)
44
{}
45
46
47
HyperonPhysics::~HyperonPhysics
()
48
{
49
delete
stringDecay
;
50
delete
stringModel
;
51
delete
fragModel
;
52
delete
preCompoundModel
;
53
}
54
55
56
void
HyperonPhysics::ConstructParticle
()
57
{}
58
59
60
void
HyperonPhysics::ConstructProcess
()
61
{
62
G4ProcessManager
* procMan = 0;
63
64
// One elastic model for all hyperon energies
65
G4HadronElastic
* elModel =
new
G4HadronElastic
();
66
67
// Use Bertini cascade for low energies
68
G4CascadeInterface
* loInelModel =
new
G4CascadeInterface
;
69
loInelModel->
SetMinEnergy
(0.0);
70
loInelModel->
SetMaxEnergy
(6.0*
GeV
);
71
72
// Use FTFP for high energies ==>> eventually replace this with new class FTFPInterface
73
ftfp
=
new
G4TheoFSGenerator
(
"FTFP"
);
74
stringModel
=
new
G4FTFModel
;
75
stringDecay
=
76
new
G4ExcitedStringDecay
(
fragModel
=
new
G4LundStringFragmentation
);
77
stringModel
->
SetFragmentationModel
(
stringDecay
);
78
preCompoundModel
=
new
G4GeneratorPrecompoundInterface
();
79
80
ftfp
->
SetHighEnergyGenerator
(
stringModel
);
81
ftfp
->
SetTransport
(
preCompoundModel
);
82
ftfp
->
SetMinEnergy
(4*
GeV
);
83
ftfp
->
SetMaxEnergy
(100*
TeV
);
84
85
// Inelastic cross section set
86
G4ChipsHyperonInelasticXS
* chipsInelastic =
new
G4ChipsHyperonInelasticXS
;
87
89
// Lambda //
91
92
procMan =
G4Lambda::Lambda
()->
GetProcessManager
();
93
94
// elastic
95
G4HadronElasticProcess
* lamProcEl =
new
G4HadronElasticProcess
;
96
lamProcEl->
RegisterMe
(elModel);
97
procMan->
AddDiscreteProcess
(lamProcEl);
98
99
// inelastic
100
G4LambdaInelasticProcess
* lamProcInel =
new
G4LambdaInelasticProcess
;
101
lamProcInel->
RegisterMe
(loInelModel);
102
lamProcInel->
RegisterMe
(
ftfp
);
103
lamProcInel->
AddDataSet
(chipsInelastic);
104
procMan->
AddDiscreteProcess
(lamProcInel);
105
107
// Sigma+ //
109
110
procMan =
G4SigmaPlus::SigmaPlus
()->
GetProcessManager
();
111
112
// elastic
113
G4HadronElasticProcess
* spProcEl =
new
G4HadronElasticProcess
;
114
spProcEl->
RegisterMe
(elModel);
115
procMan->
AddDiscreteProcess
(spProcEl);
116
117
// inelastic
118
G4SigmaPlusInelasticProcess
* spProcInel =
new
G4SigmaPlusInelasticProcess
;
119
spProcInel->
RegisterMe
(loInelModel);
120
spProcInel->
RegisterMe
(
ftfp
);
121
spProcInel->
AddDataSet
(chipsInelastic);
122
procMan->
AddDiscreteProcess
(spProcInel);
123
125
// Sigma- //
127
128
procMan =
G4SigmaMinus::SigmaMinus
()->
GetProcessManager
();
129
130
// elastic
131
G4HadronElasticProcess
* smProcEl =
new
G4HadronElasticProcess
;
132
smProcEl->
RegisterMe
(elModel);
133
procMan->
AddDiscreteProcess
(smProcEl);
134
135
// inelastic
136
G4SigmaMinusInelasticProcess
* smProcInel =
new
G4SigmaMinusInelasticProcess
;
137
smProcInel->
RegisterMe
(loInelModel);
138
smProcInel->
RegisterMe
(
ftfp
);
139
smProcInel->
AddDataSet
(chipsInelastic);
140
procMan->
AddDiscreteProcess
(smProcInel);
141
142
// stopping
143
G4HadronicAbsorptionBertini
* smAbsorb =
new
G4HadronicAbsorptionBertini
;
144
procMan->
AddRestProcess
(smAbsorb);
145
147
// Xi0 //
149
150
procMan =
G4XiZero::XiZero
()->
GetProcessManager
();
151
152
// elastic
153
G4HadronElasticProcess
* xzProcEl =
new
G4HadronElasticProcess
;
154
xzProcEl->
RegisterMe
(elModel);
155
procMan->
AddDiscreteProcess
(xzProcEl);
156
157
// inelastic
158
G4XiZeroInelasticProcess
* xzProcInel =
new
G4XiZeroInelasticProcess
;
159
xzProcInel->
RegisterMe
(loInelModel);
160
xzProcInel->
RegisterMe
(
ftfp
);
161
xzProcInel->
AddDataSet
(chipsInelastic);
162
procMan->
AddDiscreteProcess
(xzProcInel);
163
165
// Xi- //
167
168
procMan =
G4XiMinus::XiMinus
()->
GetProcessManager
();
169
170
// elastic
171
G4HadronElasticProcess
* xmProcEl =
new
G4HadronElasticProcess
;
172
xmProcEl->
RegisterMe
(elModel);
173
procMan->
AddDiscreteProcess
(xmProcEl);
174
175
// inelastic
176
G4XiMinusInelasticProcess
* xmProcInel =
new
G4XiMinusInelasticProcess
;
177
xmProcInel->
RegisterMe
(loInelModel);
178
xmProcInel->
RegisterMe
(
ftfp
);
179
xmProcInel->
AddDataSet
(chipsInelastic);
180
procMan->
AddDiscreteProcess
(xmProcInel);
181
182
// stopping
183
G4HadronicAbsorptionBertini
* xmAbsorb =
new
G4HadronicAbsorptionBertini
;
184
procMan->
AddRestProcess
(xmAbsorb);
185
187
// Omega- //
189
190
procMan =
G4OmegaMinus::OmegaMinus
()->
GetProcessManager
();
191
192
// elastic
193
G4HadronElasticProcess
* omProcEl =
new
G4HadronElasticProcess
;
194
omProcEl->
RegisterMe
(elModel);
195
procMan->
AddDiscreteProcess
(omProcEl);
196
197
// inelastic
198
G4OmegaMinusInelasticProcess
* omProcInel =
new
G4OmegaMinusInelasticProcess
;
199
omProcInel->
RegisterMe
(loInelModel);
200
omProcInel->
RegisterMe
(
ftfp
);
201
omProcInel->
AddDataSet
(chipsInelastic);
202
procMan->
AddDiscreteProcess
(omProcInel);
203
204
// stopping
205
G4HadronicAbsorptionBertini
* omAbsorb =
new
G4HadronicAbsorptionBertini
;
206
procMan->
AddRestProcess
(omAbsorb);
207
}
coresoftware
blob
master
simulation
g4simulation
EICPhysicsList
HyperonPhysics.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:24:40
using
1.8.2 with
ECCE GitHub integration