Geant4  9.6.p02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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"
41 #include "G4ParticleDefinition.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 
88 G4DecayTable* 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 
111 G4DecayTable* 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 
152 G4DecayTable* 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 
211 G4DecayTable* 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 
304 const char* G4ExcitedXiConstructor::name[] = {
305  "xi(1530)", "xi(1690)", "xi(1820)", "xi(1950)", "xi(2030)"
306 };
307 
308 const G4double G4ExcitedXiConstructor::mass[] = {
309  1.5318*GeV, 1.690*GeV, 1.823*GeV, 1.950*GeV, 2.025*GeV
310 };
311 
312 const G4double G4ExcitedXiConstructor::width[] = {
313  9.1*MeV, 50.0*MeV, 24.0*MeV, 60.0*MeV, 20.0*MeV
314 };
315 
316 const G4int G4ExcitedXiConstructor::iSpin[] = {
317  3, 3, 3, 3, 5
318 };
319 
320 const G4int G4ExcitedXiConstructor::iParity[] = {
321  +1, +1, -1, -1, +1
322 };
323 
324 
325 const 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