@@ -291,54 +291,6 @@ def interpolate(self, wavelength=None):
291291 self .wavelength = wavelength
292292 return self .response
293293
294- def _check_spectra (self , spectra , default_unit = u .Lsun / u .angstrom / u .cm ** 2 ):
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 )):
330- return spectra
331- elif spectra .unit .is_equivalent (u .W / (u .m ** 2 * u .Hz )):
332- if self .wavelength is None :
333- raise AttributeError ("Attribute `self.wavelength` must be defined"
334- + " to convert spectra to Flam units." )
335- return spectra .to (default_unit , equivalencies = u .spectral_density (self .wavelength ))
336- else :
337- raise ValueError (
338- f"Cannot interpret spectral flux units { spectra .unit } . "
339- "Expected per-frequency or per-wavelength flux density."
340- )
341-
342294 def get_photons (self , spectra , spectra_err = None , mask_nan = True ):
343295 r"""Compute the photon flux from an input spectra.
344296
@@ -367,8 +319,9 @@ def get_photons(self, spectra, spectra_err=None, mask_nan=True):
367319 photon_flux_err : :class:``astropy.units.Quantity``
368320 Filter photon flux associated error.
369321 """
370- spectra = self ._check_spectra (spectra )
371- spectra_err = self ._check_spectra (spectra_err )
322+ spectra = utils .check_unit (spectra , default_unit = u .Lsun / u .angstrom / u .cm ** 2 ,
323+ equivalence = u .spectral_density , wav = self .wavelength )
324+
372325 if mask_nan :
373326 mask = np .isfinite (spectra )
374327 photon_flux = np .trapz (
@@ -382,6 +335,10 @@ def get_photons(self, spectra, spectra_err=None, mask_nan=True):
382335 x = self .wavelength )
383336
384337 if spectra_err is not None :
338+
339+ spectra_err = utils .check_unit (spectra_err ,
340+ default_unit = u .Lsun / u .angstrom / u .cm ** 2 ,
341+ equivalence = u .spectral_density , wav = self .wavelength )
385342 if mask_nan :
386343 mask = mask & np .isfinite (spectra_err )
387344 else :
@@ -497,8 +454,9 @@ def get_flambda_vegamag(self, spectra, spectra_err=None, mask_nan=True):
497454 --------
498455 :func:`get_photons`
499456 """
500- spectra = self ._check_spectra (spectra )
501- spectra_err = self ._check_spectra (spectra_err )
457+ spectra = spectra = utils .check_unit (spectra , default_unit = u .Lsun / u .angstrom / u .cm ** 2 ,
458+ equivalence = u .spectral_density , wav = self .wavelength )
459+
502460 if mask_nan :
503461 mask = np .isfinite (spectra )
504462 else :
@@ -508,6 +466,9 @@ def get_flambda_vegamag(self, spectra, spectra_err=None, mask_nan=True):
508466 ) / np .trapz (self .response [mask ] * self .wavelength [mask ], x = self .wavelength [mask ])
509467
510468 if spectra_err is not None :
469+
470+ spectra_err = utils .check_unit (spectra_err , default_unit = u .Lsun / u .angstrom / u .cm ** 2 ,
471+ equivalence = u .spectral_density , wav = self .wavelength )
511472 if mask_nan :
512473 mask = mask & np .isfinite (spectra_err )
513474 else :
0 commit comments