Details on predicting photometry#

It is sometimes not obvious that there are important differences between photometric systems. But even less known is the difference between detector count types (energy or photons) which requires also special care.

In this section, we review the important details for computing the luminosity and the magnitude of a star through a photometric passband. We do not discuss calibration, which in principle is covered by instrument documentations.

Synthetic photometry uses transmission curves that typically include a variety of wavelength-dependent components (a filter transmission, the response of the optical elements of the telescope and instrument, the detector sensitivity, sometimes a telluric absorption component, ..). Transmission curves are usually named after the associated filter, and it is up to the user to verify that the other components are also included. In this documentation, we use the terms filter throughput, transmission curve, response function, or simply filter, interchangeably, to refer to a transmission curve, generally leaving the verification of the nature of these transmission curves to the user.

Most modern detectors count photons, rather than cumulating the energies of these photons. If we consider a filter throughput (a.k.a, transmission curve, or response function) defined in wavelength by the dimensionless function \(T(\lambda)\), this function tells you what fraction of the arriving photons at wavelength \(\lambda\) actually get detected (on average). Therefore, the total number of photons, per unit time per unit collecting area, expected to be detected in this filter is

\[\begin{equation} N_{tot} = \frac{1}{hc} \int_\lambda f_\lambda\,\lambda\,T(\lambda)\,d\lambda, \end{equation}\]

where \(f_\lambda\) is the wavelength dependent flux density of an object given in energy per unit time, per unit collecting area, and per unit wavelength.

Consequently, interpreting \(\lambda T(\lambda)\) as a distribution leads to the statistical mean of the flux density, \(\overline{f_\lambda}\)

\[\begin{equation} \overline{f_\lambda}(T) = \frac{\int_\lambda \lambda f_\lambda T(\lambda) d\lambda}{\int_\lambda \lambda T(\lambda) d\lambda}. \end{equation}\]

Note that although this is formally a weighted mean of a flux density, with weights proportional to \(\lambda T(\lambda)\) (the denominator ensuring that the sum of the weights is 1), it actually measures the mean photon rate density in this filter. The result is commonly expressed in the same units as \(f_\lambda\), i.e. \(erg/s/cm^2/\unicode{x212B}\) or \(W/m^2/\unicode{x212B}\).

# computing the flux of a spectrum
flux = lib['hst_wfc3_f110w'].get_flux(lamb, spec)
# lamb may have units, otherwise assuming consistent definitions.

# computing the flux of many spectra
fluxes = lib['hst_wfc3_f110w'].get_flux(lamb, spectra, axis=1)

Finally, at least for instruments using CCD or CCD-like cameras, i.e., counting photons, we obtain the usual definition of magnitude

\[\begin{equation} mag_\lambda(T) = -2.5\,\log_{10}\left(\overline{f_\lambda}\right) - ZP\left(\overline{f_\lambda}\right), \end{equation}\]

where \(ZP(\overline{f_\lambda})\) gives the passband reference value (zeropoint) for a given photometric/magnitude system.

However, the zeropoints themselves depend on the photometric system adopted to report the measurements. They may vary fundamentally from one to another. Below we briefly describe the main systems used in large surveys.

Vega magnitude system#

This system is defined such that the star Alpha Lyr (Vega) has magnitude 0 in any pass-band filter. In other words, the zeropoints are set by the magnitude of vega, \(-2.5 \log_{10} \overline{f_\lambda}(Vega)\), or

\[\begin{equation} mag_{Vega}(T) = -2.5\,\log_{10}\left(\overline{f_\lambda} / \overline{f_\lambda}(Vega)\right). \end{equation}\]
# convert to magnitudes
import numpy as np
f = lib['hst_wfc3_f110w']
fluxes = f.get_flux(lamb, spectra, axis=1)
mags = -2.5 * np.log10(fluxes) - f.Vega_zero_mag
# or similarly
mags = -2.5 * np.log10(fluxes / f.Vega_zero_flux)

Johnson system#

The Johnson system is defined such that the star Alpha Lyr (Vega) has \(V=0.03\) and all colors equal to zero. It is very similar to the Vega magnitude system, but using mean flux definition (instead of photon counts), as appropriate for historical energy counter detectors

\[\begin{equation} \widetilde{f_\lambda}(T) = \frac{\int_\lambda f_\lambda T(\lambda) d\lambda}{\int_\lambda T(\lambda) d\lambda}, \label{eq:Johnsonmag} \end{equation}\]

(this is the mean flux weighted simply by the normalized throughout.)

Note

Table A2 of Bessell et al. (1998) gives zero points for the UBVRIJHKL(+Kp and L’) filters in the Counsins-Glass-Johnson system.

If one defines the effective wavelength \(\lambda_{\rm eff}\) as the photon weighted mean wavelength:

\[\lambda_{\rm eff} = \frac{\int \lambda f_\lambda T(\lambda) d\lambda}{\int f_\lambda T(\lambda) d\lambda},\]
# the effective wavelength for vega is given by
lib['ground_johnson_u'].leff

then the difference between the Johnson and Vega systems within the same filter is given by

\[\begin{equation} \widetilde{mag}_\lambda - \overline{mag}_\lambda = 0.03 - 2.5 \log_{10} \frac{\lambda_{\rm eff}(Vega)}{\lambda_{\rm eff}(star)}, \end{equation}\]

where we explicit which equation was used to compute magnitudes.

# The switch between the energy and the photon count equation is done
# through the `Filter.set_dtype` method, and becomes transparent for any
# use. So if you define you own filter either use the constructor or the
# method

# define a constant filter in energy count from 100 to 110 AA
f = Filter(np.arange(100, 110), np.ones(10), \
                dtype='energy', unit='AA')
# manually set the detector type
f.set_dtype('photon')

AB magnitude system#

This system is defined such that, when monochromatic flux \(f_\nu\) is measured in \(erg\,s^{-1}\,cm^{-2} Hz^{-1}\),

\[mag_{AB}(T) = -2.5\, \log_{10}(\overline{f_\nu}) - 48.60\]

where the value of the constant is selected to define \(m_{AB}=V\) for a flat-spectrum source. In this system, an object with constant flux per unit frequency interval has zero color.

Koornneef et al. gives the respective definition of \(\overline{f_\nu}(T)\):

\[\begin{equation} \overline{f_\nu}(T) = \frac{\int_\nu f_\nu T(\nu) d\nu / \nu}{\int_\nu T(\nu) d\nu / \nu} = \frac{\int_\lambda f_\nu T(\lambda) d\lambda / \lambda}{\int_\lambda T(\lambda) d\lambda / \lambda} \end{equation}\]

To go back to wavelength units, we have \(d\nu = (c/\lambda^2) d\lambda\).

If one defines the pivot wavelength \(\lambda_p\) to convert between \(\overline{f_\nu}\) and \(\overline{f_\lambda}\) as

\[\begin{equation} \overline{f_\nu} = \frac{\lambda_p^2}{c} \overline{f_\lambda}, \end{equation}\]

one can easily show that

\[\begin{equation} \lambda_p^2 = \frac{\int_\lambda T(\lambda)\,\lambda\,d\lambda}{\int_\lambda T(\lambda)\,d\lambda /\lambda}. \end{equation}\]

Therefore for filters with AB magnitudes, one can compute

\[\begin{equation} mag_{AB}(T) = -2.5\, \log_{10}(\overline{f_\lambda}) - 2.5\log_{10}\left(\lambda_p^2/c\right) - 48.6, \end{equation}\]

where care must be taken to use the speed of light \(c\) and \(\lambda_p\) in matching units.

# convert to magnitudes
import numpy as np
f = lib['hst_wfc3_f110w']
fluxes = f.get_flux(lamb, spectra, axis=1)
mags = -2.5 * np.log10(fluxes) - f.AB_zero_mag
# or similarly
mags = -2.5 * np.log10(fluxes / f.AB_zero_flux)

ST magnitude system#

This system is defined such as a source with flat \(f_\lambda\) will have the same magnitude in every filter.

Koornneef et al. (1986; same as above) defines

\[\begin{equation} mag_{ST}(T) = -2.5\, \log_{10}(\overline{f_\lambda}) - 21.1, \end{equation}\]
# convert to magnitudes
import numpy as np
f = lib['hst_wfc3_f110w']
fluxes = f.get_flux(lamb, spectra, axis=1)
mags = -2.5 * np.log10(fluxes) - f.ST_zero_mag
# or similarly
mags = -2.5 * np.log10(fluxes / f.ST_zero_flux)

Jansky definition#

The jansky (symbol Jy) is a non-SI unit of spectral flux density, it is equivalent to \(10^{−26} W.m^{-2}.Hz^{-1}\) or \(10^{-23} erg/s/cm^2/Hz\).

\[\begin{equation} {f_{Jy}} = \frac{10^5}{10^{-8}c} {\lambda_p^2} {f_\lambda}, \end{equation}\]

where \(c\) is the speed of light in \(m/s\), \(\lambda_p\) is the pivot wavelength in \(Å\), and \({f_\lambda}\) the flux (Vega, AB, or ST) in flam (\(erg.s^{-1}.cm^{-2}.Å^{-1}\)).

f = lib['hst_wfc3_f110w']
print(f.AB_zero_Jy, f.Vega_zero_Jy, f.ST_zero_Jy)

References#

  • Bessell, M. S. 1983, PASP, 95, 480, “VRI photometry : an addendum.” 1983PASP…95..480B;

  • Bessell, M. S. 1990, PASP, 102, 1181, “UBVRI passbands” 1990PASP..102.1181B;

  • Bessell, M. S., Castelli, F., & Plez, B. 1998, A&A, 333, 231, “Model atmospheres broad-band colors, bolometric corrections and temperature calibrations for O - M stars.” 1998A&A…333..231B;

  • Hayes, D. S., & Latham, D. W. 1975, ApJ, 197, 593, “A rediscussion of the atmospheric extinction and the absolute spectral-energy distribution of Vega.” 1975ApJ…197..593H;

  • Johnson, H. L. & Morgan, W. W. 1953, ApJ, 117, 313, “Fundamental stellar photometry for standards of spectral type on the Revised System of the Yerkes Spectral Atlas.” 1953ApJ…117..313J;

  • Koornneef, Bohlin, Buser, Horne, Turnshek : Synthetic photometry and the calibration of HST. 1986HiA…..7..833K

  • Oke, J.B. 1974, ApJS, 27, 21, “Absolute Spectral Energy Distributions for White Dwarfs” 1974ApJS…27…21O;