PoissonInputNeuron.cpp

Go to the documentation of this file.
00001 #include "PoissonInputNeuron.h"
00002 
00003 ThreadSpecificRandomDistribution< ExponentialDistribution > PoissonInputNeuron::isi_gen;
00004 
00005 PoissonInputNeuron::PoissonInputNeuron(double rate, double duration, double Tstart, double Trefract) 
00006         : rate(rate), Tstart(Tstart), duration(duration), Trefract(Trefract)
00007 {       
00008 }
00009 
00010 
00011 PoissonInputNeuron::PoissonInputNeuron()
00012    : rate(5), Tstart(0), duration(1), Trefract(5e-3)
00013 {       
00014 }
00015 
00016 
00017 PoissonInputNeuron::~PoissonInputNeuron()
00018 {
00019 }
00020 
00021 
00022 int PoissonInputNeuron::reset(double dt)
00023 {
00024         if (Trefract == 0)      
00025                 Trefract = dt;
00026         isi_gen.set( ExponentialDistribution(rate) );
00027         nextSpikeTime = Tstart + isi_gen();
00028         endTime = Tstart + duration;
00029         active = true;  
00030         return 0;       
00031 }
00032 
00033 int PoissonInputNeuron::advance(AdvanceInfo const &ai)
00034 {       
00035         if (active) { // we are in spiking mode
00036                 if ((nextSpikeTime - ai.t.in_sec()) < ai.dt.in_sec() )
00037                 {       
00038                         out_port.setSpike( ai, nextSpikeTime );
00039                         nextSpikeTime += isi_gen() + Trefract;                                          
00040                         if (nextSpikeTime > endTime) 
00041                                 active = false;
00042                         return ADVANCEFLAG_HASSPIKED;
00043                 }
00044                 else                    
00045                         return 0;
00046         }
00047         return 0;
00048 }
00049 
00050 

Generated on Wed Jul 9 16:34:39 2008 for PCSIM by  doxygen 1.5.5