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
G4HadronPhysicsQGS_BIC.cc
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4HadronPhysicsQGS_BIC.cc
1
//
2
// ********************************************************************
3
// * License and Disclaimer *
4
// * *
5
// * The Geant4 software is copyright of the Copyright Holders of *
6
// * the Geant4 Collaboration. It is provided under the terms and *
7
// * conditions of the Geant4 Software License, included in the file *
8
// * LICENSE and available at http://cern.ch/geant4/license . These *
9
// * include a list of copyright holders. *
10
// * *
11
// * Neither the authors of this software system, nor their employing *
12
// * institutes,nor the agencies providing financial support for this *
13
// * work make any representation or warranty, express or implied, *
14
// * regarding this software system or assume any liability for its *
15
// * use. Please see the license in the file LICENSE and URL above *
16
// * for the full disclaimer and the limitation of liability. *
17
// * *
18
// * This code implementation is the result of the scientific and *
19
// * technical work of the GEANT4 collaboration. *
20
// * By using, copying, modifying or distributing the software (or *
21
// * any work based on the software) you agree to acknowledge its *
22
// * use in resulting scientific publications, and indicate your *
23
// * acceptance of all terms of the Geant4 Software license. *
24
// ********************************************************************
25
//
26
//
27
//---------------------------------------------------------------------------
28
//
29
// ClassName: G4HadronPhysicsQGS_BIC
30
//
31
// Author: 2007 Gunter Folger
32
// created from G4HadronPhysicsQGSP_BIC by H.P.Wellisch
33
//
34
// Modified:
35
//
36
//----------------------------------------------------------------------------
37
//
38
#include <iomanip>
39
40
#include "
G4HadronPhysicsQGS_BIC.hh
"
41
#include "
G4PionBuilder.hh
"
42
#include "
G4BinaryPionBuilder.hh
"
43
#include "
G4BertiniPionBuilder.hh
"
44
#include "
G4FTFBinaryPionBuilder.hh
"
45
#include "
G4QGSBinaryPionBuilder.hh
"
46
47
#include "
G4KaonBuilder.hh
"
48
#include "
G4BertiniKaonBuilder.hh
"
49
#include "
G4FTFBinaryKaonBuilder.hh
"
50
#include "
G4QGSBinaryKaonBuilder.hh
"
51
52
#include "
G4ProtonBuilder.hh
"
53
#include "
G4FTFBinaryProtonBuilder.hh
"
54
#include "
G4QGSBinaryProtonBuilder.hh
"
55
#include "
G4BinaryProtonBuilder.hh
"
56
57
#include "
G4NeutronBuilder.hh
"
58
#include "
G4FTFBinaryNeutronBuilder.hh
"
59
#include "
G4QGSBinaryNeutronBuilder.hh
"
60
#include "
G4BinaryNeutronBuilder.hh
"
61
62
#include "
G4HyperonFTFPBuilder.hh
"
63
#include "
G4AntiBarionBuilder.hh
"
64
#include "
G4FTFPAntiBarionBuilder.hh
"
65
66
#include "
globals.hh
"
67
#include "
G4ios.hh
"
68
#include "
G4SystemOfUnits.hh
"
69
#include "
G4ParticleDefinition.hh
"
70
#include "
G4ParticleTable.hh
"
71
72
#include "
G4MesonConstructor.hh
"
73
#include "
G4BaryonConstructor.hh
"
74
#include "
G4ShortLivedConstructor.hh
"
75
#include "
G4IonConstructor.hh
"
76
77
#include "
G4HadronCaptureProcess.hh
"
78
#include "
G4NeutronRadCapture.hh
"
79
#include "
G4NeutronInelasticXS.hh
"
80
#include "
G4NeutronCaptureXS.hh
"
81
82
#include "
G4CrossSectionDataSetRegistry.hh
"
83
84
#include "
G4PhysListUtil.hh
"
85
#include "
G4HadronicParameters.hh
"
86
87
#include "
G4PhysicsConstructorFactory.hh
"
88
//
89
G4_DECLARE_PHYSCONSTR_FACTORY
(
G4HadronPhysicsQGS_BIC
);
90
91
G4HadronPhysicsQGS_BIC::G4HadronPhysicsQGS_BIC
(
G4int
)
92
:
G4HadronPhysicsQGS_BIC
(
"hInelastic QGS_BIC"
,
true
) {}
93
94
G4HadronPhysicsQGS_BIC::G4HadronPhysicsQGS_BIC
(
const
G4String
&
name
,
G4bool
/* quasiElastic */
)
95
:
G4VPhysicsConstructor
(name)
96
{
97
QuasiElasticFTF
=
false
;
// Use built-in quasi-elastic (not add-on)
98
QuasiElasticQGS
=
true
;
// For QGS, it must use it.
99
100
maxFTF_neutron
=
maxFTF_proton
=
G4HadronicParameters::Instance
()->
GetMaxEnergyTransitionQGS_FTF
();
101
minFTF_neutron
=
minFTF_proton
=
G4HadronicParameters::Instance
()->
GetMinEnergyTransitionFTF_Cascade
();
102
maxBIC_neutron
=
maxBIC_proton
=
G4HadronicParameters::Instance
()->
GetMaxEnergyTransitionFTF_Cascade
();
103
104
maxFTF_pion
=
G4HadronicParameters::Instance
()->
GetMaxEnergyTransitionQGS_FTF
();
105
maxBERT_pion
=
G4HadronicParameters::Instance
()->
GetMaxEnergyTransitionFTF_Cascade
();
106
minBERT_pion
= 1.0*
GeV
;
107
maxBIC_pion
= 1.5*
GeV
;
108
109
maxFTF_kaon
=
G4HadronicParameters::Instance
()->
GetMaxEnergyTransitionQGS_FTF
();
110
maxBERT_kaon
=
G4HadronicParameters::Instance
()->
GetMaxEnergyTransitionFTF_Cascade
();
111
}
112
113
G4HadronPhysicsQGS_BIC::~G4HadronPhysicsQGS_BIC
()
114
{}
115
116
void
G4HadronPhysicsQGS_BIC::CreateModels
()
117
{
118
Neutron
();
119
Proton
();
120
Pion
();
121
Kaon
();
122
Others
();
123
}
124
125
void
G4HadronPhysicsQGS_BIC::Neutron
()
126
{
127
//General schema:
128
// 1) Create a builder
129
// 2) Call AddBuilder
130
// 3) Configure the builder, possibly with sub-builders
131
// 4) Call builder->Build()
132
auto
neu
=
new
G4NeutronBuilder
;
133
AddBuilder
(
neu
);
134
auto
qgsneu =
new
G4QGSBinaryNeutronBuilder
(
QuasiElasticQGS
);
135
AddBuilder
(qgsneu);
136
neu
->RegisterMe(qgsneu);
137
auto
ftfneu =
new
G4FTFBinaryNeutronBuilder
(
QuasiElasticFTF
);
138
AddBuilder
(ftfneu);
139
ftfneu->SetMinEnergy(
minFTF_neutron
);
140
ftfneu->SetMaxEnergy(
maxFTF_neutron
);
141
neu
->RegisterMe(ftfneu);
142
auto
bicn =
new
G4BinaryNeutronBuilder
;
143
AddBuilder
(bicn);
144
bicn->SetMaxEnergy(
maxBIC_neutron
);
145
neu
->RegisterMe(bicn);
146
neu
->Build();
147
}
148
149
void
G4HadronPhysicsQGS_BIC::Proton
()
150
{
151
auto
pro
=
new
G4ProtonBuilder
;
152
AddBuilder
(
pro
);
153
auto
qgs =
new
G4QGSBinaryProtonBuilder
(
QuasiElasticQGS
);
154
AddBuilder
(qgs);
155
pro
->RegisterMe(qgs);
156
auto
ftf =
new
G4FTFBinaryProtonBuilder
(
QuasiElasticFTF
);
157
AddBuilder
(ftf);
158
ftf->SetMinEnergy(
minFTF_proton
);
159
ftf->SetMaxEnergy(
maxFTF_proton
);
160
pro
->RegisterMe(ftf);
161
auto
bic =
new
G4BinaryProtonBuilder
;
162
AddBuilder
(bic);
163
bic->SetMaxEnergy(
maxBIC_proton
);
164
pro
->RegisterMe(bic);
165
pro
->Build();
166
}
167
168
void
G4HadronPhysicsQGS_BIC::Pion
()
169
{
170
auto
pi
=
new
G4PionBuilder
;
171
AddBuilder
(
pi
);
172
auto
qgs =
new
G4QGSBinaryPionBuilder
(
QuasiElasticQGS
);
173
AddBuilder
(qgs);
174
pi
->RegisterMe(qgs);
175
auto
ftf =
new
G4FTFBinaryPionBuilder
(
QuasiElasticFTF
);
176
AddBuilder
(ftf);
177
ftf->SetMaxEnergy(
maxFTF_pion
);
178
pi
->RegisterMe(ftf);
179
auto
bert =
new
G4BertiniPionBuilder
;
180
AddBuilder
(bert);
181
bert->SetMinEnergy(
minBERT_pion
);
182
bert->SetMaxEnergy(
maxBERT_pion
);
183
pi
->RegisterMe(bert);
184
auto
bic =
new
G4BinaryPionBuilder
;
185
AddBuilder
(bic);
186
bic->SetMaxEnergy(
maxBIC_pion
);
187
pi
->RegisterMe(bic);
188
pi
->Build();
189
}
190
191
void
G4HadronPhysicsQGS_BIC::Kaon
()
192
{
193
auto
k
=
new
G4KaonBuilder
;
194
AddBuilder
(
k
);
195
auto
qgs =
new
G4QGSBinaryKaonBuilder
(
QuasiElasticQGS
);
196
AddBuilder
(qgs);
197
k
->RegisterMe(qgs);
198
auto
ftf =
new
G4FTFBinaryKaonBuilder
(
QuasiElasticFTF
);
199
AddBuilder
(ftf);
200
ftf->SetMaxEnergy(
maxFTF_kaon
);
201
k
->RegisterMe(ftf);
202
auto
bert =
new
G4BertiniKaonBuilder
;
203
AddBuilder
(bert);
204
bert->SetMaxEnergy(
maxBERT_kaon
);
205
k
->RegisterMe(bert);
206
k
->Build();
207
}
208
209
void
G4HadronPhysicsQGS_BIC::Others
()
210
{
211
auto
hyp =
new
G4HyperonFTFPBuilder
;
212
AddBuilder
(hyp);
213
hyp->Build();
214
auto
abar =
new
G4AntiBarionBuilder
;
215
AddBuilder
(abar);
216
auto
ftf =
new
G4FTFPAntiBarionBuilder
(
QuasiElasticFTF
);
217
AddBuilder
(ftf);
218
abar->RegisterMe(ftf);
219
abar->Build();
220
}
221
222
void
G4HadronPhysicsQGS_BIC::ConstructParticle
()
223
{
224
G4MesonConstructor
pMesonConstructor;
225
pMesonConstructor.
ConstructParticle
();
226
227
G4BaryonConstructor
pBaryonConstructor;
228
pBaryonConstructor.
ConstructParticle
();
229
230
G4ShortLivedConstructor
pShortLivedConstructor;
231
pShortLivedConstructor.
ConstructParticle
();
232
233
G4IonConstructor
pIonConstructor;
234
pIonConstructor.
ConstructParticle
();
235
}
236
237
#include "
G4ProcessManager.hh
"
238
void
G4HadronPhysicsQGS_BIC::ConstructProcess
()
239
{
240
if
(
G4Threading::IsMasterThread
()) {
241
DumpBanner
();
242
}
243
CreateModels
();
244
ExtraConfiguration
();
245
}
246
247
void
G4HadronPhysicsQGS_BIC::ExtraConfiguration
()
248
{
249
// --- Neutrons ---
250
const
G4ParticleDefinition
*
neutron
=
G4Neutron::Neutron
();
251
G4HadronicProcess
* inel =
G4PhysListUtil::FindInelasticProcess
(neutron);
252
if
(inel) { inel->
AddDataSet
(
new
G4NeutronInelasticXS
()); }
253
G4HadronicProcess
* capture =
G4PhysListUtil::FindCaptureProcess
(neutron);
254
if
(capture) {
255
capture->
RegisterMe
(
new
G4NeutronRadCapture
());
256
}
257
}
258
geant4
tree
geant4-10.6-release
source
physics_lists
constructors
hadron_inelastic
src
G4HadronPhysicsQGS_BIC.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:27
using
1.8.2 with
ECCE GitHub integration