2121#include " ActsFatras/Digitization/UncorrelatedHitSmearer.hpp"
2222#include " ActsTests/CommonHelpers/FloatComparisons.hpp"
2323
24+ #include < cmath>
2425#include < fstream>
2526#include < string>
2627#include < vector>
@@ -119,6 +120,10 @@ BOOST_AUTO_TEST_CASE(GaussianSmearing) {
119120 for (auto & smearing : el.smearingDigiConfig .params ) {
120121 // check if the forcePositiveValue parameter is successfully parsed
121122 BOOST_CHECK (smearing.forcePositiveValues );
123+ const auto * gauss =
124+ smearing.smearFunction .target <const Digitization::Gauss>();
125+ BOOST_REQUIRE (gauss != nullptr );
126+ CHECK_CLOSE_REL (gauss->sigma , 0.05 , 1e-12 );
122127 std::fill (std::begin (s.indices ), std::end (s.indices ),
123128 static_cast <BoundIndices>(smearing.index ));
124129 std::fill (std::begin (s.smearFunctions ), std::end (s.smearFunctions ),
@@ -133,14 +138,12 @@ BOOST_AUTO_TEST_CASE(GaussianSmearing) {
133138 BOOST_CHECK (ret.ok ());
134139 auto [par, cov] = ret.value ();
135140 for (std::size_t i = 0 ; i < s.indices .size (); i++) {
136- BOOST_TEST_INFO (" Comparing smeared measurement "
141+ BOOST_TEST_INFO (" Checking smeared measurement "
137142 << i << " originating from bound parameter "
138143 << s.indices [i]);
139- double ref = f.boundParams [s.indices [i]];
140- if (s.forcePositive [i]) {
141- ref = std::abs (ref);
142- }
143- CHECK_CLOSE_REL (par[i], ref, 0.15 );
144+ BOOST_CHECK (std::isfinite (par[i]));
145+ BOOST_CHECK_GE (par[i], 0 .);
146+ CHECK_CLOSE_REL (cov (i, i), 0.05 * 0.05 , 1e-12 );
144147 }
145148}
146149
0 commit comments