Source code for pyrfu.mms.remove_idist_background

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# 3rd party imports
import numpy as np
from scipy import constants

__author__ = "Louis Richard"
__email__ = "louisr@irfu.se"
__copyright__ = "Copyright 2020-2023"
__license__ = "MIT"
__version__ = "2.4.2"
__status__ = "Prototype"


[docs]def remove_idist_background(vdf, def_bg): r"""Remove the mode background population due to penetrating radiation `def_bg` from the ion velocity distribution function `vdf` using the method from [1]_. Parameters ---------- vdf : xarray.Dataset Ion velocity distribution function. def_bg : xarray.DataArray Omni-directional ion differential energy flux. Returns ------- vdf_new : xarray.Dataset Ion velocity distribution function cleaned. References ---------- .. [1] Gershman, D. J., Dorelli, J. C., Avanov,L. A., Gliese, U., Barrie, A., Schiff, C.,et al. (2019). Systematic uncertainties in plasma parameters reported by the fast plasma investigation on NASA's magnetospheric multiscale mission. Journal of Geophysical Research: Space Physics, 124, https://doi.org/10.1029/2019JA026980 """ # Tile background flux to number of energy channels of the # FPI-DIS instrument def_bg_tmp = np.tile(def_bg.data[:, np.newaxis], (1, vdf.energy.shape[1])) # Convert differential energy flux (cm^2 s sr)^{-1} of the background # population (penetrating radiations) to phase-space density (s^3 m^{-6}) coeff = constants.proton_mass / (constants.elementary_charge * vdf.energy.data) vdf_bg = def_bg_tmp.copy() * 1e4 / 2 vdf_bg *= coeff**2 vdf_bg /= 1e12 # Tile the background phase-space density to number of azimuthal # and elevation angles channels of the FPI-DIS instrument vdf_bg = np.tile( vdf_bg[:, :, np.newaxis, np.newaxis], (1, 1, vdf.phi.shape[1], vdf.theta.shape[0]), ) vdf_new = vdf.copy() vdf_new.data.data -= vdf_bg.data return vdf_new