From 5c401a163003f672beaddc5e43590028df5277a5 Mon Sep 17 00:00:00 2001 From: Roman Tolchenov Date: Fri, 29 May 2015 11:08:34 +0100 Subject: [PATCH] Re #11466. Fixing the issue. --- .../CurveFitting/src/FABADAMinimizer.cpp | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/Code/Mantid/Framework/CurveFitting/src/FABADAMinimizer.cpp b/Code/Mantid/Framework/CurveFitting/src/FABADAMinimizer.cpp index a823c4d21f8c..e0387dd5679e 100644 --- a/Code/Mantid/Framework/CurveFitting/src/FABADAMinimizer.cpp +++ b/Code/Mantid/Framework/CurveFitting/src/FABADAMinimizer.cpp @@ -436,19 +436,24 @@ void FABADAMinimizer::finalize() { par_def[j] = rc_chain_j[pos_min - red_conv_chain[nParams].begin()]; std::sort(rc_chain_j.begin(), rc_chain_j.end()); auto pos_par = std::find(rc_chain_j.begin(), rc_chain_j.end(), par_def[j]); - size_t sigma = static_cast(0.34 * double(conv_length)); - auto pos_left = rc_chain_j.begin(); - if (sigma < static_cast(std::distance(pos_left, pos_par))) { - pos_left = pos_par - sigma; - } - // make sure the iterator is valid in any case auto pos_right = rc_chain_j.end() - 1; - if (sigma < static_cast(std::distance(pos_par, pos_right))) { - pos_right = pos_par + sigma; + size_t sigma = static_cast(0.34 * double(conv_length)); + if (pos_par == rc_chain_j.end()) { + error_left[j] = *(pos_right - sigma); + error_rigth[j] = *pos_right; + } else { + + if (sigma < static_cast(std::distance(pos_left, pos_par))) { + pos_left = pos_par - sigma; + } + // make sure the iterator is valid in any case + if (sigma < static_cast(std::distance(pos_par, pos_right))) { + pos_right = pos_par + sigma; + } + error_left[j] = *pos_left - *pos_par; + error_rigth[j] = *pos_right - *pos_par; } - error_left[j] = *pos_left - *pos_par; - error_rigth[j] = *pos_right - *pos_par; } const bool outputParametersTable = !getPropertyValue("Parameters").empty();