source: trunk/source/particles/shortlived/src/G4ExcitedXiConstructor.cc@ 1305

Last change on this file since 1305 was 1196, checked in by garnier, 16 years ago

update CVS release candidate geant4.9.3.01

File size: 9.1 KB
RevLine 
[824]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//
[921]27// $Id: G4ExcitedXiConstructor.cc,v 1.8 2008/09/18 08:37:27 kurasige Exp $
[1196]28// GEANT4 tag $Name: geant4-09-03-cand-01 $
[824]29//
30//
31// --------------------------------------------------------------
32// GEANT 4 class implementation file
33//
34// History: first implementation, based on object model of
35// 10 oct 1998 H.Kurashige
36// ---------------------------------------------------------------
37
38
39#include "G4ExcitedXiConstructor.hh"
40
41#include "G4ParticleDefinition.hh"
42#include "G4ParticleTable.hh"
43#include "G4ShortLivedTable.hh"
44#include "G4PhaseSpaceDecayChannel.hh"
45#include "G4VDecayChannel.hh"
46#include "G4DecayTable.hh"
47
48G4ExcitedXiConstructor::G4ExcitedXiConstructor():
49 G4ExcitedBaryonConstructor(NStates, XiIsoSpin)
50{
51
52}
53
54G4ExcitedXiConstructor::~G4ExcitedXiConstructor()
55{
56}
57
58G4DecayTable* G4ExcitedXiConstructor::CreateDecayTable(
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
286
287const char* G4ExcitedXiConstructor::name[] = {
288 "xi(1530)", "xi(1690)", "xi(1820)", "xi(1950)", "xi(2030)"
289};
290
291const G4double G4ExcitedXiConstructor::mass[] = {
[921]292 1.5334*GeV, 1.690*GeV, 1.823*GeV, 1.950*GeV, 2.025*GeV
[824]293};
294
295const G4double G4ExcitedXiConstructor::width[] = {
296 9.1*MeV, 50.0*MeV, 24.0*MeV, 60.0*MeV, 20.0*MeV
297};
298
299const G4int G4ExcitedXiConstructor::iSpin[] = {
300 3, 3, 3, 3, 5
301};
302
303const G4int G4ExcitedXiConstructor::iParity[] = {
304 +1, +1, -1, -1, +1
305};
306
307
308const G4int G4ExcitedXiConstructor::encodingOffset[] = {
309 0, 20000, 10000, 30000, 10000
310};
311
312const G4double G4ExcitedXiConstructor::bRatio[ G4ExcitedXiConstructor::NStates ][ G4ExcitedXiConstructor::NumberOfDecayModes] =
313{
314 { 0.98, 0.02, 0.0, 0.0},
315 { 0.10, 0.0, 0.70, 0.20},
316 { 0.15, 0.0, 0.70, 0.15},
317 { 0.25, 0.0, 0.50, 0.25},
318 { 0.10, 0.0, 0.20, 0.70}
319};
320
321
322
323
324
325
326
327
328
329
330
Note: See TracBrowser for help on using the repository browser.