diff --git a/Framework/Algorithms/src/Minus.cpp b/Framework/Algorithms/src/Minus.cpp index eedd17795ad35882b9d1edaee8ba37fb52204201..bd3b569932b293bec5e961bc6340cfa1cb42915b 100644 --- a/Framework/Algorithms/src/Minus.cpp +++ b/Framework/Algorithms/src/Minus.cpp @@ -22,7 +22,7 @@ void Minus::performBinaryOperation(const HistogramData::Histogram &lhs, HistogramData::HistogramY &YOut, HistogramData::HistogramE &EOut) { std::transform(lhs.y().begin(), lhs.y().end(), rhs.y().begin(), YOut.begin(), - std::minus<double>()); + std::minus<>()); std::transform(lhs.e().begin(), lhs.e().end(), rhs.e().begin(), EOut.begin(), VectorHelper::SumGaussError<double>()); } @@ -33,12 +33,14 @@ void Minus::performBinaryOperation(const HistogramData::Histogram &lhs, HistogramData::HistogramE &EOut) { using std::placeholders::_1; std::transform(lhs.y().begin(), lhs.y().end(), YOut.begin(), - std::bind(std::minus<double>(), _1, rhsY)); + [rhsY](const double &l) { return l - rhsY; }); // Only do E if non-zero, otherwise just copy - if (rhsE != 0) - std::transform(lhs.e().begin(), lhs.e().end(), EOut.begin(), - std::bind(VectorHelper::SumGaussError<double>(), _1, rhsE)); - else + if (rhsE != 0) { + double rhsE2 = rhsE * rhsE; + std::transform( + lhs.e().begin(), lhs.e().end(), EOut.begin(), + [rhsE2](const double &l) { return std::sqrt(l * l + rhsE2); }); + } else EOut = lhs.e(); } diff --git a/Framework/Algorithms/src/Plus.cpp b/Framework/Algorithms/src/Plus.cpp index 830f03c98b20e130d9b4f10f2ec1adfc7adcaa8d..b97ec5d3f8823ed3faa6f0357b5783d6d075e928 100644 --- a/Framework/Algorithms/src/Plus.cpp +++ b/Framework/Algorithms/src/Plus.cpp @@ -24,7 +24,7 @@ void Plus::performBinaryOperation(const HistogramData::Histogram &lhs, HistogramData::HistogramY &YOut, HistogramData::HistogramE &EOut) { std::transform(lhs.y().begin(), lhs.y().end(), rhs.y().begin(), YOut.begin(), - std::plus<double>()); + std::plus<>()); std::transform(lhs.e().begin(), lhs.e().end(), rhs.e().begin(), EOut.begin(), VectorHelper::SumGaussError<double>()); } @@ -36,12 +36,15 @@ void Plus::performBinaryOperation(const HistogramData::Histogram &lhs, HistogramData::HistogramE &EOut) { using std::placeholders::_1; std::transform(lhs.y().begin(), lhs.y().end(), YOut.begin(), - std::bind(std::plus<double>(), _1, rhsY)); + [rhsY](const double &l) { return l + rhsY; }); // Only do E if non-zero, otherwise just copy - if (rhsE != 0) - std::transform(lhs.e().begin(), lhs.e().end(), EOut.begin(), - std::bind(VectorHelper::SumGaussError<double>(), _1, rhsE)); - else + + if (rhsE != 0.) { + double rhsE2 = rhsE * rhsE; + std::transform( + lhs.e().begin(), lhs.e().end(), EOut.begin(), + [rhsE2](const double &l) { return std::sqrt(l * l + rhsE2); }); + } else EOut = lhs.e(); }