@@ -292,10 +292,49 @@ def interpolate(self, wavelength=None):
292292 return self .response
293293
294294 def _check_spectra (self , spectra , default_unit = u .Lsun / u .angstrom / u .cm ** 2 ):
295- if spectra is not None and not isinstance (spectra , u .Quantity ):
296- return spectra * default_unit
297- else :
295+ """
296+ Ensure that ``spectra`` is an astropy Quantity and return it as flux density
297+ per wavelength (F_lambda), using `self.wavelength` for conversions if
298+ necessary.
299+
300+ Parameters
301+ ----------
302+ spectra : array-like or ~astropy.units.Quantity
303+ Spectrum values. If array-like (dimensionless), it will be multiplied by
304+ `default_unit`. If a Quantity, it may be either F_nu (per frequency) or
305+ F_lambda (per wavelength).
306+ default_unit : ~astropy.units.Unit, optional
307+ Target per-wavelength flux-density unit to return, e.g. Lsun / Å / cm²
308+ (must be equivalent to power / area / length).
309+
310+ Returns
311+ -------
312+ astropy.units.Quantity
313+ Spectrum expressed in `default_unit` (per-wavelength flux density).
314+
315+ Notes
316+ -----
317+ - Requires `self.wavelength` to be defined as an astropy Quantity with
318+ length units.
319+ - If `spectra` is already per wavelength, only a unit conversion is applied.
320+ - If `spectra` is per frequency, the conversion uses
321+ `equivalencies=u.spectral_density(self.wavelength)`.
322+ """
323+ if spectra is None :
324+ return None
325+
326+ if not isinstance (spectra , u .Quantity ):
327+ spectra = u .Quantity (spectra , default_unit )
328+ # Check flux density units
329+ if spectra .unit .is_equivalent (u .W / (u .m ** 2 * u .m )):
298330 return spectra
331+ elif spectra .unit .is_equivalent (u .W / (u .m ** 2 * u .Hz )):
332+ return spectra .to (default_unit , equivalencies = u .spectral_density (self .wavelength ))
333+ else :
334+ raise ValueError (
335+ f"Cannot interpret spectral flux units { spectra .unit } . "
336+ "Expected per-frequency or per-wavelength flux density."
337+ )
299338
300339 def get_photons (self , spectra , spectra_err = None , mask_nan = True ):
301340 r"""Compute the photon flux from an input spectra.
0 commit comments