41b193935e2478e40edb69ec06da7a012969b5fd
[u/mrichter/AliRoot.git] / STEER / 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   const Double_t kAu2Gev=0.9314943228;
52   const Double_t khSlash = 1.0545726663e-27;
53   const Double_t kErg2Gev = 1/1.6021773349e-3;
54   const Double_t khShGev = khSlash*kErg2Gev;
55   const Double_t kYear2Sec = 3600*24*365.25;
56
57
58 //
59 // Bottom mesons
60 // mass and life-time from PDG
61 //
62   pdgDB->AddParticle("Upsilon(3S)","Upsilon(3S)",10.3552,kTRUE,
63                      0,1,"Bottonium",200553);
64
65 // QCD diffractive states
66   pdgDB->AddParticle("rho_diff0","rho_diff0",0,kTRUE,
67                      0,0,"QCD diffr. state",9900110);
68   pdgDB->AddParticle("pi_diffr+","pi_diffr+",0,kTRUE,
69                      0,1,"QCD diffr. state",9900210);
70   pdgDB->AddParticle("omega_di","omega_di",0,kTRUE,
71                      0,0,"QCD diffr. state",9900220);
72   pdgDB->AddParticle("phi_diff","phi_diff",0,kTRUE,
73                      0,0,"QCD diffr. state",9900330);
74   pdgDB->AddParticle("J/psi_di","J/psi_di",0,kTRUE,
75                      0,0,"QCD diffr. state",9900440);
76   pdgDB->AddParticle("n_diffr0","n_diffr0",0,kTRUE,
77                      0,0,"QCD diffr. state",9902110);
78   pdgDB->AddParticle("p_diffr+","p_diffr+",0,kTRUE,
79                      0,1,"QCD diffr. state",9902210);
80
81   // Some particles produced by HERWIG
82   pdgDB->AddParticle("rho3(1690)0","rho(1690)0", 1.69, kTRUE,
83                      0, 0,"rho", 117);
84   pdgDB->AddParticle("pion2(1670)0","pion2(1670)0", 1.67, kTRUE,
85                      0, 0,"pion", 10115);
86   pdgDB->AddParticle("omega(1650)","omega(1650)", 1.65, kTRUE,
87                      0, 0,"pion", 30223);
88
89   // IONS
90   //
91   // Done by default now from Pythia6 table
92   // Needed for other generators
93   // So check if already defined
94
95
96   Int_t ionCode = kion+10020;
97   if(!pdgDB->GetParticle(ionCode)){
98       pdgDB->AddParticle("Deuteron","Deuteron",2*kAu2Gev+8.071e-3,kTRUE,
99                          0,1,"Ion",ionCode);
100   }
101
102   ionCode = kion+10030;
103   if(!pdgDB->GetParticle(ionCode)){
104     pdgDB->AddParticle("Triton","Triton",3*kAu2Gev+14.931e-3,kFALSE,
105                      khShGev/(12.33*kYear2Sec),1,"Ion",ionCode);
106   }
107
108   ionCode = kion+20030;
109   if(!pdgDB->GetParticle(ionCode)){
110     pdgDB->AddParticle("HE3","HE3",3*kAu2Gev+14.931e-3,kFALSE,
111                      0,2,"Ion",ionCode);
112   }
113
114   ionCode = kion+20040;
115   if(!pdgDB->GetParticle(ionCode)){
116     pdgDB->AddParticle("Alpha","Alpha",4*kAu2Gev+2.424e-3,kTRUE,
117                        khShGev/(12.33*kYear2Sec),2,"Ion",ionCode);
118   }
119
120
121 // Special particles
122 // 
123   pdgDB->AddParticle("Cherenkov","Cherenkov",0,kFALSE,
124                      0,0,"Special",kspe+50);
125   pdgDB->AddParticle("FeedbackPhoton","FeedbackPhoton",0,kFALSE,
126                      0,0,"Special",kspe+51);
127   pdgDB->AddParticle("Lambda1520","Lambda1520",1.5195,kFALSE,
128                      0.0156,0,"Resonance",3124);
129   pdgDB->AddAntiParticle("Lambda1520bar",-3124);
130 }
131
132