#ifndef Event_h
#define Event_h

class Event {

 public:

  Event( int n ); // create an event with number "n"
  ~Event();

  struct Particle {
    float pt;
    float eta;
    float phi;
    int charge;
    int muonId;
  };
  typedef const Particle* part_ptr;

  // add a particle to the event
  void add( float pt, float eta, float phi, int charge, int muonId );

  // return event id.
  int eventNumber() const { return evNumber; }
  // return number of particles
  int nParticles() const { return nPart; }
  // return array of particles pointers
  const part_ptr* particles() const { return partList; }

 private:

  // dummy copy constructor and assignment to prevent unadvertent copy
  Event           ( const Event& x );
  Event& operator=( const Event& x );

  int evNumber;       // event id
  int nPart;          // number of particles
  int nPMax;          // pointer array size
  part_ptr* partList; // array of particle pointers

};

#endif

