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
HadronPhysicsHIJING.cc
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file HadronPhysicsHIJING.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
//
28
//
29
//
30
//---------------------------------------------------------------------------
31
//
32
// ClassName:
33
//
34
// Author: 2012 A. Dotti
35
// created from HadronPhysicsHIJING
36
//
37
// Modified:
38
//
39
//----------------------------------------------------------------------------
40
//
41
#ifdef G4_USE_HIJING
42
#include "
HadronPhysicsHIJING.hh
"
43
44
#include "
globals.hh
"
45
#include "
G4ios.hh
"
46
#include <iomanip>
47
#include "
G4ParticleDefinition.hh
"
48
#include "
G4ParticleTable.hh
"
49
50
#include "
G4MesonConstructor.hh
"
51
#include "
G4BaryonConstructor.hh
"
52
#include "
G4ShortLivedConstructor.hh
"
53
#include "
G4ChipsKaonMinusInelasticXS.hh
"
54
#include "
G4ChipsKaonPlusInelasticXS.hh
"
55
#include "
G4ChipsKaonZeroInelasticXS.hh
"
56
#include "
G4CrossSectionDataSetRegistry.hh
"
57
58
#include "
G4ProcessManager.hh
"
59
#include "
G4PhysListUtil.hh
"
60
61
#include "
G4PiKBuilder.hh
"
62
#include "
G4FTFPPiKBuilder.hh
"
63
#include "
G4QGSPPiKBuilder.hh
"
64
#include "
G4BertiniPiKBuilder.hh
"
65
66
#include "
G4ProtonBuilder.hh
"
67
#include "
G4FTFPProtonBuilder.hh
"
68
#include "
G4QGSPProtonBuilder.hh
"
69
#include "
G4BertiniProtonBuilder.hh
"
70
71
#include "
G4NeutronBuilder.hh
"
72
#include "
G4FTFPNeutronBuilder.hh
"
73
#include "
G4QGSPNeutronBuilder.hh
"
74
#include "
G4BertiniNeutronBuilder.hh
"
75
76
#include "
G4HyperonFTFPBuilder.hh
"
77
#include "
G4AntiBarionBuilder.hh
"
78
#include "
G4FTFPAntiBarionBuilder.hh
"
79
80
HadronPhysicsHIJING::HadronPhysicsHIJING
(
G4int
)
81
:
G4VPhysicsConstructor
(
"hInelastic HIJING"
)
82
{
83
fNeutrons = 0;
84
fHIJINGNeutron = 0;
85
fPiK = 0;
86
fHIJINGPiK = 0;
87
fPro = 0;
88
fHIJINGPro = 0;
89
fHyperon = 0;
90
fAntiBaryon = 0;
91
fHIJINGAntiBaryon = 0;
92
fCHIPSInelastic = 0;
93
}
94
95
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
96
97
void
HadronPhysicsHIJING::CreateModels
()
98
{
99
G4bool
quasiElasFTF =
false
;
100
G4bool
quasiElasQGS =
true
;
101
G4double
minFTFP = 6*
GeV
;
102
G4double
maxBERT = 8*
GeV
;
103
G4double
minHIJING = 12*
GeV
;
104
G4double
minQGSP = 12*
GeV
;
105
G4double
maxFTFP = 25*
GeV
;
106
107
//Proton
108
fPro
=
new
G4ProtonBuilder
;
109
fHIJINGPro
=
new
HIJINGProtonBuilder
();
110
fHIJINGPro
->
SetMinEnergy
(minHIJING);
111
fPro
->
RegisterMe
(
fHIJINGPro
);
112
G4FTFPProtonBuilder
* FTFPPro=
new
G4FTFPProtonBuilder
(quasiElasFTF);
113
FTFPPro->
SetMinEnergy
( minFTFP );
114
FTFPPro->
SetMaxEnergy
( maxFTFP );
115
fPro
->
RegisterMe
( FTFPPro );
116
G4BertiniProtonBuilder
* BertPro =
new
G4BertiniProtonBuilder
();
117
BertPro->
SetMaxEnergy
( maxBERT );
118
119
fNeutrons
=
new
G4NeutronBuilder
;
120
fHIJINGNeutron
=
new
HIJINGNeutronBuilder
();
121
fHIJINGNeutron
->
SetMinEnergy
(minHIJING);
122
fNeutrons
->
RegisterMe
(
fHIJINGNeutron
);
123
//G4QGSPNeutronBuilder* QGSPNeu = new G4QGSPNeutronBuilder(quasiElasQGS);
124
//QGSPNeu->SetMinEnergy(minQGSP);
125
//fNeutrons->RegisterMe(QGSPNeu);
126
G4FTFPNeutronBuilder
* FTFPNeu =
new
G4FTFPNeutronBuilder
(quasiElasFTF);
127
FTFPNeu->
SetMinEnergy
( minFTFP );
128
FTFPNeu->
SetMaxEnergy
( maxFTFP );
129
fNeutrons
->
RegisterMe
( FTFPNeu );
130
G4BertiniNeutronBuilder
* BertNeu =
new
G4BertiniNeutronBuilder
();
131
BertNeu->
SetMaxEnergy
( maxBERT );
132
133
fPiK
=
new
G4PiKBuilder
;
134
G4QGSPPiKBuilder
* QGSPPiK=
new
G4QGSPPiKBuilder
(quasiElasQGS);
135
fPiK
->
RegisterMe
(QGSPPiK);
136
QGSPPiK->
SetMinEnergy
(minQGSP);
137
G4FTFPPiKBuilder
* FTFPPiK=
new
G4FTFPPiKBuilder
(quasiElasFTF);
138
fPiK
->
RegisterMe
(FTFPPiK);
139
FTFPPiK->
SetMaxEnergy
(maxFTFP);
140
FTFPPiK->
SetMinEnergy
(minFTFP);
141
G4BertiniPiKBuilder
* BertiniPiK=
new
G4BertiniPiKBuilder
();
142
fPiK
->
RegisterMe
(BertiniPiK);
143
BertiniPiK->
SetMaxEnergy
(maxBERT);
144
145
//For Hyperons use FTF model
146
fHyperon
=
new
G4HyperonFTFPBuilder
;
147
148
fAntiBaryon
=
new
G4AntiBarionBuilder
;
149
//FTFPAntiBaryon=new G4FTFPAntiBarionBuilder(quasiElasFTF);
150
G4FTFPAntiBarionBuilder
* FTFPAB =
new
G4FTFPAntiBarionBuilder
(quasiElasFTF);
151
fAntiBaryon
->
RegisterMe
( FTFPAB );
152
}
153
154
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
155
156
HadronPhysicsHIJING::~HadronPhysicsHIJING
()
157
{
158
delete
fNeutrons
;
159
delete
fHIJINGNeutron
;
160
161
delete
fPiK
;
162
delete
fHIJINGPiK
;
163
164
delete
fPro
;
165
delete
fHIJINGPro
;
166
167
delete
fHyperon
;
168
delete
fAntiBaryon
;
169
delete
fHIJINGAntiBaryon
;
170
171
delete
fCHIPSInelastic
;
172
}
173
174
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
175
176
void
HadronPhysicsHIJING::ConstructParticle
()
177
{
178
G4MesonConstructor
pMesonConstructor;
179
pMesonConstructor.
ConstructParticle
();
180
181
G4BaryonConstructor
pBaryonConstructor;
182
pBaryonConstructor.
ConstructParticle
();
183
184
G4ShortLivedConstructor
pShortLivedConstructor;
185
pShortLivedConstructor.
ConstructParticle
();
186
}
187
188
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
189
190
void
HadronPhysicsHIJING::ConstructProcess
()
191
{
192
CreateModels
();
193
fNeutrons
->
Build
();
194
fPro
->
Build
();
195
fPiK
->
Build
();
196
197
// use CHIPS cross sections also for Kaons
198
G4VCrossSectionDataSet
* ChipsKaonMinus =
199
G4CrossSectionDataSetRegistry::Instance
()->
200
GetCrossSectionDataSet(
G4ChipsKaonMinusInelasticXS::Default_Name
());
201
G4VCrossSectionDataSet
* ChipsKaonPlus =
202
G4CrossSectionDataSetRegistry::Instance
()->
203
GetCrossSectionDataSet(
G4ChipsKaonPlusInelasticXS::Default_Name
());
204
G4VCrossSectionDataSet
* ChipsKaonZero =
205
G4CrossSectionDataSetRegistry::Instance
()->
206
GetCrossSectionDataSet(
G4ChipsKaonZeroInelasticXS::Default_Name
());
207
//
208
209
G4PhysListUtil::FindInelasticProcess
(
G4KaonMinus::KaonMinus
())->
210
AddDataSet(ChipsKaonMinus);
211
G4PhysListUtil::FindInelasticProcess
(
G4KaonPlus::KaonPlus
())->
212
AddDataSet(ChipsKaonPlus);
213
G4PhysListUtil::FindInelasticProcess
(
G4KaonZeroShort::KaonZeroShort
())->
214
AddDataSet(ChipsKaonZero );
215
G4PhysListUtil::FindInelasticProcess
(
G4KaonZeroLong::KaonZeroLong
())->
216
AddDataSet(ChipsKaonZero );
217
218
fHyperon
->
Build
();
219
fAntiBaryon
->
Build
();
220
}
221
222
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
223
224
G4HadronicProcess
*
225
HadronPhysicsHIJING::FindInelasticProcess
(
const
G4ParticleDefinition
*
p
)
226
{
227
G4HadronicProcess
* had = 0;
228
if
(p) {
229
G4ProcessVector
* pvec = p->
GetProcessManager
()->
GetProcessList
();
230
size_t
n
= pvec->
size
();
231
if
(0 < n) {
232
for
(
size_t
i=0; i<
n
; ++i) {
233
if
(
fHadronInelastic
== ((*pvec)[i])->GetProcessSubType()) {
234
had =
static_cast<
G4HadronicProcess
*
>
((*pvec)[i]);
235
236
break
;
237
}
238
}
239
}
240
}
241
return
had;
242
}
243
244
#endif //G4_USE_HIJING
geant4
tree
geant4-10.6-release
examples
extended
hadronic
Hadr02
src
HadronPhysicsHIJING.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:07
using
1.8.2 with
ECCE GitHub integration