ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id$ */

// Class to encapsulate the ALICE updates to TDatabasePDG.h
// Can be used by TGeant3 and TGeant4
// It contains also the constants for the PDG particle IDs.
// Should evolve towards dynamical loading from external data base.
// Comments to: andreas.morsch@cern.ch 

#include "AliPDG.h"
#include "TDatabasePDG.h"

ClassImp(AliPDG)



void AliPDG::AddParticlesToPdgDataBase()
{

//
// Add particles to the PDG data base
//
  
  static Bool_t bAdded = kFALSE;
  // Check if already called
  if(bAdded)return;
  bAdded = true;

  TDatabasePDG *pdgDB = TDatabasePDG::Instance();
  const Int_t kspe=50000000;

  // PDG nuclear states are 10-digit numbers
  // 10LZZZAAAI e.g. deuteron is 
  // 1000010020
  const Int_t kion=1000000000;

/*
  const Double_t kAu2Gev=0.9314943228;
*/

  const Double_t khSlash = 1.0545726663e-27;
  const Double_t kErg2Gev = 1/1.6021773349e-3;
  const Double_t khShGev = khSlash*kErg2Gev;
  const Double_t kYear2Sec = 3600*24*365.25;

//
// Bottom mesons
// mass and life-time from PDG
//
  pdgDB->AddParticle("Upsilon(3S)","Upsilon(3S)",10.3552,kTRUE,
                     0,1,"Bottonium",200553);

// QCD diffractive states
  pdgDB->AddParticle("rho_diff0","rho_diff0",0,kTRUE,
		     0,0,"QCD diffr. state",9900110);
  pdgDB->AddParticle("pi_diffr+","pi_diffr+",0,kTRUE,
		     0,1,"QCD diffr. state",9900210);
  pdgDB->AddParticle("omega_di","omega_di",0,kTRUE,
		     0,0,"QCD diffr. state",9900220);
  pdgDB->AddParticle("phi_diff","phi_diff",0,kTRUE,
		     0,0,"QCD diffr. state",9900330);
  pdgDB->AddParticle("J/psi_di","J/psi_di",0,kTRUE,
		     0,0,"QCD diffr. state",9900440);
  pdgDB->AddParticle("n_diffr0","n_diffr0",0,kTRUE,
		     0,0,"QCD diffr. state",9902110);
  pdgDB->AddParticle("p_diffr+","p_diffr+",0,kTRUE,
		     0,1,"QCD diffr. state",9902210);

// From Herwig
  pdgDB->AddParticle("PSID    ", " ", 3.7699, kFALSE, 0.0, 0, "meson",   30443);
  
  pdgDB->AddParticle("A_00    ", " ", 0.9960, kFALSE, 0.0, 0, "meson",  9000111); 
  pdgDB->AddParticle("A_0+    ", " ", 0.9960, kFALSE, 0.0,+3, "meson",  9000211);  
  pdgDB->AddParticle("A_0-    ", " ", 0.9960, kFALSE, 0.0,-3, "meson", -9000211);  

  pdgDB->AddParticle("F0P0    ", " ", 0.9960, kFALSE, 0.0, 0, "meson",  9010221); 
  
  pdgDB->AddParticle("KDL_2+  ", " ", 1.773,  kFALSE, 0.0,+3, "meson",   10325); 
  pdgDB->AddParticle("KDL_2-  ", " ", 1.773,  kFALSE, 0.0,-3, "meson",  -10325); 

  pdgDB->AddParticle("KDL_20  ", " ", 1.773,  kFALSE, 0.0, 0, "meson",   10315); 
  pdgDB->AddParticle("KDL_2BR0", " ", 1.773,  kFALSE, 0.0, 0, "meson",  -10315); 

  pdgDB->AddParticle("PI_2+   ", " ", 1.670,  kFALSE, 0.0,+3, "meson",   10215);
  pdgDB->AddParticle("PI_2-   ", " ", 1.670,  kFALSE, 0.0,-3, "meson",  -10215);
  pdgDB->AddParticle("PI_20   ", " ", 1.670,  kFALSE, 0.0, 0, "meson",   10115);
  
  
  pdgDB->AddParticle("KD*+    ", " ", 1.717,  kFALSE, 0.0,+3, "meson",   30323); 
  pdgDB->AddParticle("KD*-    ", " ", 1.717,  kFALSE, 0.0,-3, "meson",  -30323); 

  pdgDB->AddParticle("KD*0    ", " ", 1.717,  kFALSE, 0.0, 0, "meson",   30313); 
  pdgDB->AddParticle("KDBR*0  ", " ", 1.717,  kFALSE, 0.0, 0, "meson",  -30313); 

  pdgDB->AddParticle("RHOD+   ", " ", 1.700,  kFALSE, 0.0,+3, "meson",   30213); 
  pdgDB->AddParticle("RHOD-   ", " ", 1.700,  kFALSE, 0.0,-3, "meson",  -30213); 
  pdgDB->AddParticle("RHOD0   ", " ", 1.700,  kFALSE, 0.0, 0, "meson",   30113); 
  
  pdgDB->AddParticle("ETA_2(L)", " ", 1.632,  kFALSE, 0.0, 0, "meson",   10225); 
  pdgDB->AddParticle("ETA_2(H)", " ", 1.854,  kFALSE, 0.0, 0, "meson",   10335); 
  pdgDB->AddParticle("OMEGA(H)", " ", 1.649,  kFALSE, 0.0, 0, "meson",   30223);
  
  
  pdgDB->AddParticle("KDH_2+  ", " ", 1.816,  kFALSE, 0.0,+3, "meson",   20325);
  pdgDB->AddParticle("KDH_2-  ", " ", 1.816,  kFALSE, 0.0,-3, "meson",  -20325);

  pdgDB->AddParticle("KDH_20  ", " ", 1.816,  kFALSE, 0.0, 0, "meson",   20315);
  pdgDB->AddParticle("KDH_2BR0", " ", 1.816,  kFALSE, 0.0, 0, "meson",  -20315);
  
  
  pdgDB->AddParticle("KD_3+   ", " ", 1.773,  kFALSE, 0.0,+3, "meson",     327);
  pdgDB->AddParticle("KD_3-   ", " ", 1.773,  kFALSE, 0.0,-3, "meson",    -327);

  pdgDB->AddParticle("KD_30   ", " ", 1.773,  kFALSE, 0.0, 0, "meson",     317);
  pdgDB->AddParticle("KD_3BR0 ", " ", 1.773,  kFALSE, 0.0, 0, "meson",    -317);
  
  pdgDB->AddParticle("RHO_3+  ", " ", 1.691,  kFALSE, 0.0,+3, "meson",     217);
  pdgDB->AddParticle("RHO_3-  ", " ", 1.691,  kFALSE, 0.0,-3, "meson",    -217);
  pdgDB->AddParticle("RHO_30  ", " ", 1.691,  kFALSE, 0.0, 0, "meson",     117);
  pdgDB->AddParticle("OMEGA_3 ", " ", 1.667,  kFALSE, 0.0, 0, "meson",     227);
  pdgDB->AddParticle("PHI_3   ", " ", 1.854,  kFALSE, 0.0, 0, "meson",     337);
  
  pdgDB->AddParticle("CHI2P_B0", " ", 10.232, kFALSE, 0.0, 0, "meson", 110551);
  pdgDB->AddParticle("CHI2P_B1", " ", 10.255, kFALSE, 0.0, 0, "meson", 120553);
  pdgDB->AddParticle("CHI2P_B2", " ", 10.269, kFALSE, 0.0, 0, "meson", 100555);
  pdgDB->AddParticle("UPSLON4S", " ", 10.580, kFALSE, 0.0, 0, "meson", 300553);
  

  // IONS
  //
  // Done by default now from Pythia6 table
  // Needed for other generators
  // So check if already defined


  Int_t ionCode = kion+10020;
  if(!pdgDB->GetParticle(ionCode)){
      pdgDB->AddParticle("Deuteron","Deuteron", 1.875613, kTRUE,
			 0,3,"Ion",ionCode);
  }
  pdgDB->AddAntiParticle("AntiDeuteron", - ionCode);

  ionCode = kion+10030;
  if(!pdgDB->GetParticle(ionCode)){
    pdgDB->AddParticle("Triton","Triton", 2.80925, kFALSE,
                     khShGev/(12.33*kYear2Sec),3,"Ion",ionCode);
  }
  pdgDB->AddAntiParticle("AntiTriton", - ionCode);

  ionCode = kion+20030;
  if(!pdgDB->GetParticle(ionCode)){
    pdgDB->AddParticle("HE3","HE3", 2.80923,kFALSE,
                     0,6,"Ion",ionCode);
  }
  pdgDB->AddAntiParticle("AntiHE3", - ionCode);

  ionCode = kion+20040;
  if(!pdgDB->GetParticle(ionCode)){
    pdgDB->AddParticle("Alpha","Alpha", 3.727379, kTRUE,
		       khShGev/(12.33*kYear2Sec), 6, "Ion", ionCode);
  }
  pdgDB->AddAntiParticle("AntiAlpha", - ionCode);

// Special particles
// 
  pdgDB->AddParticle("Cherenkov","Cherenkov",0,kFALSE,
		     0,0,"Special",kspe+50);
  pdgDB->AddParticle("FeedbackPhoton","FeedbackPhoton",0,kFALSE,
		     0,0,"Special",kspe+51);
  pdgDB->AddParticle("Lambda1520","Lambda1520",1.5195,kFALSE,
		     0.0156,0,"Resonance",3124);
  pdgDB->AddAntiParticle("Lambda1520bar",-3124);

  //Hyper nuclei and exotica
  ionCode = 1010010030;
  if(!pdgDB->GetParticle(ionCode)){
    pdgDB->AddParticle("HyperTriton","HyperTriton", 2.99131, kFALSE,
		       2.5e-15, 3, "Ion", ionCode);
  }

  ionCode = -1010010030;
  if(!pdgDB->GetParticle(ionCode)){
    pdgDB->AddParticle("AntiHyperTriton","AntiHyperTriton", 2.99131, kFALSE,
		       2.5e-15, 3, "Ion", ionCode);
  }

  ionCode = 1010010040;
  if(!pdgDB->GetParticle(ionCode)){
    pdgDB->AddParticle("Hyperhydrog4","Hyperhydrog4", 3.931, kFALSE,
		       2.5e-15, 3, "Ion", ionCode);
  }

  ionCode = -1010010040;
  if(!pdgDB->GetParticle(ionCode)){
    pdgDB->AddParticle("AntiHyperhydrog4","AntiHyperhydrog4", 3.931, kFALSE,
		       2.5e-15, 3, "Ion", ionCode);
  }

  ionCode = 1010020040;
  if(!pdgDB->GetParticle(ionCode)){
    pdgDB->AddParticle("Hyperhelium4","Hyperhelium4", 3.929, kFALSE,
		       2.5e-15, 6, "Ion", ionCode);
  }

  ionCode = -1010020040;
  if(!pdgDB->GetParticle(ionCode)){
    pdgDB->AddParticle("AntiHyperTriton","AntiHyperTriton", 3.929, kFALSE,
		       2.5e-15, 6, "Ion", ionCode);
  }

  ionCode = 1010000020;
  if(!pdgDB->GetParticle(ionCode)){
    pdgDB->AddParticle("LambdaNeutron","LambdaNeutron", 2.054, kFALSE,
		       2.5e-15, 0, "Special", ionCode);
  }

  ionCode = -1010000020;
  if(!pdgDB->GetParticle(ionCode)){
    pdgDB->AddParticle("AntiLambdaNeutron","AntiLambdaNeutron", 2.054, kFALSE,
		       2.5e-15, 0, "Special", ionCode);
  }

  ionCode = 1020000020;
  if(!pdgDB->GetParticle(ionCode)){
    pdgDB->AddParticle("Hdibaryon","Hdibaryon", 2.23, kFALSE,
		       2.5e-15, 0, "Special", ionCode);
  }

  ionCode = -1020000020;
  if(!pdgDB->GetParticle(ionCode)){
    pdgDB->AddParticle("AntiHdibaryon","AntiHdibaryon", 2.23, kFALSE,
		       2.5e-15, 0, "Special", ionCode);
  }

  ionCode = 1010000030;
  if(!pdgDB->GetParticle(ionCode)){
    pdgDB->AddParticle("LambdaNeutronNeutron","LambdaNeutronNeutron", 2.982, kFALSE,
		       2.5e-15, 0, "Special", ionCode);
  }

  ionCode = -1010000030;
  if(!pdgDB->GetParticle(ionCode)){
    pdgDB->AddParticle("AntiLambdaNeutronNeutron","AntiLambdaNeutronNeutron", 2.982, kFALSE,
		       2.5e-15, 0, "Special", ionCode);
  }

  ionCode = 1030000020;
  if(!pdgDB->GetParticle(ionCode)){
    pdgDB->AddParticle("Xi0Proton","Xi0Proton", 2.248, kFALSE,
		       5e-15, 3, "Ion", ionCode);
  }

  ionCode = -1030000020;
  if(!pdgDB->GetParticle(ionCode)){
    pdgDB->AddParticle("AntiXi0Proton","AntiXi0Proton", 2.248, kFALSE,
		       5e-15, 3, "Ion", ionCode);
  }

  // Special resonances

  ionCode = 9010221;
  if(!pdgDB->GetParticle(ionCode)){
    pdgDB->AddParticle("f0_980","f0_980", 0.980, kFALSE,
		       0.07, 0, "Resonance", ionCode);
  }

  ionCode = 225;
  if(!pdgDB->GetParticle(ionCode)){
    pdgDB->AddParticle("f2_1270","f2_1270", 1.275, kFALSE,
		       0.185, 0, "Resonance", ionCode);
  }

}


 AliPDG.cxx:1
 AliPDG.cxx:2
 AliPDG.cxx:3
 AliPDG.cxx:4
 AliPDG.cxx:5
 AliPDG.cxx:6
 AliPDG.cxx:7
 AliPDG.cxx:8
 AliPDG.cxx:9
 AliPDG.cxx:10
 AliPDG.cxx:11
 AliPDG.cxx:12
 AliPDG.cxx:13
 AliPDG.cxx:14
 AliPDG.cxx:15
 AliPDG.cxx:16
 AliPDG.cxx:17
 AliPDG.cxx:18
 AliPDG.cxx:19
 AliPDG.cxx:20
 AliPDG.cxx:21
 AliPDG.cxx:22
 AliPDG.cxx:23
 AliPDG.cxx:24
 AliPDG.cxx:25
 AliPDG.cxx:26
 AliPDG.cxx:27
 AliPDG.cxx:28
 AliPDG.cxx:29
 AliPDG.cxx:30
 AliPDG.cxx:31
 AliPDG.cxx:32
 AliPDG.cxx:33
 AliPDG.cxx:34
 AliPDG.cxx:35
 AliPDG.cxx:36
 AliPDG.cxx:37
 AliPDG.cxx:38
 AliPDG.cxx:39
 AliPDG.cxx:40
 AliPDG.cxx:41
 AliPDG.cxx:42
 AliPDG.cxx:43
 AliPDG.cxx:44
 AliPDG.cxx:45
 AliPDG.cxx:46
 AliPDG.cxx:47
 AliPDG.cxx:48
 AliPDG.cxx:49
 AliPDG.cxx:50
 AliPDG.cxx:51
 AliPDG.cxx:52
 AliPDG.cxx:53
 AliPDG.cxx:54
 AliPDG.cxx:55
 AliPDG.cxx:56
 AliPDG.cxx:57
 AliPDG.cxx:58
 AliPDG.cxx:59
 AliPDG.cxx:60
 AliPDG.cxx:61
 AliPDG.cxx:62
 AliPDG.cxx:63
 AliPDG.cxx:64
 AliPDG.cxx:65
 AliPDG.cxx:66
 AliPDG.cxx:67
 AliPDG.cxx:68
 AliPDG.cxx:69
 AliPDG.cxx:70
 AliPDG.cxx:71
 AliPDG.cxx:72
 AliPDG.cxx:73
 AliPDG.cxx:74
 AliPDG.cxx:75
 AliPDG.cxx:76
 AliPDG.cxx:77
 AliPDG.cxx:78
 AliPDG.cxx:79
 AliPDG.cxx:80
 AliPDG.cxx:81
 AliPDG.cxx:82
 AliPDG.cxx:83
 AliPDG.cxx:84
 AliPDG.cxx:85
 AliPDG.cxx:86
 AliPDG.cxx:87
 AliPDG.cxx:88
 AliPDG.cxx:89
 AliPDG.cxx:90
 AliPDG.cxx:91
 AliPDG.cxx:92
 AliPDG.cxx:93
 AliPDG.cxx:94
 AliPDG.cxx:95
 AliPDG.cxx:96
 AliPDG.cxx:97
 AliPDG.cxx:98
 AliPDG.cxx:99
 AliPDG.cxx:100
 AliPDG.cxx:101
 AliPDG.cxx:102
 AliPDG.cxx:103
 AliPDG.cxx:104
 AliPDG.cxx:105
 AliPDG.cxx:106
 AliPDG.cxx:107
 AliPDG.cxx:108
 AliPDG.cxx:109
 AliPDG.cxx:110
 AliPDG.cxx:111
 AliPDG.cxx:112
 AliPDG.cxx:113
 AliPDG.cxx:114
 AliPDG.cxx:115
 AliPDG.cxx:116
 AliPDG.cxx:117
 AliPDG.cxx:118
 AliPDG.cxx:119
 AliPDG.cxx:120
 AliPDG.cxx:121
 AliPDG.cxx:122
 AliPDG.cxx:123
 AliPDG.cxx:124
 AliPDG.cxx:125
 AliPDG.cxx:126
 AliPDG.cxx:127
 AliPDG.cxx:128
 AliPDG.cxx:129
 AliPDG.cxx:130
 AliPDG.cxx:131
 AliPDG.cxx:132
 AliPDG.cxx:133
 AliPDG.cxx:134
 AliPDG.cxx:135
 AliPDG.cxx:136
 AliPDG.cxx:137
 AliPDG.cxx:138
 AliPDG.cxx:139
 AliPDG.cxx:140
 AliPDG.cxx:141
 AliPDG.cxx:142
 AliPDG.cxx:143
 AliPDG.cxx:144
 AliPDG.cxx:145
 AliPDG.cxx:146
 AliPDG.cxx:147
 AliPDG.cxx:148
 AliPDG.cxx:149
 AliPDG.cxx:150
 AliPDG.cxx:151
 AliPDG.cxx:152
 AliPDG.cxx:153
 AliPDG.cxx:154
 AliPDG.cxx:155
 AliPDG.cxx:156
 AliPDG.cxx:157
 AliPDG.cxx:158
 AliPDG.cxx:159
 AliPDG.cxx:160
 AliPDG.cxx:161
 AliPDG.cxx:162
 AliPDG.cxx:163
 AliPDG.cxx:164
 AliPDG.cxx:165
 AliPDG.cxx:166
 AliPDG.cxx:167
 AliPDG.cxx:168
 AliPDG.cxx:169
 AliPDG.cxx:170
 AliPDG.cxx:171
 AliPDG.cxx:172
 AliPDG.cxx:173
 AliPDG.cxx:174
 AliPDG.cxx:175
 AliPDG.cxx:176
 AliPDG.cxx:177
 AliPDG.cxx:178
 AliPDG.cxx:179
 AliPDG.cxx:180
 AliPDG.cxx:181
 AliPDG.cxx:182
 AliPDG.cxx:183
 AliPDG.cxx:184
 AliPDG.cxx:185
 AliPDG.cxx:186
 AliPDG.cxx:187
 AliPDG.cxx:188
 AliPDG.cxx:189
 AliPDG.cxx:190
 AliPDG.cxx:191
 AliPDG.cxx:192
 AliPDG.cxx:193
 AliPDG.cxx:194
 AliPDG.cxx:195
 AliPDG.cxx:196
 AliPDG.cxx:197
 AliPDG.cxx:198
 AliPDG.cxx:199
 AliPDG.cxx:200
 AliPDG.cxx:201
 AliPDG.cxx:202
 AliPDG.cxx:203
 AliPDG.cxx:204
 AliPDG.cxx:205
 AliPDG.cxx:206
 AliPDG.cxx:207
 AliPDG.cxx:208
 AliPDG.cxx:209
 AliPDG.cxx:210
 AliPDG.cxx:211
 AliPDG.cxx:212
 AliPDG.cxx:213
 AliPDG.cxx:214
 AliPDG.cxx:215
 AliPDG.cxx:216
 AliPDG.cxx:217
 AliPDG.cxx:218
 AliPDG.cxx:219
 AliPDG.cxx:220
 AliPDG.cxx:221
 AliPDG.cxx:222
 AliPDG.cxx:223
 AliPDG.cxx:224
 AliPDG.cxx:225
 AliPDG.cxx:226
 AliPDG.cxx:227
 AliPDG.cxx:228
 AliPDG.cxx:229
 AliPDG.cxx:230
 AliPDG.cxx:231
 AliPDG.cxx:232
 AliPDG.cxx:233
 AliPDG.cxx:234
 AliPDG.cxx:235
 AliPDG.cxx:236
 AliPDG.cxx:237
 AliPDG.cxx:238
 AliPDG.cxx:239
 AliPDG.cxx:240
 AliPDG.cxx:241
 AliPDG.cxx:242
 AliPDG.cxx:243
 AliPDG.cxx:244
 AliPDG.cxx:245
 AliPDG.cxx:246
 AliPDG.cxx:247
 AliPDG.cxx:248
 AliPDG.cxx:249
 AliPDG.cxx:250
 AliPDG.cxx:251
 AliPDG.cxx:252
 AliPDG.cxx:253
 AliPDG.cxx:254
 AliPDG.cxx:255
 AliPDG.cxx:256
 AliPDG.cxx:257
 AliPDG.cxx:258
 AliPDG.cxx:259
 AliPDG.cxx:260
 AliPDG.cxx:261
 AliPDG.cxx:262
 AliPDG.cxx:263
 AliPDG.cxx:264
 AliPDG.cxx:265
 AliPDG.cxx:266
 AliPDG.cxx:267
 AliPDG.cxx:268
 AliPDG.cxx:269
 AliPDG.cxx:270
 AliPDG.cxx:271
 AliPDG.cxx:272
 AliPDG.cxx:273
 AliPDG.cxx:274
 AliPDG.cxx:275
 AliPDG.cxx:276
 AliPDG.cxx:277
 AliPDG.cxx:278
 AliPDG.cxx:279
 AliPDG.cxx:280
 AliPDG.cxx:281
 AliPDG.cxx:282
 AliPDG.cxx:283
 AliPDG.cxx:284
 AliPDG.cxx:285
 AliPDG.cxx:286
 AliPDG.cxx:287
 AliPDG.cxx:288
 AliPDG.cxx:289