#ifndef PARTICLE_H #define PARTICLE_H class particleType; class particle { public: particle(); //default constructor particle(const particle& p); //copy constructor particle(int iParticle,double px=0.0,double py=0.0,double pz=0.0); particle(const char *name,double px=0.0,double py=0.0,double pz=0.0); bool operator==(const particle &value); particle& operator=(const particle &value); particle& operator+=(const particle &value); particle operator+(const particle &value) const; static const int fMaxNumParticleType = 10; //max number of particle's types int getParticleType() const { return fIparticle; }; static int addParticleType( const char* name, double mass, int charge, double width=-1.0 ); void changeParticleType(int iParticle); void changeParticleType(const char* name); static void printParticleType(); //prints stats void print() const; //prints particle id double GetPx()const {return fPx;}; double GetPy()const {return fPy;}; double GetPz()const {return fPz;}; double GetMass() const; double GetEnergy() const; double invMass(particle & p) const; void setP(double px, double py, double pz) {fPx = px, fPy = py, fPz = pz;}; int Decay2body(particle &dau1, particle &dau2) const; //extra method private: double fPx, fPy, fPz; int fIparticle; //particle id static int FindParticle(const char *name); static particleType *fParticleType[fMaxNumParticleType]; static int fNparticleType; //current number of particle's types generated void Boost(double bx, double by, double bz); //extra method }; #endif