IDL Help for Low-Redux

This page was created by the IDL library routine make_html_help. For more information on this routine, refer to the IDL Online Help Navigator or type:

     ? make_html_help

at the IDL command line prompt.

Last modified: Fri May 11 14:12:39 2007.


List of Routines


Routine Descriptions

BSPLINE_LONGSLIT

[Next Routine] [List of Routines]
 NAME:
   bspline_longslit

 PURPOSE:
   Calculate a B-spline in the least squares sense with rejection, 
     using a model profile.

 CALLING SEQUENCE:
   sset = bspline_longslit(xdata, ydata, invvar, profile_basis, $
     yfit=yfit, numiter=iiter, bkpt=bkpt, maxiter=maxiter,relative=relative, $
     upper=upper, lower=lower, outmask=outmask, fullbkpt=fullbkpt, $
     inmask=inmask, _EXTRA=EXTRA, RED_CHI=reduced_chi)

 INPUTS:
   xdata      - Data x values
   ydata      - Data y values

 OPTIONAL KEYWORDS:
   invvar     - Inverse variance of y; if not set, then set to be
                consistent with the standard deviation.  This only matters
                if rejection is being done.
   profile_basis - spatial profiles of each independent b-spline fit
                  Should have dimensions [NPIX, NBSPLINES]
   nord       - Order for spline fit; default to 4.
   x2         - 2nd dependent variable for 2-D spline fitting.
   npoly      - Polynomial order to fit over 2nd variable (X2); default to 2.
   xmin       - Normalization minimum for X2; default to MIN(XDATA).
   xmax       - Normalization maximum for X2; default to MAX(XDATA).
   oldset     - If set, then use values of FULLBKPT, NORD, XMIN, XMAX, NPOLY
                from this structure.
   funcname   - If OLDSET is not specified and this is a 2-D B-spline,
                then the function for the second variable may be passed.
                The default is 'legendre' in the call to CREATE_BSPLINESET().
   maxiter    - Maximum number of rejection iterations; default to 10;
                set to 0 to disable rejection.
   upper      - Upper rejection threshhold; default to 5 sigma.
   lower      - Lower rejection threshhold; default to 5 sigma.
   _EXTRA     - Keywords for BSPLINE_BKPTS() and/or DJS_REJECT().

 OUTPUTS:
   sset       - Structure describing spline fit.
                Return 0 if too few good (INVVAR NE 0) points are passed.

 OPTIONAL OUTPUTS:
   outmask    - Output mask, set =1 for good points, =0 for bad points.
   fullbkpt   - If OLDSET is not specified, then the break points are
                chosen with a call to BSPLINE_BKPTS() which can be returned
                with this keyword.
   yfit       - B-spline fit evaluated at each data point.
   numiter    - Last iteration (0-indexed)

 COMMENTS:

   Wavelengths must be sorted!

   Data points can be masked either by setting their weights to zero
   (INVVAR[]=0), or by using INMASK and setting bad elements to zero.
   INMASK is passed to DJS_REJECT().

   If OLDSET is used, then the output structure SSET will be a structure
   with the same name as OLDSET.  This will allow the two structures to
   be concatented, i.e.
     > junk = [oldset, sset]

   Although I'm not sure how to treat data points which fall outside
   minmax(bkpt), now I will set them equal to minmax with invvar = 0

 EXAMPLES:

 PROCEDURES CALLED:
   bspline_bkpts()
   bspline_workit()
   create_bsplineset()
   djs_reject()

 REVISION HISTORY:

(See pro/Flat/bspline_longslit.pro)


BSPLINE_MAGFIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   bspline_magfit

 PURPOSE:
   Correct a calibrated quasar with known photometry

 CALLING SEQUENCE:

 INPUTS:

 OUTPUTS:

 COMMENTS:

 EXAMPLES:

 BUGS:

 PROCEDURES CALLED:

 REVISION HISTORY:
   20-Apr-2005  Written by J. Hennawi Berkeley

(See pro/Spec/bspline_magfit.pro)


CALCULATE_RESOLUTION

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   calculate_resolution

 PURPOSE:
 calculate_resolution, s, anamorph=anamorph

 CALLING SEQUENCE:
   long_superbias, filenames, outfile, [ sigrej=, maxiter=, /verbose ]
                 

 INPUTS:
   s -- Spectral structure which contains all the key quantities

 OPTIONAL INPUTS:

 OUTPUTS:

 OPTIONAL OUTPUTS:

 COMMENTS:
  
 EXAMPLES:

 BUGS:
    
 PROCEDURES CALLED:

 REVISION HISTORY:
   11-Mar-2005  Written by J. Hennawi (UCB), D. Schlegel (LBL)

(See pro/Extract/calculate_resolution.pro)


FIND_NMINIMA

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   find_nminima

 PURPOSE:
   Find one or several minima in a vector of chi^2 values.

 CALLING SEQUENCE:
   xpeak = find_nminima( yflux, [ xvec, dofarr=, nfind=, minsep=, $
    width=, ypeak=, xerr=, errcode=, npeak=, plottitle=, /doplot, /debug ]

 INPUTS:
   yflux          - Y values

 OPTIONAL INPUTS:
   xvec           - X values, which must either be sorted in ascending
                    or descending order; default to 0-indexed integers.
   dofarr         - If set, then fit to the minima in the function
                    YFLUX/DOFARR, but avoiding any points where DOFARR
                    is set to zero.
   nfind          - Number of minima to find; default to 1.  It is possible
                    to find fewer than NFIND minima.
   minsep         - Minimum separation between local minima.  If a peak
                    is found closer than MINSEP to an existing peak, then
                    the latter peak is discarded.
   width          - Width to use when selecting the points used in the fit.
                    Only use points where XVEC is within WIDTH of the
                    the lowest-values point (which is used as the initial
                    guess); default to using all points.

 OUTPUTS:
   ypeak          - Fit value for either chi^2 or chi^2/DOF at the minima.
                    If the fit value is less than zero, then change it to zero.

 OPTIONAL OUTPUTS:
   xerr           - Formal errors of XPEAK.
   errcode        - Error codes for each minima; 0 for no errors in the fit.
   npeak          - The number of peaks found, between [0,NFIND].
   plottitle      - Title of plot (if /DOPLOT is set).
   doplot         - If set, then make plots.  Discarded peaks are not plotted.
   debug          - If set, then wait for keystroke after plot.

 COMMENTS:
   This routine calls SVDFIT for fitting quadratics, or MPFIT for
   fitting gaussians.
   
 EXAMPLES:
   
 BUGS:

 PROCEDURES CALLED:
   djs_icolor()
   djs_oplot
   djs_plot
   mpfitpeak
   mpfitpeak_gauss
   textoidl

 INTERNAL SUPPORT ROUTINES:
   long_zfitmin()
  
 REVISION HISTORY:
   22-Aug-2001  Written by D. Schlegel, Princeton 
   30-Jul-2002  Fixed bug - yrange passed twice to djs_plot

(See pro/General/long_find_nminima.pro)


KAST_TSTLONG

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 kast_tstlong  
     Version 1.1

 PURPOSE:
  Tests the Longslit routines on the Kast spectrometer

 CALLING SEQUENCE:

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   11-May-2007 Written by JXP

(See pro/KAST/kast_tstlong.pro)


KNPO_SKYILLUM

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   knpo_skyillum

 PURPOSE:
   Algorithm to generate an illumination flat, ideally from a
   twilight flat.  This routine is tuned to observations taken at
   KPNO.

 CALLING SEQUENCE:
 kpno_skyillum, filenames, illumflatfile, pixflatfile $

 INPUTS:
   filenames  --  List of sky flat frames
   pixflatfile -- Filename of the pixel flat.  Presumably created
                  from internal or dome exposures.

 OPTIONAL INPUTS:
                
 OUTPUTS:
  illumflatfile -- Filename for the illumination flat

 OPTIONAL OUTPUTS:
   
 COMMENTS:

 EXAMPLES:

 BUGS:

 PROCEDURES CALLED:

 REVISION HISTORY:
   10-Mar-2005  Written by S. Burles (MIT), David Schlegel (LBL), and 
                Joe Hennawi (UC Berkeley)

(See pro/MMT/kpno_skyillum.pro)


LONGSLIT_VERSION

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   longslit_version

 PURPOSE:
   Return the version name for the product Longslit

 CALLING SEQUENCE:
   vers = longslit_version()

 INPUTS:

 OUTPUTS:
   vers       - Version name for the product Longslit

 COMMENTS:
   If this version is not tagged by CVS, then we return 'NOCVS:TOPLEVEL'
   where TOPLEVEL is the last directory in the environment variable
   $LONGSLIT_DIR.  For example, if you are using a version of the code
   in the directory '/u/schlegel/Longslit/v0_0', then this returns
   'NOCVS:v0_0'.

 BUGS:

 PROCEDURES CALLED:

 REVISION HISTORY:
   25-Apr-2005  Written by D. Schlegel, Princeton.

(See pro/General/longslit_version.pro)


LONG_ARC_FW

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_arc_fw

 PURPOSE:
   Compute the full width of an arcline in an arc image corresponding to 
   a given fraction of the peak flux

 CALLING SEQUENCE:
    fw_frac=arc_fw(profile, xpeak, maxsep, frac)
 INPUTS:
   profile      - 1-d arc spectrum
   xpeak        - location of the arc line peak in pixels
   maxsep       - separation to look for full width on either side
   frac         - Fraction of peak flux to use for full width

 OUTPUTS: 
   fw_frac      - Full width at fraction frac of peak flux

 OPTIONAL OUTPUTS: 

 COMMENTS:
 
 EXAMPLES:

 BUGS:
    
 PROCEDURES CALLED:
 

 REVISION HISTORY:
   27-May-2005 Written by J. Hennawi (UCB)

(See pro/Wave/long_arc_fw.pro)


LONG_COADD

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  long_coadd
  Version 1.1

 PURPOSE:
  Combine the spectra from multiple exposures taken through the same
  mask or longslit.

 CALLING SEQUENCE:
  LONG_COADD, infiles, objid, OUTFIL = 

 INPUTS:
   infiles -- Names of files to coadd
   objid   -- Object ID number for the spectrum to coadd.  This could
              be an array if the objid changes from exposure to expsr.

 OPTIONAL INPUTS:
  iwave  -- Index corresponding to an exposure that defines the
            'template' wavelength array [default: 0]

 OUTPUTS:
   OUTFIL=  -- Name of the file to record coadded spectrum
   SIGREJ=  -- Value for rejecting bad pixels [default: 2.]
   /IRAF    -- Read wavelengths from the tag WAVE_IRAF [GMOS data]
   EXTEN=   -- Extension in input file where the spectra structure is
               stored [default: 5]

 OPTIONAL OUTPUTS:
  FLUX=     -- Coadded flux
  WAVE=     -- Coadded wave
  IVAR=     -- Coadded inverse variance

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:
  x_gsmooth


 REVISION HISTORY:
   25-May-2000  Created by JH

(See pro/Spec/long_coadd.pro)


LONG_DEIMOSSPLIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_deimossplit

 PURPOSE:
   Split a DEIMOS FITS file into the frame of interest that covers
   the longslit footprint

 CALLING SEQUENCE:

 INPUTS:

 OUTPUTS:

 COMMENTS:

 EXAMPLES:

 BUGS:

 PROCEDURES CALLED:

 REVISION HISTORY:
   2006  Written by JXP 

(See pro/DEIMOS/long_deimossplit.pro)


LONG_EXTINCT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  long_extinct
  Version 1.1

 PURPOSE:
  Return the extinction as a function of wavelength as a function of
  observatory.  Also pass back the AIRMASS parsed from the header

 CALLING SEQUENCE:
  LONG_EXTINCT, scihdr, WAVE_EXT = , MAG_EXT = 

 INPUTS:

 OPTIONAL INPUTS:

 OUTPUTS:
  WAVE_EXT=  -- Array of wavelengths where the extinction is
                evaluated
  MAG_EXT=  -- Array of extinction values in magnitudes.

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:
  x_gsmooth


 REVISION HISTORY:
   25-May-2000  Created by S. Burles, FNAL/IAP
   2003         Modified by JXP to give 'exact' answer

(See pro/Spec/long_extinct.pro)


LONG_EXTRACT_OPTIMAL

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_extract_optimal

 PURPOSE:
   Perform an optical extraction of the spectra using profile fitting
   techinques.

 CALLING SEQUENCE:
  spec = long_extract_optimal(wave, image, ivar, oprof, mask,
  skyimage, trace)

 INPUTS:
  wave -- Wavelength image
  image -- Data image
  ivar -- Inverse variance
  oprof -- Object profile
  mask  -- Image which defines the useful data regions

 RETURNS:
  spec -- A comprehensive structure containing the extracted spectra,
          trace, wavelength array, etc.

 OPTIONAL INPUTS:
  BOX_RAD=  -- Radius for boxcar extraction

 OUTPUTS:

 OPTIONAL OUTPUTS:
 MODELIVAR= -- Model of the inverse variance

 COMMENTS:

 EXAMPLES:

 BUGS:
   
 PROCEDURES CALLED:
   traceset2xy
   
 REVISION HISTORY:
   11-Mar-2005  Written by JH + SB

(See pro/Extract/long_extract_optimal.pro)


LONG_FINDFWHM

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_findfwhm

 PURPOSE:
   Calculate the spatial FWHM of all the objects in the slit.  The
   routine assumes a simple algorithm.

 CALLING SEQUENCE:
  long_findfwhm, model, x, peak, peak_x, lwhm, rwhm

 INPUTS:

 OPTIONAL INPUTS:

 OUTPUTS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 BUGS:
   
 PROCEDURES CALLED:
   traceset2xy
   
 REVISION HISTORY:
   11-Mar-2005  Written by JH + SB

(See pro/Extract/long_findfwhm.pro)


LONG_FLATFIELD_SPECILLUM

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_flatfield_specillum

 PURPOSE:
  Determine the illumination function from a flat field exposure

  let's consider x to be the spectral dependence with well sampled
    (2-pixel) variations
  y should represent slit-position, and the sampling should be sufficient
    to resolve slit variations
  poly_terms will be added to test for possible polynomial variations
    in x and y.
  xmin, xmax & ymin, ymax should be added to normalize both parameters to 
    -1 to 1.

  Assume image represents electrons, and bad pixels are set to negative
   counts.   We need to mask negative values anyway.

  There is still a issue with scattered light, and how to account for
   it in the slit illumination response.  Assume that scattered light has
   already been removed.

 CALLING SEQUENCE:
  long_flatfield_specillum, x, y, image, invvar=, $

 INPUTS:

 OPTIONAL INPUTS:

 OUTPUTS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 BUGS:
   
 PROCEDURES CALLED:
   
 REVISION HISTORY:
   11-Mar-2005  Written by D. Schlegel, LBL

(See pro/Flat/long_flatfield_specillum.pro)


LONG_FLEXURE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_flexure

 PURPOSE:
   Calculate the flexure shift from a sky-line spectrum and then
   shift the spectrum onto the sky spectrum.

 CALLING SEQUENCE:
 long_flexure, struct, skyfile, QAFILE = QAFILE

 INPUTS:
  struct -- Structure containing the extracted spectrum
  skyfile -- File containing the sky spectrum

 OPTIONAL INPUTS:

 OUTPUTS:

 OPTIONAL OUTPUTS:
 QAFILE= -- Filename for QA output

 COMMENTS:

 EXAMPLES:

 BUGS:
   
 PROCEDURES CALLED:
   
 REVISION HISTORY:
   11-Mar-2005  Written by JH + SB

(See pro/Extract/long_flexure.pro)


LONG_FLEX_QA

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_flex_qa

 PURPOSE:
   Generate QA for the flexure correction

 CALLING SEQUENCE:

 INPUTS:

 OUTPUTS:

 COMMENTS:

 EXAMPLES:

 BUGS:

 PROCEDURES CALLED:

 REVISION HISTORY:
   20-Apr-2005  Written by J. Hennawi Berkeley

(See pro/QA/long_flex_qa.pro)


LONG_FLUXCAL

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_fluxcal

 PURPOSE:
   Given an extracted spectrum (in units of counts/pixel) and the
   response function of the spectrograph, flux calibrate the spectrum

 CALLING SEQUENCE:
   long_fluxcal

 INPUTS:
   final_struct    - object structure containing the uncalibrated extracted
                     spectra
   sensfunc        - structure containing the sensitivity function
   exptime         - exposure time for the spectra (in s)
   airmass         - mean airmass over the course of the observations

 OPTIONAL INPUTS:

 OUTPUTS:
   outfil     - Filename to contain the fluxed spectrum

 OPTIONAL OUTPUTS:


 COMMENTS:
                   If the wavelength range of the observed spectrum
                   differs from the wavelength range of the
                   sensitivity function (which is likely), then the
                   output calibrated spectrum will cover a smaller
                   wavelength range than the input spectrum

 EXAMPLES:

 BUGS:

 PROCEDURES CALLED:
                  create_struct (Goddard)
                  struct_addtage (idlutils)

 INTERNAL SUPPORT ROUTINES:

 REVISION HISTORY:
   03-Sep-2005  Written by J. Hennawi UC Berkeley

(See pro/Spec/long_fluxcal.pro)


LONG_GPROFILE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_gprofile

 PURPOSE:
 Fit a non-parameteric object profile to the data unless the S/N is
 poor (less than 3) in which case fit a simple Gaussian.

 CALLING SEQUENCE:
  profile = long_gprofile(image, ivar, trace_in, flux, fluxivar, objstruct)

 INPUTS:

 OPTIONAL INPUTS:
  /GAUSS -- Calculate a Gaussian profile

 OUTPUTS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 BUGS:
   
 PROCEDURES CALLED:
   
 REVISION HISTORY:
   11-Mar-2005  Written by JH + SB

(See pro/Extract/long_gprofile.pro)


LONG_LOCALSKYSUB

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_localskysub

 PURPOSE:
   Perform sky subtraction in a given slit.  Subtraction is limited
   to a relatively narrow region near the object.

 CALLING SEQUENCE:
 struct = long_localskysub( sciimg, sciivar, skyimage, piximg,
 waveimg, objstruct, thismask, skymask, objmask)

 INPUTS:

 OPTIONAL INPUTS:

 OUTPUTS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 BUGS:
   
 PROCEDURES CALLED:
   
 REVISION HISTORY:
   11-Mar-2005  Written by JH + SB

(See pro/Extract/long_localskysub.pro)


LONG_LOOK

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_look

 PURPOSE:
  Script for viewing data

 CALLING SEQUENCE:

 INPUTS:

 OPTIONAL INPUTS:

 OUTPUTS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 BUGS:
   
 PROCEDURES CALLED:
   
 REVISION HISTORY:
   11-Mar-2005  Written by JH

(See pro/General/long_look.pro)


LONG_MULTIPANEL

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        long_MULTIPANEL

 PURPOSE:
        This routine provides an easy-to-use interface to 
        IDL's !p.multi mechanism and it can be used 
        to retrieve the position vector of the next plot 
        in line (even if !p.multi is not set). You can 
        specify plot margins and a page margin in normalized 
        coordinates.
           For multi-panel plots, multipanel works in three
        stages (somewhat similar to XInterAnimate): 
        1) set up a multi-panel page by specifying the number
           of rows and columns or the maximum number of plots
           on the page.
        2) advance to the next plot position and return that 
           position. If the page was filled (i.e. the maximum
           number of plots (advance steps) has been made, it 
           will be erased (unless /NOERASE is set).
        3) turn the multi-panel environment off and reset margin
           values.
        Subsequent PLOT, MAP_SET, etc. commands should use the
        POSITION vector returned from this routine and they should
        use the /NOERASE keyword.

 CATEGORY:
        Plotting tools

 CALLING SEQUENCE:
        Get position of next plot
        MULTIPANEL,position=p

        Setting up multi-panel pots
        MULTIPANEL,[rows=r,cols=c | nplots=n] [,options]

        Advance to the next panel (and get its position)
        MULTIPANEL,/advance [,position=p] [,options]

        Reset multi-panel environment to start over at the first panel
        MULTIPANEL,/reset   [,options]

        Turn multi-panel environment off (reset !p.multi and some other
        parameters)
        MULTIPANEL,/OFF

 INPUTS:
     Optionally you can give the number of plots (keyword NPLOTS) as
     a parameter instead. Th euse of a parameter will override the
     keyword.

 KEYWORD PARAMETERS:
        General keywords (honored under all circumstances)
        -------------------------------------------------------------------
        POSITION -> Returns a 4-element vector with the position of
            the next plot in the line. As always this vector contains
            [X0,Y0,X1,Y1].

        MARGIN -> specify a margin around the plot in normalized 
            coordinates. This keyword does not change any IDL
            system variables and will thus only become "visible" 
            if you use the POSITION returned by MULTIPANEL in subsequent plot
            commands.
            MARGIN can either be one value which will be applied to
            all four margins, or a 2-element vector which results in
            equal values for the left and right and equal values for 
            the bottom and top margins, or a 4-element vector with
            [left,bottom,right,top]. 

        OMARGIN -> specify a page margin around all panels in normalized
            coordinates. Works like MARGIN.
            
        Note that you can change the values of MARGIN and OMARGIN after
        you set up your plot page. The values given with MARGIN and OMARGIN 
        remain active until you specify a new one or use the /OFF keyword.

        /NOERASE -> This keyword prevents erasing the screen (or page) 
            when setting a multi-panel environment or after a page was
            filled. NOERASE is automatically turned ON when the /OFF
            keyword is given.


        Informational keywords:
        -------------------------------------------------------------------

        FIRSTPANEL -> returns 1 if the current plotting panel is
            the first one on a page

        LASTPANEL -> returns 1 if the current plotting panel is the last
            on a page

 
        Setting up a multi-panel page:
        -------------------------------------------------------------------
        ROWS, COLS -> specify the number of rows and columns
            you want on your page. If one is specified, the 
            other one must be given as well. Alternatively,
            you can use the NPLOTS keyword. 

        NPLOTS -> maximum number of plots on one page. The 
            number of rows and columns is automatically computed
            so that the plots "approach a square" and they are
            returned in the ROWS and COLS keywords. Setting
            NPLOTS to a ROWS*COLS value is equivalent to using
            ROWS and COLS. If you specify an "uneven" number
            (e.g. 5), multipanel,/advance will erase the page 
            after 5 plots instead of 6.

        /PORTRAIT -> Normally, ROWS tends to be larger than COLS
            when NPLOTS is used (e.g. 12 gives 4 rows and 3 cols).
            Use this keyword to revert this behaviour.

        /LANDSCAPE -> Make ROWS larger than COLS if necessary. Thi4s
            is the default. Thi skeyword is actually unnecessary and
            was introduced for purely aesthetic reasons (symmetry).


        Advance to the next plot:
        -------------------------------------------------------------------
        /ADVANCE -> this keyword issues a hidden plot command to find
            out the position of the next plot to be made. The position
            is then returned in the POSITION keyword. The value of
            !P.MULTI[0] is increased afterwards so that you can issue
            your plot command without explicitely specifying the
            position or /NOERASE. When the maximum number of plots set
            with NPLOTS is reached, MULTIPANEL,/ADVANCE will erase the
            screen and reset the plot position to the upper left corner.

        CURPLOT -> use this keyword to advance to a specific plot position
            on the page. If you specify 0, the screen will be erased.
            CURPLOT also returns the current plot number. If you don't
            want to set the plot number but just query it, you must pass 
            an undefined variable (see procedure UNDEFINE.PRO).


        Reset the plot position (and erase the screen)
        -------------------------------------------------------------------
        /RESET -> does just this.


        Turn multi-panel environment off
        -------------------------------------------------------------------
        /OFF -> Overrides all other keywords. Resets !p.multi to 0.
            

 OUTPUTS:
        none.

 SUBROUTINES:
        function GET__PLOTPOSITION() issues a dummy plot command
            and returns the plot position from the ![xy].window
            variables.

 REQUIREMENTS:
        none. (example uses RECTANGLE.PRO)

 NOTES:
        Side effect: Opens a window in standard size if none was open 
        before. This happens because the next plot position is 
        determined by issuing a hidden (or dummy) plot command with
        no visible output.
        
        Make sure to use POSITION=P,/NOERASE with all your PLOT, MAP_SET
        CONTOUR, etc. commands. In fact, you don't _need_ /NOERASE for
        PLOT, but it guarantees consistent behaviour with MAP_SET etc.)
        A PLOT command without /NOERASE will advance to the next panel
        and thereby interfere with MULTIPANEL's plot counter.

        If you don't use MARGIN and OMARGIN, the values in ![XY].margin
        ![XY].omargin will take effect.

        A common block is used to store the current plot number and 
        margin information. This limits the use to one window at a time
        (although you can save all parameters elsewhere and supply them
        to the routine on a window-by-window basis).

 EXAMPLES:
        ; just retrieve the position of the next plot
        ; ---------------------------------------------------------------
        MULTIPANEL,position=p
        PLOT,findgen(10),color=1,position=p,/noerase

        ; same thing but use a specific margin (2-element form) 
        ; ---------------------------------------------------------------
        MULTIPANEL,margin=[0.1,0.05],position=p
        PLOT,findgen(10),color=1,position=p,/noerase

        ; (if you want to see both previous plots together use 
        ' /NOERASE with MULTIPANEL)

        ; multi-panel use:
        ; ---------------------------------------------------------------
        MULTIPANEL,NPlots=5                     ; set up for 5 plots
        for i=0,4 do begin
           MULTIPANEL,Position=p,margin=0.04    ; get current plot position
           plot,findgen(10),color=1,position=p,/noerase   ; plot
           MULTIPANEL,/Advance,/NoErase ; go to next panel
           ; note that the screen would be erased after the last plot
           ; without the /NoErase keyword.
        endfor
        ; now let's draw a frame around everything
        MULTIPANEL,/OFF,omargin=0.01,margin=0.,position=p,/noerase 
        Rectangle,p,xvec,yvec                   ; <<< uses RECTANGLE.PRO !!
        plots,xvec,yvec,color=1,/norm

 MODIFICATION HISTORY:
        mgs, 19 Mar 1999: VERSION 1.00
        mgs, 22 Mar 1999: - improved documentation, changed OMARGIN
                 to accept normalized coordinates.
                          - position now also returned if turned OFF
                          - added FIRSTPANEL and LASTPANEL keywords
                          - allow NPLOTS to be specified as parameter 
        mgs, 02 Jun 1999: - now saves old values of !X, !Y, and !P
                            and restores them when turned OFF.
        mgs, 03 Jun 1999: - save !X, !Y, and !P only if !p.multi was 
                            really off
        mgs, 26 Aug 2000: - changed copyright to open source

(See pro/QA/long_multipanel.pro)


LONG_OBJFIND

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_objfind

 PURPOSE:
   Find the location of objects within each slit mask

 CALLING SEQUENCE:
   objstruct = long_objfind( image, tset_slits=, $
    [fwhm=, nperslit=, peakthresh=, skymask=, objmask= ] )

 INPUTS:
   image      - Image for finding the slits, which would typically
                be a flat-field image, an arc image, or a sum of those
   tset_slits - Trace sets with slit start/end positions

 OPTIONAL INPUTS:
   fwhm       - FWHM for convolving flux along the slit before peak-finding;
                default to 3.0 pix.
                (Also, do not allow peaks closer to each other than FWHM pix.)
   nperslit   - Do not find more than this many objects per slit; default to 10
   peakthresh - Flux threshhold for finding objects; the flux must be
                at least this fraction of the brightest object in each slit;
                default to 0.
   absthresh  - Absolute flux threshold for finding objects; the peakflux must 
                be at least htis large; default to 0. If both peakthresh and 
                absthresh are set, absthresh overrides peakthresh. 
 OUTPUTS:
   objstruct  - Structure with object parameters

 OPTIONAL OUTPUTS:
   skymask    - Image of the cleanest sky pixels, =1 for good sky pixels

 COMMENTS:
   Each slit is smashed to a single vector in the spatial direction,
   taking care to align each wavelength in the spatial direction first.
   On this smashed flux vector, we then search for significant peaks.
   We then compute the expected position of each object at each wavelength,
   by assuming that each object always falls in the same position within
   the slit.

 EXAMPLES:

 BUGS:

 PROCEDURES CALLED:
   extract_asymbox2()
   find_npeaks()
   gaussian()
   long_slits2mask()
   long_slits2x()
   splog
   traceset2xy

 INTERNAL SUPPORT ROUTINES:
   long_obj_create()

 REVISION HISTORY:
   10-Mar-2005  Written by D. Schlegel, LBL

(See pro/Extract/long_objfind.pro)


LONG_PLAN

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_plan

 PURPOSE:
   Create plan file(s) for running the low-redux pipeline.  This code
   parses headers, does image stats, etc.

 CALLING SEQUENCE:
   long_plan, [ fileexpr, indir, planfile= ]

 INPUTS:

 OPTIONAL INPUTS:
   fileexpr   - File names in the input directory; default to '*.fits*'
   indir      - Input directory(s) for reading files;
                default to current directory
   planfile   - Output plan file; default to 'plan.par'.
                This file is put in the same directory as the raw data files.

 OUTPUT:

 COMMENTS:
   One plan file is made for each input directory.

   The following flavors of images are listed:
     bias
     domeflat
     iflat (internal flat)
     twiflat
     arc
     science

 EXAMPLES:

 BUGS:

 PROCEDURES CALLED:
   fileandpath()
   headfits()
   idlutils_version()
   splog
   sxpar()
   yanny_write

 INTERNAL SUPPORT ROUTINES:
   long_plan_struct()

 REVISION HISTORY:
   13-Mar-2005  Written by David Schlegel, LBL.

(See pro/General/long_plan.pro)


LONG_PLOTSCI

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_plotsci

 PURPOSE:
   Generate QA for the science extractions

 CALLING SEQUENCE:

 INPUTS:

 OUTPUTS:

 COMMENTS:

 EXAMPLES:

 BUGS:

 PROCEDURES CALLED:

 REVISION HISTORY:
   20-Apr-2005  Written by J. Hennawi Berkeley

(See pro/QA/long_plotsci.pro)


LONG_PLTOBJ

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_pltobj

 PURPOSE:
  Simple routine which plots a spectrum after reading in the standard
  science file generated by long_reduce

 CALLING SEQUENCE:

 INPUTS:


 OPTIONAL INPUTS:

 OUTPUTS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 BUGS:

 PROCEDURES CALLED:
   x_specplot (XIDL)

 INTERNAL SUPPORT ROUTINES:

 REVISION HISTORY:
   01-Oct-2005  Written by J. Hennawi UC Berkeley

(See pro/Spec/long_pltobj.pro)


LONG_PROC

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_proc

 PURPOSE:
   Overscan subtract, bias subtract, and flat field a CCD image. The routine 
   calls long_oscan and flat fields.

 CALLING SEQUENCE:
   long_proc, filename, [ flux, invvar, hdr=, $
    biasfile=, pixflatfile=, adderr=, /verbose ]

 INPUTS:
   filename   -  name of a image file

 OPTIONAL INPUTS:
   biasfile   - File with average bias
   pixflatfile- File with pixel flat
   adderr     - Additional error to add to the formal errors, as a fraction
                of the flux; default to 0.01 (1 per cent).

 OUTPUTS:

 OPTIONAL OUTPUTS:
   flux       - Image 
   invvar     - Inverse variance image
   hdr        - FITS header

 COMMENTS:

 EXAMPLES:

 BUGS:
   Need to add cosmic ray zapping.

 PROCEDURES CALLED:
   divideflat
   headfits()
   mrdfits()
   long_oscan

 REVISION HISTORY:
   10-Mar-2005  Written by J. Hennawi (UCB), D. Schlegel (LBL)

(See pro/General/long_proc.pro)


LONG_REDUCE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_reduce

 PURPOSE:

   Main program for the Low-redux pipeline.  This set of algorithms
   runs mainly as a black box.

 CALLING SEQUENCE:
  long_reduce, planfile, /clobber, /NOZAP, /NOFLEX, /NOHELIO 

 INPUTS:
  planfile  -- File created by long_plan which guides the reduction
               process

 OPTIONAL INPUTS:
 /NOFLEX  -- Do not apply flexure correction [necessary if your setup
             has not been calibrated.  Contact JH or JXP for help if
             this is the case.]
  HAND_FWHM -- Set the FWHM of the object profile to this value (in
               pixels)
 /NOHELIO -- Do not correct to heliocentric velocities
 /NOZAP   -- Do not flag CRs

 OUTPUTS:
  (1) Various calibration files
  (2) One multi-extension FITS file in Science per exposure containing
  the extracted data and processed images

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 BUGS:
   
 PROCEDURES CALLED:
   
 REVISION HISTORY:
   11-Mar-2005  Written by JH + SB

(See pro/General/long_reduce.pro)


LONG_REIDENTIFY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  long_reidentify
  Version 1.1

 PURPOSE:
  Given an initial guess at the wavelength solution, reidentify a new
  arc spectrum.

 CALLING SEQUENCE:
  LONG_REIDENTIFY, arc_obj, lines, wstruct

 INPUTS:

 OPTIONAL INPUTS:

 OUTPUTS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:


 REVISION HISTORY:
   25-May-2000  Created by JH

(See pro/Wave/long_reidentify.pro)


LONG_SENSFUNC

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_sensfunc

 PURPOSE:
   Use a standard star spectrum to determine the spectroscopic
   response function. 

 CALLING SEQUENCE:

 INPUTS:
   scifile         - file containing object structure which has spectrum 
                     for standard star

   standard_name   - name of the standard star
   
   sensfuncfile    - File to write the sensitivity function out to


 OPTIONAL INPUTS:
   OBJID           - object id of standar star in the object structure. Default
                     is to the first object. 
   nresln          - Break point spacing in resolution elemnets
                     (default=20)
   /MSK_BALM       - Mask Balmer lines (recommended but not default)

 OUTPUTS:
   mag_set        - structure containing b-spline info for sensitivity function

 OPTIONAL OUTPUTS:
  sensfunc         - sensitivity function evaluated

 COMMENTS:
                   See README file in /apps2/iraf211/iraf/noao/lib/onedstds/
                   for list of standard stars and the names of the
                   associated files

 EXAMPLES:

 BUGS:
                   Does not take into account atmospheric extinction!!!
                   Leaves out first and last wavelength bins of
                   sensitivity function

 PROCEDURES CALLED:
   traceset2xy (idlutils)
   xy2traceset (idlutils)
   splog       (idlutils)

 INTERNAL SUPPORT ROUTINES:

 REVISION HISTORY:
   01-Oct-2005  Written by J. Hennawi UC Berkeley

(See pro/Spec/long_sensfunc.pro)


LONG_SKYOPTIMAL

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_skyoptimal

 PURPOSE:
 Fit a non-parameteric object profile to the data unless the S/N is
 poor (less than 3) in which case fit a simple Gaussian.

 CALLING SEQUENCE:
 struct = long_skyoptimal(wave, data, ivar, oprof, sortpix, sigrej =)

 INPUTS:

 OPTIONAL INPUTS:

 OUTPUTS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 BUGS:
   
 PROCEDURES CALLED:
   
 REVISION HISTORY:
   11-Mar-2005  Written by JH + SB

(See pro/Extract/long_skyoptimal.pro)


LONG_SLITILLUM

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_slitillum

 PURPOSE:
  Generate an illumination image for all the slits in a mask

 CALLING SEQUENCE:
  image = long_slitillum( illumflatfile, slitmask, ximg )

 INPUTS:
  illumflatfile  -- Name of illumination flat image
  slitmask       -- Image describing the slits
  ximg           -- x positions of the slits

 OUTPUTS:
  image -- Illumination image

 COMMENTS:

 EXAMPLES:

 BUGS:

 PROCEDURES CALLED:

 REVISION HISTORY:
   20-Apr-2005  Written by J. Hennawi Berkeley

(See pro/Slits/long_slitillum.pro)


LONG_SLITMASK

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_slitmask

 PURPOSE:
   Determine the positions of the slits on the image, and return tracesets

 CALLING SEQUENCE:
   long_slitmask, filename, outfile, $
    [minslit=,biasfile=, y1=, y2=, nmed=, ksize=, peakthresh=, $
    radius=, nave=, maxshifte=, maxshift0=, func=, ncoeff=, tset_slits= ]

 INPUTS:
   filename   - Image for finding the slits, which would typically
                be a flat-field image, an arc image, or a sum of those
   outfile    - Output file name with slit mask positions

 OPTIONAL INPUTS:
   mislit     - Minimum slit width. Default is to return all slits.
   biasfile   - Bias file to apply to raw images
   y1         - Starting row number for smashing image to initially
                identify slits; default to 0.40*NY
   y2         - Ending row number for smashing image to initially
                identify slits; default to 0.60*NY
   nmed       - Width for median-filtering the image first in the wavelength
                direction (to remove cosmics)
   ksize      - Half-kernel size for sharpness filter; default to 5 pix
   peakthresh - Flux threshhold for finding slits; the flux must be
                at least this fraction of the brightest slit; default to 0.02
   radius     - Keyword for TRACE_CRUDE; default to same value as KSIZE
   nave       - Keyword for TRACE_CRUDE; default to 3
   maxshifte  - Keyword for TRACE_CRUDE; default to 0.1
   maxshift0  - Keyword for TRACE_CRUDE; default to 1.0
   func       - Keyword for XY2TRACESET; default to 'legendre'
   ncoeff     - Keyword for XY2TRACESET; default to 3
   verbose    - Verbose if set
   /SNGL      - Forces the code to assume one (very long) long slit


 OUTPUTS:

 OPTIONAL OUTPUTS:
   tset_slits - 2-element array of trace sets, where the first defines
                the starting slit positions, and the second one defines
                the ending slit positions

 COMMENTS:

 EXAMPLES:

 BUGS:
   Need to deal with cases where slits appear to overlap,
   or if a slit position goes crazy.  At a minimum, we should
   toss such cases???
   Allow several input files, like a dome and an arc, and then
   align those images and add them???

   I think peakthresh should be much lower like 0.02, especially
   if slitwidths are widely varying  SMB, 3-25-05

 PROCEDURES CALLED:
   long_proc
   long_slits2mask()
   mwrfits
   splog
   trace_crude()
   xy2traceset

 REVISION HISTORY:
   10-Mar-2005  Written by D. Schlegel, LBL
   13-Oct-2005  Edited by J. Simon, Caltech to assume that solo starting 
                and ending slit positions are real, and need a complementary
                 ending or starting position generated for them

(See pro/Slits/long_slitmask.pro)


LONG_SLITS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_slits

 PURPOSE:
   Simple code to find slit edges.  Obsolete?

 CALLING SEQUENCE:

 INPUTS:

 OUTPUTS:

 COMMENTS:

 EXAMPLES:

 BUGS:

 PROCEDURES CALLED:

 REVISION HISTORY:
   20-Apr-2005  Written by J. Hennawi Berkeley

(See pro/Slits/long_slits.pro)


LONG_SLITS2MASK

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_slits2mask

 PURPOSE:
   Convert trace sets that describe slit positions into a mask
   with the slit number for each pixel

 CALLING SEQUENCE:
   slitmask = long_slits2mask(tset_slits, [ xshift=, nslit= ] )

 INPUTS:
   tset_slits - 2-element array of trace sets, where the first defines
                the starting slit positions, and the second one defines
                the ending slit positions

 OPTIONAL INPUTS:
   xshift     - Number of pixels to shift the traces in the output image;
                this can bbe a fractional number

 OUTPUTS:
   slitmask   - Mask image, with values of zero where there is no slit,
                and the slit number (starting at 1) for each object

 OPTIONAL OUTPUTS:
   nslit      - Number of slits

 COMMENTS:

 EXAMPLES:
   
 BUGS:
   
 PROCEDURES CALLED:

 REVISION HISTORY:
   10-Mar-2005  Written by D. Schlegel, LBL

(See pro/Slits/long_slits2mask.pro)


LONG_SLITS2X

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_slits2x

 PURPOSE:
   Find the location of objects within each slit mask

 CALLING SEQUENCE:
   ximg = long_slits2x( tset_slits, [ slitid=, xshift=, nslit= ] )

 INPUTS:
   tset_slits - Trace sets with slit start/end positions
   slitid     - Slit ID number(s) (1-indexed); default to all slit IDs
   xshift     - Number of pixels to shift the traces in the output image;
                this can bbe a fractional number

 OPTIONAL INPUTS:

 OUTPUTS:
   ximg       - Image with the fractional X (spatial) position along
                the specified slit for each pixel

 OPTIONAL OUTPUTS:
   nslit      - Number of slits

 COMMENTS:

 EXAMPLES:

 BUGS:
   
 PROCEDURES CALLED:
   traceset2xy
   
 REVISION HISTORY:
   11-Mar-2005  Written by D. Schlegel, LBL

(See pro/Slits/long_slits2x.pro)


LONG_STDSLITS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_stdslits

 PURPOSE:
   Find slits for a standard star?

 CALLING SEQUENCE:

 INPUTS:

 OUTPUTS:

 COMMENTS:

 EXAMPLES:

 BUGS:

 PROCEDURES CALLED:

 REVISION HISTORY:
   20-Apr-2005  Written by J. Hennawi Berkeley

(See pro/Slits/long_stdslits.pro)


LONG_SURF_TRACE2D

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_surf_trace2d

 PURPOSE:
  Fit a 2D surface to the output from trace_crude.  Useful for
  tracing arc lines among other things.

 CALLING SEQUENCE:
  long_surf_trace2d, t, y, xcen, xerr, surffit

 INPUTS:

 OUTPUTS: 

 OPTIONAL OUTPUTS: 

 COMMENTS:
 
 EXAMPLES:

 BUGS:
    
 PROCEDURES CALLED:
 

 REVISION HISTORY:
   27-May-2005 Written by J. Hennawi (UCB)

(See pro/General/long_surf_trace2d.pro)


LONG_WAVEIMG

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_waveimg

 PURPOSE:
   Determine the positions of the slits on the image, and return tracesets

 CALLING SEQUENCE:
   waveimg = long_waveimg(arcimg, 

 INPUTS:
   arcimg       - 2D arc image
   arcivar      - inverse variance of arc image
   tset_slits   - slit trace set structure
   linlist      - LRIS line list
   archive_file - save file for archived arc for this setup
 OPTIONAL INPUTS:
   mxshift    - Maximum shift for cross correlation of arc 
                default to 200 (grism spectra?)
   sigrej     - Sigma for rejection of arc lines in polynomial fitting; 
                default is 2
   box_rad    - boxcar radius for extracting 1-d arc (default is 5)
   qafile     - QA file for diagnostics
                
 OUTPUTS:
   waveimg    - 2-d wavelength map. 

 OPTIONAL OUTPUTS:
   piximg     - Pixel wavelength solution.
   
   fwhmset    - Fit to fwhm from arc lines for each slit as an array of 
                traceset structures
   fwqmset    - Fit to fwqm from arc lines for each slit as an array of 
                traceset structures
   
 COMMENTS:
   The algorithm for determining the wavelength solution is in ARC_PAIRS().

 EXAMPLES:

 BUGS:

 PROCEDURES CALLED:
   arc_pairs()
   copy_struct_inx
   djs_median()
   long_slits2mask()
   long_xcorr()
   splog
   trace_crude()
   trace_fweight()
   traceset2xy
   xy2traceset

 REVISION HISTORY:
   10-Mar-2005  Written by S. Burles (MIT), David Schlegel (LBL), and 
                Joe Hennawi (UC Berkeley)

(See pro/Wave/long_waveimg.pro)


LONG_WAVEPIX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_wavepix

 PURPOSE:
   Find and trace arc lines

 CALLING SEQUENCE:

 INPUTS:

 OPTIONAL INPUTS:

 OUTPUTS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 BUGS:
   
 PROCEDURES CALLED:
   
 REVISION HISTORY:
   11-Mar-2005  Written by D. Schlegel, LBL

(See pro/Wave/long_wavepix.pro)


LONG_WAVEQA

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_waveqa

 PURPOSE:
   Generate QA for the wavelength solution.

 CALLING SEQUENCE:

 INPUTS:
   
 OPTIONAL INPUTS:
                
 OUTPUTS:

 OPTIONAL OUTPUTS:
   
 COMMENTS:

 EXAMPLES:

 BUGS:

 PROCEDURES CALLED:

 REVISION HISTORY:
   10-Mar-2005  Written by S. Burles (MIT), David Schlegel (LBL), and 
                Joe Hennawi (UC Berkeley)

(See pro/QA/long_waveqa.pro)


LONG_WITERFIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_witerfit

 PURPOSE:
   Iterate on wavelength solution

 CALLING SEQUENCE:

 INPUTS:
   
 OPTIONAL INPUTS:
                
 OUTPUTS:

 OPTIONAL OUTPUTS:
   
 COMMENTS:

 EXAMPLES:

 BUGS:

 PROCEDURES CALLED:

 REVISION HISTORY:
   10-Mar-2005  Written by S. Burles (MIT), David Schlegel (LBL), and 
                Joe Hennawi (UC Berkeley)

(See pro/Wave/long_witerfit.pro)


LONG_WPIX2IMAGE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_wpix2image

 PURPOSE:
  Convert a wavelength solution to a wavelength image ??

 CALLING SEQUENCE:
 wvimg =  long_wpix2image( tset2d, tset_slits, wset = , xshift = $
    waveimg = , XFIT = )

 INPUTS:
  tset2d=  -- Trace set describing the arc line curvature

 OUTPUTS:
 
 OPTIIONAL OUTPUTS:
  waveimg=

 COMMENTS:

 EXAMPLES:

 BUGS:

 PROCEDURES CALLED:

 REVISION HISTORY:
   20-Apr-2005  Written by J. Hennawi Berkeley

(See pro/Slits/long_wpix2image.pro)


LONG_WSTRUCT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   long_wstruct

 PURPOSE:
   Create a structure which guides the data reduction process.  Parts
   of the structure are initialized according to the instrument and
   its configuration.

 CALLING SEQUENCE:

 INPUTS:
   hdr  -- Image header

 OPTIONAL INPUTS:
                
 OUTPUTS:
  Returns a structure describing the instrument configuration which
  is used to guide the reduction steps.

 OPTIONAL OUTPUTS:
   
 COMMENTS:

 EXAMPLES:

 BUGS:

 PROCEDURES CALLED:

 REVISION HISTORY:
   10-Mar-2005  Written by S. Burles (MIT), David Schlegel (LBL), and 
                Joe Hennawi (UC Berkeley)

(See pro/General/long_wstruct.pro)


LRIS_TSTLONG

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 lris_tstlong  
     Version 1.1

 PURPOSE:
  Tests the Longslit routines on LRIS

 CALLING SEQUENCE:

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   11-May-2007 Written by JXP

(See pro/LRIS/lris_tstlong.pro)


MMT_BLUE_SETFLEX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   mmt_blue_setflex

 PURPOSE:
 This script takes a sky spectrum for the MMT-B 300 line grating 
 setup and shifts it into the Paranal sky frame. It cretes an archived 
 reference sky spectrum. The MMT spectrum should have been reduced with 
 long_reduce with the flags nohelio and noflexure set to 1. 

 CALLING SEQUENCE:

 INPUTS:

 OPTIONAL INPUTS:
                
 OUTPUTS:

 OPTIONAL OUTPUTS:
   
 COMMENTS:

 EXAMPLES:

 BUGS:

 PROCEDURES CALLED:

 REVISION HISTORY:
   10-Mar-2005  Written by S. Burles (MIT), David Schlegel (LBL), and 
                Joe Hennawi (UC Berkeley)

(See pro/MMT/mmt_blue_setflex.pro)


MMT_FIXHEAD

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   mmt_fixhead

 PURPOSE:
  Fix a minor 'bug' in the MMT BCS header

 CALLING SEQUENCE:

 INPUTS:

 OUTPUTS:

 COMMENTS:

 EXAMPLES:

 BUGS:

 PROCEDURES CALLED:

 REVISION HISTORY:
   20-Apr-2005  Written by J. Hennawi Berkeley

(See pro/MMT/mmt_fixhead.pro)


MMT_SLITMASK[1]

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   mmt_slitmask

 PURPOSE:
   Generate slitmask structure for the BCS CCD

 CALLING SEQUENCE:
   tset_slit = mmt_slitset( nx,ny )

 INPUTS:

 OUTPUTS:
   tset_slits - 2-element array of trace sets, where the first defines
                the starting slit positions, and the second one defines
                the ending slit positions

 COMMENTS:

 EXAMPLES:

 BUGS:
   This will break if the binning is not 2x4

 PROCEDURES CALLED:

 REVISION HISTORY:
   20-Apr-2005  Written by J. Hennawi Berkeley

(See pro/MMT/mmt_slitset.pro)


MMT_SLITMASK[2]

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   mmt_slitmask

 PURPOSE:
   Combines multiple arcs.  One generally observes the He separately
   from the Hg exposures (the latter take longer).  The code requires
   that you combine these exposures prior to running long_reduce.

 CALLING SEQUENCE:
 mmt_waveblue, hgfile, hefile, outfil

 INPUTS:
  hgfile -- Filename of Raw image of the Hg arc exposure
  hefile -- Filename of Raw image of the He arc exposure

 OUTPUTS:
  outfil -- Output filename for the combined arc

 COMMENTS:

 EXAMPLES:

 BUGS:
   This will break if the binning is not 2x4

 PROCEDURES CALLED:

 REVISION HISTORY:
   20-Apr-2005  Written by J. Hennawi Berkeley

(See pro/MMT/mmt_waveblue.pro)


MMT_TSTLONG

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 mmt_tstlong
     Version 1.1

 PURPOSE:
  Tests the Longslit routines on the BCS spectrometer on the MMT

 CALLING SEQUENCE:

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   11-May-2007 Written by JXP

(See pro/MMT/mmt_tstlong.pro)


QA_LONGSLIT_PROFILE

[Previous Routine] [List of Routines]
 NAME:
   qa_longslit_profile

 PURPOSE:
   Generate QA for the object profile fitting

 CALLING SEQUENCE:

 INPUTS:

 OUTPUTS:

 COMMENTS:

 EXAMPLES:

 BUGS:

 PROCEDURES CALLED:

 REVISION HISTORY:
   20-Apr-2005  Written by J. Hennawi Berkeley

(See pro/QA/qa_longslit_profile.pro)