Geant4 9.6.0
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// $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)