File indexing completed on 2025-12-15 10:29:34
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef ROOT_TDatabasePDG
0013 #define ROOT_TDatabasePDG
0014
0015 #include "TParticlePDG.h"
0016 #include "TParticleClassPDG.h"
0017
0018 class THashList;
0019 class TExMap;
0020
0021 class TDatabasePDG: public TNamed {
0022
0023 protected:
0024 THashList *fParticleList;
0025 TObjArray *fListOfClasses;
0026 mutable TExMap *fPdgMap;
0027
0028
0029 TDatabasePDG(const TDatabasePDG& db)
0030 : TNamed(db), fParticleList(db.fParticleList),
0031 fListOfClasses(db.fListOfClasses), fPdgMap(0) { }
0032
0033 TDatabasePDG& operator=(const TDatabasePDG& db)
0034 {if(this!=&db) {TNamed::operator=(db); fParticleList=db.fParticleList;
0035 fListOfClasses=db.fListOfClasses; fPdgMap=db.fPdgMap;}
0036 return *this;}
0037
0038 void BuildPdgMap() const;
0039 virtual void ReadPDGTableImpl(const char *filename, bool isParticleListInitializedWhenInvoking);
0040
0041 public:
0042
0043 TDatabasePDG();
0044 ~TDatabasePDG() override;
0045
0046 static TDatabasePDG* Instance();
0047
0048 virtual TParticlePDG* AddParticle(const char* Name,
0049 const char* Title,
0050 Double_t Mass,
0051 Bool_t Stable,
0052 Double_t DecayWidth,
0053 Double_t Charge,
0054 const char* ParticleClass,
0055 Int_t PdgCode,
0056 Int_t Anti=-1,
0057 Int_t TrackingCode=0);
0058
0059 virtual Int_t ConvertGeant3ToPdg(Int_t Geant3Number) const;
0060 virtual Int_t ConvertPdgToGeant3(Int_t pdgNumber) const;
0061 virtual Int_t ConvertIsajetToPdg(Int_t isaNumber) const;
0062
0063 virtual TParticlePDG* AddAntiParticle(const char* Name, Int_t PdgCode);
0064
0065 TParticlePDG *GetParticle(Int_t pdgCode) const;
0066 TParticlePDG *GetParticle(const char *name) const;
0067
0068 TParticleClassPDG* GetParticleClass(const char* name) {
0069 if (fParticleList == 0) ((TDatabasePDG*)this)->ReadPDGTable();
0070 return (TParticleClassPDG*) fListOfClasses->FindObject(name);
0071 }
0072
0073 const THashList *ParticleList() const { return fParticleList; }
0074
0075 void Print(Option_t *opt = "") const override;
0076
0077 Bool_t IsFolder() const override { return kTRUE; }
0078 void Browse(TBrowser* b) override;
0079
0080 virtual void ReadPDGTable (const char *filename = "");
0081 virtual Int_t WritePDGTable(const char *filename);
0082
0083 ClassDefOverride(TDatabasePDG, 3);
0084 };
0085
0086 #endif