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