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

Last change on this file since 1340 was 1340, checked in by garnier, 14 years ago

update ti head

File size: 9.5 KB
Line 
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: G4ExcitedXiConstructor.cc,v 1.9 2010/10/01 02:41:44 kurasige Exp $
28// GEANT4 tag $Name: particles-V09-03-15 $
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
286G4double G4ExcitedXiConstructor::GetMass(G4int iState, G4int iso3)
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
295G4double G4ExcitedXiConstructor::GetWidth(G4int iState, G4int iso3)
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
329const G4double G4ExcitedXiConstructor::bRatio[ G4ExcitedXiConstructor::NStates ][ G4ExcitedXiConstructor::NumberOfDecayModes] = 
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
Note: See TracBrowser for help on using the repository browser.