Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4ExcitedXiConstructor.cc
Go to the documentation of this file.
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// --------------------------------------------------------------
30// GEANT 4 class implementation file
31//
32// History: first implementation, based on object model of
33// 10 oct 1998 H.Kurashige
34// ---------------------------------------------------------------
35
36
38
39#include "G4SystemOfUnits.hh"
41#include "G4ParticleTable.hh"
43#include "G4VDecayChannel.hh"
44#include "G4DecayTable.hh"
45
47 G4ExcitedBaryonConstructor(NStates, XiIsoSpin)
48{
49
50}
51
53{
54}
55
57 const G4String& parentName,
58 G4int iIso3,
59 G4int iState,
60 G4bool fAnti)
61{
62
63 // create decay table
64 G4DecayTable* decayTable = new G4DecayTable();
65
66 G4double br;
67 if ( (br=bRatio[iState][XiPi]) >0.0) {
68 AddXiPiMode( decayTable, parentName, br, iIso3, fAnti);
69 }
70
71 if ( (br=bRatio[iState][XiGamma]) >0.0) {
72 AddXiGammaMode( decayTable, parentName, br, iIso3, fAnti);
73 }
74
75 if ( (br=bRatio[iState][LambdaK]) >0.0) {
76 AddLambdaKMode( decayTable, parentName, br, iIso3, fAnti);
77 }
78
79 if ( (br=bRatio[iState][SigmaK]) >0.0) {
80 AddSigmaKMode( decayTable, parentName, br, iIso3, fAnti);
81 }
82
83 return decayTable;
84}
85
86G4DecayTable* G4ExcitedXiConstructor::AddXiGammaMode(
87 G4DecayTable* decayTable, const G4String& nameParent,
88 G4double br, G4int iIso3, G4bool fAnti)
89{
90 G4VDecayChannel* mode;
91 //
92 G4String daughterH;
93 if (iIso3== +1) {
94 daughterH = "xi0";
95 } else if (iIso3==-1) {
96 daughterH = "xi-";
97 }
98 if (fAnti) daughterH = "anti_" + daughterH;
99
100 // create decay channel [parent BR #daughters]
101 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
102 daughterH,"gamma");
103 // add decay table
104 decayTable->Insert(mode);
105
106 return decayTable;
107}
108
109G4DecayTable* G4ExcitedXiConstructor::AddLambdaKMode(
110 G4DecayTable* decayTable, const G4String& nameParent,
111 G4double br, G4int iIso3, G4bool fAnti)
112
113
114{
115 G4VDecayChannel* mode;
116
117 G4String lambda = "lambda";
118 G4String daughterK;
119 G4double r = 0.;
120
121 // ------------ Lambda K- ------------
122 // determine daughters
123 if (iIso3 == +1) {
124 if (!fAnti) {
125 daughterK = "kaon0";
126 } else {
127 daughterK = "anti_kaon0";
128 }
129 r = br;
130 } else if (iIso3 == -1) {
131 if (!fAnti) {
132 daughterK = "kaon-";
133 } else {
134 daughterK = "kaon+";
135 }
136 r = br;
137 }
138 if (fAnti) lambda = "anti_" + lambda;
139 if (r>0.) {
140 // create decay channel [parent BR #daughters]
141 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
142 lambda,daughterK);
143 // add decay table
144 decayTable->Insert(mode);
145 }
146
147 return decayTable;
148}
149
150G4DecayTable* G4ExcitedXiConstructor::AddSigmaKMode(
151 G4DecayTable* decayTable, const G4String& nameParent,
152 G4double br, G4int iIso3, G4bool fAnti)
153{
154 G4VDecayChannel* mode;
155
156 G4String daughterH;
157 G4String daughterK;
158 G4double r = 0.;
159
160 // ------------ Sigma K- ------------
161 // determine daughters
162 if (iIso3== +1) {
163 daughterH = "sigma+";
164 r= br/2.;
165 } else if (iIso3== -1) {
166 daughterH = "sigma0";
167 r = br/2.;
168 }
169 if (!fAnti) {
170 daughterK = "kaon-";
171 } else {
172 daughterK = "kaon+";
173 }
174 if (fAnti) daughterH = "anti_" + daughterH;
175 if (r>0.) {
176 // create decay channel [parent BR #daughters]
177 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
178 daughterH,daughterK);
179 // add decay table
180 decayTable->Insert(mode);
181 }
182
183 // ------------ Sigma K0 ------------
184 // determine daughters
185 if (iIso3 == +1) {
186 daughterH = "sigma0";
187 r= br/2.;
188 } else if (iIso3 == -1) {
189 daughterH = "sigma-";
190 r = br/2.;
191 }
192 if (!fAnti) {
193 daughterK = "anti_kaon0";
194 } else {
195 daughterK = "kaon0";
196 }
197 if (fAnti) daughterH = "anti_" + daughterH;
198 if (r>0.) {
199 // create decay channel [parent BR #daughters]
200 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
201 daughterH,daughterK);
202 // add decay table
203 decayTable->Insert(mode);
204 }
205
206 return decayTable;
207}
208
209G4DecayTable* G4ExcitedXiConstructor::AddXiPiMode(
210 G4DecayTable* decayTable, const G4String& nameParent,
211 G4double br, G4int iIso3, G4bool fAnti)
212{
213 G4VDecayChannel* mode;
214
215 G4String daughterXi;
216 G4String daughterPi;
217 G4double r = 0.;
218
219 // ------------ Xi pi- ------------
220 // determine daughters
221 if (iIso3== +1) {
222 r = 0.;
223 } else if (iIso3 == -1) {
224 daughterXi = "xi0";
225 r = br/2.;
226 }
227 if (!fAnti) {
228 daughterPi = "pi-";
229 } else {
230 daughterPi = "pi+";
231 }
232 if (fAnti) daughterXi = "anti_" + daughterXi;
233 if (r>0.) {
234 // create decay channel [parent BR #daughters]
235 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
236 daughterXi,daughterPi);
237 // add decay table
238 decayTable->Insert(mode);
239 }
240 // ------------ Xi Pi0 ------------
241 // determine daughters
242 if (iIso3== +1) {
243 daughterXi = "xi0";
244 r = br/2.;
245 } else if (iIso3 == -1) {
246 daughterXi = "xi-";
247 r = br/2.;
248 }
249 daughterPi = "pi0";
250 if (fAnti) daughterXi = "anti_" + daughterXi;
251 if (r>0.) {
252 // create decay channel [parent BR #daughters]
253 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
254 daughterXi,daughterPi);
255 // add decay table
256 decayTable->Insert(mode);
257 }
258
259 // ------------ XI pi + ------------
260 // determine daughters
261 if (iIso3== +1) {
262 daughterXi = "xi-";
263 r = br/2.;
264 } else if (iIso3==-1) {
265 r = 0.;
266 }
267 if (!fAnti) {
268 daughterPi = "pi+";
269 } else {
270 daughterPi = "pi-";
271 }
272 if (fAnti) daughterXi = "anti_" + daughterXi;
273 if (r>0.) {
274 // create decay channel [parent BR #daughters]
275 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
276 daughterXi,daughterPi);
277 // add decay table
278 decayTable->Insert(mode);
279 }
280
281 return decayTable;
282}
283
285{
286 G4double fm = mass[iState];
287 if ( iState==0 ) {
288 if (iso3== -1) fm = 1.5350*GeV; // xi-
289 }
290 return fm;
291}
292
294{
295 G4double fw = width[iState];
296 if ( iState==0 ) {
297 if (iso3== -1) fw = 9.9*MeV; // xi-
298 }
299 return fw;
300}
301
302const char* G4ExcitedXiConstructor::name[] = {
303 "xi(1530)", "xi(1690)", "xi(1820)", "xi(1950)", "xi(2030)"
304};
305
306const G4double G4ExcitedXiConstructor::mass[] = {
307 1.5318*GeV, 1.690*GeV, 1.823*GeV, 1.950*GeV, 2.025*GeV
308};
309
310const G4double G4ExcitedXiConstructor::width[] = {
311 9.1*MeV, 50.0*MeV, 24.0*MeV, 60.0*MeV, 20.0*MeV
312};
313
314const G4int G4ExcitedXiConstructor::iSpin[] = {
315 3, 3, 3, 3, 5
316};
317
318const G4int G4ExcitedXiConstructor::iParity[] = {
319 +1, +1, -1, -1, +1
320};
321
322
323const G4int G4ExcitedXiConstructor::encodingOffset[] = {
324 0, 20000, 10000, 30000, 10000
325};
326
328{
329 { 0.98, 0.02, 0.0, 0.0},
330 { 0.10, 0.0, 0.70, 0.20},
331 { 0.15, 0.0, 0.70, 0.15},
332 { 0.25, 0.0, 0.50, 0.25},
333 { 0.10, 0.0, 0.20, 0.70}
334};
335
336
337
338
339
340
341
342
343
344
345
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
void Insert(G4VDecayChannel *aChannel)
Definition: G4DecayTable.cc:53
virtual G4double GetWidth(G4int state, G4int iso)
virtual G4DecayTable * CreateDecayTable(const G4String &name, G4int iIso3, G4int iState, G4bool fAnti=false)
virtual G4double GetMass(G4int state, G4int iso)