MUSE specific tools (
Python interface for MUSE slicer numbering scheme¶
Slicer class contains a set of static methods to convert
a slice number between the various numbering schemes. The definition of the
various numbering schemes and the conversion table can be found in the “Global
Positioning System” document (VLT-TRE-MUSE-14670-0657).
All the methods are static and thus there is no need to instantiate an object to use this class.
For example, we convert slice number 4 in CCD numbering to SKY numbering:
In : from mpdaf.MUSE import Slicer In : Slicer.ccd2sky(4) Out: 10
Now we convert slice number 12 of stack 3 in OPTICAL numbering to CCD numbering:
In : Slicer.optical2sky((2, 12)) Out: 25
MUSE LSF models¶
LSF class is currently under development
Only one model of LSF (Line Spread Function) is currently available.
This is a simple model where the LSF is supposed to be constant over the filed of view. It uses a simple parametric model of variation with wavelength.
The model is a convolution of a step function with a Gaussian. The resulting function is then sample by the pixel size:
LSF = T(y2+dy/2) - T(y2-dy/2) - T(y1+dy/2) + T(y1-dy/2) T(x) = exp(-x**2/2) + sqrt(2*pi)*x*erf(x/sqrt(2))/2 y1 = (y-h/2) / sigma y2 = (y+h/2) / sigma
The slit width is assumed to be constant (h = 2.09 pixels). The Gaussian sigma parameter is a polynomial approximation of order 3 with wavelength:
c = [-0.09876662, 0.44410609, -0.03166038, 0.46285363] sigma(x) = c + c*x + c*x**2 + c*x**3
To use it, create a
LSF object with attribute ‘typ’ equal to
In : from mpdaf.MUSE import LSF In : lsf = LSF(typ='qsim_v1')
Then get the LSF array by using
In : lsf_6000 = lsf.get_LSF(lbda=6000, step=1.25, size=11) In : import matplotlib.pyplot as plt In : import numpy as np In : plt.plot(np.arange(-5,6), lsf_6000, drawstyle='steps-mid') Out: [<matplotlib.lines.Line2D at 0x7fd9ab37f860>]
MUSE FSF models¶
FSF class is currently under development
Only one model of FSF (Field Spread Function) is currently available.
The MUSE FSF is supposed to be a Moffat function with a FWHM which varies linearly with the wavelength:
fwhm = a + b*lbda
- beta (float) Power index of the Moffat.
- a (float) constant in arcsec which defined the FWHM.
- b (float) constant which defined the FWHM.
We create the
FSF object like this:
In : from mpdaf.MUSE import FSF In : fsf = FSF(typ='MOFFAT1')
get_FSF returns for each wavelength an array and the FWHM in
pixel and in arcseconds.
In : fsf_array, fwhm_pix, fwhm_arcsec = fsf.get_FSF(lbda=[5000, 9000], step=0.2, size=21, beta=2.8, a=0.885, b=-2.94E-05) In : print(fwhm_pix) [3.69 3.102] In : print(fwhm_arcsec)