Effective air mass

This section explains how the effective air mass of an observation can be calculated using one of three methods: Hardie (1962), Young & Irvine (1967) and Young (1994).

In PyHDRL this is hdrl.func.Airmass. The low-level C helpers (zenith distance, and the individual Hardie / Young-Irvine / Young functions) are not bound separately; they are used inside Airmass.compute().

Algorithm

The algorithm calculates the average airmass for the line-of-sight given by the right ascension and the declination. The latitude of the observatory site and the local sidereal time at the beginning of the observation have to be given, as well as the duration of the observation (the exposure time). If the exposure time is zero then only one value of airmass is computed, instead of weighting the beginning, middle, and end of the exposure according to Stetson (Stetson P., 1987, PASP 99, 191).

Approximations (hdrl.func.AirmassApprox):

  • Hardie: Hardie (1962, In: “Astronomical Techniques”, ed. Hiltner, p. 184)

  • YoungIrvine: Young & Irvine (1967, Astron. J. 72, 945); the range of trustworthy airmass outputs is limited to between 1 and 4

  • Young: Young (1994, ApOpt, 33, 1108)

The calculation can take into account error propagation if the user enters the relative error of the input parameters as an HDRL value (data, error).

Inputs

ra, dec, lst, exptime and latitude are HDRL values passed as (data, error) tuples. type is an hdrl.func.AirmassApprox value.

  • ra: right ascension [deg]

  • dec: declination [deg]

  • lst: local sidereal time elapsed since sidereal midnight [s]

  • exptime: integration time [s]

  • latitude: latitude of the observatory site [deg]

  • type: method of airmass approximation

compute() returns an HDRL value with data and error.

ra = (122.994945, 0.0)
dec = (74.95304, 0.0)
lst = (25407.072748, 0.0)
exptime = (120.0, 0.0)
latitude = (37.2236, 0.0)
airmass = hdrl.func.Airmass(
    ra, dec, lst, exptime, latitude, hdrl.func.AirmassApprox.Hardie
)
result = airmass.compute()
value = result.data
error = result.error