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
G4INCLNNToNSKpiChannel.cc
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4INCLNNToNSKpiChannel.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
// INCL++ intra-nuclear cascade model
27
// Alain Boudard, CEA-Saclay, France
28
// Joseph Cugnon, University of Liege, Belgium
29
// Jean-Christophe David, CEA-Saclay, France
30
// Pekka Kaitaniemi, CEA-Saclay, France, and Helsinki Institute of Physics, Finland
31
// Sylvie Leray, CEA-Saclay, France
32
// Davide Mancusi, CEA-Saclay, France
33
//
34
#define INCLXX_IN_GEANT4_MODE 1
35
36
#include "
globals.hh
"
37
38
#include "
G4INCLNNToNSKpiChannel.hh
"
39
#include "
G4INCLKinematicsUtils.hh
"
40
#include "
G4INCLBinaryCollisionAvatar.hh
"
41
#include "
G4INCLRandom.hh
"
42
#include "
G4INCLGlobals.hh
"
43
#include "
G4INCLLogger.hh
"
44
#include <algorithm>
45
#include "
G4INCLPhaseSpaceGenerator.hh
"
46
47
namespace
G4INCL {
48
49
const
G4double
NNToNSKpiChannel::angularSlope
= 2.;
// What is the exact effect? Sould be check
50
51
NNToNSKpiChannel::NNToNSKpiChannel
(
Particle
*p1,
Particle
*p2)
52
: particle1(p1), particle2(p2)
53
{}
54
55
NNToNSKpiChannel::~NNToNSKpiChannel
(){}
56
57
void
NNToNSKpiChannel::fillFinalState
(
FinalState
*
fs
) {
58
59
// pp (36) pn (36)
60
//
61
// pp -> p pi+ S- K+ (9)
62
// pp -> p pi+ S0 K0 (9)
63
// pp -> p pi0 S+ K0 (4)
64
// pp -> n pi+ S+ K0 (2)
65
// pp -> p pi0 S0 K+ (4)
66
// pp -> n pi+ S0 K+ (2)
67
// pp -> p pi- S+ K+ (2)
68
// pp -> n pi0 S+ K+ (4)
69
70
// pn -> p pi0 S- K+ (4)
71
// pn -> n pi+ S- K+ (2)
72
// pn -> p pi0 S0 K0 (2)
73
// pn -> n pi+ S0 K0 (1)
74
// pn -> p pi+ S- K0 (9)
75
76
const
G4double
sqrtS =
KinematicsUtils::totalEnergyInCM
(
particle1
,
particle2
);
77
78
const
G4int
iso =
ParticleTable::getIsospin
(
particle1
->
getType
()) +
ParticleTable::getIsospin
(
particle2
->
getType
());
79
80
ParticleType
KaonType;
81
ParticleType
PionType;
82
83
G4double
rdm =
Random::shoot
();
84
85
if
(iso == 2){
86
if
(rdm * 36. < 9.){
87
KaonType =
KPlus
;
88
PionType =
PiPlus
;
89
particle2
->
setType
(
SigmaMinus
);
90
}
91
else
if
(rdm * 36. < 18.){
92
KaonType =
KZero
;
93
PionType =
PiPlus
;
94
particle2
->
setType
(
SigmaZero
);
95
}
96
else
if
(rdm * 36. < 22.){
97
KaonType =
KZero
;
98
PionType =
PiZero
;
99
particle2
->
setType
(
SigmaPlus
);
100
}
101
else
if
(rdm * 36. < 24.){
102
KaonType =
KZero
;
103
PionType =
PiPlus
;
104
particle1
->
setType
(
Neutron
);
105
particle2
->
setType
(
SigmaPlus
);
106
}
107
else
if
(rdm * 36. < 28.){
108
KaonType =
KPlus
;
109
PionType =
PiZero
;
110
particle2
->
setType
(
SigmaZero
);
111
}
112
else
if
(rdm * 36. < 30.){
113
KaonType =
KPlus
;
114
PionType =
PiPlus
;
115
particle1
->
setType
(
Neutron
);
116
particle2
->
setType
(
SigmaZero
);
117
}
118
else
if
(rdm * 36. < 32.){
119
KaonType =
KPlus
;
120
PionType =
PiMinus
;
121
particle2
->
setType
(
SigmaPlus
);
122
}
123
else
{
124
KaonType =
KPlus
;
125
PionType =
PiZero
;
126
particle1
->
setType
(
Neutron
);
127
particle2
->
setType
(
SigmaPlus
);
128
}
129
130
}
131
else
if
(iso == -2){
132
if
(rdm * 36. < 9.){
133
KaonType =
KZero
;
134
PionType =
PiMinus
;
135
particle2
->
setType
(
SigmaPlus
);
136
}
137
else
if
(rdm * 36. < 18.){
138
KaonType =
KPlus
;
139
PionType =
PiMinus
;
140
particle2
->
setType
(
SigmaZero
);
141
}
142
else
if
(rdm * 36. < 22.){
143
KaonType =
KPlus
;
144
PionType =
PiZero
;
145
particle2
->
setType
(
SigmaMinus
);
146
}
147
else
if
(rdm * 36. < 24.){
148
KaonType =
KPlus
;
149
PionType =
PiMinus
;
150
particle1
->
setType
(
Proton
);
151
particle2
->
setType
(
SigmaMinus
);
152
}
153
else
if
(rdm * 36. < 28.){
154
KaonType =
KZero
;
155
PionType =
PiZero
;
156
particle2
->
setType
(
SigmaZero
);
157
}
158
else
if
(rdm * 36. < 30.){
159
KaonType =
KZero
;
160
PionType =
PiMinus
;
161
particle1
->
setType
(
Proton
);
162
particle2
->
setType
(
SigmaZero
);
163
}
164
else
if
(rdm * 36. < 32.){
165
KaonType =
KZero
;
166
PionType =
PiPlus
;
167
particle2
->
setType
(
SigmaMinus
);
168
}
169
else
{
170
KaonType =
KZero
;
171
PionType =
PiZero
;
172
particle1
->
setType
(
Proton
);
173
particle2
->
setType
(
SigmaMinus
);
174
}
175
176
}
177
else
if
(rdm*36. < 4.){
178
KaonType =
KPlus
;
179
PionType =
PiZero
;
180
particle1
->
setType
(
Proton
);
181
particle2
->
setType
(
SigmaMinus
);
182
}
183
else
if
(rdm*36. < 6.){
184
KaonType =
KZero
;
185
PionType =
PiZero
;
186
particle1
->
setType
(
Neutron
);
187
particle2
->
setType
(
SigmaPlus
);
188
}
189
else
if
(rdm*36. < 8.){
190
KaonType =
KPlus
;
191
PionType =
PiPlus
;
192
particle1
->
setType
(
Neutron
);
193
particle2
->
setType
(
SigmaMinus
);
194
}
195
else
if
(rdm*36. < 9.){
196
KaonType =
KZero
;
197
PionType =
PiMinus
;
198
particle1
->
setType
(
Proton
);
199
particle2
->
setType
(
SigmaPlus
);
200
}
201
else
if
(rdm*36. < 18.){
202
KaonType =
KZero
;
203
PionType =
PiZero
;
204
particle1
->
setType
(
Proton
);
205
particle2
->
setType
(
SigmaZero
);
206
}
207
else
if
(rdm*36. < 27.){
208
KaonType =
KPlus
;
209
PionType =
PiZero
;
210
particle1
->
setType
(
Neutron
);
211
particle2
->
setType
(
SigmaZero
);
212
}
213
else
if
(rdm*36. < 28.){
214
KaonType =
KZero
;
215
PionType =
PiPlus
;
216
particle1
->
setType
(
Neutron
);
217
particle2
->
setType
(
SigmaZero
);
218
}
219
else
if
(rdm*36. < 30.){
220
KaonType =
KPlus
;
221
PionType =
PiMinus
;
222
particle1
->
setType
(
Proton
);
223
particle2
->
setType
(
SigmaZero
);
224
}
225
else
if
(rdm*36. < 32.){
226
KaonType =
KZero
;
227
PionType =
PiPlus
;
228
particle1
->
setType
(
Proton
);
229
particle2
->
setType
(
SigmaMinus
);
230
}
231
else
{
232
KaonType =
KPlus
;
233
PionType =
PiMinus
;
234
particle1
->
setType
(
Neutron
);
235
particle2
->
setType
(
SigmaPlus
);
236
}
237
238
ParticleList
list;
239
list.push_back(
particle1
);
240
list.push_back(
particle2
);
241
const
ThreeVector
&rcol1 =
particle1
->
getPosition
();
242
const
ThreeVector
&rcol2 =
particle2
->
getPosition
();
243
const
ThreeVector
zero
;
244
Particle
*
pion
=
new
Particle
(PionType,zero,rcol1);
245
Particle
*kaon =
new
Particle
(KaonType,zero,rcol2);
246
list.push_back(kaon);
247
list.push_back(pion);
248
249
if
(
Random::shoot
()<0.5)
PhaseSpaceGenerator::generateBiased
(sqrtS, list, 0,
angularSlope
);
250
else
PhaseSpaceGenerator::generateBiased
(sqrtS, list, 1,
angularSlope
);
251
252
INCL_DEBUG
(
"NNToNSKpi "
<< (kaon->
getMomentum
().
theta
()) * 180. /
G4INCL::Math::pi
<<
'\n'
);
253
254
fs->
addModifiedParticle
(
particle1
);
255
fs->
addModifiedParticle
(
particle2
);
256
fs->
addCreatedParticle
(kaon);
257
fs->
addCreatedParticle
(pion);
258
259
}
260
}
geant4
tree
geant4-10.6-release
source
processes
hadronic
models
inclxx
incl_physics
src
G4INCLNNToNSKpiChannel.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:45
using
1.8.2 with
ECCE GitHub integration