The DEEP2 2-d spectra are contained in FITS files according to the
naming convention "slit.xxxx.sssB.fits.gz" or" slit.xxxx.sssR.fits.gz" where
xxxx gives the DEEP2 mask number (e.g. 2200), sss gives the slits number,
and B/R denotes the Blue or Red portion of the spectrum. Within DEIMOS,
each object spectrum is dispersed across two CCD chips. The spec2d pipeline
reduces the chips independently with the blue and the red side leading to
different files. Note that the first two digits of each mask number denote
the CFHT photometric field/pointing in which the mask is located.
Each of the "slit" files contains one HDU which holds the 2-d spectrum, stored
as an IDL structure. Similar to the photometric catalogs, the 2-d spectra can
be read using the mrdfits command as follows (for more on FITS files
and IDL structures, refer to the
photometry primer):
        IDL> slit = mrdfits('slit.xxxx.sssB.fits.gz', 1)
The tags for the structure (slit) follow the format:
| FLUX | FLOAT |
Array[4096, 229] |
| IVAR | FLOAT |
Array[4096, 229] |
| MASK | BYTE |
Array[4096, 229] |
| CRMASK | BYTE |
Array[4096, 229] |
| LAMBDA0 | FLOAT |
Array[4096] |
| DLAMBDA | FLOAT |
Array[4096, 229] |
| LAMBDAX | DOUBLE |
Array[6] |
| TILTX | DOUBLE |
Array[3] |
| SLITFN | FLOAT |
Array[229, 3] |
| DLAM | FLOAT |
Array[229, 3] |
| INFOMASK | BYTE |
Array[4096, 229] |
with the following definitions:
  FLUX: |
the mean flux (e-/hour) of the spectral image |
  IVAR:
| the appropriate inverse variannce of the
sky-substracted spectrum, pixel by pixel. |
  CRMASK:
| describes which pixels had cosmic rays
in a given frame. Bit N of the CRMASK is set if a CR registered
on a given pixel in Nth frame. |
  MASK:
| describes whether this is a bad pixel, or
vignetted: 1 = bad, 0 = good. |
  LAMBDAX:
| coefficients for the Legendre polynomial over [0,4095] defining
wavelength as a function of pixel for the central row of the
slitlet. |
  TILTX:
| coefficients of the Legendre polynomial giving the tilt of
a constant lambda locus as function of pixel (if x,y define position
in the 2-d array, and P is the Legende polynomial and yc is the central
y value (in pixels), then
lambda(x,y,) = P(x|LAMBDAX) * (1.0 + (y-yc)*P(x|TILTX)) + DLAM(y).
|
  SLITFN:
| 1-d array for correcting slitlet irrefularities (normalized
to 1). |
  DLAM:
| shift in wavellength for this row, relative to the nominal
wavelength fit (all wavelengths are specified in Angstroms). |
  INFOMASK:
| a bitmask with the following deifnition (defined in
deimos_spslit.pro):
Bit 0 - nearvigmask |
pixel is >0% vignetted |
Bit 1 - bsplinemask |
pixel rejected in bspline process |
Bit 2 - nobsplinemask |
bspline is undefined for pixel |
|
  LAMBDA0:
| in conjunction with DLAMBDA, this field provides
a secondary means for recovering the 2-d lambda solution.
The LAMBDA0 array contains the wavelength value in angstroms
for the zeroth pixel row in the slit. |
  DLAMBDA:
| in conjunction with LAMBDA0, this field provides
a secondary means for recovering the 2-d lambda solution.
The DLAMBDA array contains the increment to add to LAMBDA0
to obtain the wavelength at pixel x,y:
LAMBDA(x,y) = LAMBDA0[x] + DLAMBDA[x,y].
The wavelength info is encoded in this manner (rather than storing
the full 2-d solution) so that the low order bits of all the
large 2-D arrays can be set to 0 without loss of
precision, allowing the files to be compressed. |
Note that the values in the 2-d flux array are given in units of counts
per hour. Also, the 2-d wavelength solution for each slit can be constructed
from either the LAMBDA0 + DLAMBDA values or by using the lambda_eval
routine included in the spec2d pipeline code.
All DEEP2 masks include ~8 sky-only slits placed in open spaces
on the DEIMOS slitmasks. These slits are used to perform non-local
sky subtraction for short (slitlength < 3") slits. The "slit" files
corresponding to these short slits have an additional FITS extension
(or HDU) which contains the 2-d spectrum derived from the non-local
sky subtraction. This second extension can be read by using mrdfits
like so:
        IDL> nlsky = mrdfits('slit.xxxx.sssB.fits.gz', 2)
|