Photometric Properties

In here, we describe bandpass and spectral photometric properties that can be calculated using synphot, along with their respective formulae. More information can also be found in Koornneef et al. (1986), Bandpass, and Observation.

These are some common variables mentioned in the formulae in this section:

Variable

Description

\(F_{\lambda}\)

Source flux distribution

\(P_{\lambda}\)

Dimensionless bandpass throughput

a

Telescope collecting area

h

The Planck constant

c

The speed of light

The examples in this section uses bandpass from ACS/HRC F555W (from package test data) with some given bins and observation from that bandpass convolved with a blackbody:

>>> import os
>>> from astropy.utils.data import get_pkg_data_filename
>>> from synphot import Observation, SourceSpectrum, SpectralElement, units
>>> from synphot.models import BlackBodyNorm1D
>>> area = 45238.93416 * units.AREA  # HST
>>> sp = SourceSpectrum(BlackBodyNorm1D, temperature=5000)
>>> bp = SpectralElement.from_file(get_pkg_data_filename(
...     os.path.join('data', 'hst_acs_hrc_f555w.fits'),
...     package='synphot.tests'))
>>> binset = range(1000, 11001)
>>> obs = Observation(sp, bp, binset=binset)  

Bandpass Average Wavelength

For a bandpass, avgwave() implements the equation for \(\lambda_{0}\) as defined in Koornneef et al. 1986 (page 836). It is equivalent to IRAF SYNPHOT bandpar results for avglam, avgmw, or refwave; The throughput at this wavelength is tlambda().

\[\lambda_{0} = \frac{\int \; P_{\lambda} \; \lambda \; d\lambda }{\int \; P_{\lambda} \; d\lambda}\]

Example:

>>> bp.avgwave()  
<Quantity 5367.903565874441 Angstrom>
>>> bp.tlambda()  
<Quantity 0.22807748889452203>

Bandpass Peak Throughput

For a bandpass, tpeak() implements the bandpass peak throughput. It is equivalent to IRAF SYNPHOT bandpar result for tpeak; The wavelength at this throughput is wpeak() (only first match is returned if peak value is not unique).

Example:

>>> bp.tpeak()  
<Quantity 0.24144500494003296>
>>> bp.wpeak()  
<Quantity 5059.8212890625 Angstrom>

Bandpass Dimensionless Efficiency

For a bandpass, efficiency() implements the dimensionless efficiency. It is equivalent to IRAF SYNPHOT bandpar result for qtlam.

\[\text{qtlam} = \int \frac{P_{\lambda}}{\lambda} d\lambda\]

Example:

>>> bp.efficiency()  
<Quantity 0.05090165033079963>

Bandpass Equivalent Width

For a bandpass, equivwidth() implements the equivalent width. It gives the same value as integrate() and is equivalent to IRAF SYNPHOT bandpar result for equvw.

\[\text{equvw} = \int P_{\lambda} d\lambda\]

Example:

>>> bp.equivwidth()  
<Quantity 272.0108162945954 Angstrom>
>>> bp.integrate()  
<Quantity 272.0108162945954 Angstrom>

Bandpass Rectangular Width

For a bandpass, rectwidth() implements the rectangular width. It is equivalent to IRAF SYNPHOT bandpar result for rectw. The equvw in the formula below is Bandpass Equivalent Width.

\[\text{rectw} = \frac{\text{equvw}}{\text{MAX}(P_{\lambda})}\]

Example:

>>> bp.rectwidth()  
<Quantity 1126.5953352903448 Angstrom>

Bandpass RMS Band Width (Koornneef)

For a bandpass, rmswidth() implements the bandpass RMS width as defined in Koornneef et al. 1986 (page 836), where \(\lambda_{0}\) is the Bandpass Average Wavelength.

\[\lambda_{\text{rms}} = \sqrt{\frac{\int \; P_{\lambda} \; (\lambda - \lambda_{0})^{2} \; d\lambda}{\int \; P_{\lambda} \: d\lambda}}\]

Example:

>>> bp.rmswidth()  
<Quantity 359.56457676412236 Angstrom>

Bandpass RMS Band Width (IRAF)

For a bandpass, photbw() implements the equivalent for bandw from IRAF SYNPHOT bandpar task, where \(\bar{\lambda}\) is Bandpass Mean Log Wavelength. This is not the same as Bandpass RMS Band Width (Koornneef).

\[\text{bandw} = \bar{\lambda} \; \sqrt{\frac{\int \; (P_{\lambda} / \lambda) \; \ln(\lambda \; / \; \bar{\lambda})^{2} \; d\lambda}{\int \; (P_{\lambda} / \lambda) \; d\lambda}}\]

Example:

>>> bp.photbw()  
<Quantity 357.17951791474843 Angstrom>

FWHM

For a bandpass, fwhm() implements the equivalent for fwhm from IRAF SYNPHOT bandpar task, where bandw is Bandpass RMS Band Width (IRAF).

\[\text{fwhm} = \text{bandw} \; \sqrt{8 \; \log 2}\]

Example:

>>> bp.fwhm()  
<Quantity 841.0934884601406 Angstrom>

Bandpass Mean Log Wavelength

For a bandpass, barlam() implements the mean wavelength as defined in Schneider, Gunn, and Hoessel (1983). This rather unusual definition is such that the corresponding mean frequency is \(c / \bar{\lambda}\). It is equivalent to IRAF SYNPHOT bandpar results for barlam.

\[\bar{\lambda} = \exp\Bigg[\frac{\int \; (P_{\lambda} / \lambda) \; \ln(\lambda) \; d\lambda}{\int (P_{\lambda} / \lambda) \; d\lambda}\Bigg]\]

Example:

>>> bp.barlam()  
<Quantity 5331.8648495386 Angstrom>

Bandpass Unit Response

For a bandpass, unit_response() implements the computation of the flux of a star that produces a response of one count per second in that bandpass for a given telescope collecting area. It is equivalent to IRAF SYNPHOT bandpar result for uresp.

\[\text{uresp} = \frac{hc}{a \int P_{\lambda}\; \lambda\; d\lambda}\]

Example:

>>> bp.unit_response(area)  
<Quantity 3.007277127274156e-19 FLAM>

Bandpass Equivalent Monochromatic Flux

For a bandpass, emflx() implements the equivalent monochromatic flux for a given telescope collecting area. It is equivalent to IRAF SYNPHOT bandpar result for emflx. In the formula below, uresp, equvw, and \(\lambda_{0}\) are Bandpass Unit Response, Bandpass Equivalent Width, and Bandpass Average Wavelength, respectively.

\[\text{emflx} = \frac{\text{uresp} \times \text{equvw}}{P(\lambda_{0})}\]

Example:

>>> bp.emflx(area)  
<Quantity 3.586552579909415e-16 FLAM>

Effective Stimulus

For an observation, effstim() calculates the predicted effective stimulus in given flux unit. countrate() is a special form of effective stimulus in the unit of count/s given a telescope collecting area. It is equivalent to IRAF SYNPHOT calcphot result for effstim. The default binning behavior is to be consistent with ASTROLIB PYSYNPHOT.

\[\text{effstim} = \frac{\int\; F_{\lambda}\; P_{\lambda}\; \lambda\; d\lambda}{\int\; P_{\lambda}\; \lambda\; d\lambda}\]

Example:

>>> obs.effstim()  
<Quantity 0.00053744 PHOTLAM>
>>> obs.effstim('flam')  
<Quantity 1.99333435e-15 FLAM>
>>> obs.effstim('count', area=area)  # Not binned  
<Quantity 6628.36886854 ct / s>
>>> obs.countrate(area=area, binned=False)  
<Quantity 6628.36886854 ct / s>
>>> obs.countrate(area=area)  # Binned  
<Quantity 6628.36888121 ct / s>

Effective Wavelength

For an observation, effective_wavelength() implements the effective wavelength, as defined in Koornneef et al. 1986 (page 836), where flux unit is converted to FLAM prior to calculations. It is equivalent to IRAF SYNPHOT calcphot result for efflerg. For backward compatibility, there is also an option (mode='efflphot') to calculate this using flux in PHOTLAM, which is equivalent to IRAF SYNPHOT calcphot result for efflphot. The default binning behavior is to be consistent with ASTROLIB PYSYNPHOT.

\[\lambda_{\text{eff}} = \frac{\int \; F_{\lambda} \; P_{\lambda} \; \lambda^2 \; d\lambda}{\int \; F_{\lambda} \; P_{\lambda} \; \lambda \; d\lambda}\]

Example:

>>> obs.effective_wavelength()  # Binned  
<Quantity 5401.26785017 Angstrom>
>>> obs.effective_wavelength(mode='efflphot')  # Deprecated  
WARNING: AstropyDeprecationWarning: Usage of EFFLPHOT is deprecated. [...]
<Quantity 5424.92986116 Angstrom>

Pivot Wavelength

For a bandpass or a source spectrum, pivot() calculates the pivot wavelength. It is equivalent to IRAF SYNPHOT result for pivwv and pivot. The formula shown applies to a bandpass. For a source, replace \(P_{\lambda}\) with \(F_{\lambda}\) below.

\[\lambda_{\text{pivot}} = \sqrt{\frac{\int \: P_{\lambda} \; \lambda \; d\lambda}{\int(P_{\lambda} \; / \; \lambda) \; d\lambda}}\]

Example:

>>> bp.pivot()  
<Quantity 5355.863596422958 Angstrom>
>>> obs.pivot()  # Not binned  
<Quantity 5389.368734064575 Angstrom>