Geant4
v4-10.4-release
메인 페이지
관련된 페이지
모듈
네임스페이스
클래스
파일들
파일 목록
파일 멤버
모두
클래스
네임스페이스들
파일들
함수
변수
타입정의
열거형 타입
열거형 멤버
Friends
매크로
그룹들
페이지들
source
processes
hadronic
models
inclxx
incl_physics
src
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
PhaseSpaceGenerator::generateBiased
(sqrtS, list, 0,
angularSlope
);
250
251
INCL_DEBUG
(
"NNToNSKpi "
<< (kaon->
getMomentum
().
theta
()) * 180. /
G4INCL::Math::pi
<<
'\n'
);
252
253
fs->
addModifiedParticle
(
particle1
);
254
fs->
addModifiedParticle
(
particle2
);
255
fs->
addCreatedParticle
(kaon);
256
fs->
addCreatedParticle
(pion);
257
258
}
259
}
G4INCL::PhaseSpaceGenerator::generateBiased
void generateBiased(const G4double sqrtS, ParticleList &particles, const size_t index, const G4double slope)
Generate a biased event in the CM system.
Definition:
G4INCLPhaseSpaceGenerator.cc:97
G4InuclParticleNames::pion
G4bool pion(G4int ityp)
Definition:
G4InuclParticleNames.hh:91
G4INCL::FinalState::addModifiedParticle
void addModifiedParticle(Particle *p)
Definition:
G4INCLFinalState.cc:60
G4INCLBinaryCollisionAvatar.hh
G4INCL::Particle::getPosition
const G4INCL::ThreeVector & getPosition() const
Definition:
G4INCLParticle.hh:726
G4INCLPhaseSpaceGenerator.hh
G4INCL::Neutron
Definition:
G4INCLParticleType.hh:52
G4INCL::NNToNSKpiChannel::particle2
Particle * particle2
Definition:
G4INCLNNToNSKpiChannel.hh:55
G4INCL::KinematicsUtils::totalEnergyInCM
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)
Definition:
G4INCLKinematicsUtils.cc:94
G4INCL::NNToNSKpiChannel::particle1
Particle * particle1
Definition:
G4INCLNNToNSKpiChannel.hh:55
G4INCL::Particle::getMomentum
const G4INCL::ThreeVector & getMomentum() const
Definition:
G4INCLParticle.hh:704
G4INCL::KZero
Definition:
G4INCLParticleType.hh:70
G4INCLNNToNSKpiChannel.hh
G4INCL::Proton
Definition:
G4INCLParticleType.hh:51
G4INCL::ParticleList
Definition:
G4INCLParticle.hh:62
G4INCL::NNToNSKpiChannel::~NNToNSKpiChannel
virtual ~NNToNSKpiChannel()
Definition:
G4INCLNNToNSKpiChannel.cc:55
G4INCL::KPlus
Definition:
G4INCLParticleType.hh:69
G4INCLRandom.hh
INCL_DEBUG
#define INCL_DEBUG(x)
Definition:
G4INCLLogger.hh:240
G4INCL::NNToNSKpiChannel::angularSlope
static const G4double angularSlope
Definition:
G4INCLNNToNSKpiChannel.hh:57
G4INCL::PiMinus
Definition:
G4INCLParticleType.hh:54
G4double
double G4double
Definition:
G4Types.hh:76
G4INCL::SigmaMinus
Definition:
G4INCLParticleType.hh:68
G4INCL::PiZero
Definition:
G4INCLParticleType.hh:55
G4INCL::Random::shoot
G4double shoot()
Definition:
G4INCLRandom.cc:93
G4INCL::NNToNSKpiChannel::fillFinalState
void fillFinalState(FinalState *fs)
Definition:
G4INCLNNToNSKpiChannel.cc:57
G4INCL::FinalState
Definition:
G4INCLFinalState.hh:64
G4INCL::ThreeVector
Definition:
G4INCLThreeVector.hh:54
G4INCL::Math::pi
const G4double pi
Definition:
G4INCLGlobals.hh:68
G4INCLKinematicsUtils.hh
globals.hh
G4INCL::Particle::setType
void setType(ParticleType t)
Definition:
G4INCLParticle.hh:180
G4INCL::PiPlus
Definition:
G4INCLParticleType.hh:53
G4INCL::NNToNSKpiChannel::NNToNSKpiChannel
NNToNSKpiChannel(Particle *, Particle *)
Definition:
G4INCLNNToNSKpiChannel.cc:51
G4INCLGlobals.hh
G4int
int G4int
Definition:
G4Types.hh:78
G4INCL::Particle
Definition:
G4INCLParticle.hh:75
G4INCL::ParticleTable::getIsospin
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
Definition:
G4INCLParticleTable.cc:471
G4INCL::Particle::getType
G4INCL::ParticleType getType() const
Definition:
G4INCLParticle.hh:171
G4INCL::SigmaPlus
Definition:
G4INCLParticleType.hh:66
G4INCL::SigmaZero
Definition:
G4INCLParticleType.hh:67
G4INCL::ThreeVector::theta
G4double theta() const
Definition:
G4INCLThreeVector.hh:83
G4INCL::ParticleType
ParticleType
Definition:
G4INCLParticleType.hh:50
G4INCL::FinalState::addCreatedParticle
void addCreatedParticle(Particle *p)
Definition:
G4INCLFinalState.cc:75
G4INCLLogger.hh
다음에 의해 생성됨 :
1.8.5