/**************************************************************************

	MarkovSyn.h												   JJS 10/01/95
	
		part of CONICAL, the Computational Neuroscience Class Library
	
	This class defines a synapse based on the Markov formalism, as
	described in Destexhe, Mainen, & Sejnowski (1994).  The "Open"
	state is defined to be state 0 (zero); the conductance G is
	simply calculated as GetValue(0) * MaxG.  

	Requires:
		Synapse			-- base class
		Markov			-- base class
		
**************************************************************************/

#ifndef MARKOVSYN_H
#define MARKOVSYN_H

#include "Synapse.h"
#include "Markov.h"

class MarkovSyn : public Synapse, public Markov
{
  public:

	MarkovSyn( const int pStates, VSink *pTo, VSource *pComp, real pMaxG=0.1 )
	: Synapse( pTo, pComp, pMaxG ), Markov(pStates) {}
	
	virtual void Step( const real dt )		// update G
	{	Markov::Step(dt); Synapse::Step(dt);
		G = GetValue(0) * MaxG;				}
};

#endif
