// McPart.h
// Sept 10,1998 Rob Shanks, Stanford Linear Accelerator Center
// 

#ifndef MCPART
#define MCPART

#include "TMath.h"
#include "TObject.h"

class McPart: public TObject {
private:
  Int_t m_type;     // STDHEP particle type number
  Int_t m_status;   // STDHEP status code
  McPart *m_parnt;  // Pointer to McPart object which is parent of particle
  Float_t m_InitMom[4];// Initial momentum (x,y,z,tot)
  Float_t m_InitPos[4];// Initial position (x,y,z,time)
  Float_t m_CalMom[4]; // Particle momentum at calorimeter
  Float_t m_CalPos[4]; // Particle position at calorimeter
  Float_t m_charge;    // Particle charge
public:
  McPart();
  McPart(Int_t ID);
  McPart(McPart* part);
  ~McPart() {};

  void SetUpParticle(Int_t type,Float_t charge,Int_t status,
		     McPart* parntptr, Float_t* tmom,Float_t* tpos);

  Int_t GetType() { return m_type;};
  Int_t GetStatus(){return m_status;};
  Float_t GetCharge(){return m_charge;};
  McPart* GetParnt(){return m_parnt;}; 

  void     SetMomentum(Float_t* momentum);
  Float_t* GetMomentum(){return m_InitMom;}; 
  void     SetPosition(Float_t* position);
  Float_t* GetPosition(){return m_InitPos;};
  void     SetParticleAtCal(Float_t* momentum,Float_t* position);
  Float_t* GetCalMom(){return m_CalMom;};
  Float_t* GetCalPos(){return m_CalPos;};

ClassDef(McPart,1)// Monte Carlo particle object
};

#endif
