// @(#)root/eg:$Name: $:$Id: TParticlePDG.h,v 1.6 2004/01/23 08:49:40 brun Exp $
// Author: Pasha Murat 12/02/99
/*************************************************************************
* Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
* All rights reserved. *
* *
* For the licensing terms see $ROOTSYS/LICENSE. *
* For the list of contributors see $ROOTSYS/README/CREDITS. *
*************************************************************************/
#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:
//------------------------------------------------------------------------------
// data members
//------------------------------------------------------------------------------
protected:
Int_t fPdgCode; // PDG code of the particle
Double_t fMass; // particle mass in GeV
Double_t fCharge; // charge in units of |e|/3
Double_t fLifetime; // proper lifetime in nanoseconds
Double_t fWidth; // total width in GeV
Int_t fParity;
Double_t fSpin;
Double_t fIsospin; // isospin
Double_t fI3; // i3
Int_t fStrangeness; // flavours are defined if i3 != -1
Int_t fCharm; // 1 or -1 for C-particles,
// 0 for others
Int_t fBeauty; //
Int_t fTop; //
Int_t fY; // X,Y: quantum numbers for the 4-th generation
Int_t fX; //
Int_t fStable; // 1 if stable, 0 otherwise
TObjArray* fDecayList; // array of decay channels
TString fParticleClass; // lepton, meson etc
Int_t fTrackingCode; // G3 tracking code of the particle
TParticlePDG* fAntiParticle; // pointer to antiparticle
//------------------------------------------------------------------------------
// functions
//------------------------------------------------------------------------------
public:
// ****** constructors and destructor
TParticlePDG();
TParticlePDG(int pdg_code);
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();
// ****** access methods
Int_t PdgCode () const { return fPdgCode; }
Double_t Mass () const { return fMass; }
Double_t Charge () const { return fCharge; } //charge in units of |e|/3
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 () {
return (fDecayList) ? fDecayList->GetEntriesFast() : 0;
}
Int_t TrackingCode() { return fTrackingCode; }
TDecayChannel* DecayChannel(Int_t i);
TParticlePDG* AntiParticle() { return fAntiParticle; }
// ****** modifiers
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; // *MENU*
ClassDef(TParticlePDG,2) // PDG static particle definition
};
#endif
syntax highlighted by Code2HTML, v. 0.9.1