23#ifndef SIEGERT_NEURON_H
24#define SIEGERT_NEURON_H
31#include <gsl/gsl_integration.h>
32#include <gsl/gsl_sf_dawson.h>
33#include <gsl/gsl_sf_erf.h>
128void register_siegert_neuron(
const std::string& name );
130class siegert_neuron :
public ArchivingNode
137 siegert_neuron(
const siegert_neuron& );
139 ~siegert_neuron()
override;
147 using Node::handles_test_event;
148 using Node::sends_secondary_event;
150 void handle( DiffusionConnectionEvent& )
override;
151 void handle( DataLoggingRequest& )
override;
153 size_t handles_test_event( DiffusionConnectionEvent&,
size_t )
override;
154 size_t handles_test_event( DataLoggingRequest&,
size_t )
override;
157 sends_secondary_event( DiffusionConnectionEvent& )
override
161 void get_status(
Dictionary& )
const override;
162 void set_status(
const Dictionary& )
override;
165 void init_buffers_()
override;
166 void pre_run_hook()
override;
171 bool update_( Time
const&,
const long,
const long,
const bool );
173 void update( Time
const&,
const long,
const long )
override;
174 bool wfr_update( Time
const&,
const long,
const long )
override;
177 double siegert(
double,
double );
180 friend class RecordablesMap< siegert_neuron >;
181 friend class UniversalDataLogger< siegert_neuron >;
240 Buffers_( siegert_neuron& );
241 Buffers_(
const Buffers_&, siegert_neuron& );
243 std::vector< double > drift_input_;
244 std::vector< double > diffusion_input_;
246 std::vector< double > last_y_values;
247 UniversalDataLogger< siegert_neuron > logger_;
277 gsl_integration_workspace* gsl_w_;
280 static RecordablesMap< siegert_neuron > recordablesMap_;
284siegert_neuron::update( Time
const& origin,
const long from,
const long to )
286 update_( origin, from, to,
false );
290siegert_neuron::wfr_update( Time
const& origin,
const long from,
const long to )
292 State_ old_state = S_;
293 const bool wfr_tol_exceeded = update_( origin, from, to,
true );
296 return not wfr_tol_exceeded;
300siegert_neuron::handles_test_event( DiffusionConnectionEvent&,
size_t receptor_type )
302 if ( receptor_type == 0 )
306 else if ( receptor_type == 1 )
312 throw UnknownReceptorType( receptor_type, get_name() );
317siegert_neuron::handles_test_event( DataLoggingRequest& dlr,
size_t receptor_type )
319 if ( receptor_type != 0 )
321 throw UnknownReceptorType( receptor_type, get_name() );
323 return B_.logger_.connect_logging_device( dlr, recordablesMap_ );
327siegert_neuron::get_status(
Dictionary& d )
const
336siegert_neuron::set_status(
const Dictionary& d )
338 Parameters_ ptmp = P_;
Dictionary class for interface to Python and C++ API.
Definition dictionary.h:213
void get_status(Dictionary &d) const override
Export properties of the node by setting entries in the status dictionary.
Definition archiving_node.cpp:220
void set_status(const Dictionary &d) override
Change properties of the node according to the entries in the dictionary.
Definition archiving_node.cpp:236
const std::string recordables("recordables")
Namespace for the NEST simulation kernel.
Definition beta_normalization_factor.h:33
Declarations for base class Node.