ROOT  6.06/09
Reference Guide
TDatabasePDG.h
Go to the documentation of this file.
1 // @(#)root/eg:$Id$
2 // Author: Pasha Murat 12/02/99
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT_TDatabasePDG
13 #define ROOT_TDatabasePDG
14 
15 #ifndef ROOT_TParticlePDG
16 #include "TParticlePDG.h"
17 #endif
18 #ifndef ROOT_TParticleClassPDG
19 #include "TParticleClassPDG.h"
20 #endif
21 
22 class THashList;
23 class TExMap;
24 
25 class TDatabasePDG: public TNamed {
26 
27 protected:
28  static TDatabasePDG *fgInstance; // protect against multiple instances
29  THashList *fParticleList; // list of PDG particles
30  TObjArray *fListOfClasses; // list of classes (leptons etc.)
31  mutable TExMap *fPdgMap; //!hash-map from pdg-code to particle
32 
33  // make copy-constructor and assigment protected since class cannot be copied
35  : TNamed(db), fParticleList(db.fParticleList),
36  fListOfClasses(db.fListOfClasses), fPdgMap(0) { }
37 
39  {if(this!=&db) {TNamed::operator=(db); fParticleList=db.fParticleList;
40  fListOfClasses=db.fListOfClasses; fPdgMap=db.fPdgMap;}
41  return *this;}
42 
43  void BuildPdgMap() const;
44 
45 public:
46 
47  TDatabasePDG();
48  virtual ~TDatabasePDG();
49 
50  static TDatabasePDG* Instance();
51 
52  virtual TParticlePDG* AddParticle(const char* Name,
53  const char* Title,
54  Double_t Mass,
55  Bool_t Stable,
56  Double_t DecayWidth,
57  Double_t Charge,
58  const char* ParticleClass,
59  Int_t PdgCode,
60  Int_t Anti=-1,
61  Int_t TrackingCode=0);
62 
63  virtual Int_t ConvertGeant3ToPdg(Int_t Geant3Number) const;
64  virtual Int_t ConvertPdgToGeant3(Int_t pdgNumber) const;
65  virtual Int_t ConvertIsajetToPdg(Int_t isaNumber) const;
66 
67  virtual TParticlePDG* AddAntiParticle(const char* Name, Int_t PdgCode);
68 
69  TParticlePDG *GetParticle(Int_t pdgCode) const;
70  TParticlePDG *GetParticle(const char *name) const;
71 
73  if (fParticleList == 0) ((TDatabasePDG*)this)->ReadPDGTable();
74  return (TParticleClassPDG*) fListOfClasses->FindObject(name);
75  }
76 
77  const THashList *ParticleList() const { return fParticleList; }
78 
79  virtual void Print(Option_t *opt = "") const;
80 
81  Bool_t IsFolder() const { return kTRUE; }
82  virtual void Browse(TBrowser* b);
83 
84  virtual void ReadPDGTable (const char *filename = "");
85  virtual Int_t WritePDGTable(const char *filename);
86 
87  ClassDef(TDatabasePDG,2) // PDG particle database
88 
89 };
90 
91 #endif
An array of TObjects.
Definition: TObjArray.h:39
const char * Title
Definition: TXMLSetup.cxx:68
const char Option_t
Definition: RtypesCore.h:62
virtual ~TDatabasePDG()
Cleanup the PDG database.
static TDatabasePDG * fgInstance
Definition: TDatabasePDG.h:28
virtual Int_t ConvertPdgToGeant3(Int_t pdgNumber) const
Converts pdg code to geant3 id.
TParticlePDG * GetParticle(Int_t pdgCode) const
Get a pointer to the particle object according to the MC code number.
static const char * filename()
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
TExMap * fPdgMap
Definition: TDatabasePDG.h:31
TParticleClassPDG * GetParticleClass(const char *name)
Definition: TDatabasePDG.h:72
const char * Name
Definition: TXMLSetup.cxx:67
virtual TObject * FindObject(const char *name) const
Find an object in this collection using its name.
Definition: TObjArray.cxx:395
virtual TParticlePDG * AddParticle(const char *Name, const char *Title, Double_t Mass, Bool_t Stable, Double_t DecayWidth, Double_t Charge, const char *ParticleClass, Int_t PdgCode, Int_t Anti=-1, Int_t TrackingCode=0)
Particle definition normal constructor.
TDatabasePDG(const TDatabasePDG &db)
hash-map from pdg-code to particle
Definition: TDatabasePDG.h:34
static TDatabasePDG * Instance()
static function
#define ClassDef(name, id)
Definition: Rtypes.h:254
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
Definition: THashList.h:36
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:33
virtual TParticlePDG * AddAntiParticle(const char *Name, Int_t PdgCode)
assuming particle has already been defined
TDatabasePDG & operator=(const TDatabasePDG &db)
Definition: TDatabasePDG.h:38
virtual void Browse(TBrowser *b)
browse data base
TObjArray * fListOfClasses
Definition: TDatabasePDG.h:30
Using a TBrowser one can browse all ROOT objects.
Definition: TBrowser.h:41
TNamed & operator=(const TNamed &rhs)
TNamed assignment operator.
Definition: TNamed.cxx:40
THashList * fParticleList
Definition: TDatabasePDG.h:29
virtual void Print(Option_t *opt="") const
Print contents of PDG database.
virtual Int_t ConvertGeant3ToPdg(Int_t Geant3Number) const
Converts Geant3 particle codes to PDG convention.
void BuildPdgMap() const
Build fPdgMap mapping pdg-code to particle.
double Double_t
Definition: RtypesCore.h:55
virtual void ReadPDGTable(const char *filename="")
read list of particles from a file if the particle list does not exist, it is created, otherwise particles are added to the existing list See $ROOTSYS/etc/pdg_table.txt to see the file format
virtual Int_t WritePDGTable(const char *filename)
write contents of the particle DB into a file
#define name(a, b)
Definition: linkTestLib0.cpp:5
const THashList * ParticleList() const
Definition: TDatabasePDG.h:77
virtual Int_t ConvertIsajetToPdg(Int_t isaNumber) const
Converts the ISAJET Particle number into the PDG MC number.
const Bool_t kTRUE
Definition: Rtypes.h:91
This class stores a (key,value) pair using an external hash.
Definition: TExMap.h:35
Bool_t IsFolder() const
Returns kTRUE in case object contains browsable objects (like containers or lists of other objects)...
Definition: TDatabasePDG.h:81