From 5ef40be545ceac62f5c77fb470cbb14115c5533f Mon Sep 17 00:00:00 2001 From: Tim Plummer Date: Mon, 29 Dec 2025 09:44:09 -0700 Subject: [PATCH 1/2] Report energy deltas in keV instead of eV --- imap_processing/lo/l2/lo_l2.py | 13 +++++++++---- imap_processing/tests/lo/test_lo_l2.py | 2 ++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/imap_processing/lo/l2/lo_l2.py b/imap_processing/lo/l2/lo_l2.py index 8785d5485..f7c468730 100644 --- a/imap_processing/lo/l2/lo_l2.py +++ b/imap_processing/lo/l2/lo_l2.py @@ -786,12 +786,17 @@ def populate_geometric_factors( dataset[var].values = gf_dataset[col].values # Update delta_minus and delta_plus based on ESA mode + # converting eV to keV if esa_mode == 0: # HiRes - dataset["energy_delta_minus"].values = energy_delta_hires_values - dataset["energy_delta_plus"].values = energy_delta_hires_values + dataset["energy_delta_minus"].values = ( + np.array(energy_delta_hires_values) * 1e-3 + ) + dataset["energy_delta_plus"].values = np.array(energy_delta_hires_values) * 1e-3 else: # HiThr - dataset["energy_delta_minus"].values = energy_delta_hithr_values - dataset["energy_delta_plus"].values = energy_delta_hithr_values + dataset["energy_delta_minus"].values = ( + np.array(energy_delta_hithr_values) * 1e-3 + ) + dataset["energy_delta_plus"].values = np.array(energy_delta_hithr_values) * 1e-3 return dataset diff --git a/imap_processing/tests/lo/test_lo_l2.py b/imap_processing/tests/lo/test_lo_l2.py index 9690dba21..9132fab59 100644 --- a/imap_processing/tests/lo/test_lo_l2.py +++ b/imap_processing/tests/lo/test_lo_l2.py @@ -1770,6 +1770,8 @@ def test_populate_geometric_factors( assert result["geometric_factor_stat_uncert"].values[i] == ( 1.5e-5 * (i + 1) ) + # Ensure that energy_deltas are in units of keV + assert np.all(result["energy_delta_plus"].values < 1) def test_populate_geometric_factors_no_gf_species(self): """Test population for species without geometric factors.""" From 38b40e7d85b5573f2610639b2aa21dad86d7eb2e Mon Sep 17 00:00:00 2001 From: Tim Plummer Date: Mon, 29 Dec 2025 09:55:50 -0700 Subject: [PATCH 2/2] Copilot feedback changes --- imap_processing/lo/l2/lo_l2.py | 30 +++++++++++++++----------- imap_processing/tests/lo/test_lo_l2.py | 1 + 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/imap_processing/lo/l2/lo_l2.py b/imap_processing/lo/l2/lo_l2.py index f7c468730..0b332b79a 100644 --- a/imap_processing/lo/l2/lo_l2.py +++ b/imap_processing/lo/l2/lo_l2.py @@ -762,12 +762,20 @@ def populate_geometric_factors( "geometric_factor_stat_uncert": f"GF_Trpl_{species.upper()}_unc", } if species == "h": - # NOTE: From an e-mail from Nathan on 2025-09-11 - energy_delta_hires_values = [5.43, 10.02, 18.61, 33.31, 64.98, 131.64, 262.35] - energy_delta_hithr_values = [8.81, 16.04, 28.50, 53.13, 105.60, 219.67, 413.60] + # NOTE: From an e-mail from Nathan on 2025-09-11 (values converted to keV) + energy_delta_hires_values = ( + np.array([5.43, 10.02, 18.61, 33.31, 64.98, 131.64, 262.35]) * 1e-3 + ) + energy_delta_hithr_values = ( + np.array([8.81, 16.04, 28.50, 53.13, 105.60, 219.67, 413.60]) * 1e-3 + ) else: # species == "o" - energy_delta_hires_values = [5.82, 11.10, 21.78, 41.47, 85.61, 180.67, 361.93] - energy_delta_hithr_values = [9.45, 17.84, 33.51, 66.61, 139.95, 302.24, 569.48] + energy_delta_hires_values = ( + np.array([5.82, 11.10, 21.78, 41.47, 85.61, 180.67, 361.93]) * 1e-3 + ) + energy_delta_hithr_values = ( + np.array([9.45, 17.84, 33.51, 66.61, 139.95, 302.24, 569.48]) * 1e-3 + ) # Get ESA mode from the map (assuming it's constant or we take the first) # TODO: Figure out how to handle esa_mode properly @@ -788,15 +796,11 @@ def populate_geometric_factors( # Update delta_minus and delta_plus based on ESA mode # converting eV to keV if esa_mode == 0: # HiRes - dataset["energy_delta_minus"].values = ( - np.array(energy_delta_hires_values) * 1e-3 - ) - dataset["energy_delta_plus"].values = np.array(energy_delta_hires_values) * 1e-3 + dataset["energy_delta_minus"].values = energy_delta_hires_values + dataset["energy_delta_plus"].values = energy_delta_hires_values else: # HiThr - dataset["energy_delta_minus"].values = ( - np.array(energy_delta_hithr_values) * 1e-3 - ) - dataset["energy_delta_plus"].values = np.array(energy_delta_hithr_values) * 1e-3 + dataset["energy_delta_minus"].values = energy_delta_hithr_values + dataset["energy_delta_plus"].values = energy_delta_hithr_values return dataset diff --git a/imap_processing/tests/lo/test_lo_l2.py b/imap_processing/tests/lo/test_lo_l2.py index 9132fab59..3083a262c 100644 --- a/imap_processing/tests/lo/test_lo_l2.py +++ b/imap_processing/tests/lo/test_lo_l2.py @@ -1772,6 +1772,7 @@ def test_populate_geometric_factors( ) # Ensure that energy_deltas are in units of keV assert np.all(result["energy_delta_plus"].values < 1) + assert np.all(result["energy_delta_minus"].values < 1) def test_populate_geometric_factors_no_gf_species(self): """Test population for species without geometric factors."""