|
9 | 9 | from numpy import typing as npt
|
10 | 10 |
|
11 | 11 | from imap_processing.spice import config
|
| 12 | +from imap_processing.spice.geometry import imap_state |
| 13 | +from imap_processing.spice.time import met_to_sclkticks, sct_to_et |
12 | 14 |
|
13 | 15 | logger = logging.getLogger(__name__)
|
14 | 16 |
|
@@ -221,3 +223,50 @@ def get_pointing_times(met_time: float) -> tuple[float, float]:
|
221 | 223 | ][0]
|
222 | 224 | pointing_end_met = repoint_df["repoint_start_met"].iloc[pointing_idx + 1].item()
|
223 | 225 | return pointing_start_met, pointing_end_met
|
| 226 | + |
| 227 | + |
| 228 | +def get_pointing_mid_time(met_time: float) -> float: |
| 229 | + """ |
| 230 | + Get mid-point of the pointing for the given MET time. |
| 231 | +
|
| 232 | + Get the mid-point time between the end of one repoint and |
| 233 | + start of the next. Input could be a MET time. |
| 234 | +
|
| 235 | + Parameters |
| 236 | + ---------- |
| 237 | + met_time : float |
| 238 | + The MET time in a repoint. |
| 239 | +
|
| 240 | + Returns |
| 241 | + ------- |
| 242 | + repoint_mid_time : float |
| 243 | + The mid MET time of the repoint maneuver. |
| 244 | + """ |
| 245 | + pointing_start_met, pointing_end_met = get_pointing_times(met_time) |
| 246 | + return (pointing_start_met + pointing_end_met) / 2 |
| 247 | + |
| 248 | + |
| 249 | +def get_mid_point_state(met_time: float) -> npt.NDArray: |
| 250 | + """ |
| 251 | + Get IMAP state for the mid-point. |
| 252 | +
|
| 253 | + Get IMAP state for the mid-point of the pointing in |
| 254 | + reference frame, ECLIPJ2000 and observer, SUN. |
| 255 | +
|
| 256 | + Parameters |
| 257 | + ---------- |
| 258 | + met_time : float |
| 259 | + The MET time in a pointing. |
| 260 | +
|
| 261 | + Returns |
| 262 | + ------- |
| 263 | + mid_point_state : numpy.ndarray |
| 264 | + The mid state of the pointing maneuver. |
| 265 | + """ |
| 266 | + # Get mid point time in ET |
| 267 | + mid_point_time = get_pointing_mid_time(met_time) |
| 268 | + mid_point_time_et = sct_to_et(met_to_sclkticks(mid_point_time)) |
| 269 | + |
| 270 | + # Convert mid point time to state |
| 271 | + pointing_state = imap_state(mid_point_time_et) |
| 272 | + return pointing_state |
0 commit comments