Logo ROOT  
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#include "TParticlePDG.h"
16#include "TParticleClassPDG.h"
17
18class THashList;
19class TExMap;
20
21class TDatabasePDG: public TNamed {
22
23protected:
24 THashList *fParticleList; // list of PDG particles
25 TObjArray *fListOfClasses; // list of classes (leptons etc.)
26 mutable TExMap *fPdgMap; //!hash-map from pdg-code to particle
27
28 // make copy-constructor and assigment protected since class cannot be copied
32
34 {if(this!=&db) {TNamed::operator=(db); fParticleList=db.fParticleList;
36 return *this;}
37
38 void BuildPdgMap() const;
39
40public:
41
43 virtual ~TDatabasePDG();
44
45 static TDatabasePDG* Instance();
46
47 virtual TParticlePDG* AddParticle(const char* Name,
48 const char* Title,
49 Double_t Mass,
50 Bool_t Stable,
51 Double_t DecayWidth,
52 Double_t Charge,
53 const char* ParticleClass,
54 Int_t PdgCode,
55 Int_t Anti=-1,
56 Int_t TrackingCode=0);
57
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;
61
62 virtual TParticlePDG* AddAntiParticle(const char* Name, Int_t PdgCode);
63
64 TParticlePDG *GetParticle(Int_t pdgCode) const;
65 TParticlePDG *GetParticle(const char *name) const;
66
68 if (fParticleList == 0) ((TDatabasePDG*)this)->ReadPDGTable();
70 }
71
72 const THashList *ParticleList() const { return fParticleList; }
73
74 virtual void Print(Option_t *opt = "") const;
75
76 Bool_t IsFolder() const { return kTRUE; }
77 virtual void Browse(TBrowser* b);
78
79 virtual void ReadPDGTable (const char *filename = "");
80 virtual Int_t WritePDGTable(const char *filename);
81
82 ClassDef(TDatabasePDG, 3); // PDG particle database
83};
84
85#endif
#define b(i)
Definition: RSha256.hxx:100
int Int_t
Definition: RtypesCore.h:43
bool Bool_t
Definition: RtypesCore.h:61
double Double_t
Definition: RtypesCore.h:57
const Bool_t kTRUE
Definition: RtypesCore.h:89
const char Option_t
Definition: RtypesCore.h:64
#define ClassDef(name, id)
Definition: Rtypes.h:322
char name[80]
Definition: TGX11.cxx:109
Using a TBrowser one can browse all ROOT objects.
Definition: TBrowser.h:37
Particle database manager class.
Definition: TDatabasePDG.h:21
virtual void Browse(TBrowser *b)
browse data base
virtual Int_t WritePDGTable(const char *filename)
write contents of the particle DB into a file
static TDatabasePDG * Instance()
static function
virtual Int_t ConvertGeant3ToPdg(Int_t Geant3Number) const
Converts Geant3 particle codes to PDG convention.
virtual Int_t ConvertPdgToGeant3(Int_t pdgNumber) const
Converts pdg code to geant3 id.
void BuildPdgMap() const
Build fPdgMap mapping pdg-code to particle.
const THashList * ParticleList() const
Definition: TDatabasePDG.h:72
Bool_t IsFolder() const
Returns kTRUE in case object contains browsable objects (like containers or lists of other objects).
Definition: TDatabasePDG.h:76
virtual Int_t ConvertIsajetToPdg(Int_t isaNumber) const
Converts the ISAJET Particle number into the PDG MC number.
TParticleClassPDG * GetParticleClass(const char *name)
Definition: TDatabasePDG.h:67
TParticlePDG * GetParticle(Int_t pdgCode) const
Get a pointer to the particle object according to the MC code number.
TDatabasePDG(const TDatabasePDG &db)
hash-map from pdg-code to particle
Definition: TDatabasePDG.h:29
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()
Create PDG database.
TExMap * fPdgMap
Definition: TDatabasePDG.h:26
virtual TParticlePDG * AddAntiParticle(const char *Name, Int_t PdgCode)
assuming particle has already been defined
THashList * fParticleList
Definition: TDatabasePDG.h:24
TObjArray * fListOfClasses
Definition: TDatabasePDG.h:25
virtual ~TDatabasePDG()
Cleanup the PDG database.
virtual void ReadPDGTable(const char *filename="")
read list of particles from a file if the particle list does not exist, it is created,...
virtual void Print(Option_t *opt="") const
Print contents of PDG database.
TDatabasePDG & operator=(const TDatabasePDG &db)
Definition: TDatabasePDG.h:33
This class stores a (key,value) pair using an external hash.
Definition: TExMap.h:33
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
Definition: THashList.h:34
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:29
TNamed & operator=(const TNamed &rhs)
TNamed assignment operator.
Definition: TNamed.cxx:51
An array of TObjects.
Definition: TObjArray.h:37
virtual TObject * FindObject(const char *name) const
Find an object in this collection using its name.
Definition: TObjArray.cxx:415
Utility class used internally by TDatabasePDG.
Description of the static properties of a particle.
Definition: TParticlePDG.h:19
const char * Name
Definition: TXMLSetup.cxx:66
const char * Title
Definition: TXMLSetup.cxx:67