Update master to aliroot
[u/mrichter/AliRoot.git] / STEER / STEERBase / AliPDG.cxx
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("AntiHyperTriton","AntiHyperTriton", 3.929, kFALSE,
222                        2.5e-15, 6, "Ion", ionCode);
223   }
224
225   ionCode = 1010000020;
226   if(!pdgDB->GetParticle(ionCode)){
227     pdgDB->AddParticle("LambdaNeutron","LambdaNeutron", 2.054, kFALSE,
228                        2.5e-15, 0, "Special", ionCode);
229   }
230
231   ionCode = -1010000020;
232   if(!pdgDB->GetParticle(ionCode)){
233     pdgDB->AddParticle("AntiLambdaNeutron","AntiLambdaNeutron", 2.054, kFALSE,
234                        2.5e-15, 0, "Special", ionCode);
235   }
236
237   ionCode = 1020000020;
238   if(!pdgDB->GetParticle(ionCode)){
239     pdgDB->AddParticle("Hdibaryon","Hdibaryon", 2.23, kFALSE,
240                        2.5e-15, 0, "Special", ionCode);
241   }
242
243   ionCode = -1020000020;
244   if(!pdgDB->GetParticle(ionCode)){
245     pdgDB->AddParticle("AntiHdibaryon","AntiHdibaryon", 2.23, kFALSE,
246                        2.5e-15, 0, "Special", ionCode);
247   }
248
249   ionCode = 1010000030;
250   if(!pdgDB->GetParticle(ionCode)){
251     pdgDB->AddParticle("LambdaNeutronNeutron","LambdaNeutronNeutron", 2.982, kFALSE,
252                        2.5e-15, 0, "Special", ionCode);
253   }
254
255   ionCode = -1010000030;
256   if(!pdgDB->GetParticle(ionCode)){
257     pdgDB->AddParticle("AntiLambdaNeutronNeutron","AntiLambdaNeutronNeutron", 2.982, kFALSE,
258                        2.5e-15, 0, "Special", ionCode);
259   }
260
261   ionCode = 1030000020;
262   if(!pdgDB->GetParticle(ionCode)){
263     pdgDB->AddParticle("Xi0Proton","Xi0Proton", 2.248, kFALSE,
264                        5e-15, 3, "Ion", ionCode);
265   }
266
267   ionCode = -1030000020;
268   if(!pdgDB->GetParticle(ionCode)){
269     pdgDB->AddParticle("AntiXi0Proton","AntiXi0Proton", 2.248, kFALSE,
270                        5e-15, 3, "Ion", ionCode);
271   }
272
273   // Special resonances
274
275   ionCode = 9010221;
276   if(!pdgDB->GetParticle(ionCode)){
277     pdgDB->AddParticle("f0_980","f0_980", 0.980, kFALSE,
278                        0.07, 0, "Resonance", ionCode);
279   }
280
281   ionCode = 225;
282   if(!pdgDB->GetParticle(ionCode)){
283     pdgDB->AddParticle("f2_1270","f2_1270", 1.275, kFALSE,
284                        0.185, 0, "Resonance", ionCode);
285   }
286
287 }
288
289