/*************************************************************************** * TimeDrivenInternalSpike.h * * ------------------- * * copyright : (C) 2014 by Francisco Naveros * * email : fnaveros@ugr.es * ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 3 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef TIMEDRIVENINTERNALSPIKE_H_ #define TIMEDRIVENINTERNALSPIKE_H_ /*! * \file TimeDrvienInternalSpike.h * * \author Francisco Naveros * \date May 2014 * * This file declares a class which process all the internal spike generated in the TimeEventAllNeurons * and TimeEventAllNeurons_GPU. */ #include #include "./Spike.h" using namespace std; class Neuron; class Simulation; class VectorNeuronState; class TimeDrivenPropagatedSpike; class NeuronModelPropagationDelayStructure; /*! * \class TimeDrivenInternalSpike * * \brief Neural network internal spike for a set of time driven neurons. * * This class abstract the concept of spike. An internal spike is an event generated by the own cell * without external excitation. * * \author Francisco Naveros * \date May 2014 */ class TimeDrivenInternalSpike: public Spike{ private: /*! * \brief Vector neuron state associated to the time driven neuron mode. */ VectorNeuronState * State; NeuronModelPropagationDelayStructure * PropagationStructure; /*! * \brief Neuron model. */ Neuron** Neurons; TimeDrivenPropagatedSpike *** timeDrivenPropagatedSpike; const int OpenMP_index; /*! * \brief It process the internal spike associated to the "index" neuron. * * It process the internal spike associated to the "index" neuron. * * \param CurrentSimulation The simulation object where the event is working. * \param index inside the vector of neurons. */ void ProcessInternalSpikeEvent(Simulation * CurrentSimulation, int index); public: /*! * \brief Constructor with parameters. * * It creates and initializes a new spike with the parameters. * * \param NewTime Time of the new spike. * \param NewState Vector neuron state for the time driven neuron model. * \param Vector of neuron associated to the time driven neuron model. */ TimeDrivenInternalSpike(double NewTime, VectorNeuronState * NewState, NeuronModelPropagationDelayStructure * NewPropagationStrucuture, Neuron ** NewNeurons, int NewOpenMP_index); /*! * \brief Class destructor. * * It destroies an object of this class. */ ~TimeDrivenInternalSpike(); /*! * \brief It process an event in the simulation with the option of real time available. * * It process an event in the simulation with the option of real time available. * * \param CurrentSimulation The simulation object where the event is working. * \param RealTimeRestriction watchdog variable executed in a parallel OpenMP thread that * control the consumed time in each slot. */ void ProcessEvent(Simulation * CurrentSimulation, int RealTimeRestriction); /*! * \brief It process an event in the simulation without the option of real time available. * * It process an event in the simulation without the option of real time available. * * \param CurrentSimulation The simulation object where the event is working. */ void ProcessEvent(Simulation * CurrentSimulation); /*! * \brief this method print the event type. * * This method print the event type.. */ virtual void PrintType(); }; #endif /*TIMEDRIVENINTERNALSPIKE_H_*/