1
0
mirror of https://github.com/aportelli/LatAnalyze.git synced 2025-12-30 08:34:43 +00:00

XY data: user can pass a sequence of minimisers to perform a fit

This commit is contained in:
2016-04-01 21:38:49 +01:00
parent b3c2b17eef
commit c294553991
4 changed files with 91 additions and 14 deletions

View File

@@ -250,7 +250,8 @@ const XYStatData & XYSampleData::getData(void)
}
// fit /////////////////////////////////////////////////////////////////////////
SampleFitResult XYSampleData::fit(Minimizer &minimizer, const DVec &init,
SampleFitResult XYSampleData::fit(std::vector<Minimizer *> &minimizer,
const DVec &init,
const std::vector<const DoubleModel *> &v)
{
computeVarMat();
@@ -265,12 +266,17 @@ SampleFitResult XYSampleData::fit(Minimizer &minimizer, const DVec &init,
FOR_STAT_ARRAY(result, s)
{
setDataToSample(s);
sampleResult = data_.fit(minimizer, initCopy, v);
if (s == central)
{
sampleResult = data_.fit(minimizer, initCopy, v);
}
else
{
sampleResult = data_.fit(*(minimizer.back()), initCopy, v);
}
initCopy = sampleResult.segment(0, initCopy.size());
result[s] = sampleResult;
result.chi2_[s] = sampleResult.getChi2();
for (unsigned int j = 0; j < v.size(); ++j)
{
result.model_[j].resize(nSample_);
@@ -284,6 +290,15 @@ SampleFitResult XYSampleData::fit(Minimizer &minimizer, const DVec &init,
return result;
}
SampleFitResult XYSampleData::fit(Minimizer &minimizer,
const DVec &init,
const std::vector<const DoubleModel *> &v)
{
vector<Minimizer *> mv{&minimizer};
return fit(mv, init, v);
}
// schedule data initilization from samples ////////////////////////////////////
void XYSampleData::scheduleDataInit(void)
{