IDL Help for XIDL

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: Thu Jun 10 14:53:54 2010.


List of Cloudy/

List of Color/

List of Cosm/

List of DLA/

List of Dust/

List of FIT/

List of FUSE/*/

List of GRB/

List of General/

List of IDLA/

List of IMG/General/

List of IMG/Photometry/

List of IMG/Reduction/

List of Keck/HIRES/

List of Keck/LRIS/*/

List of Lick/Kast/*/

List of Obs/

List of SDSS/*/

List of Spec/Analysis/

List of Spec/Arcs/

List of Spec/Display/

List of Spec/Extraction/

List of Spec/Flux/

List of Spec/General/

List of Spec/Lines/

List of Spec/Rectify/

List of Spec/Slits/

List of Spec/Voigt/

List of lcoovi/


Routine Descriptions

ABSLINSTRCT__DEFINE

[Next Routine] [List of Routines]
 NAME:
 abslinstrct__define
   Version 1.1

 PURPOSE:
  Structure for a simple absorption line. 

 CALLING SEQUENCE:
   tmp = {abslinstrct}

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
  Written by JXP

(See Spec/Lines//abslinstrct__define.pro)


AIRMASS

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

 PURPOSE:
    Calculate the airmass for an obj with a given DEC at an
  observatory with a given DEC and an offset in RA

 CALLING SEQUENCE:
  airmass = airmass(obs_dec, obj_dec, [hour_angle])

 INPUTS:
  obs_dec -- DEC of the observatory
  obj_dec -- DEC of the object
  [hour_angle]  -- Offset of RA [default: [-2,-1,0,1,2]]

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  APER=   -- Aperture size (boxcar)
  /BOXCAR -- Do boxcar extraction
  /CHK    -- 
  YMODEL= -- 2D solution from extract_image

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
  print, airmass( 20., 45., [-3, -2, -1, 0])

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   Written by E. Gawiser

(See Obs//airmass.pro)


ARCLINSTRCT__DEFINE

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

 PURPOSE:
    Arc line structure

 CALLING SEQUENCE:
   tmp = {arclinstrct}

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   Written by JXP

(See Spec/Arcs//arclinstrct__define.pro)


CLDY_2PHAS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 cldy_2phas   
   Version 1.0

 PURPOSE:
    Finds the best 2-phase solution for a series of ratio
    constraints.  This is not a well devloped or tested routine.

 CALLING SEQUENCE:
   
 cldy_2phas, grid, ratio, sig, ion1, ion2, restrct, NHILMT=, FEHLMT=, /UONLY

 INPUTS:
   grid  - CLOUDY grid
   ratio -  Observed ionic ratios
   sig  -  Error on the ratios
   ion1 - Z, i for ion1  (can be an array of Z,i pairs)
   ion2 - Z, i for ion2  (can be an array of Z,i pairs)

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   NHILMT - 2-element array giving NHI min,max
   FEHLMT - 2-element array giving FeH min,max
   UONLY  - Value of nH to use

 OPTIONAL OUTPUTS:
   retstrct - Returns a structure of the output

 COMMENTS:

 EXAMPLES:
   cldy_2phas, grid, [0.3], [0.1], [14,4], [14,2], soltn


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   08-Aug-2001 Written by JXP

(See Cloudy//cldy_2phas.pro)


CLDY_ALLFN

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

 PURPOSE:
    Plots [X/Fe+], [X/H0] vs. Elem for a range of the grid

 CALLING SEQUENCE:
   
 cldy_allfn, grid, obsi, val, ions

 INPUTS:
   grid  -- CLOUDY grid
   obsi  -- Observed pair of ions
   val   -- Ratio of observed ions
   ions  -- Array of [Z,ion] vectors to plot
   fN_in -- Fraction of the ratio contributed by entirely ionzed gas

 RETURNS:
   

 OUTPUTS:
   Creates a Plot

 OPTIONAL OUTPUTS:

 OPTIONAL KEYWORDS:
   NHI   
   FeH
   nH

 COMMENTS:

 EXAMPLES:
   cldy_allfn, grid, [ [26,3], [26,2] ], -0.5,  [[14,2], [13,2]]

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   04-Dec-2001 Written by JXP

(See Cloudy//cldy_allfn.pro)


CLDY_CALCNCOLL

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 cldy_calcncoll
  V1.1

 PURPOSE:
    Calculates the column density of a series of ions
     for CIE given a temperature

 CALLING SEQUENCE:
   
  cldy_calcncoll, temp, ions, colms, NHI=, MTL=

 INPUTS:
   temp -- Temperature of the gas (K)
   ions -- Ions to calculate columns for [[Z,i]]

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  NHI - N(HI) value  [default = 15]
  MTL - Metallicity value  [default = 0. (solar)]
  INFIL - Name of fits file containing Cloudy output of 
      collsional ionization calculation (e.g. cloudy_collisions.fits)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
 cldy_calcncoll, 1e5, [[14,2], [8,6]], colms, NHI=14.8

 PROCEDURES CALLED:
  prs_cldycoll
  printcol

 REVISION HISTORY:
   04-Feb-2004 Written by JXP

(See Cloudy//cldy_calcncoll.pro)


CLDY_CALCNL

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

 PURPOSE:
   Creates a Cloudy input file from a CUBA output file given a
    redshift 

 CALLING SEQUENCE:
   
   cldy_calcnl, fil, z, logU, Jnu, NHVAL=, NHH=, LVAL=

 INPUTS:
   fil  - CUBA output file
   z    - Redshift
   logU    - Ionization parameter
   J912  - Intensity at Lyman limit

 RETURNS:

 OUTPUTS:
   NHV=   -  Value of the volume density
   LVAL= -  Length of the absorber  (kpc)

 OPTIONAL INPUTS:
   NHH=  -  NH value of the sightline (required for lval)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
 cldy_calcnl, '/u/xavier/Cloudy/Spec/Data/CUBA/Q1G0/bkgthick.out',
 0.5, -1.1, 6e-23, NHVAL=nhval


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   30-Wed-2004 Written by JXP

(See Cloudy//cldy_calcnl.pro)


CLDY_CALCTCOLL

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 cldy_calctcoll
  V1.1

 PURPOSE:
    Given a pair of ions and the ratio between those ions, calculate
   the temperature for gas with temperature T that gives that ratio

 CALLING SEQUENCE:
   
   cldy_calctcoll, ion1, ion2, rtio, tans, INFIL=, /PLOT

 INPUTS:
   ion1 -- [Z,i]
   ion2 -- [Z,i]
   rtio -- Ratio between ion1 and ion2
   tans -- Temperature which gives that ratio

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  OFFS - 'Error' in rtio to determine temperature range [default: 1.]
  PLOT - Create a plot
  COLL - CIE grid

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
 cldy_calctcoll, [7,5], [8,6], -0.9, tans, /plot

 PROCEDURES CALLED:
  getabnd
  prs_cldycoll

 REVISION HISTORY:
   04-Feb-2004 Written by JXP

(See Cloudy//cldy_calctcoll.pro)


CLDY_CALCU

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 cldy_calcu
   Version 1.0

 PURPOSE:
    Calculate the ionization parameter 'U' for a given redshift
    an nH value assuming the Haardt & Madau (1996) spectrum

 CALLING SEQUENCE:
  cldy_calcu, hm_fil, z, nH, logU, NRM=nrm

 INPUTS:
   hm_fil - Haardt & Madau file of fluxes 
   z - Redshif
   nH - Hydrogen volume density [linear]

 RETURNS:
   
 OUTPUTS:

 OPTIONAL OUTPUTS:
  logU -- The log of the ionization parameter

 OPTIONAL KEYWORDS:
   [NRM] - Normalization factor for H&M data  [default: 1e-23]

 COMMENTS:

 EXAMPLES:
   cldy_calcu, hm_fil, z, nH, logU, NRM=

 PROCEDURES/FUNCTIONS CALLED:
  readcol

 REVISION HISTORY:
   02-Nov-2003 Written by JXP

(See Cloudy//cldy_calcu.pro)


CLDY_CUBA

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

 PURPOSE:
   Creates a Cloudy input file from a CUBA output file given a
    redshift 

 CALLING SEQUENCE:
   
   cldy_cuba, fil, z, outfil, FIXG=fixg

 INPUTS:
   fil  - CUBA output file
   z    - Redshift

 RETURNS:

 OUTPUTS:
   outfil  - Cloudy output file

 OPTIONAL INPUTS:
  /FIXG -- I do not remember what this is for!
  CALCU= -- Calculate the U parameter assuming n_H = 1 cm^-3

 OPTIONAL OUTPUTS:
 STRCT -- Stucture containing the wavelength and flux values

 COMMENTS:

 EXAMPLES:
 cldy_cuba, '/u/xavier/Cloudy/Spec/Data/CUBA/Q1G0/bkgthick.out',
 0.35, '/u/xavier/Cloudy/Spec/Output/q1g0_z035.spec'


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   06-Nov-2003 Written by JXP

(See Cloudy//cldy_cuba.pro)


CLDY_MKMODELS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 cldy_mkmodels
  V1.1

 PURPOSE:
    Run a sweet of cloudy models
 CALLING SEQUENCE:

  cldy_mkmodels, infil, fluxfil, z, OUTDIR=,INDIR=,CLOUDYDIR=,NHI=,METALS=,U=,HDEN=
                                    /CLOBBER

  INPUT:
    infil:  
       input file with:
           <Variable name>  <desired minimum value> <desired maximum value> <step size>


           variables which can be input  are:  NHI, nH, U, metals
           NOTE:  MUST use these specific variable tags

     fluxfil: cldy_cuba output file defining flux
     
     z:  redshift 

     NHI, METALS, U, HDEN:  specify a single value for these variables to be used 
                            in all models run (HDEN is for NH)

     OUTDIR:  output file directory
     INDIR:  input file directory
     TITLE:  cloudy title (default: model)
     FILENAME: input/output file name lead (default: cloudy)
     /CLOBBER: clobber previous runs with same FILENAME

  NHI 16.0 18.0 0.25
  metals -1.0 0.0 1.0
  U -6.0 0.0 0.25
  nH -2.0 0.0 2.0


 REVISION HISTORY:
   10-Sep-2005 Written by GEP

(See Cloudy//cldy_mkmodels.pro)


CLDY_PLOT

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

 PURPOSE:
    GUI for plotting a CLOUDY grid and doing quick analysis 

 CALLING SEQUENCE:
   
   cldy_plot, ingrid, /INFIL

 INPUTS:
   flux  - Flux array (or FITS file)
   [inflg]  - Sigma array (or FITS file)

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   INFIL       -   set to indicate that the 'ingrid' is a file, and should be 
                   read in

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   cldy_plot, 'grid.fits', /INFIL
   
   cldy_plot, grid


 PROCEDURES/FUNCTIONS CALLED:
  XGETX_PLT
  XGETY_PLT
  XGETXPIX_PLT
  XGETYPIX_PLT

 REVISION HISTORY:
  -- Built by GEP

(See Cloudy//cldy_plot.pro)


CLDY_PLT2PHS

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

 PURPOSE:
  Plots a 2 phase solution (one purely neutral) given a Cloudy
  grid and related values.  The user also inputs a pair of ions and
  a ratio between them.
    

 CALLING SEQUENCE:
   
 cldy_plt2phs, grid, NHI, FeH, nH, obsi, val, ions

 INPUTS:
   grid  - CLOUDY grid
   NHI   - N(HI) value
   FeH   - Metallicity of the gas
   nH    - Hydrogen volume density
   obsi  - Observed pair of ions
   val   - Ratio of observed ions
   ions  - Array of [Z,ion] vectors to plot
   [YMNX=] - Y limits of the plot

 RETURNS:
   

 OUTPUTS:
   Creates a Plot

 OPTIONAL OUTPUTS:

 COMMENTS:
  Developed for the analysis in Prochaska et al. 2002 (Q1755)

 EXAMPLES:
   cldy_plt2phs, grid, 19.0d, -1.0d, -1.0d, [ [26,3], [26,2] ], -0.5,
   [[14,2], [14,3]]


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   15-Nov-2001 Written by JXP

(See Cloudy//cldy_plt2phs.pro)


CLDY_PRSGRID

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 cldy_prsgrid
  V1.1

 PURPOSE:
    parse a set of CLOUDY output files and create a FITS file
 CALLING SEQUENCE:

   cldy_prsout, outfil, cldystrct=cldystrct

 INPUT:
    indir:  Directory containing CLOUDY output files
    outfil: name of CLOUDY output file

 OUTPUT:
    cldystrct: output cloudy strct

 REVISION HISTORY:
   12-Sep-2005 Written by JXP

(See Cloudy//cldy_prsgrid.pro)


CLDY_PRSMODELS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 cldy_prsmodels
  V1.1

 PURPOSE:
    Run a sweet of cloudy models
 CALLING SEQUENCE:

  cldy_prsmodels, infil, fluxfil, OUTDIR=,INDIR=,CLOUDYDIR=,NHI=,METALS=,U=,HDEN=


  INPUT:
    infil:
       input file with:
           <Variable name>  <desired minimum value> <desired maximum value> <step size>
           variables which can be input  are:  NHI, nH, U, metals
           NOTE:  MUST use these specific variable tags

     NHI, METALS, U, HDEN:  specify a single value for these variables to be used
                            in all models run (HDEN is for NH)

     OUTDIR:  output file directory
     INDIR:  input file directory
     FILENAME: input/output file name lead (default: cloudy)

  OUTPUT:
     supstrc:  output cloudy structures


 REVISION HISTORY:
   12-Sep-2005 Written by GEP

(See Cloudy//cldy_prsmodels.pro)


CLDY_PRSOUT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 cldy_prsout
  V1.1

 PURPOSE:
    parse a single CLOUDY output file

 CALLING SEQUENCE:
   cldy_prsout, outfil, cldystrct=cldystrct

 INPUT:
    outfil: name of CLOUDY output file

 OUTPUT:
    cldystrct: output cloudy strct

 REVISION HISTORY:
   12-Sep-2005 Written by GEP
   27-Apr-2006 Modified to work with Cloudy v06.02 syntax

(See Cloudy//cldy_prsout.pro)


CLDY_QCK2

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 cldy_qck2
   Version 1.0

 PURPOSE:
   Calculates a quick 2-phase model given a set of ions
   and the ratio of these ions (and the error in the ratio)
   and finally the two elements in the Cloudy grid which
   are to give the input ratios.

 CALLING SEQUENCE:
   
 cldy_qck2, grid, ratio, sig, ion1, ion2

 INPUTS:
   grid  - CLOUDY grid
   ratio -  Observed ionic ratios (array)
   sig  -  Error on the ratios
   ion1 - Z, i for ion1
   ion2 - Z, i for ion2 
   model - Two element array of the Cloudy grid

 RETURNS:
   

 OUTPUTS:

 OPTIONAL KEYWORDS:
   NHILMT - 2-element array giving NHI min,max
   FEHLMT - 2-element array giving FeH min,max

 OPTIONAL OUTPUTS:
  CHISQ - chisq

 COMMENTS:

 EXAMPLES:
   cldy_qck2, grid, [0.4], [0.1], [ 14,3 ], [14,2], model


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   13-Nov-2001 Written by JXP

(See Cloudy//cldy_qck2.pro)


CLDY_STARBURST

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

 PURPOSE:
   Creates a Cloudy input file from the Starburst99 template

 CALLING SEQUENCE:
   
   cldy_cuba, fil, age, outfil, FIXG=fixg

 INPUTS:
   fil  - Filname
   age  - Age of the starburst

 RETURNS:

 OUTPUTS:
   outfil  - Cloudy output file

 OPTIONAL INPUTS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   19-Jun-2006 Written by JXP

(See Cloudy//cldy_starburst.pro)


CLDY_UPLOT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 cldy_uplot
   Version 1.0

 PURPOSE:
    Creates a 'Uplot' for given NHI, FeH, nH values after inputting
   a Cloudy grid and a set of ions.

 CALLING SEQUENCE:
   
 cldy_uplot, grid, NHI, FeH, nH, ions

 INPUTS:
   grid - Cloudy grid
   NHI  - HI column densities [Can be an array of values]
   FeH  - Metallicity of the gas [must match grid value]
   nH   - Volume density of the gas [must match grid value]
   ions  - Array of [Z,ion] vectors
   YMNX= - Y values of the plot
   INFIL= - Ps file to create (instead of plotting to screen)

 RETURNS:
   
 OUTPUTS:
   Creates a Plot

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   cldy_Uplot, grid, 19.0d, -1.0d, -1.0d, [[14,2], [14,3]]


 PROCEDURES/FUNCTIONS CALLED:
 getcolor
 x_setclrs
 getabnd

 REVISION HISTORY:
   15-Nov-2001 Written by JXP
   27-Apr-2006 Modified to look more like published plots, KLC

(See Cloudy//cldy_uplot.pro)


CLDY_WRIN

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 cldy_wrin
  V1.1

 PURPOSE:
    Create a CLOUDY input file
   
 INPUT
   params:  array of parameters in the following order:  z, logN_HI, metallicity, logU, logn_H
   fluxfil:  text file of rydberg/flux pairs
 
 OPTIONAL
   v0602a: new syntax for Cloudy v06.02
   cie: constant temperature, mmodel collisional ionization equilibrium 
        (exclude ionization parameter and fluxfil)

 CALLING SEQUENCE:

   cldy_wrin, params, fluxfil, OUTFIL=outfil

 REVISION HISTORY:
   10-Sep-2005 Written by GEP
   13-Apr-2006 added v0602a and cie, KLC

(See Cloudy//cldy_wrin.pro)


COSM_COMMON

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

 PURPOSE:
    Routine to initialize and set values in the Cosmology common
    block named 'cosmolgy_cmmn'

 CALLING SEQUENCE:
   cosm_common

 INPUTS:
   H0 =   Hubbles constant in km/s/Mpc
   Omegavac = Lambda value   [Default: 0.7]
   OmegaDM = Omega for Dark Matter  [Default: 0.3]

 RETURNS:

 OUTPUTS:
   
 OPTIONAL KEYWORDS:
  /W06MAP -- Applies the WMAP cosmolgy from 2006
  /SILENT -- No screen output

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   22-Nov-2003 Written by JXP

(See Cosm//cosm_common.pro)


COSM_DIST

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

 PURPOSE:
  Calculate the cosmological comoving distance (Mpc) given a 
     cosmology and redshift   

 CALLING SEQUENCE:
    dist = cosm_dist(z)

 INPUTS:
   z -  Redshift
   [cosomlogy] -  By default the cosmology is set prior to 
     calling this using cosm_common.  You can have this done by
     keying 

 RETURNS:
   dist  -- Distance in Mpc

 OUTPUTS:

 OPTIONAL KEYWORDS:
  H0=    -- Hubble constant (km/s/Mpc)
  /INIT  -- Initializes the cosmology to the default values
  /LUM   -- Luminosity distance (Mpc)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   
   dist = cosm_dist(2., /INIT)

 PROCEDURES CALLED:
   x_constants
   cosm_common
   cosm_intdist
   qromb

 REVISION HISTORY:
   22-Nov-2003 Written by JXP

(See Cosm//cosm_dist.pro)


COSM_HUBBLE

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

 PURPOSE:
   Calculates Hubbles constant at arbitrary redshift

 CALLING SEQUENCE:
   

 INPUTS:
   z  -- Redshift

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /INIT  -- Initializes the cosmology to the default values

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   hubb = cosm_hubble(2., /INIT)
   

 PROCEDURES CALLED:
   cosm_common

 REVISION HISTORY:
   22-Nov-2003 Written by JXP

(See Cosm//cosm_hubble.pro)


COSM_TIME

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

 PURPOSE:
   Calculates the age of the universe at an arbitrary redshift where
  the interval is from z=0 to z_i.

 CALLING SEQUENCE:

 INPUTS:
   z_i  -- Redshift

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /INIT  -- Initializes the cosmology to default values (0.7, 0.3, 75)
  /W06MAP  -- Initializes the cosmology to WMAP06 (0.72, 0.28, 73)
  H0=    -- Hubbles constant (km/s/Mpc)
  /START  -- Calculate the age from z=Infinity to z_i

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   age = cosm_time(1.)
   

 PROCEDURES CALLED:
   cosm_common

 REVISION HISTORY:
   02-Jul-2004 Written by JXP

(See Cosm//cosm_time.pro)


COSM_XZ

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

 PURPOSE:
    Calculate the cosmological distance X from z=0 to z=z

 CALLING SEQUENCE:
   

 INPUTS:
   z -- Redshift

 RETURNS:
   x -- Cosmological pathlength

 OUTPUTS:

 OPTIONAL KEYWORDS:
   H0 -- Hubbles constant (km/s/Mpc)
   OM -- Omega Dark Matter
   OV -- Lambda

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   

 PROCEDURES CALLED:
  cosm_common
  cosm_intxz
  qromb

 REVISION HISTORY:
   11-March-2004 Written by JXP

(See Cosm//cosm_xz.pro)


COSM_ZTIME

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

 PURPOSE:
   Calculates the redshift given the age (z=0 corresponds to t=0yr)

 CALLING SEQUENCE:
  z  = cosm_ztime(t, /init)

 INPUTS:
   t  -- Time

 RETURNS:
   z  -- Redshift

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /INIT  -- Initializes the cosmology to the default values
  H0=    -- Hubbles constant (km/s/Mpc)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   z = cosm_ztime(1e10)
   

 PROCEDURES CALLED:
   cosm_common

 REVISION HISTORY:
   14-Dec-2004 Written by JXP

(See Cosm//cosm_ztime.pro)


CURVEFIT

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

 PURPOSE:
       Non-linear least squares fit to a function of an arbitrary
       number of parameters.  The function may be any non-linear
       function.  If available, partial derivatives can be calculated by
       the user function, else this routine will estimate partial derivatives
       with a forward difference approximation.

 CATEGORY:
       E2 - Curve and Surface Fitting.

 CALLING SEQUENCE:
       Result = CURVEFIT(X, Y, Weights, A, SIGMA, FUNCTION_NAME = name, $
                         ITMAX=ITMAX, ITER=ITER, TOL=TOL, /NODERIVATIVE)

 INPUTS:
       X:  A row vector of independent variables.  This routine does
           not manipulate or use values in X, it simply passes X
           to the user-written function.

       Y:  A row vector containing the dependent variable.

  Weights:  A row vector of weights, the same length as Y.
            For no weighting,
                 Weights(i) = 1.0.
            For instrumental (Gaussian) weighting,
                 Weights(i)=1.0/sigma(i)^2
            For statistical (Poisson)  weighting,
                 Weights(i) = 1.0/y(i), etc.

            For no weighting, set Weights to an undefined variable.

       A:  A vector, with as many elements as the number of terms, that
           contains the initial estimate for each parameter.  IF A is double-
           precision, calculations are performed in double precision,
           otherwise they are performed in single precision. Fitted parameters
           are returned in A.

 KEYWORDS:
	FITA:   A vector, with as many elements as A, which contains a zero for
   		each fixed parameter, and a non-zero value for elements of A to
   		fit. If not supplied, all parameters are taken to be non-fixed.

       FUNCTION_NAME:  The name of the function (actually, a procedure) to
       fit.  IF omitted, "FUNCT" is used. The procedure must be written as
       described under RESTRICTIONS, below.

       ITMAX:  Maximum number of iterations. Default = 20.
       ITER:   The actual number of iterations which were performed
       TOL:    The convergence tolerance. The routine returns when the
               relative decrease in chi-squared is less than TOL in an
               interation. Default = 1.e-3.
       CHI2:   The value of chi-squared on exit (obselete)

       CHISQ:   The value of reduced chi-squared on exit
       NODERIVATIVE:   IF this keyword is set THEN the user procedure will not
               be requested to provide partial derivatives. The partial
               derivatives will be estimated in CURVEFIT using forward
               differences. IF analytical derivatives are available they
               should always be used.

       DOUBLE = Set this keyword to force the calculation to be done in
                double-precision arithmetic.

   STATUS: Set this keyword to a named variable in which to return
           the status of the computation. Possible values are:
           STATUS = 0: The computation was successful.
           STATUS = 1: The computation failed. Chi-square was
                       increasing without bounds.
           STATUS = 2: The computation failed to converge in ITMAX
                       iterations.

   YERROR: The standard error between YFIT and Y.

 OUTPUTS:
       Returns a vector of calculated values.
       A:  A vector of parameters containing fit.

 OPTIONAL OUTPUT PARAMETERS:
       Sigma:  A vector of standard deviations for the parameters in A.

     Note: if Weights is undefined, then you are assuming that
           your model is correct. In this case, SIGMA is multiplied
           by SQRT(CHISQ/(N-M)), where N is the number of points
           in X and M is the number of terms in the fitting function.
           See section 15.2 of Numerical Recipes in C (2nd ed) for details.

 COMMON BLOCKS:
       NONE.

 SIDE EFFECTS:
       None.

 RESTRICTIONS:
       The function to be fit must be defined and called FUNCT,
       unless the FUNCTION_NAME keyword is supplied.  This function,
       (actually written as a procedure) must accept values of
       X (the independent variable), and A (the fitted function's
       parameter values), and return F (the function's value at
       X), and PDER (a 2D array of partial derivatives).
       For an example, see FUNCT in the IDL User's Libaray.
       A call to FUNCT is entered as:
       FUNCT, X, A, F, PDER
 where:
       X = Variable passed into CURVEFIT.  It is the job of the user-written
           function to interpret this variable.
       A = Vector of NTERMS function parameters, input.
       F = Vector of NPOINT values of function, y(i) = funct(x), output.
       PDER = Array, (NPOINT, NTERMS), of partial derivatives of funct.
               PDER(I,J) = DErivative of function at ith point with
               respect to jth parameter.  Optional output parameter.
               PDER should not be calculated IF the parameter is not
               supplied in call. IF the /NODERIVATIVE keyword is set in the
               call to CURVEFIT THEN the user routine will never need to
               calculate PDER.

 PROCEDURE:
       Copied from "CURFIT", least squares fit to a non-linear
       function, pages 237-239, Bevington, Data Reduction and Error
       Analysis for the Physical Sciences.  This is adapted from:
       Marquardt, "An Algorithm for Least-Squares Estimation of Nonlinear
       Parameters", J. Soc. Ind. Appl. Math., Vol 11, no. 2, pp. 431-441,
       June, 1963.

       "This method is the Gradient-expansion algorithm which
       combines the best features of the gradient search with
       the method of linearizing the fitting function."

       Iterations are performed until the chi square changes by
       only TOL or until ITMAX iterations have been performed.

       The initial guess of the parameter values should be
       as close to the actual values as possible or the solution
       may not converge.

 EXAMPLE:  Fit a function of the form f(x) = a * exp(b*x) + c to
           sample pairs contained in x and y.
           In this example, a=a(0), b=a(1) and c=a(2).
           The partials are easily computed symbolicaly:
           df/da = exp(b*x), df/db = a * x * exp(b*x), and df/dc = 1.0

           Here is the user-written procedure to return F(x) and
           the partials, given x:

       pro gfunct, x, a, f, pder      ; Function + partials
         bx = exp(a(1) * x)
         f= a(0) * bx + a(2)         ;Evaluate the function
         IF N_PARAMS() ge 4 THEN $   ;Return partials?
         pder= [[bx], [a(0) * x * bx], [replicate(1.0, N_ELEMENTS(f))]]
       end

         x=findgen(10)                  ;Define indep & dep variables.
         y=[12.0, 11.0,10.2,9.4,8.7,8.1,7.5,6.9,6.5,6.1]
         Weights=1.0/y            ;Weights
         a=[10.0,-0.1,2.0]        ;Initial guess
         yfit=curvefit(x,y,Weights,a,sigma,function_name='gfunct')
         print, 'Function parameters: ', a
         print, yfit
       end

 MODIFICATION HISTORY:
       Written, DMS, RSI, September, 1982.
       Does not iterate IF the first guess is good.  DMS, Oct, 1990.
       Added CALL_PROCEDURE to make the function's name a parameter.
              (Nov 1990)
       12/14/92 - modified to reflect the changes in the 1991
            edition of Bevington (eq. II-27) (jiy-suggested by CreaSo)
       Mark Rivers, U of Chicago, Feb. 12, 1995
           - Added following keywords: ITMAX, ITER, TOL, CHI2, NODERIVATIVE
             These make the routine much more generally useful.
           - Removed Oct. 1990 modification so the routine does one iteration
             even IF first guess is good. Required to get meaningful output
             for errors.
           - Added forward difference derivative calculations required for
             NODERIVATIVE keyword.
           - Fixed a bug: PDER was passed to user's procedure on first call,
             but was not defined. Thus, user's procedure might not calculate
             it, but the result was THEN used.

      Steve Penton, RSI, June 1996.
            - Changed SIGMAA to SIGMA to be consistant with other fitting
              routines.
            - Changed CHI2 to CHISQ to be consistant with other fitting
              routines.
            - Changed W to Weights to be consistant with other fitting
              routines.
            _ Updated docs regarding weighing.

      Chris Torrence, RSI, Jan,June 2000.
         - Fixed bug: if A only had 1 term, it was passed to user procedure
           as an array. Now ensure it is a scalar.
         - Added more info to error messages.
         - Added /DOUBLE keyword.
      CT, RSI, Nov 2001: If Weights is undefined, then assume no weighting,
           and boost the Sigma error estimates according to NR Sec 15.2
           Added YERROR keyword.
      CT, RSI, May 2003: Added STATUS keyword.
	        Added FITA keyword (courtesy B. LaBonte)
      CT, RSI, August 2004: Added ON_ERROR, 2

(See FIT//x_curvefit.pro)


DBLSOBJSTRCT__DEFINE

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

 PURPOSE:
  This routine creates a structure to describe the spectrum for an
  object in a given slit

 CALLING SEQUENCE:
   tmp = {dlbsobjstrct}

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
  Written by JXP

(See Spec/Slits//dblsobjstrct__define.pro)


DISTRUCT__DEFINE

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

 PURPOSE:
    Defines the structure for direct imaging

 CALLING SEQUENCE:
  tmp = {distruct}

 INPUTS:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   ??-2001 Written by JXP
   11-June-2007 Modified by LKP for use with NIRC2

(See IMG/General//distruct__define.pro)


DLANOESTRUCT__DEFINE

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

 PURPOSE:
    Defines the structure for DLA without creating the element arrays

 CALLING SEQUENCE:
  tmp = {dlanoestruct}

 INPUTS:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   1-Oct-2004 Written by JXP

(See DLA//dlanoestruct__define.pro)


DLASTRUCT__DEFINE

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

 PURPOSE:
    Defines the structure for DLA

 CALLING SEQUENCE:
  tmp = {dlastruct}

 INPUTS:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   1-Oct-2004 Written by JXP

(See DLA//dlastruct__define.pro)


DLA_ANALYSE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 dla_analyse
  V1.1

 PURPOSE:
    Launches a GUI which enables simple plotting and inspection of
     individual DLA
 CALLING SEQUENCE:
   dla_analyse, [list]

 INPUTS:
   [list] -- List of DLA to inspect  
       [default: /u/xavier/DLA/Lists/tot_dla.lst]

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  ROOT=  Path to the DLA tree

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   dla_analyse, '/u/xavier/DLA/Lists/tot_dla.lst'

 PROCEDURES CALLED:

 REVISION HISTORY:
   10-Jun-2002 Written by JXP

(See DLA//dla_analyse.pro)


DLA_EPLOT

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

 PURPOSE:
    Given an abundance file and NHI value, create a abundance
   number plot (logarithmic with H = 12)

 CALLING SEQUENCE:
   
   dla_eplot, fil, NHI, ZMTL=, PSFILE=, XR=, YR=

 INPUTS:
   fil -- Abundance file, [format: Zatm, Ncolm, Nsig, Flag, Instr]
   NHI -- NHI value of the DLA

 RETURNS:

 OUTPUTS:
   If PSFILE is set, will create a ps file instead of 
       plotting to the screen

 OPTIONAL KEYWORDS:
  ZMTL -- Metallicity of the gas (for overplotting Solar pattern)
  XR   -- X range of the plot  [default: min and max of Zatm values]
  YR   -- Y range of the plot  [default: [4., 12] ]

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   dla_eplot, fil, 20.8, ZMTL=-1.2


 PROCEDURES/FUNCTIONS CALLED:
  readcol

 REVISION HISTORY:
   17-Feb-2004 Written by JXP

(See DLA//dla_eplot.pro)


DLA_ESITOSDSS

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

 PURPOSE:
    Turn an ESI spectrum into SDSS 'quality' (i.e. lower resolution)

 CALLING SEQUENCE:
   
   dla_esitosdss, fil, wave, fx, sig, /PLOT

 INPUTS:
   fil  -- ESI fits file  [assumes binning of 1]

 RETURNS:

 OUTPUTS:
   wave -- Wavelength array
   fx -- Flux array
   sig -- Error array

 OPTIONAL KEYWORDS:
  /PLOT -- Plot the spectrum

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   dla_esitosdss, fil, NHI, Z


 PROCEDURES/FUNCTIONS CALLED:
 REVISION HISTORY:
   09-Dec-2002 Written by JXP

(See DLA//dla_esitosdss.pro)


DLA_FNDTRAN

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

 PURPOSE:
    Given a DLA structure, calculates the rest EW of weak, rare
    transitions like OI 1355, BII, etc.

 CALLING SEQUENCE:
   dla_fndtran, dla, [fil], OUTFIL=, LMT=

 INPUTS:
   dla --  IDL DLA structure
   [fil] -- List of weak line transitions [default:
            '/u/xavier/DLA/Abund/weak_lin.dat']

 RETURNS:

 OUTPUTS:
   OUTFIL= -- Writes the values to OUTFIL [default: 'fort.23']

 OPTIONAL KEYWORDS:
   LMT= -- Minimum EW to print the transition [default: 0.5 mA]

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   dla_fndtran, dla, outfil='weak_lin.dat'

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   09-Dec-2002 Written by JXP

(See DLA//dla_fndtran.pro)


DLA_GUESSEW

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

 PURPOSE:
    Calcualtes the EW limits for a series of input transitions for a
    DLA with given NHI and metallicity Z.

 CALLING SEQUENCE:
   dla_guessew, fil, NHI, Z, NPIX=, SNR=, NSIG=, DWV=

 INPUTS:
  fil -- File with list of wavlengths
  NHI -- N(HI) value of the DLA (logarithmic)
  Z   -- Metallcitiy  (logarithmic)

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  NPIX=  -- Number of pixels making up the feature [default: 4]
  NSIG=  -- Number of sigma significant [default: 3.]
  SNR=   -- Signal-to-noise per pixel [default: 10.]
  DWV=   -- Width of pixel in Angstromgs [default: 0.1 Ang]

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_guessew, fil, NHI, Z


 PROCEDURES/FUNCTIONS CALLED:
 REVISION HISTORY:
   14-Nov-2002 Written by JXP

(See DLA//dla_guessew.pro)


DLA_INDX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 dla_indx
  V1.1

 PURPOSE:
    Returns the index for a DLA given the name and z (if necessary)
     Defaults to the first entry if multiple.  This is a simple and
     rather uninteresting program.

 CALLING SEQUENCE:
   
   idx = dla_indx(struct, name, [z]) 

 INPUTS:
   struct - dla structure
   name - Name of the quasar (string; need not be complete)
   [z] - redshift (optional)

 RETURNS:
   index

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   idx = dla_indx(sdla, 'Q0000')


 PROCEDURES CALLED:

 REVISION HISTORY:
   24-Nov-2001 Written by JXP

(See DLA//dla_indx.pro)


DLA_SDSSRICH

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 dla_sdssrich   
   Version 1.0

 PURPOSE:
    Inputs a list of absorption lines, and the quasar emission
  redshift and then prints all probably DLA (quality > 0.7)

 CALLING SEQUENCE:
   
   dla_sdssrich, zem, obslin

 INPUTS:
  zem -- Emission redshift of the quasar
  obslin -- List of observed lines

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
 
 GRAN= -- List of metal-line transitions to key on

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   dla_sdssrich


 PROCEDURES/FUNCTIONS CALLED:
 REVISION HISTORY:
   09-Dec-2002 Written by JXP

(See SDSS/DLA/dla_sdssrich.pro)


DLA_SI2STAR

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

 PURPOSE:
    Given a normalized QSO spectrum (fits file) and the redshift of
    the DLA, overplots a SiII* feature at the expected spot based on
    the observed CII* profile.  THe program also plots the 
    CII* profile

 CALLING SEQUENCE:
  dla_si2star, fits_fil, zabs, VMNX=, PSFIL=, YMNX=, RTIO=

 INPUTS:
  fits_fil -- FITS file containing the QSO data [Assumes HIRES
              format]
  zabs  -- Absorption redshift

 RETURNS:

 OUTPUTS:
   PSFIL=  -- Writes PS file 

 OPTIONAL KEYWORDS:
  RTIO= -- Ratio of optical depth of SiII* to CII* [deafult: 0.05]
  VMNX= -- Velcoity region to plot [default: -100 to 100 km/s]
  YMNX= -- Ymin, ymax of plot [deafult: 0., 1.]

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   dla_si2star, 'Q1331_f.fits', 1.770


 PROCEDURES/FUNCTIONS CALLED:
 REVISION HISTORY:
   29-May-2003 Written by JXP

(See DLA//dla_si2star.pro)


DLA_WRITESTR

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 dla_writestr
  V1.2

 PURPOSE:
    Given a DLA structre write the files out with the .dat format

 CALLING SEQUENCE:
   dla_writestr, dla

 INPUTS:
  dla -- DLA structure

 RETURNS:

 OUTPUTS:
  Series of DLA files

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   dla_writestr, dla


 PROCEDURES CALLED:

 REVISION HISTORY:
   01-Oct-2004 Written by JXP
   2006   Added metallicity and SDSS tags

(See DLA//dla_writestr.pro)


DLA_XALPHVSA

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

 PURPOSE:
    Plots [X/alpha] vs [alpha/H].  Currently, the fig only shows Echelle obs

 CALLING SEQUENCE:
   
   dla_xyvsab, X, XR=, YR=, DLA=

 INPUTS:
   X -- Atomic number of element X

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  XR= -- x-range
  YR= -- y-range
  DLA= -- DLA structure
  /NOXERR -- Suppress x error bars
  /NOLIM  -- Do not show limits
  /NOCLOSE -- Do not close the plot
  MXERR -- Maximum error to plot 

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   dla_xalphavsa, 7

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   14-Sep-2004 Written by JXP

(See DLA//dla_xalphvsa.pro)


DLA_XYVSAB

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

 PURPOSE:
    Plots [X/Y] vs [A/B].  Currently, the fig only shows Echelle obs

 CALLING SEQUENCE:
   
   dla_xyvsab, [X,Y], [A,B], XR=, YR=, DLA=

 INPUTS:
   X -- Atomic number of element X
   Y -- Atomic number of element Y
   A -- Atomic number of element A
   B -- Atomic number of element B

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  XR= -- x-range
  YR= -- y-range
  DLA= -- DLA structure
  /NOXERR -- Suppress x error bars
  /NOLIM  -- Do not show limits
  /NOCLOSE -- Do not close the plot
  MXERR -- Maximum error to plot 

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   dla_xyvsab, [14,26], [14,1]

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   14-Sep-2004 Written by JXP

(See DLA//dla_xyvsab.pro)


ECHFSPECSTRCT__DEFINE

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

 PURPOSE:
  Creates a structure for echelle spectroscopy that will hold the
  wavelength, flux and error arrays.  Also includes the ZANS
  structure which is useful for using SDSS redshift identification.
 

 CALLING SEQUENCE:
   tmp = {echfspecstrct}

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   Written by JXP

(See Spec/Analysis//echfspecstrct__define.pro)


EMISSSTRCT__DEFINE

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

 PURPOSE:
  Structure for a simple emission line. 

 CALLING SEQUENCE:
   tmp = {emissstrct}

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
  Written by JXP

(See Spec/Lines//emissstrct__define.pro)


EXTRACT_ASYMBOX2

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

 PURPOSE:
   Extract the total flux within a boxcar window at many positions.
   This routine will accept an asymmetric/variable window
   Traces are expected to run vertically to be consistent with other
    extract_  routines

   MODIFIED MODEL WEIGHTING

 CALLING SEQUENCE:
   fextract = extract_asymbox( image, left, right, $
                 [ycen, weight_image=weight_image, f_ivar=f_ivar, model=model])

 INPUTS:
   image     - Image
   left      - Lower boundary of boxcar window (given as floating pt pixels)
   right     - Upper boundary of boxcar window (given as floating pt pixels)

 OPTIONAL KEYWORDS:
   ycen      - Y positions corresponding to "left" (expected as integers)
   weight_image -  Weights to be applied to image before boxcar

 OUTPUTS:
   fextract - Extracted flux at positions specified by (left<-->right, ycen)

 OPTIONAL OUTPUTS:
   f_ivar    - the boxcar summed weights, weights=1 if weight_image is missing
   model     - A model image (of size image)

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   24-Mar-1999  Written by David Schlegel, Princeton.
   17-Feb-2003  Written with slow IDL routine, S. Burles, MIT
   27-Jan-2004  Adopted to do asymmetric/varying boxcar

(See Spec/Extraction//extract_asymbox2.pro)


EXTRCTSTRCT__DEFINE

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

 PURPOSE:
  Define the extraction structure

 CALLING SEQUENCE:
   tmp = {extrctstrct}

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   
 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   Written by JXP

(See Spec/General//extrctstrct__define.pro)


F2DPOLY

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

 PURPOSE:
    Creates basis functions of a 2dpoly for feeding into SVDFIT for
    2D surface fitting. Requires an initial call with m=-1 to set 
    up the common block.  This code even makes my head spin!

 CALLING SEQUENCE:
   
   fpoly = f2dpoly(s, m, XVAL=, YVAL=, FLG=)

 INPUTS:
   s          - scalar or vector identifying the index number
   m          - Total order (nx*ny) of the polynomial (-1 to
                initialize; -2 to deconstruct)

 RETURNS:
   fpoly      - Basis functions

 OUTPUTS:

 OPTIONAL KEYWORDS:
  XVAL=  -- Dummy array used to initialize the common block
  YVAL=  -- Dummy array used to initialize the common block
  FLG=  -- Number of coefficients in the X direction.   
           If FLG=0, then it is assumed that nx=ny=sqrt(m)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   fpoly = f2dpoly(s, m)


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   31-Jan-2002 Written by JXP

(See FIT//f2dpoly.pro)


FILL_ELMXH

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

 PURPOSE:
  Given a DLA structure, fills up the X/H info.  Simply reads in the
  info from the .XH files.  This program is not likely to be called
  by any program except parse_dlalst.

 CALLING SEQUENCE:
   
  fill_elmxh, dla

 INPUTS:
  dla  -- IDL DLA structure

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /NOHIS -- Do not include HI error in analysis

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:


 PROCEDURES/FUNCTIONS CALLED:
 REVISION HISTORY:
   29-May-2003 Written by JXP

(See DLA//fill_elmxh.pro)


FILL_ION

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 fill_ion
  V1.1

 PURPOSE:
    Fills up the column densities for all of the ions observed for a
    given DLA.  It parses the .ion files produced by dla_updabd.
    This program is unlikely to be called by anything except parse_dlalst.

 CALLING SEQUENCE:
   fill_ion, sDLA

 INPUTS:

 RETURNS:
   sDLA      - IDL DLA structure

 OUTPUTS:

 OPTIONAL KEYWORDS:
  ROOT=  Path to DLA tree (e.g. '~/DLA/')

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   fill_ion, sdla


 PROCEDURES CALLED:

 REVISION HISTORY:
   12-Nov-2001 Written by JXP

(See DLA//fill_ion.pro)


FIT2DSTRCT__DEFINE

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

 PURPOSE:
    IDL structure for 2D surface fitting

 CALLING SEQUENCE:
   
   tmp = {fit2dstrct}

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   tmp = {fit2dstrct}


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   31-Jan-2002 Written by JXP

(See FIT//fit2dstrct__define.pro)


FITS2ASC

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 fits2asc
 V1.1

 PURPOSE:
    Converts fits spectrum to ASCII.   The wavelength array is 
    read from the header.  Particularly useful for VPFIT

 CALLING SEQUENCE:
   
   fits2asc, file, [error], OUTFIL=

 INPUTS:
   file    - Data Filename [spectrum; data in extension 0]
   [error] - Error filename

 RETURNS:

 OUTPUTS:
   outfil  - ASCII file with wavelength, file, [error] in columns

 OPTIONAL KEYWORDS:
  WVMIN -- Minimum wavelength to print out [default: 0.]
  WVMAX -- Maximum wavelength to print out [default: 1e6]

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   fits2asc, 'Blah.fits'

 PROCEDURES CALLED:
  x_fitswave
  writecol

 REVISION HISTORY:
   27-Aug-2001 Written by JXP

(See General//fits2asc.pro)


FITSTRCT__DEFINE

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

 PURPOSE:
    IDL structure for 1D fitting

 CALLING SEQUENCE:
   
   tmp = {fitstrct}

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   tmp = {fitstrct}


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   31-Jan-2002 Written by JXP

(See FIT//fitstrct__define.pro)


FIT_CONVXPTOX

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

 PURPOSE:
    Convert the fitted coefficients of a POLY fit from the normalized
    values to 'sensible' ones.

 CALLING SEQUENCE:
   newcoeff = fit_convxptox( calib, FFIT=, NRM= )

 INPUTS:
  calib -- FIT structure

 RETURNS:
  newcoeff -- Unnormalized coefficients

 OUTPUTS:

 OPTIONAL KEYWORDS:
  FFIT= -- Coefficients [default: *calib.ffit]
  NRM=  -- Normalization values [default: calib.nrm]

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   02-Aug-2002 Written by JXP

(See FIT//fit_convxptox.pro)


FRAC_ORDER

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

 PURPOSE:
  For an input array and the order structure defining the echelle
  footprint, this routine calculates the position of a give pixel
  along the slit.

 CALLING SEQUENCE:
  frac = frac_order( ordr_str, xstart, ywave, ocen=, ncoeff=)

 INPUTS:
  ordr_str -- Order structure which describes the echelle footprint
  xstart   -- x values of the pixels
  ywave    -- Wavelength values of the pixels

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_slitflat, mike, 1

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   31-Jul-2005 Written by SB

(See Spec/Arcs//frac_order.pro)


FUSELINSTRCT__DEFINE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 fuselinstrct__define
  V1.1

 PURPOSE:
    Defines the structure for FUSE absorption lines

 CALLING SEQUENCE:
  tmp = {fuselinstrct}

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   Nov-2003   Created by JXP

(See FUSE/General/fuselinstrct__define.pro)


FUSE_CALCEWN

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 fuse_calcewn
  V1.1

 PURPOSE:
    Given a FUSE structure file and a set of instrument files (each
  of which specifies absorption lines), the code measures EW and fills
  up the FUSE structure.  If multiple EW values are measured, then it
  calculates the weighted mean if the two are consistent or otherwise
  the average and sets a large uncertainty.

 CALLING SEQUENCE:
   fuse_calcewn, strct_fil, instr_list

 INPUTS:
  strct_fil  -- IDL FUSE file
  instr_list -- Instrument list containing absorption line lists

 RETURNS:

 OUTPUTS:
  strct_fil  -- The EW tags are filled up by this routine

 OPTIONAL KEYWORDS:
  MODLIM - modify wavelength limits with wavelength shift
  ROOTDIR - pre-pend string to instr_list file names
  SUFFIX - for STIS-like files, suffix to search and replace
           (default: ['f.fits','e.fits'])

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   fuse_calcewn, struct, fil_instr


 PROCEDURES CALLED:

 REVISION HISTORY:
   10-Sep-2003 Added metallicity sturcture
    2-Feb-2006 added /modlim and /ewgauss options, KLC
    3-Apr-2006 added calculation of zsig
   24-Jan-2007 removed /ewgauss and modify EW summing when flux<0 or flux>1

(See FUSE/Analysis/fuse_calcewn.pro)


FUSE_CALCION

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 fuse_calcion
  V1.1

 PURPOSE:
   For FUSE observations, calculate ionic column densities for all
   ions in the FUSE structure.  The code allows for limits and does a
   weighted mean for multiple transitions.

 CALLING SEQUENCE:
   fuse_calcion, strct_fil, zabs, ion_fil, NHI=, HAND=

 INPUTS:
   strct_fil -- FITS file for the FUSE structure
   zabs -- Absorption redshift of the system

 RETURNS:

 OUTPUTS:
   ion_fil -- Output ion file

 OPTIONAL KEYWORDS:
  NHI=  -- NHI value and error [required at present!]
  HAND= -- Input file of ionic column densities used to override the
           values that would otherwise be derived by this program.

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   fuse_calcion, strct_fil, zabs, 'PKS0405_z495.ion'

 PROCEDURES CALLED:
  getabnd
  getion

 REVISION HISTORY:
   11-Sep-2003 Written by JXP

(See FUSE/Analysis/fuse_calcion.pro)


FUSE_CALCXH

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 fuse_calcxh
  V1.1

 PURPOSE:
    Calculate X/H values for FUSE observations.  It grabs the info
    from the ion_fil and an input XH_fil and then outputs the XH
    values into a XH data file.  The Input file must contain
    ionization information (Cloudy file, U values) to do the final
    calcalculations of X/H.  You need to see an example file to get
    this set correctly.

 CALLING SEQUENCE:
   fuse_calcxh, xhfil

 INPUTS:
  xhfil -- Input file to run the XH calculations and output

 RETURNS:

 OUTPUTS:
  outfil -- Output file of X/H values

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   fuse_calcxh, 'Input/z0495_XH.inp'

 PROCEDURES CALLED:
  fuse_calcxh_parse

 REVISION HISTORY:
   21-Nov-2003 Written by JXP

(See FUSE/Analysis/fuse_calcxh.pro)


FUSE_COG

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 fuse_cog
  V1.1

 PURPOSE:
    Calculate a COG solution from a FUSE structure file

 CALLING SEQUENCE:
   
  fuse_cog, strct_fil, cog_fil, [Nlmt, blmt], /CHICHK, PLTONLY=
    NSTP=, BSTP=, PSFILE=, OUTFIL=, /EXACT, ZLBL=,DEBLEND=,UPLIM=,RMS=

 INPUTS:
  strct_fil -- FITS file for the FUSE structure
  cog_fil -- COG input file (lists redshift and transitions to use)
  [Nlmt] -- Range of column densities to explore (2 element array)
  [blmt] -- Range of Doppler parameters to explore (2 element array)

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /CHICHK -- Plot Chi^2 image
  PLTONLY --  4-element array of N,b values and error for a plot
  NSTP -- Number of steps to search N space [default: 100L]
  BSTP -- Number of steps to search b space [default: 100L]
  /EXACT -- Calculate EW exactly (Spline is generally good enough)
  ZLBL= -- Label for Plot giving redshift of the absorber (string)
  UPLIM -- file (like cog_fil) of lines to color upper limits on
           curve (1: excluded, 2: 2-sig upper limit, 4: blend upper limit
  DEBLEND -- file with information of EW to remove for specific 
             features because they are blended OR include upper limits
  RMS -- add RMS to EW error in quadrature
  LABEL -- indicate line across top (either /label or label='FeII')
  ASYMERR -- calculate asymmetric errors by measuring the chi^2=1 ellipse

 OPTIONAL OUTPUTS:
   OUTFIL -- File with best fit values and error
   PSFILE -- File for postscript plot

 COMMENTS:

 EXAMPLES:
  fuse_cog, '/u/xavier/FUSE/data/PKS0405-12/Analysis/pks0405_abslin.fits', $
    '/u/xavier/FUSE/data/PKS0405-12/Analysis/COG/Input/pks0405_z0918.cog', $
    PSFIL='Figures/z0918_cog.ps', PLTONLY=[14.52, 38.2, 0.04, 1.8]

 PROCEDURES CALLED:

 REVISION HISTORY:
   11-Sep-2003 Written by JXP
   30-Nov-2005 modifed so can handle inability to calculate error, KLC
   12-Jan-2006 added UPLIM keyword, KLC
    8-Mar-2006 added DEBLEND keyword, KLC
   13-Sep-2006 added RMS keyword, KLC
   22-Sep-2006 added LABEL keyword, KLC
    2-Jan-2007 added ASYMERR keyword, KLC and PJ; modify plot labels
    8-Jan-2007 corrected and modified UPLIM

(See FUSE/Analysis/fuse_cog.pro)


FUSE_FNDNEVIII

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

 PURPOSE:
   GUI which plots the metal line systems including NeVIII

 CALLING SEQUENCE:
   
   fuse_fndneviii, yin, lyalist, VMNX=, INFLG=, VMNX=, XSIZE=,
   YSIZE=, SVSTATE=, INIZ=

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   VMNX   -- Velocity range for plotting transitions
   INFLG  -- Flag for type of spectrum file (see x_readspec)
   XSIZE  -- Size of gui x-pixels [default: 80% of screen] 
   YSIZE  -- Size of gui y-pixels [default: 80% of screen]
   INIZ   -- Initial redshift to start search at [default: 0.]

 OPTIONAL OUTPUTS:
  SVSTATE  -- Save the state to return to search later

 COMMENTS:

 EXAMPLES:
   fuse_fndneviii, 'file.fits', inflg=4, SVSTATE='save_neviii.idl'


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   29-Oct-2002 Written by JXP

(See FUSE/Analysis/fuse_fndneviii.pro)


FUSE_FNDOVI

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

 PURPOSE:
   GUI which plots the spectra in two strips corresponding to the
   doublet of OVI.  User can indicate the regions where OVI
   could be detected (visually).

 CALLING SEQUENCE:
   
   fuse_fndovi, datfil, XSIZE=, YSIZE=, /STIS, OUTFIL=, GZFIL=

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  XSIZE  -- Size of gui x-pixels [default: 80% of screen] 
  YSIZE  -- Size of gui y-pixels [default: 80% of screen]
  /STIS  -- STIS data file (as opposed to FUSE)
  GZFIL  -- File containing saved regions

 OPTIONAL OUTPUTS:
  SVSTATE  -- Save the state to return to search later
  OUTFIL   -- File to contain saved regions 
              [default: 'find_ovi.fits']

 COMMENTS:

 EXAMPLES:
   fuse_fndovi, 'PKS0405.fits'

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   09-Feb-2004 Written by JXP

(See FUSE/Analysis/fuse_fndovi.pro)


FUSE_GZNEVIII

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

 PURPOSE:
   GUI which plots the spectra in two strips corresponding to the
   doublet of OVI.  User can indicate the regions where OVI
   could be detected (visually).

 CALLING SEQUENCE:
   
   fuse_gzneviii, datfil, XSIZE=, YSIZE=, OUTFIL=, GZFIL=

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  XSIZE  -- Size of gui x-pixels [default: 80% of screen] 
  YSIZE  -- Size of gui y-pixels [default: 80% of screen]
  GZFIL  -- File containing saved regions

 OPTIONAL OUTPUTS:
  SVSTATE  -- Save the state to return to search later
  OUTFIL   -- File to contain saved regions 
              [default: 'find_neviii.fits']

 COMMENTS:

 EXAMPLES:
   fuse_gzneviii, x, maskid, expsr


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   05-Oct-2003 Written by JXP

(See FUSE/Analysis/fuse_gzneviii.pro)


FUSE_H2LIN

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 fuse_h2lin
  (V1.1)

 PURPOSE:
    Sets up a line list of Molecular Hydrogen

 CALLING SEQUENCE:
   
   h2strct = fuse_h2lin([file]) 

 INPUTS:
   [file] - H2 line list [default: $XIDL_DIR/FUSE/H2/h2sort.dat]

 RETURNS:
   h2strct - Structure of molecular hydrogen

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   h2strct = fuse_h2lin()

 PROCEDURES CALLED:

 REVISION HISTORY:
   09-Feb-2004 Written by JXP

(See FUSE/H2/fuse_h2lin.pro)


FUSE_PRSLINE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 fuse_prsline
  V1.1

 PURPOSE:
    Create a structure for the absorption lines given a set
  of files for the absorption lines.

 CALLING SEQUENCE:
  fuse_prsline, files, strct, OUTFIL=

 INPUTS:
   files -- List of files for absorption lines

 RETURNS:
   strct  - FUSE absorption line structure

 OUTPUTS:
  OUTFIL= -- Writes structure to OUTFIL

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   Nov-2003   Created by JXP

(See FUSE/General/fuse_prsline.pro)


FUSE_TWOCOG

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 fuse_twocog
  V1.1

 PURPOSE:
    Perform a COG analysis allowing for two components.  This program
    is best used to plot (use PLTONLY) the results of 
    a two component analysis, not
    to fit for the 2 components.
 CALLING SEQUENCE:
   
  fuse_twocog, strct_fil, cog_fil, N1lmt, b1lmt, N2lmt, b2lmt, delv
   /CHICHK, PLTONLY=, ZLBL=,  NSTP=, BSTP=, PSFILE=, OUTFIL=, /EXACT

   lowzovi_prsdat, stucture, filename

 INPUTS:
  strct_fil -- FITS file for the FUSE structure
  cog_fil -- COG input file (lists redshift and transitions to use)
  [N1lmt] -- Range of column densities to explore (2 element array)
  [b1lmt] -- Range of Doppler parameters to explore (2 element array)
  [N2lmt] -- Range of column densities to explore (2 element array)
  [b2lmt] -- Range of Doppler parameters to explore (2 element array)
  [delv]  -- Separation of the 2 components (km/s)

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /CHICHK -- Plot Chi^2 image
  PLTONLY --  4-element array of N,b values and error for a plot
  NSTP -- Number of steps to search N space [default: 5L]
  BSTP -- Number of steps to search b space [default: 5L]
  ZLBL= -- Label for Plot giving redshift of the absorber (string)

 OPTIONAL OUTPUTS:
  OUTFIL -- File with best fit values and error
  PSFILE -- File for postscript plot

 COMMENTS:

 EXAMPLES:
   fuse_calccolm, struct, fil_instr


 PROCEDURES CALLED:

 REVISION HISTORY:
   15-Sep-2003 Written by JXP

(See FUSE/Analysis/fuse_twocog.pro)


FUSE_VELPLT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 fuse_velplt
  V1.1

 PURPOSE:
    Velcoity plot of FUSE transitions for a given absorption 
    system
 CALLING SEQUENCE:
   
   fuse_velplt, strct_fil, instr_list, vel_fil, NTOT=, CSIZE=,
   LSIZE=, PSFILE=, XTINT=, ENCAPSULATED=, MULTI=, OUTLINE=,
   LABEL=, MSGFIL=, VOIGT=

 INPUTS:

 RETURNS:
  strct_fil -- FITS file for the FUSE abs lin structure
  instr_list -- List of instrument files
  vel_fil -- Input file for velocity plot

 OUTPUTS:

 OPTIONAL KEYWORDS:
  NTOT -- Number of plots per page [default: 16]
  LSIZE -- Label size [default: 1.8]
  CSIZE -- Numbering character size [default: 1.8]
  LTHICK -- Line thickness (Default = 1.)
  XTINT -- xtick interval
  ENCAPSULATED -- create encapsulated postscript
  MULTI -- overplot multiple detections
  OUTLINE -- indicate region used to measure EW with darker line
  LABEL -- print zabs upper right corner and wobs 
  VOIGT -- [ncolm, dopb] or [ion, ncolm, dopb] structure to overplot
           Voigt profile 
  VZABS -- redshift to center voigt profiles (default is input z + float)
  BIN -- bin spectra (simple sum, not S/N-weighted)
  PLTXTR -- array of wrest, instr to plot extra (doesn't work for
            multi)
  PLTERR -- plot error array (changes colors)
  ROOTDIR - pre-pend string to instr_list file names
  SUFFIX - for STIS-like files, suffix to search and replace
           (default: ['f.fits','e.fits'])
;
 OPTIONAL OUTPUTS:
  PSFILE -- Postscript filename
  MSGFIL -- filename to receive messages from MULTI function

 COMMENTS:

 EXAMPLES:
   fuse_calcewn, struct, fil_instr


 PROCEDURES CALLED:

 REVISION HISTORY:
   12-Sep-2003 Written by JXP
    1-Apr-2005 MULTI capability added by KLC
   28-Apr-2005 Added zabs in upper right-hand corner of MULTI plots
   13-Feb-2006 Added /outline option, KLC
    7-Mar-2006 Handle H2 features, KLC
    7-Jun-2006 Improve handling of combined instrument flags, add /label
   21-Sep-2006 Update /outline,/multi combo
   16-Oct-2006 added VOIGT, KLC
    8-Dec-2006 added BIN, KLC

(See FUSE/Analysis/fuse_velplt.pro)


GAUSSFIT

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

 PURPOSE:
   Fit the equation y=f(x) where:

       F(x) = A0*EXP(-z^2/2) + A3 + A4*x + A5*x^2
           and
       z=(x-A1)/A2

   A0 = height of exp, A1 = center of exp, A2 = sigma (the width).
   A3 = constant term, A4 = linear term, A5 = quadratic term.
   Terms A3, A4, and A5 are optional.
   The parameters A0, A1, A2, A3 are estimated and then CURVEFIT is
   called.

 CATEGORY:
   ?? - fitting

 CALLING SEQUENCE:
   Result = GAUSSFIT(X, Y [, A])

 INPUTS:
   X:  The independent variable.  X must be a vector.
   Y:  The dependent variable.  Y must have the same number of points
       as X.

 KEYWORD INPUTS:

   CHISQ: Set this keyword to a named variable that will contain
      the value of the chi-square goodness-of-fit.

   ESTIMATES = optional starting estimates for the parameters of the
       equation.  Should contain NTERMS (6 if NTERMS is not
       provided) elements.

   MEASURE_ERRORS: Set this keyword to a vector containing standard
       measurement errors for each point Y[i].  This vector must be the same
       length as X and Y.

     Note - For Gaussian errors (e.g. instrumental uncertainties),
        MEASURE_ERRORS should be set to the standard
        deviations of each point in Y. For Poisson or statistical weighting
        MEASURE_ERRORS should be set to sqrt(Y).

   NTERMS = Set NTERMS to 3 to compute the fit: F(x) = A0*EXP(-z^2/2).
      Set it to 4 to fit:  F(x) = A0*EXP(-z^2/2) + A3
      Set it to 5 to fit:  F(x) = A0*EXP(-z^2/2) + A3 + A4*x

   SIGMA: Set this keyword to a named variable that will contain
      the 1-sigma error estimates of the returned parameters.

     Note: if MEASURE_ERRORS is omitted, then you are assuming that
           your model is correct. In this case, SIGMA is multiplied
           by SQRT(CHISQ/(N-M)), where N is the number of points
           in X and M is the number of terms in the fitting function.
           See section 15.2 of Numerical Recipes in C (2nd ed) for details.

   YERROR: The standard error between YFIT and Y.

 OUTPUTS:
   The fitted function is returned.

 OPTIONAL OUTPUT PARAMETERS:
   A:  The coefficients of the fit.  A is a three to six
       element vector as described under PURPOSE.

 COMMON BLOCKS:
   None.

 SIDE EFFECTS:
   None.

 RESTRICTIONS:
   The peak or minimum of the Gaussian must be the largest
   or smallest point in the Y vector.

 PROCEDURE:
   The initial estimates are either calculated by the below procedure
   or passed in by the caller.  Then the function CURVEFIT is called
   to find the least-square fit of the gaussian to the data.

  Initial estimate calculation:
   If NTERMS>=4 then a constant term is subtracted first.
   If NTERMS>=5 then a linear term is subtracted first.
   If the (MAX-AVG) of Y is larger than (AVG-MIN) then it is assumed
   that the line is an emission line, otherwise it is assumed there
   is an absorbtion line.  The estimated center is the MAX or MIN
   element.  The height is (MAX-AVG) or (AVG-MIN) respectively.
   The width is found by searching out from the extrema until
   a point is found less than the 1/e value.

 MODIFICATION HISTORY:
   DMS, RSI, Dec, 1983.
   DMS, RSI, Jun, 1995, Added NTERMS keyword.  Result is now float if
               Y is not double.
   DMS, RSI, Added ESTIMATES keyword.
   CT, RSI, Feb 2001: Change the way estimates are computed.
         If NTERMS>3 then a polynomial of degree NTERMS-4 is subtracted
         before estimating Gaussian coefficients.
   CT, RSI, Nov 2001: Slight change to above modification:
         Because a Gaussian and a quadratic can be highly correlated,
         do not subtract off the quadratic term,
         only the constant and linear terms.
         Also added CHISQ, SIGMA and YERROR output keywords.
   CT, RSI, May 2003: Added MEASURE_ERRORS keyword.
   CT, RSI, March 2004: If estimate[2] is zero, compute a default value.

(See FIT//x_gaussfit.pro)


GETCOLOR

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

 PURPOSE:
       The original purpose of this function was to enable the
       user to specify one of the 16 colors supported by the
       McIDAS color map by name. Over time, however, the function
       has become a general purpose function for handling and
       supporting drawing colors in a device-independent way.
       In particular, I have been looking for ways to write color
       handling code that will work transparently on both 8-bit and
       24-bit machines. On 24-bit machines, the code should work the
       same where color decomposition is turned on or off. The program
       now supports 88 colors.

 AUTHOR:
       FANNING SOFTWARE CONSULTING:
       David Fanning, Ph.D.
       1645 Sheely Drive
       Fort Collins, CO 80526 USA
       Phone: 970-221-0438
       E-mail: davidf@dfanning.com
       Coyote's Guide to IDL Programming: http://www.dfanning.com

 CATEGORY:
       Graphics, Color Specification.

 CALLING SEQUENCE:
       result = GETCOLOR(color, index)

 OPTIONAL INPUT PARAMETERS:
       COLOR: A string with the "name" of the color. Valid names are:
           black
           magenta
           cyan
           yellow
           green
           red
           blue
           navy
           pink
           aqua
           orchid
           sky
           beige
           charcoal
           gray
           white

           The color YELLOW is returned if the color name can't be resolved.
           Case is unimportant.

           If the function is called with just this single input parameter,
           the return value is either a 1-by-3 array containing the RGB values of
           that particular color, or a 24-bit integer that can be "decomposed" into
           that particular color, depending upon the state of the TRUE keyword and
           upon whether color decomposition is turned on or off. The state of color
           decomposition can ONLY be determined if the program is being run in
           IDL 5.2 or higher.

       INDEX: The color table index where the specified color should be loaded.
           If this parameter is passed, then the return value of the function is the
           index number and not the color triple. (If color decomposition is turned
           on AND the user specifies an index parameter, the color is loaded in the
           color table at the proper index, but a 24-bit value is returned to the
           user in IDL 5.2 and higher. This assumes the INDEXED keyword is NOT set.)

       If no positional parameter is present, then the return value is either a 16-by-3
       byte array containing the RGB values of all 16 colors or it is a 16-element
       long integer array containing color values that can be decomposed into colors.
       The 16-by-3 array is appropriate for loading color tables with the TVLCT command:

           Device, Decomposed=0
           colors = GetColor()
           TVLCT, colors, 100


 INPUT KEYWORD PARAMETERS:

       NAMES: If this keyword is set, the return value of the function is
              a 88-element string array containing the names of the colors.
              These names would be appropriate, for example, in building
              a list widget with the names of the colors. If the NAMES
              keyword is set, the COLOR and INDEX parameters are ignored.

                 listID = Widget_List(baseID, Value=GetColor(/Names), YSize=16)

       INDEXED:  If this keyword is set, the return value is always an index
              into the color table. In the absence of a color table INDEX
              parameter, the color is loaded at !P.COLOR < (!D.Table_Size-1).

       LOAD:  If this keyword is set, all 88 colors are automatically loaded
              starting at the color index specified by the START keyword.
              Note that setting this keyword means that the return value of the
              function will be a structure, with each field of the structure
              corresponding to a color name. The value of each field will be
              an index number (set by the START keyword) corresponding to the
              associated color, or a 24-bit long integer value that creates the
              color on a true-color device. What you have as the field values is
              determined by the TRUE keyword or whether color decomposition is on
              or off in the absense of the TRUE keyword. It will either be a 1-by-3
              byte array or a long integer value.

       START: The starting color index number if the LOAD keyword is set. This keyword
              value is ignored unless the LOAD keyword is also set. The keyword is also
              ignored if the TRUE keyword is set or if color decomposition in on in
              IDL 5.2 and higher. The default value for the START keyword is
              !D.TABLE_SIZE - 89.

       TRUE:  If this keyword is set, the specified color triple is returned
              as a 24-bit integer equivalent. The lowest 8 bits correspond to
              the red value; the middle 8 bits to the green value; and the
              highest 8 bits correspond to the blue value. In IDL 5.2 and higher,
              if color decomposition is turned on, it is as though this keyword
              were set.

 COMMON BLOCKS:
       None.

 SIDE EFFECTS:
       None.

 RESTRICTIONS:
       The TRUE keyword causes the START keyword to be ignored.
       The NAMES keyword causes the COLOR, INDEX, START, and TRUE parameters to be ignored.
       The COLOR parameter is ignored if the LOAD keyword is used.
       On systems where it is possible to tell the state of color decomposition
       (i.e., IDL 5.2 and higher), a 24-bit value (or values) is automatically
       returned if color decomposition is ON.

 EXAMPLE:
       To load a yellow color in color index 100 and plot in yellow, type:

          yellow = GETCOLOR('yellow', 100)
          PLOT, data, COLOR=yellow

       or,

          PLOT, data, COLOR=GETCOLOR('yellow', 100)

       To do the same thing on a 24-bit color system with decomposed color on, type:

          PLOT, data, COLOR=GETCOLOR('yellow', /TRUE)

       or in IDL 5.2 and higher,

          DEVICE, Decomposed=1
          PLOT, data, COLOR=GETCOLOR('yellow')

       To load all 88 colors into the current color table, starting at
       color index 100, type:

          TVLCT, GETCOLOR(), 100

       To add the color names to a list widget:

           listID = Widget_List(baseID, Value=GetColor(/Names), YSize=16)

       To load all 88 colors and have the color indices returned in a structure:

           DEVICE, Decomposed=0
           colors = GetColor(/Load, Start=1)
           HELP, colors, /Structure
           PLOT, data, COLOR=colors.yellow

       To get the direct color values as 24-bit integers in color structure fields:

           DEVICE, Decomposed=1
           colors = GetColor(/Load)
           PLOT, data, COLOR=colors.yellow

       Note that the START keyword value is ignored if on a 24-bit device,
       so it is possible to write completely device-independent code by
       writing code like this:

           colors = GetColor(/Load)
           PLOT, data, Color=colors.yellow

 MODIFICATION HISTORY:
       Written by: David Fanning, 10 February 96.
       Fixed a bug in which N_ELEMENTS was spelled wrong. 7 Dec 96. DWF
       Added the McIDAS colors to the program. 24 Feb 99. DWF
       Added the INDEX parameter to the program 8 Mar 99. DWF
       Added the NAMES keyword at insistence of Martin Schultz. 10 Mar 99. DWF
       Reorderd the colors so black is first and white is last. 7 June 99. DWF
       Added automatic recognition of DECOMPOSED=1 state. 7 June 99. DWF
       Added LOAD AND START keywords. 7 June 99. DWF.
       Replaced GOLD with CHARCOAL color. 28 Oct 99. DWF.
       Added INDEXED keyword to force indexed color mode. 28 Oct 99. DWF.
       Fixed problem of "aqua" and "pink" being mixed up. 18 Mar 00. DWF.
       Changed ON_ERROR from 1 to 2, and improved error handling. 2 Aug 00. DWF.
       Increased the known colors from 16 to 88. 19 October 2000. DWF.
       Fixed typos in which "thisColor" was written as "theColor". 10 AUG 2001. DWF.

(See Color//getcolor.pro)


GRBAFTERGLOW__DEFINE

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

 PURPOSE:
  Structure for a GRB light curve

 CALLING SEQUENCE:
   tmp = {abslinstrct}

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
  Written by JXP

(See GRB//grbafterglow__define.pro)


GRB_AUTOCHRT

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

 PURPOSE:
    Creates a DSS chart from a BACODINE.  [old and not well tested]

 CALLING SEQUENCE:
   grb_autochrt, fil

 INPUTS:
     fil -- Email containing the coord

 RETURNS:
   flux= -- PS file of the finding chart

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   grb_fxlum, 'baco_050730'

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   30-Jul-2005 Written by JXP 

(See GRB//grb_autochrt.pro)


GRB_CALCLUM

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

 PURPOSE:
    Given a grb structure (magnitude at a time t,  z, spectral slope)
    calculates the luminsoity at any time  (erg/s/cm^2/Hz)

 CALLING SEQUENCE:
   
   lum_nu = grb_calclum(grb, nu, [t])

 INPUTS:
     grb -- GRB structure
     nu  -- Frequency (GRB frame)
     [t] -- Time (observer frame). Default = t0 in GRB structure

 RETURNS:
   lum_nu= 

 OUTPUTS:

 OPTIONAL KEYWORDS:
 H0 -- Set Hubble constant
 TAVG=  -- Time interval to calculate average luminosity across

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   17-Feb-2006 Written by JXP 

(See GRB//grb_calclum.pro)


GRB_CALCPHOT

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

 PURPOSE:
  Calculate the number of photons emitted in an energy interval dE
  during a time interval dt.  The user inputs a structure which
  describes the GRB afterglow light curve.

 CALLING SEQUENCE:
   
   total_phot = grb_calcphot( dE, dt, grb_after, Rphot=, nphot=)

 INPUTS:
     dE  -- Energy interval (GRB frame)  [eV]   
     dt  -- time interval (observer frame)
     grb_after -- Afterglow structure

 RETURNS:
   total_phot -- Number of photons emitted in the energy and time
                 intervals

 OUTPUTS:

 OPTIONAL KEYWORDS:
  Rphot= -- Radius at which to calculate the column density of photons
  nphot= -- Column density of photons at pecified distance
  /SILENT -- Suppress cosmo info

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   17-Feb-2006 Written by JXP 

(See GRB//grb_calcphot.pro)


GRB_FXLUM[1]

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

 PURPOSE:
    Calculate the flux for a Band function.

 CALLING SEQUENCE:
   
   grb_fxlum, fini, tini, freq, RAD=, FLUX=, LUM=, Z=, $
              tEarth=,  TEXP=, TSTART=, NSTP=

 INPUTS:
       E -- Energy (keV)
   alpha -- Power-law exponent
   beta  -- Power-law exponent

 RETURNS:
   flux= -- Array of flux values computed as function of time

 OUTPUTS:

 OPTIONAL KEYWORDS:
    A=     -- Radiative expansion [Default: adiabatic]

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   21-Apr-2008 Written by JXP 

(See GRB//grb_bandfunc.pro)


GRB_FXLUM[2]

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

 PURPOSE:
    Calculates GRB flux as a function of time given the flux at
    one point in time.  The solution is based on the paper by
    Sari, Piran, & Narayan 1998.

 CALLING SEQUENCE:
   
   grb_fxlum, fini, tini, freq, RAD=, FLUX=, LUM=, Z=, $
              tEarth=,  TEXP=, TSTART=, NSTP=

 INPUTS:
     fini -- Flux measured at tini in muJy
     tini -- Time at Earth when fini was measured (seconds)
     freq -- Frequency of the radiation
 RETURNS:
   flux= -- Array of flux values computed as function of time

 OUTPUTS:

 OPTIONAL KEYWORDS:
    /RAD   -- Radiative expansion [Default: adiabatic]
    z=     -- Redshift [default: 1.]
  tstart=  -- Starting time of observation [default: 3600.]
  tend=    -- Starting time of observation [default: 7200.]
  nstp=    -- Number of time steps [default: 1000L]

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   grb_fxlum, 1., 7200., 1e15

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   29-Oct-2003 Written by JXP (based on Sari, Piran, Narayan 1998)

(See GRB//grb_fxlum.pro)


GRB_PRSLCURV

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

 PURPOSE:
    Parses a data file of GRB light curves and returns a structure
    which parameterizes it.

 CALLING SEQUENCE:

 INPUTS:
     fil -- Data file of light curves

 RETURNS:
   struct -- Structure describing afterglow light curves

 OUTPUTS:

 OPTIONAL KEYWORDS:
  NAM=  -- Name of GRB of interest.  Leave blank to get an array of
           structures for the various light curves.

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   17-Feb-2006 Written by JXP 

(See GRB//grb_prslcurv.pro)


GRB_TIMEION

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 grb_timeion
   Version 1.0

 PURPOSE:
    Calculates the excitation rate as a function of Luminosity
      and distance and abundance

 CALLING SEQUENCE:
   
 

 INPUTS:
   grb  -- Structure for GRB afterglow


 RETURNS:
   
 OUTPUTS:
   Creates a Plot

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   May-2007 Written by JXP

(See GRB//grb_timeion.pro)


G_MKVOIGT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 g_mkvoigt
 Version 1.0

 PURPOSE:
   create voigt profile flux arrays for output files from vpfit

 CALLING SEQUENCE:
   g_mkvoigt, vpfil, fluxfil, TLIST=, FITSFIL=, PSFIL=, /DAT

 INPUTS:
  vpfil       - output fort.26 vpfil
  fluxfil     - wavelength, flux, sig of qso to be fit
  DAT         - set this flag if the input fluxfil is ASCII 

 OPTIONAL INPUTS:

 OUTPUTS:
  FITSFIL     - output fits file

 OPTIONAL OUTPUTS:
  PSFIL       - output postscript plots of fitting regions

 COMMENTS:
   this procedure (because of call to x_voigt) is VERY expensive!

 EXAMPLES:

 PROCEDURES CALLED:
   x_voigt

 REVISION HISTORY:
   21-Feb-2005  Created by GEP
  

(See Spec/Voigt//g_mkvoigt.pro)


HIRES_CUT_35

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

 PURPOSE:
    Zero out the first 35 points of a HIRES spectrum.  I cant
  even recall why I do it.

 CALLING SEQUENCE:
   hires_cut_35, fil

 INPUTS:
   fil -- Name of HIRES file to edit

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   ??  Written by JXP

(See Keck/HIRES//hires_cut_35.pro)


HIRES_UPD_NAM

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

 PURPOSE:
   Set the FILENAME, SIGFILE, and CONTFILE header key cards

 CALLING SEQUENCE:
   hires_upd_nam, fil, filnm, signm, contnm

 INPUTS:
   fil -- Name of HIRES file to edit

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   ??  Written by JXP

(See Keck/HIRES//hires_upd_nam.pro)


HIRES_WAV

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

 PURPOSE:
   Create a line list appropriate for the HIRES emulator 
 provided the redshift.

 CALLING SEQUENCE:
  hires_wav, z, fil, /LLS   
  
 INPUTS:
   z  -- Redshift
  fil -- Output fil

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   /LLS  -- Create a line list for LLS

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   hires_wav, 2.2, 'q0440-221_wav.dat'

 PROCEDURES CALLED:

 REVISION HISTORY:
   17-Nov-2003 Written by JXP

(See Keck/HIRES//hires_wav.pro)


KASTSTRCT__DEFINE

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

 PURPOSE:
   Kast IDL structure

 CALLING SEQUENCE:
  tmp = {kaststrct}

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   01-Mar-2003 Written by JXP

(See Lick/Kast/General/kaststrct__define.pro)


KAST_AR

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

 PURPOSE:
   Reads the Kast IDL structure from fits file into memory.  The
  program grabs the first file in the directory with kast_*fits

 CALLING SEQUENCE:
   
  kast = kast_ar(file)

 INPUTS:
    [file] - Filename (default: first file in list ./kast_*fits*)

 RETURNS:
    kast -  Kast IDL structure

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   kast = kast_ar()


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   01-Mar-2003 Written by JXP

(See Lick/Kast/General/kast_ar.pro)


KAST_CALIBSTD

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 kast_calibstd   
   Version 1.1.5

 PURPOSE:
    Creates a sensitivity function from a standard star; sensfunc can
    be used by kast_flux to flux-calibrate science-object spectra

 CALLING SEQUENCE:
  kast_calibstd, kast, indx, outfil, STFIL=, STTYPE=

 INPUTS:
   kast  -- Kast IDL structure
   indx  -- Index of standard star (not obj_id)

 REQUIRED KEYWORDS:
   STFIL= --  Spectrophotometric file for the standard star to be
             processed
          --  Units are F_lambda vs wavelength
   STTYPE= --  Type of standard file - tells the program whether to
              read it using xmrdfits (STTYPE=fits, vectors are
              st.wavelength and st.flux) or readcol (STTYPE=ascii,
              columns are wavelength, f_lambda)

 RETURNS:

 OUTPUTS:
   outfil -- Name of sensitivity function (written with mwrfits,
             readable with xmrdfits)

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   kast_calibstd, kast, 83, 'Calibs/sensfunc_test',
   stfil='kastsens_g191g1d46', sttype=fits

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   03-Mar-2003 Written by JXP
   25-Jan-2005 editing by SLM
   12-Nov-2005 revert code to use indx correctly, KLC

(See Lick/Kast/Calibs/kast_calibstd.pro)


KAST_COMBSPEC

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

 PURPOSE:
   Coadd kast spectra using x_combspec

 CALLING SEQUENCE:
   kast_combspec, kast, setup, side, obj_id, [exp_id]

 INPUTS:
   kast  --  Kast IDL structure
  setup  --  Setup value
   side  --  Specific camera [blue (1) vs. red (2)]
 obj_id  --  Object value
  [exp_id]  --  Exposure indices

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /CHK  -- Show the final combined spectrum

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   kast_combspec, kast, 0, 1, 2

 PROCEDURES/FUNCTIONS CALLED:
  x_combspec
  kast_wrspec

 REVISION HISTORY:
   28-August-2003 Written by GEP

(See Lick/Kast/Extract/kast_combspec.pro)


KAST_CRAYS

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

 PURPOSE:
   Detect cosmic rays, set affected pixels to have var = -1

 CALLING SEQUENCE:
   kast_crays, kast, setup, side, obj_id, [exp_id], CHK=chk

 INPUTS:
   kast  --  Kast IDL structure
  setup  --  Setup value
   side  --  Specific camera [blue (1) vs. red (2)]
 obj_id  --  Object value
  [exp_id]  --  Exposure indices
 
 OUTPUTS:

 OPTIONAL KEYWORDS:
  /CHK  -- Print out info on CRays

 COMMENTS:

 EXAMPLES:
    kast_crays, kast, 0, 1, 2, /chk

 PROCEDURES/FUCTIONS CALLED:

 REVISION HISTORY:
   01-September-2003 Written by GEP

(See Lick/Kast/Extract/kast_crays.pro)


KAST_EDITSTRCT

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

 PURPOSE:
    Launches a gui to edit the Kast IDL structure

 CALLING SEQUENCE:
   kast_editstrct, kast

 INPUTS:
  kast  --  Kast IDL structure

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   kast_editstrct, kast

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   01-Mar-2003 Written by JXP

(See Lick/Kast/General/kast_editstrct.pro)


KAST_EXTRACT

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

 PURPOSE:
    Extract a 1D spectrum from a Kast 2D image.

 CALLING SEQUENCE:
  kast_extract, kast, setup, side, obj_id, [exp], $
                 APER=, SKYNORD=, /STD, YMODEL=, /BOXCAR

 INPUTS:
   kast  --  Kast IDL structure
  setup  --  Setup value
   side  --  Specific camera [blue (1) vs. red (2)]
 obj_id  --  Object value
  [exp]  --  Exposure indices

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /BOXCAR -- Extract with a boxcar [default: optimal]
  APER= -- Aperture (for boxcar primarily)

 OPTIONAL OUTPUTS:
  YMODEL=  -- Image fit created in optimal extraction

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   01-Mar-2003 Written by JXP

(See Lick/Kast/Extract/kast_extract.pro)


KAST_FLUX

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

 PURPOSE:
    Flux a set of Kast spectra given a sensitivity file.

 CALLING SEQUENCE:
  kast_flux, kast, setup, side, obj_id, [exp], /STD, SENSFIL=

 INPUTS:
   kast -- Kast IDL structure
  setup -- Setup value 
   side -- Side of Kast (blue=1, red=2)
 obj_id -- Object ID value
  [exp] -- Exposure indices

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   /STD  -- Flux a standard
 SENSFIL -- Name of sensitivity file

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   kast_flux, kast, 0, 1, 0


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   03-Mar-2003 Written by JXP
   12-Nov-2005 added blue g2 (600/4310) default (KLC)

(See Lick/Kast/Calibs/kast_flux.pro)


KAST_FNDOBJ

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 kast_fndobj   
     Version 1.0

 PURPOSE:
    Find object on the image and then trace using x_trace.
  The code can look automatically or the user can look interactively.

 CALLING SEQUENCE:
 kast_fndobj, kast, setup, side, obj_id, [exp], $
                /CHK, /NOCLOBBER, SCICLM=, /STD, /AUTO, SCIROW=
 
 INPUTS:
   kast  --  Kast IDL structure
  setup  --  Setup value
   side  --  Specific camera [blue (1) vs. red (2)]
 obj_id  --  Object value
  [exp]  --  Exposure indices

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  SCICLM     -- Column to look for object in
  SCIROW     -- Approximate row expected for the object
  /AUTO      -- Look for the object automatically
  /NOCLOBBER -- Do not overwrite the object structure
  /STD       -- Standard star
  /CHK       -- Plot the image and the trace

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   kast_fndobj, kast 


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   01-Mar-2003 Written by JXP
   12-Nov-2005 Added SCICLM defaults for d55, blue G2 (600/4310) and
               red 600/7500, KLC

(See Lick/Kast/Extract/kast_fndobj.pro)


KAST_MKARC

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 kast_mkarc   
     Version 1.0

 PURPOSE:
    Process arc files (flatten, combine)

 CALLING SEQUENCE:
  kast_mkarc, kast, setup, /CLOBBER

 INPUTS:
   kast  --  Kast IDL structure
  setup  --  Setup value

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
 /CLOBBER -- Clobber any previous processed image

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   kast_mkarc, kast


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   27-Aug-2002 Written by JXP

(See Lick/Kast/Calibs/kast_mkarc.pro)


KAST_MKFLAT

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

 PURPOSE:
    Process flat file

 CALLING SEQUENCE:
   
  kast_mkflat, kast, slit

 INPUTS:
   kast  --  Kast IDL structure
  setup  --  Setup value

 RETURNS:

 OUTPUTS:
  One normalized flat per slit width

 OPTIONAL KEYWORDS:
 /CLOBBER -- Clobber any previous processed image

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   kast_mkflat, kast, 1L


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   01-Mar-2003 Written by JXP

(See Lick/Kast/Calibs/kast_mkflat.pro)


KAST_PLTOBJ

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

 PURPOSE:
   Calls x_pltobj after gathering the relevant data

 CALLING SEQUENCE:
  kast_pltobj, kast, [setup, side, obj_id, obj_nm], EXPSR=, XSIZE=, $
                 YSIZE=, /FLUX, /FSPEC, XMAX=, /NOIMG, /NOWV, /COMB

 INPUTS:
   kast  --  Kast IDL structure
  [setup]  --  Setup value
   [side]  --  Specific camera [blue (1) vs. red (2)]
 [obj_id]  --  Object value

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /NOIMG  -- Do not display 2D image of spectrum
  /COMB   -- Show the combined 1D spectra
  EXPSR   -- Index of spectrum
  /FLUX   -- Show the fluxed spectra
  XMAX    -- Max height of spectrum [default: 7e-17]

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   kast_pltobj, kast, /noimg

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   30-Jul-2002 Written by JXP
   ??  Major revisions by GEP

(See Lick/Kast/Spec/kast_pltobj.pro)


KAST_PROC

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

 PURPOSE:
    Process an image (flatten) and create variance array.  The
  routine also turns the DN into electrons by scaling by the gain.
      WARNING! Assumes 1 flat for all images

 CALLING SEQUENCE:
  kast_proc, kast, setup, obj_id, side, INDEX=, /CLOBBER

 INPUTS:
   kast  - Kast IDL structure
  setup  --  Setup value
   side  --  Specific camera [blue (1) vs. red (2)]
 obj_id  --  Object value

 RETURNS:

 OUTPUTS:
  Processed file (Final/f_###.ccd)

 OPTIONAL KEYWORDS:
   INDEX  - Indices of objects to process
   FLAT   - Flat file
 /CLOBBER - Overwrite processed image if it exists

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   kast_proc, kast 


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   18-Jul-2002 Written by JXP

(See Lick/Kast/General/kast_proc.pro)


KAST_QCKREDUX

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

 PURPOSE:
   Perform a quick and dirty (and rather accurate) reduction of a
  Kast spectrum.  Very useful at the telescope.

 CALLING SEQUENCE:
  kast_qckredux, img, flat, spec, sig, ARC=, OVR=, $
                  CLINE=, APER=, SKYFUNC=, SKYNORD=, SKYREG=, 
                  /DISPLAY, /NOREJ, TRACE=, /NOSKY=, STRCT=, RN=, GAIN=, 
                  VAR=, CRUDE=, TINTER=, /SILENT,
                  WAVE=, /OPTIMAL, /AINTER, OBJLIN=, /DEBUG, /APINTER, 
                  YMODEL=, SIGMA=, /CHK=

 INPUTS:
   img  -- Image to extract from (raw fits file)
  flat  -- Name of flat file (fits)

 RETURNS:
  spec  -- 1D spectrum
   sig  -- Error of 1D spectrum

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /CRUDE   -- Use the routine trace_crude to trace [recommended]
  CLINE=   -- Row to use to identify object  [default: half way on image]
  APER=    -- Aperture for boxcar extraction  (output or input)
  TRACE=   -- Trace of the object (output or input)
  /CHKTRC  -- Check the trace by eye
  /DISPLAY -- Display the sky subtracted image with xatv
  /NOREJ   -- Turn off rejection in sky subtraction (not recommended)
  /AINTER  -- Interactively fiddle with the Arc peakup
  OBJLIN=  -- Row near the object trace [default: center of image]
  /OPTIMAL -- Perform optimal extraction
  YMODEL   -- 2D model of the image created by extract_image
  RN=      -- Readnoise of the image [default: 3.29]
  ARC=     -- Arc image (fits file)
  /DEBUG   -- Debug the program (this one often 'breaks')
  SIGMA=   -- Approximate sigma of the Gaussian profile (for Optimal)

 OPTIONAL OUTPUTS:
  WAVE=    -- Wavelength array (requires Arc image)

 COMMENTS:

 EXAMPLES:
   kast_qckredux, 'b109.ccd', spec, sig, WAVE=wave, ARC='b102.ccd',
                  FLAT='b100.ccd', /OPTIMAL, /NOSKY 


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   01-Mar-2003 Written by JXP

(See Lick/Kast/Extract/kast_qckredux.pro)


KAST_SENSSTD

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 kast_sensstd
     Version 1.0

 PURPOSE:
    Process a standard star and create the sensitivity file

 CALLING SEQUENCE:
   

 INPUTS:
   kast     -  ESI structure

 RETURNS:

 OUTPUTS:
  Image with rdxstdered light removed

 OPTIONAL KEYWORDS:
   DFLAT      - Use Dome flats where possible

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   esi_echrdxstd, esi


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   12-Jan-2008 Written by JXP

(See Lick/Kast/Calibs/kast_sensstd.pro)


KAST_SPECSETUP

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

 PURPOSE:
    Examines the Kast IDL structure, checks for appropriate
  Flats and Arcs and then outputs a summary ASCII file.

 CALLING SEQUENCE:
  kast_specsetup, kast, OUTFIL=

 INPUTS:
   kast --  Kast IDL structure

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  OUTFIL=  -- Name of ASCII file (default: kast_specsumm.txt')

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   kast_specsetup, kast

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   01-Mar-2003 Written by JXP

(See Lick/Kast/General/kast_specsetup.pro)


KAST_STRCT

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

 PURPOSE:
    Creates and outputs a structure for a series of Kast frames.
    This structure organizes the data for the night and is used 
    to run most of the programs in the Kast package    

 CALLING SEQUENCE:
  kast_strct, struct, LIST=, /NOMKDIR, OUTFIL=, /NOEDIT

 INPUTS:

 RETURNS:

 OUTPUTS:
  struct  -- Kast IDL structure

 OPTIONAL KEYWORDS:
   LIST=     - Image list:  e.g.  'gd_files.lst'
               [Default is 'Raw/kast*.fits']
   /NOMKDIR   - Do not make default directories
   /NOEDIT    - Do not edit the hand
   OUTFIL=    - Name of fits output file [default: 'kaststrct.fits']
   

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   kast_strct, nght1_strct, /MKDIR


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   01-Mar-2003 Written by JXP

(See Lick/Kast/General/kast_strct.pro)


KAST_WAVESOL

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

 PURPOSE:
  Create a wavelength solution for a specific object using 
     an archived solution.  The wavelength array in the object
     structure and writes that structure out.

 CALLING SEQUENCE:
 kast_wavesol, kast, setup, side, obj_id, [exp], /STD,
  /SILENT, /AINTER, /AUTO, CALIB=, CALIBFIL=, NFIN= ,ARC_SAT = 

 INPUTS:
   kast  --  Kast IDL structure
  setup  --  Setup value
   side  --  Specific camera [blue (1) vs. red (2)]
 obj_id  --  Object value
  [exp]  --  Exposure indices

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /AUTO    -- Automatically fit the arc
  NFIN=    -- Requires nfin lines to start the fit [default: 5]
  /SILENT
  /AINTER  -- Peak up on the arc cross-correlation interactively
  ARC_SAT= -- max counts for arc lines for determining which to use

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   01-Mar-2003 Written by JXP
   12-Nov-2005 Added defaults for Blue G2 (600/4310) and Red 600/7500
               and ARC_SAT keyword, KLC

(See Lick/Kast/Calibs/kast_wavesol.pro)


KAST_WRSPEC

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 kast_wrspec
    Version 1.0

 PURPOSE:
    Writes kastspectrct to a FITS file

 CALLING SEQUENCE:
   kast_wrspec, kastspecstrct, outfil, /READ

 INPUTS:
   kastspecstrct     - Kast Combined Spectrum structure

 RETURNS:

 OUTPUTS:
   outfil            - FITS file for the structure

 OPTIONAL KEYWORDS:
   /READ   -- Reverse the operation (read from the FITS file)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   kast_wrspec, kastspecstrct, outfil

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   03-Aug-2003 Written by GEP

(See Lick/Kast/Extract/kast_wrspec.pro)


KAST_WRSTRCT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 kast_wrstrct   
    Version 1.0

 PURPOSE:
    Write the kast structure to a FITS file and write an ASCII summary

 CALLING SEQUENCE:
   
  kast_wrstrct, kast, /ANONLY, OUTFIL=, FITS=

 INPUTS:
   kast   - An ESI structure

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   ANONLY - Only print files with flg_anly NE 0   

 OPTIONAL OUTPUTS:
   OUTFIL= - Output file (default: kast.list)
   FITS=   - Name of fits output file

 COMMENTS:

 EXAMPLES:
   kast_wrstrct, kast, FITS='kast_13oct02.fits'


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   01-Mar-2003 Written by JXP

(See Lick/Kast/General/kast_wrstrct.pro)


LCO_GUIDESTR

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

 PURPOSE:
    Inputting a photometry structure, parse out a set of stars
  useful for guide stars for WFCCD masks.

 CALLING SEQUENCE:
   lco_guidestr, phot, mmin, mmax

 INPUTS:
   phot -- Photometry structure
   mmin -- Min mag for guide star
   mmax -- Max mag for guide star

 RETURNS:

 OUTPUTS:
   'Masks/guidestr.dat' -- Guide star output file

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   ?? Written by JXP

(See lcoovi//lco_guidestr.pro)


LCO_PHOT

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

 PURPOSE:
    Turns the photometry output (B,R filters) into a structure

 CALLING SEQUENCE:
   lco_phot, phot_fil, phot_str

 INPUTS:
   phot_fil -- Photometry ASCII file

 RETURNS:
   phot_str -- Photometry structure

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   ?? Written by JXP

(See lcoovi//lco_phot.pro)


LCO_TARGETS

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

 PURPOSE:
    Turns a Sextractor output file into an IDL structure

 CALLING SEQUENCE:
   lco_targets, name, galstr

 INPUTS:
   name -- Name of Sextractor file

 RETURNS:
   galstr -- IDL galaxy structure

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   ?? Written by JXP

(See lcoovi//lco_targets.pro)


LLISTSTRCT__DEFINE

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

 PURPOSE:
  Structure for the line lists

 CALLING SEQUENCE:
   tmp = {lliststrct}

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
  Written by JXP

(See Spec/Lines//lliststrct__define.pro)


LLS_STAT

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

 PURPOSE:
    Given a LLS struct and gz list, determine the indices of those
    LLS satisfying the statistical sample.

 CALLING SEQUENCE:
   sdss_llsstat

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   Feb-2009 Written by JXP

(See SDSS/LLS/sdss_llsstat.pro)


LNDLTSTR__DEFINE

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

 PURPOSE:
   Structure to handle Landolt star data

 CALLING SEQUENCE:
  tmp = {lndltstr}

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   07-Aug-2001 Written by JXP

(See IMG/Photometry//lndltstr__define.pro)


LRIS_CALIBSTD

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

 PURPOSE:
    CURRENTLY UNDER CONSTRUCTION

 CALLING SEQUENCE:
   
   spec = x_apall(ydat, [head])

 INPUTS:
   ydat       - Values 
   [head]     - Header

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   wave       - wavelength array
   DISPLAY    - Display the sky subtracted image with xatv
   OVR        - String array for ov region:  '[2050:2100, *]'
   ERROR      - Variance array

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   kast_calibstd, kast, 0, 1, 0


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   03-Mar-2003 Written by JXP

(See Keck/LRIS/Flux/lris_calibstd.pro)


LRIS_FLUX

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

 PURPOSE:
    Flux an LRIS spectrum given a sensitivity function (archived)

 CALLING SEQUENCE:
   flux = lris_flux(wave, spec, flux_fil, SIG=, FSIG=)

 INPUTS:
   wave  -- Wavelength array
   spec  -- LRIS spectrum
  flux_fil -- Sensitivity function

 RETURNS:
   flux  -- Fluxed LRIS spectrum

 OUTPUTS:

 OPTIONAL KEYWORDS:
  EXP=  -- Exposure time [default: 1.]
  SIG=  -- Error array to flux as well

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   kast_calibstd, kast, 0, 1, 0


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   29-Aug-2003 Written by JXP

(See Keck/LRIS/Flux/lris_flux.pro)


LRIS_SENSSTD

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 lris_sensstd
     Version 1.0

 PURPOSE:
    Process a standard star and create the sensitivity file for LRIS

 CALLING SEQUENCE:
   

 INPUTS:
   std_fil -- A processed standard star using the LowRedux pipeline

 RETURNS:

 OUTPUTS:
  Image with rdxstdered light removed

 OPTIONAL KEYWORDS:
   DFLAT      - Use Dome flats where possible

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   esi_echrdxstd, esi


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   12-Jan-2008 Written by JXP

(See Keck/LRIS/CALIBS/lris_sensstd.pro)


LWDFSPECSTRCT__DEFINE

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

 PURPOSE:
  Creates a structure for Low dispersion spectroscopy that will hold the
  wavelength, flux and error arrays.  Also includes the ZANS
  structure which is useful for using SDSS redshift identification.
 

 CALLING SEQUENCE:
   tmp = {lwdfspecstrct}

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:
  Currently a maximum of 5000 pixels

 EXAMPLES:


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   Written by JXP

(See Spec/Analysis//lwdfspecstrct__define.pro)


MANUAKEA_SKY

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

 PURPOSE:
    Gives an estimate of the sky brightness for Mauna Kea

 CALLING SEQUENCE:
  mag = maunakea_sky( wave, phase )

 INPUTS:
  wave=  -- Wavelength array
  phase= -- Phase of the moon [days]

 RETURNS:
  mag=  -- Sky brightness in AB mags

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   27-Oct-2005 Written by JXP based on HIRES S2N code

(See Obs//maunakea_sky.pro)


MANUAKEA_TRANS

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

 PURPOSE:
    Extinction of the atmosphere at Mauna Kea

 CALLING SEQUENCE:
  extinct = maunakea_trans(wave)

 INPUTS:
  wave=  -- Wavelengths of interest

 RETURNS:
  extinct  -- Extinction in mag 

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:
  showfits
  querydss

 REVISION HISTORY:
   27-Oct-2005 Written by JXP based on HIRES S2N code

(See Obs//maunakea_trans.pro)


MSLITSTRCT__DEFINE[1]

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

 PURPOSE:
  This structure is used to save info about a slit in a mask.  In
  particular, one saves the edges of the slit.

 CALLING SEQUENCE:
   tmp = {mslitstrct}

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
  Written by JXP

(See Spec/Flux//thrustrct__define.pro)


MSLITSTRCT__DEFINE[2]

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

 PURPOSE:
  This structure is used to save info about a slit in a mask.  In
  particular, one saves the edges of the slit.

 CALLING SEQUENCE:
   tmp = {mslitstrct}

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
  Written by JXP

(See Spec/Slits//mslitstrct__define.pro)


NEWABSLINSTRCT__DEFINE

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

 PURPOSE:
  Current structure for absorption lines

 CALLING SEQUENCE:
   tmp = {newabslinstrct}

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
  Written by JXP

(See Spec/Lines//newabslinstrct__define.pro)


OBSERVABLE

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

 PURPOSE:
    Calculate the airmass for an obj with a given DEC at an
  observatory with a given DEC and an offset in RA

 CALLING SEQUENCE:
  observable, month, obs_dec, obj_ra, obj_dec, PAR=par, $
               POS=pos, L1=l1, L2=l2, KECK=keck, VLT=vlt

 INPUTS:
  month   -- 
  obs_dec -- DEC of the observatory
  obj_ra  -- RA of the object
  obj_dec -- DEC of the object

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /KECK  -- Calculate for Keck
  /VLT   -- Calculate for VLT

 OPTIONAL OUTPUTS:

 COMMENTS:
written by E. Gawiser, last modified 05jul03
anyone can use this code, please notify gawiser@astro.yale.edu regarding
any errors found!    
WARNING:  POS=0 is equivalent to not setting it, so use e.g. 0.001  
WARNING:  "middle of the night" is not local midnight but is much more useful 
in Chile it's about 00:40 in winter, 01:40 in summer with daylight savings!
dec in degrees, RA in hours
month is from 1.00 to 12.99, use decimals for days.  e.g automnal equinox
is roughly 9.67.  (No accounting for 28/30/31 days)
NOTE:  To get Keck Nasmyth platform limits, use /keck.  
/par will output the amplitude of atmospheric dispersion from L1 to L2
along the parallactic angle (default is 3000,10000A) and if POS is set it 
will output the component perpendicular to a slit at position angle POS

EXAMPLE FOR IMAGING:  
observable, 1.7, -30., 3.5, -27. 
models observing the CDF-S (03 30 -27) on January 21 from CTIO 
The program outputs the RA overhead, length of night, and airmass values.

EXAMPLE FOR SPECTROSCOPY:  
observable, 10.3, 20., 3.5, -27., /par, /keck, l1=3500, l2=6000, pos=0.01
models observing the CDF-S (03 30 -27) on October 9 from Keck with 
slit(s) at position angle = 0.01
The program outputs the Nasmyth platform limits, RA overhead, 
length of night, airmass, parallactic angle, total amplitude of ADR from 
3500 to 6000A, and amplitude of that ADR perpendicular to POS=0.01 
for this field.  
you can call /vlt instead of /keck to use atmospheric conditions at 
Paranal (about 50% more ADR) instead of Mauna Kea.  Calling neither uses 
atmospheric conditions at La Silla which cause a bit more ADR than Paranal.  
Note that parallactic angle is 
defined as angle towards zenith i.e. from blue to red light of the object,
with North=0, East=90, etc. This has been tested versus the skycalc code 
and works fine anywhere on the sky (doesn't mean much once the object is 
below the horizon however ;) ).  

(See Obs//observable.pro)


PARSE_DLALST

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 parse_dlalst
  V1.2

 PURPOSE:
    Given a list of DLA base files, fill up the DLA structure.  THis
    program also defines the DLA structure {sDLA}.

 CALLING SEQUENCE:
   
   parse_DLAlst, dla, [list]

 INPUTS:
  [list] -- List of DLA base files.  [default:
            '/u/xavier/DLA/Lists/tot_dla.lst']

 RETURNS:

 OUTPUTS:
  dla  -- IDL DLA structure

 OPTIONAL KEYWORDS:
  /ION - Input ionic column densities
  /NOELM - Supress elemental and ion structures (saves memory)
  /NORELM - Supress inputting Elemental [X/H] values
  FILE=  -- The input is the dat filename not a list of dat files
  /NOHIS -- Suppress HI error in [X/H] values
  /EW    -- Fill up the ion arrays with EW values instead of column
            densities.  This reads the .EW files instead of .ion
  /FINE  -- This fills up arrays for fine-structure states
            (e.g. SiII*).  By default CII* is already considered 
  ROOT=  Path to the DLA tree

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   parse_dlalst, dla, '/u/xavier/DLA/Lists/tot_dla.lst'
   parse_dlalst, dla, '/u/xavier/DLA/Data/GRB051111.z154.dat', /FILE, /ION


 PROCEDURES CALLED:

 REVISION HISTORY:
   31-May-2001 Written by JXP
   02-Jan-2003 Added metallicity structure

(See DLA//parse_dlalst.pro)


PARSE_PHOT

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

 PURPOSE:
    Reads in the BRI ASCII file from DLA photometery to an IDL
    structure.  Not too useful for the common folk.

 CALLING SEQUENCE:
   
   parse_phot, file, nobj, supstrc, FLAG=

 INPUTS:

 RETURNS:


 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
 
 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   

(See IDLA//parse_phot.pro)


PARSE_SDSS

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

 PURPOSE:
    Given an SDSS spectrum, return flux, wavelength, etc.

 CALLING SEQUENCE:
 parse_sdss, fil, flux, wave, conti, SIG=, IVAR=, ZQSO=, $
                  NPIX=, HEAD=, CFIL=, CDIR=

 INPUTS:
  fil -- Name of SDSS file OR [PLATE, FIBER]

 RETURNS:
  flux -- Spectral flux array
  wave -- Wavelength array
  conti -- Continuum array  (requires CFIL)

 OUTPUTS:

 OPTIONAL KEYWORDS:
  CFIL= -- Name of continuum file
  CDIR= -- Name of directory to continuum files

 OPTIONAL OUTPUTS:
  SIG=  -- Sigma array
  IVAR= -- Inverse variance array
  ZQSO= -- Redshift of the quasar (or galaxy)
  NPIX= -- Number of pixels in the spectrum
  HEAD= -- Full header of the SDSS spectrum

 COMMENTS:

 EXAMPLES:
   parse_sdss, fil


 PROCEDURES/FUNCTIONS CALLED:
 REVISION HISTORY:
   05-Sep-2003 Written by JXP

(See SDSS/General/parse_sdss.pro)


PCA_QSOTILT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 pca_qsotilt   
   Version 1.0

 PURPOSE:
  Attempt to fit in logarithmic flux a low order polynomial to
   match the CIV region (range)
   coeffs contains the [npoly,nspec] coefficients based on rlam

   This fit is done in logarithmic flux vs. logarithmic wavelength

 CALLING SEQUENCE:
 pca_qsotilt, rlam, flux, invvar, xmed, ymed, tilt, tiltivar, $
                coeff, npoly=, range=, answer=, FLG_TILT=

 INPUTS:
  rlam -- Observed Wavelength array (logarithmic)
  flux -- Flux of quasar
  invvar -- Inverse variance array
  xmed -- Rest frame wavelength array [logarithmic; rlam / (1+zem) ]
  ymed -- 0th channel of the PCA fit  (pca[*,0])


 RETURNS:
  tilt --  Normalized fit to QSO (tilt taken out)
  tiltivar -- Inverse variance of the fit
  coeff -- Coefficients of the fit to the tilt

 OUTPUTS:

 OPTIONAL KEYWORDS:
  npoly=  -- Number of coefficients in POLY fit to tilt
  range=  -- Rest-wavelength range to fit [default: 1270--2000]

 OPTIONAL OUTPUTS:
  ANSWER= -- Tilted fit
  FLG_TILT -- Flag describing the success of the fit (0=bad, 1=good)

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   09-Sep-2003 Written by JXP (based on qso_tilt by SB)

(See SDSS/PCA/pca_qsotilt.pro)


PRINTCOL

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

 PURPOSE:
    Prints a series of arrays to the screen in column format.
   The program will print as many entries as found in v1.

 CALLING SEQUENCE:
   
   printcol, v1, v2, [v3-v8], FORMAT=''

 INPUTS:
   v1       - Vector 1
   v2       - Vector 2
   [v3-v8]  - Additional vectors.

 RETURNS:

 OUTPUTS:
   Prints v1, v2 to screen

 OPTIONAL KEYWORDS:
   FORMAT -  FORTRAN formatting

 OPTIONAL OUTPUTS:

 COMMENTS:
   The program keys off the number of elements in v1

 EXAMPLES:
   printcol, array1, array2

 PROCEDURES CALLED:

 REVISION HISTORY:
   17-June-2001 Written by JXP

(See General//printcol.pro)


PRS_CLDYCOLL

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 prs_cldycoll
  V1.1

 PURPOSE:
    Parses a standard binary fits file into the CLOUDY struct
   for collisional ionization.  The default file was created by
   J.C. Howk using Cloudy

 CALLING SEQUENCE:
   
   prs_cldycoll, stucture, [filename]

 INPUTS:
  [filename]  - Input fits file  
        [default: $XIDL_DIR/Cloudy/cloud_collisons.fits]

 RETURNS:
   structure      - IDL structure strctcldy

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   03-Nov-2003 Written by JXP

(See Cloudy//prs_cldycoll.pro)


PRS_CLDYGRID

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 prs_cldygrid
  V1.1

 PURPOSE:
    Parses a standard binary fits file into the CLOUDY struct
    for Photoionized models

 CALLING SEQUENCE:
   
   prs_cldygrid, stucture, filename

 INPUTS:
   filename   - Cloudy File
   ROOT=  - Path to Cloudy files [default: /u/xavier/Cloudy/Grid/Output]

 RETURNS:
   structure  - IDL structure strctcldy containing the Cloudy info

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   prs_cldygrid, struct, 'HM01A.fits'


 PROCEDURES CALLED:
  xmrdfits

 REVISION HISTORY:
   31-May-2001 Written by JXP

(See Cloudy//prs_cldygrid.pro)


PS_OPEN

[Previous Routine] [Next Routine] [List of Routines]
 Name:

   PS_Open

 Purpose:

   Set the plotting device to be PostScript, 
   and save the current plotting device (that can thus be restored).
   Use in conjunction with ps_close.

 Calling sequence:

   PS_Open

 Example:
   
   IDL> ps_open,file='test.ps',/por
   IDL> plot,findgen(10)
   IDL> ps_close,/nop

 Keywords:

   PORTRAIT - Normally, PS_Open defines the plotting area as landscape. If
     this keyword is set, the plotting area will be portrait.

   FILENAME = <string> - Normally, PS_Open uses '/tmp/idl-$USER.ps' (on
     Sparx) for the PostScript file, but the keyword FILENAME can be used
     to override that value.  ($USER is retrieved with a getenv('USER')).

   SQUARE - if set, defines the plotting area to be square.  to also get
     a square data window, use the position keyword when making the plot.

   FONT - set !P.font to value of FONT

   ENCAPSULATED - produces an encapsulated PostScript plot.
   
   BPP = <n> - Set the number of bits per pixel; default value is 8,
     valid values are 8, 4, OR 2. A higher no produces a better
     resolution but also a bigger PostScript file.

   COLOR - produces a color PostScript plot.

   LEDGER - selects ledger format (17x11; usefull mostly for color printer)

   XSIZE - the x size in inches of the plotting region

   YSIZE - the y size in inches of the plotting region

   MAXS -- Maximize the plot on a standard 8.5 x 11 page (JXP)

   CMYK -- generate colors in CMYK for publication

 See also:
    PS_Close

 History:
   23-Aug-93: added bpp=[2,4,8] option, with 8 bpp as default
   24-Aug-93: added support for /color, 
              and reduced the page size for QMS color printer
   16-Sep-93: added color flag to common block (see also PS_Close)
    9-Apr-94: added file name to info message
   11-Apr-94: added LEDGER support (see also PS_Close)
   28-Apr-94: added SQUARE, and fixed color portrait offset
    5-May-94: got /SQUARE to actually work
   25-Jun-94: added xsize and ysize keywords
    3-Dec-07  added CMYK, KLC

(See General//ps_open.pro)


QALCHARSTRCT__DEFINE

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

 PURPOSE:
  Defines the QAL structure for SDSS
 
 CALLING SEQUENCE:
 tmp = {qalcharstrct}

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   30-Sep-2002 Written by JXP

(See SDSS/General/qalcharstrct__define.pro)


QSO_TEMPLATE_NU

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

 PURPOSE:

 CALLING SEQUENCE:


 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   2005  Written by Joe Hennawi UCB 

(See SDSS/m912/x_qso_template_nu.pro)


READCOL

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       READCOL
 PURPOSE:
       Read a free-format ASCII file with columns of data into IDL vectors 
 EXPLANATION:
       Lines of data not meeting the specified format (e.g. comments) are 
       ignored.  Columns may be separated by commas or spaces.

       Use READFMT to read a fixed-format ASCII file.   Use RDFLOAT for
       much faster I/O (but less flexibility).    Use FORPRINT to write 
       columns of data (inverse of READCOL).    

 CALLING SEQUENCE:
       READCOL, name, v1, [ v2, v3, v4, v5, ...  v35 , COMMENT=
           DELIMITER= ,FORMAT = , /DEBUG ,  /SILENT , SKIPLINE = , NUMLINE = ]

 INPUTS:
       NAME - Name of ASCII data file, scalar string.  

 OPTIONAL INPUT KEYWORDS:
       FORMAT - scalar string containing a letter specifying an IDL type
               for each column of data to be read.  Allowed letters are 
               A - string data, B - byte, D - double precision, F- floating 
               point, I - integer, L - longword, Z - longword hexadecimal, 
               and X - skip a column.

               Columns without a specified format are assumed to be floating 
               point.  Examples of valid values of FMT are

       'A,B,I'        ;First column to read as a character string, then 
                       1 column of byte data, 1 column integer data
       'L,L,L,L'       ;Four columns will be read as longword arrays.
       ' '             ;All columns are floating point

       If a FORMAT keyword string is not supplied, then all columns are 
       assumed to be floating point.

       /SILENT - Normally, READCOL will display each line that it skips over.
               If SILENT is set and non-zero then these messages will be 
               suppressed.
       /DEBUG - If this keyword is non-zero, then additional information is
                printed as READCOL attempts to read and interpret the file.
       COMMENT - single character specifying comment signal.   Any line 
                beginning with this character will be skipped.   Default is
                no comment lines.
       DELIMITER - single character specifying delimiter used to separate 
                columns.   Default is either a comma or a blank.
       SKIPLINE - Scalar specifying number of lines to skip at the top of file
               before reading.   Default is to start at the first line.
       NUMLINE - Scalar specifying number of lines in the file to read.  
               Default is to read the entire file

 OUTPUTS:
       V1,V2,V3,...V25 - IDL vectors to contain columns of data.
               Up to 25 columns may be read.  The type of the output vectors
               are as specified by FORMAT.

 EXAMPLES:
       Each row in a file position.dat contains a star name and 6 columns
       of data giving an RA and Dec in sexigesimal format.   Read into IDL 
       variables.   (NOTE: The star names must not include the delimiter 
       as a part of the name, no spaces or commas as default.)

       IDL> FMT = 'A,I,I,F,I,I,F'
       IDL> READCOL,'position.dat',F=FMT,name,hr,min,sec,deg,dmin,dsec  

       The HR,MIN,DEG, and DMIN variables will be integer vectors.

       Alternatively, all except the first column could be specified as
       floating point.

       IDL> READCOL,'position.dat',F='A',name,hr,min,sec,deg,dmin,dsec 

       To read just the variables HR,MIN,SEC
       IDL> READCOL,'position.dat',F='X,I,I,F',HR,MIN,SEC

 RESTRICTIONS:
       This procedure is designed for generality and not for speed.
       If a large ASCII file is to be read repeatedly, it may be worth
       writing a specialized reader.

       Columns to be read as strings must not contain the delimiter character
       (i.e. commas or spaces by default).   Either change the default 
       delimiter with the DELIMITER keyword, or use READFMT to read such files.

       Numeric values are converted to specified format.  For example,
       the value 0.13 read with an 'I' format will be converted to 0.

 PROCEDURES CALLED
       GETTOK(), NUMLINES(), STRNUMBER()

 MINIMUM IDL VERSION:
       V5.3 (Uses STRSPLIT)
 REVISION HISTORY:
       Written         W. Landsman                 November, 1988
       Modified             J. Bloch                   June, 1991
       (Fixed problem with over allocation of logical units.)
       Added SKIPLINE and NUMLINE keywords  W. Landsman    March 92
       Read a maximum of 25 cols.  Joan Isensee, Hughes STX Corp., 15-SEP-93.
       Call NUMLINES() function W. Landsman          Feb. 1996
       Added DELIMITER keyword  W. Landsman          Nov. 1999
       Fix indexing typos (i for k) that mysteriously appeared W. L. Mar. 2000
       Hexadecimal support added.  MRG, RITSS, 15 March 2000.
       Default is comma or space delimiters as advertised   W.L. July 2001
       Faster algorithm, use STRSPLIT if V5.3 or later  W.L.  May 2002
       Accept null strings separated by delimiter ,e.g. ',,,'
       Use SCOPE_VARFETCH instead of EXECUTE() for >V6.1  W.L. Jun 2005
       Added compile_opt idl2   W. L.  July 2005

(See General//x_readcol.pro)


RESOLVE_ALL

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

 PURPOSE:
	Resolve (by compiling) all procedures and functions.
	This is useful when preparing .sav files containing all the IDL
	routines required for an application.
 CATEGORY:
	Programming.
 CALLING SEQUENCE:
	RESOLVE_ALL
 INPUTS:
	None.
 KEYWORD PARAMETERS:
	CLASS = if set, a list of object class names. RESOLVE_ALL's rules
	    for finding uncompiled functions and procedures are not able to
	    find object definitions or methods, because those things are not
	    known to IDL until the object classes are actually instantiated
	    and the methods called. However, if CLASS is set, RESOLVE_ALL
	    will ensure that the __DEFINE files for those classes and their
	    superclasses are compiled and execute. If then locates all methods
	    for those classes and their superclasses and makes sure they are
	    also compiled.
	CONTINUE_ON_ERROR = if set, continue when a routine fails to
	    resolve, otherwise throw an error and stop.
	QUIET = if set, produce no messages.
	RESOLVE_EITHER = A scalar or array of routine names to resolve.
	    Use this keyword instead of RESOLVE_FUNCTION or RESOLVE_PROCEDURE
	    if you do not know the type of the routine being resolved.
	    If the routines are already compiled, they are not recompiled.
	RESOLVE_FUNCTION = a scalar or array of function names to resolve.
	    If the routines are already compiled, they are not recompiled.
	RESOLVE_PROCEDURE = a scalar or array of procedure names to resolve.
	    If the routines are already compiled, they are not recompiled.
 	SKIP_ROUTINES = an optional string array containing the names
 	    of routines to NOT resolve.  This is useful when a library
 	    file containing the designated routines will be later included.
	UNRESOLVED = if CONTINUE_ON_ERROR is set, this output parameter will
	    contain the names of the unresolved procedures and functions
	    in a string array.  Routines in the SKIP_ROUTINES list are
	    also included in this result.
 OUTPUTS:
	No explicit outputs.
 COMMON BLOCKS:
	None.
 SIDE EFFECTS:
 RESTRICTIONS:
	Will not resolve procedures or functions that are called via
	CALL_PROCEDURE, CALL_FUNCTION, or EXECUTE, or object methods.
	Only explicit calls are resolved.

	If an unresolved procedure or function is not in the IDL
	search path, an error occurs, and no additional routines
	are resolved unless CONTINUE_ON_ERROR is specified.

	This routine does not support the idea of a function and procedure
	both having the same name, and does not handle that case. This is
	generally not a good idea anyway, as it is confusing.

 PROCEDURE:
	This routine iteratively determines the names of unresolved calls
	to user-written or library procedures and functions, and then
	compiles them.  The process stops when there are no unresolved
	routines. If the CLASS keyword is set, this routine first ensures
	that all the class definitions are compiled (from the __define.pro)
	file, and that all methods for those classes and their superclasses
	are compiled.

 EXAMPLE:
	RESOLVE_ALL.

 MODIFICATION HISTORY:
 	Written by:
	DMS, RSI, January, 1995.
	DMS, RSI, April, 1997, Added SKIP_ROUTINES keyword.
	AB, RSI, April 1998, Added CONTINUE_ON_ERROR keyword. Reorganized
		the body of the resolving code.
	DMS, Aug, 1998.  Added UNRESOLVED keyword.
	AB, 13 January 1999, Added RESOLVE_EITHER keyword. Removed the old
		restriction that only one of the RESOLVE_ keywords are
		processed in a single call.
	AB, 6 February 2003, Added CLASS keyword.
	CT, August 2004: Fix RESOLVE_FUNCTION keyword so it works.

(See General//x_resolve_all.pro)


SDSSDLASTRCT__DEFINE[1]

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

 PURPOSE:
    Structure for SDSS DLA searches

 CALLING SEQUENCE:

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   27-Feb-2004 Written by SHF
   14-Oct-2004 Modified by JXP

(See SDSS/DLA/sdssdlastrct__define.pro)


SDSSDLASTRCT__DEFINE[2]

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

 PURPOSE:
    Structure for SDSS DLA searches

 CALLING SEQUENCE:

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   27-Feb-2004 Written by SHF
   14-Oct-2004 Modified by JXP

(See SDSS/LLS/sdssllsstrct__define.pro)


SDSSMGIISTRCT__DEFINE

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

 PURPOSE:
    Structure for MgII search

 CALLING SEQUENCE:

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   27-Feb-2004 Written by GEP

(See SDSS/MgII/sdssmgiistrct__define.pro)


SDSS_CHKBAL[1]

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

 PURPOSE:
   GUI used to check for (and designate) BAL quasars from SDSS

 CALLING SEQUENCE:
   sdss_chkbal, qalfil, IQSO=, XSIZE=, YSIZE=, /RECHK

 INPUTS:
  qalfil  -- Name of FITS file containing the QAL structure

 RETURNS:

 OUTPUTS:
  qalfil --  With the BAL info modified accordingly

 OPTIONAL KEYWORDS:
   IQSO  -- Number of the first QSO to start with [default: 0L]
  /RECHK -- Only plot thos QSOs identified as BAL previously
   MATCHFIL -- to skip QSOs that have already been checked 
               (see sdss_balupdate.pro)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   sdss_chkbal, 'DR2_QSO/sdss_DR2_QAL.fits', MATCHFIL='DR2_QSO/matched.fits'

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   05-Feb-2004 Written by JXP
   07-Jun-2004 Revised by SHF

(See SDSS/DLA/sdss_chkpdla.pro)


SDSS_CHKBAL[2]

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

 PURPOSE:
  used to select the QSOs that have already been checked 
  for BALs (in 'oldqalfil') and update their values (in 'newqalfil').  
  The 'matchfil' is then fed to sdss_chkbal and those 
  QSOs are skipped.
 
 CALLING SEQUENCE:
  sdss_balupdate, oldqalfil, newqalfil, matchfil, SDSSPATH=sdsspath

 INPUTS:
  oldqalfil  -- Name of FITS file containing the previous QAL structure
  newqalfil  -- Name of FITS file containing the current QAL structure
  
 RETURNS:

 OUTPUTS:
  newqalfil --  With the 'flg_bal' info modified accordingly
  matchfil  --  Name of FITS file containing array of 'newqsofil'
                indices that matched

 OPTIONAL KEYWORDS:
  SDSSPATH --  maybe already set in .cshrc file, but just in case- a
               path to the data

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   sdss_balupdate, 'DR1_QSO/sdss_DR1_QAL.fits', $
      'DR2_QSO/sdss_DR2_QAL.fits', ['DR2_QSO/matched.fits']

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   07-Jun-2004 Written by SHF
   23-Nov-2004 Update by JXP

(See SDSS/General/sdss_balupdate.pro)


SDSS_CHKBAL[2]

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

 PURPOSE:
   GUI used to check for (and designate) BAL quasars from SDSS

 CALLING SEQUENCE:
   sdss_chkbal, qalfil, IQSO=, XSIZE=, YSIZE=, /RECHK

 INPUTS:
  qalfil  -- Name of FITS file containing the QAL structure

 RETURNS:

 OUTPUTS:
  qalfil --  With the BAL info modified accordingly

 OPTIONAL KEYWORDS:
   IQSO  -- Number of the first QSO to start with [default: 0L]
  /RECHK -- Only plot thos QSOs identified as BAL previously
   MATCHFIL -- to skip QSOs that have already been checked 
               (see sdss_balupdate.pro)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   sdss_chkbal, 'DR2_QSO/sdss_DR2_QAL.fits', MATCHFIL='DR2_QSO/matched.fits'

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   05-Feb-2004 Written by JXP
   07-Jun-2004 Revised by SHF

(See SDSS/General/sdss_chkbal.pro)


SDSS_CHKCIV

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 sdss_chkciv
    Version 1.0

 PURPOSE:
   Visually check SDSS CIV absorption detected with sdss_fndciv

 CALLING SEQUENCE:
   
   sdss_chkciv, 

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   XSIZE      - Size of gui in screen x-pixels (default = 1000)
   YSIZE      - Size of gui in screen y-pixels (default = 600)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   sdss_chkciv, x, maskid, expsr


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   19-Dec-2003 Written by GEP/SHF

(See SDSS/CIV/sdss_chkciv.pro)


SDSS_CHKDLA

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

 PURPOSE:
   Launches a GUI that is used to check the DLA candidates 
  (and metal-line systems) identified by the automated algorithm

 CALLING SEQUENCE:
 sdss_chkdla, qalfil, dlafil, con_dir, IQSO=, /FNEW, XSIZE=, YSIZE=

 INPUTS:
 qalfil  -- FITS file containing the QAL structure
 dlafil  -- FITS file containing the SDSS DLA structure (may be old) 
 con_dir -- Path to the directory containting the continuum files

 RETURNS:

 OUTPUTS:
 dlafil -- FITS file containing the SDSS DLA structure

 OPTIONAL KEYWORDS:
  /FNEW -- Start with first quasar that hasnt been checked
  OBJNM= --
  XSIZE -- Size of gui in screen x-pixels [default: screen-200]
  YSIZE -- Size of gui in screen y-pixels [default: screen-200]

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   sdss_chkdla, 'sdss_dr3_QAL.fits',  'dr3_qal_chkd.fits', 'ABSLIN/',
   /FNEW


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   05-Oct-2003 Written by JXP

(See SDSS/DLA/sdss_chkdla.pro)


SDSS_CHKLLS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 sdss_chklls
    Version 1.0

 PURPOSE:
   Visually check SDSS LLS candidates

 CALLING SEQUENCE:
   
   sdss_chklls, x, maskid, expsr, XSIZE=, YSIZE=

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   XSIZE      - Size of gui in screen x-pixels (default = 1000)
   YSIZE      - Size of gui in screen y-pixels (default = 600)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   sdss_chklls, x, maskid, expsr


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   19-Dec-2005 Written by JXP/JMO

(See SDSS/LLS/sdss_chklls.pro)


SDSS_CHKLYA

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

 PURPOSE:
   GUI used to check for missing DLA

 CALLING SEQUENCE:
   sdss_chklya, qalfil, IQSO=, XSIZE=, YSIZE=, /RECHK, ZMIN=

 INPUTS:
  qalfil  -- Name of FITS file containing the QAL structure

 RETURNS:

 OUTPUTS:
  qalfil --  With the BAL info modified accordingly

 OPTIONAL KEYWORDS:
   ZMIN= -- Minimum redshift [default: 2.]
   IQSO  -- Number of the first QSO to start with [default: 0L]
  /RECHK -- Only plot thos QSOs identified as BAL previously
   MATCHFIL -- to skip QSOs that have already been checked 
               (see sdss_balupdate.pro)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   sdss_chklya, '/DR2_QSO/sdss_DR2_QAL.fits', MATCHFIL='DR2_QSO/matched.fits'

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   05-Feb-2004 Written by JXP
   07-Jun-2004 Revised by SHF

(See SDSS/DLA/sdss_chklya.pro)


SDSS_CHKMGII

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 sdss_chkmgii
    Version 1.0

 PURPOSE:
   Visually check SDSS Mg II absorption with a GUI

 CALLING SEQUENCE:
   
   sdss_chkmgii, x, maskid, expsr, XSIZE=, YSIZE=

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   XSIZE      - Size of gui in screen x-pixels (default = 1000)
   YSIZE      - Size of gui in screen y-pixels (default = 600)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   sdss_chkmgii, x, maskid, expsr


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   19-Dec-2003 Written by GEP/SHF

(See SDSS/MgII/sdss_chkmgii.pro)


SDSS_CHKSIEW

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 sdss_chksiew
    Version 1.0

 PURPOSE:
   Visually check SDSS CIV absorption detected with sdss_fndciv

 CALLING SEQUENCE:
   
   sdss_chksiew, 

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   XSIZE      - Size of gui in screen x-pixels (default = 1000)
   YSIZE      - Size of gui in screen y-pixels (default = 600)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   sdss_chksiew, x, maskid, expsr


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   20-Jun-2007 Written by JXP

(See SDSS/DLA/sdss_chksiew.pro)


SDSS_CIVSEARCH

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 sdss_civsearch   
    Version 1.0

 PURPOSE:
    Given a list of SDSS quasars, search these spectra for CIV
    absorbers and output a structure of detections and EWs

 CALLING SEQUENCE:
  sdss_civsearch, filename, outfil, SDSSSUM=sdsssum, ZMIN=zmin, $
                      RMAX=rmax,LZ=lz, DATR=datr, INIFIL=inifil

 INPUTS:
   filename - File containing a (long) list of SDSS quasar data files
              (1d spectra, .fit)
   SDSSSUM= - Summary file of QSO properties [required]
   INIFIL=  - File containing the CIV structure which was created
              previously. These will not be redone.

 RETURNS:
   

 OUTPUTS:
  outfil  - Name for outputted structure of CIV absorbers

 OPTIONAL KEYWORDS:
  ZMIN=  -- Minimum redshift of the CIV absorber [default: 1.45]
  DATR=  -- Additional path to the data

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 sdss_civsearch, 'Lists/dr3_abs.lst', 'sdss_DR3_CIV.fits',
  SDSSSUM='dr3_qso.fits', DATR='DR3_QSO/'

 sdss_civsearch, '../Lists/dr7_qso.lst', 'sdss_DR7_CIV.fits',
  SDSSSUM='../dr7_qso.fits', DATR='DR7_QSO/'

PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   07-May-2002 Written by JXP

(See SDSS/CIV/sdss_civsearch.pro)


SDSS_COMPARE

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

 PURPOSE:
  Given the structure containing DLA info, combine the values to
 create a final quality value.
   
 CALLING SEQUENCE:
   sdss_compare, strct, FSTRCT=

 INPUTS:
  strct -- QALstrct with the relevant info

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:
  FSTRCT=  -- Struct containing the combined values [required?]

 COMMENTS:

 EXAMPLES:
   sdss_chkbal, 'sdss_DR1_QAL.fits'

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   2003 Written by SHF

(See SDSS/General/sdss_compare.pro)


SDSS_COMPTST

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

 PURPOSE:
  Monte-carlo routine to check the completeness of our automoated
  algorithm
   
 CALLING SEQUENCE:
   sdss_comptst, fil, outfil, NTRIAL=, /CHK, /DEBUG

 INPUTS:
  fil -- SDSS spectrum (without a DLA present)

 RETURNS:

 OUTPUTS:
  outfil -- FITS file with the qalstrct

 OPTIONAL KEYWORDS:
  NTRIAL=  -- Number of simulations to run [default: 1000L]
  /CHK  -- Plot the spectrum
  /DEBUG -- 

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   sdss_comptst, '/data5/SDSS/DR1_QSO/spectro/1d/0463/0463-51312-122.fit',
    'monte_snr10.fits', NTRIAL=10000L

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   2003 Written by SHF

(See SDSS/General/sdss_comptst.pro)


SDSS_DLA

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

 PURPOSE:
  Main routine to search for DLA in SDSS spectra (or ESI).  This
  is the key driver of the N(HI) search for DLA.
   
 CALLING SEQUENCE:
  sdss_dla, n2=, ESI=, SDSS=, WIN_REST=, /PFLUX, /SMOOTH, /NORM, 
     SIGV=, STRCT=, ZEM=

 INPUTS:

 RETURNS:

 OUTPUTS:
  STRCT=  -- QAL structure created by this program

 OPTIONAL KEYWORDS:
  n2= -- Sigma value above which a pix is bad in the DLA profile [default: 5]
  SIGV= -- Sigma value to add to flux of all pixels
  SDSS= -- Name of SDSS file to examine
  /PFLUX  -- Plot the spectrum
  /SMOOTH -- Smooth the spectrum by 5 pixels
  /NORM   -- The flux is normalized
  WIN_REST -- Width of DLA window (angstroms)  [default: 6]

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   sdss_comptst, '/data5/SDSS/DR1_QSO/spectro/1d/0463/0463-51312-122.fit',
    'monte_snr10.fits', NTRIAL=10000L

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   2003 Written by SHF
   Aug2006 -- Modified for PDLA

(See SDSS/DLA/sdss_dla.pro)


SDSS_DLADX[1]

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

 PURPOSE:
    Calculate the cosmological path length dX for a given
  cosmology for the sample of quasars searched for DLA in the SDSS.
  For now, the code defaults to point at the dX vector calcualted
  when we did the DR1 search (PH04).
 
  This code can also return dz, the redshift path length.

 CALLING SEQUENCE:
   dX = sdss_dladx(zmin, zmax, GZFIL=, XZFIL=)

 INPUTS:
   zmin -- Min redshift of the bin
   zmax -- Max redshift of the bin
  [vprox] -- Proximity velocity (to avoid in calculation)
  GZSTR= -- Structure summarizing g(z) for the quasars
  GZFIL= -- Filename of the g(z) file for the quasars
  XZFIL= -- Filename of the dX calculation as a function of z.

 RETURNS:
   dX  -- The cosmological pathlength 

 OUTPUTS:

 OPTIONAL KEYWORDS:
  BUFF=  -- Require DLA occur BUFF km/s to the red of z1

 OPTIONAL OUTPUTS:
  dz=  -- Redshift pathlength instead of dX

 COMMENTS:
   The program keys off the number of elements in v1

 EXAMPLES:
   writecol, 'arrays.dat', array1, array2


 PROCEDURES CALLED:

 REVISION HISTORY:
   15-March-2004 Written by JXP

(See SDSS/DLA/sdss_dladx.pro)


SDSS_DLADX[2]

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

 PURPOSE:
    Calculate the cosmological path length dX for a given
  cosmology for the sample of quasars searched for DLA in the SDSS.
  For now, the code defaults to point at the dX vector calcualted
  when we did the DR1 search (PH04).
 
  This code can also return dz, the redshift path length.

 CALLING SEQUENCE:
   dX = sdss_dladx(zmin, zmax, GZFIL=, XZFIL=)

 INPUTS:
   zmin -- Min redshift of the bin
   zmax -- Max redshift of the bin
  [vprox] -- Proximity velocity (to avoid in calculation)
  GZSTR= -- Structure summarizing g(z) for the quasars
  GZFIL= -- Filename of the g(z) file for the quasars
  XZFIL= -- Filename of the dX calculation as a function of z.

 RETURNS:
   dX  -- The cosmological pathlength 

 OUTPUTS:

 OPTIONAL KEYWORDS:
  BUFF=  -- Require DLA occur BUFF km/s to the red of z1

 OPTIONAL OUTPUTS:
  dz=  -- Redshift pathlength instead of dX

 COMMENTS:
   The program keys off the number of elements in v1

 EXAMPLES:
   writecol, 'arrays.dat', array1, array2


 PROCEDURES CALLED:

 REVISION HISTORY:
   15-March-2004 Written by JXP

(See SDSS/LLS/sdss_sllsdx.pro)


SDSS_DLASTAT

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

 PURPOSE:
    Given a DLA struct and gz list, determine the indices of those
    DLA satisfying the statistical sample.

 CALLING SEQUENCE:
   sdss_dlastat

 INPUTS:
  dlastr -- Structure of SDSS DLAs
  gzstr  -- Structure containing g(z) info
  [vprox] -- Proximity velocity (to avoid in calculation)

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /ALL   -- Return all DLA and candidates
  BUFF=  -- Require DLA occur BUFF km/s to the red of z1
  VMAX=  -- Require the DLA occur at less than VMAX km/s of z_em
            (for PDLA searches)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   Nov-2004 Written by JXP

(See SDSS/DLA/sdss_dlastat.pro)


SDSS_DLASTRCT

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

 PURPOSE:
    Produces a DLA structure of SDSS DLAs

 CALLING SEQUENCE:
  sdss_dlastrct, dla

 INPUTS:
  GZSTR= -- Structure summarizing g(z) for the quasars
  GZFIL= -- Filename of the g(z) file for the quasars

 RETURNS:
  dla -- DLA structure

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /ACAND  -- Return all absorbers (not just DLA)
  /ALL   -- Return all statistical DLA from all DRs
  vprox= -- Proximity velocity (to avoid in calculation)
  BUFF=  -- Require DLA occur BUFF km/s to the red of z1
  /DR3   -- Return DLA from DR3 (but not DR2 or DR1 unless indicated)
  /DR5   -- Return DLA from DR4,DR5 (but not early data releases
            unless indicated)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   sdss_uniqdla, dr1, dr2, uni

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   11-Nov-2004 Written by JXP

(See SDSS/DLA/sdss_dlastrct.pro)


SDSS_DLA_2

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

 PURPOSE:
  Main routine to search for DLA in SDSS spectra (or ESI).  This
  version is used primarily with the Monte-Carlo simulations.
   
 CALLING SEQUENCE:
  sdss_dla_2, flux, wave, sig, i, zabs, n1=, n2=, ESI=, $
               SDSS=, WIN_REST=, /PFLUX, /SMOOTH, /NORM, SIGV=, $
               STRCT=, ZEM=

 INPUTS:
  flux -- QSO flux array
  wave -- QSO wavelength array
  sig  -- QSO error array
  i    -- INDEX of QALstrct

 RETURNS:

 OUTPUTS:
  outfil -- FITS file with the qalstrct

 OPTIONAL KEYWORDS:
  n1= -- Sigma value below which a pix is good [default: code determines]
  n2= -- Sigma value above which a pix is bad in the DLA profile [default: 5]
  SIGV= -- Sigma value to add to flux of all pixels
  SDSS= -- Name of SDSS file to examine
  /PFLUX  -- Plot the spectrum
  WIN_REST -- Width of DLA window (angstroms)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   sdss_comptst, '/data5/SDSS/DR1_QSO/spectro/1d/0463/0463-51312-122.fit',
    'monte_snr10.fits', NTRIAL=10000L

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   2003 Written by SHF

(See SDSS/DLA/sdss_dla_2.pro)


SDSS_DR1_GOZ

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

 PURPOSE:
  g(z) prescription for DR1.  OBSOLETE

 CALLING SEQUENCE:

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   27-Feb-2004 Written by SHF

(See SDSS/DLA/sdss_dr1_goz.pro)


SDSS_EWCIV

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

 PURPOSE:
  Measures the EW of the CIV lines (rest values) in the SDSS

 CALLING SEQUENCE:
  sdss_ewciv, wave, flux, sig, strct, ZABS=

 INPUTS:
  wave  -- Wavelength array
  flux  -- Flux array (normalized)
  sig   -- Sigma array

 RETURNS:
  strct -- MgII structure with MgII EW filled up

 OUTPUTS:

 OPTIONAL KEYWORDS:
  ZABS=  -- Absorption redshift (required)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   27-Feb-2004 Written by JXP

(See SDSS/CIV/sdss_ewciv.pro)


SDSS_EWMGII

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

 PURPOSE:
  Measures the EW of the MgII lines (rest values) in the SDSS

 CALLING SEQUENCE:
  sdss_ewmgii, wave, flux, sig, strct, ZABS=

 INPUTS:
  wave  -- Wavelength array
  flux  -- Flux array (normalized)
  sig   -- Sigma array

 RETURNS:
  strct -- MgII structure with MgII EW filled up

 OUTPUTS:

 OPTIONAL KEYWORDS:
  ZABS=  -- Absorption redshift (required)
  /TI2   -- Also measure TiII if it is present
  /ONLYTI2   -- Only measure TiII if it is present

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   27-Feb-2004 Written by JXP

(See SDSS/MgII/sdss_ewmgii.pro)


SDSS_EWNA1

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

 PURPOSE:
  Measures the EW of the MgII lines (rest values) in the SDSS

 CALLING SEQUENCE:
  sdss_ewna1, wave, flux, sig, strct, ZABS=

 INPUTS:
  wave  -- Wavelength array
  flux  -- Flux array (normalized)
  sig   -- Sigma array

 RETURNS:
  strct -- MgII structure with MgII EW filled up

 OUTPUTS:

 OPTIONAL KEYWORDS:
  ZABS=  -- Absorption redshift (required)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   27-Feb-2004 Written by JXP

(See SDSS/NaI/sdss_ewna1.pro)


SDSS_FILTER_NU

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

 PURPOSE:

 CALLING SEQUENCE:


 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   2005  Written by Joe Hennawi UCB 

(See SDSS/Photo/sdss_filter_nu.pro)


SDSS_FINCHK

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

 PURPOSE:
   GUI used to make a final check of metal-strong candidates

 CALLING SEQUENCE:
  sdss_finchk, dlafil, con_dir, MAG=mag, XSIZE=, YSIZE=, 
                 OUTFIL=outfil, RA=ra

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  MAG=  -- Largest magnitude to include in the check
  RA=   -- 2-element array giving constraint on RA

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   sdss_finchk, 'dla_dr1.fits', 'ABSLIN/'


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   05-Oct-2003 Written by JXP

(See SDSS/DLA/sdss_finchk.pro)


SDSS_FIXCIV

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 sdss_fixciv
    Version 1.0

 PURPOSE:
   Visually check SDSS CIV absorption detected with sdss_fndciv
   Edit EW and continuum as desired

 CALLING SEQUENCE:
   
   sdss_fixciv, 

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   XSIZE      - Size of gui in screen x-pixels (default = 1000)
   YSIZE      - Size of gui in screen y-pixels (default = 600)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   sdss_fixciv 


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   1-Dec-2008 Written by JXP

(See SDSS/CIV/sdss_fixciv.pro)


SDSS_FIXMGII

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 sdss_fixmgii
    Version 1.0

 PURPOSE:
   Visually check SDSS CIV absorption detected with sdss_fndciv
   Edit EW and continuum as desired

 CALLING SEQUENCE:
   
   sdss_fixmgii, 

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   XSIZE      - Size of gui in screen x-pixels (default = 1000)
   YSIZE      - Size of gui in screen y-pixels (default = 600)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   sdss_fixmgii 


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   1-Dec-2008 Written by JXP

(See SDSS/MgII/sdss_fixmgii.pro)


SDSS_FIX_REP

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

 PURPOSE:
   Remove repeat entries from the 'checked' file of QAL.  Defaulted
  to deal with DR2 using dr2_bd.list

 CALLING SEQUENCE:
  sdss_fix_rep, fil=, bdlst=, new=new

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  FIL= -- File name of file including duplicates
  BDLST= -- List of indices which are to be removed
  NEW=   -- Name of new DR2_chkd file [default: 'DR2_chkd.fits']

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   Apr-2004 Written by SHF

(See SDSS/General/sdss_fix_rep.pro)


SDSS_FNDCIV

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 sdss_fndciv   
    Version 1.0

 PURPOSE:
    Brute force algorithm which examines the absorption lines
    detectedin a SDSS spectrum and searches for matches with CIV

 CALLING SEQUENCE:
  sdss_fndciv, abswav

 INPUTS:
   abswav - Array of observed wavelengths of detected absorption lines

 RETURNS:
   
 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   07-May-2002 Written by JXP

(See SDSS/CIV/sdss_fndciv.pro)


SDSS_FNDLA

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

 PURPOSE:
    Calculates f(N,X) for a set of DLA

 CALLING SEQUENCE:

 INPUTS:
  GZSTR= -- Structure summarizing g(z) for the quasars
  GZFIL= -- Filename of the g(z) file for the quasars

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /DR3  -- Restrict to DR3
  /NODBL -- Do not solve for double power-law
  CL=   -- Confidence limits for error calculations
  ZBIN= -- redshift interval [default: 2.2 to 5.5]
  /SALL  -- Use all of the DR releases
  BINS  -- NHI bins

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   20-Aug-2006 Written by JXP  (based on fig_fndla)

(See SDSS/DLA/sdss_fndla.pro)


SDSS_FNDLLS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 sdss_fndlls
    Version 1.0

 PURPOSE:
    Searches SDSS QSO spectra for LLS absorption.

 CALLING SEQUENCE:

 INPUTS:

 RETURNS:
   
 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   2005 Written by JO

(See SDSS/LLS/sdss_findlls.pro)


SDSS_FNDQSO

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

 PURPOSE:
  Return the indices of the QAL structure corresponding to fiber,id

 CALLING SEQUENCE:
 indx = sdss_fndqso(qalstr, platfib, /ALL)

 INPUTS:
   fibid -- 2 element vector of plate,fiberid

 RETURNS:
   indices in qalstr matching indx

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /ALL -- Return all QSO's with the same ra,dec and redshift

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
  indx = sdss_fndqso(qalstr, [424,124], /all)

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   13-Oct-2004 Written by JXP

(See SDSS/General/sdss_fndqso.pro)


SDSS_GETQMAG

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

 PURPOSE:
  Return the magnitude of a QSO with plate+fiber

 CALLING SEQUENCE:
 mag = sdss_getqmag(qalstr, platfib, /ALL)

 INPUTS:

 RETURNS:
  mag -- Array of u-z magnitudes for SDSS QSO

 OUTPUTS:

 OPTIONAL KEYWORDS:
 QSOFIL=  -- File containing the QSO summary FITS table [default:
             dr5_qso.fits]

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
  mag = sdss_getqmag([424,124])

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   13-Oct-2004 Written by JXP

(See SDSS/General/sdss_getqmag.pro)


SDSS_GOZ

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

 PURPOSE:
    Determines the g(z) path for each QSO in the inputted list

 CALLING SEQUENCE:
   sdss_goz, qalfil, outfil

 INPUTS:
  qalfil -- Filename of QSO structure for g(z) calculation
  XZFIL= -- Filename of the dX calculation as a function of z.

 RETURNS:

 OUTPUTS:
  OUTFIL= -- Filename for g(z) FITS file

 OPTIONAL KEYWORDS:
  ORIG_ZEM=  -- Use the original redshifs from SDSS (in this file)
  SNRLMT=    -- SNR limit for DLA search [default: 4]

 OPTIONAL OUTPUTS:
  /CHK  -- Plot g(z) to the screen

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   27-Feb-2004 Written by SHF
   14-Oct-2004 Modified by JXP

(See SDSS/DLA/sdss_goz.pro)


SDSS_HIZMEDIAN

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 sdss_hizmedian
    Version 1.0

 PURPOSE:
    Calculates a median QSO spectrum for a set of high z SDSS QSOs

 CALLING SEQUENCE:
  sdss_hizmedian, DR3_fits, new_template, szstart=, szend=

 INPUTS:
 DR3_fits -- Filename of qso file

 RETURNS:
   
 OUTPUTS:
  new_template -- Filename of median spectrum (FITS file)

 OPTIONAL KEYWORDS:
  DR3PATH -- Path to the DR3 data
  szstart  -- Starting redshift for the stack
  szend    -- Ending redshift for the stack

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   07-May-2002 Written by JO

(See SDSS/LLS/sdss_hizmedian.pro)


SDSS_HIZTEMPLATE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 sdss_hiztemplate
    Version 1.0

 PURPOSE:
    Calculates a template QSO spectrum for a set of high z SDSS QSOs
   I am not sure how this is different than sdss_hizmedian, but I
   suspect this is the better routine.

 CALLING SEQUENCE:
  sdss_hizmedian, DR3_fits, new_template, szstart=, szend=

 INPUTS:
 DR3_fits -- Filename of qso file

 RETURNS:
   
 OUTPUTS:
  new_template -- Filename of median spectrum (FITS file)

 OPTIONAL KEYWORDS:
  DR3PATH -- Path to the DR3 data
  szstart  -- Starting redshift for the stack
  szend    -- Ending redshift for the stack

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   07-May-2002 Written by JO

(See SDSS/LLS/sdss_hiztemplate.pro)


SDSS_LLSDX

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

 PURPOSE:
    Calculate the cosmological path length dX for a given
  cosmology for the sample of quasars searched for LLS in the SDSS.
  This code can also return dz, the redshift path length.

 CALLING SEQUENCE:
   dX = sdss_llsdx(zmin, zmax, GZFIL=, XZFIL=)

 INPUTS:
   zmin -- Min redshift of the bin
   zmax -- Max redshift of the bin
  [vprox] -- Proximity velocity (to avoid in calculation)
  GZSTR= -- Structure summarizing g(z) for the quasars
  GZFIL= -- Filename of the g(z) file for the quasars
  XZFIL= -- Filename of the dX calculation as a function of z.

 RETURNS:
   dX  -- The cosmological pathlength 

 OUTPUTS:

 OPTIONAL KEYWORDS:
  BUFF=  -- Require DLA occur BUFF km/s to the red of z1

 OPTIONAL OUTPUTS:
  dz=  -- Redshift pathlength instead of dX

 COMMENTS:
   The program keys off the number of elements in v1

 EXAMPLES:
   writecol, 'arrays.dat', array1, array2


 PROCEDURES CALLED:

 REVISION HISTORY:
   Feb-2009 Written by JXP

(See SDSS/LLS/sdss_llsdx.pro)


SDSS_LLSFIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 sdss_llsfit
   Version 1.11

 PURPOSE:
    GUI used to fit DLA profiles interactively.  The user determines
    the continuum at the same time.

 CALLING SEQUENCE:
  sdss_llsfit, flux_fil, [err_fil], XSIZE=, YSIZE=, TITLE=, 
               WAVE=, /BLOCK, FWHM=, INIFIT=, INFLG=

 INPUTS:
   flux_fil   - FITS file (or array) containing flux
   [err_fil]  - FITS error array

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   xsize      - Draw window xsize (pixels)
   ysize      - Draw window ysize (pixels)
   wave       - wavelength array 
   FWHM=      - Resoltuion (FWHM in pixels)  [default: 2]
   INFLG=     - Usual flag for reading the FITS file (see x_readspec)
   INIFIT=    - IDL file containing a saved version of the fit

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   sdss_llsfit, 'spec.fits'


 PROCEDURES/FUNCTIONS CALLED:
  XGETX_PLT
  XGETY_PLT
  XGETXPIX_PLT
  XGETYPIX_PLT

 REVISION HISTORY:
   17-Oct-2002 Written by JXP

(See SDSS/LLS/sdss_llsfit.pro)


SDSS_LLSFN

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

 PURPOSE:
    Given a LLS struct and gz list, calculate f(N)

 CALLING SEQUENCE:
   sdss_llsfn

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   Nov-2004 Written by JXP

(See SDSS/LLS/sdss_llsfn.pro)


SDSS_LLSGOZ

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

 PURPOSE:
    Determines the g(z) path for a LLS search

 CALLING SEQUENCE:
   sdss_llsgoz

 INPUTS:
  qalfil -- Filename of QSO structure for g(z) calculation

 RETURNS:

 OUTPUTS:
  OUTFIL= -- Filename for g(z) FITS file

 OPTIONAL KEYWORDS:
  ORIG_ZEM=  -- Use the original redshifs from SDSS (in this file)
  SNRLMT=    -- SNR limit for DLA search [default: 2]

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
  sdss_llsgoz, '../dr5_qso.fits', 'dr5_lls_goz_sn2.fits'

 PROCEDURES CALLED:

 REVISION HISTORY:
   27-Feb-2004 Written by SHF
   14-Oct-2004 Modified by JXP

(See SDSS/LLS/sdss_llsgoz.pro)


SDSS_LLSINIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 sdss_llsinit
    Version 1.0

 PURPOSE:
    Produces a LLS structure of SDSS LLS 

 CALLING SEQUENCE:
  sdss_llsstrct, lls

 INPUTS:

 RETURNS:
  lls -- LLS structure

 OUTPUTS:

 OPTIONAL KEYWORDS:
  QSOS=  -- Structure of statistical QSOs in the sample

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   16-Feb-2010 Written by JXP

(See SDSS/LLS/sdss_llsinit.pro)


SDSS_LLSLOZX

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

 PURPOSE:
    Calculate dn/dz or dn/dX for a set of redshift bins

 CALLING SEQUENCE:
   sdss_llslozx

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   Jul-2009 Written by JXP

(See SDSS/LLS/sdss_llslozx.pro)


SDSS_LLSNCHK

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

 PURPOSE:
    Launches x_specplot to fiddle (and set) the redshift of a LLS in
    SDSS given the LLS structure.

 CALLING SEQUENCE:
   sdss_llszchk

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   30-May-2007 Modified by JXP

(See SDSS/LLS/sdss_llsnchk.pro)


SDSS_LLSSTRCT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 sdss_llsstrct
    Version 1.0

 PURPOSE:
    Produces a LLS structure of SDSS LLS 

 CALLING SEQUENCE:
  sdss_llsstrct, lls

 INPUTS:

 RETURNS:
  lls -- LLS structure

 OUTPUTS:

 OPTIONAL KEYWORDS:
  QSOS=  -- Structure of statistical QSOs in the sample

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   16-Feb-2010 Written by JXP

(See SDSS/LLS/sdss_llsstrct.pro)


SDSS_LLSVIEW

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

 PURPOSE:
   GUI used to check for (and designate) BAL quasars from SDSS

 CALLING SEQUENCE:
   sdss_llsview, qalfil, IQSO=, XSIZE=, YSIZE=, /RECHK

 INPUTS:
  qalfil  -- Name of FITS file containing the QAL structure

 RETURNS:

 OUTPUTS:
  qalfil --  With the BAL info modified accordingly

 OPTIONAL KEYWORDS:
   IQSO  -- Number of the first QSO to start with [default: 0L]
  /RECHK -- Only plot thos QSOs identified as BAL previously
   MATCHFIL -- to skip QSOs that have already been checked 
               (see sdss_balupdate.pro)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   sdss_llsview, 'DR2_QSO/sdss_DR2_QAL.fits', MATCHFIL='DR2_QSO/matched.fits'

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   05-Feb-2004 Written by JXP
   07-Jun-2004 Revised by SHF

(See SDSS/LLS/sdss_llsview.pro)


SDSS_LLSZCHK

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

 PURPOSE:
    Launches x_specplot to fiddle (and set) the redshift of a LLS in
    SDSS given the LLS structure.

 CALLING SEQUENCE:
   sdss_llszchk

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   30-May-2007 Modified by JXP

(See SDSS/LLS/sdss_llszchk.pro)


SDSS_M912

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

 PURPOSE:
   Compute the apparent magnitude one would measure at the 
   Lyman limit in the observed frame at lambda = (1 + z)912

 CALLING SEQUENCE:
   m_912 = m912(z,m,filter,[ logLv = , ALPHA_EUV = , OMEGA0 = , LAMBDA0 = $
                          , W = , LIT_H = ])
 INPUTS:
   z         -  Redshift of the quasar
   m         -  Apparent magnitude
   filter    -  filter name SDSS [u,g,r,i,z,B,B_J]

 OPTIONAL KEYWORDS:
   logLv      - Log_10 of the specific luminosity at the Lyman edge (ergs/s/Hz)
   ALPHA_EUV  - Spectral slope in the extreme UV. Default is 1.57   
                (Tefler et al 2002). A power law v^{-ALPHA_EUV} 
                is pasted onto the quasar spectrum at 1285 A. 
   OMEGA0     - Matter density. Default is 0.27
   LAMBDA0    - Dark energy density. Default is 0.73
   W          - Equation of state parameter. Default is w = -1.0
   LIT_H      - Hubble h parameter. Required if logLv is specified

 OUTPUTS:
   m_912       - Apparent magnitude one would measure at the Lyman 
                 limit in the observed frame at lambda = (1 + z)912

 COMMENTS:
   The code will return an error if one tries to use a filter with 
   lambda_min < (1 + z)*1216. The lyman alpha forest will reduce the 
   observed apparent magnitude, and the mean flux blueward of 1216 
   is not reproduced correctly in the  quasar template used here. 
 
 EXAMPLE:
     Compute m_912 for a quasar at z=2.43 which has g=20.5
     m_912=m912(2.43,20.5,1,logLv=logLv)
     print,m_912
       22.199551
     print,loglv
       29.812608

 PROCEDURES CALLED:
   dofa()
   sdss_filter_nu()
   qso_template_nu()
   obs_int_nu()
   
 REVISION HISTORY:
   17-Sep-2005  Written by Joe Hennawi UCB 

(See SDSS/m912/sdss_m912.pro)


SDSS_METALS

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

 PURPOSE:
   Identify metal-line systems given a set of absorption lines

 CALLING SEQUENCE:
  sdss_metals, abswave, zem, WAVE=, FLUX=, QSTRCT=

 INPUTS:
  abswave -- Absorption line array
  zem     -- Emission redshift of the QSO

 RETURNS:

 OUTPUTS:
  QSTRCT= -- Structure containing the key output of this routine

 OPTIONAL KEYWORDS:
  WAVE= -- Wavelength array for plotting (not required)
  FLUX= -- Flux array for plutting (not required)
  

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   Apr-2004 Written by SHF

(See SDSS/General/sdss_metals.pro)


SDSS_MGII

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 sdss_mgii
    Version 1.0

 PURPOSE:
    Brute force algorithm which examines the absorption lines
    detectedin a SDSS spectrum and searches for matches with MgII

 CALLING SEQUENCE:
  sdss_fndciv, abswav

 INPUTS:
   abswav - Array of observed wavelengths of detected absorption lines

 RETURNS:
   
 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   07-May-2002 Written by JXP

(See SDSS/MgII/sdss_mgii.pro)


SDSS_MGIISEARCH

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 sdss_mgiisearch   
    Version 1.0

 PURPOSE:
    Given a list of SDSS quasars, search these spectra for MgII
    absorbers and output a structure of detections and EWs

 CALLING SEQUENCE:

 INPUTS:
   filename - File containing a (long) list of SDSS quasar data files
              (1d spectra, .fit)
   SDSSSUM= - Summary file of QSO properties [required]
   INIFIL=  - File containing the MgII structure which was created
              previously. These will not be redone.

 RETURNS:

 OUTPUTS:
  outfil  - Name for outputted structure of MgII absorbers

 OPTIONAL KEYWORDS:
 /LZ -- Restrict to low redshift (z = 0.45)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
  sdss_mgiisearch, 'Lists/dr6_qso.list', 'DR6_QSO/', 'dr6_qso.fits', 'mgii_search.fits'

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   07-May-2002 Written by JXP

(See SDSS/MgII/sdss_mgiisearch.pro)


SDSS_MKLLSTMPL

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

 PURPOSE:
    Routine to make a series of LLS absorption templates by only
    varying NHI

 CALLING SEQUENCE:

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   27-Feb-2004 Written by JXP

(See SDSS/LLS/sdss_mkllstmpl.pro)


SDSS_NA1SEARCH

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 sdss_na1search   
    Version 1.0

 PURPOSE:
    Given an array of strings, return an array of unique values +
    number

 CALLING SEQUENCE:
   
 uniq = x_chkfil(strings, COUNT=count)

 INPUTS:
   strings - Array of strings

 RETURNS:
   uniq  - Array of unique members

 OUTPUTS:

 OPTIONAL KEYWORDS:
   sort - Sort the output

 OPTIONAL OUTPUTS:
  COUNT - number of unique strings

 COMMENTS:

 EXAMPLES:
   flg = x_chkfil( lbls, count=count)

 sdss_na1search, 'Lists/dr3_abs.lst', 'sdss_DR3_NaI.fits',
  SDSSSUM='dr3_qso.fits', DATR='DR3_QSO/'

PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   07-May-2002 Written by JXP

(See SDSS/NaI/sdss_na1search.pro)


SDSS_NEWZEM

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

 PURPOSE:
  Returns the new QSO redshift if a new one has been calculated.  The
  redshifts generally come from the Shin et al. 2007 prescription.

 CALLING SEQUENCE:
   zem = sdss_newzem(zmin, zmax, GZFIL=, XZFIL=)

 INPUTS:
   plate -- Plate
   fiber -- Fiber

 RETURNS:
   zem -- New QSO emission redshift

 OUTPUTS:

 OPTIONAL KEYWORDS:
 /FMATCH -- Demand that there is a match

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   10-Nov-2005 Written by JXP

(See SDSS/General/sdss_newzem.pro)


SDSS_OBJINF

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

 PURPOSE:
  Routine to quickly parse the SDSS QSO database.    

 CALLING SEQUENCE:
 sdss_objinf, names, SUMMF=, /PLOT, DATDIR=, $
                FILNM=, CHKDF=, PATH=, ZEM=,$
                RMAG=, RA=, DEC=, /SILENT, /NMRAD

 INPUTS:
   names -- List of filenames or 2-element array giving plate and fiber

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  SUMMF=  -- Summary file [default: 'sdss2_qsoi205.fits']
  PATH=   -- Path to SDSS data [default: 'SDSSPATH'+'/DR2_QSO']
  DATDIR= -- Data directory [default: 'spectro/1d_23']
  /NMRAD  -- Input is ['RA:::', 'DED:::']
  /DECI   -- Input is [rad, decd]
  /DR1    -- Check the DR1 list (r <= 19.5)
  ZIN=    -- Input redshift for plotting
  SDSS=   -- Structure contaning the QSO info
  /LLS    -- Use the LLS line list
  /QSO    -- Use the quasar line list
  /PHOTOM -- Print all photometry

 OPTIONAL OUTPUTS:
  FILNM=  -- File name of the data
  RA=     -- RA of the QSO
  DEC=    -- DEC of the QSO
  FLGSDSS= -- Flag signifying success (1) or failure (0)

 COMMENTS:

 EXAMPLES:
  sdss_objinf, '0571-52286-276', /plot
  sdss_objinf, [463, 95], filnm=filnm
  sdss_objinf, ['12:00:21.3', '+32:22:12'], /nmrad

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   20-Nov-2003 Written by JXP

(See SDSS/General/sdss_objinf.pro)


SDSS_OMGDLA

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

 PURPOSE:
    Calculates the first moment of f(N,X) [i.e. Omega_DLA]
    Includes He as the default

 CALLING SEQUENCE:
  sdss_omgdla, GZFIL=, PEROUX=, MODELS=, STRCT=, BINS=, VPROX=, DR3=, ALL=

 INPUTS:
  GZFIL= -- Filename of the g(z) file for the quasars

 RETURNS:

 OUTPUTS:
  STRCT=  -- Structure summarizing the calculation

 OPTIONAL KEYWORDS:
  BINS=  -- Redshift intervals, e.g. [ [1,2], [2,3]]
  /PEROUX -- Include DLAs in Peroux03 in the stats
  /DR3  -- Restrict the DLAs to DR3

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   14-Nov-2006 Written by JXP  (based on fig_omega)

(See SDSS/DLA/sdss_omgdla.pro)


SDSS_PROXGOZ

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

 PURPOSE:
    Determines the g(z) path for each QSO in the inputted list.
    Restrict to the proximate DLAs

 CALLING SEQUENCE:
   sdss_proxgoz

 INPUTS:
  qalfil -- Filename of QSO structure for g(z) calculation
  XZFIL= -- Filename of the dX calculation as a function of z.

 RETURNS:

 OUTPUTS:
  OUTFIL= -- Filename for g(z) FITS file

 OPTIONAL KEYWORDS:
  ORIG_ZEM=  -- Use the original redshifs from SDSS (in this file)
  SNRLMT=    -- SNR limit for DLA search [default: 4]

 OPTIONAL OUTPUTS:
  /CHK  -- Plot g(z) to the screen

 COMMENTS:

 EXAMPLES:
  sdss_proxgoz, 'sdss_dr3_QAL.fits', 'dr3_proxdlagz_s2n4.fits'
 PROCEDURES CALLED:

 REVISION HISTORY:
   27-Feb-2004 Written by SHF
   14-Oct-2004 Modified by JXP

(See SDSS/DLA/sdss_proxgoz.pro)


SDSS_QSOFLUX

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

 PURPOSE:
    Measure the QSO fluxes for the QAL structure and fill up the
    appropriate tag.  Uses SDSS photometry

 CALLING SEQUENCE:
   sdss_qsoflux, qalfil

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   04-Jan-2005 Written by JXP

(See SDSS/General/sdss_qsoflux.pro)


SDSS_QSOLIN

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 sdss_qsolin   
   Version 1.0

 PURPOSE:
    Fits a continuum to SDSS QSO spectroscopic data interactively
    using a PCA as a guess for the Lya and CIV emission lines.  The
    code then automoatically searches for absorption line features
    redward of Lya.

 CALLING SEQUENCE:
   sdss_qsolin, sdss_list

 INPUTS:
  sdss_list -- List of QSOs to analyze

 RETURNS:

 OUTPUTS:
  One FITS file per QSO which contains the continuum and a list of
  absorption lines detected

 OPTIONAL KEYWORDS:
  LSNR= -- Statistical significance for an absorption line feature
           [default: 3.5]
 /NOPLOT -- Do not plot to screen
 /REDO  -- Redo the search even if the file exists
 /NOCOMPRESS -- Do not gzip suprress the output

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   parse_sdss, fil
       sdss_qsolin, 'dr1_fit.lst', OUTDIR='ABSLIN/', /noplt
       sdss_qsolin, 'dr3_fit.list', OUTDIR='ABSLIN/', /noplt
 PROCEDURES/FUNCTIONS CALLED:
 REVISION HISTORY:
   09-Sep-2003 Written by JXP

(See SDSS/General/sdss_qsolin.pro)


SDSS_QSOSTRCT

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

 PURPOSE:
  Routine to quickly grab the SDSS QSO structure

 CALLING SEQUENCE:
 sdss_objinf, names, SUMMF=, /PLOT, DATDIR=, $
                FILNM=, CHKDF=, PATH=, ZEM=,$
                RMAG=, RA=, DEC=, /SILENT, /NMRAD

 INPUTS:
   names -- List of filenames or 2-element array giving plate and fiber

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
  qso = sdss_qsostrct()

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   15-Mar-2010 Written by JXP

(See SDSS/General/sdss_qsostrct.pro)


SDSS_QSOTEMPL

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

 PURPOSE:
    Extrapoles a continuum for a SDSS QSO in the Lya forest based on
    a template, a fit to the QSO slope and the known average
    absorption by the Lya forest. 

 CALLING SEQUENCE:
   sdss_qsotempl

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  ORIG_ZEM =  Use the original redshifs from SDSS (in this file)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   27-Feb-2005 Written by JO
   14-Oct-2006 Modified by JXP

(See SDSS/General/sdss_qsotempl.pro)


SDSS_QUERYIMAGE

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

PURPOSE
	to query SDSS image
SYNTAX
	sdss_queryimage, ra, dec [, scale , xs=xs, ys=ys, /gridoff, /labeloff]
INPUTS
	ra: right ascension (J2000 decimal degrees)
	dec: declination (J2000 decimal degrees)
	scale: plate scale (arcsec/pixel) [default to .3961]
KEYWORDS
	filename: name of filt to be written to [default to temp.jpeg]
	xs: xsize (in pixels) [default to 512]
	ys: y size (in pixels) [default to 512]
	labeloff: if set leaves off label
	gridoff: if set leaves off Gid
 RETURNS:  jpeg of the image

OPTIONAL OUTPUTS
	FILENAME= writes a file to the filename given by the keyword
	
NOTES
	by default gives you pretty picture of blue spiral galaxy (default SDSS image)
	with ra=18.87667, dec=-0.86083
Written by R. da Silva, UCSC, 3-11-09

(See SDSS/General/sdss_queryimage.pro)


SDSS_REPEATS

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

 PURPOSE:
  Identify repeats in DLA/MSDLA candidates in the the checked file (default: DR2)

 CALLING SEQUENCE:
 sdss_repeats, fil

 INPUTS:
   fil  -- Name of checked file

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   Written by SHF

(See SDSS/General/sdss_repeats.pro)


SDSS_SEARCH

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

 PURPOSE:
    Main program which drives the search for LLS, DLA and metal-line systems

 CALLING SEQUENCE:
  sdss_search, filename, outfil, ESIF=, SDSSSUM=, ZMIN=, $
                RMAX=, SDSSPATH=

 INPUTS:
  filename -- ASCII file listing all SDSS quasars

 RETURNS:

 OUTPUTS:
  outfil   -- Name of QAL file

 OPTIONAL KEYWORDS:
  ZMIN=  -- Minimum redshift to search
  RMAX=  -- Maximum magnitude to include [default: 21.]
  INIFIL= -- Name of QAL file (good to restart after a 'bomb')

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   flg = x_chkfil( lbls, count=count)

 sdss_search, 'Lists/dr3_abs.lst', 'sdss_DR3_QAL.fits',
  SDSSSUM='dr3_qso.fits'

 PROCEDURES/FUNCTIONS CALLED:
  sdss_dla
  sdss_metals

 REVISION HISTORY:
   07-May-2002 Written by JXP

(See SDSS/DLA/sdss_search.pro)


SDSS_SEARCHLLS

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

 PURPOSE:
    Search for LLS in the SDSS QSO distribution

 CALLING SEQUENCE:

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   2005 Written by JO + JXP

(See SDSS/LLS/sdss_searchlls.pro)


SDSS_SLLSSTAT

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

 PURPOSE:
    Given a LLS struct and gz list, determine the indices of those
    LLS satisfying the statistical sample.

 CALLING SEQUENCE:
   sdss_llsstat

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   Nov-2004 Written by JXP

(See SDSS/LLS/sdss_sllsstat.pro)


SDSS_UNIQDLA

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

 PURPOSE:
    Finds those entires unique in data set 2

 CALLING SEQUENCE:
  sdss_uniqdla, data1, data2, uni

 INPUTS:
  data1 -- DLA structure
  data2 -- DLA structure

 RETURNS:
  uni -- Unique index in data2

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   sdss_uniqdla, dr1, dr2, uni

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   11-Nov-2004 Written by JXP

(See SDSS/DLA/sdss_uniqdla.pro)


SDSS_WAVE

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

 PURPOSE:
    Create a wavelength array for SDSS data

 CALLING SEQUENCE:
  sdss_wave, wave, pxiels=, iwave=

 INPUTS:

 RETURNS:
  wave -- Wavelength array

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   Written by SHF

(See SDSS/General/sdss_wave.pro)


SKYSPEC_PARANAL

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

 PURPOSE:
   Return the sky spectrum at Paranal

 CALLING SEQUENCE:
   skyflux = skyspec_paranal(loglam, [ disp= ] )

 INPUTS:
   loglam     - Log10 of wavelengths [vacuum Ang]; need not be uniformly
                spaced

 OPTIONAL INPUTS:
   disp       - Sigma of the intrumental response (dispersion) in units
                of the LOGLAM pixels, either as a scalar, or as a vector
                with the same number of elements as LOGLAM.
                If not set, then the returned sky spectrum is at the
                resolution of the Paranal data files, and will be
                undersampled for any resolution worse than about 100,000.

 OUTPUTS:
   skyflux    - Sky spectrum in units of e-17 erg/s/cm^2/Ang/asec^2

 OPTIONAL OUTPUTS:

 COMMENTS:
   The lowest sky level is on plate 1292/52736 taken at airmass=1.04.
   A representative low sky level is plate 406/51817.
   A high sky level is plate 298/51955.

 EXAMPLES:

 BUGS:
   The Paranal sky spectra are missing data from 8550-8610 Ang.
   There are a few regions where their spectra are not in agreement
   with the lower-resolution SDSS sky spectra such as at 7600-7650 Ang,
   probably because the SDSS spectra "correct up" the sky level for
   the telluric absorption.  Also, the Paranal sky is higher than SDSS
   by about a factor of 2 blueward of 4800 Ang.

 DATA FILES:
   $IDLSPEC2D_DIR/templates/fluxed_sky_346.fits
   $IDLSPEC2D_DIR/templates/fluxed_sky_580L.fits
   $IDLSPEC2D_DIR/templates/fluxed_sky_860L.fits
   $IDLSPEC2D_DIR/templates/fluxed_sky_437.fits
   $IDLSPEC2D_DIR/templates/fluxed_sky_580U.fits
   $IDLSPEC2D_DIR/templates/fluxed_sky_860U.fits
   $IDLSPEC2D_DIR/templates/fluxed_sky_564U.fits
   $IDLSPEC2D_DIR/templates/fluxed_sky_800U.fits

 PROCEDURES CALLED:
   djs_maskinterp()
   mrdfits()
   populate_image
   sxpar()

 REVISION HISTORY:
   20-Mar-2006  Written by D. Schlegel, LBL
   17-Mar-2008  Bastardized by JXP for Lick

(See Lick/Kast/Calibs/skyspec_lick.pro)


SPECOBJSTRCT__DEFINE

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

 PURPOSE:
  This routine creates a structure to describe the spectrum for an
  object in a given slit

 CALLING SEQUENCE:
   tmp = {specobjstrct}

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
  Written by JXP

(See Spec/Slits//specobjstrct__define.pro)


STDSTRUCT__DEFINE

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

 PURPOSE:
   Structure to handle observations of Standard stars

 CALLING SEQUENCE:
  tmp = {stdstruct}

 INPUTS:

 RETURNS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   07-Aug-2001 Written by JXP

(See IMG/Photometry//stdstruct__define.pro)


STRCTCLDY__DEFINE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 strctcldy__define
  V1.1

 PURPOSE:
    Named IDL Structure for Cloudy output

 CALLING SEQUENCE:
   tmp = {strctcldy}

 REVISION HISTORY:
   31-May-2001 Written by JXP

(See Cloudy//strctcldy__define.pro)


STRINGIFY

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

 PURPOSE:
	This function converts a real value into a string based on the 
	specified format.

 CATEGORY:
	Formatting.

 CALLING SEQUENCE:
	Result = STRINGIFY( Value, Format)

 INPUTS:
	Value	Value which is to be converted.

 OPTIONAL INPUTS:
	Format	Optional format statement
	
 OUTPUTS:
	This function returns a string version of the input array with 
	leading and trailing spaces removed.

 RESTRICTIONS:
	None

 EXAMPLE:
	1) format a number into a string:
		label = "X=" + stringify(x)

	1) format a number into a string, with formatting:
		label = "X=" + stringify(x,'(f15.3)')

 AUTHOR:
	Gregory D. Wirth, W. M. Keck Observatory

 MODIFICATION HISTORY:
 	1999-Dec-14	GDW	Original version

(See Keck/LRIS/General/x_readmhdufits.pro)


SYNTHSPEC

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

 PURPOSE:
   Construct synthetic spectrum from eigen-templates.  Stolen from
   the SDSS codes.

 CALLING SEQUENCE:
   synflux = synthspec(zans, [ loglam=, hdr=, eigendir= ])

 INPUTS:
   zans       - Structure(s) with redshift-fit information (from SPREDUCE1D).

 OPTIONAL KEYWORDS:
   loglam     - Log-10 wavelengths at which to synthesize the spectrum;
                this can either be a single vector if all spectra have
                the same wavelength mapping, or an array of [NPIX,NOBJ].
   hdr        - If specified, then use this header to construct LOGLAM.
                Either LOGLAM or HDR must be specified.
   eigendir   - Directory for EIGENFILE; default to $IDLSPEC2D/templates.

 OUTPUTS:
   synflux    - Synthetic spectra

 COMMENTS:
   The sub-pixel shifts are applied with the COMBINE1FIBER procedure.

 EXAMPLES:

 BUGS:

 DATA FILES:
   $IDLSPEC2D_DIR/etc/TEMPLATEFILES

 PROCEDURES CALLED:
   combine1fiber
   concat_dir()
   poly_array()
   readfits()
   sxpar()

 REVISION HISTORY:
   20-Aug-2000  Written by D. Schlegel, Princeton

(See Spec/Analysis//x_synthspec.pro)


TRACESTRCT__DEFINE

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

 PURPOSE:
  This routine defines the trace structure
  Not in use

 CALLING SEQUENCE:
   tmp = {tracestrct}

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
  Written by JXP

(See Spec/Rectify//tracestrct__define.pro)


VELPLTSTRCT__DEFINE

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

 PURPOSE:
  Structure that is useful for velocity plots

 CALLING SEQUENCE:
   tmp = {velpltstrct}

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
  Written by JXP

(See Spec/Lines//velpltstrct__define.pro)


VOIGTQ

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 voigtq
    Version 1.0

 PURPOSE:
    Creates a quick Voigt profile using code written by SB.
   Not recommended for usage

 CALLING SEQUENCE:
   
 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   07-Feb-2002 Written by JXP

(See Spec/Voigt//voigtq.pro)


VOIGTWAL

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

 PURPOSE:
   Calculate a single voigt profile, given wavelength, absorber, and
    an array of lines.  I recommend x_voigt

 CALLING SEQUENCE:
   tau = voigtwal(wave,abs,lines)

 INPUTS:
   wave       - Array of wavelengths to realize voigt profile
   abs        - single absorber
   lines      - line(s) structure to compute voigt profile, if mutliple,
                   the entire list will be looped through.

 OUTPUTS:
   tau        - Optical depth at each wavelength

 OPTIONAL OUTPUTS:

 COMMENTS:

  Line is a structure with:

 ** Structure <81a5f94>, 4 tags, length=24, refs=3:
    ION             STRING    'H I'
    WAVE            DOUBLE           1215.6701
    F               FLOAT          0.416400
    GAMMA           FLOAT       6.26500e+08

  Abs must have at least :

** Structure ABS, 10 tags, length=44:
   N               FLOAT           15.0000   	log 10 Column density
   B               FLOAT           5.00000     velocity dispersion (km/s)
   Z               FLOAT           2.00000	redshift

 EXAMPLES:

 BUGS:

 PROCEDURES CALLED:

 REVISION HISTORY:
   25-May-2000  Created by S. Burles, FNAL/IAP

(See Spec/Voigt//voigtwal.pro)


VPPARSE[1]

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

 PURPOSE:
   given a vpstrct, creates a fort.13 input file for vpfit
 

 CALLING SEQUENCE:
   mkvpin, vpstr, FIL=

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   Written by GEP

(See Spec/Voigt//g_mkvpin.pro)


VPPARSE[2]

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

 PURPOSE:
   parses a vpfit fort.26 output file and puts data into a structure of type
   'vpstrct' which holds the relavent data.
 

 CALLING SEQUENCE:
   vpparse, vpfil, VPSTR=vpstr

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   Written by GEP

(See Spec/Voigt//g_vpparse.pro)


VPSTRCT__DEFINE

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

 PURPOSE:
   creates structure to contain data from a vpfit fort.26 output file,
   including flux file names, region start/stop, abs. lines, N, Nerr, etc.
   For the lines, has both string and double representations of the data,
   so information on 'tied' or 'locked' lines is not lost.
 

 CALLING SEQUENCE:
   tmp = {vpstrct}

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:
   Limits total number of regions to 500, total number of lines to 1000

 EXAMPLES:


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   Written by GEP

(See Spec/Voigt//vpstrct__define.pro)


WRITECOL

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

 PURPOSE:
    Prints a series of arrays to a file in ASCII format

 CALLING SEQUENCE:
   
   writecol, filename, v1, v2, FMT=''

 INPUTS:
   file     - Name of the ASCII file
   v1       - Vector 1
   v2       - Vector 2
   [v3-v19]       - Vectors 3-14

 RETURNS:

 OUTPUTS:
   Prints v1, v2 to screen

 OPTIONAL KEYWORDS:
   FMT -  FORTRAN formatting
   FILNUM - File number (as opposed to file)

 OPTIONAL OUTPUTS:

 COMMENTS:
   The program keys off the number of elements in v1

 EXAMPLES:
   writecol, 'arrays.dat', array1, array2


 PROCEDURES CALLED:

 REVISION HISTORY:
   17-June-2001 Written by JXP

(See General//writecol.pro)


WRITE_DIMGSTR

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

 PURPOSE:
    Write a dimg_struct (direct image) to an ASCII file and/or FITS file

 CALLING SEQUENCE:
   
  write_dimgstr, struct, ANONLY=anonly, OUTFIL=outfil, FITS=fits

 INPUTS:
   struct        - A dimg_struct

 RETURNS:

 OUTPUTS:
   OUTFIL  - Output file for ASCII [default is image.list]

 OPTIONAL KEYWORDS:
   /ANONLY - Only print files with flg_anly NE 0   
   FITS=   - Fits file output for the structure

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   write_dimgstr, nght1_strct

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   18-July-2001 Written by JXP
   29-Dec-2001 Added fits option

(See IMG/General//write_dimgstr.pro)


X1DFIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x1dfit   
   Version 1.3

 PURPOSE:
    GUI for fitting a function to a set of x,y data.  This
    program does far too much!  Warning:  This was one of my first
    GUIs.  It works pretty well, but is a bit old.

 CALLING SEQUENCE:
   
   fit = x1dfit([xdat],ydat,func=,nord=, /inter, xsize=, ysize=)

 INPUTS:
   xdat       - Values along one dimension [optional]
   ydat       - Values along the other

 RETURNS:
   fit        - Values at each xdat

 OUTPUTS:

 OPTIONAL KEYWORDS:
   func       - String for Fitting function (POLY, LEGEND, BSPLINE,
                GAUSS, CHEBY)
   nord       - Order of the fit
   /inter      - Interactive fitting
   xsize      - Draw window xsize (pixels)
   ysize      - Draw window ysize (pixels)
   sig        - Errors in the points
   reg        - Regions of data to fit
   LSIG       - Lower SIGMA
   HSIG       - High SIGMA
   /REJ        - Turn rejection on
   DELPTS     - Array of user-deleted points
   MSK        - Array of 0,1 values [0=do not include]

 OPTIONAL OUTPUTS:
   bset       - Bspline info
   rms        - RMS of the fit (only valid for fits with rejection)

 COMMENTS:

 EXAMPLES:
   fit = x1dfit(x, y, 'POLY', nord=5, /inter)


 PROCEDURES/FUNCTIONS CALLED:
  POLY_FIT
  POLY
  SVDFIT
  SVLEG
  BSPLINE
  GAUSS
  XGETX_PLT
  XGETY_PLT
  XGETXPIX_PLT
  XGETYPIX_PLT
  GETCOLOR (coyote package)

 REVISION HISTORY:
   22-June-2001 Written by JXP
   28-June-2001 Added LEGENDRE fits (JXP)
   23-Nov-2001 Added BSPLIN (SB), GAUSS, REJECTION (JXP)
   31-Jan-2002 Added CHEBYSHEV

(See FIT//x1dfit.pro)


XCOMBINE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 xcombine   
   Version 1.2  

 PURPOSE:
    Combines a set of images with a variety of options.

 CALLING SEQUENCE:
   
   xcombine, img, comb, [header], FCOMB=, GAIN=, RN=, MASKS=, SCALE=,
     STATSEC=, MMEM=, SIGHI=, SIGLO=, MXITER=, OUTNM=, /SILENT, 
     WEIGHT=, IMGINDX=

 INPUTS:
   img -- Array of image names

 RETURNS:

 OUTPUTS:
   comb -- Combined image

 OPTIONAL KEYWORDS:
   fcomb -- Binary keyword describing combine method 
          0,1 = Median, Avg
          2 = SIG Rej
          4 = Masks
          8 = Weight
   mmem -- Maximum memory to use at any one time [default: Approx 200Mb]
   outnm -- File to write combined fits image
   gain -- Gain (required for SIGMEDCLIP)
   rn -- ReadNoise (required for SIGMEDCLIP)
   scale -- scale:  Could be array of floats, 'MED', 'AVG', or
            Keyword
   statsec -- Section to perform stats on (for scale)
   imgindx -- Index number of image [default: 0L]
   siglo  -- Lower sigma for rejection [default: 3.]
   sighi  -- Upper sigma for rejection [default: 3.]
   

 OPTIONAL OUTPUTS:
   header -- Header of one of the files

 COMMENTS:

 EXAMPLES:
   xcombine, all_img, comb_img


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   18-Jul-2001 Written by JXP
   28-Jul-2001 Added masks, sigma clipping
   29-Jul-2001 Added scaling, median routines
   07-Jan-2002 Fixed memory leak

(See IMG/Reduction//xcombine.pro)


XDIMG_AR

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

 PURPOSE:
   Reads in the first file in the directory with 'xdimg*fits'

 CALLING SEQUENCE:
  xdimg = xdimg_ar()

 INPUTS:

 RETURNS:
    xdimg -  WFCCD structure

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   xdimg = xdimg_ar()


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   13-Nov-2001 Written by JXP

(See IMG/General//xdimg_ar.pro)


XDIMG_BADPIX

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

 PURPOSE:
    Creates a bad pixel mask given a structure which contains either a flat or dark image.

 CALLING SEQUENCE:
   xdimg_badpix, struct

 INPUTS:
   struct -- dimg_strct defining the images of interest

 RETURNS:

 OUTPUTS:
   OUTFIL - Name of bad pixel mask file [default is e.g. 'PixMask/BadPixMask_w.fits']
            NOTE: the "w" indicates NIRC2 wide camera and the "n" indicates narrow camera.

 OPTIONAL KEYWORDS:
   OUTFIL - Name of bad pixel mask to be created, including directory.
   CCD - Name of the ccd for which a bad pixel mask should be made.  ('NIRC2W' or 'NIRC2N')
   DEADPERCENT - percentage of saturation to be identified as a dead pixel in a well-exposed flat frame. (default is 10%)
   HOTPERCENT - percentage of saturation to be identified as a hot pixel in a dark frame. (default is 50%)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   xdimg_badpix, nght1_strct

 PROCEDURES/FUNCTIONS CALLED:
  XDIMG_DELCODIV

 REVISION HISTORY:
   11-June-2007 Written by LKP

(See IMG/Reduction//xdimg_badpix.pro)


XDIMG_BIAS

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

 PURPOSE:
    Creates Bias frame given direct image structure (which must
   contain a number of bias files!)

 CALLING SEQUENCE:
   
   xdimg_bias, struct, /SVOV, OUTFIL=

 INPUTS:
   struct -- dimg_strct defining the images of interest

 RETURNS:

 OUTPUTS:
   OUTFIL - Name of Bias file [default is 'Bias/Bias.fits']

 OPTIONAL KEYWORDS:
   SVOV - Save ov files (default is to delete them)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   xdimg_bias, nght1_strct


 PROCEDURES/FUNCTIONS CALLED:
  XDIMG_OVER
  XCOMBINE
  MWRFITS
  XDIMG_DELOV

 REVISION HISTORY:
   26-July-2001 Written by JXP

(See IMG/Reduction//xdimg_bias.pro)


XDIMG_DARK

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

 PURPOSE:
    Creates super dark frame given direct image structure.

 CALLING SEQUENCE:
   xdimg_dark, struct

 INPUTS:
   struct -- dimg_strct defining the images of interest

 RETURNS:

 OUTPUTS:
   OUTFIL - Name of Dark file [default is e.g. 'Darks/Dark_n10.000_1_3_8.fits']
            The 10.000 is the exposure time, the "n" indicates the narrow camera,
            the "1_3_8" means coadds=1, sampmode=3, multisam=8.

 OPTIONAL KEYWORDS:


 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   xdimg_dark, nght1_strct


 PROCEDURES/FUNCTIONS CALLED:


 REVISION HISTORY:
   11-June-2007 Written by LKP

(See IMG/Reduction//xdimg_dark.pro)


XDIMG_DARKSUB

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

 PURPOSE:
    Dark subtracts an image.

 CALLING SEQUENCE:
   xdimg_darksub, struct, imgarr, /SVSTRCT

 INPUTS:
   struct -- dimg_strct defining the images of interest
   imgarr   -- integer array defining the images to be process

 RETURNS:

 OUTPUTS:
   imgarr - fits files in the dir Coadd_divided

 OPTIONAL KEYWORDS:
   /svstrct  -- Save the updated structure.

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   xdimg_dividecoadds, nght1_strct, imgarr


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   11-June-2007 Written by LKP

(See IMG/Reduction//xdimg_darksub.pro)


XDIMG_DELDRKSUB

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

 PURPOSE:
   Delete a set of dark subtracted images.

 CALLING SEQUENCE:
  xdimg_deldrksub, strct, delimg

 INPUTS:
   strct  -- Direct image structure
   delimg -- Indices of direct images

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   14-June-2007 Written by LKP

(See IMG/General//xdimg_deldrksub.pro)


XDIMG_DELOV

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

 PURPOSE:
   Delete a set of OV images

 CALLING SEQUENCE:
  xdimg_delov, strct, delimg

 INPUTS:
   strct  -- Direct image structure
   delimg -- Indices of direct images

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   13-Nov-2001 Written by JXP

(See IMG/General//xdimg_delov.pro)


XDIMG_DFLAT

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

 PURPOSE:
    Creates dome flats given the direct image structure (assuming
    there are dome flats in the structure)

 CALLING SEQUENCE:
   
   xdimg_dflat, struct, /IR, /SVOV, /SVDRKSUB, BPM=, OUTROOT=, /ALLOUT

 INPUTS:
   struct -- dimg_strct defining the images of interest

 RETURNS:

 OUTPUTS:
   flats - fits files in the dir Flats; 1 per filter

 OPTIONAL KEYWORDS:
   /SVOV   - save ov files
   OUTROOT - Root name of Dome flats (default is 'Flats/DFlat')
   /ALLOUT - Output unnormalized frame too
   BPM   - Name of the bad pixel mask to apply, including directory name.

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   xdimg_dflat, nght1_strct


 PROCEDURES/FUNCTIONS CALLED:
  XDIMG_OVER
  XCOMBINE
  MWRFITS
  XDIMG_DELOV
  XDIMG_DELCODIV
  XDIMG_DELDRKSUB
  X_FILTERS

 REVISION HISTORY:
   18-July-2001 Written by JXP
   24-Apr-2002 Allow for non-linearity
   14-June-2007 Updated by LKP to allow for making flats for IR data

(See IMG/Reduction//xdimg_dflat.pro)


XDIMG_FINDDARK

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

 PURPOSE:
    Finds the superdark file associated with the requested images.
    Updates the structure with the flg_drk and img_drk keywords.

 CALLING SEQUENCE:
   xdimg_finddark, struct, imgarr

 INPUTS:
   struct -- dimg_strct defining the images of interest

 RETURNS:

 OUTPUTS:


 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
     xdimg_finddark, struct, imgarr


 PROCEDURES/FUNCTIONS CALLED:


 REVISION HISTORY:
   21-June-2007 Written by LKP

(See IMG/Reduction//xdimg_finddark.pro)


XDIMG_NONLINEAR

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 xdimg_nonlinear   
  Version 1.0

 PURPOSE:
    Performs non-linear correction on a ccd image.  Only setup
   for SITe3 at this point.

 CALLING SEQUENCE:
   newimg = xdimg_nonlinear(img, ccd)

 INPUTS:
    img  -  image
    ccd  -  (SITe3)

 RETURNS:
    newimg - Corrected image

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   newimg = xdimg_nonlinear(img, 'SITe3')


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   24-Apr-2002 Written by JXP

(See IMG/Reduction//xdimg_nonlinear.pro)


XDIMG_OBJMSK

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 xdimg_objmsk   
   Version 1.0

 PURPOSE:
    Builds a sky mask for each input image using xmkmask, an 
      IDL gui built for this procedure.

 CALLING SEQUENCE:
   xdimg_skymask, struct, objimg, XSIZE=, YSIZE=, IMSK=

 INPUTS:
   struct -- dimg_strct defining the images of interest
   objimg   -- integer array defining the images to mask

 RETURNS:

 OUTPUTS:
   skymasks --  Builds sky masks and puts them into 'Masks/Sky/'

 OPTIONAL KEYWORDS:
   XSIZE, YSIZE -- Size of GUI

 OPTIONAL OUTPUTS:
  IMSK -- Image of mask

 COMMENTS:

 EXAMPLES:
   xdimg_objmsk, nght1_strct, objimg


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   14-Oct-2002 Written by JXP

(See IMG/Reduction//xdimg_objmsk.pro)


XDIMG_OVER

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

 PURPOSE:
    Overscan subtracts a list of images of a structure.  Calls
  routine xoverscan extensively.

 CALLING SEQUENCE:
   
   xdimg_over, struct, imgs, ORDR=, /ERASE, /INTER, /NOSV

 INPUTS:
   struct -- dimg_strct defining the images of interest
   imgs   -- integer array defining the images to process

 RETURNS:

 OUTPUTS:
   ovimg - fits files in the dir OV

 OPTIONAL KEYWORDS:
   /erase - Erase pre-existing ov files
   /inter - Interactive OV fitting (uses x1dfit)
   /nosv  -- Dont save the OV image!
   ORDR=  -- Order to fit the overscan

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   xdimg_over, nght1_strct, ovimg


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   22-July-2001 Written by JXP

(See IMG/Reduction//xdimg_over.pro)


XDIMG_PHOTCAL

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

 PURPOSE:
    Drives the program x_intphotcal which allows the user to 
      interactively create photometric solutions.

 CALLING SEQUENCE:
   
   xdimg_photcal, struct, LNDTFIL=, SETAM=, XSIZE=, YSIZE=, MIN_NOBS=
     MIN_MOBS=, SETAM=, OUTROOT=, MAGROOT=, /NCLR

 INPUTS:
   struct -- dimg_strct defining the images of interest.  This
             program focuses on the STD frames only.

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  LNDTFIL  = Filename of landolt fits file [default:
        $XIDL_DIR/IMG/Photometry/Lists/nlandolt.fits ]
  SETAM    = AM terms (one per filter: UBVRI)
  MIN_MOBS = Minimum number of nights observed by Landolt (default=2)
  MIN_NOBS = Minimum number of observations by Landolt (default=4)
  XSIZE=   - Size of gui in screen x-pixels (default = 1000)
  YSIZE=   - Size of gui in screen y-pixels (default = 600)
  OUTROOT  - Root name of Twilight flats (default is 'Photo/soln_')

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   xdimg_photcal, dimg


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   07-Aug-2001 Written by JXP

(See IMG/Photometry//xdimg_photcal.pro)


XDIMG_PROC

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

 PURPOSE:
    Processes a set of images  (OV, TRIM, FLAT)

 CALLING SEQUENCE:
   
   xdimg_proc, struct, img, flat, OUTPTH=, /IR, /INTER, /SVOV, /SVCODIV, 
               /SVDRKSUB, /GAIN, /SILENT, MSK=, BPM=, FILEOUT=

 INPUTS:
   struct -- dimg_strct defining the images of interest
   img    -- intarr of images to process
   flatnm -- Flat root to use (e.g. 'Flats/SkyFltN')

 RETURNS:

 OUTPUTS:
   Processed image (e.g. Final/f_ccd001.fits)

 OPTIONAL KEYWORDS:
  OUTPTH  =  Output directory (default = 'Final/')
  /INTER  =  Interactive OV fitting
  /SVOV  =  Delete ov files when through
  /SVCODIV = Delete coadd divided files when through
  /SVDRKSUB = Delete dark subtracted files when through
  MSK     =  Default name for mask file
  /GAIN =  Multiply by the gain
  BPM     =  Name of bad pixel mask file to apply to image. (including directory)

 OPTIONAL OUTPUTS:
  FILEOUT = Name of output file which has the names of the reduced images.
            Useful for call to stacking procedure.

 COMMENTS:

 EXAMPLES:
   xdimg_proc, dimg, STDS, 'Flats/SkyFltN'


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   03-Aug-2001 Written by JXP
   03-Jan-2002 Dealt with Gain
   14-June-2007 Updated by LKP to allow for IR images, like NIRC2.

(See IMG/Reduction//xdimg_proc.pro)


XDIMG_SKYFLT

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

 PURPOSE:
    Creates Super-sky flat given the image list structure.  
    The routine first OV subtracts (or dark subtracts, for IR images) each image as necessary.
    It then calls xdimg_skymask to create masks for each of the images (unless the /NOMSK keyword is set).
    It then calls xcombine which: (1) scales each image 
    by the median calculated for the OV (or dark subtracted) image (2) does a median
    combine with 3sigma/2.5sigma (low/high) clipping.

 CALLING SEQUENCE:
   
   xdimg_skyflt, struct, MMEM=, /NOMSK, /INTER, /IR, CCD='NIRC2W'

 INPUTS:
   struct -- dimg_strct defining the images of interest

 RETURNS:

 OUTPUTS:
   skyflt - fits files; 1 per filter (and per CCD, if CCD option is given)

 OPTIONAL KEYWORDS:
  MMEM - Max memory to use with this routine (default = 200M)
  NOMSK - Don't create new masks
  OUTROOT - Root name of Sky flats (default is 'Flats/SkyFlt')
  INTER - Interactive OV subtraction

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   xdimg_skyflt, nght1_strct


 PROCEDURES/FUNCTIONS CALLED:
  XDIMG_OVER
  XCOMBINE
  MWRFITS
  XDIMG_DELOV
  XDIMG_DELDRKSUB
  X_FILTERS
  XDIMG_SKYMASK

 REVISION HISTORY:
   26-July-2001 Written by JXP
   24-Apr-2002 Added nonlinearity correction
   25-Jun-2007  LKP added ability to use with IR, NIRC2 images

(See IMG/Reduction//xdimg_skyflt.pro)


XDIMG_SKYMSK

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

 PURPOSE:
    Builds a sky mask for each input image using xmkmask, an 
      IDL gui built for this procedure.

 CALLING SEQUENCE:
   
   xdimg_skymask, struct, objimg, /ERASE, /DOOV, XSIZE=, YSIZE=

 INPUTS:
   struct -- dimg_strct defining the images of interest
   objimg   -- integer array defining the images to mask

 RETURNS:

 OUTPUTS:
   skymasks --  Builds sky masks and puts them into 'Masks/Sky/'

 OPTIONAL KEYWORDS:
   erase - Erase pre-existing sky masks first
   doov - Make OV files as necessary

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   xdimg_skymsk, nght1_strct, objimg


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   26-July-2001 Written by JXP

(See IMG/Reduction//xdimg_skymsk.pro)


XDIMG_STARID

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

 PURPOSE:
    Helps identify standard stars in a field by driving the program
     x_starid which is an interactive, GUI program.

 CALLING SEQUENCE:
   
   xdimg_starid, struct, LST_PATH=, INDX=

 INPUTS:
   struct -- dimg_strct defining the images of interest.  This
             program focuses on the STD frames only.

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   LST_PATH   - Path name for Lists (default: Take x_starid default)
   OUT_PATH   - Output name for id files (default: 'Photo/')

 OPTIONAL OUTPUTS:
   INDX -- Subset of indices for standards to fit
   INORIENT -- Choose a number in the range [-4,4] to change the 
                   orientation of standards plotted on the image. 

 COMMENTS:

 EXAMPLES:
   xdimg_starid, strct

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   07-Aug-2001 Written by JXP
   08-Jan-2002 Added paths (JXP)
   14-Oct-2002 Added indx (JXP)

(See IMG/Photometry//xdimg_starid.pro)


XDIMG_STDMAG

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

 PURPOSE:
    Does aperture photometry on the objects in the std_* lists.
   Drives the program x_aper

 CALLING SEQUENCE:
   xdimg_stdmag, struct, SKYR=, STRROOT=, OUTROOT=

 INPUTS:
   struct -- dimg_strct defining the images of interest.  This
             program focuses on the STD frames only.

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  SKYR =  2 float array describing sky annulus in arcsec
            (default=15,30)
  STRROOT=  Path for standard stars [default: 'Photo/std_']
  OUTROOT=  Path for output of magnitudes [default: 'Photo/mag_']

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   xdimg_stdmag, dimg


 PROCEDURES/FUNCTIONS CALLED:
  X_APER
  X_CCDINF

 REVISION HISTORY:
   07-Aug-2001 Written by JXP

(See IMG/Photometry//xdimg_stdmag.pro)


XDIMG_STRCT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 xdimg_strct   
     Version 1.2

 PURPOSE:
    Creates and outputs a structure for a series of direct images.
    This is a key routine in organizing a night of imaging data.

 CALLING SEQUENCE:
   
  xdimg_strct, struct, ccd, tel, LIST=, /MKDIR, /NOFILE

 INPUTS:
   CCD        - CCD/INSTRUMENT;  Options: Tek5, LRISR, SITe1, SITe3, NIRC2
   tel        - Telescope; Options: (Keck, LCO-40, LCO-100)

 RETURNS:

 OUTPUTS:
   struct     -  Creates an IDL structure for direct images 
               +  an ASCII file summarizing the structure
               +  a FITS file saving the IDL structure

 OPTIONAL KEYWORDS:
   LIST       - Image list [default is Raw/*.fits]
   /NOFILE     - Do not create the ASCII file
   /MKDIR      - Create a set of directories which facilitate the rest
                    of the reduction process (e.g. Flats/ Bias/
                    Photo/)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   xdimg_strct, nght1_strct, 'Tek5', /MKDIR

 PROCEDURES/FUNCTIONS CALLED:
   MRDFITS
   SXPAR
   X_SETJDATE
   MWRFITS
   WRITE_DIMGSTR

 REVISION HISTORY:
   18-July-2001 Written by JXP
   22-Aug-2001  Allows for LRISR
   24-Dec-2001  LRISR modifications
   14-June-2007 LKP updated to allow for NIRC2 data

(See IMG/General//xdimg_strct.pro)


XDIMG_TWIFLT

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

 PURPOSE:
    Creates twilight flats given the image list structure (assuming
     twilight flats were taken!)

 CALLING SEQUENCE:
   
   xdimg_twiflt, struct, /SVOV, OUTROOT=

 INPUTS:
   struct -- 'distruct' defining the images of interest

 RETURNS:

 OUTPUTS:
   twiflats - fits files; 1 per filter

 OPTIONAL KEYWORDS:
   SVOV - Save ov files
   OUTROOT - Root name of Twilight flats (default is 'Flats/TwiFlat')

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   xdimg_twiflt, nght1_strct


 PROCEDURES/FUNCTIONS CALLED:
  XDIMG_OVER
  XCOMBINE
  MWRFITS
  XDIMG_DELOV
  X_FILTERS

 REVISION HISTORY:
   26-July-2001 Written by JXP
   24-Apr-2002 Added nonlinearity correction

(See IMG/Reduction//xdimg_twiflt.pro)


XDIMG_UPDSTR

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

 PURPOSE:
    Looks around for OV and other images and resets the appropriate
   flags.

 CALLING SEQUENCE:
  xdimg_updstr, strct, /REDOMED

 INPUTS:
   strct -- Direct Image strcure DISTRUCT

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   xdimg_updstr, struct


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   07-Aug-2001 Written by JXP

(See IMG/General//xdimg_updstr.pro)


XGETX_PLT[1]

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

 PURPOSE:
  Returns the x-value corresponding to the x-pixel on a GUI.
   Requires pos, xymnx or the appropriate Structure.

 CALLING SEQUENCE:
  xval = xgetx_plt(xtmp, pos, xymnx, size, /STRCT)
   
 INPUTS:
  xtmp -- x-pixel value
  pos  -- Fraction of plot window covered by plot (2 element array)
  xymnx -- x-y limits of plot window (4 element array: x0,y0,x1,y1)

 RETURNS:
   xval -- 

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /STRCT -- xtmp contains a structure with the relevant tags

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   uniq = x_uniqstr( lbls, count=count)


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   17-Nov-2001 Written by JXP

(See General//xgetx_plt.pro)


XGETX_PLT[2]

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

 PURPOSE:
  Returns the x-pixel value corresponding to the x-value.
   Requires pos, xymnx or the appropriate Structure.

 CALLING SEQUENCE:
  xpix = xgetx_plt(xtmp, pos, xymnx, size, /STRCT)
   
 INPUTS:
  xtmp -- x-pixel value
  pos  -- Fraction of plot window covered by plot (2 element array)
  xymnx -- x-y limits of plot window (4 element array: x0,y0,x1,y1)

 RETURNS:
   xpix -- 

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /STRCT -- xtmp contains a structure with the relevant tags

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   17-Nov-2001 Written by JXP

(See General//xgetxpix_plt.pro)


XGETX_PLT[2]

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

 PURPOSE:
  Returns the y-value corresponding to the y-pixel on a GUI.
   Requires pos, xymnx or the appropriate Structure.

 CALLING SEQUENCE:
  yval = xgety_plt(ytmp, pos, xymnx, size, /STRCT)
   
 INPUTS:
  ytmp -- y-pixel value
  pos  -- Fraction of plot window covered by plot (2 element array)
  xymnx -- x-y limits of plot window (4 element array: x0,y0,x1,y1)

 RETURNS:
   yval -- 

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /STRCT -- ytmp contains a structure with the relevant tags

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   uniq = x_uniqstr( lbls, count=count)


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   17-Nov-2001 Written by JXP

(See General//xgety_plt.pro)


XGETY_PLT

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

 PURPOSE:
  Returns the y-pixel corresponding to the y-value on a GUI.
   Requires pos, xymnx or the appropriate Structure.

 CALLING SEQUENCE:
  yval = xgety_plt(ytmp, pos, xymnx, size, /STRCT)
   
 INPUTS:
  ytmp -- y-pixel value
  pos  -- Fraction of plot window covered by plot (2 element array)
  xymnx -- x-y limits of plot window (4 element array: x0,y0,x1,y1)

 RETURNS:
   yval -- 

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /STRCT -- ytmp contains a structure with the relevant tags

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   uniq = x_uniqstr( lbls, count=count)


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   17-Nov-2001 Written by JXP

(See General//xgetypix_plt.pro)


XHEADFITS

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

 PURPOSE:
    Uses headfits to read the header of a fits file.  The only
   advantage of xheadfits is that the file can be compressed and
   yet the filename may be named without the gz extension.

 CALLING SEQUENCE:
   head = xheadfits(fil, _EXTRA)

 INPUTS:
   fil -- FITS Filename

 RETURNS:
   head -- Header

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   head = xheadfits('spec.fits')

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   17-Sep-2002 Written by JXP

(See General//xheadfits.pro)


XMKMASK

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

 PURPOSE:
    Allows the user to interactively choose pixels to mask in an
    image.  The resulting images are saved as gzipped fits images.

 CALLING SEQUENCE:
   
   xmkmask, img, IMSK=, OUTDIR=, XSIZE=, YSIZE=, /SKYMSK

 INPUTS:
   img        - Image(s) for Masking

 RETURNS:

 OUTPUTS:
   mask       -  Creates a fits table of pixel values to mask

 OPTIONAL KEYWORDS:
   outdir     - Output directory: Default = './Masks/'
   IMSK       - Initial mask to include; Convenient for dealing with
                  bad columns and the like in the CCD
   XSIZE      - Size of gui in screen x-pixels (default = 700)
   YSIZE      - Size of gui in screen y-pixels (default = 700)
   SKYMSK     - Create sky mask (default into Masks/Sky/)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   xmkmask,'OV/ccd001.fits'


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   11-July-2001 Written by JXP

(See IMG/Reduction//xmkmask.pro)


XMRDFITS

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

 PURPOSE:
    Uses mrdfits to read the header of a fits file.  The only
   advantage of xheadfits is that the file can be compressed and
   yet the filename may be named without the gz extension.

 CALLING SEQUENCE:
   
   dat = xmrdfits(fil, [extension, header], _EXTRA)

 INPUTS:
   fil -- FITS Filename
   [extension] -- Extension of the data array

 RETURNS:
   dat  - Data array

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:
  header -- Header of the FITS extension

 COMMENTS:

 EXAMPLES:
   dat = xmrdfits('spec.fits')

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   17-Sep-2002 Written by JXP

(See General//xmrdfits.pro)


XOFFSET

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

 PURPOSE:
    Calculates integer offsets between a series of images.  The
  program uses Sextractor to find objects in the image and then
  uses a brute force algorithm to find the integer offset.

 CALLING SEQUENCE:
   
   xoffset, imglist, INSTR=

 INPUTS:
   imglist    - List of images

 RETURNS:

 OUTPUTS:
   offsets    -  ASCII file with offsets

 OPTIONAL KEYWORDS:
   INSTR      - Instrument keyword
   

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   xoffset, 'offR.list', INSTR='SITe3'


 PROCEDURES CALLED:

 REVISION HISTORY:
   26-Apr-2001 Written by JXP

(See IMG/Reduction//xoffset.pro)


XOVERSCAN

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 xoverscan
   Version 1.2

 PURPOSE:
    Subtracts an overscan region from an image

 CALLING SEQUENCE:
   
   xoverscan, img, ccd, [medov], OVSEC=, OVROOT=, /INTER, /ERASE
    OVIMG=, /NOFITS, /SILENT, /MEDONLY, /COMPRESS, TRIMSEC=

 INPUTS:
   img        - Raw fits file
   ccd        - CCD name (Tek5, SITe1, LRISR, LRISb, GEN, WFTek5,
                SITe3)

 RETURNS:

 OUTPUTS:
   nwimg      - Writes overscan subtracted image to OV directory
                  with an ov_ prefix (default)

 OPTIONAL KEYWORDS:
   func       - String defining function to fit with (POLY is
                default)
   ordr       - Order of the function
   ovsec      - String defining overscan section
   ovroot     - String for OV root ('OV/' is the default)
   erase      - Erase pre-existing ov files
   NOFITS     - Suppress output to fits file
   MEDONLY    - Useful in updating distruct
   /COMPRESS  - Spawn gzip on the output image
   TRIMSEC    - Image region to trim to
   

 OPTIONAL OUTPUTS:
   medov      - Median of each OV image
   OVIMG      - Float array of OV image

 COMMENTS:

 EXAMPLES:
   xoverscan, 'ccd001.fits', 'Tek5'


 PROCEDURES CALLED:
  xregtovec
  djs_median
  x1dfit

 REVISION HISTORY:
   20-June-2001 Written by JXP
   05-Dec-2001  Added OVIMG option

(See IMG/Reduction//xoverscan.pro)


XPIX_CIRC

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

 PURPOSE:
  Finds all pixels within a circle on an image.

 CALLING SEQUENCE:
   pval = xpix_circ(x0, y0, radius, /NOZERO, MAXX=, MAXY=, COUNT=)

 INPUTS:
   x0 -- Circle x position
   y0 -- Circle y position
   radius -- Radius of the circle

 RETURNS:
  pval -- pixels in the circle:  array[2,npt]

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /NOZERO -- Disallow value of 0 (minimum is 1 instead)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   17-Sep-2002 Written by JXP

(See General//xpix_circ.pro)


XPIX_LINE

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

 PURPOSE:
  Finds all pixels within a ray (or line) of specified width.

 CALLING SEQUENCE:
   pval = xpix_line(x0, y0, x1, y1, wid, xmax, ymax, /NOZERO, COUNT=)

 INPUTS:
   x0 -- x position of one point on the ray
   y0 -- y position of one point on the ray
   x1 -- x position of one point on the ray
   y1 -- y position of one point on the ray
   wid -- Width of the line

 RETURNS:
  pval -- pixels in the circle:  array[2,npt]

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /NOZERO -- Disallow value of 0 (minimum is 1 instead)
  COUNT=  -- Number of the pixels in the ray

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   17-Sep-2002 Written by JXP

(See General//xpix_line.pro)


XREGTOVEC

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

 PURPOSE:
    Converts a string region into a vector for an image

 CALLING SEQUENCE:
   
   vect = xregtovec(sreg, size)

 INPUTS:
   string     - String defining the region (e.g. '[1:10,*]')
   size       - Size of the image

 RETURNS:
   vect       - Integer vector defining the region in sreg

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   area = xregtovec('[1:10,*]',size(img))

 PROCEDURES CALLED:

 REVISION HISTORY:
   21-June-2001 Written by JXP

(See IMG/Reduction//xregtovec.pro)


XSP1DSTRCT__DEFINE[1]

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 xsp1dstrct__define
    Version 1.0

 PURPOSE:
  This routine defines the structure for individual object spectra

 CALLING SEQUENCE:
   tmp = {xsp1dstrct}

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   02-Aug-2002 Written by JXP

(See Spec/Analysis//contistrct__define.pro)


XSP1DSTRCT__DEFINE[2]

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 xsp1dstrct__define
    Version 1.0

 PURPOSE:
  This routine defines the structure for individual object spectra

 CALLING SEQUENCE:
   tmp = {xsp1dstrct}

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   02-Aug-2002 Written by JXP

(See Spec/Analysis//xsp1dstrct__define.pro)


XSPLINE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
	XSPLINE 
    -- Copied version of the RSI program

 PURPOSE:
	This function performs cubic spline interpolation.

 CATEGORY:
	Interpolation - E1.

 CALLING SEQUENCE:
	Result = SPLINE(X, Y, T [, Sigma])

 INPUTS:
	X:	The abcissa vector. Values MUST be monotonically increasing.

	Y:	The vector of ordinate values corresponding to X.

	T:	The vector of abcissae values for which the ordinate is 
		desired. The values of T MUST be monotonically increasing.

 OPTIONAL INPUT PARAMETERS:
	Sigma:	The amount of "tension" that is applied to the curve. The 
		default value is 1.0. If sigma is close to 0, (e.g., .01),
		then effectively there is a cubic spline fit. If sigma
		is large, (e.g., greater than 10), then the fit will be like
		a polynomial interpolation.

 OUTPUTS:
	SPLINE returns a vector of interpolated ordinates.
	Result(i) = value of the function at T(i).

 RESTRICTIONS:
	Abcissa values must be monotonically increasing.

 EXAMPLE:
	The commands below show a typical use of SPLINE:

		X = [2.,3.,4.]  	;X values of original function
		Y = (X-3)^2     	;Make a quadratic
		T = FINDGEN(20)/10.+2 	;Values for interpolated points.
					;twenty values from 2 to 3.9.
		Z = SPLINE(X,Y,T) 	;Do the interpolation.



 MODIFICATION HISTORY:
	Author:	Walter W. Jones, Naval Research Laboratory, Sept 26, 1976.
	Reviewer: Sidney Prahl, Texas Instruments.
	Adapted for IDL: DMS, Research Systems, March, 1983.

(See General//xspline.pro)


X_ABTOFLAM

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

 PURPOSE:
    Converts AB mag to flambda (given a wavelength)

 CALLING SEQUENCE:
   

 INPUTS:
  AB   -- AB magnitude
  WAVE -- Wavelength (Angstroms)

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   24-Jan-2008 Written by JXP

(See General//x_abtoflam.pro)


X_ADDIMG

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

 PURPOSE:
    Combines a set of images.  I think this routine is entirely
  superseded by xcombine.

 CALLING SEQUENCE:
   
   x_addimg, img, comb, var, SCALE=, WEIGHT=, IMGINDX=, VARINDX=

 INPUTS:

 RETURNS:

 OUTPUTS:
   comb -- Combined image

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_addimg, all_img, comb_img


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   10-Dec-2002 Written by JXP

(See IMG/Reduction//x_addimg.pro)


X_ADDNOISE

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

 PURPOSE:
  Simple routine to add noise to a normalized spectrum.  

 CALLING SEQUENCE:
   
   newf = x_addnoise(fx, snr, SEED=)

 INPUTS:
   fx       - Flux array
   snr      - Signal-to-noise per pixel of the data

 RETURNS:
   newfx    - Flux array with noise

 OUTPUTS:

 OPTIONAL KEYWORDS:
  SEED=  -- Seed for random number generator [Default: -1322]

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   newfx = x_addnoise(fx, 15.)

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   04-Nov-2002 Written by JXP

(See Spec/Analysis//x_addnoise.pro)


X_ADDTWOFLATS

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

 PURPOSE:
    Combines two flats, rejecting Cosmic Rays.  This routine is
   used extensively in the WFCCD routines.

 CALLING SEQUENCE:
   
   flat = x_addtwoflats, img1, img2, VAR=, GAIN=, RN=

 INPUTS:
   img1       - OV subtracted img1 (data or fits)
   img2       - OV subtracted img2 (data or fits)

 RETURNS:

 OUTPUTS:
   flat      - Combined flat with CR rejected

 OPTIONAL KEYWORDS:
  GAIN       - gain
  RN         - Read noise (for the VAR output only)

 OPTIONAL OUTPUTS:
   VAR       - Variance image

 COMMENTS:

 EXAMPLES:
   flat = x_addtwoflats(img1, img2)


 PROCEDURES CALLED:

 REVISION HISTORY:
   17-Jan-2002 Written by JXP

(See IMG/Reduction//x_addtwoflats.pro)


X_ALAV

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_alav
   Version 1.0

 PURPOSE:
    Report A_lambda/A(V) given lambda for a user specific extinction
    law. Default is the Cardelli 1989 paramaterization of the MW.
    The 'laws' are contained in .dat files in XIDL_DIR/Dust

 CALLING SEQUENCE:
   
   dat = x_alav(lambda, RV=, /SMC, /CALZ)

 INPUTS:
   lambda  -- Wavelengths to evaluate A at (angstroms)

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  RV= -- Value of R_V
  /SMC -- Use the SMC law
  /CALZ -- Use the Calzetti law

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   2006 Written by JXP

(See Dust//x_alav.pro)


X_ALLVELO

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

 PURPOSE:
  Create an array of velocity arrays for a string of transitions

 CALLING SEQUENCE:
   all_velo = x_allvelo(wave, zabs, wrest, vmnx, ALL_PMNX=, NPIX=)

 INPUTS:
  wave  -- Wavelength array
  zabs  -- Redshift of absorption system
  wrest -- Array of rest wavelengths
  vmnx  -- 2-element array of velocities

 RETURNS:
  all_velo  -- Velocity array (one per rest wavelength)

 OUTPUTS:

 OPTIONAL KEYWORDS:
  NPIX -- Number of pixels in the array

 OPTIONAL OUTPUTS:
  ALL_PMNX=  -- pixmin and pixmax array

 COMMENTS:

 EXAMPLES:
   all_velo = x_allvelo(wave, zabs, wrest, vmnx, ALL_PMNX=)

 PROCEDURES CALLED:

 REVISION HISTORY:
   24-Oct-2002 Written by JXP

(See Spec/General//x_allvelo.pro)


X_ALLVOIGT

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

 PURPOSE:
   Calculate a single voigt profile, given wavelength, absorber, and
    an array of lines.  Warning:  This program is not exact!

 CALLING SEQUENCE:
   tau = x_allvoigt(wave,lines, SIGMA=, MNDV=)

 INPUTS:
   wave       - Array of wavelengths to realize voigt profile
   lines      - Line(s) structure to compute voigt profile, if mutliple,
                   the entire list will be looped through.
  RETURNS:
   tau        - Optical depth at each wavelength

 OPTIONAL INPUTS:
   SIGMA=     - Resolution of instrument in pixels
   MNDV=      - Range in velocity to calculate Voigt over [defalut:
                1000 km/s]

 OUTPUTS:

 OPTIONAL OUTPUTS:

 COMMENTS:

  Line is a structure with:

 ** Structure <81a5f94>, 4 tags, length=24, refs=3:
    ION             STRING    'H I'
    WAVE            DOUBLE           1215.6701
    F               FLOAT          0.416400
    GAMMA           FLOAT       6.26500e+08

  Abs must have at least :

** Structure ABS, 10 tags, length=44:
   N               FLOAT           15.0000   	log 10 Column density
   B               FLOAT           5.00000     velocity dispersion (km/s)
   Z               FLOAT           2.00000	redshift

 EXAMPLES:

 BUGS: ;
 PROCEDURES CALLED:

 REVISION HISTORY:
   25-May-2000  Created by S. Burles, FNAL/IAP
                Modified by JXP

(See Spec/Voigt//x_allvoigt.pro)


X_APALL

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

 PURPOSE:
    Performs an aperture extraction on a 2D image.  Much like IRAFs
    apall routine.

 CALLING SEQUENCE:
  spec = x_apall( img, OVR=, CLINE=, APER=, $
                 SKYFUNC=, SKYNORD=, SKYREG=, $
                 /DISPLAY, /NOREJ, TRACE=, /NOOV, $
                 /NOSKY=, STRCT=, RN=, GAIN=, VAR=, $
                 /CRUDE, TINTER=, ERROR=, /SILENT )

 INPUTS:
   img -- 2D spectrum

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /DISPLAY - Display the sky subtracted image with xatv
  OVR=     - String array for ov region:  '[2050:2100, *]'
  VAR=     - Variance image
  RN=      - Read noise [default: 5.]
  GAIN=    - Gain [default: 1.]
  /CRUDE   - Use trace_crude to trace the object
  /TINTER  - Fit the trace interactively
  /NOSKY   - Do not sky subtract
  SKYFUNC= - Function to use to fit the sky [default: POLY]
  SKYNORD= - Order for sky fit [default: 1]
  SKYREG=  - Region to fit the sky
  /NOREJ   - Do not do rejection when fitting the sky
  CLINE=   - Line to identify object in [default: sz[0]/2]
  APER=    - Aperture to extract [default: determine interactively]
  /NOOV    - Do not perform OV subtraction
  /ROT     - Transpose the data (code expects data parallel to rows)

 OPTIONAL OUTPUTS:
   ERROR=   - Sigma array (or is it variance?)
   STRCT=   - Structure defining the various extraction parameters.
              Useful for performing wavelength subtraction
   TRACE=   - Output trace

 COMMENTS:

 EXAMPLES:
   spec = x_apall('spec.fits', STRCT=strct)


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   19-Nov-2001 Written by JXP
   05-Dec-2001 Modularized most of the routine

(See Spec/Extraction//x_apall.pro)


X_APER

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
      X_APER
 PURPOSE:
      Compute concentric aperture photometry (adapted from DAOPHOT) 
 EXPLANATION:
     APER can compute photometry in several user-specified aperture radii.  
     A separate sky value is computed for each source using specified inner 
     and outer sky radii.   

 CALLING SEQUENCE:
     APER, image, xc, yc, [ mags, errap, sky, skyerr, phpadu, apr, skyrad, 
                       badpix, /NAN, /EXACT, /FLUX, /MED_SKY, PRINT = , /SILENT, 
                       SETSKYVAL = ]
 INPUTS:
     IMAGE -  input image array
     XC     - vector of x coordinates. 
     YC     - vector of y coordinates

 OPTIONAL INPUTS:
     PHPADU - Photons per Analog Digital Units, numeric scalar.  Converts
               the data numbers in IMAGE to photon units.  (APER assumes
               Poisson statistics.)  
     APR    - Vector of up to 12 REAL photometry aperture radii.
     SKYRAD - Two element vector giving the inner and outer radii
               to be used for the sky annulus.   Ignored if the SETSKYVAL
              keyword is set.
     BADPIX - Two element vector giving the minimum and maximum value
               of a good pixel.   If badpix is not supplied or if BADPIX[0] is
               equal to BADPIX[1] then it is assumed that there are no bad
               pixels.     Note that fluxes will not be computed for any star
               with a bad pixel within the aperture area, but that bad pixels
               will be simply ignored for the sky computation.    The BADPIX
               parameter is ignored if the /NAN keyword is set.

 OPTIONAL KEYWORD INPUTS:
     /EXACT -  By default, APER counts subpixels, but uses a polygon 
             approximation for the intersection of a circular aperture with
             a square pixel (and normalize the total area of the sum of the
             pixels to exactly match the circular area).   If the /EXACT 
             keyword, then the intersection of the circular aperture with a
             square pixel is computed exactly.    The /EXACT keyword is much
             slower and is only needed when small (~2 pixels) apertures are
             used with very undersampled data.    
     /FLUX - By default, APER uses a magnitude system where a magnitude of
               25 corresponds to 1 flux unit.   If set, then APER will keep
              results in flux units instead of magnitudes.
     /NAN  - If set then APER will check for NAN values in the image.   /NAN
             takes precedence over the BADPIX parameter.   Note that fluxes 
             will not be computed for any star with a NAN pixel within the 
             aperture area, but that NAN pixels will be simply ignored for 
             the sky computation.
     PRINT - if set and non-zero then APER will also write its results to
               a file aper.prt.   One can specify the output file name by
               setting PRINT = 'filename'.
     READNOISE - Scalar giving the read noise (or minimum noise for any
              pixel.   This value is passed to the procedure mmm.pro when
              computing the sky, and is only need for images where
              the noise is low, and pixel values are quantized.   
     /SILENT -  If supplied and non-zero then no output is displayed to the
               terminal.
     SETSKYVAL - Use this keyword to force the sky to a specified value 
               rather than have APER compute a sky value.    SETSKYVAL 
               can either be a scalar specifying the sky value to use for 
               all sources, or a 3 element vector specifying the sky value, 
               the sigma of the sky value, and the number of elements used 
               to compute a sky value.   The 3 element form of SETSKYVAL
               is needed for accurate error budgeting.

    /MED_SKY - Instead of using MMM to calculate sky value, just take a simple median.
               Does nothing if SETSKYVAL is set.


 OUTPUTS:
     MAGS   -  NAPER by NSTAR array giving the magnitude for each star in
               each aperture.  (NAPER is the number of apertures, and NSTAR
               is the number of stars).   If the /FLUX keyword is not set, then
               a flux of 1 digital unit is assigned a zero point magnitude of 
               25.
     ERRAP  -  NAPER by NSTAR array giving error for each star.  If a 
               magnitude could not be determined then  ERRAP = 9.99 (if in 
                magnitudes) or ERRAP = !VALUES.F_NAN (if /FLUX is set).
     SKY  -    NSTAR element vector giving sky value for each star in 
               flux units
     SKYERR -  NSTAR element vector giving error in sky values

 EXAMPLE:
       Determine the flux and error for photometry radii of 3 and 5 pixels
       surrounding the position 234.2,344.3 on an image array, im.   Compute
       the partial pixel area exactly.    Assume that the flux units are in
       Poisson counts, so that PHPADU = 1, and the sky value is already known
       to be 1.3, and that the range [-32767,80000] for bad low and bad high
       pixels
      

       IDL> aper, im, 234.2, 344.3, flux, eflux, sky,skyerr, 1, [3,5], -1, $
            [-32767,80000],/exact, /flux, setsky = 1.3
       
 PROCEDURES USED:
       GETOPT, MMM, PIXWT(), STRN(), STRNUMBER()
 NOTES:
       Reasons that a valid magnitude cannot be computed include the following:
      (1) Star position is too close (within 0.5 pixels) to edge of the frame
      (2) Less than 20 valid pixels available for computing sky
      (3) Modal value of sky could not be computed by the procedure MMM
      (4) *Any* pixel within the aperture radius is a "bad" pixel
      (5) The total computed flux is negative

       APER was modified in June 2000 in two ways: (1) the /EXACT keyword was
       added (2) the approximation of the intersection of a circular aperture
       with square pixels was improved (i.e. when /EXACT is not used) 
 REVISON HISTORY:
       Adapted to IDL from DAOPHOT June, 1989   B. Pfarr, STX
       Adapted for IDL Version 2,               J. Isensee, July, 1990
       Code, documentation spiffed up           W. Landsman   August 1991
       TEXTOUT may be a string                  W. Landsman September 1995
       FLUX keyword added                       J. E. Hollis, February, 1996
       SETSKYVAL keyword, increase maxsky       W. Landsman, May 1997
       Work for more than 32767 stars           W. Landsman, August 1997
       Don't abort for insufficient sky pixels  W. Landsman  May 2000
       Added /EXACT keyword                     W. Landsman  June 2000 
       Allow SETSKYVAL = 0                      W. Landsman  December 2000 
       Set BADPIX[0] = BADPIX[1] to ignore bad pixels W. L.  January 2001     
       Fix chk_badpixel problem introduced Jan 01 C. Ishida/W.L. February 2001
       Set bad fluxes and error to NAN if /FLUX is set  W. Landsman Oct. 2001 
       Remove restrictions on maximum sky radius W. Landsman  July 2003
       Added /NAN keyword  W. Landsman November 2004
       Set badflux=0 if neither /NAN nor badpix is set  M. Perrin December 2004
       Added READNOISE keyword   W. Landsman January 2005
       LKP added MED_SKY keyword Oct 2007

(See IMG/Photometry//x_aper.pro)


X_ARCIMAGE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_arcimage   
    Version 1.0

 PURPOSE:
    Creates an arcimage given a tracestructure.  This code has been
    superseded by x_mkaimg.

 CALLING SEQUENCE:
   
   arcimg = x_arcimage( trcstrct, arcfit, sz_img )

 INPUTS:
   trcstrct - Trace structure (contains all of the info on the
              position and value of various arc lines)
   arcfit   - Template fit structure ; Includes fit instructions
   sz_img   - Size of output image
   [lines]  - Line list strurcture (Usually defined)

 RETURNS:
   arcimg

 OUTPUTS:

 OPTIONAL KEYWORDS:
  YSTRT  - Row defining the arcfit [default = middle]
  LINELIST  - Arc line list (in lieu of lines)
  NSIG  - Sig of RMS from the fit that line must match

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   arcimg = x_arcimage( trcstrct, arcfit, imgsz)

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   18-Feb-2002 Written by JXP

(See Spec/Arcs//x_arcimage.pro)


X_ARCLIST

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

 PURPOSE:
    Reads a line list into an arclin strutcture

 CALLING SEQUENCE:
   x_arclist, linelist, lines, /GDONLY

 INPUTS:
   linelist  - Name of line list (formatted: D, I, A)

 RETURNS:
   arclinstr   -  Arc line structure

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /GDONLY -- Restrict the line list to those where flg_qual NE 0

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_arclist, linelist, lines

 PROCEDURES/FUNCTIONS CALLED:
  arclinstrct__define
  readcol

 REVISION HISTORY:
   14-Feb-2002 Written by JXP

(See Spec/Arcs//x_arclist.pro)


X_ARCPEAKUP

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

 PURPOSE:
    Finds the fit iteratively to a set of lines given the Arc
    spectrum and a line list.  This code has been superseded by
    x_arctempl.

 CALLING SEQUENCE:
   x_arcpeakup, spec, lines, FFIT=, WV=, NFRST=, NFIN=, /INTER, SIG=

 INPUTS:
   spec       - Input arc spectrum
   lines      - Arc line list structure

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  NFRST= -- Order of fit for the first try [default: 3L]
  NFIN=  -- Order of fit for the final fit
  MXOFF= -- Maximum pixel offset between a line and its expected
            position
  SIG=   -- Lower and upper sigma values for fitting

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_arcpeakup, spec, lines, guessfit


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   26-Aug-2002 Written by JXP

(See Spec/Arcs//x_arcpeakup.pro)


X_AUTOID

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_autoid   
    Version 1.0

 PURPOSE:
    Given a 1D arc-line spectrum from the WFCCD or ESI-LowD, this
    code will automatically determine the wavelength solution.

 CALLING SEQUENCE:
   x_autoid, img, [extrct], instr=, IDLIST=, GUESS=, LINELIST=,
                       TOLER=

 INPUTS:
   img       - Input arc image or spectrum
   [extrct]    - Slit edges (default to image edges)

 RETURNS:

 OUTPUTS:
   FITSTR -  Fit structure;  Set values prior to passing for 

 OPTIONAL KEYWORDS:
   CPROG  -  Run the monte-carlo in the c program (advised)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_autoid, img, instr='WFCCDB'


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   12-Feb-2002 Written by JXP

(See Spec/Arcs//x_autoid.pro)


X_AUTOPHOT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
      x_autophot
 PURPOSE:
      Compute concentric aperture photometry (adapted from DAOPHOT) 
    I have adopted this from the Goddard routines
 EXPLANATION:
     APER can compute photometry in several user-specified aperture radii.  
     A separate sky value is computed for each source using specified inner 
     and outer sky radii.   

 CALLING SEQUENCE:
     APER, image, xc, yc, [ mags, errap, sky, skyerr, phpadu, apr, skyrad, 
                       badpix, /EXACT, /FLUX, PRINT = , /SILENT, SETSKYVAL = ]
 INPUTS:
     IMAGE -  input image array
     XC     - vector of x coordinates. 
     YC     - vector of y coordinates

 OPTIONAL INPUTS:
     PHPADU - Photons per Analog Digital Units, numeric scalar.  Converts
               the data numbers in IMAGE to photon units.  (APER assumes
               Poisson statistics.)  
     APR    - Vector of up to 12 REAL photometry aperture radii.
     SKYRAD - Two element vector giving the inner and outer radii
               to be used for the sky annulus
     BADPIX - Two element vector giving the minimum and maximum value
               of a good pix (Default [-32765,32767]).    If BADPIX[0] is
               equal to BADPIX[1] then it is assumed that there are no bad
               pixels.

 OPTIONAL KEYWORD INPUTS:
     /EXACT -  By default, APER counts subpixels, but uses a polygon 
             approximation for the intersection of a circular aperture with
             a square pixel (and normalize the total area of the sum of the
             pixels to exactly match the circular area).   If the /EXACT 
             keyword, then the intersection of the circular aperture with a
             square pixel is computed exactly.    The /EXACT keyword is much
             slower and is only needed when small (~2 pixels) apertures are
             used with very undersampled data.    
     /FLUX - By default, APER uses a magnitude system where a magnitude of
               25 corresponds to 1 flux unit.   If set, then APER will keep
              results in flux units instead of magnitudes.
     PRINT - if set and non-zero then APER will also write its results to
               a file aper.prt.   One can specify the output file name by
               setting PRINT = 'filename'.
     /SILENT -  If supplied and non-zero then no output is displayed to the
               terminal.
     SETSKYVAL - Use this keyword to force the sky to a specified value 
               rather than have APER compute a sky value.    SETSKYVAL 
               can either be a scalar specifying the sky value to use for 
               all sources, or a 3 element vector specifying the sky value, 
               the sigma of the sky value, and the number of elements used 
               to compute a sky value.   The 3 element form of SETSKYVAL
               is needed for accurate error budgeting.

 OUTPUTS:
     MAGS   -  NAPER by NSTAR array giving the magnitude for each star in
               each aperture.  (NAPER is the number of apertures, and NSTAR
               is the number of stars).   A flux of 1 digital unit is assigned
               a zero point magnitude of 25.
     ERRAP  -  NAPER by NSTAR array giving error in magnitude
               for each star.  If a magnitude could not be deter-
               mined then ERRAP = 9.99.
     SKY  -    NSTAR element vector giving sky value for each star
     SKYERR -  NSTAR element vector giving error in sky values

 PROCEDURES USED:
       DATATYPE(), GETOPT, MMM, PIXWT(), STRN(), STRNUMBER()
 NOTES:
       Reasons that a valid magnitude cannot be computed include the following:
      (1) Star position is too close (within 0.5 pixels) to edge of the frame
      (2) Less than 20 valid pixels available for computing sky
      (3) Modal value of sky could not be computed by the procedure MMM
      (4) *Any* pixel within the aperture radius is a "bad" pixel

       APER was modified in June 2000 in two ways: (1) the /EXACT keyword was
       added (2) the approximation of the intersection of a circular aperture
       with square pixels was improved (i.e. when /EXACT is not used) 
 REVISON HISTORY:
       Adapted to IDL from DAOPHOT June, 1989   B. Pfarr, STX
       Adapted for IDL Version 2,               J. Isensee, July, 1990
       Code, documentation spiffed up           W. Landsman   August 1991
       TEXTOUT may be a string                  W. Landsman September 1995
       FLUX keyword added                       J. E. Hollis, February, 1996
       SETSKYVAL keyword, increase maxsky       W. Landsman, May 1997
       Work for more than 32767 stars           W. Landsman, August 1997
       Converted to IDL V5.0                    W. Landsman   September 1997
       Don't abort for insufficient sky pixels  W. Landsman  May 2000
       Added /EXACT keyword                     W. Landsman  June 2000 
       Allow SETSKYVAL = 0                      W. Landsman  December 2000 
       Set BADPIX[0] = BADPIX[1] to ignore bad pixels W. L.  January 2001     
       Fix chk_badpixel problem introduced Jan 01 C. Ishida/W.L. February 2001 

(See IMG/Photometry//x_autophot.pro)


X_AVSIGCLIP

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

 PURPOSE:
   Average multiple images with sigma-rejection.  This routine
   makes extensive use of Schlegels avsigclip routine.

 CALLING SEQUENCE:
   result = x_avsigclip( array, [ dimension, siglo=, sighi=, maxiter=, $
    inmask=, outmask= ] )

 INPUTS:
   array      - N-dimensional array

 OPTIONAL INPUTS:
   dimension  - The dimension over which to collapse the data.  If ommitted,
                assume that the last dimension is the one to collapse.
   siglo     - Low Sigma for rejection; default to 3.0.
   sighi     - High Sigma for rejection; default to 3.0.
   maxiter    - Maximum number of sigma rejection iterations.  One iteration
                does no sigma rejection; default to 10 iterations.
   inmask     - Input mask, setting =0 for good elements

 OUTPUTS:
   result     - The output array.
   outmask    - Output mask, setting =0 for good elements, =1 for bad.
                Any pixels masked in INMASK are also masked in OUTMASK.

 OPTIONAL OUTPUTS:

 COMMENTS:
   The DIMENSION input is analogous to that used by the IDL built-in
   function TOTAL.

 EXAMPLES:
   Create a data cube of 10 random-valued 100x200 images.  At each pixel in
   the image, compute the average of the 10 values, but rejecting 3-sigma
   outliers:
   > array = randomu(123,100,200,10)
   > ave = x_avsigclip(array, siglo=3., sighi=4.)


   If all points are masked in any given vector or array, a mean and
   dispersion are computed for all the points.  Is this the behaviour we want?
   If you want to replace those values with zeros instead, look at OUTMASK:
   > array = randomu(123,100,200)
   > inmask = bytarr(100,200)
   > inmask[*,8] = 1 ; mask all of row #8
   > ave = x_avsigclip(array, 1, inmask=inmask, outmask=outmask)
   > ibad = where( total(1-outmask, 1) EQ 0)
   > if (ibad[0] NE -1) then ave[ibad] = 0 ; zero-out bad rows

 BUGS:

 PROCEDURES CALLED:
   Dynamic link to arravsigclip.c

 REVISION HISTORY:
   07-Jul-1999  Written by David Schlegel, Princeton.
   28-Jul-2001  Revised by JXP (Added lo/hi sigrej)

(See IMG/Reduction//x_avsigclip.pro)


X_CALC2DFIT

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

 PURPOSE:
    Calculates a 2d fit-function at a set of xy pairs.  
    Restricted to a 2D polynomial for now.

 CALLING SEQUENCE:
   
   fit = x_calc2dfit(xyval, func, ffit, nx, ny, NRM=, FITSTR=)

 INPUTS:
   xyval      - 2D array [npix, 2] of the x,y values
   [func]     - String for Fitting function (POLY)
   [ffit]     - Output from the fitting stuff
   [nx]       - order of the 2d surface in x
   [ny]       - order of the 2d surface in y

 RETURNS:
   fit        - Values at each xyval [1D array]

 OUTPUTS:

 OPTIONAL KEYWORDS:
  FITSTR= -- IDL structure for 2D fitting (recommended)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   fit = x_calc2dfit(xy, 'POLY', ffit, 3, 3)


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   31-Jan-2002 Written by JXP

(See FIT//x_calc2dfit.pro)


X_CALCCOG

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

 PURPOSE:
  Perform a COG solution given a list of flambda values, EW
  measurements and the errors in those measurements.  The user inputs
  an array of column densities to search over and the code finds the
  minimum in chi^2 and returns the value.

  This code is currently only used to calculate the best b value for
  the lines for the given N values.  See fuse_cog for a better COG
  routine.  [JXP: 5/25/04]
   

 CALLING SEQUENCE:
   x_calccog, ew_red, sig_ew, flambda, Nval, blmt, FNDB=
   BANS=, /EXACT

 INPUTS:
   ew_red  -- Reduced ew array
   sigew   -- Error in ew 
   flambda  -- f lambda (assumes A not cm)
   Nval    -- List of Nval to consider
   blmt    --  Limits for b value search (assumes km/s)

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /EXACT  -- Calculate the COG exactly  (otherwise use lookup table)
  /FNDB   -- Find the b-value (only option now)

 OPTIONAL OUTPUTS:
  BANS=  -- The b value which minimizes chi^2

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:
  x_calccog_initcomm
  x_calccog_cog
  x_calccog_ftau

 REVISION HISTORY:
   05-Mar-2002 Written by JXP

(See Spec/Analysis//x_calccog.pro)


X_CALCEW

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

 PURPOSE:
    Calculates the EW given a wavelength and flux array and limits to
    integrate over.  Can also calculate the error in the EW as well
    as the reduced values.

 CALLING SEQUENCE:
   ew = x_calcew(wav, fx, lmts, [sig, sigew], /REDUCED, FPIX=)

 INPUTS:
   wav      - Rest wavelength [Angstromgs]
   fx       - Flux (presumed normalized)
   lmts     - Limits of integration (wavelength unless /FPIX is set)
   [sig]    - Error in fx

 RETURNS:
   ew   - Equivalent width

 OUTPUTS:

 OPTIONAL KEYWORDS:
 /REDUCED -- Divide EW value by lambda
 /FPIX  -- If flagged, this indicates the lmts array contains the
           pixel endpoints for the EW calculation.

 OPTIONAL OUTPUTS:
   sigew  - Error in ew

 COMMENTS:
  The flux array should be normalized to unity 

 EXAMPLES:
   ew = x_calcew( fx, sig, [50, 100], ERR=sigew, /FPIX) 

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   05-Mar-2002 Written by JXP

(See Spec/Analysis//x_calcew.pro)


X_CALCFIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_calcfit   
   Version 1.2

 PURPOSE:
    Calculates a fit-function at a set of x points

 CALLING SEQUENCE:
   
   fit = x_calcfit(xval,func,ffit, NORD=)

 INPUTS:
   xval       - Value(s) along one dimension
   [func]       - String for Fitting function (POLY, LEGEND, BSPLIN,
                GAUSS)
   [ffit]       - Output from the fitting stuff

 RETURNS:
   fit        - Values at each xval

 OUTPUTS:

 OPTIONAL KEYWORDS:
   nord=      - Required for LEGEND
   FITSTR=    - Fit structure (OVERRIDES input values of func, ffit)

 OPTIONAL OUTPUTS:
   NRM=       - Normalization parameters (-1 to 1)

 COMMENTS:

 EXAMPLES:
   fit = x_calcfit(x, 'POLY', 5)


 PROCEDURES/FUNCTIONS CALLED:
  POLY_FIT
  POLY
  SVDFIT
  SVLEG
  BSPLIN
  GAUSS

 REVISION HISTORY:
   20-Nov-2001 Written by JXP
   31-Jan-2002 Added NRM, CHEBY func, FITSTR

(See FIT//x_calcfit.pro)


X_CALCGAIN

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

 PURPOSE:
    Calculate the inverse gain, e-/DN with two very similiar input images
      For MIKE, milky flats or well illuminated flats are best.

 CALLING SEQUENCE:
   
  estimated_gain = x_gain(image1, image2)

 INPUTS:
   image1  -  Any array of pixels with reasonable gaussian errors
   image2  -  A very similar image to image1, but not identical!

 RETURNS:
  gain   -  A floating point number: the inverse gain

 OUTPUTS:

 OPTIONAL KEYWORDS:
  MINPIX -- Minimum number of pixels with DN>MINVAL in both images to
            perform statistics  (Default: 1000)
  MINVAL -- Minimum flux to perform stats (default: 100)

 OPTIONAL OUTPUTS:

 COMMENTS:
   The gain is calculated from the variance of the natural logarithm 
     of the ratio of two images which have units of ADU (Poisson counts / gain)

     <gain> = 1.0 / { variance [ sqrt(reduced_flux) * ln(i1/i2) ] } 

 EXAMPLES:
      image1 = readfits('ov_mr0405.fits') 
      image2 = readfits('ov_mr0406.fits')
      gain = x_calcgain(image1, image2)

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   16-Jul-2003 Written by SMB
   04-Apr-2005 Ported to XIDL by JXP

(See IMG/Reduction//x_calcgain.pro)


X_CALCLSTAR

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

 PURPOSE:
  Calculate apparent magnitude for Lstar at a given 
      redshift for a given cosmology and Hubbles constant.

 CALLING SEQUENCE:
   lstar = x_calclstar( z, H0=, AMIN=, /SILENT, OM=, OV=)

 INPUTS:
    z -- Redshift

 RETURNS:
    lstar -- Apparent magnitude for Lstar

 OUTPUTS:

 OPTIONAL KEYWORDS:
   lstr0 -- Assumed value of Lstar at z=0  [default: -21.06]
   H0 -- Hubbles constant (km/s/Mpc)
   OM -- Omega Dark Matter
   OV -- Lambda
   /SILENT -- No printing to the screen

 OPTIONAL OUTPUTS:
  AMIN -- Mpc per arcmin at z

 COMMENTS:

 EXAMPLES:
   lstar = x_calclstar(2., H0=75., AMIN=amin)

 PROCEDURES CALLED:

 REVISION HISTORY:
   22-Nov-2003 Written by JXP

(See Cosm//x_calclstar.pro)


X_CALCTB

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

 PURPOSE:
    Calculate the temperature of a gas given its Doppler parameter

 CALLING SEQUENCE:
   x_calctb, b, T, /LOGT, MA=

 INPUTS:
  b -- Doppler parameter (km/s)

 RETURNS:

 OUTPUTS:
  T -- Temperature (K)

 OPTIONAL KEYWORDS:
  /LOGT -- Return logarithmic temperature
  MA -- Mass of nucleus [1 for Hydrogen]

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
  x_calctb, 25., T, /LOGT


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   20-Dec-2001 Written by JXP

(See General//x_calctb.pro)


X_CALCTWILIGHT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_calctwilight   
    Version 1.0

 PURPOSE:
  Calculate twilight in LST given a lat+long+date

 CALLING SEQUENCE:
  
 INPUTS:
   date     - String name of the date of the night of observing at
              the observatory (not UT)
      Allowed formats:  DDmmmYY  (e.g. 22Oct99)
                        DD-MM-YY (e.g. 20-12-99)
                        YYYY-MM-DD (e.g. 1999-12-20)
                        DDMMMYYYY (e.g. 20JAN2004)
   obs_str   - Observatory structure (long, latitute, time zone)

 RETURNS: twlight in LST (decimal hours)

 OUTPUTS:

 OPTIONAL KEYWORDS:
   stmid -- LST at midnight (end of the input date)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:
  x_calclst

 REVISION HISTORY:
  Based on code in skycalendar v5 written by John Thorstensen
  Dartmouth College
   10-Dec-2009 Written by JXP

(See Obs//x_calctwilight.pro)


X_CALIBSTD

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

 PURPOSE:
  Given a standard star spectrum and a calibration file, calculate a
  sensitivity function parameterized by a BSLINE or some other function.

 CALLING SEQUENCE:
  x_calibstd, wave, flux, outfil, HSTFIL=, /CHKFIT, 
               EXP=, BSPLIN=, SWV=, SFX=, 
               GDWV=, BSET=, YFIT=, SENS=, EVERYN=

 INPUTS:
  wave -- Wavelength array of standard star
  flux -- Flux array of standard star

 RETURNS:

 OUTPUTS:
  outfil -- FITS file to write sensitivity function 

 OPTIONAL KEYWORDS:
  EXP= -- Exposure time [default: 1.]
  HSTFIL= -- HST calibration file
  /CHKFIT -- Plot the fit to the sensitivity function
  EVERYN= -- Spacing of b-spline breakpoints in pixel space [default: 5]

 OPTIONAL OUTPUTS:
  SWV=  -- Wavelength array of calibration data
  SFX=  -- Flux array of calibration data
  SENS= -- Sensitivity function

 COMMENTS:

 EXAMPLES:
   x_calibstd, kast, 0, 1, 0


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   29-Aug-2003 Written by JXP

(See Spec/Flux//x_calibstd.pro)


X_CCDINF

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_ccdinf   
   Version 1.0

 PURPOSE:
    Returns arcpix and orientation of ccd+tel combination.  This
   routine saves all of that key info in one spot, although it 
   is primarily used only for direct imaging.

 CALLING SEQUENCE:
   x_ccdinf, ccd, tel, arcpix, [orient], SAT=

 INPUTS:
   ccd   -  Name of CCD ('SITe1', 'LRISR', 'WFTek5')
   tel   -  Name of Telescope ('LCO-40', 'Keck', 'LCO-100')

 RETURNS:
   arcpix --  Arcsec per pixel

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:
   orient - Orientation of the CCD:
;                   -2 = SITe1 on LCO-40  (E up, N left)
  SAT=   -- Saturation limit of the CCD

 COMMENTS:

 EXAMPLES:
   x_ccdinf, 'SITe1', 'LCO-40', arcpix, SAT=sat


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   07-Aug-2001 Written by JXP

(See IMG/General//x_ccdinf.pro)


X_CENTERPK

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

 PURPOSE:
    Finds the center of a peak

 CALLING SEQUENCE:
   center = x_centerpk(xdat, ydat, [fracpk], VAR=, FUNC=, NORD=, HSIG=, LSIG=,
   IPX=, MINVAL=, FFIT=, /INTER)

 INPUTS:
   xdat       - x Values 
   ydat       - y Values 
   [fracpk]     - Fraction of peak relative to the minimum 
                      (default=1/3 max + min)

 RETURNS:
   center     - center of the peak

 OUTPUTS:
   ffit - Fit parameters

 OPTIONAL KEYWORDS:
   func - Function 
   VAR  - variance in ydat
   nord - order number
   HSIG - upper sigma
   LSIG - lower sigma
   IPX  - Allows user to give best guess
   INTER - Interative fit

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   center = x_centerpk(xdat, ydat, /inter)


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   23-Nov-2001 Written by JXP

(See Spec/General//x_centerpk.pro)


X_CENTFWGT[1]

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

 PURPOSE:
  Given a 'peak', this routine will find the center of that peak in a
  using flux weighting.

 CALLING SEQUENCE:
   
   xcen = x_centfwgt(xval, yval, [radius])

 INPUTS:
   xval       - x values of the peak
   yval       - y values of the peak
   [RADIUS]   - radius of data around the peak for centroiding

 RETURNS:
   xcen      - Center

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /SILENT -- Turn off warnings

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:


 PROCEDURES/FUNCTIONS CALLED:
 trace_fweight

 REVISION HISTORY:
   22-Jun-2005 Written by JXP

(See FIT//x_centfwgt.pro)


X_CENTFWGT[2]

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

 PURPOSE:
  Given a 'peak', this routine will find the center of that peak in a
  using flux weighting.

 CALLING SEQUENCE:
   
   xcen = x_centfwgt(xval, yval, [radius])

 INPUTS:
   xval       - x values of the peak
   yval       - y values of the peak
   [RADIUS]   - radius of data around the peak for centroiding

 RETURNS:
   xcen      - Center

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /SILENT -- Turn off warnings

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:


 PROCEDURES/FUNCTIONS CALLED:
 trace_fweight

 REVISION HISTORY:
   22-Jun-2005 Written by JXP

(See FIT//x_centgauss.pro)


X_CENTSPLN

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

 PURPOSE:
  Given a 'peak', this routine will find the center of that peak in a
  non-parameteric manner.  The routine first spliens the peak.  It
  then steps in from both sides
  until it hits FRACPK of the peak value of the line.  Finally, the
  centroid is the midpoint of these two spots.

 CALLING SEQUENCE:
   
   xcen = x_centspln(xval, yval, [fracpk])

 INPUTS:
   xval       - x values of the peak
   yval       - y values of the peak
   [FRACPK]   - Fraction of the peak for centroiding [default=0.3333]

 RETURNS:
   xcen      - Center

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /SILENT -- Turn off warnings
  /FORCE  -- Calculate a centroid even if the edges are non-sensical

 OPTIONAL OUTPUTS:
  EDGES=  -- Values of the spots on the peak corresponding to FRACPK

 COMMENTS:

 EXAMPLES:
   xcen = x_centspln(data)


 PROCEDURES/FUNCTIONS CALLED:
 x_fndspln
 x_golden

 REVISION HISTORY:
   07-Feb-2002 Written by JXP

(See FIT//x_centspln.pro)


X_CHGBW

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

 PURPOSE:
   Sets colors to black and white 

 CALLING SEQUENCE:
   
   x_chgbw

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_chgbw

 PROCEDURES CALLED:
 getcolor

 REVISION HISTORY:
   19-Dec-2001 Written by JXP

(See General//x_chgbw.pro)


X_CHKFIL

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

 PURPOSE:
    Check for a file and return the number of entries matching

 CALLING SEQUENCE:
   
 flag = x_chkfil(fil, COUNT=, /SILENT)

 INPUTS:
   fil - Filename 

 RETURNS:
   flag  - 0: No file; 1: One file; 2: More than one

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /SILENT -- Suppress messages to screen

 OPTIONAL OUTPUTS:
  COUNT - number of unique strings

 COMMENTS:

 EXAMPLES:
   flg = x_chkfil('junk.dat', count=cnt, /SILENT)

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   07-May-2002 Written by JXP

(See General//x_chkfil.pro)


X_CHKWINDOW

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

 PURPOSE:
  Check to see if a window is open

 CALLING SEQUENCE:
   
   x_chkwindow, win_id, get_all_active=

 INPUTS:
   win_id

 RETURNS:
   dat       - Byt array describing open windows

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:
  HEAD        - Header

 COMMENTS:

 EXAMPLES:


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   03-Jan-2005 Written by JXP

(See General//x_chkwindow.pro)


X_COMBSPEC

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_combspec
    Version 1.2

 PURPOSE:
   Combines multiple exposures of the same slit

 CALLING SEQUENCE:
  x_combspec, flux, var, fflux, fvar, NRMFLUX=, WAVE=, NSIG=,
               SCALE=, SNR=

 INPUTS:
   flux -- 2D flux array
   var  -- 2D variance array

 RETURNS:
  fflux -- Combined flux array
  fvar  -- Combined variance array

 OUTPUTS:

 OPTIONAL KEYWORDS:
  NRMFLUX  -  Array of 2 elements (wave min,max) to normalize flux
  WAVE=    -- Wavelength array for normalizing
  WVMNX=   -- Wavelength region for normalizing
  NSIG=    -- Number of sigma to reject on
  SCALE=   -- Scale the flux arrays by this array
  SNR=     -- Signal-to-noise ratios to weight by
  SKY=     -- Array containing the sky level

 OPTIONAL OUTPUTS:
  FSKY=    -- Combined sky spectrum
  FNOVAR=  -- Variance without object noise

 COMMENTS:

 EXAMPLES:
   x_combspec, flux, var, fflux, fvar

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   28-May-2002 Written by JXP
   03-Sep-2002 Added SCALE keyword + weighted means for 2 exposures
   25-Aug-2004 Modified x_combspec_two to scale both spectra and to
               combine if one spectra has zero flux (Kathy Cooksey)
   27-Dec-2006 Added novar functionality to combine variances which do 
               not include object noise (Joe Hennawi). 

(See Spec/Extraction//x_combspec.pro)


X_CONSTANTS

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

 PURPOSE:
    Return a structure of the usual physical constants.  Default is
    cgs units.

 CALLING SEQUENCE:
   
 cstr = x_constants(/KSG)

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /KSG -- Return mks units

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   cstr = x_constants()

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   07-May-2002 Written by JXP

(See General//x_constants.pro)


X_CONTINUUM

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

 PURPOSE:
    GUI used to fit the continuum of a spectrum (usually quasars).
    The user can dictate a SPLINE or perform a minimum chi^2 fit to
    regions with rejection.

 CALLING SEQUENCE:
   x_continuum, flux_fil, error_fil, FITSTR=, CONTI=, LSIG=, XSIZE=, YSIZE=,
   INFLG=, OUTFIL=, /SPLINE, INISPL=

 INPUTS:
   flux_fil   - Values along one dimension [optional]
   error_fil  - Values along the other

 RETURNS:

 OUTPUTS:
  OUTFIL=  -- Name of FITS file to save continuum

 OPTIONAL KEYWORDS:
   CONTI=  -- Name of FITS file containing previously saved
                continuum
   INFLG   -- 0 = yin, ysin as data arrays (fits allowed and
                expected)
                1 = One fits file (flux, sig)
                2 = One fits file (flux, sig, wave)
                3 = FUSE format
                5 = SDSS file
   XSIZE=  -- Window size in pixels
   YSIZE=  -- Window size in pixels
   LSIG=   -- Value for sigma rejection on low side [default: 2.5]
   INISPL= -- IDL file containing a saved SPLINE for the continuum
   FITSTR  -- Fit structure

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_continuum, 'Q0000.fits', OUTFIL='Q0000_c.fits', /SPLINE


 PROCEDURES/FUNCTIONS CALLED:
  POLY_FIT
  POLY
  SVDFIT
  SVLEG
  BSPLINE
  GAUSS
  XGETX_PLT
  XGETY_PLT
  XGETXPIX_PLT
  XGETYPIX_PLT
  GETCOLOR (coyote package)

; REVISION HISTORY:
   26-Feb-2002 Written by JXP

(See Spec/Analysis//x_continuum.pro)


X_CONVDEIMOSARC

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   x_convdeimosarc
    Version 1.0

 PURPOSE:
  Simple program to convert the DEIMOS line list to my own format

 CALLING SEQUENCE:

 INPUTS:

 OPTIONAL KEYWORDS:

 OUTPUTS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:

(See Spec/Arcs//x_convdeimosarc.pro)


X_CROSSARC

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

 PURPOSE:
    Finds shift between saved template and current arc spectra. 

 CALLING SEQUENCE:
  x_crossarc, guessarc, cur_aspec, guess_spec, guess_fit, ordrs, $
         ordr_shift, row_shift, chk=chk, sigrej=sigrej, /DEBUG

 INPUTS:
   guessarc  -  Filename of IDL save file with known wavelength solution
   cur_aspec -  Current extracted Arc spectra to be fit

   obj_id   -  Object identifier
   [side]   -  Blue (1), Red (2), or both [1,2L]    (Default: [1,2L])

 RETURNS:

 OUTPUTS:
   guess_spec -  saved arc spectrum rebinned to match cur_aspec
   guess_fit  -  polynomial wavelength fits in rebinned space
   ordrs      -  Orders matching saved spectrum
   ordr_shift -  Order offset between template and current
   row_shift  -  Pixel offset between template and current

 OPTIONAL KEYWORDS:
   /CHK      - Manually check steps along the way
   /DEBUG    - Debugging
   SIGREJ=   - Rejection sigma for outliers in arc line fitting
              (default: 2.)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:
   restore
   fft()

 REVISION HISTORY:
   2004 Written by SB

(See Spec/Arcs//x_crossarc.pro)


X_CUMULATIVE

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

 PURPOSE:
  Calculates a histogram of sorts [defunct]

 CALLING SEQUENCE:
   
 

 INPUTS:
   Array, binsize or nbin

 RETURNS:
   cumulative array 

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:
  XARR -- Value of xarray

 COMMENTS:

 EXAMPLES:
   cumul = x_cumulative(array, 0.05)

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   12-Dec-2004 Written by JXP

(See General//x_cumulative.pro)


X_CURVEFILL

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

 PURPOSE:
    Shade the region between two curves

 CALLING SEQUENCE:
      x_curvefill, x, y1, y2, COLOR=, OUTLINECOLOR=, OUTHICK=
   
 INPUTS:
  x -- x-values of the curve
  y1 -- lower set of y-values
  y2 -- upper set of y-values

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
 color=  -- Color for shading
 /LINE_FILL -- Hashes instead of fills
 ORIENTATION -- Sets the angle of the lines
 /xyreverse -- Lets you fill based on x rather than y
               ie: x->y, y1->x1, y2->x2 
 x2=  -- Lets you input a second array specifying both x1 and x2.

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   18-May-2006 Written by Joe H.
   7-Dec-2009 Modified by Marc R. (xyreverse and x2)

(See Color//x_curvefill.pro)


X_ECHCOMBSPEC

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

 PURPOSE:
   Combines multiple exposures of the same obj
    Must be run even on an object with a single exposure

 CALLING SEQUENCE:
  x_echcombspec, allobj, finspec, ordrs, keyindx

 INPUTS:
   allobj   -- Array of echspec structures
   ordrs    -- Orders to coadd 
   keyindx  -- Exposure to serve as the fiducial for stats

 RETURNS:

 OUTPUTS:
   finspec  --  echfspec structure containing the combined spectrum

 OPTIONAL KEYWORDS:
    /SILENT   - No text output
    /NOFLUX   - Use the fluxed array
    MINPIX1=  - Minimum 'good' pixels to calculate fitting profile
    ORDNM=    - Fitting profile order [default: 1]
    SNRMIN=   - Minimum S/N per pixel for stats [Default: 2]
    REJSIG=   - Parameter passsed to x_combine [default = 4.]
    MEDINDX=  - Value for median smoothing [default: 100]
    /NOREJ    - Do not search for and reject bad pixels (e.g. cosmic
    /ACHK     - Force check of all orders

 OPTIONAL OUTPUTS:

 COMMENTS: ;
 EXAMPLES:
   hires_combspec, hires, setup, obj_id, side

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   04-Jan-2004 Written by JXP
   10-Jun-2004 Revisited by GEP
   Sep-2005 Revisited by JXP

(See Spec/Analysis//x_echcombspec.pro)


X_ECHFITSTD

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_echfitstd   
   Version 1.3

 PURPOSE:
    GUI for tweaking a sensitivity function for an Echelle spectrum

 CALLING SEQUENCE:
   
   fit = x_echfitstd([xdat],ydat,func=,nord=, /inter, xsize=, ysize=)

 INPUTS:
   xdat       - Values along one dimension [optional]
   ydat       - Values along the other

 RETURNS:
   fit        - Values at each xdat

 OUTPUTS:

 OPTIONAL KEYWORDS:
   func       - String for Fitting function (POLY, LEGEND, BSPLINE,
                GAUSS, CHEBY)
   nord       - Order of the fit
   /inter      - Interactive fitting
   xsize      - Draw window xsize (pixels)
   ysize      - Draw window ysize (pixels)
   sig        - Errors in the points
   reg        - Regions of data to fit
   LSIG       - Lower SIGMA
   HSIG       - High SIGMA
   /REJ        - Turn rejection on
   DELPTS     - Array of user-deleted points
   MSK        - Array of 0,1 values [0=do not include]

 OPTIONAL OUTPUTS:
   bset       - Bspline info
   rms        - RMS of the fit (only valid for fits with rejection)

 COMMENTS:

 EXAMPLES:
   fit = x_echfitstd(x, y, 'POLY', nord=5, /inter)


 PROCEDURES/FUNCTIONS CALLED:
  POLY_FIT
  POLY
  SVDFIT
  SVLEG
  BSPLINE
  GAUSS
  XGETX_PLT
  XGETY_PLT
  XGETXPIX_PLT
  XGETYPIX_PLT
  GETCOLOR (coyote package)

 REVISION HISTORY:
   22-June-2001 Written by JXP
   28-June-2001 Added LEGENDRE fits (JXP)
   23-Nov-2001 Added BSPLIN (SB), GAUSS, REJECTION (JXP)
   31-Jan-2002 Added CHEBYSHEV

(See Spec/Flux//x_echfitstd.pro)


X_ECHTRCARC

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

 PURPOSE:
    To trace the arc lines in each order (individually) and fit a
    straight line to each one.  The following steps are taken:
    1.  Scattered light is removed from the image
    2.  All significant arc lines are identified (5 sigma)
    3.  trace_crude is used to trace the lines 
    4.  trace_crude is reapplied to only those lines which are
    entirely in the order
    5.  xy2traceset is used to fit a straight line to each arc line
    6.  Only the good lines are saved for 2D fitting in a structure
    which is written to disk

 CALLING SEQUENCE:
 x_echtrcarc, arc_fil, ordr_str, out_fil, SZCCD=, $
                            INIO=, ALL_XSET=, /CLOBBER, $
                            QAFIL=
   
 INPUTS:
  arc_fil  -- Name of arc file for tracing
  ordr_str -- Order strucure describing the echelle footprint
  out_fil  -- Name of FITS file describing the traces

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   INIO      - Initial order to trace (for debugging)
   /CLOBBER  - Overwrite previous fits
  SZCCD -- Dimensions of the ccd

 OPTIONAL OUTPUTS:
 ALL_XSET --  A structure containing the info
 QAFIL    --  Filename for QA output

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   28-Apr-2003 Written by SB

(See Spec/Arcs//x_echtrcarc.pro)


X_EDITSPEC

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

 PURPOSE:
    Allows user to reset values of a spectrum to reject bad regions
    using a simple GUI

 CALLING SEQUENCE:
   
   x_editspec, wv, fx, var, [title], XSIZE=, YSIZE=, ISPEC=, 
               /BLOCK, NEWVAR=, FLG=, NEWFLG=

 INPUTS
   wv  -- Wavelength array  (expected to be a 2D array [npix, nspec])
   fx  -- Flux array (expected to be a 2D array [npix, nspec])
  var  -- Variance array (expected to be a 2D array [npix, nspec])
  [title] -- List of object ID numbers

 RETURNS:

 OUTPUTS:
  NEWVAR=  -- Updated variance array which has bad pixels (regions) masked
  NEWFLG=  -- Flag used to specify whether to analyse the spectrum

 OPTIONAL KEYWORDS:
   xsize   - Draw window xsize (pixels)
   ysize   - Draw window ysize (pixels)
  /BLOCK   - Block the window

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_editspec 


 PROCEDURES/FUNCTIONS CALLED:
  XGETX_PLT
  XGETY_PLT
  XGETXPIX_PLT
  XGETYPIX_PLT

 REVISION HISTORY:
   03-May-2002 Written by JXP

(See Spec/Analysis//x_editspec.pro)


X_EXTAPPROF

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_extapprof
    Version 1.0

 PURPOSE:
    Given the flux and wave images and the starting position of the
       object to extract (x,y),  do a trace (if necessary) and then
       calcualte the aperture and a Gaussian fit to the aperture.

 CALLING SEQUENCE:
   
   x_extapprof, fx, wv, xyguess

 INPUTS:
   fx     -- Flux image
   wv     -- Wavelength image
  xyguess -- Guess at the trace

 RETURNS:

 OUTPUTS:
   apstrct -- Structure containing the key info for the aperture and
              profile

 OPTIONAL KEYWORDS:
   WVMNX - Endpoints for extraction (default: [3200., 11000.])
   COLLMNX - Endpoints for collapsing the spectrum prior to extraction
              (default: [3400., 8000.])
   VAR=  -- Variance array
   FRAC=  -- Fraction of flux NOT to include in aperture [default:
             0.025, which corresponds to 5% total]
   TRC_ORD= -- Polynomial order for fitting the trace [default: 5]
   /SKYSUB  -- Perform simple sky subtraction before calculating the
               profile
  PARAMETERS to TRACE_CRUDE:  NMED, NAVE, TRADIUS, MXSHIFT

 OPTIONAL OUTPUTS:
  TOT_TRC -- Final trace (can be an input too)
  FLG_APER= -- Flag describing the success (1= good)

 COMMENTS:

 EXAMPLES:
   x_extapprof, slitstr, map


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   17-Sep-2004 Written by JXP

(See Spec/Extraction//x_extapprof.pro)


X_EXTECHOPT

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

 PURPOSE:
   Extract 1D spectra from the 2D images.  For each order, a boxcar
   and an optimal extraction is performed.  For the latter, an object
   profile is derived and both the object flux and sky are fit throughout
   the order (i.e. not row by row).  The main driver is
   x_extechopt.  For the optimal extraction, the data is extracted
   to a specific set of vacuum wavelengths, chosen to be the same for
   every spectrum to facilitate coadding without rebinning.  Here are
   the steps in detail:

    1.  Perform a boxcar extraction using extract_box
    2.  Estimate the SNR per order from the boxcar extraction
      -- LOOP ON ORDERS IN DECREASING SNR --
    3.  Fit the boxcar extraction with a bspline
    4.  Calculate the object profile
          a. bspline_iterfit the flux vs position on slit
          b. Force the profile to be positive everywhere and have a
          sensible FWHM
    5.  Fit the order using the profile and sky (bspline_extract)

 CALLING SEQUENCE:
   
 x_extechopt, img, skysub, ivar, ordr_str, obj_str, velpix, radius=

 INPUTS:
  img      -- Data image
  skysub   -- Sky subtraction image from x_echskysub
  ivar     -- Inverse variance image
  ordr_str -- Order structure describing the echelle footprint
  velpix   -- Size of pixel in velocity units (km/s)

 RETURNS:

 OUTPUTS:
  obj_str  -- Structure containing the trace and extracted data

 OPTIONAL KEYWORDS:
   /BOXONLY  -- Only do boxcar extraction
   SKYFIL=  -- Filename containing the sky spectrum
   IMG_ARC=  -- Wavelength image
   BASE_APER= -- Aperture for boxcar [default: 0.75, 0.75]
   /OCHK   - Plot the extracted flux (optimal) for each order
   /RESCHK - Check the residuals of the 2D, fully extracted image
   /DEBUG  - Stop within extraction routine to check stuff
   HIGHSNR - Value of SNR^2 of the data for a given order which when
             exceeded mike_box uses an additional parameter for the
             profile shape.  (Default:  500 corresponding to SNR=22)
             Lowering this parameter may improve extraction.
   ORDRS   - Input array of physical order numbers to extract
   /EXTENBOX   - Allows the boxcar aperture to be larger than the 
                 slit length defined by the trace flats (only
                 recommended for very bright stars)
   MIN_CUT - Minimum length for cutoff aper in fractional slit length
             [default: 0.].  For
             longer slits and good seeing, it may be useful to set
             this to a number like 0.5 or larger
   FIN_MASK -- Image of masked pixels (mainly cosmic rays)
   MSKTRIM= -- Value to trim edge of slit by [default: 0.5]
   /SKIPSKYSUB  -- Skip sky subtraction

 Optional OUTPUTS:
  FIN_TRC=  -- Final trace of spectrum
  MODEL_OBJ= -- Model of the object flux
  MODEL_SKY= -- Model of the sky
  MODEL_PROF= -- Model of the object profile

 COMMENTS:
  The program extracts the orders in order of decreasing SNR.  If the
  SNR is lower than lowsnr (default: 2.49) then the optimal
  extraction is performed using the profile parameters from the
  previous order(s).

 EXAMPLES:
   x_extechopt

 PROCEDURES/FUNCTIONS CALLED:
  extract_boxcar
  x_smoothmask
  bspline_extract

 REVISION HISTORY:
   26-Aug-2003 Written by SMB
   Feb-2005 Ported to XIDL by JXP

(See Spec/Extraction//x_extechopt.pro)


X_EXTOBJBOX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_extobjbox   
    Version 1.0

 PURPOSE:
    Given the flux and wave images and the starting position of the
       object to extract (x,y),  do a boxcar extraction

 CALLING SEQUENCE:
   
  x_extobjbox, fx, wv, xyguess, fin_spec, MSK=, VAR=, WVMNX=

 INPUTS:
  fx  -- Image array
  wv  -- Wavelength array
  xyguess -- Guess at the trace

 RETURNS:

 OUTPUTS:
   fin_spec -- Final spectrum

 OPTIONAL KEYWORDS:
   WVMNX - Endpoints for extraction (default: [3200., 11000.])
   COLLMNX - Endpoints for collapsing the spectrum prior to extraction
              (default: [3400., 8000.])
   REDBLUE - Spectrum runs from red to blue
   NEWWV -  Finaly 1D wavelength array desired
   CRVAL1 -  Starting wavelength of final 1D array
   CDELT -   Delta lambda (lor or linear)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_extobjbox, slitstr, map


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   01-Apr-2002 Written by JXP

(See Spec/Extraction//x_extobjbox.pro)


X_EXTOBJOPT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_extobjopt   
    Version 1.0

 PURPOSE:
    Given the flux and wave images, extract a 1D spectrum using the
    Horne optimal algorithm.  Assumes a Gaussian or input profile
    image for now.

 CALLING SEQUENCE:
   
   x_extobjopt, fx, wv, xyguess, fin_spec

 INPUTS:
    fx -- 2D Image
    wv -- 2D wavlenegth array
    xyguess -- One spot on the image that the object is

 RETURNS:

 OUTPUTS:
   fin_spec -- Final 1D spectrum

 OPTIONAL KEYWORDS:
   WVMNX - Endpoints for extraction (default: [3200., 11000.])
   COLLMNX - Endpoints for collapsing the spectrum prior to extraction
              (default: [3400., 8000.])
   REDBLUE - Spectrum runs from red to blue
   NEWWV -  Finaly 1D wavelength array desired
   CRVAL1 -  Starting wavelength of final 1D array
   CDELT -   Delta lambda (lor or linear)
   DEFGAU = Value for Gaussian profile if data is insufficient
   USEGAU = Use this Gaussian sigma for the profile 
   NCRITER = Number of iterations of CR rejection (default: 1)

 OPTIONAL OUTPUTS:
  QAPROF -- The object profile for QA purposes

 COMMENTS:

 EXAMPLES:
   x_extobjopt, slitstr, map


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   20-Sep-2004 Written by JXP

(See Spec/Extraction//x_extobjopt.pro)


X_EXTRACT

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

 PURPOSE:
    Extracts a 1D spectrum from a 2D image given an aperture.  This
  routine is superseded by x_extobjbox

 CALLING SEQUENCE:
   spec = x_extract(img, aper, trace, [error, sky], CAPER=, GAIN=,
                    RN=, /OPTIMAL)

 INPUTS:
   img       - 2D Image
   aper      - Aperture to extract
   trace     - Trace of the spectrum
   [sky]     - Optional input required for error output

 RETURNS:
   spec      - 1D Spectrum

 OUTPUTS:

 OPTIONAL KEYWORDS:
   CAPER      - Line chosen for aperture: Require with TRACE
   GAIN       - CCD gain
   RN       - Read noise

 OPTIONAL OUTPUTS:
   var      - Error array

 COMMENTS:

 EXAMPLES:
   spec = x_extract(img, aper)


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   05-Dec-2001 Written by JXP

(See Spec/Extraction//x_extract.pro)


X_EXTRACTARC

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

 PURPOSE:
  Straighten each order indivdiually (x_ordrectify) and then extract
  a boxcar down the center of each order by taking the average flux
  in two regions (each side of the center) of width 1/3 the order
  width.

 CALLING SEQUENCE:
   
  flux = extract_arc( arc_img, ordr_str )

 INPUTS:
   arc_img  -  2D Arc image
   ordr_str -  Order structure

 RETURNS:
   flux     -  1D spectrum down the center of each order

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
  flux = x_extractarc( arc_img, ordr_str )


 PROCEDURES/FUNCTIONS CALLED:
  x_ordrectify

 REVISION HISTORY:
   ??--2004 Written by SB

(See Spec/Arcs//x_extractarc.pro)


X_FFTTRACE

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

 PURPOSE:
    Traces the y-distortion of a flat using FFTs.  It is unlikely
    this program works well.  I highly recommend tracing the
    'sawtooth' image of a flat instead.

 CALLING SEQUENCE:
   x_ffttrace, img

 INPUTS:
   img    - Input image (flat)

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_ffttrace, img, map


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   29-Jan-2002 Written by JXP

(See Spec/Rectify//x_ffttrace.pro)


X_FILTERS

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

 PURPOSE:
    Grabs out a list of unique filters from a full string
  array list of filters.

 CALLING SEQUENCE:
   
 x_filters, allfilt, filter, [nfilt], NOSORT=nosort

 INPUTS:
   allfilt - List of all images

 RETURNS:
   filter - Filter list

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /NOSORT -- Dont bother sorting the unique filter list

 OPTIONAL OUTPUTS:
  nfilt - Number of unique filters

 COMMENTS:

 EXAMPLES:
   x_filters, img, filter, nfilt


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   27-July-2001 Written by JXP
   08-Aug-2001 Revised to sort

(See IMG/General//x_filters.pro)


X_FINDGAUSS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_findgauss   
   Version 1.0

 PURPOSE:
    Finds Gaussian absorption features in a spectrum (should be
    normalized).  The routine uses find_npeaks to find the features
    and then tunes up on then with zfitmax.

 CALLING SEQUENCE:
  x_findgauss, y, [invvar], xarr=, sigma=, xpeak=, ypeak=, xsn=, sn=, 
  width=, nfind=, minsep=
 
 INPUTS:
  y  -- Flux
  [invvar] -- Inverse variance

 RETURNS:

 OUTPUTS:
  xpeak -- x values of the peaks
  ypeak -- y height of the peak

 OPTIONAL KEYWORDS:
  SIGMA= -- Width of Gaussian (pixels)  [default: 1.]
  WIDTH= -- FWHM of the feature [default: 2.5*sigam]
  MINSEP= -- Minimum separation between lines [default: 4.1*sigma]
  NFIND=  -- Number of peaks to find with find_nepaks [default: 50]
  XARR=  -- x array (e.g. wavelength)

 OPTIONAL OUTPUTS:
  xsn -- x values of peaks from find_npeaks
   sn -- y values of the peaks from find_npeaks

 COMMENTS:

 EXAMPLES:


 PROCEDURES/FUNCTIONS CALLED:
 find_npeaks
 gauss_kernel
 zfitmax

 REVISION HISTORY:
   24-Sep-2003 Written by SB
   2003  Grabbed by JXP and slightly modified

(See Spec/Analysis//x_findgauss.pro)


X_FINDNPEAKS

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

 PURPOSE:
  Stolen from SDSS

 CALLING SEQUENCE:
   
 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   28-Apr-2003 Written by SB

(See Spec/Arcs//x_findnpeaks.pro)


X_FIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_fit   
   Version 1.2

 PURPOSE:
    Fits a function to a set of x,y data

 CALLING SEQUENCE:
   
   fit = x_fit(xdat,ydat,func,nord,sig=,reg=) 

 INPUTS:
   xdat       - Values along one dimension
   ydat       - Values along the other

 RETURNS:
   fit        - Values of the fit at each xdat value

 OUTPUTS:

 OPTIONAL KEYWORDS:
   sig=       - Errors in the yval points
   IVAR=      - Inverse variance of the ydat values
   func=      - String for Fitting function (POLY, LEGEND, BSPLIN,
                GAUSS)
   nord=      - Order of the fit
   reg=       - Regions of data to fit
   msk=       - Mask  (0 = Do NOT include)
   guess=     - First guess for GAUSS routine
   FITSTR=    - 1D Fit structure used to set many of the above
                parameters (recommended)
   FLG_BSP=   - Flag controlling BSPLINE options (1: nord = everyn)
   /NONRM     - Do not normalize the xdat from -1 to 1

 OPTIONAL OUTPUTS:
   ffit     - Functional form
   NRM      - Normalization numbers for xdat :: dblarr(2)
   RMS      - RMS of the fit

 COMMENTS:

 EXAMPLES:
   fit = x_fit(x, y, 'POLY', nord=5)


 PROCEDURES/FUNCTIONS CALLED:
  POLY_FIT
  POLY
  SVDFIT
  SVLEG
  FUNC_FIT

; REVISION HISTORY:
   20-Nov-2001 Written by JXP
   31-Jan-2002 Revised significantly.  Added fit structure, CHEBY
   27-Feb-2002 Added ivar option, am using func_fit for legendre

(See FIT//x_fit.pro)


X_FIT2DARC

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

 PURPOSE:
  To fit the arc lines identified in x_fitarc as a fucntion of
  their y-centroid and order number.  The main routine is in
  x_fit2darc.  The fit is a simple least-squares with one
  round of rejection.

 CALLING SEQUENCE:
 x_fit2darc, arcfil, ordr_str, arc_info, nycoeff=nycoeff, $
                    nocoeff=nocoeff, CLOBBER=clobber, SZ=sz, $
                    DEBUG=debug, CHKRES=chkres, out_str=out_str, $
                    QAFIL=qafil, YVAL=yval, ORIG=orig, SIGREJ=sigrej $
                    , pixrms = pixrms
   

 INPUTS:
  arc_fil  -- Name of arc file
  ordr_str -- Order strucure describing the echelle footprint
  arc_info -- Name of file created by x_fitarc

 RETURNS:

 OUTPUTS:
 A fits file containing the 2D solution.  Named something like
 'Arcs/Fits/Arc_B0010_fit2D.fits' 

 OPTIONAL KEYWORDS:
   NOCOEFF   - Number of coefficients to use in the x-direction
               (default: 5)
   NYCOEFF   - Number of coefficients to use in the y-direction
               (default: 4)
   /CLOBBER  - Overwrite any previous solution
   /DEBUG    - debug
   /CHKRES   - Plot the residuals
   /YVAL     - Use the x position on the CCD [not recommended]
   /ORIG     - Use wavelengths for the basis not wavelength*order#
               [not recommended]
   SIGREJ=   - Value for sigma rejection in the fit [default: 10]

 OPTIONAL OUTPUTS:
  PIXRMS=  -- RMS of the fit in pixels (for each echelle order)

 COMMENTS:

 EXAMPLES:
   print, x_fit2darc(arcfil, ordr_str, arc_info)

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   28-Feb-2003 Written by SB
   18-Apr-2003 Revised by JXP
   Feb-2005 Ported to XIDL by JXP

(See Spec/Arcs//x_fit2darc.pro)


X_FIT2DSURF

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

 PURPOSE:
    Fits a 2d surface to a set of x,y data with errors (optional).
    It is recommended to set the FIT parameters with the structure
    FITSTR. 

 CALLING SEQUENCE:
   
   fit = x_fit2dsurf(xy, z,[sig], nx=, ny=, MSK=, FITSTR=, REJPT=,
   NRM=, /NONRM, /SVDFT, LSIG=, HSIG=, NITER=, MAXREJ=, FUNC= )

 INPUTS:
   xy         - 2d array of xy pairs: [N,2]
   z          - Values at each xy pair
   [sig]      - Variance in each data point

 RETURNS:
   fit        - Values at each xdat

 OUTPUTS:

 OPTIONAL KEYWORDS:
   msk        - Mask  (0 = Do NOT include)
   func       - 2d function ('POLY')
   nx         - Order in x
   ny         - Order in y
   NONRM      - Don't normalize data before fitting
   MINPT      - Minimum number of points to keep in fit
   LSIG,HSIG  - Lower and upper sigma rejection
   /SVDFT     - Use the IDL routine SVDFT for the fitting.   
                Otherwise use CHOLDC (recommended for speed)

 OPTIONAL OUTPUTS:
   ffit     - Functional form
   NRM      - [2,2] array of Normalization coefficients
   REJPT    - Points rejected in the fit

 COMMENTS:

 EXAMPLES:
   fit = x_fit2dsurf(xy,z, sig)


 PROCEDURES/FUNCTIONS CALLED:
  f2dpoly
  CHOLDC
  SVDFT
  x_calc2dfit

; REVISION HISTORY:
   31-Jan-2002 Written by JXP
   02-Feb-2002 Added rejection

(See FIT//x_fit2dsurf.pro)


X_FIT2DTRACE

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

 PURPOSE:
    Fits the traced y-distortion of a flat in 2D given a set of
    traces for at various spots in the image.

 CALLING SEQUENCE:
   
   map = x_fit2dtrace( trcstr, FITSTR=, RES=, NX=, NY=, /SILENT )

 INPUTS:
   trcstr   - Trace structure

 RETURNS:
   map - Map of the y-distortion

 OUTPUTS:

 OPTIONAL KEYWORDS:
  nx -  Number of orders along x axis [default: 4L]
  ny -  Number of orders along y axis [default: 4L]

 OPTIONAL OUTPUTS:
   FITSTR  - 2D fitting function structure of the trace
   RES   - Residual image of the fit

 COMMENTS:
   Need to watch for memory issues with 2d surfaces

 EXAMPLES:
   map = x_fit2dtrace( trcstr )


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   07-Feb-2002 Written by JXP

(See Spec/Rectify//x_fit2dtrace.pro)


X_FITARC

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

 PURPOSE:
  To identify and centroid arc lines in each order.  There is
  actually no fitting done at this stage other than to reject bad
  lines.   The main program does the following:

    1) Input the arc image 
    2) Input an archived arc solution 
    3) Extract 1D (boxcar) spectra down each order :: extract_arc
    4) Cross correlate (FFT) against the archived 1D arc spectrum,
    this gives the order number and the pixel offset
    5) Automatically identify a set of lines (x_templarc)
    6) Perform a low order fit to these lines
    7) Reidentify all lines with this fit and refit 
    8) Write arc solutions (one per order) to a fits file 
    9) If the orders extend beyond the archived solution, attempt to
    extrapolate to the remaining orders.  The idea is to use the
    known wavelengths from the good orders to extrapolate a guess at
    the solution.  Then use this guess to peak up on the arc lines in
    these additional orders.

 CALLING SEQUENCE:
 x_fitarc, arc_fil, ordr_str, out_fil

 INPUTS:
  arc_fil  -- Name of arc file
  ordr_str -- Order strucure describing the echelle footprint
  out_fil --  Name of IDL file containing the 1D fits

 RETURNS:

 OUTPUTS:
  IDL fit file (one per order)  (e.g. Arcs/ArcECH_##fit.idl)

 OPTIONAL KEYWORDS:
   /PINTER   - Perform fit for pre-identified lines using x_identify
   /INTER    - Identify lines interactively and then fit
   LINLIST   -  Arc line list (default: $XIDL_DIR/Spec/Arcs/Lists/hires_thar.lst
   /CHK      - Manually check steps along the way
   /DEBUG    - Debugging
   /BCKWD    - Data runs from red to blue [only necessary for
               interactive fitting]
   SIGREJ=   - Rejection sigma for outliers in arc line fitting
              (default: 2.)
   IORDR     - Initial order for analysis
   FORDR     - Final order for analysis
   /CLOBBER  - Overwrite previous fits
   /FWEIGHT  - Centroid arc lines using a flux-weighting scheme
   /FGAUSS   - Centroid arc lines using a gaussian fitting scheme
   IPSIG     - Array which sets the sigma significance for arc lines
               as a function of order#.  This is for the initial
               solution and it is recommended to use a higher value
               than IFSIG.  An example:  [ [0,40,10],
               [40,80,20]] -- This sets the significance to 10 for
                              orders 0 to 40 and 20 for orders 40 to
                              80.
   IFSIG     - Similar to IPSIG except this is for the final line
               list.  One may tend to use weaker lines (lower
               significance) for this step. 
   /NOLOG    - Indicates the template file does not have Log
               wavelengths
   SATUR     - Saturation level for the Arc [default: 30000.]
   MXSHFT=   - Maximum shift allowed between initial guess and FFT
               cross-correlation
   /CLIP     - Remove especially bad lines [obsolete?]
   GUESSARC= - Name of archived solution to use as a guess to the
               inputted arc frame
   /ARCPAIR  - Use the routine arcpairs to guess at the solution (not
               well tested)
   /NOEXTRAP - Do not try to extrapolate the solution
   CCDSZ=    - Dimensions of the arc file [native]

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_fitarc, aimg


 PROCEDURES/FUNCTIONS CALLED:
   x_crossarc
   x_fitarc_ps
   extract_arc
   x_templarc
   x_identify
   x_fndpeaks
   z_arcpairs

 REVISION HISTORY:
   12-Aug-2002 Written by JXP
   21-Aug-2002 Streamlined + Added ps output
   01-Feb-2003 Polished (JXP)
   01-Jan-2004 Added a guess at unmatched orders (SB)
   28-Jun-2005 Added arcpairs functionality (SB+JXP)

(See Spec/Arcs//x_fitarc.pro)


X_FITDLA

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_fitdla   
   Version 1.11

 PURPOSE:
    GUI used to fit DLA profiles interactively.  The user determines
    the continuum at the same time.

 CALLING SEQUENCE:
  x_fitdla, flux_fil, [err_fil], XSIZE=, YSIZE=, TITLE=, 
               WAVE=, /BLOCK, FWHM=, INIFIT=, INFLG=

 INPUTS:
   flux_fil   - FITS file (or array) containing flux
   [err_fil]  - FITS error array

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   xsize      - Draw window xsize (pixels)
   ysize      - Draw window ysize (pixels)
   wave       - wavelength array 
   FWHM=      - Resoltuion (FWHM in pixels)  [default: 2]
   INFLG=     - Usual flag for reading the FITS file (see x_readspec)
   INIFIT=    - IDL file containing a saved version of the fit

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_fitdla, 'spec.fits'


 PROCEDURES/FUNCTIONS CALLED:
  XGETX_PLT
  XGETY_PLT
  XGETXPIX_PLT
  XGETYPIX_PLT

 REVISION HISTORY:
   17-Oct-2002 Written by JXP

(See Spec/Voigt//x_fitdla.pro)


X_FITLINE

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

 PURPOSE:
    Routine used with absorption line fit GUIs

 CALLING SEQUENCE:
   x_fitline, state, eventch, /FLG_PLT

 INPUTS:
  state - Structure describing the GUI and program
  eventch -- Character input by the user

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:
  XGETX_PLT
  XGETY_PLT
  XGETXPIX_PLT
  XGETYPIX_PLT

 REVISION HISTORY:
   17-Oct-2002 Written by JXP

(See Spec/Voigt//x_fitline.pro)


X_FITLLS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_fitlls   
   Version 1.11

 PURPOSE:
    GUI used to fit DLA profiles interactively.  The user determines
    the continuum at the same time.

 CALLING SEQUENCE:
  x_fitlls, flux_fil, [err_fil], XSIZE=, YSIZE=, TITLE=, 
               WAVE=, /BLOCK, FWHM=, INIFIT=, INFLG=

 INPUTS:
   flux_fil   - FITS file (or array) containing flux
   [err_fil]  - FITS error array

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   xsize      - Draw window xsize (pixels)
   ysize      - Draw window ysize (pixels)
   wave       - wavelength array 
   FWHM=      - Resoltuion (FWHM in pixels)  [default: 2]
   INFLG=     - Usual flag for reading the FITS file (see x_readspec)
   INIFIT=    - IDL file containing a saved version of the fit

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_fitlls, 'spec.fits'


 PROCEDURES/FUNCTIONS CALLED:
  XGETX_PLT
  XGETY_PLT
  XGETXPIX_PLT
  XGETYPIX_PLT

 REVISION HISTORY:
   17-Oct-2002 Written by JXP

(See Spec/Voigt//x_fitlls.pro)


X_FITREJ

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_fitrej
   Version 1.2

 PURPOSE:
    Fits a function to a set of x,y data with rejection!

 CALLING SEQUENCE:
   
   fit =
   x_fitrej(xdat,ydat,func=,nord=,sig=,reg=,
            lsigma=,hsigma=,maxrej=,niter=,minpt=)

 INPUTS:
   xdat       - Values along one dimension
   ydat       - Values along the other
   [func]     - String for Fitting function (POLY, LEGEND, BSPLIN)
   [nord]     - Order of the fit

 RETURNS:
   fit        - Values at each xdat

 OUTPUTS:

 OPTIONAL KEYWORDS:
   sig        - Errors in the points
   IVAR=      - Inverse variance in the points
   reg        - Regions of data to fit
   lsigma     - Lower sigma threshold
   hsigma     - Upper sigma threshold
   maxrej     - Maximum points to reject per iteration
   niter      - Number of iterations for rejection
   minpt      - Minimum # of points
   FITSTR     - Fit structure :: OVERIDES ALL OTHER INPUT VALUES!
   MSK        - Mask for input data (1 = good)
   FLG_BSP=   - Flag controlling BSPLINE options (1: nord = everyn)
   /NONRM     - Do not normalize the xdat from -1 to 1

 OPTIONAL OUTPUTS:
   rms        - RMS of the fit
   REJPT      - Rejected points
   GDPT       - Good (unrejected) points
   NRM      - Normalization numbers for xdat :: dblarr(2)

 COMMENTS:

 EXAMPLES:
   fit = x_fitrej(x, y, FITSTR=fitstr)


 PROCEDURES/FUNCTIONS CALLED:
  POLY_FIT
  POLY
  SVDFIT
  SVLEG
  DJS_REJECT

 REVISION HISTORY:
   20-Nov-2001 Written by JXP
   31-Jan-2002 Revised significantly.  Added fit structure, CHEBY

(See FIT//x_fitrej.pro)


X_FITSTRTOFITS

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

 PURPOSE:
    Writes a fitstr as a binary fits file (or read in a fit struct
    from a binary FITS file)

 CALLING SEQUENCE:
   x_fitstrtofits, fit_str, fits_fil, /REVERSE

 INPUTS:
    fit_str   - Fit structure
    fits_fil  - Fitsfile

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   /REVERSE  -- Default is to write the file.  If /REVERSE is set
                then the FITS file is read into a FIT structure

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_fitstrtofits, fit_str, fits_fil


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   15-Apr-2002 Written by JXP

(See FIT//x_fitstrtofits.pro)


X_FITTRCARC

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

 PURPOSE:
   To fit the slope of the arc lines as a function of order number
   and y position on the CCD.  This information is then used to
   construct a 2D wavelength image.  The fitting routine is the usual
   least-squares algorithm with two rounds of rejection.

 CALLING SEQUENCE:
  x_fittrcarc, arc_fil, trc_fil, ordr_str, out_fil, [qafil]

 INPUTS:
  arc_fil  -- Name of arc file
  trc_fil  -- Name of file containing the output from x_echtrcarc
  ordr_str -- Order strucure describing the echelle footprint
  out_fil --  Name of FITS file containing the 2D fit
  [qafil]  -- Filename for QA output

 RETURNS:

 OUTPUTS:
  Fits file with the coefficients of the 2D fit.  Filename like
  'Arcs/TRC/Arc_mb0539_F.fits' 

 OPTIONAL KEYWORDS:
  /CHK  -- Plots residuals
  /CLOBBER -- Overwrite previous solution
  /ORDRCLOB -- Overwrite arc_m in the order structure
  ORDR_FIL= -- Filename containing the order sturcture.  Necessary
               for overwriting (e.g. MIKE spectrometer).
   NOCOEFF   - Number of coefficients to use in the x-direction
               [default: 3]
   NYCOEFF   - Number of coefficients to use in the y-direction
               [default: 2]

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   28-Apr-2003 Written by SB
   Feb-2005 Ported to XIDL by JXP

(See Spec/Arcs//x_fittrcarc.pro)


X_FITZPALAV

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_fitzpalav
   Version 1.0

 PURPOSE:
    Report A_lambda/A(V) given lambda for a Fitzpatrick & Massa
    parameterized extinction law.

 CALLING SEQUENCE:
   
   AlAV = x_alav(lambda, RV=, c3=, c4=)

 INPUTS:
   lambda  -- Wavelengths to evaluate A at (angstroms)

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  RV= -- Value of R_V
  /SMC -- Use the SMC law
  /CALZ -- Use the Calzetti law

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
  Written   W. Landsman        Raytheon  STX   October, 1998
  2008 Revised by JXP 

(See Dust//x_fitzpalav.pro)


X_FLUXCALIB

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

 PURPOSE:
    Given a spectrum and a flux calib solution, calibrate

 CALLING SEQUENCE:
   fx_fnu = x_fluxcalib(wv, fx, fitstr, [var, newvar], /FLAMBDA, DLMB=, TRUCONV=)

 INPUTS:
   wv   - Wavelength array
   fx   - Stellar flux  (e- per pixel)
   fitstr - Calibration fitting function (assumes alog10 for flux)
   [var]  - Variance array

 RETURNS:
   fx_fnu - Flux in fnu (or flambda)

 OUTPUTS:

 OPTIONAL KEYWORDS:
   /FLAMBDA - Return flambda instead of fnu
   DLMB -- Delta lambda (or km/s if negative) of wavelength array
   
 OPTIONAL OUTPUTS:
   newsig -- Fluxed variance array

 COMMENTS:

 EXAMPLES:
   fx_fnu = x_fluxcalib(wv, fx, fitstr)


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   15-Apr-2002 Written by JXP

(See Spec/Flux//x_fluxcalib.pro)


X_FLUXJOHNSON

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

 PURPOSE:
    Calculates conversion factor for Johnson magnitudes to physical
    flux by interpolation 

 CALLING SEQUENCE:
  flux_conv = x_fluxjohnson(wave)

 INPUTS:
  wave= -- Wavelength array

 RETURNS:
  flux_conv -- Conversion factor from mag to flux

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   30-Aug-2005 Written by JXP based on HIRES S2N code

(See Obs//x_fluxjohnson.pro)


X_FMIDX

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

 PURPOSE:
    Converts frame number to index -- Useful for ccd###

 CALLING SEQUENCE:
   
 indx = x_fmidx(struct, frameno)

 INPUTS:
   frameno - Frameno [array] of the CCD image

 RETURNS:
   indx -- Index of the frame

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   idx = x_fmidx(n1, 203)


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   14-Nov-2001 Written by JXP

(See IMG/General//x_fmidx.pro)


X_FNDCHRT[1]

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

 PURPOSE:
    Given an array of Obj name, RA, and DEC create a set of postscript
  finding charts. 

 CALLING SEQUENCE:
  x_fndchrt, targlist, OUTDIR=, IMSIZE=, SURVEY=, /ESO

 INPUTS:
  targlist  -- ASCII file containing  (QSO,  RA,  DEC)

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  imsize - Arcmin of image [default is 5']
  circ  -- Radius of green to draw about the target [default: 5"]
  /ESO -- Use the DSS at ESO
  /radec -- Input is ['Name', 'RA:RA', 'DEC:DEC']
  EPOCH=  -- Epoch of RA/DEC [default: 2000]
  SKIP=   -- Skip lines at the start of the file
  TWOCIRC = (x,y) offset in arcmin from field center

 OPTIONAL OUTPUTS:
  OUTDIR=  -- Name of output directory

 COMMENTS:

 EXAMPLES:
   x_fndchrt, 'targets.list'

 PROCEDURES/FUNCTIONS CALLED:
  showfits
  querydss
  sdss_queryimage

 REVISION HISTORY:
   21-Nov-2003 Written by JXP

(See Obs//x_fndchrt.pro)


X_FNDCHRT[2]

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

 PURPOSE:
  Precess RA and DEC

 CALLING SEQUENCE:
  
 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   imsize - Arcmin of image (default is 5')

 OPTIONAL OUTPUTS:
  OUTDIR=  -- Name of output directory

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:
  precess

 REVISION HISTORY:
   21-Nov-2003 Written by JXP

(See Obs//x_precess.pro)


X_FNDFITVAL

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

 PURPOSE:
    Solves for x in y = f(x) given a fitted function f(x) and y

 CALLING SEQUENCE:
   
   xsolv = x_fndfitval(val, fitstr, xval,[fit], NITER=, IPX=,
      TOLER=, NEG=, FITSTR=)

 INPUTS:
   val        - Value to match
   fitstr     - FIT structure
   xval       - Values where fit was pre-evaluated
   [fit]      - Values of the fit at xval (calculated if not input)

 RETURNS:
   xsolv      - x position where the fit = val

 OUTPUTS:

 OPTIONAL KEYWORDS:
   NORD       - Required for LEGEND
   TOLER      - Tolerance for match [default: 10^-4]
   IPIX       - Starting pixel in xval
   NEG        - Proceed in the negative direction
   NITER      - Max number of iterations [default: 50]

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   xsolv = x_fndfitval(0.2, fitstr, xval)


 PROCEDURES/FUNCTIONS CALLED:
  POLY_FIT
  POLY
  SVDFIT
  SVLEG
  BSPLIN
  GAUSS

; REVISION HISTORY:
   23-Nov-2001 Written by JXP
   13-Feb-2002 Requires fit structure

(See FIT//x_fndfitval.pro)


X_FNDFLUX

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

 PURPOSE:
  OBSOLETE:  Use x_calibstd

 CALLING SEQUENCE:
   x_fndflux, wv, fx, star, fitstr

 INPUTS:
   wv   - Wavelength array
   fx   - Stellar flux
   star - Specphot standard ('LTT7379')
   fitstr - Fit of the star

 RETURNS:

 OUTPUTS:
   fitstr    - Fit structure

 OPTIONAL KEYWORDS:
   INTER - Interactive
   
 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_fndflux, wv, fx, star, fitstr


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   15-Apr-2002 Written by JXP

(See Spec/Flux//x_fndflux.pro)


X_FNDPEAKS

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

 PURPOSE:
    Finds a set of peaks in a spectrum.  Generally used with arc line
    spectra, but valueable in many other areas.

 CALLING SEQUENCE:
   x_fndpeaks, spec, center, NSIG=, PEAK=, /ALL, /SILENT, $
               PKWDTH=, /THIN, /NORECENT, /FORCE, $
               FRACPK=, EDGES=, NORDB=, NEDG=, AFUNC=,$
               MSK=, AUTOFIT=, ICLSE=

 INPUTS:
   spec       - Input spectrum (1D)

 RETURNS:
   center     - Array of peak centers

 OUTPUTS:

 OPTIONAL KEYWORDS:
  PKWDTH   - Width of peak to center on (pixels) [default: 3L]
  NORDB    - Order for b-spline fit to the continuum of the
                spectrum [default: 31L]
  NSIG=    - Number of sigma signifcance for the peak [default: 5.]
  NEDG=    - Number of pixels peak must be from the edge of the
             spectrum [default: 5L]
  AFUNC=   - Name of function to fit to continuum [default: 'BSPLIN']
  MSK=     - Mask of good peaks
  ICLSE=   - Minimum separation between peaks [default: 4L]
  /ALL     - Pass back all peaks, not just the good ones
  /THIN    - Allow peaks to be 3 pixel thin [default: 5 pixel]
  /FORCE   - Force centering in x_centspln
  /NORECNT - Do not bother to try to recenter the peaks
  FRACPK=  - Fraction of peak to calculate centroid [default: 0.33]
  /FWEIGHT - Centroid using flux weighting
   /FGAUSS   - Centroid arc lines using a gaussian fitting scheme

 OPTIONAL OUTPUTS:
   PEAK=   - Integer values of centeroids of the peaks
  EDGES=   - Positions of the edges of each peak (usually 0.33 of

 COMMENTS:

 EXAMPLES:
   x_fndpeaks, spec, center


 PROCEDURES/FUNCTIONS CALLED:
 x_centspln

 REVISION HISTORY:
   14-Feb-2002 Written by JXP

(See Spec/Arcs//x_fndpeaks.pro)


X_FNDREG

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

 PURPOSE:
    Finds data points within a number of regions.  
    [This is a rather difficult routine to use]

 CALLING SEQUENCE:
   
   pts = x_fndreg(xdat, reg)

 INPUTS:
   xdat - Data
   reg  - Regions:   fltarr(N,2)

 RETURNS:
   pts  - Points in the regions

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:
   NPNT -  Number of points within the regions
 COMMENTS:

 EXAMPLES:
   pts = x_fndreg( findgen(1000), [15., 25.])

 PROCEDURES CALLED:

 REVISION HISTORY:
   21-Nov-2001 Written by JXP

(See General//x_fndreg.pro)


X_FNDSLITOBJ

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_fndslitobj   
    Version 1.0

 PURPOSE:
    Given the slitstr and the map, find slit positions in the
    original image and create object structure. Used for the WFCCD

 CALLING SEQUENCE:
   
   x_fndslitobj, img, wvimg, slitstr

 INPUTS:
   img         - Flux image
   slitstr     - Slit structure

 RETURNS:

 OUTPUTS:
   Updates slitstr for original positions

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_fndslitobj, slitstr, map


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   14-Feb-2002 Written by JXP

(See Spec/Slits//x_fndslitobj.pro)


X_FNDSPLN

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_fndspln
   Version 1.0

 PURPOSE:
    Solves for x in y = f(x) given a splined function f(x) and y

 CALLING SEQUENCE:
   
   xsolv = x_fndsplin(sx,sy,val,[splin] IPX=, TOLER=, /NEG=)

 INPUTS:
   sx         - Values where spline was pre-evaluated
   sy         - Values of the spline at sx
   val        - Value to match
   [splin]    - Spline (calculated if necessary)

 RETURNS:
   xsolv      - x position where the fit = val

 OUTPUTS:

 OPTIONAL KEYWORDS:
   TOLER      - Tolerance for match (default: 10^-4)
   IPIX       - Starting pixel in sx
   /NEG       - Proceed in the negative direction from IPIX
   /SILENT    - Turn off warning messages
   NITER      - Max number of iterations [default: 50L]

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   xsolv = x_fndspln(sx, sy, val)


 PROCEDURES/FUNCTIONS CALLED:
  SPLIN

 REVISION HISTORY:
   02-Feb-2002 Written by JXP

(See FIT//x_fndspln.pro)


X_FWEIGHT

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

 PURPOSE:
   Recenter a x using flux-weighted algorithm.

 CALLING SEQUENCE:
   xnew = x_fweight( img, xcen, ycen, [radius=radius, xerr=xerr, 
    invvar=invvar] )

 INPUTS:
   img      - Image
   xcen     - Initial guesses for X centers
   ycen     - Y positions corresponding to "xcen" (expected as integers)

 OPTIONAL KEYWORDS:
   radius     - Radius for centroiding; default to 3.0
   invvar     - Inverse variance of image used only in computing errors XERR.
                If not set, then INVVAR=1 is used.
   ninter     - Number of iterations to perform

 OUTPUTS:
   xnew       - New X centers

 OPTIONAL OUTPUTS:
   xerr       - Formal errors for XNEW; set equal to 999.0 if there are any
                masked pixels in a centroiding region (e.g., if INVVAR=0)

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:
   trace_fweight

 REVISION HISTORY:
   2004  Written by SB

(See Spec/Arcs//x_fweight.pro)


X_GAUSSSLIT

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

 PURPOSE:
    Calcualte the slit lost assuming a Gaussian object and a box slit

 CALLING SEQUENCE:

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   27-Oct-2005 Written by JXP based on HIRES S2N code

(See Obs//x_gaussslit.pro)


X_GETLST

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_getlst   
    Version 1.0

 PURPOSE:
  Calculate twilight in LST given a lat+long+date

 CALLING SEQUENCE:
  
 INPUTS:
   jdin     - Julian Date
      Allowed formats:  DDmmmYY  (e.g. 22Oct99)
                        DD-MM-YY (e.g. 20-12-99)
                        YYYY-MM-DD (e.g. 1999-12-20)
                        DDMMMYYYY (e.g. 20JAN2004)
   longit   - Longitude on Earth [decimal hours]

 RETURNS: twlight in LST  strarr(2)

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:
  x_getlst

 REVISION HISTORY:
  Based on code in skycalendar v5 written by John Thorstensen
  Dartmouth College
   10-Dec-2009 Written by JXP

(See Obs//x_getlst.pro)


X_GETMONTH

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

 PURPOSE:
    Converts a number into a month

 CALLING SEQUENCE:
   
   month = x_setmonth(ival)

 INPUTS:
   ival    -  Long value of the month 

 RETURNS:
   month    -  String

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /REVERSE  --  Turn a month into a number
  /SSMALL  --  Use lowercase

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   month = x_getmonth(10)


 PROCEDURES CALLED:

 REVISION HISTORY:
   04-Jan-2002 Written by JXP

(See General//x_getmonth.pro)


X_GETOBJNM

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

 PURPOSE:
  Get the index of the object name OR return the list of obj_nm.
  This is a pretty specific routine.  If obj_nm is not specified the
  routine launches a GUI to have the user choose.

 CALLING SEQUENCE:
   indx = x_getobjnm(objstr, [obj_nm], LST=)

 INPUTS:
  objstr  -- Object structure
  [obj_nm] -- Name of object for which the index is desired

 RETURNS:
   indx -  Index of the object name OR list of obj_nm

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /LST - Return the list instead of the index

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
  indx = x_getobjnm(objstr)
  list = x_getobjnm(objstr, /LST)


 PROCEDURES/FUNCTIONS CALLED:
 x_guilist

 REVISION HISTORY:
   30-Jul-2002 Written by JXP

(See Spec/Analysis//x_getobjnm.pro)


X_GETRAINBOW

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

 PURPOSE:
    Passes back a structure defining a rainbow

 CALLING SEQUENCE:
   colm = ew_to_colm([lambda], [EW], /RVRS)

 INPUTS:
   lambda  - Rest Wavelength (Ang)
   EW       - EW (mA) [or column density (linear)]

 RETURNS:
   colm   - Column density (linear)

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /SILENT -- Suppress written output
  /RVRS   -- Take a column density input and output the EW assuming
             the linear COG
  TOLER=  -- Tolerance on wavelength [default: 0.1]

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   colm = ew_to_colm([1215.6701],[50.])

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   08-May-2008 Written by JXP

(See Color//x_getrainbow.pro)


X_GETXPMNX

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

 PURPOSE:
  Find the pixels corresponding to xymnx in state

 CALLING SEQUENCE:
   pxmnx = x_getxpmnx(state)

 INPUTS:
  state -- Structure with TAGS wave, xymnx

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   pxmnx = x_getxpmnx(state)

 PROCEDURES CALLED:

 REVISION HISTORY:
   24-Oct-2002 Written by JXP

(See Spec/General//x_getxpmnx.pro)


X_GOLDEN

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

 PURPOSE:
    Uses the NR routine 'golden' to find the x-value where
    the function has a minimum

 CALLING SEQUENCE:
   
   min = x_golden(func,a,b,c TOL=)

 INPUTS:
   func - String name of the IDL function
   a,c  - Values bracketing the minimum
   b    - Best guess at minimum

 RETURNS:
   min - x-value of function minimum

 OUTPUTS:

 OPTIONAL KEYWORDS:
   TOL - Fractional Tolerance

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   num = x_golden('func', 0.0, 1.0)

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   25-Jan-2002 Written by JXP

(See General//x_golden.pro)


X_GUILIST

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

 PURPOSE:
    Launches a cw_field, waits for the user to make a choice and
    then returns the index and value of the choice.  Routine will
    block any other GUI.

 CALLING SEQUENCE:
   
   value = x_guilist(list, title)

 INPUTS:
   list  - String array
   title - Title

 RETURNS:
   value - String

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   value = x_guilist( ['a', 'b', 'c'], INDX=indx )

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   04-Jan-2002 Written by JXP

(See General//x_guilist.pro)


X_GUINUM

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_guinum   
   Version 1.0

 PURPOSE:
    Launches a cw_field and grabs a number from the user

 CALLING SEQUENCE:
   
   num = x_guinum(flg)

 INPUTS:
   flg = Return (0: float, 1: double, 2: Long)

 RETURNS:
   num - Number

 OUTPUTS:

 OPTIONAL KEYWORDS:
  TITLE= -- Title for the GUI [default: 'Num']

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   num = x_guinum( 0 )


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   20-Dec-2001 Written by JXP

(See General//x_guinum.pro)


X_GUISTRING

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_guistring   
   Version 1.0

 PURPOSE:
    Launches a cw_field and grabs a string from the user

 CALLING SEQUENCE:
   value = x_guistring(title)

 INPUTS:
   title - Title

 RETURNS:
   value - String

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   string = x_guistring( 'Enter filename: ')


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   04-Jan-2002 Written by JXP

(See General//x_guistring.pro)


X_HAALT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_haalt   
    Version 1.0

 PURPOSE:
	Returns hour angle at which object at dec is at altitude alt */

 CALLING SEQUENCE:
  
 INPUTS:
   dec    - deg
   lat    - Latitude on Earth [deg]
   alt    - Altitude relative to the horizon 

 RETURNS: HA of the object

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:
  x_haalt

 REVISION HISTORY:
  Based on code in skycalendar v5 written by John Thorstensen
  Dartmouth College
   10-Dec-2009 Written by JXP

(See Obs//x_haalt.pro)


X_HELPWIDG

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

 PURPOSE:
    Creates a widget to display a help list which is simply an 
   array of strings that describe a GUI [or anything].

 CALLING SEQUENCE:
   x_helpwidg, help

 INPUTS:
   help       - String array of help statements

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   xsize      - Draw window xsize (pixels)
   ysize      - Draw window ysize (pixels)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_helpwidg, ['Help', 'h: Show this']


 PROCEDURES/FUNCTIONS CALLED:

; REVISION HISTORY:
   28-Nov-2001 Written by JXP

(See General//x_helpwidg.pro)


X_HSTFLUX

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

 PURPOSE:
    Given a spectrum and a flux calib solution, calibrate

 CALLING SEQUENCE:
   fx_fnu = x_fluxcalib(wv, fx, fitstr, [var, newvar], /FLAMBDA, DLMB=, TRUCONV=)

 INPUTS:
   wv   - Wavelength array
   fx   - Stellar flux  (e- per pixel)
   fitstr - Calibration fitting function (assumes alog10 for flux)
   [var]  - Variance array

 RETURNS:
   fx_fnu - Flux in fnu (or flambda)

 OUTPUTS:

 OPTIONAL KEYWORDS:
   /FLAMBDA - Return flambda instead of fnu
   DLMB -- Delta lambda (or km/s if negative) of wavelength array
   
 OPTIONAL OUTPUTS:
   newsig -- Fluxed variance array

 COMMENTS:

 EXAMPLES:
   fx_fnu = x_fluxcalib(wv, fx, fitstr)


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   15-Apr-2002 Written by JXP

(See Spec/Flux//x_hstflux.pro)


X_IDENTIFY

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

 PURPOSE:
    GUI used to create a wavelength solution to an arc line
    spectrum.  Similar to IRAFs identify

 CALLING SEQUENCE:
   
  x_identify, spec, calib, XSIZE=, YSIZE=, LINELIST=, $
               DISP=, LINEROOT=, INCALIB=,
               /DEBUG, MSK=, OUTLIN=, /REDBLUE=, WAVE=, FLUX=, INLIN=

 INPUTS:
   spec       - 1D flux spectrum (array)

 RETURNS:
   calib      - FIT Structure describing the wavelength solution

 OUTPUTS:

 OPTIONAL KEYWORDS:
   LINELIST   - Reference list (user can set interactively)
   LINEROOT   - Path to a set of line lists [default:
                /Spec/Arcs/Lists]
   DISP       - Guess at dispersion (A or km/s per pix [pos/neg
                value])
   /FLUX       - Assumes wide slit and therefore wide arc lines
  XSIZE,YSIZE -- Size of GUI in pixels
  /REDBLUE    - Spectrum runs from red to blue (not blue to red)
  INCALIB     - A input fit structure that can be used to identify lines.  
  MSPEC       - An input arc that can be used to shift and stretch arc
  MFITSTR     - A structure that goes along with mspec which is the fit
                for that arc. Note that incalib will be set with this as the 
                fit. 
 OPTIONAL OUTPUTS:
   WAVE= -- Wavelength array for the arc line spectrum
  MSK=  -- ??
  OUTLIN= -- Lines structure which shows the lines used in the fit

 COMMENTS:

 EXAMPLES:
   x_identify, arc, calib


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   08-Dec-2001 Written by JXP
   19-Dec-2001 Added fitting
   01-Feb-2003 Added input
   01-Nov-2006 JFH added incalib option

(See Spec/Arcs//x_identify.pro)


X_IMARITH

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

 PURPOSE:
    Performs arithmetic on two fits images (akin to IRAF)

 CALLING SEQUENCE:
   x_imarith, img1, oper, img2, outimg, FITS=

 INPUTS:
   img1 -- Image 1
   img2 -- Image 2
   oper -- String math operation (+,*,/,-)

 RETURNS:

 OUTPUTS:
   fimg -- Output image 

 OPTIONAL KEYWORDS:


 OPTIONAL OUTPUTS:
   /FITS - fimg is a fits file (string)

 COMMENTS:

 EXAMPLES:
   x_imarith, 'f1.fits', '+', 'f2.fits', fimg
   x_imarith, 'f1.fits', '+', 'f2.fits', 's12.fits', /FITS


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   03-Aug-2001 Written by JXP
   29-Dec-2001 Modified

(See IMG/General//x_imarith.pro)


X_INTPHOTCAL

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_intphotcal   
  Version 1.2

 PURPOSE:
    Allows the user to interactively perform a photometric solution.
   At its fullest, the code will calculate a zeropoint, an airmass
   term and a color term.
   The routine launches a GUI which allows the deletion 
   of specific stars.

 CALLING SEQUENCE:
   x_intphotcal, obs, landolt, outfil, XSIZE=, YSIZE=, /NCLR,
    MIN_NOBS=, MIN_MOBS=, SETAM=

 INPUTS:
   obs - Standard star observations  (stdstruct)
   landolt - Landolt info (lndltstr)

 RETURNS:

 OUTPUTS:
   OUTFIL -- ASCII file summary of the photometric solution.

 OPTIONAL KEYWORDS:
   XSIZE = size of gui
   YSIZE = size of gui
   MIN_NOBS= Min n value for Landolt star
   MIN_MOBS= Min m value for Landolt star
   /NCLR = Solve without color terms
   SETAM = Value taken for AM term 
        (Note: You cannot choose a value of 0. exactly!)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_intphotcal, obs, landolt, outfil


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   08-Aug-2001 Written by JXP
   07-Jan-2002 Revised by JXP
   14-Oct-2002 Revised by JXP [setup no AM, no CLR terms]

(See IMG/Photometry//x_intphotcal.pro)


X_INVERTARC

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

 PURPOSE:
    Converts an Arc image in the flat frame to the original
     Uses a C program, is a memory hog

 CALLING SEQUENCE:
   
   newarc = x_invertarc( arcimg, map )

 INPUTS:
   arcimg  - Arc image in the flat frame (data or fits file)
   map     - Map image (data or fits file)

 RETURNS:
   newarc  - Arc image in the Original frame

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /DBL  - Use double precision

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   newarc = x_invertarc( arcimg, map, /DBL)

 PROCEDURES/FUNCTIONS CALLED:
  C code: invert_arc

 REVISION HISTORY:
   18-Feb-2002 Written by JXP

(See Spec/Arcs//x_invertarc.pro)


X_KECKHELIO

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

 PURPOSE:
   Compute correction term to add to velocities to convert to heliocentric.
   This code also does the VLT and MMT.  Note, it is the *NEGATIVE* of the 
   the number that one applies to a wavelength solution.

 CALLING SEQUENCE:
   vcorr = x_keckhelio( ra, dec, [epoch], jd=, tai=, $
    longitude=, latitude=, altitude= )

 INPUTS:
   ra             - Right ascension [degrees]
   dec            - Declination [degrees]
   [epoch]          - Epoch of observation for RA, DEC; default to 2000.

 RETURNS:
   vcorr          - Velocity correction term, in km/s, to add to measured
                    radial velocity to convert it to the heliocentric frame.
 OPTIONAL KEYWORDS:
   jd             - Decimal Julian date.  Note this should probably be
                    type DOUBLE.
   tai            - Number of seconds since Nov 17 1858; either JD or TAI
                    must be specified.  Note this should probably either
                    be type DOUBLE or LONG64.
   longitude      - Longitude of observatory;
                    default to (360-155.47220) deg for APO
   latitute       - Latitude of observatory; default to 32.780361 deg for APO
   altitude       - Altitude of observatory; default to 4000 m for
                    Keck
   OBS=           - Observatory (default: 'keck')

 OUTPUTS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
  helio_shift = -1. * x_keckhelio(RA, DEC, 2000.0)

 BUGS:

 PROCEDURES CALLED:
   baryvel
   ct2lst

 REVISION HISTORY:
   09-May-2000  Written by S. Burles & D. Schlegel
   30-Aug-2002  Revised by JXP for Keck
   22-Dec-2007  Revised to use observatory function by JFH. 

(See Spec/General//x_keckhelio.pro)


X_LNDLTCAT

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

 PURPOSE:
    Creates a fits file of the Landolt table.  Probably needs
  to be run only once unless a typo is corrected.

 CALLING SEQUENCE:
   x_lndltcat, fil, fitsfil

 INPUTS:
   fil - Name of the landolt file

 RETURNS:

 OUTPUTS:
   fitsfil - Name of fits file to create

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:
  STRCT - Structre of the landolt file

 COMMENTS:

 EXAMPLES:
   x_lndltcat, '/u/xavier/idl/xidl/IMG/Photometry/Lists/nlandolt.dat', 
   'Landolt.fits'


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   08-Aug-2001 Written by JXP

(See IMG/Photometry//x_lndltcat.pro)


X_LNDLTCLR

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

 PURPOSE:
    Returns the Landolt color of a star

 CALLING SEQUENCE:
   
   clr = x_lndltclr(color, lndltstr) 

 INPUTS:
   color - String name of the color (e.g. 'BV')
   lndlstr - Structure of the landolt star

 RETURNS:
   clr - Color of the Landolt star

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   clr = x_lndltclr('BR', landolt)

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   08-Aug-2001 Written by JXP

(See IMG/Photometry//x_lndltclr.pro)


X_LNDLTMAG

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

 PURPOSE:
    Returns the Landolt magnitude for a given filter

 CALLING SEQUENCE:
   
 mag = x_lndltmag(filter, lndltstr, SIGMAG=)

 INPUTS:
   filter - String name of the filter
   lndlstr - Structure of the landolt star

 RETURNS:
   mag - magnitude

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:
  SIGMAG = Error in the magnitude

 COMMENTS:

 EXAMPLES:
   mag = x_lndltmag('R', landolt, SIGMAG=sig)


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   08-Aug-2001 Written by JXP

(See IMG/Photometry//x_lndltmag.pro)


X_MAGTOLUM

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

 PURPOSE:
  Convert AB mag to flux

 CALLING SEQUENCE:

 INPUTS:
  inmag -- Magnitude
  H0 -- Hubble constant

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   30-Aug-2005 Written by JXP

(See Obs//x_magtolum.pro)


X_MAXSPLN

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

 PURPOSE:
    Finds the maximum in a set of data using a spline.  The program
    simply splines the data and then finds the max.

 CALLING SEQUENCE:
   
   maxsp = x_maxspln( xval, yval, EDGES=, EDGVAL=, SPMX=)

 INPUTS:
   xval       - x pos
   yval       - y pos (values to be maximized)

 RETURNS:
   maxsp      - Maximum of the values

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:
  EDGES   -- x-value Edges of peak corresponding to 0.333
  EDGVAL  -- y-value Edges of peak corresponding to 0.333
  SPMX    -- Maximum in the spline

 COMMENTS:

 EXAMPLES:
   maxsp = x_maxspln(x, y)

 PROCEDURES/FUNCTIONS CALLED:
  x_golden

 REVISION HISTORY:
   29-Jan-2002 Written by JXP

(See FIT//x_maxspln.pro)


X_MEDSIGCLIP

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

 PURPOSE:
   Median multiple images with sigma-rejection.  Akin to avsigclip
   but does median analysis instead of averaging.  This is my favorite
   combine routine.

 CALLING SEQUENCE:
   result = x_medsigclip( array, [ dimension, siglo=, sighi=, maxiter=, $
    inmask=, ] )

 INPUTS:
   array      - N-dimensional array

 OPTIONAL INPUTS:
   dimension  - The dimension over which to collapse the data.  If ommitted,
                assume that the last dimension is the one to collapse.
   siglo     - Low Sigma for rejection; default to 3.0.
   sighi     - High Sigma for rejection; default to 3.0.
   maxiter    - Maximum number of sigma rejection iterations.  One iteration
                does no sigma rejection; default to 10 iterations.
   inmask     - Input mask, setting =0 for good elements
   gain       - Gain; Crucial for calculating sigma; default to 1.0
   rn         -  Readnoise; Crucial for calculating sigma; default to 7.0

 OUTPUTS:
   result     - The output array.
   outmask    - Output mask, setting =0 for good elements, =1 for bad.
                Any pixels masked in INMASK are also masked in OUTMASK.

 OPTIONAL OUTPUTS:

 COMMENTS:
   The DIMENSION input is analogous to that used by the IDL built-in
   function TOTAL.

 EXAMPLES:
   Create a data cube of 10 random-valued 100x200 images.  At each pixel in
   the image, compute the median of the 10 values, but rejecting 3-sigma
   outliers:
   > array = randomu(123,100,200,10)
   > med = x_medsigclip(array, siglo=3., sighi=4.)


   If all points are masked in any given vector or array, a mean and
   dispersion are computed for all the points.  Is this the behaviour we want?
   If you want to replace those values with zeros instead, look at OUTMASK:
   > array = randomu(123,100,200)
   > inmask = bytarr(100,200)
   > inmask[*,8] = 1 ; mask all of row #8
   > ave = x_avsigclip(array, 1, inmask=inmask, outmask=outmask)
   > ibad = where( total(1-outmask, 1) EQ 0)
   > if (ibad[0] NE -1) then ave[ibad] = 0 ; zero-out bad rows

 BUGS:

 PROCEDURES CALLED:
   Dynamic link to arravsigclip.c

 REVISION HISTORY:
   07-Jul-1999  Based on djs_avsigclip; Written by David Schlegel, Princeton.
   28-Jul-2001  Modfied by JXP (Added lo/hi sigrej, does median)

(See IMG/Reduction//x_medsigclip.pro)


X_MKABSLIN

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

 PURPOSE:
    Creates a FITS file from the standard line lists.  Used
    for voigt stuff.

 CALLING SEQUENCE:
   x_mkabslin

 INPUTS:
   wave       - ionic transition

 RETURNS:
   f          - oscillator strength

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:
   nam        - Name of transition

 COMMENTS:

 EXAMPLES:
   x_mkabslin, 1215.6701, fval, name


 PROCEDURES CALLED:

 REVISION HISTORY:
   16-Oct-2002 Written by JXP

(See Spec/Lines//x_mkabslin.pro)


X_MKAIMG

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

 PURPOSE:
   Given the 2D solution for the slope of the lines as a function of
   position this code creates a wavelength image (i.e. assigns a
   unique wavelength to each pixel in each order).  The xoffset is 
   input in order to properly determine the edges of each order.  A
   simple spline interpolation is used to determine the values.

  Note, you should have shifted the order structure as necessary
  prior to calling this routine.

 CALLING SEQUENCE:
 x_mkaimg, arc_fil, ordr_str, arc2d_fil, fil_fittrc, $
                  out_fil, /CHK, /CLOBBER, BAD_ANLY=

 INPUTS:
  arc_fil  -- Name of arc file
  ordr_str -- Order strucure describing the echelle footprint
  arc2d_fil -- Name of 2D wavelength solution
  fil_fittrc --  Name of FITS file containing the 2D fit to the
                tilted arc lines

 RETURNS:

 OUTPUTS:
  2D wavelength image with name like 'Arcs/Arc_mb0439I.fits'

 OPTIONAL KEYWORDS:
   /CLOBBER  - Overwrite previous image
   /CHK      - Display the final image

 OPTIONAL OUTPUTS:
  BAD_ANLY=  - Set to 1 if the code finds double valued solutions.

 COMMENTS:

 EXAMPLES:


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   15-May-2003 Written by SB

(See Spec/Arcs//x_mkaimg.pro)


X_MODE

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

 PURPOSE:
  Calcualtes the mode after one inputs an array (default: nearest integer)

 CALLING SEQUENCE:
   
 

 INPUTS:
   arr  -- Array of values

 RETURNS:
   mode

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   mode = x_mode(array)

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   25-Aug-2004 Written by JXP

(See General//x_mode.pro)


X_MSKLAYOUT

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

 PURPOSE:
    Allows the user to interactively place slitmasks on a field of
  targets and write out their positions and PA values

 CALLING SEQUENCE:
   x_msklayout, targ, instr

 INPUTS:
   img        - Image(s) for Masking
   instr      - Name of instrument (LRIS, DEIMOS)

 RETURNS:

 OUTPUTS:
   mask       -  Creates a fits table of pixel values to mask

 OPTIONAL KEYWORDS:
  SECTRG  -- 2nd set of targets to plot (in alternate point style)
  ASTAR   -- File containing the positions of Alignment stars
  PVOBJ   -- File of objects previously observed

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_msklayout, img, 'SITe1', 'LCO-40'


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   04-Jan-2004 Written by JXP

(See Obs//x_msklayout.pro)


X_NORMFLAT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_normflat   
    Version 1.0

 PURPOSE:
    Normalizes a multi-slit flat given the slit structure

 CALLING SEQUENCE:
   
   nrmflat = x_normflat( flat, slitstr, [var, nrmvar] )

 INPUTS:
   flat       - Flat image or fits file
   slistr     - Slit structure
   [var]      - Variance array   

 RETURNS:
   nrmflat    - Normalized flat   
   nrmvar     - Normalized variance

 OUTPUTS:

 OPTIONAL KEYWORDS:
  YMED      -  Number of pixel offset from yedg to take median of
  YNRM      -  Number of pixels outside yedg to normalize

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   nrmflat = x_normflat( flat, slitstr )


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   11-Feb-2002 Written by JXP
   15-Feb-2002 Revised to allow normalization of original
   27-Mar-2004 Revised by MRB to not analyze flg_anly==0 slits

(See Spec/Slits//x_normflat.pro)


X_NORMSPEC

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_normspec   
    Version 1.0

 PURPOSE:
    Normalizes a multi-slit image given a normalized flat

 CALLING SEQUENCE:
   nrmspec = x_normspec( img, flat, [var, nrmvar])

 INPUTS:
   flat       - Flat image or fits file
   slistr     - Slit structure

 RETURNS:
   nrmspec    - Normalized flat   

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   nrmspec = x_normspec( img, flat)


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   20-Feb-2002 Written by JXP

(See Spec/Slits//x_normspec.pro)


X_NRMSPEC

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

 PURPOSE:
  Applies the continuum to unnormalized data

 CALLING SEQUENCE:
   x_nrmspec, fluxfil, contfil, outfil, EFIL=, OUTE=

 INPUTS:
  fluxfil  -- Name of fluxed spectrum (or non-normalized)
  contfil  -- Name of file containing the continuum
  outfil   -- Name of output file to contain normalized spectrum

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  INFLG= -- Keyword for x_readspec for reading the spectrum [default:
            0]
  EFIL=  -- Filename of sigma array
  OUTE=  -- Filename for normalized sigma array

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   Fall-2005 Written by JXP

(See Spec/Analysis//x_nrmspec.pro)


X_OBJNUMID

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

 PURPOSE:
    Turns an integer into a letter for Obj identification

 CALLING SEQUENCE:
   
   idval = x_objnumid( num )

 INPUTS:
  num - An integer

 RETURNS:
  idval -- A letter (0='a', 1='b', etc.)

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   idval = x_objnumid( 1 )

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   03-Mar-2002 Written by JXP

(See Spec/Slits//x_objnumid.pro)


X_OBSINIT

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

 PURPOSE:
  Initialize observing structures for an observatory

 CALLING SEQUENCE:

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /MAUNAKEA -- Use values for MK

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:
  showfits
  querydss

 REVISION HISTORY:
   27-Oct-2005 Written by JXP

(See Obs//x_obsinit.pro)


X_OPLOTCIRC

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

 PURPOSE:
   Overplot a circle on a current plot given center and radius

 CALLING SEQUENCE:
   x_oplotcirc, rad, x0=, y0=, NPT=, _EXTRA=

 INPUTS:
  rad -- Radius of the circle (plot units)

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  x0 -- x-center of the circle [default: 0.]
  y0 -- y-center of the circle [default: 0.]
  NPT -- Number of points to discretize the circle [default: 1000L]

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
  x_oplotcirc, 2., x0=3., y0=4.

 PROCEDURES CALLED:

 REVISION HISTORY:
   22-Nov-2003 Written by JXP

(See General//x_oplotcirc.pro)


X_ORDRECTIFY

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

 PURPOSE:
  Return an image of a single order, which is rectified,
  has a width of 2*long(min(rhedg-lhedg)/2) + 1
  and conserves counts in each row.
  lhedg maps to the first column, rhedg to last column
  and center of order to central column

 CALLING SEQUENCE:
   
  rect_image = x_ordrectify(arc_img, lhedg, rhedg, /NOCORRECT) 

 INPUTS:
   img  -  Raw image
   lhedg - Left hand edge of the order
   rhedg - Right hand edge of the order

 RETURNS:
   rect_img  -  Rectified 2D image

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /NOCORRECT  - ??
  HALFW - Half width of the order (default: Minimum half width)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
  rect_image = x_ordrectify(arc_img, lhedg, rhedg, /NOCORRECT)


 PROCEDURES/FUNCTIONS CALLED:
  x_ordrectify

 REVISION HISTORY:
   ??--2004 Written by SB

(See Spec/Rectify//x_ordrectify.pro)


X_ORIGSLIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_origslit   
    Version 1.0

 PURPOSE:
    Given the slitstr and the map, find slit positions in the
    original image.  The values are filled into the slit structure.

 CALLING SEQUENCE:
   x_origslit, slitstr, map, /INVERSE

 INPUTS:
   slitstr     - Slit structure
   map         - y-distortion map (fits is ok)

 RETURNS:

 OUTPUTS:
   Updates slitstr for original positions

 OPTIONAL KEYWORDS:
  /INVERSE  -- The map is the inverse!

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_origslit, slitstr, map


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   14-Feb-2002 Written by JXP

(See Spec/Slits//x_origslit.pro)


X_PADSTR

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

 PURPOSE:
    Pads an input string to a input length

 CALLING SEQUENCE:
   
   padstr = x_padstr(instr, len, /TRIM)

 INPUTS:
   instr -- Input string
   len   -- Desired length of string
  [PAD_CHAR] -- Input charcater for padding

 RETURNS:
   padstr -- Padded string.  Default is the back

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /TRIM --  First trim the string of extraneous blank spaces
  /REVERSE -- Pad from the front

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   pad = x_padstr('Blah', 15L)


 PROCEDURES CALLED:

 REVISION HISTORY:
   11-Nov-2004 Written by JXP

(See General//x_padstr.pro)


X_PHOTCAL

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

 PURPOSE:
    Derives a photometric solution for standard stars

 CALLING SEQUENCE:
   
 x_photcal, obs, landolt, ans, sig, MINSIG=, SETAM=, NCORR=, CHISQ=

 INPUTS:
   obs - Standard star observations  (stdstruct)
   landolt - Landolt info (lndltstr)

 RETURNS:
   ans - Fit
   sig - Error on the fit parameters

 OUTPUTS:

 OPTIONAL KEYWORDS:
  MINSIG - Minimum error for obs+landolt        (default = 0.01)
  MAXSIG - Maximum error to include in analysis (default = 0.1)
  SETAM   - Value to assume for the airmass term
  /NOCLR  - No color term (e.g. only one filter solution)
  MIN_NOBS  - Minimum number of n epochs to include (default = 4)
  MIN_MOBS  - Minimum number of m epochs to include (default = 2)

 OPTIONAL OUTPUTS:
  NCORR - Normalized correlation matrix
  CHISQ - Chisq of the calibrated fit

 COMMENTS:

 EXAMPLES:
   x_photcal, obs, landolt, ans, sig

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   08-Aug-2001 Written by JXP

(See IMG/Photometry//x_photcal.pro)


X_PHOTSOL1

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

 PURPOSE:
    Performs the linear algebra on a set of obs with 1 free
    parameters, i.e., Airmass fixed and NO color term

 CALLING SEQUENCE:
   
 x_photsol1, mo0, mT, sig, airmass, setam, coeffs, sigma_coeff,
              COLOR=

 INPUTS:
   mo0 -  Observed magnitudes
   mT  -  True magnitudes
   sig - Combined Error 
   airmass - Airmass values
   SETAM - Value to set air mass coefficient to [Assumed positive!]

 RETURNS:
   coeffs - Fit
   sigma_coeffs - Error on the fit

 OUTPUTS:

 OPTIONAL KEYWORDS:
   color   - Color values

 OPTIONAL OUTPUTS:
  CHISQ - chisq

 COMMENTS:

 EXAMPLES:
   x_photsol1, blah

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   09-Aug-2001 Written by JXP

(See IMG/Photometry//x_photsol1.pro)


X_PHOTSOL2

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

 PURPOSE:
    Performs the linear algebra on a set of obs with 2 free
    parameters, i.e., either Airmass fixed or NO color term

 CALLING SEQUENCE:
   
 x_photsol2, mo0, mT, sig, airmass, coeffs, sigma_coeff,
              SETAM=, COLOR=, CHISQ=

 INPUTS:
   mo0 -  Observed magnitudes
   mT  -  True magnitudes
   sig - Combined Error 
   airmass - Airmass values

 RETURNS:
   coeffs - Fit
   sigma_coeffs - Error on the fit

 OUTPUTS:

 OPTIONAL KEYWORDS:
   SETAM - Value to set air mass coefficient to [Assumed positive!]
   color   - Color values

 OPTIONAL OUTPUTS:
  CHISQ - chisq

 COMMENTS:

 EXAMPLES:
   x_photsol2, blah


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   08-Aug-2001 Written by JXP

(See IMG/Photometry//x_photsol2.pro)


X_PHOTSOL3

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

 PURPOSE:
    Performs the linear algebra on a set of obs.  Fits for three
  free parameters: zero point, airmass term, color term

 CALLING SEQUENCE:
   
 x_photsol3, mo0, mT, sig, airmass, color, coeffs, sigma, 
      CHISQ=, NCORR=

 INPUTS:
   mo0 -  Observed magnitudes
   mT  -  True magnitudes
   sig - Combined Error 
   airmass - Airmass values
   color   - Color values

 RETURNS:
   coeffs - Fit
   sigma_coeffs - Error on the fit

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:
  NCORR - Normalized correlation matrix
  CHISQ - chisq

 COMMENTS:

 EXAMPLES:
   x_photsol3, blah


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   08-Aug-2001 Written by JXP

(See IMG/Photometry//x_photsol3.pro)


X_PIXMINMAX

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

 PURPOSE:
  Find pixels in the wavelength array corresponding to the redshift
  and rest wavelength.

 CALLING SEQUENCE:
   
   x_pixminmax, wave, wrest, zabs, [vmin, vmax], PIXMIN=, PIXMAX=, VELO=

 INPUTS:
  wave -- Wavlength array
  wrest -- Rest wavelength of transition
  zabs -- Absorption redshift
  [vmin,vmax] -- Velocity minimum and maximum

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:
  PIXMIN= -- Pixel value corresponding to VMIN
  PIXMAX= -- Pixel value corresponding to VMAX
  VELO= -- Velocity array

 COMMENTS:

 EXAMPLES:
   x_pixminmax, wave, 1808.0126d, 1.5, -100., 50., PIXMIN=pixmn

 PROCEDURES CALLED:

 REVISION HISTORY:
   10-Jun-2002 Written by JXP

(See General//x_pixminmax.pro)


X_PLTARC

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

 PURPOSE:

 CALLING SEQUENCE:
   
 x_templarc, spec, lines, guessfit, /FFT, MSK=, MXSHFT=, $
               MOCK_FFT=, SHFT=, ALL_PK=, PKWDTH=, $
               /THIN, FORDR=, PKSIG=, SKIPLIN=, $
               MXOFF=, /LOG

 INPUTS:
   spec       - Input arc image or spectrum
   lines      - Arc line structure
  guessfit    - FIT to archived arc

 RETURNS:

 OUTPUTS:
   lines     - Sets flg_plt to 1 those lines which are ID'd

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:
  ALL_PK= --  Pix values of the arc line peaks

 COMMENTS:

 EXAMPLES:
   x_templarc, spec, lines, guessfit, SHFT=shft

 PROCEDURES/FUNCTIONS CALLED:
  x_fndpeaks

 REVISION HISTORY:
   26-Aug-2002 Written by JXP

(See Spec/Arcs//x_pltarc.pro)


X_PLTOBJ

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

 PURPOSE:
   Sophisticated GUI for plotting 1D and 2D spectra together.

 CALLING SEQUENCE:
  x_pltobj, wave, fx, sig, infx, inwv, [imgwv], YSIZE=
             XSIZE=, PMNX=, YSIZE=, OBJNM=, ZIN=, XMAX=, LLIST=

 INPUTS:
 wave -- 1D Wavelength array
 fx   -- 1D flux array
 sig  -- 1D sigma array
 infx -- 2D flux image
 inwv -- 2D wavelength image
 [imgwv] -- 1D wavelength array giving approximate wave of the 2D
            image

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  XSIZE= -- Size of gui in screen x-pixels [default = ssz-300]
  YSIZE= -- Size of gui in screen y-pixels [default = ssz-400]
  PMNX=  -- Plot range of the 1D spectrum
  ZIN=   -- Input redshift for the object
  LLIST= -- Line list to use upon initialization (1: QAL, 2: GAL, 3:
            QSO)
  OBJNM= -- Title for the plot
  XMAX=  -- Maximum x value for the 1D plot

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_pltobj, x, maskid, expsr


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   19-Apr-2002 Written by JXP

(See Spec/Analysis//x_pltobj.pro)


X_PLTVPFIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_pltvpfit
  V1.2

 PURPOSE:
    Given a ISM structre write the files out

 CALLING SEQUENCE:
  flux = x_pltvpfit(wrest, wv, vpfils, FWHM=)

 INPUTS:
  wrest -- Rest wavelength [Ang]
  wv    -- Wavelength array
  vpfils -- Structure with VPFIT info

 RETURNS:

 OUTPUTS:
  Ion structure.  Column densities have linear values

 OPTIONAL KEYWORDS:
  FWHM=  -- FWHM in pixels of the spectral resolution

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES CALLED:

 REVISION HISTORY:
   05-Apr-2007 Written by JXP 

(See Spec/Lines//x_pltvpfit.pro)


X_PRSPEAKS

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

 PURPOSE:
    Launches a GUI to enable the user to fiddle with peaks by hand

 CALLING SEQUENCE:
   
   x_prspeaks, [xdat], ydat, XSIZE=, YSIZE=, TITLE=, XTWO=, YTWO=, PSYM_Y2=,
      /BLOCK

 INPUTS:
   [xdat]     - x values (optional)
   ydat       - Values 

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   xsize      - Draw window xsize (pixels)
   ysize      - Draw window ysize (pixels)
   TITLE
   YTWO
   PSYM_y2
   BLOCK

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_prspeaks, y


 PROCEDURES/FUNCTIONS CALLED:
  XGETX_PLT
  XGETY_PLT
  XGETXPIX_PLT
  XGETYPIX_PLT

 REVISION HISTORY:
   17-Nov-2001 Written by JXP (modified from x1dfit)
   24-Nov-2001 Added ytwo

(See Spec/Arcs//x_prspeaks.pro)


X_PSCLOSE

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

 PURPOSE:
    Call ps_close and reset a number of default values.  Point window
   at X-windows.

 CALLING SEQUENCE:
   
 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:
  ps_close
  set_plot

 REVISION HISTORY:
   09-Feb-2004 Written by JXP

(See General//x_psclose.pro)


X_PSOPEN

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

 PURPOSE:
  Calls ps_open and sets a number of default plotting values.  

 CALLING SEQUENCE:
   
   x_psopen, fil, /MAXS, /PORTRAIT

 INPUTS:
   img       - Fits file or data

 RETURNS:
   dat       - Data in fits file or the input data

 OUTPUTS:

 OPTIONAL KEYWORDS:
  FSCALE      - Data is float

 OPTIONAL OUTPUTS:
  HEAD        - Header

 COMMENTS:

 EXAMPLES:


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   09-Feb-2004 Written by JXP

(See General//x_psopen.pro)


X_RADEC

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

 PURPOSE:
    Turns RA, DEC in XX:XX:XX.X -DD:DD:DD.D format to decimal deg
      or VICE VERSA

 CALLING SEQUENCE:
   
   x_radec, ra, dec, rad, decd, /ARCS, /FLIP

 INPUTS:
   ra, dec    - RA and DEC in in RR:RR:RR.R -DD:DD:DD.D format 
                 Colons are required as separators
   rad, decd  - RA and DEC in decimal degrees (double)

 RETURNS:

 OUTPUTS:
   ra, dec    - RA and DEC in in RR:RR:RR.R -DD:DD:DD.D format 
                 Colons are required as separators
   rad, decd  - RA and DEC in decimal degrees (double)

 OPTIONAL KEYWORDS:
   ARCS - Outputs in arcseconds
   /FLIP - Gives RA and DEC from decimal RA,DEC
   /LONG -- Passes back a longer form (string only)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_radec, '21:12:23.1', '-13:13:22.2', rad, decd

 PROCEDURES CALLED:

 REVISION HISTORY:
   04-Aug-2001 Written by JXP
   20-Nov-2003 Added + sign for /flip

(See General//x_radec.pro)


X_READIMG

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

 PURPOSE:
    Convert input to data whether it is a fits file or an image array

 CALLING SEQUENCE:
   
   dat = x_readimg(img)

 INPUTS:
   img       - Fits file or data

 RETURNS:
   dat       - Data in fits file or the input data

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /FSCALE      - Data is float
  /DSCALE      - Data is double

 OPTIONAL OUTPUTS:
  HEAD=       - Header

 COMMENTS:

 EXAMPLES:
   dat = x_readimg('spec.fits')


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   07-Dec-2001 Written by JXP

(See General//x_readimg.pro)


X_READMHDUFITS

[Previous Routine] [Next Routine] [List of Routines]
 NAME: x_readmhdufits.pro

 PURPOSE: 
       Given a multi-HDU FITS file, this routine will assemble the
       various components into a single array based on the header
       keywords describing the layout.

 CALLING SEQUENCE: 
       array = readmhdufits(filename)

 INPUTS:
	filename = name of the multi-HDU FITS file to read

 OPTIONAL INPUT KEYWORD PARAMETERS:
       NOTRIM   - if set, do not trim pre- and post-scan columns
       NOBIAS   - if set, do not perform overscan subtraction
       LINEBIAS - if set, remove overscan line by line [default = use
                  scalar value]
       GAINDATA - if set to a structure with gain for each amp, make
                  gain correction
       VERBOSE  - if set, give feedback

 OPTIONAL OUTPUT KEYWORD PARAMETERS:
       HEADER  - retrieve the header from the primary HDU and return
                 it as a string array

 OUTPUTS:
       This function will return a 2-D floating-point array
       representing the assembled image.

 REQUIREMENTS:
       - Requires the IDL Astronomy User's Library routines 
       (http://idlastro.gsfc.nasa.gov/)

 EXAMPLES:
       1) Read in a FITS file, with trimming and bias removal,
       returning the data as "array" and the header as "header":
               array = readmhdufits( 'lred0001.fits', header=header) 

       2) Read in a FITS file, without trimming or bias removal,
       returning the data as "array" and the header as "header":
               array = readmhdufits( 'lred0001.fits', /notrim,
               /nobias, header=header) 


       3) Perform gain correction and use line-by-line bias
       determination:
               gain = [1.,2.,3.,4] ; for vidInp1,2,3,4
               gaindata = build_gaindata(gain)
               array = readmhdufits( 'lred0001.fits', /linebias, 
                       gaindata=gaindata)
	
 PROCEDURE:
	- Uses the fits keyword in the header extentions 
        DETSEC  = '[4096:3073,1:4096]' / NOAO mosaic detector section for ds9
	to piece the mosiac together.

 AUTHOR:
       Marc Kassis, W. M. Keck Obseravtory

 MODIFICATION HISTORY:
	2009-May-27	MKassis v0.0	Original version
	2009-Jun-02	GWirth	v0.1	- added secparse routine
					- now returns type FLOAT array
					- added optional baseline removal
	2009-Jun-16	GDW	v0.2	- fix problem with NOTRIM mode
                                       - use MRDFITS instead of FITSREAD
       2009-Jun-19     GDW     v0.3    - adapt for binned data
                                       - write lris_read_amp function
       2009-Jun-19     GDW     v0.5    - fix bug with PRELINE
       2009-Jun-24     JMS     v0.6    - fix bug with BZERO
       2009-Jul-02     GDW     v0.7    - add LINEBIAS option
                                       - add GAINDATA option

(See Keck/LRIS/General/x_readmhdufits.pro)


X_REBIN2DSPEC

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

 PURPOSE:
    Rebin a single data set to a new wavlength scale
      Simple adding (no weighting by S/N)

 CALLING SEQUENCE:
  x_rebin2dspec, wv, fx, nwwv, nwfx, VAR=, NWVAR=, GDPIX=,
                  /SILENT, /REDBLUE, /CR, /REBINC

 INPUTS:
   wv   -- Wavelength array
   fx   -- Flux array
   newwv -- New wavelength array to rebin to

 RETURNS:

 OUTPUTS:
   newfx -- New flux array

 OPTIONAL KEYWORDS:
  VAR=     -- Data is float
  /REBINC  -- Rebin using a C program
  /REDBLUE -- Data runs from red to blue

 OPTIONAL OUTPUTS:
  NEWVAR=  - New variance array
  /CR      - VAR = -1 flag CR and eliminate the pix

 COMMENTS:

 EXAMPLES:
   x_rebin2dspec, gdpix, orig_wv, orig_fx, newwv, newfx


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   12-Apr-2002 Written by JXP
   24-Aug-2002 Added C program

(See Spec/General//x_rebin2dspec.pro)


X_RECTIFY

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

 PURPOSE:
    Takes the y-distortion map and rectifies an image

 CALLING SEQUENCE:
   
   rect = x_rectify(img, map, /TRANSP, /SILENT, /DBL, /FIDL)

 INPUTS:
   img       - Input image
   map       - y-distortion map

 RETURNS:
   rect      - Rectified image

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /FIDL  -- Do this using IDL as opposed to a fast C program
  /TRANSP -- Transpose the image first
  /DBL   -- Return the rectified image in double precision

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   rect = x_rectify(flat, map)


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   29-Jan-2002 Written by JXP
   13-Aug-2002 Added transpose option (JXP)

(See Spec/Rectify//x_rectify.pro)


X_REGISTER

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

 PURPOSE:
    Given a set of offsets between images, this routine will
   create final images that are registered.

 CALLING SEQUENCE:
   
   x_register, img, offsets, GOODREG=, OUTPTH=

 INPUTS:
   img -- String array of image names (assumes _sig extensions for sig
          files)
   offsets -- Integer offsets between images

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   goodreg -- Region of each image (4 int array) defining good data
               Formatted (x0,x1,y0,y1)
   OUTPTH  -- Output path for the images

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_regsiter, img, off, GOODREG=good

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   02-Aug-2001 Written by JXP

(See IMG/Reduction//x_register.pro)


X_RELVEL

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

 PURPOSE:
  Calculate redshifts [default] or velocties using special rel
  All velocities are km/s and positive means lower redshift

 CALLING SEQUENCE:
   [z2 or v] = x_relvel( z1, [v or z2], /REVERSE)

 INPUTS:
    z1 -- Redshift of 'rest'

 RETURNS:
    v or z2 -- z2 is default given a velocity (km/s)

 OUTPUTS:

 OPTIONAL KEYWORDS:
   

 OPTIONAL OUTPUTS:
  AMIN -- Mpc per arcmin at z

 COMMENTS:

 EXAMPLES:
   print, x_relvel(3., 3000.)  [Answer = 2.9601706]

 PROCEDURES CALLED:

 REVISION HISTORY:
   10-Aug-2006 Written by JXP

(See Cosm//x_relvel.pro)


X_SETAPER

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

 PURPOSE:
    Determine an aperture for an object automatically

 CALLING SEQUENCE:
   x_setaper, spec, center, [frac], RADIUS=, /SKYSUB

 INPUTS:
   spec      - Spectrum (fits file ok)
   center    - center of aperture (guess, actual center not essential)
   frac      - Fraction of profile to extract [default: 0.05 off each side]

 RETURNS:
   aperture  - Aperture: float(2) array around center

 OUTPUTS:

 OPTIONAL KEYWORDS:
  RADIUS=  -- Region of object profile to consider
  /SKYSUB  -- Calculate a median sky at outer regions of slit and 
              subtract off

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_setaper, 'spec.fits', 200.


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   01-Apr-2001 Written by JXP
   02-May-2002 Revised sky level

(See Spec/Extraction//x_setaper.pro)


X_SETAPERGUI

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

 PURPOSE:
   Sets objects and apertures interactively using a GUI

 CALLING SEQUENCE:
   x_setapergui, img, XSIZE=, YSIZE=, CLINE=, PEAKFRAC=, OBJSTR=

 INPUTS:
   img   - 1D or 2D image

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   xsize      - Draw window xsize (pixels)
   ysize      - Draw window ysize (pixels)
   CLINE      - Center line for 2D image to 'extract' 1D [default: sz[1]/2]
   PEAKFRAC=  - Fraction of peak 

 OPTIONAL OUTPUTS:
  OBJSTR=  -- Object structure with the aperture filled in.  This will
              include multiple objects if they are identified.

 COMMENTS:

 EXAMPLES:
   x_setapergui, 'spec.fits'

 PROCEDURES/FUNCTIONS CALLED:
  XGETX_PLT
  XGETY_PLT
  XGETXPIX_PLT
  XGETYPIX_PLT
  GETCOLOR (Coyote)
  DJS_MEDIAN

 REVISION HISTORY:
   17-Nov-2001 Written by JXP

(See Spec/Extraction//x_setapergui.pro)


X_SETBWCLR

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

 PURPOSE:
    Creates an array of B&W shades useful for converting index
    numbers into 'color'

 CALLING SEQUENCE:
   
   xcolors = x_setclrs()

 INPUTS:
   [nclr]  - Optional input setting the array size (Default is 12)

 RETURNS:
   xcolors - String Array of B&W shades

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
  xcolors = x_setbwclr()

 PROCEDURES CALLED:
   getcolor (Coyote package)

 REVISION HISTORY:
   25-Nov-2001 Written by JXP

(See Color//x_setbwclr.pro)


X_SETCLRS

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

 PURPOSE:
    Creates an array of colors useful for converting index
    numbers into color

 CALLING SEQUENCE:
   
   xcolors = x_setclrs()

 INPUTS:
   [nclr]  - Optional input setting the array size (Default is 12)

 RETURNS:
   xcolors - String Array of colors

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /WHITE  - Assumes a black background 

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
  xcolors = x_setclrs()

 PROCEDURES CALLED:
   getcolor (Coyote package)

 REVISION HISTORY:
   25-Nov-2001 Written by JXP

(See Color//x_setclrs.pro)


X_SETDDATE

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

 PURPOSE:
    Converts a string date into decimal date 

 CALLING SEQUENCE:
   ddate = x_setddate(date)

 INPUTS:
   date     - String name of the date
      Allowed formats:  DDmmmYY  (e.g. 22Oct99)
                        DD-MM-YY (e.g. 20-12-99)
                        YYYY-MM-DD (e.g. 1999-12-20)

 RETURNS:
   ddate    -  Decimal date

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:
   If Year is < 50, then the year 2000 is presumed

 EXAMPLES:
   ddate = x_setddate('29Oct00')

 PROCEDURES CALLED:

 REVISION HISTORY:
   07-Aug-2001 Written by JXP

(See General//x_setddate.pro)


X_SETFITSTRCT

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

 PURPOSE:
    Initizlies a 1D FIT structure.

 CALLING SEQUENCE:
   
  fitstr = x_setfitstrct(NITER=, MINPT=, MAXREJ=, FUNC=, NORD=,
  HSIG=, lSIG=, FLGREJ=)

 INPUTS:

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  NITER -- Number of iterations for FIT  [default: 1L]
  MINPT -- Number of points to keep in FIT [default: 1L]
  MAXREJ -- Max Number of points to reject [default: 100L]
  FUNC -- Max Number of points to reject [default: 'POLY']
  NORD -- Order of the fit [default: 3L]
  HSIG -- Upper sigma for rejection [default: 3.]
  LSIG -- Lower sigma for rejection [default: 3.]
  /FLGREJ -- Turn on rejection [default: NONE]

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   fitstr= x_setfitstrct(/FLGREJ)

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   17-Jul-2002 Written by JXP

(See FIT//x_setfitstrct.pro)


X_SETJDATE

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

 PURPOSE:
    Converts a string date into Julian date 

 CALLING SEQUENCE:
   
   jdate = x_setjdate(date, [UTTIME])

 INPUTS:
   date     - String name of the date
      Allowed formats:  DDmmmYY  (e.g. 22Oct99)
                        DD-MM-YY (e.g. 20-12-99)
                        YYYY-MM-DD (e.g. 1999-12-20)
                        DDMMMYYYY (e.g. 20JAN2004)
   [UTTIME] -- To create JD with hr, min, sec (e.g. 12:11:29)

 RETURNS:
   jdate    -  Decimal date

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:
   If Year is < 50, then the year 2000 is presumed

 EXAMPLES:
   jdate = x_setjdate('29Oct00')


 PROCEDURES CALLED:
   julday  (IDL package)

 REVISION HISTORY:
   31-Aug-2002 Written by JXP

(See General//x_setjdate.pro)


X_SETLINE

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

 PURPOSE:
    Given an atomic wavelength, return the fvalue and name in the
    absorption line structure.

 CALLING SEQUENCE:
   linstr = x_setline(wave, LINFIL=)

 INPUTS:
   wave  - rest wavelength

 RETURNS:
  linstr -  Abslinstrct of the relevant line

 OUTPUTS:

 OPTIONAL KEYWORDS:
  LINFIL=  -- FITS file containing a set of ABSLINSTRCT entries
  /OVERRIDE -- Bust through the stop sign for lines not in the
               database
 /CLOSE --  Return the closest line (not exact)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   linstr = x_setline( 1215.6701 )

 PROCEDURES CALLED:

 REVISION HISTORY:
   17-Oct-2002 Written by JXP

(See Spec/Lines//x_setline.pro)


X_SETLLST

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

 PURPOSE:
    Returns a line list sturcture gven a file and a flag

 CALLING SEQUENCE:
   
   llist = x_setllst(file, fmt)

 INPUTS:
   file       - Line list filename
   fmt        - Format of line file  
                    0='lin.dat', 1=Gal or QSO line list

 RETURNS:
   llist - Structure of linelists

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   llist = x_setllst('/u/xavier/bin/junk/lin.dat', 0)

 PROCEDURES CALLED:

 REVISION HISTORY:
   17-Sat-2001 Written by JXP

(See Spec/Lines//x_setllst.pro)


X_SETOBJGUI

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       x_setobjgui
   Version 1.1
 
 PURPOSE: 
       Interactive display of slit mask and slit positions and object
       traces to allow verificaiton of the identificaitons and
       traces.  Largely based on ATV

 CATEGORY: 
       Image display.

 CALLING SEQUENCE:
       x_setobjgui img, slitstr, objstr, [,min = min_value] 
           [,max=max_value] 
           [,/linear] [,/log] [,/histeq] [,/block]
           [,/align] [,/stretch] [,header = header]

 REQUIRED INPUTS:
   img  -- FITS file
   slitstr -- Slit structure
   objstr  -- Object sturcture

 OPTIONAL INPUTS:
       array_name: a 2-D data array to display
          OR
       fits_file:  a fits file name, enclosed in single quotes

 KEYWORDS:
       min:        minimum data value to be mapped to the color table
       max:        maximum data value to be mapped to the color table
       linear:     use linear stretch
       log:        use log stretch 
       histeq:     use histogram equalization
       block:      block IDL command line until ATV terminates
       align:      align image with previously displayed image
       stretch:    keep same min and max as previous image
       header:     FITS image header (string array) for use with data array
       
 OUTPUTS:
       None.  
 
 COMMON BLOCKS:
       x_setobjgui_state:  contains variables describing the display state
       x_setobjgui_images: contains the internal copies of the display image
       x_setobjgui_color:  contains colormap vectors
       x_setobjgui_pdata:  contains plot and text annotation information

 RESTRICTIONS:
       Requires IDL version 5.1 or greater.
       Requires Craig Markwardt's cmps_form.pro routine.
       Requires the GSFC IDL astronomy user's library routines.
       Some features may not work under all operating systems.

 SIDE EFFECTS:
       Modifies the color table.

 EXAMPLE:
       To start x_setobjgui running, just enter the command 'x_setobjgui' at the idl
       prompt, either with or without an array name or fits file name 
       as an input.  Only one x_setobjgui window will be created at a time,
       so if one already exists and another image is passed to x_setobjgui
       from the idl command line, the new image will be displayed in 
       the pre-existing x_setobjgui window.

 MODIFICATION HISTORY:
       Written by Aaron J. Barth, with contributions by 
       Douglas Finkbeiner, Michael Liu, David Schlegel, and
       Wesley Colley.  First released 17 December 1998.

       This version is 1.3, last modified 28 November 2000.
       For the most current version, revision history, instructions,
       list of known bugs, and further information, go to:
              http://cfa-www.harvard.edu/~abarth/x_setobjgui/x_setobjgui.html
       Revised by JXP Aug-2001

(See Spec/Slits//x_setobjgui.pro)


X_SETSLITS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   x_setslits
 PURPOSE:
    Finds slit edges on the 'flattened' flat in the presence of rotation
 CALLING SEQUENCE:
   slackers_setslits, flatimg, slitstr
 INPUTS:
   flat        - Flat image or fits file
   slitstr     - Slit structure
 COMMENTS:
   This piece of code allows for a slight rotation (-2 to 2 deg) of
   the mask, which can cause overlapping slits and other annoying
   things.
 REVISION HISTORY:
  14-Feb-2002 Written by JXPj
   6-Apr-2004 Revised by MRB 

(See Spec/Slits//x_setslits.pro)


X_SETWAVE

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

 PURPOSE:
    Sets a wavelength array given a header from a FITS file

 CALLING SEQUENCE:
   
   wave = x_setwave(head, ntot)

 INPUTS:
   head     - Header
   ntot     - number of pixels

 RETURNS:
   wave     - Wavelength array

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   wave = x_setwave(head, 1000L)


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   17-Nov-2001 Written by JXP 

(See Spec/General//x_setwave.pro)


X_SLCTLINE

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

 PURPOSE:
    Launches a GUI and allows the user to select a line.  The code
    then returns the rest wavelength of that line.

 CALLING SEQUENCE:
   line = x_slctline, lines, /ISM, NLIN=, ILIN=, XOFFSET=, YOFFSET=, /GAL,
                    PDMENU=

 INPUTS:
   lines  - Line list structure

 RETURNS:
   line - Wavelength (double)

 OUTPUTS:
  line = unit number of line

 OPTIONAL KEYWORDS:
   /ISM     - ISM style
   /GAL     - Use the Galaxy style
   YOFFSET= - Placement of the GUI [default: 200]
   XOFFSET= - Placement of the GUI [default: 200]
   PDMENU=  - String array formatted for cw_pdmenu
   NLIN=    - Grab only the first NLIN lines (only for non-ISM or
              GAL)

 OPTIONAL OUTPUTS:
   ILIN= - Index of the selected line in the line list structure

 COMMENTS:

 EXAMPLES:
   line = x_slctline( lines )


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   17-Nov-2001 Written by JXP
   29-Nov-2001 Significantly revised
   08-Dec-2001 Allows ism or name+wave

(See Spec/Lines//x_slctline.pro)


X_SLITTOOBJ

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_slittoobj   
    Version 1.0

 PURPOSE:
    Simple program to move some tags from the slit structure into the
    object structure

 CALLING SEQUENCE:
   x_slittoobj, objstr, nobj, slitstr, clm

 INPUTS:
   objstr      - Object sturcture
   nobj        - Index of the object
   slitstr     - Slit structure
   clm         - Column where the object was identified

 RETURNS:

 OUTPUTS:
   Updates slitstr for original positions

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_slittoobj, objstr, nobj, slitstr


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   03-Mar-2002 Written by JXP

(See Spec/Slits//x_slittoobj.pro)


X_SPECBIN

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

 PURPOSE:
  Bins up 1D spectra in integer pixels. The routine returns a
  structure of flux and wavelength and variance that has been
  rebinned.

 CALLING SEQUENCE:
   bin = x_specbin(fx, nbin, VAR=, WAV=)

 INPUTS:
   fx       - Flux
   nbin     - Number of pixels to bin on

 RETURNS:
   bin       - Structure of data

 OUTPUTS:

 OPTIONAL KEYWORDS:
  VAR=  -- Input variance array
  WAV=  -- Input wavelength array

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   bin = x_specbin(fx, 3)

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   04-Mar-2002 Written by JXP

(See Spec/Analysis//x_specbin.pro)


X_SPECCOADD

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

 PURPOSE:
    Routine written to coadd spectra.  I highly recommend using
    x_combspec instead.  The routine here is old and not recently
    tested!

 CALLING SEQUENCE:
   dat = x_speccoadd(spec)

 INPUTS:
   spec       - Fits file or data

 RETURNS:
   dat       - Data in fits file or the input data

 OUTPUTS:

 OPTIONAL KEYWORDS:
  FSCALE      - Data is float
  DSCALE      - Data is float

 OPTIONAL OUTPUTS:
  HEAD        - Header

 COMMENTS:

 EXAMPLES:
   dat = x_speccoadd('spec.fits')


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   27-Feb-2002 Written by JXP

(See Spec/Analysis//x_speccoadd.pro)


X_SPECPAN

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

 PURPOSE:
    Moves about a spectrum to left or right in a GUI.  The
  state structure must have TAGS: xymnx and wave

 CALLING SEQUENCE:
   x_specpan, state, /LEFT, /NOY

 INPUTS:
  state -- GUI state structure with TAGS: xymnx, wave

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /LEFT -- Pan left (default is right)
  /NOY  -- Do not rescale in y  (default is to rescale)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_specpan, state, /LEFT

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   17-Nov-2001 Written by JXP 

(See Spec/Display//x_specpan.pro)


X_SPECPLOT

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

 PURPOSE:
    GUI for plotting a spectrum and doing quick analysis 

 CALLING SEQUENCE:
   
   x_specplot, flux, [ysin], XSIZE=, YSIZE=, TITLE=, WAVE=, LLIST=,
           /QAL, /GAL, ZIN=, /BLOCK, /NRM, /LLS, /QSO, /LBG

 INPUTS:
   flux  - Flux array (or FITS file)
   [ysin]  - Sigma array (or FITS file)

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   xsize      - Draw window xsize (pixels)
   ysize      - Draw window ysize (pixels)
   wave=      - wavelength array
   dunit=     - Extension in the FITS file
   INFLG=     - Specifies the type of input files (or arrays)
   /LLS       - Use Lyman limit line list
   /QSO       - Use Quasar line list
   /GAL       - Use galaxy line list
   /QAL       - Use quasar absorption line list
   /LBG       - use the Lyman Break Galaxy line list (Shapley et al '03)
   XRANGE=    - Opening plot x-axis (and default)
   YRANGE=    - Opening plot y-axis (and default)
   /GUI       - Choose from a list of FITS files (current directory)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_specplot, 'spec.fits'


 PROCEDURES/FUNCTIONS CALLED:
  XGETX_PLT
  XGETY_PLT
  XGETXPIX_PLT
  XGETYPIX_PLT

 REVISION HISTORY:
   17-Nov-2001 Written by JXP
   19-Dec-2001 Added Error array, Colm
   21-May-2008 Added XRANGE option, KLC
   16-Oct-2008 Enable flux, ysin to be arrays, KLC
;  29-Apr-2010 Added Shapley et al (2003) LBG composite, fixed 'g',
;              updated Help table, KLC

(See Spec/General//x_specplot.pro)


X_SPECREBIN

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

 PURPOSE:
    Rebin a single data set to a new wavlength scale
      Simple linear interpolation.

 CALLING SEQUENCE:
   x_specrebin, wv, fx, nwwv, nwfx, VAR=, NWVAR=, /SILENT, /REDBLUE

 INPUTS:
   wv -- Original wavelength array
   fx -- Orignal flux array
   newwv -- New (desired) wavelength array

 RETURNS:
   nwfx  -- New flux array

 OUTPUTS:

 OPTIONAL KEYWORDS:
  VAR= -- Original variance array
  /REDBLUE --  Data runs from red to blue (not blue to red)
  /SILENT
  SMOOTH= -- Number of pixels to smooth over

 OPTIONAL OUTPUTS:
  NWVAR= -- New variance array

 COMMENTS:

 EXAMPLES:
   x_specrebin, gdpix, orig_wv, orig_fx, newwv, newfx


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   12-Apr-2002 Written by JXP

(See Spec/Analysis//x_specrebin.pro)


X_SPECZOOM

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

 PURPOSE:
    Zooms in or out on a spectrum in a GUI

 CALLING SEQUENCE:
   x_speczoom, state, flg

 INPUTS:
   state - GUI state structure (needs TAG xymnx)
   flg   - 0-In, 1-Out

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_speczoom, state, flg


 PROCEDURES/FUNCTIONS CALLED:
  xgetx_plt

 REVISION HISTORY:
   17-Nov-2001 Written by JXP 

(See Spec/Display//x_speczoom.pro)


X_SPECZOOMREG

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

 PURPOSE:
    Sets region to zoom in on in a GUI

 CALLING SEQUENCE:
   x_speczoom, state

 INPUTS:
  state  -- GUI state (requires TAGS xymnx tmpxy, flg_zoom)

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_speczoom, state

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   17-Nov-2001 Written by JXP 

(See Spec/Display//x_speczoomreg.pro)


X_SPLNCOGMAX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_splncogmax
   Version 1.0

 PURPOSE:
  Create a table of COG values and fit a spline to it.  The routine
  then writes the output to a FITS file for future usage.
   
 CALLING SEQUENCE:
   x_splncogmax, tmax, tval, tabul, NSTP=, OUTFIL=, TMIN=, STRCT=

 INPUTS:
  tmax -- Maximum optical depth to consider

 RETURNS:
  tval -- Array of optical depth values
  tabul -- Array of COG values (reduced EW)

 OUTPUTS:
  STRCT=  -- Structure containing tval, tabul, and the SPLINE
  OUTFIL= -- FITS file where the spline is written (as a structure)

 OPTIONAL KEYWORDS:
  TMIN= -- Minimum optical depth to consider [default: 1e-4]
  NSTP= -- Number of points to evaluate at between TMIN and tmax
           [default: 1000L]

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   15-Sep-2003 Written by JXP

(See Spec/Analysis//x_splncogmax.pro)


X_SPLOT

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

 PURPOSE:
    Plots any array interactively

 CALLING SEQUENCE:
   
   x_splot, [xdat], ydat, XSIZE=, YSIZE=, TITLE=, XTWO=, YTWO=, PSYM2=,
      /BLOCK, PSYM1=, YMNX=, XTHR=, YTHR=, PSYM3=

 INPUTS:
   [xdat]     - x values (optional)
   ydat       - Values 

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   xsize      - Draw window xsize (pixels)
   ysize      - Draw window ysize (pixels)
   TITLE
   YTWO   -- 2nd array to plot [If without XTWO, must have same dimension
              as xdat]
   XTWO   -- 2nd array of x values to plot [requires YTWO]
   PSYM2  -- Plot symbol for array 2 [default: 10]
   YTHR   -- 3nd array to plot [If without XTWO, must have same dimension
              as xdat]
   XTHR   -- 3nd array of x values to plot [requires YTHR]
   PSYM3  -- Plot symbol for array 3 [default: 10]
   /BLOCK

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_splot, y

 PROCEDURES/FUNCTIONS CALLED:
  XGETX_PLT
  XGETY_PLT
  XGETXPIX_PLT
  XGETYPIX_PLT

 REVISION HISTORY:
   17-Nov-2001 Written by JXP (modified from x1dfit)
   24-Nov-2001 Added ytwo
    9-Aug-2007 Added xmnx keyword JFH

(See General//x_splot.pro)


X_STARID

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

 PURPOSE:
    Allows the user to interactively identify standard stars in a
    field using lists and the like.  This is a rather quick way of
    doing the calibrations.

 CALLING SEQUENCE:
   x_starid, img, date, ccd, tel, LST_PATH=, OBJ=, XSIZE=, YSIZE=

 INPUTS:
   img        - Image(s) for Masking
   date       - EPOCH of the obs (decimal years)
   ccd        - Name of the CCD  (Tek5, SITe1, LRISR, SITe3)
   tel        - Name of telescope

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   OBJ       - Object names
   XSIZE     - Size of gui in screen x-pixels (default = 800)
   YSIZE     - Size of gui in screen y-pixels (default = 800)
   OUT_PATH  - Output name for id files (default: 'Photo/')
   LST_PATH  - Path name for Lists [default: $XIDL_DIR/IMG/Photometry/Lists/]
   INORIENT  - Number in range [-4,4] to change orientation of 
                  standards plotted on image.

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_starid, img, 2004.2, 'SITe1', 'LCO-40'


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   03-Aug-2001 Written by JXP
   04-Jan-2002 Updated and revised by JXP

(See IMG/Photometry//x_starid.pro)


X_STATARRAY

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

 PURPOSE:
    This set of routines takes a series of flats observed through the
    diffuser and creates a normalized Flat used to correct
    pixel-to-pixel response variations.  A principal challenge with
    MIKE in its current state (April 2004) is that it is difficult to
    get sufficient counts on the blue side.  

    mike_mkmflat :: The main routine simply does some basic
    accounting, organizes bias subtraction and performs I/O.

    mike_mkflat_work :: Accepts the name(s) of a series of OV
    subtracted milky flats.  It then:
      1.  Opens the file and creates an inverse variance array
      2.  Takes out the low order variation in the image (lo_interp)
      3.  Performs a series of medians along the columns rejecting bad
          pixels (replace by local mean). 
      4.  If multiple images were input, they are stacked with
          rejection and the final image is returned

 CALLING SEQUENCE:
   
  mike_mkmflat, mike, setup, [side]

 INPUTS:
   mike     -  MIKE structure
   setup    -  Setup identifier 
   [side]   -  Blue (1), Red (2), or both [1,2L]    (Default: [1,2L])

 RETURNS:

 OUTPUTS:
  One normalized flat per setup per side with names like
  'Flats/Flat_B_01_M.fits.gz' 

 OPTIONAL KEYWORDS:
   /CLOBBER - Overwrite Output MilkyFlat
   /OVCLOB  - Overwrite OV files if they exist for the flats
   /SVOV    - Save the OV files created during this step
   /USEBIAS - Use bias frame in OV subtraction

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   9-May-2005 Adapted by JXP from existing programs by SB

(See IMG/Reduction//x_statarray.pro)


X_STDCALIBFIL

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

 PURPOSE:
    Given an ra and dec, returns calib file and standard star name

 CALLING SEQUENCE:
   x_stdcalibfil, ra, dec, calibfil, std_name

 INPUTS:
   ra   - RA in : format (12:11:23.3)
   dec  - DEC in : format (+13:32:21.2)

 RETURNS:
   calibfil -- Name of calib file in $XIDL_DIR/Spec/calibs/standards

 OUTPUTS:

 OPTIONAL KEYWORDS:
   
 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   12-Jan-2008 Written by JXP

(See Spec/Flux//x_stdcalibfil.pro)


X_STDMAG

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

 PURPOSE:
    Does aperture photometry on the objects in the std_* list files

 CALLING SEQUENCE:
   xdimg_stdmag, struct, SKYR=

 INPUTS:
   img   -- Image
  strfil -- Star list file
  outfil -- Output file

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  SKYR =  2 float array describing sky annulus in arcsec
            (default=15,30)
  ARCPIX= Arcseconds per pixel
  SATUR=  Saturation level

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_stdmag, 'Final/f_ccd003.fits', 'Photometry/star.list', 'outfil'

 PROCEDURES/FUNCTIONS CALLED:
  X_APER
  X_CCDINF

 REVISION HISTORY:
   03-Apr-2003 Written by JXP

(See IMG/Photometry//x_stdmag.pro)


X_STSLTGUI

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_stsltgui   
    Version 1.0

 PURPOSE:
    Allows the user to interactively (GUI) identify edges of 
     inidividual slits in the undistorted image

 CALLING SEQUENCE:
   
   x_stsltgui, img, slitstr, XSIZE=, YSIZE=

 INPUTS:
   img        - Undistorted image
   slitstr    - Slit structure

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   XSIZE      - Size of gui in screen x-pixels (default = 700)
   YSIZE      - Size of gui in screen y-pixels (default = 700)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_stsltgui, img, slitstr

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   07-Feb-2002 Written by JXP

(See Spec/Slits//x_stsltgui.pro)


X_SUBOSCAN

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

 PURPOSE:
     Called by x_mkbias  and x_subbias.
     This routine does the overscan subtraction using the col and row
     sections at the right and top, respectively.  The code averages
     the overscan region (with clipping), identifies bad rows
     (SVBAD), and then uses SAVGOL to create a smoothed
     representation of the overscan.  This is then subtracted from
     the columns in the image.  Finally, the bias row (written at the
     top of the image) is subtracted from each row after a SAVGOL
     processing.

 CALLING SEQUENCE:
   
  x_suboscan, raw, head, ovimg, rbin, cbin, [imtype], /NOBIASROW,
                  /DEBUG, SVBAD=


 INPUTS:
   raw -- 2D image
   head -- Header for the image (only used to update the card)
   fincol -- Last column of data section
   imtype= -- Image type:: 'ZRO'  (only used for debugging)

 RETURNS:

 OUTPUTS:
   ovimg -- Bias subtracted image

 OPTIONAL KEYWORDS:
   BIASROW - if set, bias row is used. 
   SKIPOV  - If set, skip overscan subtraction (bias only)
   DEBUG   -- Turn debug mode on

 OPTIONAL OUTPUTS:
   SVBAD -- Rows with anomolous behavior, most likely related to a
            transient occurance within the CCD electronics.

 COMMENTS:

 REVISION HISTORY:
   18-July-2003   RAB
   16-Feb-2004    JXP -- added kludge for bad rows

(See IMG/Reduction//x_suboscan.pro)


X_SUNRADEC

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_sunradec   
    Version 1.0

 PURPOSE:
  

 CALLING SEQUENCE:
  
 INPUTS:

 RETURNS: 

 OUTPUTS:

 OPTIONAL KEYWORDS:

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:
  x_calclst

 REVISION HISTORY:
  Based on code in skycalendar v5 written by John Thorstensen
  Dartmouth College
   10-Dec-2009 Written by JXP

(See Obs//x_sunradec.pro)


X_TEMPLARC

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

 PURPOSE:
    Given an archived Arc spectrum and solution and a new arc
    spectrum, find the pixel offset and auto-id the arc lines in new
    arc spectrum.  One must turn /FFT on to calculate the shift.

 CALLING SEQUENCE:
   
 x_templarc, spec, lines, guessfit, /FFT, MSK=, MXSHFT=, $
               MOCK_FFT=, SHFT=, ALL_PK=, PKWDTH=, $
               /THIN, FORDR=, PKSIG=, SKIPLIN=, $
               MXOFF=, /LOG

 INPUTS:
   spec       - Input arc image or spectrum
   lines      - Arc line structure
  guessfit    - FIT to archived arc

 RETURNS:

 OUTPUTS:
   lines     - Sets flg_plt to 1 those lines which are ID'd

 OPTIONAL KEYWORDS:
  /FFT    -- Calculate the most likely offset between the archived
             arc and the new one using the FFT procedure
  MOCKFFT -- Archived FFT [default: create one from the line list]
  MXOFF=  -- Maximum offset between ID line and a line in the
             linelist  [default: 3 pixels]
  SHFT=   -- Shift between archived and new arc (Input and/or Output)
  PKSIG=  -- Sigma significant of arc lines (as found by x_fndpeak)
             [default: 7.]
  MSK=    -- Mask of the lines
  MXSHFT= -- Maximum shift between archived and new solution
  /THIN   -- Allow for very narrow arc lines
  /LOG    -- Do the algorithm with logarithmic wavelengths
  FORDR   -- Order for the fit for the continuum of the arc 
  /SKIPLIN -- Do not bother to identify good lines for subsequent
              fitting (algorithm has only calucated the shift)

 OPTIONAL OUTPUTS:
  ALL_PK= --  Pix values of the arc line peaks

 COMMENTS:

 EXAMPLES:
   x_templarc, spec, lines, guessfit, SHFT=shft

 PROCEDURES/FUNCTIONS CALLED:
  x_fndpeaks

 REVISION HISTORY:
   26-Aug-2002 Written by JXP

(See Spec/Arcs//x_templarc.pro)


X_TIFFSET

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

 PURPOSE:
  Sets (or unsets) plotting variables for nice looking screen plots 
  to then be used in laptop presentations.

 CALLING SEQUENCE:
   
   x_tiffset, /UNSET

 INPUTS:
   
 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /UNSET -- Unset the plotting values

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   02-Jun-2004 Written by JXP

(See General//x_tiffset.pro)


X_TRACE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_trace   
    Version 1.2

 PURPOSE:
    Trace a spectrum. Ok for quick reductions

 CALLING SEQUENCE:
   
   fit = x_trace(img, aper, cline, PHSIG=, PLSIG=, TFFIT=,
      NTRC=, PFUNC=, PNORD=, PHSIG=, PLSIG=, NOINTER=, YBUFF=, /PINTER)

 INPUTS:
   img   - 2D spectral image 
   aper  - Aperture defining the object
   cline - Column to begin trace at

 RETURNS:
   FIT    - Trace at each column

 OUTPUTS:

 OPTIONAL KEYWORDS:
   NTRC -  Number of columns to median for the trace
   TFITSTR - Structure for the fitting the trace
   PFUNC- Profile fitting function
   PNORD- Profile fitting order
   PHSIG
   PLSIG
   INTER - Interactive fitting for trace
   
 OPTIONAL OUTPUTS:
   TFFIT -  Output fit info for the trace

 COMMENTS:

 EXAMPLES:
   x_trace, 'spec.fits'


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   19-Nov-2001 Written by JXP
   02-Feb-2002 JXP -- Added trace_crude option via CRUDE

(See Spec/Extraction//x_trace.pro)


X_TRACEARC

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

 PURPOSE:
    Given an arc image (or a slit from a multi-slit or one order from
    an echelle), arc lines and trace them across the image.  The
    program returns a trace structure which can be used to create a
    wavelength image.  See x_echtrcarc for an Echelle version.

 CALLING SEQUENCE:
   tracestr = x_tracearc( img, [ymnx], YSTRT=, /ROT, GAIN=, RN=, NSIG=, RADIUS=,
   MIN_XERR=, /SILENT, NORD=, VAR= )

 INPUTS:
   img       - Input arc image
   [ymnx]    - Used to define edges of a slit or an order [default: image edges]

 RETURNS:
   tracestr  - Trace structure describing the traces and fits to the
               traces of the arc lines

 OUTPUTS:

 OPTIONAL KEYWORDS:
   VAR=  - Variance image of the Arc
   GAIN= - Set this if you want the program to create the VAR image
   RN=   - Read noise (set this if you want the program to create the
           VAR image)  [default: 6]
   RADIUS=  -  Radius input parameter to trace_crude [default: 1.5]
   NSIG=  - Number of sigma significance for arc linews [default: 5.]
   YSTRT - COLUMN/ROW to start at
   /ROT  - Rotate the iamge by 90deg in those cases where the Arc
           lines run side-to-side (trace_crude requries this)
   MIN_XERR= -- Minimum xerr for fitting  [default: 0.01]
   NORD= - Order for fit to arc line curvature [default: 2L]
   YSTRT= - Offset to account for sub images

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   trcstr = x_tracearc( img )

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   28-Jan-2002 Written by JXP

(See Spec/Arcs//x_tracearc.pro)


X_TRACEFLAT

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

 PURPOSE:
    Traces the y-distortion of a flat of a number of slits

 CALLING SEQUENCE:
  x_traceflat, img, tracestrct, VAR=, GAIN=, RN=, SAW=, $
                ystrt=, /NOTRANS

 INPUTS:
   img       - Input image

 RETURNS:
 trcstr -- A trace structure describing the curvature of individual
           slits or orders

 OUTPUTS:

 OPTIONAL KEYWORDS:
  YSTRT    -- COLUMN/ROW to start at
  /NOTRANS  -- Do not transpose original image
  VAR=     -- Variance image input
  GAIN,RN= -- Values to create a VAR array

 OPTIONAL OUTPUTS:
  SAW=  -- The sawtooth image

 COMMENTS:

 EXAMPLES:
   x_traceflat, img, map


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   28-Jan-2002 Written by JXP

(See Spec/Rectify//x_traceflat.pro)


X_TRACESLIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_traceslit   
    Version 1.0

 PURPOSE:
    This is a failed attempt at a tracing program.  Do not use!

 CALLING SEQUENCE:
   
   x_traceslit, img, pos, top, bottom
   FFIT=, /INTER)

 INPUTS:
   img       - Input image
   pos       - [x,y] position on the CCD
                      (default=1/3 max + min)

 RETURNS:

 OUTPUTS:
   top - Trace of the top of the slit
   bottom - Trace of the bottom of the slit

 OPTIONAL KEYWORDS:
   GAIN - Gain of the CCD

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_traceslit, img, [252.3, 235.5], top, bottom


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   16-Jan-2002 Written by JXP

(See Spec/Rectify//x_traceslit.pro)


X_TSTOFF

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

 PURPOSE:
    Does a quick check on the offset between a flat 
       and object frame.  Uses FFT correlation

 CALLING SEQUENCE:
   
   x_tstoff, flat_in, obj_in, offset, CLINE=

 INPUTS:
   flat_in       - Flat image (array or string)
   obj_in        - Flat image (array or string)

 RETURNS:
   offset - Vertical pixel offset

 OUTPUTS:

 OPTIONAL KEYWORDS:
   ELINE - End line of data (routine takes 1/3, 1/2, 2/3)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_tstoff, flat, obj, offset


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   25-Jan-2002 Written by JXP

(See Spec/Rectify//x_tstoff.pro)


X_TWEAKARC

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

 PURPOSE:
  Allow the user to interactively (with a GUI) fiddle with the 1D
  wavelength solution of a arc-line spectrum.  This is designed for
  Echelle observations only.

 CALLING SEQUENCE:
  x_tweakarc, twkfil, ordrs, templfil, _EXTRA=extra, $
               LINLIST=linlist, QAFIL=qafil, OSTR_FIL=ostr_fil

 INPUTS:
   twkfil      -- File containing the 1D arc-line fits
   ordrs       -- Orders to tweak [physical order numbers]
   [templfil]  -- name of archived wavelength solution to use as at
                  template

 RETURNS:

 OUTPUTS:
  IDL fit file (one per order)  (e.g. Arcs/ArcECH_##fit.idl)

 OPTIONAL KEYWORDS:
  LINLIST=  -- Name of spectral line list
  OSTR_FIL= -- Name of file containing the order structure.  Required
              for QA

 OPTIONAL OUTPUTS:
  QAFIL=  -- Name of file to write QA info

 COMMENTS:

 EXAMPLES:


 PROCEDURES/FUNCTIONS CALLED:
   x_fitarc

 REVISION HISTORY:
   Summer-2005 Created by JXP 

(See Spec/Arcs//x_tweakarc.pro)


X_UNIQSTR

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

 PURPOSE:
    Obsolote:  Superseded by UNIQ

 CALLING SEQUENCE:
   
 uniq = x_uniqstr(strings, COUNT=count)

 INPUTS:
   strings - Array of strings

 RETURNS:
   uniq  - Array of unique members

 OUTPUTS:

 OPTIONAL KEYWORDS:
   sort - Sort the output

 OPTIONAL OUTPUTS:
  COUNT - number of unique strings

 COMMENTS:

 EXAMPLES:
   uniq = x_uniqstr( lbls, count=count)


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   17-Nov-2001 Written by JXP

(See General//x_uniqstr.pro)


X_VELPLT

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

 PURPOSE:
  GUI used to display velocity profiles for absorption line system.
  The user can control a number of options for the plot, output ps
  files and PG plot input files, etc.

 CALLING SEQUENCE:
 x_velplt, flux_fil, zin, VMNX=vmnx, INFLG=inflg, $
             TITLE=title, NPLT=nplt, NRM=nrm, XSIZE=xsize, YSIZE=ysize, $
             SIG_FIL=, /ESIDLA, SVSTATE=, /LLS

 INPUTS:
  flux_fil -- Input FITS file for the flux (header includes
              wavelength info)
  zin -- Redshift of absorption lines

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  VMNX= -- Velocity range to plot [default [-300, 300]]
  NPLT= -- Number of plots to show [default: 15L]
 TITLE= -- Title to give GUI
  XSIZE      - Size of gui in screen x-pixels [default = 700]
  YSIZE      - Size of gui in screen y-pixels [default = ssz -200]
  /LLS -- Use LLS line list
  /SUBLLS -- Use smaller LLS line list
  /ESIDLA -- Use ESI DLA line list
  /CII - subset of the ESIDLA line list for measuring CII
  SIG_FIL= -- Sigma file
  INFLG=  -- Flag for flux_fil data (see x_readspec)
  SVSTATE= -- Input IDL file that saved the state of the GUI
              previously
  WAVE -- wavelength array (flux_fil should be array)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_velplt, wfccd, maskid, expsr


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   29-Oct-2002 Written by JXP
   13-Jan-2006 Add wave keyword and enable passing of arrays, KLC

(See Spec/Analysis//x_velplt.pro)


X_VOIGT

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

 PURPOSE:
   Calculate a single voigt profile, given wavelength, absorber, and
    an array of lines.  This can be a very expensive routine to run.

 CALLING SEQUENCE:
   tau = x_voigt(wave, lines, FWHM=)

 INPUTS:
   wave       - Array of wavelengths to realize voigt profile
   lines      - line(s) structure to compute voigt profile. If mutliple,
                   the entire list will be looped through.
 RETURNS:
  Normalized flux array with Voigt profile super-posed

 OPTIONAL INPUTS:
   FWHM      - Resolution of instrument in PIXELS of input array

 OUTPUTS:
   tau        - Optical depth at each wavelength

 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
   21-Jun-2007  Modified by KLC to opt out of 'exact' answer with /nosmooth

(See Spec/Voigt//x_voigt.pro)


X_WAVECAL

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

 PURPOSE:
    Wavelength calibrate a given input Arc img (or spectrum).  This
    routine simply extracts the Arc spectrum (if necessary) and then
    calls x_identify

 CALLING SEQUENCE:
  wave = x_wavecal( arc, [extrct], LINELIST=, /DEBUG, $
                   /REDBLUE, DISP=, CALIB=, FLUX=)

 INPUTS:
   img/spec   - 2D image or 1D spectrum
   [extrct]   - Extraction structure (required for an input 2D image)

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
   LINELIST   - Reference list (user can set interactively)
   DISP       - Guess at dispersion (A or km/s per pix [pos/neg
                value])
   /FLUX       - Assumes wide slit and therefore wide arc lines
   /REDBLUE    - Spectrum runs from red to blue (not blue to red)
   /DEBUG
   /ROT       -  Transpose the Arc image (code requires orders
                parallel to rows)

 OPTIONAL OUTPUTS:
   CALIB= - Structure defining the fit
   SPEC=  - 1D extracted spectrum

 COMMENTS:

 EXAMPLES:
   wave = x_wavecal(spec)

 PROCEDURES/FUNCTIONS CALLED:
  x_readimg
  x_identify

 REVISION HISTORY:
   07-Dec-2001 Written by JXP

(See Spec/Arcs//x_wavecal.pro)


X_WRECHFSPEC

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_wrechfspec
    Version 1.0

 PURPOSE:
    Reads and writes the echfspec structure

 CALLING SEQUENCE:
   x_wrechfspec, echfspec, outfil, /READ

 INPUTS:
   echfspec -- IDL structure
   outfil -- Name of FITS file

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /READ -- Read instead of write the structure

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_wrechfspec, echfspec, 'Extract/2015+657_ech.fits'

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   03-Sep-2002 Written by JXP

(See Spec/Analysis//x_wrechfspec.pro)


X_WRLWDFSPEC

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 x_wrlwdfspec
    Version 1.0

 PURPOSE:
    Reads and writes the lwdfspec structure

 CALLING SEQUENCE:
   x_wrlwdfspec, lwdfspec, outfil, /READ

 INPUTS:
   lwdfspec -- IDL structure
   outfil -- Name of FITS file

 RETURNS:

 OUTPUTS:

 OPTIONAL KEYWORDS:
  /READ -- Read instead of write the structure

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_wrlwdfspec, lwdfspec, 'Extract/2015+657_lwd.fits'


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   02-Aug-2002 Written by JXP

(See Spec/Analysis//x_wrlwdfspec.pro)


X_XY2TRACESET

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

 PURPOSE:
   Convert from an array of x,y positions to a trace set

 CALLING SEQUENCE:
   xy2traceset, xpos, ypos, tset, [ invvar=, func=func, ncoeff=ncoeff, $
    xmin=xmin, xmax=xmax, maxiter=maxiter, inputfunc=inputfunc, $
    inmask=inmask, outmask=outmask, yfit=yfit, inputans=inputans, $
    _EXTRA=EXTRA ]

 INPUTS:
   xpos       - X positions corresponding to YPOS as an [nx,Ntrace] array
   ypos       - Y centers as an [nx,ntrace] array

 OPTIONAL KEYWORDS:
   invvar     - Inverse variance for weighted fits.
   func       - Function for trace set; options are:
                'poly'
                'legendre'
                'chebyshev'
                'chebyshev_split'
                Default to 'legendre'
   ncoeff     - Number of coefficients in fit; default to 3
   xmin       - Explicitly set XMIN for trace set rather than using minimum
                in XPOS
   xmax       - Explicitly set XMAX for trace set rather than using maximum
                in XPOS
   maxiter    - Maximum number of rejection iterations; set to 0 for no
                rejection; default to 10.
   inmask     - Mask set to 1 for good points and 0 for rejected points;
                same dimensions as XPOS, YPOS.  Points rejected by INMASK
                are always rejected from the fits (the rejection is "sticky"),
                and will also be marked as rejected in OUTMASK.
   inputans   - ???
   inputfunc  - An array which matches the size of ypos, which is multiplied
                  to the normal function before SVD decomposition
   silent     - Set to suppress print and splog outputs
   EXTRA      - Keywords passed to either the function FUNC, or DJS_REJECT().
                Note that keywords like MAXREJ relate to each individual trace.

 OUTPUTS:
   tset       - Structure containing trace set

 OPTIONAL OUTPUTS:
   outmask    - Mask set to 1 for good points and 0 for rejected points;
                same dimensions as XPOS, YPOS.
   yfit       - Fit values at each XPOS.

 COMMENTS:
   The fits are done to one trace at a time, where each trace is treated
   completely independently.

   Note that both MAXDEV and MAXSIG can be set for applying both rejection
   schemes at once.

   Additional keywords can be passed to the fitting functions with _EXTRA.
   By not setting any of these rejection keywords, no rejection is performed.

 EXAMPLES:

 BUGS:

 PROCEDURES CALLED:
   djs_reject()
   fchebyshev()
   fchebyshev_split()
   flegendre()
   fpoly()
   func_fit()

 REVISION HISTORY:
   19-May-1999  Written by David Schlegel, Princeton.
   04-Aug-1999  Added chebyshev option (DJS).
   02-Sep-2000  Modify to use rejection schemes in DJS_REJECT() (DJS).
   07-Dec-2000  Added /silent keyword (DPF)
   10-Jul-2001  Add polynomial option
   10-Apr-2005  Modified by SB
   2006         Stolen by JXP

(See FIT//x_xy2traceset.pro)


X_YDTORTGUI

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

 PURPOSE:
    Allows the user to interactively examine the trace to slit
     edges used to trace the y-distortion.

 CALLING SEQUENCE:
   
   x_ydtortgui, img, tracestrct, [newmnx], XSIZE=, YSIZE=

 INPUTS:
   img        - Traced Image 
   trace      - x,y positions of traces fltarr(N,M,2)
   flgs       - Flags describing the traces

 RETURNS:

 OUTPUTS:
  newmnx      - The new min and max values

 OPTIONAL KEYWORDS:
   XSIZE      - Size of gui in screen x-pixels (Default = 1000)
   YSIZE      - Size of gui in screen y-pixels (Default = 500)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:
   x_ydtortgui, img, tracestrct


 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   05-Feb-2002 Written by JXP

(See Spec/Rectify//x_ydtortgui.pro)


X_ZFIND

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

 PURPOSE:
   Find possible redshift matches for a set of spectra using a set of
   eigen-templates.  This is just a version I grabbed and slightly
   modified from the SDSS distribution.  The main modification was to
   allow for more free paramters in fitting the continuum of the
   galaxies due to poor fluxing with the WFCCD.

 CALLING SEQUENCE:
   result = x_zfind( objflux, objivar, hdr=hdr, $
    [ starflux=, starloglam0=, stardloglam=, $
    eigenfile=, eigendir=, columns=, npoly=, $
    zmin=, zmax=, zguess=, pwidth=, nfind=, width=, _EXTRA= ]

 INPUTS:
   objflux    - Object fluxes [NPIXOBJ,NOBJ]
   objivar    - Object inverse variances [NPIXOBJ,NOBJ]

 REQUIRED KEYWORDS:
   hdr        - FITS header for objects, used to construct the wavelengths
                from the following keywords: COEFF0, COEFF1.

 OPTIONAL KEYWORDS:
   starflux   - Eigenspectra [NPIXSTAR,NSTAR].
   starloglam0- Zero-point of log-10(Angstrom) wavelength mapping of STARFLUX.
   stardloglam- Wavelength spacing for STARFLUX in log-10(Angstroms)
   eigenfile  - Input FITS file with an [NPIXSTAR,NSTAR] image with
                either templates or eigenspectra.  If a wildcard appears
                in the file name, then the file that appears last in a sort
                is used.
                The header keywords COEFF0, COEFF1 are used to specify
                the wavelength mapping in log-10 Angstroms.
                This must be set if STARFLUX,STARLOGLAM0 are not set.
   eigendir   - Directory for EIGENFILE; default to $IDLSPEC2D/templates.
   columns    - Column numbers of the eigenspectra image to use in the
                PCA fit; default to all columns.
   npoly      - Number of polynomial terms to append to eigenspectra;
                default to none.
   zmin       - Minimum redshift to consider; default to no lower bound.
   zmax       - Maximum redshift to consider; default to no upper bound.
   zguess     - Initial guess for redshift; search for a solution about
                this value.  If specified with PWIDTH, then ZMIN and ZMAX
                are ignoreed.
   pwidth     - Search width in pixels about the intial guess redshift ZGUESS.
                If specified with ZGUESS, then ZMIN and ZMAX are ignored.
   nfind      - Keyword for ZCOMPUTE().
   width      - Keyword for ZCOMPUTE().
   _EXTRA     - Keywords for ZCOMPUTE(), such as PSPACE, DOPLOT, DEBUG.

 OUTPUTS:
   result     - Structure with redshift-fit information.  Structure
                elements are left blank if fewer than NFIND peaks are found.

 OPTIONAL OUTPUTS:

 COMMENTS:
   One can specify a search domain for the redshift with ZMIN and ZMAX, or
   with ZGUESS and PWIDTH.  If none of those parameters are set, then all
   possible redshifts that overlap the object and star (template) are tested.

 EXAMPLES:

 BUGS:

 PROCEDURES CALLED:
   concat_dir()
   djs_filepath()
   fileandpath()
   readfits()
   splog
   sxpar()
   zcompute()

 INTERNAL SUPPORT ROUTINES:
   x_sp1d_struct()

 REVISION HISTORY:
   28-Jun-2000  Written by D. Schlegel, Princeton

(See Spec/Analysis//x_zfind.pro)


Z_ARCPAIRS

[Previous Routine] [List of Routines]
 NAME:
 z_arcpairs   
     Version 1.1

 PURPOSE:
  To identify the wavelength solution given arc lines and a list

 CALLING SEQUENCE:
   
  good = z_arcpairs(peaks, l, disp0, [dr1, NCOEFF=, INC=, TAN_BLAZE=])

 INPUTS:

  peaks :	arc line positions in pixel space
  l     :      possible arc line wavelengths
  disp0 :      guess at central dispersion per pixel, needs to be within dr
                of the correct dispersion

 RETURNS:
   
  good  :      An index list of the best meatched wavelengths based on the
                number of unique hits

 OUTPUTS:

 OPTIONAL KEYWORDS:

  dr1   :      range of dispersion to search, 10% is default [0.9,1.1]
  tan_blaze    For high dispersion gratings, the tangent of the blaze
                angle, usually referred to a R. (like the R=2 grating in HIRES)

 OPTIONAL OUTPUTS:

 COMMENTS:

 EXAMPLES:

 PROCEDURES/FUNCTIONS CALLED:

 REVISION HISTORY:
   May-2005 Written by SB

(See Spec/Arcs//z_arcpairs.pro)