Skip to content
Snippets Groups Projects
Commit 03dfa400 authored by Wuttke, Joachim's avatar Wuttke, Joachim
Browse files

even simpler handling of delta distribution

parent 116fcf61
No related branches found
No related tags found
1 merge request!1299decisive simplification of scan resolution evaluation
......@@ -13,6 +13,7 @@
// ************************************************************************************************
#include "Param/Distrib/RangedDistributions.h"
#include "Base/Util/Assert.h"
#include "Param/Distrib/Distributions.h"
#include "Param/Distrib/ParameterSample.h"
#include <cmath>
......@@ -64,22 +65,16 @@ IRangedDistribution::~IRangedDistribution() = default;
std::vector<ParameterSample> IRangedDistribution::generateSamples(double mean, double stddev) const
{
auto generator = distribution(mean, stddev);
if (!generator->isDelta())
return generator->equidistantSamples(m_n_samples, m_sigma_factor, m_limits);
if (stddev == 0) // it's a delta distribution
return {{mean, 1.0}};
ASSERT(stddev > 0);
// handling the case of delta distributions
auto samples = generator->equidistantSamples(1, m_sigma_factor, m_limits);
ParameterSample& sample = samples[0]; // there is only one element in the vector
sample.weight = 1.0;
return std::vector<ParameterSample>(1, sample);
auto generator = distribution(mean, stddev);
return generator->equidistantSamples(m_n_samples, m_sigma_factor, m_limits);
}
IDistribution1D* IRangedDistribution::distribution(double mean, double stddev) const
{
if (stddev < 0.0)
throw std::runtime_error(
"Error in IRangedDistribution::distribution: standard deviation is less than zero");
return distribution_impl(mean, stddev);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment