• Main Page
  • Classes
  • Files
  • File List

KernelSpikeResponseBase.h

00001 #ifndef KernelSpikeResponseBase_H_
00002 #define KernelSpikeResponseBase_H_
00003 
00004 #include "EvSimObject.h"
00005 #include "DirectEventSender.h"
00006 #include "SharedArray.h"
00007 #include "SharedArrayTypes.h"
00008 #include "SpikeResponse.h"
00009 
00010 
00011 class KernelSpikeResponseBase : public SpikeResponse, public DirectEventSender {
00012 
00013 public:
00014 
00015     KernelSpikeResponseBase() : resp_shape_amplitudes(0), resp_shape_timepoints(0) {};
00016 
00017     KernelSpikeResponseBase(const SharedArray<double> &resp_shape_amplitudes,
00018                             const SharedArray<double> &resp_shape_timepoints)
00019         : resp_shape_amplitudes(resp_shape_amplitudes.get()),
00020           resp_shape_timepoints(resp_shape_timepoints.get())
00021     {}
00022 
00023     virtual ~KernelSpikeResponseBase() {};
00024 
00025 
00026     void setResponseKernel(const SharedArray<double> &resp_shape_amplitudes,
00027                            const SharedArray<double> &resp_shape_timepoints) {
00028         this->resp_shape_amplitudes = resp_shape_amplitudes.get();
00029         this->resp_shape_timepoints = resp_shape_timepoints.get();
00030     }
00031 
00032     virtual unsigned numInputPorts() const
00033     {
00034         return 2;
00035     };
00036 
00037     virtual unsigned numOutputPorts() const
00038     {
00039         return 1;
00040     };
00041 
00042 
00043     virtual PortType getInputPortType(port_id_t p) const
00044     {
00045         if (p < 2)
00046             return eventPortDirect;
00047         return portUndefined;
00048     };
00049 
00050     virtual PortType getOutputPortType(port_id_t p) const
00051     {
00052         if (p == 0)
00053             return eventPortDirect;
00054         return portUndefined;
00055     };
00056 
00057     virtual void reset(SimContext &sim_ctxt)
00058     {
00059         curr_timepoint = RESPONSE_NOT_ACTIVE;
00060         next_expected_time = MAX_TIME;
00061         r = r_old = 0;
00062     };
00063 
00064     virtual void postAddedInNetwork(EvSimNetwork &net, EvSimObject::ID self);
00065 
00066 protected:
00067     static const unsigned RESPONSE_NOT_ACTIVE = ~(0u);
00068 
00069     const vector<double> * resp_shape_amplitudes;
00070     const vector<double> * resp_shape_timepoints;
00071 
00072     unsigned curr_timepoint;
00073     double next_expected_time;
00074 };
00075 
00076 #endif /* KernelSpikeResponseBase_H_ */
00077 

Generated on Wed Sep 18 2013 11:25:40 for NEVESIM by  doxygen 1.7.1