Skip to content

Commit 73ff9d3

Browse files
authored
Merge pull request #903 from beomki-yeo/remove-sign-in-ms-cov
Remove the Navigation Direction Sign for Process Noise
2 parents cefce90 + ac13ee3 commit 73ff9d3

File tree

4 files changed

+10
-34
lines changed

4 files changed

+10
-34
lines changed

core/include/detray/propagator/actors/pointwise_material_interactor.hpp

+8-11
Original file line numberDiff line numberDiff line change
@@ -175,16 +175,15 @@ struct pointwise_material_interactor : actor {
175175

176176
if (interactor_state.do_covariance_transport) {
177177

178-
update_qop_variance(covariance, interactor_state.sigma_qop,
179-
nav_dir);
178+
update_qop_variance(covariance, interactor_state.sigma_qop);
180179
}
181180
}
182181

183182
if (interactor_state.do_covariance_transport) {
184183

185184
update_angle_variance(
186185
covariance, bound_params.dir(),
187-
interactor_state.projected_scattering_angle, nav_dir);
186+
interactor_state.projected_scattering_angle);
188187
}
189188
}
190189
}
@@ -226,13 +225,12 @@ struct pointwise_material_interactor : actor {
226225
/// @param[in] sigma_qop variance of q over p
227226
/// @param[in] sign navigation direction
228227
DETRAY_HOST_DEVICE inline void update_qop_variance(
229-
bound_matrix_type &covariance, const scalar_type sigma_qop,
230-
const int sign) const {
228+
bound_matrix_type &covariance, const scalar_type sigma_qop) const {
231229

232230
const scalar_type variance_qop{sigma_qop * sigma_qop};
233231

234232
getter::element(covariance, e_bound_qoverp, e_bound_qoverp) +=
235-
math::copysign(variance_qop, static_cast<scalar_type>(sign));
233+
variance_qop;
236234
}
237235

238236
/// @brief Update the variance of phi and theta of bound track parameter
@@ -243,14 +241,13 @@ struct pointwise_material_interactor : actor {
243241
/// @param[in] sign navigation direction
244242
DETRAY_HOST_DEVICE inline void update_angle_variance(
245243
bound_matrix_type &covariance, const vector3_type &dir,
246-
const scalar_type projected_scattering_angle, const int sign) const {
244+
const scalar_type projected_scattering_angle) const {
247245

248-
// variance of projected scattering angle
249-
const scalar_type var_scattering_angle{math::copysign(
250-
projected_scattering_angle * projected_scattering_angle,
251-
static_cast<scalar_type>(sign))};
246+
const scalar_type var_scattering_angle{projected_scattering_angle *
247+
projected_scattering_angle};
252248

253249
constexpr auto inv{detail::invalid_value<scalar_type>()};
250+
254251
getter::element(covariance, e_bound_phi, e_bound_phi) +=
255252
(dir[2] == 1.f) ? inv
256253
: var_scattering_angle / (1.f - dir[2] * dir[2]);

tests/integration_tests/cpu/material/material_interaction.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ GTEST_TEST(detray_material, telescope_geometry_scattering_angle) {
250250
if (i == 0u) {
251251
pointwise_material_interactor<algebra_t>{}.update_angle_variance(
252252
bound_cov, traj.dir(),
253-
simulator_state.projected_scattering_angle, 1);
253+
simulator_state.projected_scattering_angle);
254254
}
255255

256256
phis.push_back(final_param.phi());

tests/integration_tests/cpu/propagator/backward_propagation.cpp

-18
Original file line numberDiff line numberDiff line change
@@ -154,17 +154,6 @@ TEST_P(BackwardPropagation, backward_propagation) {
154154

155155
const auto bound_cov0 = bound_param0.covariance();
156156
const auto bound_cov1 = bound_param1.covariance();
157-
const auto bound_cov2 = bound_param2.covariance();
158-
159-
// Check covaraince
160-
for (unsigned int i = 0u; i < e_bound_size; i++) {
161-
for (unsigned int j = 0u; j < e_bound_size; j++) {
162-
EXPECT_NEAR(getter::element(bound_cov0, i, j),
163-
getter::element(bound_cov2, i, j), tol)
164-
<< "i: " << i << "\nj: " << j << "\n"
165-
<< bound_param2;
166-
}
167-
}
168157

169158
// Some sanity checks
170159
EXPECT_TRUE(bound_param0.p(ptc.charge()) > bound_param1.p(ptc.charge()));
@@ -176,13 +165,6 @@ TEST_P(BackwardPropagation, backward_propagation) {
176165
getter::element(bound_cov0, e_bound_theta, e_bound_theta));
177166
EXPECT_TRUE(getter::element(bound_cov1, e_bound_phi, e_bound_phi) >
178167
getter::element(bound_cov0, e_bound_phi, e_bound_phi));
179-
180-
EXPECT_TRUE(getter::element(bound_cov1, e_bound_qoverp, e_bound_qoverp) >
181-
getter::element(bound_cov2, e_bound_qoverp, e_bound_qoverp));
182-
EXPECT_TRUE(getter::element(bound_cov1, e_bound_theta, e_bound_theta) >
183-
getter::element(bound_cov2, e_bound_theta, e_bound_theta));
184-
EXPECT_TRUE(getter::element(bound_cov1, e_bound_phi, e_bound_phi) >
185-
getter::element(bound_cov2, e_bound_phi, e_bound_phi));
186168
}
187169

188170
INSTANTIATE_TEST_SUITE_P(

tests/unit_tests/cpu/simulation/scattering.cpp

+1-4
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,6 @@ GTEST_TEST(detray_simulation, angle_update) {
9696
// Projected scattering angle (Tests will fail with relatively large angles)
9797
const scalar_t projected_scattering_angle{0.01f};
9898

99-
// Navigation in forward direction
100-
const int direction_sign = 1;
101-
10299
// Initial bound covariance
103100
auto bound_cov = matrix::zero<
104101
typename bound_track_parameters<algebra_t>::covariance_type>();
@@ -108,7 +105,7 @@ GTEST_TEST(detray_simulation, angle_update) {
108105

109106
// Update the bound covariance with projected scattering angle
110107
pointwise_material_interactor<algebra_t>().update_angle_variance(
111-
bound_cov, dir, projected_scattering_angle, direction_sign);
108+
bound_cov, dir, projected_scattering_angle);
112109

113110
// Get the samples of phi and theta after the random scattering
114111
std::vector<scalar_t> phis;

0 commit comments

Comments
 (0)