Telescope simulation

class qmostetc.Telescope(effective_area, fiber_area, wavelength, seeing, flat_throughput, point_ffrac_array, sersic)

Telescope properties

This class describes the light path through the spectrograph independent parts of the telescope, i.e. from the mirror to the fiber. This is done by target shape specific methods, for point like, flat, or Sersic shaped targets.

Parameters:
effective_areaastropy.units.Quantity

Effective area of the telescope [m²]

fiber_areaastropy.units.Quantity

Fiber area, projected to the sky [arcsec²]

wavelengthastropy.units.Quantity

Wavelength array corresponding to the flat and point throughput arrays [nm]

seeingastropy.units.Quantity

Seeing array corresponding to the point throughput array [arcsec]

flat_throughputnumpy.ndarray

Wavelength dependent fiber injection fraction for homogenuous (flat) illumation, corresponding to the wavelength parameter.

point_ffrac_arraynumpy.ndarray

Wavelength and seeing dependent throughput and fiber injection fraction for point like illumination. First axis corresponds to the wavelength parameter, second axis corresponds to the seeing parameter. This shall not include the wavelength dependent variation of the seeing in the atmosphere.

sersicfunction

Function that returns the geometrical fraction of light gathered on the fiber area for a sersic distributed source. The function shall have the following calling parameters:

r_effastropy.units.Quantity

Sersic effective radius [arcsec]

indexfloat

Sersic index.

seeingastropy.units.Quantity

Seeing [arcsec]. This may be either a single value, or an array.

It should return a float resp. a numpy.ndarray with the fiber flux fraction, corresponding to the seeing parameter

The sersic function shall cover the geometrical effects of the dome, telescope and atmospheric seeing. The wavelength dependent throughput effects (telescope throughput, fiber injection fraction) is covered with the point_ffrac_array parameter.

Usually, the method FiberFraction.sersic() is used here.

Examples

Calculate the fiber flux for a dark sky spectrum at a zenith angle of 51.3°, and check the average value around 580 nm. The dark sky is characterized with a moon-sun separation angle of 35°:

>>> from qmostetc import SEDTemplate, Atmosphere
>>> atm = Atmosphere.paranal()
>>> s = atm.emission(51.3*u.deg, 35*u.deg)
>>> tel = Telescope.vista()
>>> throughput = tel.throughput_flat()(s.wavelength)
>>> flux = (s * throughput).to('ph / (nm s)')
>>> print(f'{flux.subspectrum(575*u.nm, 585*u.nm).flux.mean():.1f}')
3.1 ph / (nm s)
Attributes:
effective_areaastropy.units.Quantity

Effective area of the telescope [m²]

fiber_areaastropy.units.Quantity

Fiber area, projected to the sky [arcsec²]

wavelengthastropy.units.Quantity

Wavelength array corresponding to the flat and point throughput arrays [nm]

throughput_flat()

Telescope throughput for flat sources

Factor to convert the flux at the telescope level to a fiber flux. This is basically the effective area of the telescope multiplied by the effective angular area.

This plot shows the flat throughput curve for 4MOST, which is a constant:

_images/telescope-1.png
Returns:
Spectrum

Throughput array according to the wavelengths [m² arcsec²]

Examples

Check the flat throughput at 700 nm:

>>> from qmostetc import Telescope
>>> import astropy.units as u
>>> tel = Telescope.vista()
>>> throughput = tel.throughput_flat()
>>> print(f'{throughput(700*u.nm):.1f}')
12.0 arcsec2 m2
throughput_point(seeing)

Telescope throughput for point sources

Factor to convert the flux at the telescope level to a fiber flux. This is basically the effective area of the telescope, including the seeing-dependent fiber injection fraction.

This plot shows the mean point throughput for 4MOST for different seeings:

_images/telescope-2.png

This plot shows the wavelength dependency of the point throughput curve for selected seeings:

_images/telescope-3.png
Parameters:
seeingastropy.units.Quantity

Optical seeing as a wavelength dependent Quantity at target declination [arcsec].

Returns:
astropy.units.Quantity

Throughput array according to the wavelengths [m²]

Examples

Check the point like throughput at 700 nm for standard seeing:

>>> from qmostetc import Telescope
>>> import astropy.units as u
>>> tel = Telescope.vista()
>>> throughput = tel.throughput_point(0.8*u.arcsec)
>>> print(f'{throughput(700*u.nm):.1f}')
4.7 m2
throughput_sersic(sersic_radius, sersic_index, seeing)

Telescope throughput for Sersic distributed sources

Factor to convert the flux at the telescope level to a fiber flux. This is basically the effective area of the telescope, including the seeing-dependent fiber injection fraction.

This plot shows the average throughput as a function of the Sersic radius for selected Sersic indices and a fixed seeing of 0.8”:

_images/telescope-4.png

The wavelength dependency is implemented by using the point-like wavelength dependency that gives the same throughput at the reference wavelength.

This plot shows the wavelength dependency of the Sersic throughput curve for 4MOST for selected Sersic parameters and a fixed seeing of 0.8”:

_images/telescope-5.png
Parameters:
sersic_radiusastropy.units.Quantity

Sersic effective radius [arcsec].

sersic_indexfloat

Sersic index.

seeingastropy.units.Quantity

Optical seeing as a wavelength dependent Quantity at target declination [arcsec].

Returns:
astropy.units.Quantity

Throughput array according to the wavelengths [m²]

Examples

Check a throughput at 700 nm for standard seeing for a Sersic profile with 1” effective radius and a Sersic index of 1.

>>> from qmostetc import Telescope
>>> import astropy.units as u
>>> tel = Telescope.vista()
>>> throughput = tel.throughput_sersic(1*u.arcsec, 1, 0.8*u.arcsec)
>>> print(f'{throughput(700*u.nm):.1f}')
1.7 m2
fiber_frac_point(seeing)

Calculate the fiber fraction for a point like target

Parameters:
seeingastropy.units.Quantity

Optical seeing as a wavelength dependent Quantity at target declination [arcsec].

Returns:
numpy.ndarray

Fiber fraction array corresponding to wavelength

fiber_frac_sersic(sersic_radius, sersic_index, seeing)

Calculate the fiber fraction for a Sersic shaped target

Parameters:
sersic_radiusastropy.units.Quantity

Sersic effective radius [arcsec].

sersic_indexfloat

Sersic index.

seeingastropy.units.Quantity

Optical seeing as a wavelength dependent Quantity at target declination [arcsec].

Returns:
numpy.ndarray

Fiber fraction array corresponding to wavelength

static vista(fname=None)

Standard 4MOST-VISTA telescope

This includes both the effective area of the telescope itself and the fiber area.

The telescope area (8.452 m²) and the projected fiber area (1.605 arcsec²) are hardcoded.

Parameters:
fnamestr or pathlib.Path

File name for the flat and point transmission vectors. It shall have two extensions:

Geometry

with one a one-line tablefor the flat transmission, containing the following columns:

  • tar_shape: one line with a 'flat' entry.

  • wavelength_vector: Wavelengths array [nm].

  • transmission_vector: Telescope transmissions at these wavelengths.

Fibre_fraction

a table for the seeing dependent point like transmission vectors. The seeing shall be taken wavelength independent. The file shall have the following columns:

  • tar_seeing: Target seeing [arcsec].

  • wavelength_vector: Wavelengths array [nm].

  • transmission_vector: Telescope transmissions at these wavelengths for the seeing.

The parameter is optional. If not given, the standard file provided by TOAD is used.