Files
cpp/src/times/base.h
Dominik Demuth bfb1cb314c add more motions
2024-12-15 18:34:05 +01:00

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