diff --git a/include/aare/CalculateEta.hpp b/include/aare/CalculateEta.hpp index 1566de5..289e8bc 100644 --- a/include/aare/CalculateEta.hpp +++ b/include/aare/CalculateEta.hpp @@ -6,14 +6,14 @@ namespace aare { -typedef enum { +enum class corner : int { cBottomLeft = 0, cBottomRight = 1, cTopLeft = 2, cTopRight = 3 -} corner; +}; -typedef enum { +enum class pixel : int { pBottomLeft = 0, pBottom = 1, pBottomRight = 2, @@ -23,7 +23,7 @@ typedef enum { pTopLeft = 6, pTop = 7, pTopRight = 8 -} pixel; +}; template struct Eta2 { double x; @@ -132,7 +132,8 @@ Eta2 calculate_eta2(const Cluster &cl) { if ((cl.data[0] + cl.data[2]) != 0) eta.y = static_cast(cl.data[2]) / (cl.data[0] + cl.data[2]); eta.sum = cl.sum(); - eta.c = cBottomLeft; // TODO! This is not correct, but need to put something + eta.c = static_cast(corner::cBottomLeft); // TODO! This is not correct, + // but need to put something return eta; } diff --git a/include/aare/Interpolator.hpp b/include/aare/Interpolator.hpp index 7e3a1c1..85ccf29 100644 --- a/include/aare/Interpolator.hpp +++ b/include/aare/Interpolator.hpp @@ -70,20 +70,20 @@ Interpolator::interpolate(const ClusterVector &clusters) { // cBottomRight = 1, // cTopLeft = 2, // cTopRight = 3 - switch (eta.c) { - case cTopLeft: + switch (static_cast(eta.c)) { + case corner::cTopLeft: dX = -1.; dY = 0; break; - case cTopRight:; + case corner::cTopRight:; dX = 0; dY = 0; break; - case cBottomLeft: + case corner::cBottomLeft: dX = -1.; dY = -1.; break; - case cBottomRight: + case corner::cBottomRight: dX = 0.; dY = -1.; break; diff --git a/src/CalculateEta.test.cpp b/src/CalculateEta.test.cpp index cdec79b..820ab44 100644 --- a/src/CalculateEta.test.cpp +++ b/src/CalculateEta.test.cpp @@ -21,10 +21,12 @@ using ClusterTypes = auto get_test_parameters() { return GENERATE( std::make_tuple(ClusterTypes{Cluster{0, 0, {1, 2, 3, 1}}}, - Eta2{2. / 3, 3. / 4, corner::cBottomLeft, 7}), + Eta2{2. / 3, 3. / 4, + static_cast(corner::cBottomLeft), 7}), std::make_tuple( ClusterTypes{Cluster{0, 0, {1, 2, 3, 4, 5, 6, 1, 2, 7}}}, - Eta2{6. / 11, 2. / 7, corner::cTopRight, 20}), + Eta2{6. / 11, 2. / 7, static_cast(corner::cTopRight), + 20}), std::make_tuple(ClusterTypes{Cluster{ 0, 0, {1, 6, 7, 6, 5, 4, 3, 2, 1, 2, 8, 9, 8, 1, 4, 5, 6, 7, 8, 4, 1, 1, 1, 1, 1}}}, @@ -61,14 +63,13 @@ TEST_CASE("calculate_eta2", "[eta_calculation]") { CHECK(eta.sum == expected_eta.sum); } +// 3x3 cluster layout (rotated to match the cBottomLeft enum): +// 6, 7, 8 +// 3, 4, 5 +// 0, 1, 2 -//3x3 cluster layout (rotated to match the cBottomLeft enum): -// 6, 7, 8 -// 3, 4, 5 -// 0, 1, 2 - - -TEST_CASE("Calculate eta2 for a 3x3 int32 cluster with the largest 2x2 sum in the bottom left", +TEST_CASE("Calculate eta2 for a 3x3 int32 cluster with the largest 2x2 sum in " + "the bottom left", "[eta_calculation]") { // Create a 3x3 cluster @@ -84,45 +85,43 @@ TEST_CASE("Calculate eta2 for a 3x3 int32 cluster with the largest 2x2 sum in th cl.data[6] = 8; cl.data[7] = 2; cl.data[8] = 3; - + // 8, 2, 3 // 20, 50, 3 // 30, 23, 5 auto eta = calculate_eta2(cl); - CHECK(eta.c == corner::cBottomLeft); + CHECK(eta.c == static_cast(corner::cBottomLeft)); CHECK(eta.x == 50.0 / (20 + 50)); // 4/(3+4) CHECK(eta.y == 50.0 / (23 + 50)); // 4/(1+4) - CHECK(eta.sum == 30+23+20+50); - + CHECK(eta.sum == 30 + 23 + 20 + 50); } -TEST_CASE("Calculate eta2 for a 3x3 int32 cluster with the largest 2x2 sum in the top left", - "[eta_calculation]") { +TEST_CASE("Calculate eta2 for a 3x3 int32 cluster with the largest 2x2 sum in " + "the top left", + "[eta_calculation]") { -// Create a 3x3 cluster -Cluster cl; -cl.x = 0; -cl.y = 0; -cl.data[0] = 8; -cl.data[1] = 12; -cl.data[2] = 5; -cl.data[3] = 77; -cl.data[4] = 80; -cl.data[5] = 3; -cl.data[6] = 82; -cl.data[7] = 91; -cl.data[8] = 3; + // Create a 3x3 cluster + Cluster cl; + cl.x = 0; + cl.y = 0; + cl.data[0] = 8; + cl.data[1] = 12; + cl.data[2] = 5; + cl.data[3] = 77; + cl.data[4] = 80; + cl.data[5] = 3; + cl.data[6] = 82; + cl.data[7] = 91; + cl.data[8] = 3; -// 82, 91, 3 -// 77, 80, 3 -// 8, 12, 5 - -auto eta = calculate_eta2(cl); -CHECK(eta.c == corner::cTopLeft); -CHECK(eta.x == 80. / (77 + 80)); // 4/(3+4) -CHECK(eta.y == 91.0 / (91 + 80)); // 7/(7+4) -CHECK(eta.sum == 77+80+82+91); + // 82, 91, 3 + // 77, 80, 3 + // 8, 12, 5 + auto eta = calculate_eta2(cl); + CHECK(eta.c == static_cast(corner::cTopLeft)); + CHECK(eta.x == 80. / (77 + 80)); // 4/(3+4) + CHECK(eta.y == 91.0 / (91 + 80)); // 7/(7+4) + CHECK(eta.sum == 77 + 80 + 82 + 91); } -