Skip to content
Snippets Groups Projects
Commit aa602c15 authored by Sam's avatar Sam Committed by Samuel Jones
Browse files

Re #22515 Updated to use templates

Re #22515
parent e8914926
No related branches found
No related tags found
No related merge requests found
......@@ -71,7 +71,7 @@ private:
Mantid::API::MatrixWorkspace_const_sptr inputWorkspace,
Mantid::API::MatrixWorkspace_sptr outputWorkspace,
const size_t sizeOfX, const size_t sizeOfY,
unsigned int specNum);
unsigned int specNum);
};
} // namespace Algorithms
......
......@@ -67,22 +67,26 @@ std::vector<std::size_t> SortXAxis::createIndexes(const size_t sizeOfX) {
return workspaceIndicies;
}
template <typename Comparator>
void sortByXValue(std::vector<std::size_t> &workspaceIndicies,
MatrixWorkspace_const_sptr inputWorkspace,
unsigned int specNum,
Comparator const& compare) {
std::sort(workspaceIndicies.begin(), workspaceIndicies.end(),
[&](std::size_t lhs, std::size_t rhs) -> bool {
return compare(inputWorkspace->x(specNum)[lhs],
inputWorkspace->x(specNum)[rhs]);
});
}
void SortXAxis::sortIndicesByX(std::vector<std::size_t> &workspaceIndicies,
std::string order,
MatrixWorkspace_const_sptr inputWorkspace,
unsigned int specNum) {
if (order == "Ascending") {
std::sort(workspaceIndicies.begin(), workspaceIndicies.end(),
[&](std::size_t lhs, std::size_t rhs) -> bool {
return inputWorkspace->x(specNum)[lhs] <
inputWorkspace->x(specNum)[rhs];
});
sortByXValue(workspaceIndicies, inputWorkspace, specNum, std::less<double>());
} else if (order == "Descending") {
std::sort(workspaceIndicies.begin(), workspaceIndicies.end(),
[&](std::size_t lhs, std::size_t rhs) -> bool {
return inputWorkspace->x(specNum)[lhs] >
inputWorkspace->x(specNum)[rhs];
});
sortByXValue(workspaceIndicies, inputWorkspace, specNum, std::greater<double>());
}
}
......
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