39 lines
1.2 KiB
C++
39 lines
1.2 KiB
C++
#ifndef RWSIM_TIMESBASE_H
|
|
#define RWSIM_TIMESBASE_H
|
|
|
|
#include <random>
|
|
#include <unordered_map>
|
|
|
|
namespace times {
|
|
class BaseDistribution {
|
|
public:
|
|
virtual ~BaseDistribution() = default;
|
|
|
|
BaseDistribution(std::string, double, std::mt19937_64&);
|
|
explicit BaseDistribution(std::string, std::mt19937_64&);
|
|
|
|
[[nodiscard]] double getTau() const { return m_tau; }
|
|
void setTau(const double tau) { m_tau = tau; }
|
|
[[nodiscard]] std::string getName() const { return m_name; }
|
|
|
|
virtual void setParameters(const std::unordered_map<std::string, double>&);
|
|
[[nodiscard]] virtual std::unordered_map<std::string, double> getParameters() const;
|
|
|
|
virtual void initialize() = 0;
|
|
virtual void draw_tau() = 0;
|
|
[[nodiscard]] double tau_wait() const;
|
|
|
|
[[nodiscard]] virtual std::string toString() const = 0;
|
|
|
|
static BaseDistribution* createFromInput(const std::string& input, std::mt19937_64& rng);
|
|
|
|
protected:
|
|
std::string m_name{"BaseDistribution"};
|
|
double m_tau{1.};
|
|
double m_tau_jump{1.};
|
|
std::mt19937_64& m_rng;
|
|
};
|
|
}
|
|
|
|
#endif //RWSIM_TIMESBASE_H
|