Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4ExcitedLambdaConstructor.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// $Id$
28//
29//
30// --------------------------------------------------------------
31// GEANT 4 class implementation file
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"
42#include "G4ShortLivedTable.hh"
44#include "G4VDecayChannel.hh"
45#include "G4DecayTable.hh"
46
47
49 G4ExcitedBaryonConstructor(NStates, LambdaIsoSpin)
50{
51
52}
53
55{
56}
57
59 const G4String& parentName,
60 G4int iIso3,
61 G4int iState,
62 G4bool fAnti)
63{
64 // create decay table
65 G4DecayTable* decayTable = new G4DecayTable();
66
67 G4double br;
68 if ( (br=bRatio[iState][NK]) >0.0) {
69 AddNKMode( decayTable, parentName, br, iIso3, fAnti);
70 }
71
72 if ( (br=bRatio[iState][NKStar]) >0.0) {
73 AddNKStarMode( decayTable, parentName, br, iIso3, fAnti);
74 }
75
76 if ( (br=bRatio[iState][SigmaPi]) >0.0) {
77 AddSigmaPiMode( decayTable, parentName, br, iIso3, fAnti);
78 }
79
80 if ( (br=bRatio[iState][SigmaStarPi]) >0.0) {
81 AddSigmaStarPiMode( decayTable, parentName, br, iIso3, fAnti);
82 }
83
84 if ( (br=bRatio[iState][LambdaGamma]) >0.0) {
85 AddLambdaGammaMode( decayTable, parentName, br, iIso3, fAnti);
86 }
87
88 if ( (br=bRatio[iState][LambdaEta]) >0.0) {
89 AddLambdaEtaMode( decayTable, parentName, br, iIso3, fAnti);
90 }
91
92 if ( (br=bRatio[iState][LambdaOmega]) >0.0) {
93 AddLambdaOmegaMode( decayTable, parentName, br, iIso3, fAnti);
94 }
95
96 return decayTable;
97}
98
99G4DecayTable* G4ExcitedLambdaConstructor::AddLambdaGammaMode(
100 G4DecayTable* decayTable, const G4String& nameParent,
101 G4double br, G4int , G4bool fAnti)
102{
103 G4VDecayChannel* mode;
104
105 //
106 G4String lambda = "lambda";
107 if (fAnti) lambda = "anti_" + lambda;
108
109 // create decay channel [parent BR #daughters]
110 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
111 lambda,"gamma");
112 // add decay table
113 decayTable->Insert(mode);
114
115 return decayTable;
116}
117G4DecayTable* G4ExcitedLambdaConstructor::AddLambdaEtaMode(
118 G4DecayTable* decayTable, const G4String& nameParent,
119 G4double br, G4int , G4bool fAnti)
120{
121 G4VDecayChannel* mode;
122
123 //
124 G4String lambda = "lambda";
125 if (fAnti) lambda = "anti_" + lambda;
126
127 // create decay channel [parent BR #daughters]
128 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
129 lambda,"eta");
130 // add decay table
131 decayTable->Insert(mode);
132
133 return decayTable;
134}
135
136G4DecayTable* G4ExcitedLambdaConstructor::AddLambdaOmegaMode(
137 G4DecayTable* decayTable, const G4String& nameParent,
138 G4double br, G4int , G4bool fAnti)
139{
140 G4VDecayChannel* mode;
141
142 //
143 G4String lambda = "lambda";
144 if (fAnti) lambda = "anti_" + lambda;
145
146 // create decay channel [parent BR #daughters]
147 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
148 lambda,"omega");
149 // add decay table
150 decayTable->Insert(mode);
151
152 return decayTable;
153}
154
155G4DecayTable* G4ExcitedLambdaConstructor::AddNKMode(
156 G4DecayTable* decayTable, const G4String& nameParent,
157 G4double br, G4int , G4bool fAnti)
158{
159 G4VDecayChannel* mode;
160
161 G4String daughterN;
162 G4String daughterK;
163
164 // ------------ N K- ------------
165 // determine daughters
166 daughterN = "proton";
167 if (!fAnti) {
168 daughterK = "kaon-";
169 } else {
170 daughterK = "kaon+";
171 }
172 if (fAnti) daughterN = "anti_" + daughterN;
173 // create decay channel [parent BR #daughters]
174 mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
175 daughterN,daughterK);
176 // add decay table
177 decayTable->Insert(mode);
178
179 // ------------ N K0 ------------
180 // determine daughters
181 daughterN = "neutron";
182 if (!fAnti) {
183 daughterK = "anti_kaon0";
184 } else {
185 daughterK = "kaon0";
186 }
187 if (fAnti) daughterN = "anti_" + daughterN;
188 // create decay channel [parent BR #daughters]
189 mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
190 daughterN,daughterK);
191 // add decay table
192 decayTable->Insert(mode);
193
194
195 return decayTable;
196}
197
198G4DecayTable* G4ExcitedLambdaConstructor::AddNKStarMode(
199 G4DecayTable* decayTable, const G4String& nameParent,
200 G4double br, G4int , G4bool fAnti)
201{
202 G4VDecayChannel* mode;
203
204 G4String daughterN;
205 G4String daughterK;
206
207 // ------------ N K- ------------
208 // determine daughters
209 daughterN = "proton";
210 if (!fAnti) {
211 daughterK = "k_star-";
212 } else {
213 daughterK = "k_star+";
214 }
215 if (fAnti) daughterN = "anti_" + daughterN;
216 // create decay channel [parent BR #daughters]
217 mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
218 daughterN,daughterK);
219 // add decay table
220 decayTable->Insert(mode);
221
222 // ------------ N K0 ------------
223 // determine daughters
224 daughterN = "neutron";
225 if (!fAnti) {
226 daughterK = "anti_k_star0";
227 } else {
228 daughterK = "k_star0";
229 }
230 if (fAnti) daughterN = "anti_" + daughterN;
231 // create decay channel [parent BR #daughters]
232 mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
233 daughterN,daughterK);
234 // add decay table
235 decayTable->Insert(mode);
236
237
238 return decayTable;
239}
240
241G4DecayTable* G4ExcitedLambdaConstructor::AddSigmaPiMode(
242 G4DecayTable* decayTable, const G4String& nameParent,
243 G4double br, G4int , G4bool fAnti)
244{
245 G4VDecayChannel* mode;
246
247 G4String daughterSigma;
248 G4String daughterPi;
249
250 // ------------ Sigma+ pi - ------------
251 // determine daughters
252 daughterSigma = "sigma+";
253 if (!fAnti) {
254 daughterPi = "pi-";
255 } else {
256 daughterPi = "pi+";
257 }
258 if (fAnti) daughterSigma = "anti_" + daughterSigma;
259 // create decay channel [parent BR #daughters]
260 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3.0, 2,
261 daughterSigma,daughterPi);
262 // add decay table
263 decayTable->Insert(mode);
264
265 // ------------ Sigma0 Pi0 ------------
266 // determine daughters
267 daughterSigma = "sigma0";
268 daughterPi = "pi0";
269
270 if (fAnti) daughterSigma = "anti_" + daughterSigma;
271 // create decay channel [parent BR #daughters]
272 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3.0, 2,
273 daughterSigma,daughterPi);
274
275 // add decay table
276 decayTable->Insert(mode);
277
278 // ------------ Sigma- pi + ------------
279 // determine daughters
280 daughterSigma = "sigma-";
281 if (!fAnti) {
282 daughterPi = "pi+";
283 } else {
284 daughterPi = "pi-";
285 }
286 if (fAnti) daughterSigma = "anti_" + daughterSigma;
287 // create decay channel [parent BR #daughters]
288 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3.0, 2,
289 daughterSigma,daughterPi);
290 // add decay table
291 decayTable->Insert(mode);
292
293 return decayTable;
294}
295
296
297G4DecayTable* G4ExcitedLambdaConstructor::AddSigmaStarPiMode(
298 G4DecayTable* decayTable, const G4String& nameParent,
299 G4double br, G4int , G4bool fAnti)
300{
301 G4VDecayChannel* mode;
302
303 G4String daughterSigma;
304 G4String daughterPi;
305
306 // ------------ Sigma+ pi - ------------
307 // determine daughters
308 daughterSigma = "sigma(1385)+";
309 if (!fAnti) {
310 daughterPi = "pi-";
311 } else {
312 daughterPi = "pi+";
313 }
314 if (fAnti) daughterSigma = "anti_" + daughterSigma;
315 // create decay channel [parent BR #daughters]
316 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3.0, 2,
317 daughterSigma,daughterPi);
318 // add decay table
319 decayTable->Insert(mode);
320
321 // ------------ Sigma0 Pi0 ------------
322 // determine daughters
323 daughterSigma = "sigma(1385)0";
324 daughterPi = "pi0";
325
326 if (fAnti) daughterSigma = "anti_" + daughterSigma;
327 // create decay channel [parent BR #daughters]
328 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3.0, 2,
329 daughterSigma,daughterPi);
330
331 // add decay table
332 decayTable->Insert(mode);
333
334 // ------------ Sigma- pi + ------------
335 // determine daughters
336 daughterSigma = "sigma(1385)-";
337 if (!fAnti) {
338 daughterPi = "pi+";
339 } else {
340 daughterPi = "pi-";
341 }
342 if (fAnti) daughterSigma = "anti_" + daughterSigma;
343 // create decay channel [parent BR #daughters]
344 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3.0, 2,
345 daughterSigma,daughterPi);
346 // add decay table
347 decayTable->Insert(mode);
348
349 return decayTable;
350}
351
352const char* G4ExcitedLambdaConstructor::name[] = {
353 "lambda(1405)","lambda(1520)","lambda(1600)","lambda(1670)","lambda(1690)",
354 "lambda(1800)","lambda(1810)","lambda(1820)","lambda(1830)","lambda(1890)",
355 "lambda(2100)","lambda(2110)"
356};
357
358const G4double G4ExcitedLambdaConstructor::mass[] = {
359 1.4051*GeV,1.5195*GeV, 1.600*GeV, 1.670*GeV, 1.690*GeV,
360 1.800*GeV, 1.810*GeV, 1.820*GeV, 1.830*GeV, 1.890*GeV,
361 2.100*GeV, 2.110*GeV
362};
363
364const G4double G4ExcitedLambdaConstructor::width[] = {
365 50.0*MeV, 15.6*MeV, 150.0*MeV, 35.0*MeV, 60.0*MeV,
366 300.0*MeV, 150.0*MeV, 80.0*MeV, 95.0*MeV, 100.0*MeV,
367 200.0*MeV, 200.0*MeV
368};
369
370const G4int G4ExcitedLambdaConstructor::iSpin[] = {
371 1, 3, 1, 1, 3,
372 1, 1, 5, 5, 3,
373 7, 5
374};
375
376const G4int G4ExcitedLambdaConstructor::iParity[] = {
377 -1, -1, +1, -1, -1,
378 -1, +1, +1, -1, +1,
379 -1, +1
380};
381
382const G4int G4ExcitedLambdaConstructor::encodingOffset[] = {
383 10000, 0, 20000, 30000, 10000,
384 40000, 50000, 0, 10000, 20000,
385 0, 20000
386};
387
389{
390 { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0},
391 { 0.45, 0.0, 0.43, 0.11, 0.01, 0.0, 0.0},
392 { 0.35, 0.0, 0.65, 0.0, 0.0, 0.0, 0.0},
393 { 0.20, 0.0, 0.50, 0.0, 0.0, 0.30, 0.0},
394 { 0.25, 0.0, 0.45, 0.30, 0.0, 0.0, 0.0},
395 { 0.40, 0.20, 0.20, 0.20, 0.0, 0.0, 0.0},
396 { 0.35, 0.45, 0.15, 0.05, 0.0, 0.0, 0.0},
397 { 0.73, 0.0, 0.16, 0.11, 0.0, 0.0, 0.0},
398 { 0.10, 0.0, 0.70, 0.20, 0.0, 0.0, 0.0},
399 { 0.37, 0.21, 0.11, 0.31, 0.0, 0.0, 0.0},
400 { 0.35, 0.20, 0.05, 0.30, 0.0, 0.02, 0.08},
401 { 0.25, 0.45, 0.30, 0.0, 0.0, 0.0, 0.0}
402};
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
void Insert(G4VDecayChannel *aChannel)
Definition: G4DecayTable.cc:60
virtual G4DecayTable * CreateDecayTable(const G4String &name, G4int iIso3, G4int iState, G4bool fAnti=false)