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