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