AliRoot Core  ee782a0 (ee782a0)
AliPDG.cxx
Go to the documentation of this file.
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  * *
4  * Author: The ALICE Off-line Project. *
5  * Contributors are mentioned in the code where appropriate. *
6  * *
7  * Permission to use, copy, modify and distribute this software and its *
8  * documentation strictly for non-commercial purposes is hereby granted *
9  * without fee, provided that the above copyright notice appears in all *
10  * copies and that both the copyright notice and this permission notice *
11  * appear in the supporting documentation. The authors make no claims *
12  * about the suitability of this software for any purpose. It is *
13  * provided "as is" without express or implied warranty. *
14  **************************************************************************/
15 
16 /* $Id$ */
17 
18 // Class to encapsulate the ALICE updates to TDatabasePDG.h
19 // Can be used by TGeant3 and TGeant4
20 // It contains also the constants for the PDG particle IDs.
21 // Should evolve towards dynamical loading from external data base.
22 // Comments to: andreas.morsch@cern.ch
23 
24 #include "AliPDG.h"
25 #include "TDatabasePDG.h"
26 
27 ClassImp(AliPDG)
28 
29 
30 
31 void AliPDG::AddParticlesToPdgDataBase()
32 {
33 
34 //
35 // Add particles to the PDG data base
36 //
37 
38  static Bool_t bAdded = kFALSE;
39  // Check if already called
40  if(bAdded)return;
41  bAdded = true;
42 
43  TDatabasePDG *pdgDB = TDatabasePDG::Instance();
44  const Int_t kspe=50000000;
45 
46  // PDG nuclear states are 10-digit numbers
47  // 10LZZZAAAI e.g. deuteron is
48  // 1000010020
49  const Int_t kion=1000000000;
50 
51 /*
52  const Double_t kAu2Gev=0.9314943228;
53 */
54 
55  const Double_t khSlash = 1.0545726663e-27;
56  const Double_t kErg2Gev = 1/1.6021773349e-3;
57  const Double_t khShGev = khSlash*kErg2Gev;
58  const Double_t kYear2Sec = 3600*24*365.25;
59 
60 //
61 // Bottom mesons
62 // mass and life-time from PDG
63 //
64  pdgDB->AddParticle("Upsilon(3S)","Upsilon(3S)",10.3552,kTRUE,
65  0,1,"Bottonium",200553);
66 
67 // QCD diffractive states
68  pdgDB->AddParticle("rho_diff0","rho_diff0",0,kTRUE,
69  0,0,"QCD diffr. state",9900110);
70  pdgDB->AddParticle("pi_diffr+","pi_diffr+",0,kTRUE,
71  0,1,"QCD diffr. state",9900210);
72  pdgDB->AddParticle("omega_di","omega_di",0,kTRUE,
73  0,0,"QCD diffr. state",9900220);
74  pdgDB->AddParticle("phi_diff","phi_diff",0,kTRUE,
75  0,0,"QCD diffr. state",9900330);
76  pdgDB->AddParticle("J/psi_di","J/psi_di",0,kTRUE,
77  0,0,"QCD diffr. state",9900440);
78  pdgDB->AddParticle("n_diffr0","n_diffr0",0,kTRUE,
79  0,0,"QCD diffr. state",9902110);
80  pdgDB->AddParticle("p_diffr+","p_diffr+",0,kTRUE,
81  0,1,"QCD diffr. state",9902210);
82 
83 // From Herwig
84  pdgDB->AddParticle("PSID ", " ", 3.7699, kFALSE, 0.0, 0, "meson", 30443);
85 
86  pdgDB->AddParticle("A_00 ", " ", 0.9960, kFALSE, 0.0, 0, "meson", 9000111);
87  pdgDB->AddParticle("A_0+ ", " ", 0.9960, kFALSE, 0.0,+3, "meson", 9000211);
88  pdgDB->AddParticle("A_0- ", " ", 0.9960, kFALSE, 0.0,-3, "meson", -9000211);
89 
90  //pdgDB->AddParticle("F0P0 ", " ", 0.9960, kFALSE, 0.0, 0, "meson", 9010221);
91 
92  pdgDB->AddParticle("KDL_2+ ", " ", 1.773, kFALSE, 0.0,+3, "meson", 10325);
93  pdgDB->AddParticle("KDL_2- ", " ", 1.773, kFALSE, 0.0,-3, "meson", -10325);
94 
95  pdgDB->AddParticle("KDL_20 ", " ", 1.773, kFALSE, 0.0, 0, "meson", 10315);
96  pdgDB->AddParticle("KDL_2BR0", " ", 1.773, kFALSE, 0.0, 0, "meson", -10315);
97 
98  pdgDB->AddParticle("PI_2+ ", " ", 1.670, kFALSE, 0.0,+3, "meson", 10215);
99  pdgDB->AddParticle("PI_2- ", " ", 1.670, kFALSE, 0.0,-3, "meson", -10215);
100  pdgDB->AddParticle("PI_20 ", " ", 1.670, kFALSE, 0.0, 0, "meson", 10115);
101 
102 
103  pdgDB->AddParticle("KD*+ ", " ", 1.717, kFALSE, 0.0,+3, "meson", 30323);
104  pdgDB->AddParticle("KD*- ", " ", 1.717, kFALSE, 0.0,-3, "meson", -30323);
105 
106  pdgDB->AddParticle("KD*0 ", " ", 1.717, kFALSE, 0.0, 0, "meson", 30313);
107  pdgDB->AddParticle("KDBR*0 ", " ", 1.717, kFALSE, 0.0, 0, "meson", -30313);
108 
109  pdgDB->AddParticle("RHOD+ ", " ", 1.700, kFALSE, 0.0,+3, "meson", 30213);
110  pdgDB->AddParticle("RHOD- ", " ", 1.700, kFALSE, 0.0,-3, "meson", -30213);
111  pdgDB->AddParticle("RHOD0 ", " ", 1.700, kFALSE, 0.0, 0, "meson", 30113);
112 
113  pdgDB->AddParticle("ETA_2(L)", " ", 1.632, kFALSE, 0.0, 0, "meson", 10225);
114  pdgDB->AddParticle("ETA_2(H)", " ", 1.854, kFALSE, 0.0, 0, "meson", 10335);
115  pdgDB->AddParticle("OMEGA(H)", " ", 1.649, kFALSE, 0.0, 0, "meson", 30223);
116 
117 
118  pdgDB->AddParticle("KDH_2+ ", " ", 1.816, kFALSE, 0.0,+3, "meson", 20325);
119  pdgDB->AddParticle("KDH_2- ", " ", 1.816, kFALSE, 0.0,-3, "meson", -20325);
120 
121  pdgDB->AddParticle("KDH_20 ", " ", 1.816, kFALSE, 0.0, 0, "meson", 20315);
122  pdgDB->AddParticle("KDH_2BR0", " ", 1.816, kFALSE, 0.0, 0, "meson", -20315);
123 
124 
125  pdgDB->AddParticle("KD_3+ ", " ", 1.773, kFALSE, 0.0,+3, "meson", 327);
126  pdgDB->AddParticle("KD_3- ", " ", 1.773, kFALSE, 0.0,-3, "meson", -327);
127 
128  pdgDB->AddParticle("KD_30 ", " ", 1.773, kFALSE, 0.0, 0, "meson", 317);
129  pdgDB->AddParticle("KD_3BR0 ", " ", 1.773, kFALSE, 0.0, 0, "meson", -317);
130 
131  pdgDB->AddParticle("RHO_3+ ", " ", 1.691, kFALSE, 0.0,+3, "meson", 217);
132  pdgDB->AddParticle("RHO_3- ", " ", 1.691, kFALSE, 0.0,-3, "meson", -217);
133  pdgDB->AddParticle("RHO_30 ", " ", 1.691, kFALSE, 0.0, 0, "meson", 117);
134  pdgDB->AddParticle("OMEGA_3 ", " ", 1.667, kFALSE, 0.0, 0, "meson", 227);
135  pdgDB->AddParticle("PHI_3 ", " ", 1.854, kFALSE, 0.0, 0, "meson", 337);
136 
137  pdgDB->AddParticle("CHI2P_B0", " ", 10.232, kFALSE, 0.0, 0, "meson", 110551);
138  pdgDB->AddParticle("CHI2P_B1", " ", 10.255, kFALSE, 0.0, 0, "meson", 120553);
139  pdgDB->AddParticle("CHI2P_B2", " ", 10.269, kFALSE, 0.0, 0, "meson", 100555);
140  pdgDB->AddParticle("UPSLON4S", " ", 10.580, kFALSE, 0.0, 0, "meson", 300553);
141 
142 
143  // IONS
144  //
145  // Done by default now from Pythia6 table
146  // Needed for other generators
147  // So check if already defined
148 
149 
150  Int_t ionCode = kion+10020;
151  if(!pdgDB->GetParticle(ionCode)){
152  pdgDB->AddParticle("Deuteron","Deuteron", 1.875613, kTRUE,
153  0,3,"Ion",ionCode);
154  }
155  pdgDB->AddAntiParticle("AntiDeuteron", - ionCode);
156 
157  ionCode = kion+10030;
158  if(!pdgDB->GetParticle(ionCode)){
159  pdgDB->AddParticle("Triton","Triton", 2.80925, kFALSE,
160  khShGev/(12.33*kYear2Sec),3,"Ion",ionCode);
161  }
162  pdgDB->AddAntiParticle("AntiTriton", - ionCode);
163 
164  ionCode = kion+20030;
165  if(!pdgDB->GetParticle(ionCode)){
166  pdgDB->AddParticle("HE3","HE3", 2.80923,kFALSE,
167  0,6,"Ion",ionCode);
168  }
169  pdgDB->AddAntiParticle("AntiHE3", - ionCode);
170 
171  ionCode = kion+20040;
172  if(!pdgDB->GetParticle(ionCode)){
173  pdgDB->AddParticle("Alpha","Alpha", 3.727379, kTRUE,
174  khShGev/(12.33*kYear2Sec), 6, "Ion", ionCode);
175  }
176  pdgDB->AddAntiParticle("AntiAlpha", - ionCode);
177 
178 // Special particles
179 //
180  pdgDB->AddParticle("Cherenkov","Cherenkov",0,kFALSE,
181  0,0,"Special",kspe+50);
182  pdgDB->AddParticle("FeedbackPhoton","FeedbackPhoton",0,kFALSE,
183  0,0,"Special",kspe+51);
184  pdgDB->AddParticle("Lambda1520","Lambda1520",1.5195,kFALSE,
185  0.0156,0,"Resonance",3124);
186  pdgDB->AddAntiParticle("Lambda1520bar",-3124);
187 
188  //Hyper nuclei and exotica
189  ionCode = 1010010030;
190  if(!pdgDB->GetParticle(ionCode)){
191  pdgDB->AddParticle("HyperTriton","HyperTriton", 2.99131, kFALSE,
192  2.5e-15, 3, "Ion", ionCode);
193  }
194 
195  ionCode = -1010010030;
196  if(!pdgDB->GetParticle(ionCode)){
197  pdgDB->AddParticle("AntiHyperTriton","AntiHyperTriton", 2.99131, kFALSE,
198  2.5e-15, 3, "Ion", ionCode);
199  }
200 
201  ionCode = 1010010040;
202  if(!pdgDB->GetParticle(ionCode)){
203  pdgDB->AddParticle("Hyperhydrog4","Hyperhydrog4", 3.931, kFALSE,
204  2.5e-15, 3, "Ion", ionCode);
205  }
206 
207  ionCode = -1010010040;
208  if(!pdgDB->GetParticle(ionCode)){
209  pdgDB->AddParticle("AntiHyperhydrog4","AntiHyperhydrog4", 3.931, kFALSE,
210  2.5e-15, 3, "Ion", ionCode);
211  }
212 
213  ionCode = 1010020040;
214  if(!pdgDB->GetParticle(ionCode)){
215  pdgDB->AddParticle("Hyperhelium4","Hyperhelium4", 3.929, kFALSE,
216  2.5e-15, 6, "Ion", ionCode);
217  }
218 
219  ionCode = -1010020040;
220  if(!pdgDB->GetParticle(ionCode)){
221  pdgDB->AddParticle("AntiHyperhelium4","AntiHyperhelium4", 3.929, kFALSE,
222  2.5e-15, 6, "Ion", ionCode);
223  }
224 
225  ionCode = 1010020050;
226  if(!pdgDB->GetParticle(ionCode)){
227  pdgDB->AddParticle("Hyperhelium5","Hyperhelium5", 4.841, kFALSE,
228  2.5e-15, 6, "Ion", ionCode);
229  }
230 
231  ionCode = -1010020050;
232  if(!pdgDB->GetParticle(ionCode)){
233  pdgDB->AddParticle("AntiHyperhelium5","AntiHyperhelium5", 4.841, kFALSE,
234  2.5e-15, 6, "Ion", ionCode);
235  }
236 
237  ionCode = 1020010040;
238  if(!pdgDB->GetParticle(ionCode)){
239  pdgDB->AddParticle("DoubleHyperhydrogen4","DoubleHyperhydrogen4", 4.106, kFALSE,
240  2.5e-15, 6, "Ion", ionCode);
241  }
242 
243  ionCode = -1020010040;
244  if(!pdgDB->GetParticle(ionCode)){
245  pdgDB->AddParticle("DoubleAntiHyperhydrogen4","DoubleAntiHyperhydrogen4", 4.106, kFALSE,
246  2.5e-15, 6, "Ion", ionCode);
247  }
248 
249  ionCode = 1010000020;
250  if(!pdgDB->GetParticle(ionCode)){
251  pdgDB->AddParticle("LambdaNeutron","LambdaNeutron", 2.054, kFALSE,
252  2.5e-15, 0, "Special", ionCode);
253  }
254 
255  ionCode = -1010000020;
256  if(!pdgDB->GetParticle(ionCode)){
257  pdgDB->AddParticle("AntiLambdaNeutron","AntiLambdaNeutron", 2.054, kFALSE,
258  2.5e-15, 0, "Special", ionCode);
259  }
260 
261  ionCode = 1020000020;
262  if(!pdgDB->GetParticle(ionCode)){
263  pdgDB->AddParticle("Hdibaryon","Hdibaryon", 2.23, kFALSE,
264  2.5e-15, 0, "Special", ionCode);
265  }
266 
267  ionCode = -1020000020;
268  if(!pdgDB->GetParticle(ionCode)){
269  pdgDB->AddParticle("AntiHdibaryon","AntiHdibaryon", 2.23, kFALSE,
270  2.5e-15, 0, "Special", ionCode);
271  }
272 
273  ionCode = 1010000030;
274  if(!pdgDB->GetParticle(ionCode)){
275  pdgDB->AddParticle("LambdaNeutronNeutron","LambdaNeutronNeutron", 2.99, kFALSE,
276  2.5e-15, 0, "Special", ionCode);
277  }
278 
279  ionCode = -1010000030;
280  if(!pdgDB->GetParticle(ionCode)){
281  pdgDB->AddParticle("AntiLambdaNeutronNeutron","AntiLambdaNeutronNeutron", 2.99, kFALSE,
282  2.5e-15, 0, "Special", ionCode);
283  }
284 
285  ionCode = 1020010020;
286  if(!pdgDB->GetParticle(ionCode)){
287  pdgDB->AddParticle("Xi0Proton","Xi0Proton", 2.248, kFALSE,
288  5e-15, 3, "Ion", ionCode);
289  }
290 
291  ionCode = -1020010020;
292  if(!pdgDB->GetParticle(ionCode)){
293  pdgDB->AddParticle("AntiXi0Proton","AntiXi0Proton", 2.248, kFALSE,
294  5e-15, 3, "Ion", ionCode);
295  }
296 
297  ionCode = 1030000020;
298  if(!pdgDB->GetParticle(ionCode)){
299  pdgDB->AddParticle("OmegaProton","OmegaProton", 2.592, kFALSE,
300  2.5e-15, 0, "Special", ionCode);
301  }
302 
303  ionCode = -1030000020;
304  if(!pdgDB->GetParticle(ionCode)){
305  pdgDB->AddParticle("AntiOmegaProton","AntiOmegaProton", 2.592, kFALSE,
306  2.5e-15, 0, "Special", ionCode);
307  }
308 
309  ionCode = 1030010020;
310  if(!pdgDB->GetParticle(ionCode)){
311  pdgDB->AddParticle("OmegaNeutron","OmegaNeutron", 2.472, kFALSE,
312  0.003, 3, "Special", ionCode);
313  }
314 
315  ionCode = -1030010020;
316  if(!pdgDB->GetParticle(ionCode)){
317  pdgDB->AddParticle("AntiOmegaNeutron","AntiOmegaNeutron", 2.472, kFALSE,
318  0.003, 3, "Special", ionCode);
319  }
320 
321  ionCode = 1060020020;
322  if(!pdgDB->GetParticle(ionCode)){
323  pdgDB->AddParticle("OmegaOmega","OmegaOmega", 3.229, kFALSE,
324  2.5e-15, 6, "Special", ionCode);
325  }
326 
327  ionCode = -1060020020;
328  if(!pdgDB->GetParticle(ionCode)){
329  pdgDB->AddParticle("AntiOmegaOmega","AntiOmegaOmega", 3.229, kFALSE,
330  2.5e-15, 6, "Special", ionCode);
331  }
332 
333  ionCode = 1010010021;
334  if(!pdgDB->GetParticle(ionCode)){
335  pdgDB->AddParticle("Lambda1405Proton","Lambda1405Proton", 2.295, kFALSE,
336  0.05, 3, "Special", ionCode);
337  }
338 
339  ionCode = -1010010021;
340  if(!pdgDB->GetParticle(ionCode)){
341  pdgDB->AddParticle("AntiLambda1405Proton","AntiLambda1405Proton", 2.295, kFALSE,
342  0.05, 3, "Special", ionCode);
343  }
344 
345  ionCode = 1020000021;
346  if(!pdgDB->GetParticle(ionCode)){
347  pdgDB->AddParticle("Lambda1405Lambda1405","Lambda1405Lambda1405", 2.693, kFALSE,
348  0.05, 0, "Special", ionCode);
349  }
350 
351  ionCode = -1020000021;
352  if(!pdgDB->GetParticle(ionCode)){
353  pdgDB->AddParticle("AntiLambda1405Lambda1405","AntiLambda1405Lambda1405", 2.693, kFALSE,
354  0.05, 0, "Special", ionCode);
355  }
356 
357 
358 
359 
360  // Special resonances
361 
362  ionCode = 9010221;
363  if(!pdgDB->GetParticle(ionCode)){
364  pdgDB->AddParticle("f0_980","f0_980", 0.980, kFALSE,
365  0.07, 0, "Resonance", ionCode);
366  }
367 
368  ionCode = 225;
369  if(!pdgDB->GetParticle(ionCode)){
370  pdgDB->AddParticle("f2_1270","f2_1270", 1.275, kFALSE,
371  0.185, 0, "Resonance", ionCode);
372  }
373 
374  // Xi-/+ (1820)
375  ionCode = 123314;
376  if (!pdgDB->GetParticle(ionCode)) {
377  pdgDB->AddParticle("Xi_Minus_1820","Xi_Minus_1820",1.8234,kFALSE,0.024,-3,"Resonance",ionCode);
378  }
379  if (!pdgDB->GetParticle(-ionCode)) {
380  pdgDB->AddParticle("Xi_Plus_1820","Xi_Plus_1820",1.8234,kFALSE,0.024,3,"Resonance",-ionCode);
381  }
382 
383  // Xi0 (1820)
384  ionCode = 123324;
385  if (!pdgDB->GetParticle(ionCode)) {
386  pdgDB->AddParticle("Xi_0_1820","Xi_0_1820",1.8234,kFALSE,0.024,0,"Resonance",ionCode);
387  }
388  if (!pdgDB->GetParticle(-ionCode)) {
389  pdgDB->AddParticle("Xi_0_Bar_1820","Xi_0_Bar_1820",1.8234,kFALSE,0.024,0,"Resonance",-ionCode);
390  }
391 
392  // Ps - hidden strange (s-sbar) pentaquarks
393 
394  ionCode = 9322134;
395  if(!pdgDB->GetParticle(ionCode)) {
396  pdgDB->AddParticle("ps_2100","ps_2100", 2.100, kFALSE,
397  0.040, 3, "Resonance", ionCode);
398  }
399  if(!pdgDB->GetParticle(-ionCode)) {
400  pdgDB->AddParticle("anti-ps_2100","anti-ps_2100", 2.100, kFALSE,
401  0.040, -3, "Resonance", -ionCode);
402  }
403 
404  ionCode = 9322136;
405  if(!pdgDB->GetParticle(ionCode)) {
406  pdgDB->AddParticle("ps_2500","ps_2500", 2.500, kFALSE,
407  0.040, 3, "Resonance", ionCode);
408  }
409  if(!pdgDB->GetParticle(-ionCode)) {
410  pdgDB->AddParticle("anti-ps_2500","anti-ps_2500", 2.500, kFALSE,
411  0.040, -3, "Resonance", -ionCode);
412  }
413 
414  // d*(2380) - dibaryon resonance
415 
416  ionCode = 900010020; //Arbitrary choice - as deuteron but with leading 9 instead of 10
417  if(!pdgDB->GetParticle(ionCode)) {
418  pdgDB->AddParticle("d*_2380","d*_2380", 2.38, kFALSE,
419  0.070, 3, "Resonance", ionCode);
420  }
421  pdgDB->AddAntiParticle("d*_2380_bar", - ionCode);
422 }
Definition: AliPDG.h:14