Geant4  10.03
G4ResonanceNames.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 #include "globals.hh"
27 #include "G4ResonanceNames.hh"
28 #include "G4VCrossSectionSource.hh"
29 #include "G4KineticTrack.hh"
30 #include "G4CrossSectionVector.hh"
31 #include "G4ParticleDefinition.hh"
33 #include "G4ParticleTable.hh"
34 #include "G4PionPlus.hh"
35 
37 {
38  // Excited N resonances
39 
40  nameNstar.push_back("N(1440)+");
41  nameNstar.push_back("N(1440)0");
42  nameNstar.push_back("N(1520)+");
43  nameNstar.push_back("N(1520)0");
44  nameNstar.push_back("N(1535)+");
45  nameNstar.push_back("N(1535)0");
46  nameNstar.push_back("N(1650)+");
47  nameNstar.push_back("N(1650)0");
48  nameNstar.push_back("N(1675)+");
49  nameNstar.push_back("N(1675)0");
50  nameNstar.push_back("N(1680)+");
51  nameNstar.push_back("N(1680)0");
52  nameNstar.push_back("N(1700)+");
53  nameNstar.push_back("N(1700)0");
54  nameNstar.push_back("N(1710)+");
55  nameNstar.push_back("N(1710)0");
56  nameNstar.push_back("N(1720)+");
57  nameNstar.push_back("N(1720)0");
58  nameNstar.push_back("N(1900)+");
59  nameNstar.push_back("N(1900)0");
60  nameNstar.push_back("N(1990)+");
61  nameNstar.push_back("N(1990)0");
62  nameNstar.push_back("N(2090)+");
63  nameNstar.push_back("N(2090)0");
64  nameNstar.push_back("N(2190)+");
65  nameNstar.push_back("N(2190)0");
66  nameNstar.push_back("N(2220)+");
67  nameNstar.push_back("N(2220)0");
68  nameNstar.push_back("N(2250)+");
69  nameNstar.push_back("N(2250)0");
70 
71 
72  // Delta
73 
74  G4String d1232Minus("delta-");
75  G4String d1232Zero("delta0");
76  G4String d1232Plus("delta+");
77  G4String d1232PlusPlus("delta++");
78  nameDelta.push_back(d1232Minus);
79  nameDelta.push_back(d1232Zero);
80  nameDelta.push_back(d1232Plus);
81  nameDelta.push_back(d1232PlusPlus);
82 
83 
84  // Excited Delta resonances
85 
86  nameDeltastar.push_back("delta(1600)+");
87  nameDeltastar.push_back("delta(1600)++");
88  nameDeltastar.push_back("delta(1600)-");
89  nameDeltastar.push_back("delta(1600)0");
90  nameDeltastar.push_back("delta(1620)+");
91  nameDeltastar.push_back("delta(1620)++");
92  nameDeltastar.push_back("delta(1620)-");
93  nameDeltastar.push_back("delta(1620)0");
94  nameDeltastar.push_back("delta(1700)+");
95  nameDeltastar.push_back("delta(1700)++");
96  nameDeltastar.push_back("delta(1700)-");
97  nameDeltastar.push_back("delta(1700)0");
98  nameDeltastar.push_back("delta(1900)+");
99  nameDeltastar.push_back("delta(1900)++");
100  nameDeltastar.push_back("delta(1900)-");
101  nameDeltastar.push_back("delta(1900)0");
102  nameDeltastar.push_back("delta(1905)+");
103  nameDeltastar.push_back("delta(1905)++");
104  nameDeltastar.push_back("delta(1905)-");
105  nameDeltastar.push_back("delta(1905)0");
106  nameDeltastar.push_back("delta(1910)+");
107  nameDeltastar.push_back("delta(1910)++");
108  nameDeltastar.push_back("delta(1910)-");
109  nameDeltastar.push_back("delta(1910)0");
110  nameDeltastar.push_back("delta(1920)+");
111  nameDeltastar.push_back("delta(1920)++");
112  nameDeltastar.push_back("delta(1920)-");
113  nameDeltastar.push_back("delta(1920)0");
114  nameDeltastar.push_back("delta(1930)+");
115  nameDeltastar.push_back("delta(1930)++");
116  nameDeltastar.push_back("delta(1930)-");
117  nameDeltastar.push_back("delta(1930)0");
118  nameDeltastar.push_back("delta(1950)+");
119  nameDeltastar.push_back("delta(1950)++");
120  nameDeltastar.push_back("delta(1950)-");
121  nameDeltastar.push_back("delta(1950)0");
122 
123 
124  // Lambda
125 
126  nameLambda.push_back("lambda");
127  nameLambda.push_back("lambda(1405)");
128  nameLambda.push_back("lambda(1520)");
129  nameLambda.push_back("lambda(1600)");
130  nameLambda.push_back("lambda(1670)");
131  nameLambda.push_back("lambda(1690)");
132  nameLambda.push_back("lambda(1800)");
133  nameLambda.push_back("lambda(1810)");
134  nameLambda.push_back("lambda(1820)");
135  nameLambda.push_back("lambda(1830)");
136  nameLambda.push_back("lambda(1890)");
137  nameLambda.push_back("lambda(2100)");
138  nameLambda.push_back("lambda(2110)");
139 
140 
141  // Sigma
142 
143  nameSigma.push_back("sigma(1385)+");
144  nameSigma.push_back("sigma(1385)-");
145  nameSigma.push_back("sigma(1385)0");
146  nameSigma.push_back("sigma(1660)+");
147  nameSigma.push_back("sigma(1660)-");
148  nameSigma.push_back("sigma(1660)0");
149  nameSigma.push_back("sigma(1670)+");
150  nameSigma.push_back("sigma(1670)-");
151  nameSigma.push_back("sigma(1670)0");
152  nameSigma.push_back("sigma(1750)+");
153  nameSigma.push_back("sigma(1750)-");
154  nameSigma.push_back("sigma(1750)0");
155  nameSigma.push_back("sigma(1775)+");
156  nameSigma.push_back("sigma(1775)-");
157  nameSigma.push_back("sigma(1775)0");
158  nameSigma.push_back("sigma(1915)+");
159  nameSigma.push_back("sigma(1915)-");
160  nameSigma.push_back("sigma(1915)0");
161  nameSigma.push_back("sigma(1940)+");
162  nameSigma.push_back("sigma(1940)-");
163  nameSigma.push_back("sigma(1940)0");
164  nameSigma.push_back("sigma(2030)+");
165  nameSigma.push_back("sigma(2030)-");
166  nameSigma.push_back("sigma(2030)0");
167 
168 
169  // Xi
170 
171  nameXi.push_back("xi(1530)-");
172  nameXi.push_back("xi(1530)0");
173  nameXi.push_back("xi(1690)-");
174  nameXi.push_back("xi(1690)0");
175  nameXi.push_back("xi(1820)-");
176  nameXi.push_back("xi(1820)0");
177  nameXi.push_back("xi(1950)-");
178  nameXi.push_back("xi(1950)0");
179  nameXi.push_back("xi(2030)-");
180  nameXi.push_back("xi(2030)0");
181 
182 
183  G4ShortLivedConstructor ShortLived;
184  ShortLived.ConstructParticle();
186 
187  size_t i;
188 
189  // Fill a map with the lowest resonance for each category
190  for (i=0; i<nameNstar.size(); i++)
191  {
192  lowResMap[nameNstar[i]] = particleTable->FindParticle("N(1440)0");
193  }
194 
195  for (i=0; i<nameDeltastar.size(); i++)
196  {
197  lowResMap[nameDeltastar[i]] = particleTable->FindParticle("delta0");
198  }
199 
200  for (i=0; i<nameDelta.size(); i++)
201  {
202  lowResMap[nameDelta[i]] = particleTable->FindParticle("delta0");
203  }
204 
205  for (i=0; i<nameLambda.size(); i++)
206  {
207  lowResMap[nameLambda[i]] = particleTable->FindParticle("lambda");
208  }
209 
210  for (i=0; i<nameSigma.size(); i++)
211  {
212  lowResMap[nameSigma[i]] = particleTable->FindParticle("sigma0");
213  }
214 
215  shortMap["N(1440)0"] = "N(1440)";
216  shortMap["N(1440)+"] = "N(1440)";
217 
218  shortMap["N(1520)0"] = "N(1520)";;
219  shortMap["N(1520)+"] = "N(1520)";
220 
221  shortMap["N(1535)0"] = "N(1535)";
222  shortMap["N(1535)+"] = "N(1535)";
223 
224  shortMap["N(1650)0"] = "N(1650)";
225  shortMap["N(1650)+"] = "N(1650)";
226 
227  shortMap["N(1675)0"] = "N(1675)";
228  shortMap["N(1675)+"] = "N(1675)";
229 
230  shortMap["N(1680)0"] = "N(1680)";
231  shortMap["N(1680)+"] = "N(1680)";
232 
233  shortMap["N(1700)0"] = "N(1700)";
234  shortMap["N(1700)+"] = "N(1700)";
235 
236  shortMap["N(1710)0"] = "N(1710)";
237  shortMap["N(1710)+"] = "N(1710)";
238 
239  shortMap["N(1720)0"] = "N(1720)";
240  shortMap["N(1720)+"] = "N(1720)";
241 
242  shortMap["N(1900)0"] = "N(1900)";
243  shortMap["N(1900)+"] = "N(1900)";
244 
245  shortMap["N(1990)0"] = "N(1990)";
246  shortMap["N(1990)+"] = "N(1990)";
247 
248  shortMap["N(2090)0"] = "N(2090)";
249  shortMap["N(2090)+"] = "N(2090)";
250 
251  shortMap["N(2190)0"] = "N(2190)";
252  shortMap["N(2190)+"] = "N(2190)";
253 
254  shortMap["N(2220)0"] = "N(2220)";
255  shortMap["N(2220)+"] = "N(2220)";
256 
257  shortMap["N(2250)0"] = "N(2250)";
258  shortMap["N(2250)+"] = "N(2250)";
259 
260 
261  // Excited Delta
262 
263  shortMap["delta(1600)-"] = "delta(1600)";
264  shortMap["delta(1600)0"] = "delta(1600)";
265  shortMap["delta(1600)+"] = "delta(1600)";
266  shortMap["delta(1600)++"] = "delta(1600)";
267 
268  shortMap["delta(1620)-"] = "delta(1620)";
269  shortMap["delta(1620)0"] = "delta(1620)";
270  shortMap["delta(1620)+"] = "delta(1620)";
271  shortMap["delta(1620)++"] = "delta(1620)";
272 
273  shortMap["delta(1700)-"] = "delta(1700)";
274  shortMap["delta(1700)0"] = "delta(1700)";
275  shortMap["delta(1700)+"] = "delta(1700)";
276  shortMap["delta(1700)++"] = "delta(1700)";
277 
278  shortMap["delta(1900)-"] = "delta(1900)";
279  shortMap["delta(1900)0"] = "delta(1900)";
280  shortMap["delta(1900)+"] = "delta(1900)";
281  shortMap["delta(1900)++"] = "delta(1900)";
282 
283  shortMap["delta(1905)-"] = "delta(1905)";
284  shortMap["delta(1905)0"] = "delta(1905)";
285  shortMap["delta(1905)+"] = "delta(1905)";
286  shortMap["delta(1905)++"] = "delta(1905)";
287 
288  shortMap["delta(1910)-"] = "delta(1910)";
289  shortMap["delta(1910)0"] = "delta(1910)";
290  shortMap["delta(1910)+"] = "delta(1910)";
291  shortMap["delta(1910)++"] = "delta(1910)";
292 
293  shortMap["delta(1920)-"] = "delta(1920)";
294  shortMap["delta(1920)0"] = "delta(1920)";
295  shortMap["delta(1920)+"] = "delta(1920)";
296  shortMap["delta(1920)++"] = "delta(1920)";
297 
298  shortMap["delta(1930)-"] = "delta(1930)";
299  shortMap["delta(1930)0"] = "delta(1930)";
300  shortMap["delta(1930)+"] = "delta(1930)";
301  shortMap["delta(1930)++"] = "delta(1930)";
302 
303  shortMap["delta(1950)-"] = "delta(1950)";
304  shortMap["delta(1950)0"] = "delta(1950)";
305  shortMap["delta(1950)+"] = "delta(1950)";
306  shortMap["delta(1950)++"] = "delta(1950)";
307 
308  // Delta
309 
310  shortMap["delta-"] = "delta";
311  shortMap["delta0"] = "delta";
312  shortMap["delta+"] = "delta";
313  shortMap["delta++"] = "delta";
314 
315 }
316 
317 
319 { }
320 
321 
323 {
324  return(this == (G4ResonanceNames*) &right);
325 }
326 
327 
329 {
330  return (this != (G4ResonanceNames*) &right);
331 }
332 
333 
335 {
336  // Cut, from UrQMD (reference still to be detailed)
337  static const G4double coeff = 0.001;
338 
339  G4double lowMass = 0.;
340 
341  G4ParticleDefinition* def = 0;
342 
343  if (lowResMap.find(name) != lowResMap.end())
344  {
345  def = lowResMap[name];
346  }
347  else
348  {
350  def = particleTable->FindParticle(name);
351  }
352  if (def != 0)
353  {
355  lowMass = (1. + coeff) * def->GetPDGMass() + pion->GetPDGMass();
356  }
357  else
358  {
359  G4cout << "G4ResonanceNames::MinMass - " << name << " not found" << G4endl;
360  throw G4HadronicException(__FILE__, __LINE__, "G4ResonanceNames::MinMass - resonance name not found");
361  }
362  return lowMass;
363 }
364 
365 
367 {
368  G4String shortName = "";
369  if (shortMap.find(name) != shortMap.end())
370  {
371  shortName = shortMap[name];
372  }
373  return shortName;
374 }
std::vector< G4String > nameXi
G4bool operator==(const G4ResonanceNames &right) const
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
G4bool pion(G4int ityp)
std::map< G4String, G4String, std::less< G4String > > shortMap
std::vector< G4String > nameDeltastar
const char * name(G4int ptype)
G4GLOB_DLL std::ostream G4cout
std::map< G4String, G4ParticleDefinition *, std::less< G4String > > lowResMap
bool G4bool
Definition: G4Types.hh:79
std::vector< G4String > nameSigma
static G4PionPlus * PionPlusDefinition()
Definition: G4PionPlus.cc:93
G4bool operator!=(const G4ResonanceNames &right) const
std::vector< G4String > nameLambda
G4double GetPDGMass() const
static G4ParticleTable * GetParticleTable()
G4double MinMass(const G4String &name)
std::vector< G4String > nameNstar
std::vector< G4String > nameDelta
#define G4endl
Definition: G4ios.hh:61
const G4String ShortName(const G4String &name)
double G4double
Definition: G4Types.hh:76