plasmapy.diagnostics.thomson.spectral_density_model(wavelengths, settings, params)[source]

Returns a lmfit.model.Model function for Thomson spectral density function.

  • wavelengths (numpy.ndarray) – Wavelength array, in meters.

  • settings (dict) –

    A dictionary of non-variable inputs to the spectral density function which must include the following keys:

    • "probe_wavelength": Probe wavelength in meters

    • "probe_vec" : (3,) unit vector in the probe direction

    • "scatter_vec": (3,) unit vector in the scattering direction

    • "ions" : list of particle strings, Particle objects, or a ParticleList describing each ion species. All ions must be positive.

    and may contain the following optional variables:

    • "electron_vdir" : (e#, 3) array of electron velocity unit vectors

    • "ion_vdir" : (e#, 3) array of ion velocity unit vectors

    • "instr_func" : A function that takes a wavelength Quantity array and returns a spectrometer instrument function as an ndarray.

    These quantities cannot be varied during the fit.

  • params (Parameters object) –

    A Parameters object that must contain the following variables:

    • n: Total combined density of the electron populations in m-3

    • T_e_e# : Temperature in eV

    • T_i_i# : Temperature in eV

    where where i# and where e# are replaced by the number of electron and ion populations, zero-indexed, respectively (e.g., 0, 1, 2, …). The Parameters object may also contain the following optional variables:

    • "efract_e#" : Fraction of each electron population (must sum to 1)

    • "ifract_i#" : Fraction of each ion population (must sum to 1)

    • "electron_speed_e#" : Electron speed in m/s

    • "ion_speed_ei" : Ion speed in m/s

    These quantities can be either fixed or varying.


model – An lmfit.model.Model of the spectral density function for the provided settings and parameters that can be used to fit Thomson scattering data.

Return type:



If an instrument function is included, the data should not include any numpy.nan values — instead regions with no data should be removed from both the data and wavelength arrays using numpy.delete.