ROOTPWA
particleData.cc
Go to the documentation of this file.
1 #include <cstdlib>
2 #include <cstring>
3 
4 #include "particleData.h"
5 
6 
7 using namespace std;
8 
9 
13 
14 
15 void
16 particleData::_init(const string& nm,
17  double m,
18  double w,
19  int i,
20  int g,
21  int j,
22  int p,
23  int c)
24 {
25  _name = nm;
26  _mass = m;
27  _width = w;
28  _isospin = i;
29  _gparity = g;
30  _spin = j;
31  _parity = p;
32  _cparity = c;
33 }
34 
35 
37 {
38  _particle_data_count++;
39  if (_particle_data_debug)
40  cerr << "in particleData(" << this << ")::particleData()\t_particle_data_count = "
41  << _particle_data_count << endl;
42  _init("", 0.0, 0.0, 0, 0, 0, 0, 0);
43 }
44 
45 
47 {
48  _particle_data_count++;
49  if (_particle_data_debug)
50  cerr << "in particleData(" << this << ")::particleData(const particleData& p="
51  << p.Name() << ")\t_particle_data_count = " << _particle_data_count << endl;
52  _init(p._name, p._mass, p._width, p._isospin, p._gparity, p._spin, p._parity, p._cparity);
53 }
54 
55 
57  double m,
58  double w,
59  int i,
60  int g,
61  int j,
62  int p,
63  int c)
64 {
65  _particle_data_count++;
66  if (_particle_data_debug)
67  cerr << "in particleData(" << this << ")::"
68  << "particleData(string ,double, double, int, int, int, int, int)"
69  << "\t_particle_data_count = " << _particle_data_count << endl;
70  _init(n, m, w, i, g, j, p, c);
71 }
72 
73 
76 {
77  if (_particle_data_debug)
78  cerr << "in particleData(" << this << ")::operator=(const particleData&("
79  << &p << ")=" << p.Name() << ")\t_particle_data_count = " << _particle_data_count << endl;
80  _init(p._name, p._mass, p._width, p._isospin, p._gparity, p._spin, p._parity, p._cparity);
81  return(*this);
82 }
83 
84 
86 {
87  _particle_data_count--;
88  if (_particle_data_debug)
89  cerr << "in particleData(" << this << ")=" << this->Name()
90  << ")::~particleData()\t_particle_data_count = " << _particle_data_count << endl;
91 }
92 
93 
94 string
96 {
97  return(this->_name);
98 }
99 
100 
102 particleData::setName(const string& nm)
103 {
104  this->_name = nm;
105  return(*this);
106 }
107 
108 
109 void
111 {
112  ptab();
113  cout << this->_name << ":\tmass=" << this->_mass << "\twidth=" << this->_width
114  << "\t" << this->_isospin << getsign(this->_gparity)
115  << "(" << this->_spin << getsign(this->_parity) << getsign(this->_cparity) << ")"
116  << endl;
117 }
118 
119 
120 void
122 {
123  cout << this->_name << "\t"
124  << this->_mass << "\t"
125  << this->_width << "\t"
126  << this->_isospin << "\t"
127  << this->_gparity << "\t"
128  << this->_spin << "\t"
129  << this->_parity << "\t"
130  << this->_cparity << endl;
131 }
132 
133 
134 void
136  tableEntry* n)
137 {
138  particle = p;
139  nextparticle = n;
140 }
141 
142 
144  tableEntry* n)
145 {
146  _init(p, n);
147 }
148 
149 
151 {
152  _init(te.particle, te.nextparticle);
153 }
154 
155 
157 { }
158 
159 
160 tableEntry&
162 {
163  _init(te.particle, te.nextparticle);
164  return(*this);
165 }
166 
167 
170 {
171  return particle;
172 }
173 
174 
175 tableEntry*
177 {
178  return nextparticle;
179 }
180 
181 
182 void
184 {
185  particle.print();
186 }
187 
188 
189 void
191 {
192  particle.dump();
193 }
194 
195 
197 {
198  head = p;
199 }
200 
201 
202 void
204 {
205  insert(particleData("e", 0.00051, 0.0, 1, 0, 1, +1, 0));
206  insert(particleData("gamma", 0.0, 0, 0, 0, 2, -1, -1));
207  insert(particleData("pi", 0.13957018, 0, 2, -1, 0, -1, +1));
208  insert(particleData("pi0", 0.1349766, 0, 2, -1, 0, -1, +1));
209  insert(particleData("eta", 0.54730, 0.00000118, 0, +1, 0, -1, +1));
210  insert(particleData("sigma", 0.800, 0.800, 0, +1, 0, +1, +1));
211  insert(particleData("rho(770)", 0.7693, 0.1502, 2, +1, 2, -1, -1));
212  insert(particleData("omega(782)", 0.78257, 0.00844, 0, -1, 2, -1, -1));
213  insert(particleData("eta'(958)", 0.95778, 0.000202, 0, +1, 0, -1, +1));
214  insert(particleData("f0(980)", 0.980, 0.070, 0, +1, 0, +1, +1));
215  insert(particleData("a0(980)", 0.9931, 0.071, 2, -1, 0, +1, +1));
216  insert(particleData("phi(1020)", 1.019417, 0.004468, 0, -1, 2, -1, -1));
217  insert(particleData("h1(1170)", 1.170, 0.360, 0, -1, 2, +1, -1));
218  insert(particleData("b1(1235)", 1.229, 0.142, 2, +1, 2, +1, -1));
219  insert(particleData("a1(1269)", 1.230, 0.425, 2, -1, 2, +1, +1));
220  insert(particleData("f2(1270)", 1.2754, 0.1851, 0, +1, 4, +1, +1));
221  insert(particleData("f1(1285)", 1.2819, 0.024, 0, +1, 2, +1, +1));
222  insert(particleData("eta(1295)", 1.297, 0.053, 0, +1, 0, -1, +1));
223  insert(particleData("pi(1300)", 1.300, 0.400, 2, -1, 0, -1, +1));
224  insert(particleData("a2(1320)", 1.318, 0.107, 2, -1, 4, +1, +1));
225  insert(particleData("f0(1370)", 1.350, 0.350, 0, +1, 0, +1, +1));
226  insert(particleData("f1(1420)", 1.4263, 0.0555, 0, +1, 2, +1, +1));
227  insert(particleData("omega(1420)", 1.419, 0.174, 0, -1, 2, -1, -1));
228  insert(particleData("eta(1440)", 1.420, 0.060, 0, +1, 0, -1, +1));
229  insert(particleData("etaL(1405)", 1.405, 0.056, 0, +1, 0, -1, +1));
230  insert(particleData("etaH(1475)", 1.475, 0.081, 0, +1, 0, -1, +1));
231  insert(particleData("a0(1450)", 1.474, 0.265, 2, -1, 0, +1, +1));
232  insert(particleData("rho(1450)", 1.465, 0.310, 2, +1, 2, -1, -1));
233  insert(particleData("f0(1500)", 1.500, 0.112, 0, +1, 0, +1, +1));
234  insert(particleData("f1(1510)", 1.510, 0.073, 0, +1, 2, +1, +1));
235  insert(particleData("f2'(1525)", 1.525, 0.076, 0, +1, 4, +1, +1));
236  insert(particleData("omega(1650)", 1.649, 0.220, 0, -1, 2, -1, -1));
237  insert(particleData("omega3(1670)",1.667, 0.168, 0, -1, 6, -1, -1));
238  insert(particleData("pi2(1670)", 1.670, 0.259, 2, -1, 4, -1, +1));
239  insert(particleData("phi(1680)", 1.680, 0.150, 0, -1, 2, -1, -1));
240  insert(particleData("rho3(1690)", 1.691, 0.161, 2, +1, 6, -1, -1));
241  insert(particleData("rho(1700)", 1.700, 0.240, 2, +1, 2, -1, -1));
242  insert(particleData("f0(1700)", 1.715, 0.125, 0, +1, 0, +1, +1));
243  insert(particleData("pi(1800)", 1.801, 0.210, 2, -1, 0, -1, +1));
244  insert(particleData("phi3(1850)", 1.854, 0.087, 0, -1, 6, -1, -1));
245  insert(particleData("f2(2010)", 2.011, 0.202, 0, +1, 4, +1, +1));
246  insert(particleData("a4(2040)", 2.014, 0.361, 2, -1, 8, +1, +1));
247  insert(particleData("f4(2050)", 2.034, 0.222, 0, +1, 8, +1, +1));
248  insert(particleData("f2(2300)", 2.297, 0.149, 0, +1, 4, +1, +1));
249  insert(particleData("f2(2340)", 2.339, 0.319, 0, +1, 4, +1, +1));
250 
251  insert(particleData("K", 0.493677, 0.0, 1, 0, 0, -1, 0));
252  insert(particleData("K0", 0.497672, 0.0, 1, 0, 0, -1, 0));
253  insert(particleData("Kstar(892)", 0.89166, 0.0508, 1, 0, 2, -1, 0));
254  insert(particleData("Kstar(892)0", 0.8961, 0.0507, 1, 0, 2, -1, 0));
255  insert(particleData("K1(1270)", 1.273, 0.090, 1, 0, 2, +1, 0));
256  insert(particleData("K1(1400)", 1.402, 0.174, 1, 0, 2, +1, 0));
257  insert(particleData("Kstar(1410)", 1.414, 0.232, 1, 0, 2, -1, 0));
258  insert(particleData("Kstar0(1430)", 1.412, 0.294, 1, 0, 0, +1, 0));
259  insert(particleData("Kstar2(1430)", 1.4256, 0.0985, 1, 0, 4, +1, 0));
260  insert(particleData("Kstar2(1430)0", 1.4324, 0.109, 1, 0, 4, +1, 0));
261  insert(particleData("Kstar(1680)", 1.717, 0.322, 1, 0, 2, -1, 0));
262  insert(particleData("K2(1770)", 1.773, 0.186, 1, 0, 4, -1, 0));
263  insert(particleData("Kstar3(1780)", 1.776, 0.159, 1, 0, 6, -1, 0));
264  insert(particleData("K2(1820)", 1.816, 0.276, 1, 0, 4, -1, 0));
265  insert(particleData("Kstar4(2045)", 2.045, 0.198, 1, 0, 8, +1, 0));
266 
267  insert(particleData("p", 0.938272, 0.0, 1, 0, 1, +1, 0));
268  insert(particleData("pbar", 0.938272, 0.0, 1, 0, 1, +1, 0));
269  insert(particleData("n", 0.93956533, 0.0, 1, 0, 1, +1, 0));
270  insert(particleData("d", 1.875612762, 0.0, 0, +1, 0, +1, 1));
271  insert(particleData("N(1440)", 1.440, 0.350, 1, 0, 1, +1, 0));
272  insert(particleData("N(1520)", 1.520, 0.120, 1, 0, 3, -1, 0));
273  insert(particleData("N(1535)", 1.535, 0.150, 1, 0, 1, -1, 0));
274  insert(particleData("N(1650)", 1.650, 0.150, 1, 0, 1, -1, 0));
275  insert(particleData("N(1675)", 1.675, 0.150, 1, 0, 5, -1, 0));
276  insert(particleData("N(1680)", 1.680, 0.130, 1, 0, 5, +1, 0));
277  insert(particleData("N(1700)", 1.700, 0.100, 1, 0, 3, -1, 0));
278  insert(particleData("N(1710)", 1.710, 0.100, 1, 0, 1, +1, 0));
279  insert(particleData("N(1720)", 1.720, 0.150, 1, 0, 3, +1, 0));
280  insert(particleData("N(2190)", 2.190, 0.450, 1, 0, 7, -1, 0));
281  insert(particleData("N(2220)", 2.220, 0.400, 1, 0, 9, +1, 0));
282  insert(particleData("N(2250)", 2.250, 0.400, 1, 0, 9, -1, 0));
283  insert(particleData("N(2600)", 2.600, 0.650, 1, 0, 11, -1, 0));
284 
285  insert(particleData("Delta(1232)", 1.232, 0.120, 3, 0, 3, +1, 0));
286  insert(particleData("Delta(1600)", 1.600, 0.350, 3, 0, 3, +1, 0));
287  insert(particleData("Delta(1620)", 1.600, 0.150, 3, 0, 1, -1, 0));
288  insert(particleData("Delta(1700)", 1.600, 0.300, 3, 0, 3, -1, 0));
289  insert(particleData("Delta(1905)", 1.905, 0.350, 3, 0, 5, +1, 0));
290  insert(particleData("Delta(1910)", 1.910, 0.250, 3, 0, 1, +1, 0));
291  insert(particleData("Delta(1920)", 1.920, 0.200, 3, 0, 3, +1, 0));
292  insert(particleData("Delta(1930)", 1.930, 0.350, 3, 0, 5, -1, 0));
293  insert(particleData("Delta(1950)", 1.950, 0.300, 3, 0, 7, +1, 0));
294  insert(particleData("Delta(2420)", 2.420, 0.400, 3, 0, 11, +1, 0));
295 
296  insert(particleData("lambda", 1.115684, 0.0, 0, 0, 1, +1, 0));
297 }
298 
299 
300 void
301 particleDataTable::initialize(const char* PDTfile)
302 {
303  string name;
304  double mass, width;
305  int isospin, gparity, spin, parity,cparity;
306  ifstream ifs(PDTfile);
307 
308  while (!(ifs >> name).eof()) {
309  ifs >> mass;
310  ifs >> width;
311  ifs >> isospin;
312  ifs >> gparity;
313  ifs >> spin;
314  ifs >> parity;
315  ifs >> cparity;
316  insert(particleData(name, mass, width, isospin, gparity, spin, parity, cparity));
317  }
318 }
319 
320 
321 void
323 {
324  head = new tableEntry(p, head);
325 }
326 
327 
328 void
330 {
331  tableEntry* te = this->head;
332  while (te != NULL) {
333  te->print();
334  te = te->next();
335  }
336 }
337 
338 
339 void
341 {
342  tableEntry* te = this->head;
343  while (te != NULL) {
344  te->dump();
345  te = te->next();
346  }
347 }
348 
349 
350 int
352 {
353  int len = 0;
354  tableEntry* te = this->head;
355  while (te != NULL) {
356  len++;
357  te = te->next();
358  }
359  return(len);
360 }
361 
362 
363 char**
365 {
366  int particleno = 0;
367  int listlen = ListLen();
368  particleData p;
369  char** list;
370  list = (char**) malloc(listlen * sizeof(char*));
371  tableEntry *te = this->head;
372  while (te != NULL) {
373  p = te->Particle();
374  list[particleno] = (char*) malloc(((p.Name().length()) + 1) * sizeof(char));
375  strcpy(list[particleno], p.Name().c_str());
376  // p.Name().to_char_type(list[particleno]);
377  particleno++;
378  te = te->next();
379  }
380  return(list);
381 }
382 
383 
385 particleDataTable::get(const string& name) const
386 {
387  tableEntry* te = this->head;
388  while (te != NULL) {
389  if ((te->Particle()).Name() == name)
390  return te->Particle();
391  te = te->next();
392  }
393  return particleData();
394 }
395 
396 
397 double
398 particleDataTable::mass(const string& name) const
399 {
400  return this->get(name).Mass();
401 }
402 
403 
404 double
405 particleDataTable::width(const string& name) const
406 {
407  return this->get(name).Width();
408 }