mirror of
https://github.com/slsdetectorgroup/aare.git
synced 2026-01-31 18:04:55 +01:00
Added fitting, fixed roi etc (#129)
Co-authored-by: Patrick <patrick.sieberer@psi.ch> Co-authored-by: JulianHeymes <julian.heymes@psi.ch>
This commit is contained in:
30
src/utils/task.cpp
Normal file
30
src/utils/task.cpp
Normal file
@@ -0,0 +1,30 @@
|
||||
#include "aare/utils/task.hpp"
|
||||
|
||||
namespace aare {
|
||||
|
||||
std::vector<std::pair<int, int>> split_task(int first, int last,
|
||||
int n_threads) {
|
||||
std::vector<std::pair<int, int>> vec;
|
||||
vec.reserve(n_threads);
|
||||
|
||||
int n_frames = last - first;
|
||||
|
||||
if (n_threads >= n_frames) {
|
||||
for (int i = 0; i != n_frames; ++i) {
|
||||
vec.push_back({i, i + 1});
|
||||
}
|
||||
return vec;
|
||||
}
|
||||
|
||||
int step = (n_frames) / n_threads;
|
||||
for (int i = 0; i != n_threads; ++i) {
|
||||
int start = step * i;
|
||||
int stop = step * (i + 1);
|
||||
if (i == n_threads - 1)
|
||||
stop = last;
|
||||
vec.push_back({start, stop});
|
||||
}
|
||||
return vec;
|
||||
}
|
||||
|
||||
} // namespace aare
|
||||
32
src/utils/task.test.cpp
Normal file
32
src/utils/task.test.cpp
Normal file
@@ -0,0 +1,32 @@
|
||||
#include "aare/utils/task.hpp"
|
||||
|
||||
#include <catch2/matchers/catch_matchers_floating_point.hpp>
|
||||
#include <catch2/catch_test_macros.hpp>
|
||||
|
||||
|
||||
TEST_CASE("Split a range into multiple tasks"){
|
||||
|
||||
auto tasks = aare::split_task(0, 10, 3);
|
||||
REQUIRE(tasks.size() == 3);
|
||||
REQUIRE(tasks[0].first == 0);
|
||||
REQUIRE(tasks[0].second == 3);
|
||||
REQUIRE(tasks[1].first == 3);
|
||||
REQUIRE(tasks[1].second == 6);
|
||||
REQUIRE(tasks[2].first == 6);
|
||||
REQUIRE(tasks[2].second == 10);
|
||||
|
||||
tasks = aare::split_task(0, 10, 1);
|
||||
REQUIRE(tasks.size() == 1);
|
||||
REQUIRE(tasks[0].first == 0);
|
||||
REQUIRE(tasks[0].second == 10);
|
||||
|
||||
tasks = aare::split_task(0, 10, 10);
|
||||
REQUIRE(tasks.size() == 10);
|
||||
for (int i = 0; i < 10; i++){
|
||||
REQUIRE(tasks[i].first == i);
|
||||
REQUIRE(tasks[i].second == i+1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user