// K-AHP Ion Channel Dynamics
//
// Copyright 2007 John L Baker. All rights reserved.
//
// This software is provided AS IS under the terms of the Open Source
// MIT License. See http://www.opensource.org/licenses/mit-license.php.
//
// File: ionchan_k_ahp_baker_2003.h
//
// Release:		1.0.0
// Author:		John Baker
// Updated:		14 July 2006
//
// Description:
//
// This header file contains the classes used to implement
// the K-AHP channel definitions. This follows the formalism
// used in Migliore but adjusted for a half activation value
// of 600 nanoM [Ca++]-in (see Hirschberg et al.)
//
// Note that Lancaster & Adams suggest a temperature sensivity
// that would imply a Q10 for the current of around 16, but
// temperature effects on calcium currents may be a factor. 
// A Q10 for this channel alone is not known and thus no
// Q10 is included in this implementation pending further data.
//
// References:
//
// Hirschberg B, Maulie J, Adelman JP, Marrion NV (1999). Gating
// properties of single SK channels in hippocampal CA1 pyramidal
// neurons. Biophysical Journal 77, 1905-1913.
//
// Lancaster B & Adams PR (1986). Calcium-dependent current
// generating the afterhyperpolatization of hippocampal neurons.
// J Neurophysiology 55, 1268-1282.
//
// Migliore M, Cook EP, Jaffe DB, Turner DA, and Johnston D. (1995).
// Computer simulations of morphologically reconstructed CA3
// hippocampal neurons. J. Neurophysiol. 73(3), 1157-1168.

 
// Only include this header once
#ifndef __IONCHAN_K_AHP_BAKER_2003_H_
#define __IONCHAN_K_AHP_BAKER_2003_H_

#include "bnsf.h"

using namespace std;
using namespace BNSF;

namespace BAKER_2003 {


	// --------------------------------------------
	// K_AHP Ion Channel classes
	// --------------------------------------------

	class K_AHP_channel : public HHIonChannel {

	public:
		// Constructors and destructor
		K_AHP_channel(Number gSpVal=0, CalciumPool* pool=NULL);
		virtual ~K_AHP_channel();

		// State vector label functions
		virtual const char*	componentName() {return "K_AHP"; }
		virtual const char** stateLabels() { 
			static const char* sl[] = { "q" }; return sl; }

		// Alpha/beta Hodgkin Huxley functions
		virtual Number	alpha();
		virtual Number	beta();

		// Reversal potential for K
		virtual Number	Vrev() { return _Vrev; }

		// Conductance for the whole channel
		virtual Number	conductance();

	protected:

		static const	Number		_Vrev;

	};
};


#endif // #ifndef __IONCHAN_K_AHP_BAKER_2003_H_