diff --git a/eg/inc/TParticle.h b/eg/inc/TParticle.h index c3a026ef8292a976ede8343987725baba4759258..4505ef1b42fd9679b5efef9446d3ec2dab14548a 100644 --- a/eg/inc/TParticle.h +++ b/eg/inc/TParticle.h @@ -1,4 +1,4 @@ -// @(#)root/eg:$Name: $:$Id: TParticle.h,v 1.9 2004/10/22 07:16:01 brun Exp $ +// @(#)root/eg:$Name: v4-03-02 $:$Id: TParticle.h,v 1.10 2004/12/16 08:07:40 brun Exp $ // Author: Rene Brun , Federico Carminati 26/04/99 /************************************************************************* @@ -94,78 +94,66 @@ public: // virtual TString* Name () const { return fName.Data(); } // virtual char* GetName() const { return fName.Data(); } - Int_t GetStatusCode () const { return fStatusCode; } - Int_t GetPdgCode () const { return fPdgCode; } - Int_t GetFirstMother () const { return fMother[0]; } - Int_t GetMother (Int_t i) const { return fMother[i]; } - Int_t GetSecondMother () const { return fMother[1]; } - Int_t GetFirstDaughter() const { return fDaughter[0]; } - Int_t GetDaughter (Int_t i) const { return fDaughter[i]; } - Int_t GetLastDaughter () const { return fDaughter[1]; } - Double_t GetCalcMass () const { return fCalcMass; } - Double_t GetMass () { return GetPDG()->Mass();} - - Int_t GetNDaughters () const { return fDaughter[1]>0 ? fDaughter[1]-fDaughter[0]+1 : 0;} + Int_t GetStatusCode () const { return fStatusCode; } + Int_t GetPdgCode () const { return fPdgCode; } + Int_t GetFirstMother () const { return fMother[0]; } + Int_t GetMother (Int_t i) const { return fMother[i]; } + Int_t GetSecondMother () const { return fMother[1]; } + Bool_t IsPrimary () const { return fMother[0]>-1 ? kFALSE : kTRUE; } //Is this particle primary one? + Int_t GetFirstDaughter() const { return fDaughter[0]; } + Int_t GetDaughter (Int_t i) const { return fDaughter[i]; } + Int_t GetLastDaughter () const { return fDaughter[1]; } + Double_t GetCalcMass () const { return fCalcMass; } + Double_t GetMass () { return GetPDG()->Mass(); } + Int_t GetNDaughters () const { return fDaughter[1]>0 ? fDaughter[1]-fDaughter[0]+1 : 0;} + Float_t GetWeight () const { return fWeight; } void GetPolarisation(TVector3 &v); - Float_t GetWeight () const { return fWeight;} TParticlePDG* GetPDG (Int_t mode = 0); - - Int_t Beauty () { return GetPDG()->Beauty(); } - Int_t Charm () { return GetPDG()->Charm(); } - Int_t Strangeness () { return GetPDG()->Strangeness();} - - void Momentum(TLorentzVector &v) const { v.SetPxPyPzE(fPx,fPy,fPz,fE);} - void ProductionVertex(TLorentzVector &v) const { v.SetXYZT(fVx,fVy,fVz,fVt);} - - // ****** redefine several most oftenly used - // methods of LORENTZ_VECTOR - - Double_t Vx () const { return fVx;} - Double_t Vy () const { return fVy;} - Double_t Vz () const { return fVz;} - Double_t T () const { return fVt;} - - Double_t Px () const { return fPx; } - Double_t Py () const { return fPy; } - Double_t Pz () const { return fPz; } - Double_t P () const - { return TMath::Sqrt(fPx*fPx+fPy*fPy+fPz*fPz); } - Double_t Pt () const - { return TMath::Sqrt(fPx*fPx+fPy*fPy); } - Double_t Energy() const { return fE; } - Double_t Eta () const + Int_t Beauty () { return GetPDG()->Beauty(); } + Int_t Charm () { return GetPDG()->Charm(); } + Int_t Strangeness () { return GetPDG()->Strangeness(); } + void Momentum(TLorentzVector &v) const { v.SetPxPyPzE(fPx,fPy,fPz,fE); } + void ProductionVertex(TLorentzVector &v) const { v.SetXYZT(fVx,fVy,fVz,fVt); } + +// ****** redefine several most oftenly used methods of LORENTZ_VECTOR + + Double_t Vx () const { return fVx; } + Double_t Vy () const { return fVy; } + Double_t Vz () const { return fVz; } + Double_t T () const { return fVt; } + Double_t R () const { return TMath::Sqrt(fVx*fVx+fVy*fVy); } //Radius of production vertex in cylindrical system + Double_t Rho () const { return TMath::Sqrt(fVx*fVx+fVy*fVy+fVz*fVz); } //Radius of production vertex in spherical system + Double_t Px () const { return fPx; } + Double_t Py () const { return fPy; } + Double_t Pz () const { return fPz; } + Double_t P () const { return TMath::Sqrt(fPx*fPx+fPy*fPy+fPz*fPz); } + Double_t Pt () const { return TMath::Sqrt(fPx*fPx+fPy*fPy); } + Double_t Energy () const { return fE; } + Double_t Eta () const { if (TMath::Abs(P() != fPz)) return 0.5*TMath::Log((P()+fPz)/(P()-fPz)); else return 1.e30; } - // note that Phi() returns an angle between 0 and 2pi - Double_t Phi () const { return TMath::Pi()+TMath::ATan2(-fPy,-fPx); } - + Double_t Phi () const { return TMath::Pi()+TMath::ATan2(-fPy,-fPx); } // note that Phi() returns an angle between 0 and 2pi Double_t Theta () const { return (fPz==0)?TMath::PiOver2():TMath::ACos(fPz/P()); } // setters - void SetFirstMother (int code) { fMother[0] = code ; } - void SetMother (int i, int code) { fMother[i] = code ; } - void SetLastMother (int code) { fMother[1] = code ; } - void SetFirstDaughter(int code) { fDaughter[0] = code ; } - void SetDaughter(int i, int code) { fDaughter[i] = code ; } - void SetLastDaughter(int code) { fDaughter[1] = code ; } - void SetCalcMass(Double_t mass) { fCalcMass=mass;} + void SetFirstMother (int code) { fMother[0] = code ; } + void SetMother (int i, int code) { fMother[i] = code ; } + void SetLastMother (int code) { fMother[1] = code ; } + void SetFirstDaughter(int code) { fDaughter[0] = code ; } + void SetDaughter(int i, int code) { fDaughter[i] = code ; } + void SetLastDaughter(int code) { fDaughter[1] = code ; } + void SetCalcMass(Double_t mass) { fCalcMass=mass;} void SetPolarisation(Double_t polx, Double_t poly, Double_t polz); - void SetPolarisation(const TVector3& v) {SetPolarisation(v.X(), v.Y(), v.Z());} - void SetStatusCode(int status) {fStatusCode = status;} - void SetWeight(Float_t weight = 1) { fWeight = weight; } - - void SetMomentum(Double_t px, Double_t py, Double_t pz, Double_t e) - {fPx=px; fPy=py; fPz=pz; fE=e;} - void SetMomentum(const TLorentzVector& p) - {SetMomentum(p.Px(),p.Py(),p.Pz(),p.Energy());} - - void SetProductionVertex(Double_t vx, Double_t vy, Double_t vz, Double_t t) - {fVx=vx; fVy=vy; fVz=vz; fVt=t;} - void SetProductionVertex(const TLorentzVector& v) - {SetProductionVertex(v.X(),v.Y(),v.Z(),v.T());} + void SetPolarisation(const TVector3& v) {SetPolarisation(v.X(), v.Y(), v.Z());} + void SetStatusCode(int status) {fStatusCode = status;} + void SetWeight(Float_t weight = 1) {fWeight = weight; } + void SetMomentum(Double_t px, Double_t py, Double_t pz, Double_t e) {fPx=px; fPy=py; fPz=pz; fE=e;} + void SetMomentum(const TLorentzVector& p) {SetMomentum(p.Px(),p.Py(),p.Pz(),p.Energy());} + void SetProductionVertex(Double_t vx, Double_t vy, Double_t vz, Double_t t) {fVx=vx; fVy=vy; fVz=vz; fVt=t;} + void SetProductionVertex(const TLorentzVector& v) {SetProductionVertex(v.X(),v.Y(),v.Z(),v.T());} // ****** overloaded functions of TObject