00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef TParticlePDG_hh
00012 #define TParticlePDG_hh
00013
00014 #ifndef ROOT_TNamed
00015 #include "TNamed.h"
00016 #endif
00017 #ifndef ROOT_TObjArray
00018 #include "TObjArray.h"
00019 #endif
00020
00021 class TDecayChannel;
00022
00023 class TParticlePDG : public TNamed {
00024 public:
00025
00026
00027
00028 protected:
00029 Int_t fPdgCode;
00030 Double_t fMass;
00031 Double_t fCharge;
00032 Double_t fLifetime;
00033 Double_t fWidth;
00034 Int_t fParity;
00035 Double_t fSpin;
00036 Double_t fIsospin;
00037 Double_t fI3;
00038 Int_t fStrangeness;
00039 Int_t fCharm;
00040
00041 Int_t fBeauty;
00042 Int_t fTop;
00043 Int_t fY;
00044 Int_t fX;
00045 Int_t fStable;
00046
00047 TObjArray* fDecayList;
00048
00049 TString fParticleClass;
00050
00051 Int_t fTrackingCode;
00052 TParticlePDG* fAntiParticle;
00053
00054
00055
00056 TParticlePDG(const TParticlePDG&);
00057 TParticlePDG& operator=(const TParticlePDG&);
00058
00059 public:
00060
00061 TParticlePDG();
00062 TParticlePDG(int pdg_code);
00063 TParticlePDG(const char* Name, const char* Title, Double_t Mass,
00064 Bool_t Stable, Double_t Width, Double_t Charge,
00065 const char* ParticleClass, Int_t PdgCode, Int_t Anti,
00066 Int_t TrackingCode);
00067
00068 virtual ~TParticlePDG();
00069
00070
00071 Int_t PdgCode () const { return fPdgCode; }
00072 Double_t Mass () const { return fMass; }
00073 Double_t Charge () const { return fCharge; }
00074 Double_t Lifetime () const { return fLifetime; }
00075 Double_t Width () const { return fWidth; }
00076 Int_t Parity () const { return fParity; }
00077 Double_t Spin () const { return fSpin; }
00078 Double_t Isospin () const { return fIsospin; }
00079 Double_t I3 () const { return fI3; }
00080 Int_t Strangeness () const { return fStrangeness; }
00081 Int_t Charm () const { return fCharm; }
00082 Int_t Beauty () const { return fBeauty; }
00083 Int_t Top () const { return fTop; }
00084 Int_t X () const { return fX; }
00085 Int_t Y () const { return fY; }
00086 Int_t Stable () const { return fStable; }
00087 const char* ParticleClass() const { return fParticleClass.Data(); }
00088
00089 TObjArray* DecayList () { return fDecayList; }
00090
00091 Int_t NDecayChannels () const {
00092 return (fDecayList) ? fDecayList->GetEntriesFast() : 0;
00093 }
00094
00095 Int_t TrackingCode() const { return fTrackingCode; }
00096
00097 TDecayChannel* DecayChannel(Int_t i);
00098
00099 TParticlePDG* AntiParticle() { return fAntiParticle; }
00100
00101
00102
00103 void SetAntiParticle(TParticlePDG* ap) { fAntiParticle = ap; }
00104
00105 Int_t AddDecayChannel(Int_t Type,
00106 Double_t BranchingRatio,
00107 Int_t NDaughters,
00108 Int_t* DaughterPdgCode);
00109
00110 virtual void PrintDecayChannel(TDecayChannel* dc, Option_t* opt = "") const;
00111
00112 virtual void Print(Option_t* opt = "") const;
00113
00114 ClassDef(TParticlePDG,2)
00115 };
00116
00117 #endif