/*--------------------------------------------------------------------------
   Author: Thomas Nowotny
  
   Institute: Institute for Nonlinear Dynamics
              University of California San Diego
              La Jolla, CA 92093-0402
  
   email to:  tnowotny@ucsd.edu
  
   initial version: 2005-08-17
  
--------------------------------------------------------------------------*/

#ifndef CN_POPPOISSONN_H
#define CN_POPPOISSONN_H

#include "CN_neuron.h"

#define POPPOI_IVARNO 0
#define POPPOI_PNO 4

double stdPOPPOI_p[POPPOI_PNO]= {
  0.0,  // refractory period [ms]
  -65.0, // resting potential
  20.0, // spiking potential
  0.5 // spike duration
};

double *POPPOI_p= stdPOPPOI_p;

class PopPoissonN: public neuron
{
 private:
  double fire_t;
  double next_spike;
  double *Lambda;
  
 public:
  PopPoissonN(int, vector<int>, double *);
  PopPoissonN(int, double *);
  ~PopPoissonN();
  virtual double E(double *);
  virtual void validate_E(double *, double);
  virtual void step();
  virtual void derivative(double *, double *) { }
  virtual void init(double *, double *);
  virtual void set_Lambda(double *);  // set an external rate variable
};

#endif