#ifndef TParticlePDG_hh
#define TParticlePDG_hh
#ifndef ROOT_TNamed
#include "TNamed.h"
#endif
#ifndef ROOT_TObjArray
#include "TObjArray.h"
#endif
class TDecayChannel;
class TParticlePDG : public TNamed {
public:
protected:
Int_t fPdgCode;
Double_t fMass;
Double_t fCharge;
Double_t fLifetime;
Double_t fWidth;
Int_t fParity;
Double_t fSpin;
Double_t fIsospin;
Double_t fI3;
Int_t fStrangeness;
Int_t fCharm;
Int_t fBeauty;
Int_t fTop;
Int_t fY;
Int_t fX;
Int_t fStable;
TObjArray* fDecayList;
TString fParticleClass;
Int_t fTrackingCode;
TParticlePDG* fAntiParticle;
TParticlePDG(const TParticlePDG&);
TParticlePDG& operator=(const TParticlePDG&);
public:
TParticlePDG();
TParticlePDG(const char* Name, const char* Title, Double_t Mass,
Bool_t Stable, Double_t Width, Double_t Charge,
const char* ParticleClass, Int_t PdgCode, Int_t Anti,
Int_t TrackingCode);
virtual ~TParticlePDG();
Int_t PdgCode () const { return fPdgCode; }
Double_t Mass () const { return fMass; }
Double_t Charge () const { return fCharge; }
Double_t Lifetime () const { return fLifetime; }
Double_t Width () const { return fWidth; }
Int_t Parity () const { return fParity; }
Double_t Spin () const { return fSpin; }
Double_t Isospin () const { return fIsospin; }
Double_t I3 () const { return fI3; }
Int_t Strangeness () const { return fStrangeness; }
Int_t Charm () const { return fCharm; }
Int_t Beauty () const { return fBeauty; }
Int_t Top () const { return fTop; }
Int_t X () const { return fX; }
Int_t Y () const { return fY; }
Int_t Stable () const { return fStable; }
const char* ParticleClass() const { return fParticleClass.Data(); }
TObjArray* DecayList () { return fDecayList; }
Int_t NDecayChannels () const {
return (fDecayList) ? fDecayList->GetEntriesFast() : 0;
}
Int_t TrackingCode() const { return fTrackingCode; }
TDecayChannel* DecayChannel(Int_t i);
TParticlePDG* AntiParticle() { return fAntiParticle; }
const TParticlePDG* AntiParticle() const { return fAntiParticle; }
void SetAntiParticle(TParticlePDG* ap) { fAntiParticle = ap; }
Int_t AddDecayChannel(Int_t Type,
Double_t BranchingRatio,
Int_t NDaughters,
Int_t* DaughterPdgCode);
virtual void PrintDecayChannel(TDecayChannel* dc, Option_t* opt = "") const;
virtual void Print(Option_t* opt = "") const;
ClassDef(TParticlePDG,2)
};
#endif