Instruments
***********

.. include:: common.rst

.. _instruments-page:
Overview
--------

.. figure:: images/instrument_chart.png
   :scale: 70%
   :alt: A chart view of the interactions of different models with the Instrument

GalPaK uses a virtual :class:`Instrument <galpak.Instrument>`
to convolve the simulation cubes and check against observed data.
As each instrument has its own tweaks and quirks (both hardware and atmospheric),
you can provide an instrument to :class:`GalPaK3D <galpak.GalPaK3D>`,
the **default** one being :class:`MUSE <galpak.MUSE>` in `Wide Field Mode` : ::

    from galpak import run, SINFOK250
    gk = run('my_sinfok250_cube.fits', instrument=SINFOK250())


Here are the available instruments :

.. hlist::
    :columns: 4

    - MUSE *(default)*
    - MUSEWFM *(alias)*
    - MUSENFM
    - ALMA
    - KMOS
    - SINFOK250
    - SINFOK100
    - SINFOH250
    - SINFOJ250
    - SINFOJ100
    - OSIRIS
    and a Generic with no defaults

.. note::
    These instruments are **objects**, not string literals!
    Notice the parentheses : ``SINFOK250()``.


The spectral characteristics (pixel cdelt, etc.) are re-calibrated using the Cube's header when you instantiate GalPaK.
Pay attention in defining most appropriate values for the seeing or psf_fwhm(")
-- psf_ba if not round -- and lsf_fwhm (in units of cube) parameters.
All of them by default use the gaussian PSF :class:`GaussianPointSpreadFunction <galpak.GaussianPointSpreadFunction>`.


Base Instrument Class
---------------------

.. autoclass:: galpak.Instrument
    :members: calibrate, convolve