For an atmospheric transmission \(T(\lambda)\), the photometric correction for an object with an intrinsic spectral energy distribution \(S(\lambda)\) is given by
where the integration bounds are defined by the wavelength range of the photometric bandpass. In practice, an SED of the desired object may not be available. In such a case spectral templates should be used instead.
For demonstration purposes, we consider an observation of a black body. Note that product in the numerator \(S(\lambda) \cdot T(\lambda)\) represents the SED under the influence of atmospheric effects. For a photometric observation taken in the i band (7,000 to 8,500 \(\unicode{x212B}\)), the integration arguments can be found as:
1 2 3 4 5 6 7 8 9 10 11 12 | >>> from pwv_kpno import blackbody_with_atm as bb_atm
>>> import numpy as np
>>>
>>> pwv = 15
>>> temp = 8000
>>>
>>> i_band = (7000, 8500)
>>> sample_rate = 1
>>> wavelengths = np.arange(i_band[0], i_band[1], sample_rate)
>>>
>>> sed_with_atm = bb_atm.sed(temp, wavelengths, pwv) # S(lambda) T(lambda)
>>> intrinsic_sed = bb_atm.sed(temp, wavelengths, 0) # S(lambda)
|
Trapezoidal integration of array like objects in Python can be performed using
the Numpy
package. Using results from the spectrographic example we have:
1 2 3 4 | >>> numerator = np.trapz(sed_with_atm, i_band, sample_rate)
>>> denominator = np.trapz(intrinsic_sed, i_band, sample_rate)
>>>
>>> photo_corr = np.divide(numerator, denominator)
|