#ifndef RETINAMAPFILTER_H
#define RETINAMAPFILTER_H

//#include <adaptationmapfilter.h>

#include <basemapfilter.h>
#include <radialfilter.h>


//******************** RetinaMapFilter: ****************************************

//A BaseMapFilter whose spatial filter is a (quasi) gaussian kernel, POSSIBLY WITH A VARYING RADIAL SCALE OF FILTERING
//An input nonlinearity can also be added.
//Possibly or alternatively, the filter can mimick cellular integration of ONE layer of cells with gap junctions, through function leakyHeatEquation.

class RetinaMapFilter: public BaseMapFilter //public AdaptationMapFilter
{
protected:
  double sigmaPool;
  double gCoupling;
  void spatialFiltering(CImg<double>* image);

public:
  RetinaMapFilter(int x=1, int y=1, double stepp=1);
  ~RetinaMapFilter(void);

  void set_sigmaPool(double val);
  void leakyHeatEquation(double tauLeak, double sigmaHeat);

  void tempStep(void);    	//same tempStep as before, but with additional possibility for intra-layer coupling through gap junctions, with strength gCoupling.

  RadialFilter sigmaPoolFilter, leakyHeatFilter;

//Would be better protected, but having it public ca be useful
  void allocateValues(void);
};
#endif

