12 #ifndef ROOT_TDatabasePDG 
   13 #define ROOT_TDatabasePDG 
   21 class TDatabasePDG: 
public TNamed {
 
   24    THashList           *fParticleList;     
 
   25    TObjArray           *fListOfClasses;    
 
   26    mutable TExMap      *fPdgMap;           
 
   29    TDatabasePDG(
const TDatabasePDG& db)
 
   30      : TNamed(db), fParticleList(db.fParticleList),
 
   31      fListOfClasses(db.fListOfClasses), fPdgMap(0) { }
 
   33    TDatabasePDG& operator=(
const TDatabasePDG& db)
 
   34    {
if(
this!=&db) {TNamed::operator=(db); fParticleList=db.fParticleList;
 
   35          fListOfClasses=db.fListOfClasses; fPdgMap=db.fPdgMap;}
 
   38    void BuildPdgMap() 
const;
 
   43    virtual ~TDatabasePDG();
 
   45    static TDatabasePDG*  Instance();
 
   47    virtual TParticlePDG*   AddParticle(
const char*  Name,
 
   53                                        const char*  ParticleClass,
 
   56                                        Int_t        TrackingCode=0);
 
   58    virtual Int_t  ConvertGeant3ToPdg(Int_t Geant3Number) 
const;
 
   59    virtual Int_t  ConvertPdgToGeant3(Int_t pdgNumber) 
const;
 
   60    virtual Int_t  ConvertIsajetToPdg(Int_t isaNumber) 
const;
 
   62    virtual TParticlePDG* AddAntiParticle(
const char* Name, Int_t PdgCode);
 
   64    TParticlePDG  *GetParticle(Int_t pdgCode) 
const;
 
   65    TParticlePDG  *GetParticle(
const char *name) 
const;
 
   67    TParticleClassPDG* GetParticleClass(
const char* name) {
 
   68       if (fParticleList == 0)  ((TDatabasePDG*)
this)->ReadPDGTable();
 
   69       return (TParticleClassPDG*) fListOfClasses->FindObject(name);
 
   72    const THashList *ParticleList()
 const { 
return fParticleList; }
 
   74    virtual void   Print(Option_t *opt = 
"") 
const;
 
   76    Bool_t IsFolder()
 const { 
return kTRUE; }
 
   77    virtual void   Browse(TBrowser* b);
 
   79    virtual void   ReadPDGTable (
const char *filename = 
"");
 
   80    virtual Int_t  WritePDGTable(
const char *filename);
 
   82    ClassDef(TDatabasePDG, 3);