EIT Analysis Software

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

     ? mk_html_help

at the IDL command line prompt.

Last modified: Wed Aug 13 15:31:03 1997.


List of Routines


Routine Descriptions

CATRD_DAILY

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

 PURPOSE     : Read the daily catalogs and return entries as requested output

 CATEGORY    :

 EXPLANATION : 

 SYNTAX      : 

 EXAMPLES    : none
 
 CALLED BY   :

 CALLS TO    : none

 ARGUMENTS   :
	DATE	If present, a string date in the format "yyyy/mm/dd"
		of the daily catalog to be searched. 
		Default is the date of the most recent catalog.

 KEYWORDS    : 
	YESTER  If present, indicates the number of 'days/catalogs' backward
		in time you want as the catalog input.  Note that this is
		really the number of backward catalogs, so days may not
		line up as expected, but they should.
		New feature:   print,catrd_daily("y=3") for three days ago.
	NO_NEXT If present and set then return a null string if the specified
		date does not have a catalog.
	SHORT_TEXT If present and set and TEXT is the output mode then the
		displayed text will fit in 80 characters w/ less info.
	RECORDS If present, then return catalog file record numbers matching
		the entries in the returned variable.  This is the VMS 
		record number.
	LONG    If present and set, then all catalog entries are considered,
		including duplicates and entries are left in unsorted,
		reform order.
	RAW    If present and set , return the catalog entries as the raw
		data structure instead of the default of a strarr of text 
		entries. 
		NOTE: the default is to return a string array of entries.
	FILENAME  If present, then return the fits file names matching 
		  the entries in the returned variable.
	TAI      If present, then return the TAI time matching 
		 the entries in the returned variable.

 OUTPUTS     : 
	Return a string arrar of catalog entries, unless the /RAW keyword 
	is set then return raw structure of entries.
	If the /LONG keyword is set then return all catalog entries and
	do not sort.
	If any value was

 COMMON      : none

 RESTRICTIONS: none

 SIDE EFFECTS: none

 PROJECT     : SOHO - EIT

 HISTORY     : V1,  Elaine Einfalt (HSTX)
		1996 March 31, added /NO_NEXT keyword
		1996 May 13, allow YESTER to use numerical values

 CONTACT     : eit@xanado.nascom.nasa.gov

(See /service/soho-archive/home/solarsoft//soho/eit/idl/obsolete//catrd_daily.pro)


CAT_DIRECTORY

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

 PURPOSE     : Locate requested catalog

 CATEGORY    : EIT Catalog

 EXPLANATION : 

 SYNTAX      : 

 EXAMPLES    : none
 
 CALLED BY   : EXP

 CALLS TO    : none

 ARGUMENTS   :	
	IN_DATE	:   If present, a string date in the format "yyyy/mm/dd"
		   of the daily catalog to be searched. 
		   Default is the date of the most recent catalog.
		   New feature for the EIT_DISPLAY program is that the DATE
		   argument can be used to input a psuedo YESTER keyword as 
		   a string. Using "/Y" or "Y=", do not spell out YESTER
		   (ex: print,catrd_daily("/y") for yesterday or
		        print,catrd_daily("y=3") for three days ago.


 KEYWORDS    
	YESTER  If present, indicates the number of 'days/catalogs' backward
		in time you want as the catalog input.  Note that this is
		really the number of backward catalogs, so days may not
		line up as expected, but they should.
	CUR_DIR_CNT	: Return the index of DIR for the selected catalog.
	USE_LAST_REC	: Return which record is to be displayed first.
			  0 = once cat file is found display first rec
			  1 = once cat file is found display last rec
	NO_NEXT		: if present, don't just supply the next available
			  catalog, return a null string.
	DIR_CNT		: Return the number of catalogs found.

 OUTPUTS     :
	Returns the results of the findfile on the catalogs found.

 COMMON      : none

 RESTRICTIONS: none

 SIDE EFFECTS: none

 PROJECT     : SOHO - EIT

 HISTORY     : V1,  Elaine Einfalt (HSTX)
		1996 march 31, added /NO_NEXT
		1996 May 13, allow YESTER pseudo format in the DATE argument
               1996 May 24, Sam Freeland - for UNIX, read dirs from file
               1997 Jan 16, Sam Freeland - handle all cats in $EIT_QLK_CATALOG
               1997 Jan 21, J. Newmark - handle specific is_gsfcvms case
                    (including not all SSW), and generic VMS installation 

 CONTACT     : eit@xanado.nascom.nasa.gov

(See /service/soho-archive/home/solarsoft//soho/eit/idl/anal//cat_directory.pro)


CAT_OPEN

[Previous Routine] [Next Routine] [List of Routines]
 NAME        : 
              CAT_OPEN
 PURPOSE     : Open and associate catalog to structure.

 CATEGORY    : EIT Catalog

 EXPLANATION : 

 SYNTAX      : 

 EXAMPLES    : none
 
 CALLED BY   :

 CALLS TO    : none

 ARGUMENTS   :	none

 KEYWORDS    : 
	FILE	: A string, the catalog file name
	LONG	: When set, don't sort or remove duplicates in catalog

 OUTPUTS     :
	Returns the associated catalog

	LUN	: the logical unit that is associated with the cat file
	N_REC	: the total number of cat entries in the catalog, including
		  duplicates but excluding the header.
	U_REC	: the number of cat entries to be used. If /LONG is set
		  this is the same as N_REC
	RECORDS : an long array of the records of the catalog in the selected 
		  order (or unordered).

 COMMON      : none

 RESTRICTIONS: none

 SIDE EFFECTS: none

 PROJECT     : SOHO - EIT

 HISTORY     : V1,  Elaine Einfalt (HSTX)
             : V1.1 D.M. fecit, to account for different lengths of
		   structures
             : V1.2 JSN fixed byte padding, necessary for UNIX version
                  6/12/96
	      : V2.1 Einfalt reduced pad to make room for 24-char SCI_OBJ
			     Since SCI_OBJ can be all 0B, it's a direct steal.
 CONTACT     : eit@xanado.nascom.nasa.gov

(See /service/soho-archive/home/solarsoft//soho/eit/idl/anal//cat_open.pro)


CAT_TO_TEXT

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

 PURPOSE     : Convert "raw" catalog entries into string array

 CATEGORY    :

 EXPLANATION : 

 SYNTAX      : 

 EXAMPLES    : none
 
 CALLED BY   :

 CALLS TO    : none

 ARGUMENTS   :	none

 KEYWORDS    : none

 OUTPUTS     : none

 COMMON      : none

 RESTRICTIONS: none

 SIDE EFFECTS: none

 PROJECT     : SOHO - EIT

 HISTORY     : V1,  Elaine Einfalt (HSTX)
		1996 March 20, einfalt - modified filter labels to mathc reality
		1996 May  einfalt - modification to text printout display,
				    added summing info,
				    changed pixels to blocks, added readout area
				    change order of some things, added /SHORT.
		1997 March 11, einfalt - handle decimal exposure times for
					 version 2.0 and above

 CONTACT     : eit@xanado.nascom.nasa.gov

(See /service/soho-archive/home/solarsoft//soho/eit/idl/anal//cat_to_text.pro)


EITOVERSXT

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

   Purpose: draw EIT contours on SXT image; optionally overlay EIT 32x32 grid

   Calling Sequence: 
      
   History: proto-version, 23-jan-1996

   Restrictions:
      only full sun EIT and SXT , simple FITS for now
      TODO - rotate SXT image to input time

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//eitoversxt.pro)


EIT_CATRD

[Previous Routine] [Next Routine] [List of Routines]
 NAME        : 
               EIT_CATRD
 PURPOSE     : Read the daily catalogs and return entries as rEQuested output

 CATEGORY    : Catalogs

 EXPLANATION : This function reads the daily QKL catalogs or the single
               Level Zero catalog. 

 SYNTAX      : list = eit_catrd(in_date, group=group, interactive=interactive,
               date, long=long, raw=raw, yester=yester, lz=lz, 
	       no_next=no_next, short=short, input_file=input_file, 
	       records=records, filename=filename, tai=tai, 
               start_date=start_date,stop_date=stop_date,object=object, 
               wave=wave,filter=filter,nx=nx,ny=ny,xbin=xbin,ybin=ybin,
               timerange=timerange)

 EXAMPLES    : return string listing of all LZ 304 images from Jun 2, 1996 
               to June 22, 1996 taken in the clear filter and return 
               filenames, 
                IDL> file=''
                IDL> list=eit_catrd(/lz,start_date='2-jun-96',stop_date=$
                        '22-jun-96',wave='304',filter='clear',file=file)
 
 CALLED BY   : top level

 CALLS TO    : timegrid, str_copy_tags, cat_open, cat_directory, 
               cat_to_text, where_arr, anytim2utc, utc2doy, doy2utc,
               xmessage, utc2tai

 ARGUMENTS   :
	DATE	IF present, a string date in the format "yyyy/mm/dd"
		of the daily catalog to be searched. 
		Default is the date of the most recent catalog.

 KEYWORDS    : 
	INPUT_FILE  IF present, this is the catalog which is read in.
		    This may be any of the catalog: "merged", QKL daily or 
		    LZ daily.   Default is the "merged" catalog.
       LZ      IF present read from the merged Level-zero catalog
	YESTER  IF present, indicates the number of 'days/catalogs' backward
		in time you want as the catalog input.  Note that this is
		really the number of backward catalogs, so days may not
		line up as expected, but they should.
		New feature:   print,catrd_daily("y=3") for three days ago.
	NO_NEXT IF present and set THEN return a null string IF the specIFied
		date does not have a catalog.
	SHORT_TEXT IF present and set and TEXT is the output mode then the
		displayed text will fit in 80 characters w/ less info.
	RECORDS IF present, then return catalog file record numbers matching
		the entries in the returned variable.  This is the VMS 
		record number.
	LONG    IF present and set, then all catalog entries are considered,
		including duplicates and entries are left in unsorted,
		reform order.
	RAW    IF present and set , return the catalog entries as the raw
		data structure instead of the default of a strarr of text 
		entries. 
		NOTE: the default is to return a string array of entries.
	FILENAME  IF present, then return the fits file names matching 
		  the entries in the returned variable.
	TAI      IF present, then return the TAI time matching 
		 the entries in the returned variable.
       START_DATE IF present and a LZ listing then sets start date of list
       STOP_DATE  IF prsent and a LZ listing then sets end date of list
       WAVE      Return matches from LZ/QKL catalog (171,195,284,304 or 1-4)
       FILTER    Return matches from LZ/QKL catalog (0-4 or one of:
                    ['AL+1', 'BLK EST',  'CLEAR', 'BLK WST', 'AL+2' ] )
       NX        Return matches from LZ/QKL catalog for xsize in pixels
       NY        Return matches from LZ/QKL catalog for ysize in pixels
       XBIN      Return matches from LZ/QKL catalog for x summing in pixels
       YBIN      Return matches from LZ/QKL catalog for y summing in pixels
       TIMERANGE 2 element vector containing start and stop dates
       OBJECT    IF present select object, dark, cal lamp, full FOV, 
                 partial FOV 
       CAT_STRUCT An alternate input, a raw catalog structure previsouly
                  created - useful to get search tools, if input is
                 a index structure will return output structure not text
       SS        Return subscripts of input index structure instead of
                 selected structure

 OUTPUTS     : 
	Return a string arrar of catalog entries, unless the /RAW keyword 
	is set then return raw structure of entries.
	IF the /LONG keyword is set then return all catalog entries and
	do not sort.
	IF input is index structure returns output structure

 COMMON      : cat_params, cat_par2, helpshare

 RESTRICTIONS: none

 SIDE EFFECTS: none

 PROJECT     : SOHO - EIT

 HISTORY     : V1,  Elaine Einfalt (HSTX)
		1996 March 31, added /NO_NEXT keyword
		1996 May 13, allow YESTER to use numerical values

               V2, Jeff Newmark - complete revision, LZ catalog, widget
                    interface, etc...
               1996 Dec 23 - add selection over times as well as dates
                    J Newmark
               1996 Jan 15 - changed date variable to indate due to
                    conflict with IDLASTRO function date!
               1996 Jan 16 - use eit_fxpar to obtain selection parameters
                    allow cat_struct input to be index structures
                    created by read_eit as well as raw catalog structures
               V3.0
               1997 Mar 20 J. Newmark - add in sci_obj field for catalog
               1997 Jun 03 J. Newmark - fix bug in wavelength selection

 CONTACT     : newmark@eitv2.nascom.nasa.gov

(See /service/soho-archive/home/solarsoft//soho/eit/idl/anal//eit_catrd.pro)


EIT_CATRDS

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

   Purpose: front end to catrd_daily (read time range)

   Input Paramters:
      time0 - start time
      time1 - stop time
   
   Keyword Parameters:
      raw -  if set, return catalog structures (default=string)
      logn - switch (see catrd_daily documentation)
      filename (output) - eit filenames
      records  (output) - (see catrd_daily doc)

   Calling Sequence:
      cats=eit_catrds(time0 [,time1, /raw, /long, records=records, filename=filename]

   History:
    24-may-1996 S.L.Freeland

(See /service/soho-archive/home/solarsoft//soho/eit/idl/obsolete//eit_catrds.pro)


EIT_COLORS

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

   Purpose: load EIT color tables

   Input Parameters:
      table - EIT table number or associated wavelength

   Output Parameters:
      r,g,b - optional return RGB

   Calling Examples:
      eit_colors,0		; load the first EIT table (relative)
      eit_colors,41		; load the first EIT table (absolute)
      eit_colors,284,r,g,b     ; map wavelenght-> table, return RGB

   Method:
      call ssw_colors		; contains links to SSW color table files

   History:
      18-Feb-1996 (S.L.Freeland)

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//eit_colors.pro)


EIT_DATA_SCALE

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

   Purpose: scale EIT data to some standard (and provide single point maint)

   Input Parameters:
      data - data to scale 
      wave - (optional) - wavelength dependent scale

   History:
      17-Feb-1996 (S.L.Freeland)

   Restrictions:
      For now, only one algorithm, used for all wavelengths

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//eit_data_scale.pro)


EIT_DEGRID

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

 Purpose:
    Degrid an EIT image, either full FOV or POV and/or binned.  

 Input Parameters:
    image  = image w/ missing blocks raised to the detector offset, and 
             detector offset subtracted.
    header = FITS header or EIT index structure for image

    Note that image can be full-res or a binned image.

 Output:
    clean_image = degridded image

 Keywords:
     final    = set if using LZ data
     image_no = set if image is from a 3-D LZ FITS file
     verbose  = set if messages discriminating new read or pre-read wanted

 Calling Sequence:
    clean_image = eit_degrid(image, fits_header)
    clean_image = eit_degrid(image, index)
    clean_image = eit_degrid(image, fits_header, image_no=image_no)
 
 Restrictions:
    Can't handle a vector of images {yet}.
    If you pipe an LZ file to this, you'd better have the fits header.
    If you're doing this with single-image files, it will work just
    fine if have a FITS header structure.

 History:
    23-Mar-96 - (DMF) - Written
     8-Apr-96 - (JSN) - Fix for incorrect entry of pixel size.
    22-Jul-96 - (JSN) - Added capability of export SSW 
    20-Aug-96 - (JSN) - Added image_no keyword for 3D LZ data.
    28-Aug-96 - (JSN) - changed to always XDR format
    29-Aug-96 - (DMF) - XDR too slow! Backed off to block I/O files in
                        OVMS interal representation
     9-Oct-96 - (BNH) - Now accepts FITS headers or index structures.
                        Cleaned a few things up and dispatched FIND_KEYWORD
                        for good.  Pulled all the history of this routine 
                        into the "History" section.  Still need to sort
                        out how to make index structures to cope
                        with the new-improved "LZ" file structure.  
    16-Oct-96 - (BNH) - Add a common block for the currently-used grid.
    1997/04/11 - JBG  - Added VERBOSE keyword.

(See /service/soho-archive/home/solarsoft//soho/eit/idl/anal//eit_degrid.pro)


EIT_DEGRID_FFT

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

 NAME:
    eit_degrid_fft
 PURPOSE:
    Degrid an EIT image via an FFT transform.  EIT_DEGRID_FFT assumes
    missing blocks have been raised to the detector offset, and the 
    detector offset subtracted.

 CALLING SEQUENCE:
    clean_image = eit_degrid_fft(image, header [, /final])

 INPUTS:
    image  = Dark-subtracted EIT image
    header = FITS header
 OPTIONAL KEYWORDS:
    final  = ????

 RESTRICTIONS:
    The input image must have the missing blocks raised to detector
    offset, and the detector offset subtracted.  (Fecit's words)
 
    At this time (9-Apr-1996) only supports full-frame full-resolution
    images.

  TODO:
    Need to stamp the FITS header so we know this image was degridded
    with  version of EIT_DEGRID_FFT.

 MODIfICATION HISTORY:
    23-Mar-1996 - (DMF) - Written 
     9-Apr-1996 - (BNH) - Cleaned up and documented

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//eit_degrid_fft.pro)


EIT_DEGRID_SMOOTH

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

 NAME:
    eit_degrid_smooth
 PURPOSE:
    Smoothing algorithm for degridding EIT images.  Adaptation of 
    A. Maucherat's early routines.
 CALLING SEQUENCE:
    clean_image = eit_degrid_smooth(dirty_image [,residue=residue, 
                   grid=grid])
 INPUTS:
    dirty_image = dark-subtracted image.
 OUTPUT:
    clean_image = alog10(degridded image)

 OPTIONAL OUTPUTS:
    residue     = residue of degridding algorithm 
    grid        = Calculated grid
 
 RESTRICTIONS:
    Can't handle images smaller than 42x42 pixels.  

 TO DO:
  * This routine doesn't conserve counts.  Maybe it never will.

  * I wonder how well this code deals with small images.

  * Need to keep a history of this in the FITS header.  EIT_DEGRID
    also suffers from this.

 MODifICATION HISTORY:
    15-Mar-1996 - (AM)  - Written 
     9-Apr-1996 - (BNH) - Cleaned up to make slightly more readable, 
                          turned into a function call,  Added some
                          comments and streamlined some code.
    10-Apr-1996 - (BNH) - Added support for sub_images.
			 - Image is converted to a FLOAT on entry.
    10-Oct-1996 - (BNH) - Corrected an entry in the median array.
                          Thanks to RAS for noticing this.

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//eit_degrid_smooth.pro)


EIT_DISPLAY

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

 PURPOSE:
	This function will display EIT movies (IDL Save Sets) and
       EIT images (FITS files) using eit_movie and eit_image
       respectively.

 CATEGORY:
	WIDGET interface

 CALLING SEQUENCE:
       EIT_DISPLAY

 INPUTS:  None, presently this routine reads predefined directories
	         namely the logical REF_DIR (FITS images) or MOVIE_DIR
                (3-dim IDL Save Sets).

 KEYWORD PARAMETERS: None

 OUTPUTS:
	This routine displays images. It does not return any outputs.

 COMMON BLOCKS:
       filestuff,dirspec,flist,index,list7,text6 - this common block is
         used to pass back and forth to the event handler the
         directory, filelist, file index, file widget and directory widget.
       helpshare,helpbase - a common block for the help widget

 SIDE EFFECTS:
	unsure if common block must be re-initialized after each run.

 RESTRICTIONS:
	Serious memory hog, especially if display movies

 PROCEDURE:
	A widget is displayed. The user can choose either IDL Save
       Sets (assumed therefore to be movies) or FITS files (assumed
       to be images). The user then selects a file to display using
       the appropriate mechanism. The user can zoom an image. This
       calss the widget cw_zoom.

 MODIFICATION HISTORY:
 	Written by:  J. Newmark 	Date.  Feb. 1996
		     1996 march 14 - E. Einfalt - changed title banner
                    1996 june 12 - J. Newmark - use catalog for image
                             listings, add RDPIX function
                    1996 june 20 - J. Newmark - enable use of "efz" files
                    1996 july 8 - J. Newmark - add print button
                    1996 july 19 - J. Newmark - added calls to eit_file2path
                             to get directory names and pathways, allow
                             for collapsed data trees
                    1996 aug 20 - J. Newmark - added ability to display
                             LZ 3-D data
                    1996 nov 26 - D.M. fecit - added /flat to all EIT_IMAGE
                             calls
                    1996 dec 3 - J. Newmark - added button for MOVIE_ARCHIVE

                    1997 mar 12 - D.M. fecit - changed exposure time strings
                             to floating point

(See /service/soho-archive/home/solarsoft//soho/eit/idl/anal//eit_display.pro)


EIT_DUMP

[Previous Routine] [Next Routine] [List of Routines]
   Name: 
         eit_dump
   Purpose: produce postscript or gif files

   Input Parameters:
     filenam - FITS file of image

   Output Parameters:
      file - name format is efr'date'_wave.'ps or gif'
      
   Keyword Parameters:
     post    - set for postscript output - (default)
     gif     - set for gif output -image only no labels
     jpeg    - set for JPEG output - image only, no labels
     encap   - set for encapsulated postscript output
     printer - set for printing to value
     outdir   - set for output directory of saved file 
     window  - set to dump current window
     surround - set to replace missing blocks with surrounding ones
     file    - set for output file name
     annotate -set to string if wish annotated PS output for window dump
     image_no -set for image_no in 3d LZ file

   Calling Sequence:
      eit_dump,'efr19960702.123456',/post  

   Method:
      read FITS file, load proper color table, subtract background, 
      replace missing blocks, degrid, bytscl(alog10(image)), save 
      in selected format
  
   History:
     2-Jul-1996 - J. Newmark  - created
    22-Jul-1996 - J. Newmark  - allow for capture of IDL window
    23-Jan-1997 - J. Newmark  - allow file keyword for output
    18-Feb-1997 - J. Newmark  - call eit_image for processing, add
                                annotate keyword
    19-May-1997 - J. Newmark  - add image_no keyword
    1997 May 22 - D.M. fecit  - added JPEG keyword

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//eit_dump.pro)


EIT_EFF_AREA

[Previous Routine] [Next Routine] [List of Routines]
NAME:
  eit_eff_area
PURPOSE:
  Return the EIT effective area as a function of wavelength
CALLING SEQUENCE:
  Area = eit_eff_area(index,waveout=waveout)	
  Area = eit_eff_area(roadmap,wave)		;User supplies wavelengths
  Area = eit_eff_area(index,wave)
  Area = eit_eff_area(Sector,wave)		;Sector is an integer array
  Area = eit_eff_area(Sector,wave,filter=filt)	;Filt is an integer array

  Area_structure = eit_eff_area()
  Area_structure = eit_eff_area(filein=filein)
INPUTS:
  Item		- EIT index structure or roadmap.  May be a scalar
		  or an array.  Sector and Filters are extracted.

	or	- an integer scalar or array with the EIT sector number.

OPTIONAL INPUTS:
  wave		- Wavelengths at which the values of the area are 
                 desired.  If not specified, the wavelengths are
		  generated internally and returned in waveout.
OPTIONAL INPUT  KEYWORDS:
  filters	- To override the values of filters in Item
  verbose	- Set to provide additional information
  filein	- To read a specific EIT effective area file.  By
		  default reads the following file:
		    concat_dir('SSW_EIT_RESPONSE','era*.genx')
                 Use filein='your_file_name' to override the default.
  text_area	- If file is read, return the text information (string) array
OUTPUTS:
  Returns the EIT effective area.  
  Output size will be (N_elements(wave), N_elements(item))

OPTIONAL OUTPUT KEYWORDS:
  waveout	- If wave is not provided, then wavelengths are
		  defined by eit_eff_area and returned in waveout.
OPTIONAL INPUT/OUTPUT KEYWORD:
  area_str	- The contents of the EIT effective area file is
		  returned in this structure variable.  If this
		  variable is defined, the routine will not bother
		  to re-read the file on subsequent calls.
RESTRICTIONS:
  If filters is defined, it must be of length 1 or length n_elements(Item)

   NOTE:  It is assumed that area.filter(0) = Entrance filter
			      area.filter(1) = CCD fixed filter
			      area.filter(2) = Filter wheel C+Al filter
			      area.filter(3) = Filter wheel thin Al filter
	   This is order is established in the routine mk_eit_area.pro 
METHOD:
  The EIT effective area file is read.  If wave is specified, the 
  values are interpolated in Log(area).
HISTORY:
   9-Jun-95, J. R. Lemen (LPARL), Written

(See /service/soho-archive/home/solarsoft//soho/eit/idl/response//eit_eff_area.pro)


EIT_FILE2PATH

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

   Purpose: translate eit file name to "standard path" on local system

   Input Parameters:
      files - one or more eit file names (with or without path)
      
   Output Parameters:
      exist       -  boolean vector -  online?
      exist_count -  count where() online

   Keyword Parameters:
      topeit   - top level directory (default=EIT_QUICKLOOK)
      curdir   - if set, set topeit to current directory
      lz       - if set, set topeit to EIT_LZ and use YYYY/MM format
      collapse - if set, assme all files in single directory 
		  default is GSFC standard topeit/YYYY/MM/DD/filename
      gavroc   - set if running on gavroche, special directory structure
                 otherwise will check

   Calling Sequence:
      eitpath=eit_file2path(eitfilenames [,/collapse, /curdir, topeit='xxx'])
      eitpath=eit_file2path(filenames,exist,count) 	; exist = online?

   Calling Examples:
      print,eit_file2path('efr19960521.043112')         ; "GSFC-like" tree
         ....ate/data/processed/eit/quicklook/1996/05/21/efr19960521.043112

      print,eit_file2path('efr19960521.043112',/collapse)   ; collapsed tree
         ...ate/data/processed/eit/quicklook/efr19960521

      print,eit_file2path('efr19960521.043112',/curdir)      ; local version
         /usr/users/freeland/dev/eitpath/efr19960521.043112
         
   History:
            21-May-1996 (S.L.Freeland) 
            22-May-1996 (S.L.Freeland) - added 2nd param (exist)
            01-Aug-1996 (J. Newmark) - added lz keyword for level-zero data
            16-Aug-1996 (J. Newmark) - added special paths for GAVROC
            21-Jan-1997 (J. Newmark) - use is_gsfcvms function
            04-Mar-1997 (J. Nemwark) - allow input of short catalog listing
            28-Mar-1997 (S. Freeland) - check 'EIT_DATA_STYLE' to allow
                                        site specification ('collapsed')

   Restrictions:
     assume filenames in given call have same length prefix

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//eit_file2path.pro)


EIT_FILES

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

   Purpose: return online eit file names

   Input Parameters:
      t0, t1 - Optional start time and stop time 
      
   Keyword Parameters:
      last - number of days to look at (Most recent N days)
      collapse - SWITCH, if set, all files in one directory

   Calling Sequence:
      files=eit_files

   Restrictions:
      assume environmental EIT_QUICKLOOK points to collapsed tree or top of tree

   History: 
      15-jan-1996 (S.L.Freeland) for LPARL access
      14-feb-1996 (S.L.Freeland) allow uncollapsed tree , LAST keyword 
       3-Jun-1996 (S.L.Freeland) check EIT_QUICKLOOKnn
       7-aug-1996 (J. Newmark) add lz (level-zero) keyword and associated
                        lz queries, allow one or more QUICKLOOK archives
      25-mar-1997 (S.L.Freeland) - add COLLAPSE keyword and function
                                   recurse w/collapse when required 
                                   add T0 and T1 parameters
       6-apr-1997 (S.L.Freeland) - trim files to true t0 and t1 if supplied
       1-may-1997 (S.L.Freeland) - fix problem if auto-collapse search tried
                                   (recursive logic)

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//eit_files.pro)


EIT_FILL_CUBE

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

   Purpose: fill missing data with data from neighbors
  
   Input Parameters:
      cube  - data cube (output if only one parameter passed)

   Output Parameters:
      ocube - optional - output (filled cube) - default replaces input
 
   Keyword Parameters:
      missing - if set, pixel value considered 'missing' (default=0)
      times   - vector of image times (not yet implemented)
      track_progress - switch, if set, print correction status info 
      window - limit window of neighbors to check (+/- limit)
               (for large cubes, dont wander further than required 

   Output Parameters:
      orig_miss  - percent missing data in original cube [fltarr(nimages)]
      final_miss - percent missing data in final cube 

   Calling Sequence:
      eit_fill_cube,cube		; overwrite input with filled version
      eit_fill_cube,cube,ocube         ; filled version in ocube (orig saved)

   Calling Examples:
      eit_fill_cube,cube, orig=orig, final=final
      eit_fill_cube,cube, mising='aa'x  ; AA(hex) is "missing" (ex: fill data)
      eit_fill_cube,cube, window=2      ; check neghbors within +2/-2 

   Restrictions:
      Assumes images are kindof like their neighbors 
      (normalization, wavelenth, structure, registration, time, whatever)

   History:
      17-feb-1996 S.L.Freeland
      18-Feb-1996 S.L.Freeland - add WINDOW keyword and function

   Nothing about this is EIT specific (fills any data cube) so it might->GEN
   
   Side Effects:
      Input array is filled ('clobbered') if only one parameter (for space)

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//eit_fill_cube.pro)


EIT_FLAT

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

 PURPOSE:
   

 CALLING SEQUENCE:
    flat_fielded_img = eit_flat(img, fits_header, image_no=image_no)

 INPUTS:
    img         = Raw image, detector offset subtracted and missing pixels raised
                  to baseline level
    fits_header = index structure/fits header for img

 OPTIONAL INPUTS:
    None

 KEYWORDS
    image_no    = image number in LZ file 
    verbose     = set if messages discriminating new read or pre-read wanted

 EXAMPLE:
    flat_img = eit_flat(img, fits_header)             ; 2-D version
    flat_img = eit_flat(img, fits_header, image_no)   ; 3-D version

 MODIFICATION HISTORY
    The epoch - (JSN) - Written
    17-Oct-96 - (BNH) - Now sports a document header
                      - Also sports a common block
    1997/04/11 - JBG  - Added VERBOSE keyword.

 COMMON BLOCKS:
    eit_flat_blk = filename and flat field for last image flat-fielded (to
                   speed up operation)

(See /service/soho-archive/home/solarsoft//soho/eit/idl/anal//eit_flat.pro)


EIT_FLUX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  eit_flux
 PURPOSE:
  Specify Te + filter + DEM ==> compute DN 
  Specify Te + filter + DN ==> compute DEM

 CALLING SEQUENCE:
      dn_s = eit_flux(171,1.e6,filter='CLEAR',edensity=1e9)
  or
      dem  = eit_flux(195,1.5e6,filter='AL+1',edensity=1.5e9,dn=1000,
               expotime=5)

 INPUTS:
    wav_band: EIT bandpass, one of 171,195,284,304
    te:   Temperature, may be a vector

 OUTPUTS:
   This function returns DN/s/pixel.
   If DN keyword is set, will return Differential Emission Measure cm^-5

 OPTIONAL INPUT KEYWORDS:
    DN: if set returns Emission Measure, if vector should correspond
        to elements of temperature
    filter:  default is CLEAR position can also specify AL+1 or AL+2
    wavestep: wavelength bin for spectrum calculation, default=0.2Ang   
    Specify one of below:
          Edensity: electron density in emitting region (cm^-3)
          Pressure: electron pressure (cm^-3 K)
          Note- these can be single valued or arrays corresponding to 
             the specified temperatures
          these are used in the population calculations 
    Can specify both of below:
        inspec: an input spectrum, useful if have spectra already calculated
         waves: wavelengths corresponding to inspec
    dem_name = differential emission measure file - temp vs dem, can
        also be a float value=alog10(dem) which correspond to temps.
        set to "unit" if just need unit emission measure

 OPTIONAL OUTPUT KEYWORDS:

 RESTRICTIONS:
 ****  This routine requires the CHIANIT package. Please run the
       following command before using this routine:
            ssw_packages,/chianti,/append

   Presently this reads the Instrument Data from the EIT GENX
   files on the SSW as provided by J. Lemen. This section is
   modularized so as to facilitate updates or even new instruments.

   This program runs failry slow since it is calculating the spectrum
   from 150-400 A. A better way to run this is to calculate the spectrum
   using CHIANTI_spec once for the density and temps you wish and pass
   it into this program.

 MODIFICATION HISTORY:
   1996 Oct 30, J.S. Newmark, Written.

(See /service/soho-archive/home/solarsoft//soho/eit/idl/anal//eit_flux.pro)


EIT_FULLDISK

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

   Purpose: read,  return and optionally display Full Disk EIT images

   Input Parameters:
      t0 - start time of interest
      t1 - stop  time of interest

   Output Parameters:
      index - EIT instrument parameters (structures from read_eit)
      data -  EIT image or image cube

   Keyword Parameters:
      /w171, /w195, /w284, /304    - desired wavelength (default=171)
      /wall		            - show all four wavel.
      /norebin - return full size    (default reduced to 512x512)
      rebin    - size to rebin to     (assumed sqare!)
      /notv    - just return the data
      /display - if  set, display data (via xstepper(
      nmissb   - maxmimum number of missing blocks to accept
      quality  - (empirical data check) minimum quality "accepted" 
                 (see data_quality.pro, or, if set as flag, default=90%)
      sizes    -  sizes to accept (ex: 256,512,1024) - default=all full fov
      hours    - if set, limit cadence to this number of hours
                 (see grid_data.pro and timegrid.pro for generic details)

   Calling Sequence:
      eit_fulldisk, t0, t1, index, data  [, /w171, /w195, /w284, /304]

   Calling Examples:

   eit_fulldisk,t0,t1,index,data,/w304                ; 304 full between t0&t1 
   eit_fulldisk,t0,t1,index,data,hour=4,/w195,nmiss=0 ; 195, perfect only,
                                                      ;   4-hour cadence  
   eit_fulldisk,t0,t1,index,data,hour=4,/w195, $      ; same as previous
        nmissb=0, sizes=[512,1024]                    ; but ignore 256x256 etc
   eit_fulldisk,t0,t1,index,data,/w171, $         ; good to perfect 171s
        nmissb=2,sizes=1024                       ; only 1024x1024       
   eit_fulldisk,t0,t1,index,/w284                 ; INDEX only (no data read)
   
   History:
      29-may-1997 - S.L.Freeland - from 'lasteit.pro'
                    (and asap, lasteit will just call this routine)

   Restrictions:
      Full disk only, Files in $EIT_QUICKLOOK

   Calls:
      read_eit, eit_files, eit_file2path, get_eit_info, 
      grid_data, anytim, delvarx, [wdef, xstepper....]
     
   Common Blocks:
      eit_fulldisk_blk - speed up subsequent wavelenths for same time interva;

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//eit_fulldisk.pro)


EIT_FULLDISKDB

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

   Purpose: generate EIT full disk data base (calls eit_fulldisk)

   Input Parameters:
      t0, t1 - start and stop time

   Keyword Parameters:
      copy   - switch - if set, COPY the files to $EIT_FULLDB/YYYYMM
      links  - switch - if set, symbolic links only
      nmissb - missing block limit (see eit_fulldisk.pro)
      hours  - limit cadence in hours (see eit_fulldisk.pro, grid_data.pro)
      sizes  - limit sizes (256, 512, 1024, etc. see eit_fulldisk.pro)
      waves  - optional wave array (default=[171,195,284,304]
      eit_prep - if set, prep the output (overrides COPY and LINKS)

   History:
      29-may-1997 - S.L.Freeland, written

   Restrictions:
      many - assumed running on a machine with all EIT data online

   Side Effects:
     may create required subdirectories ($EIT_FULLDB/YYYYMM)

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//eit_fulldiskdb.pro)


EIT_FXPAR

[Previous Routine] [Next Routine] [List of Routines]
 Project     : SOHO - EIT

 Name        : 
	EIT_FXPAR
 Purpose     : 
	Obtain the value of a parameter in a FITS header.
 Explanation : This is a shell around the IDLASTRO routine FXPAR.
               The procedure can parse for keywords embedded into
               comments. Usageis identical to FXPAR.
 Use         : 
	Result = EIT_FXPAR( HDR, NAME  [, ABORT ] [,IMAGE_NO=IMAGE_NO] )

             e.g. IDL> hdr=headfits('efr19960715.123746')
                  IDL> print,eit_fxpar(hdr,'EXPTIME')
                       7.000
                  IDL> print,eit_fxpar(hdr,'N_MISSING_BLOCKS')
                       4
                  IDL> hdr=headfits('efz19960623.132832')
                  IDL> print,eit_fxpar(hdr,'FLTR',image_no=23)
                       Al + 1

 Inputs      : 
	HDR	= FITS header string array (e.g. as returned by FXREAD).  Each
		  element should have a length of 80 characters
                 Optionaly, this can be an IDL structure CREATED from a 
                 FITs header as by read_eit
	NAME	= String name of the parameter to return.  If NAME is of the
		  form 'keyword*' then an array is returned containing values
		  of keywordN where N is an integer.  The value of keywordN
		  will be placed in RESULT(N-1).  The data type of RESULT will
		  be the type of the first valid match of keywordN found.
                 If keyword is in COMMENT field will return keyval.
 Opt. Inputs : 
      ABORT    = String to output if can not return value
      IMAGE_NO = Image number for files containing multiple subimages,
                  set to 'ALL' to return values for all subimages

 Outputs     : 
	The returned value of the function is the value(s) associated with the
	requested keyword in the header array.

 Keywords    : 
	COUNT	= Optional keyword to return a value equal to the number of
	  	  parameters found by FXPAR.
	COMMENTS= Array of comments associated with the returned values.
       INITIALIZE = Used by read_eit only, parse comments for 3D index
                    structures, else pull out of tag value
       CAT_WAVES = return all wavelngths in catalog structure, else
                     returns first wavelength
 Calls       : 
 Common      : 
	None.
 Restrictions: 
	None.
 Side effects: 
 Category    : 
	Data Handling, I/O, FITS, Generic.
 Written     : 1996 July 15, J. Newmark
 Modified    : 1996 Aug 23 J. Newmark allow input if IDL structure (or 
                 array of structures) created from FITS headers.
               1996 Oct 18. J. Newmark - allow use of Single image keywords
                 for multiple image LZ files, return scalar for 3D keywords
                 if 1 element array.
             ; 1996 Nov 5, S.L. Freeland - force 'have_sub' to scalar value
               1996 Dec 27 J. Newmark - fixed index structure input.
 Version     : 1.2
               1997 Jan 14 J. Newmark - added capability to handle
                 raw catalog structure input, add /initialize keyword
                 cat_waves keyword
 Version     : 2.0
               1997 Jan 24 J. Newmark - changed many if-thens to CASE
               1997 Mar 20 J. Newmark - add in sci_obj field for catalog
               1997 Apr 14 J. Newmark - add support for second ASCII table
               1997 Aug 12 J. Newmark - return INT/FLT where expected, 3D

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//eit_fxpar.pro)


EIT_GENX_CAT

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

   Purpose: generate and/or read local eit qkl catalog

   Input Parameters:
      NONE

   Output Parameters:
      index - IDL 'eit_struct.pro' style structures for last few days
      text  - text version of index (via get_infox)

   Keyword Parameters:
      cat_name  - (output) - name of current catalog
      name_only - (input)  - switch, just return catalog name via CAT_NAME
      full_fov  - (input)  - if set, read FULL FOV catalog 

      generate  - (input)  - switch, GENERATE catalog (default is just read)
                             (generally , via CRON job)
      last      - (input)  - only with GENERATE, number of days to include 
                             (most recent NN=LAST days, default=2)

   Calling Sequence:
      eit_genx_cat, eitstructs, eitinfo            ; most recent few days
      eit_genx_cat, eitstructs, eitinfo, /full_fov ; same, only full FOV (speed)

      eit_genx_cat,/generate           ; Make it, via priviledged cron job

   History:
      3-mar-1997 - generate/read EIT_STRUCT (via read_eit.pro) based catalog 
                   (replace old "temporary" ascii catalog)
     11-mar-1997 - make a smaller full fov also
     23-apr-1997 - add filter for zero block files (and send email warning)

   Calls:
      eit_files, read_eit, savegen OR restgen
  
   Method:
      uses 'genx' files - see SAVEGEN and RESTGEN for more details

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//eit_genx_cat.pro)


EIT_GETLIMB

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

   Purpose: get the limb parameters from EIT FITS or fit limb if not present

   Input Parameters:
      eitfiles - EIT FITS file list

   Output Parameters:
     xx -  sun center, full res EIT pixels
     yy -  sun center, full res EIT pixels
     rr -  S radius,   full res EIT pixels
      
   Keyword Parameters:
      fit   -  switch, if set, call fit_limb (default if no FITS params)
      find  -  switch, if set, call find_limb
      guess -  switch, if set, return guess (for fast prototyping)
      update - switch, if set, update FITS file (add point info to header)

   Calling Sequence:
      eit_getlimb, eitfiles, xx,yy,rr [/fit, /find, /guess, /update]

   Method:
      get parameters from FITS file, fit_limb or find_limb , or guess
  
   History:
      1-Feb-1996 - S.L.Freeland
     15-Feb-1996 - S.L.Freeland - minor adjustments
      3-Sep-1996 - J. Newmark -updated for whole mission paramters

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//eit_getlimb.pro)


EIT_GETOBS

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

   Purpose: interactive selection of EIT obsserving blocks (32x32)

   Input Parameters:
      NONE
   
   Output Parameters:
      obs - command blocks selected [** currently 0-1023 from lower left **]

   Keyword Parameters:
      magnification - image (size/1024.) - default derived from current window 

   Calling Sequence:
      eit_getobs, obs [magnification=magnification]

   Method:
      read cursor postion from current X-window containing an EIT or 
      EIT-aligned image - permit mouse selection  of EIT command regions
          "Press LEFT button to SELECT or UNSELECT a region"
          "Press/Drag CENTER button to SELECT or UNSELECT adjacent regions"
          "Press RIGHT button to EXIT"

   History:
      30-jan-1996 (S.L.Freeland)

   Restrictions: 
      assumes EIT or (EIT co-aligned image) is in current X windows display

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//eit_getobs.pro)


EIT_GT_CORNER

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

 Purpose:
    Return the defining corners of an EIT image.

 Input Parameters:
    header = FITS header or EIT index structure for image

 Output:
    corners = [P1_X, P2_X, P1_Y, P2_Y]

 Calling Sequence:
    corners = eit_gt_corner(index)
    corners = eit_gt_corner(fits_header)
 
 Restrictions:
    The one defining reason for this routine is to work around the
    COMMENT header definitions.  If P[12]_[XY] ever were to become 
    real FITS header keywords instead of comments, it is my hope that
    we would only have to fix this one spot to deal with it.

 History:
    31-October-96 - (BNH) - Written

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//eit_gt_corner.pro)


EIT_GT_FILTER

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

 Purpose:
    Return the filter of a 2- or 3-D index structure or
    FITS header.  

 Input Parameters:
    header   = FITS header or EIT index structure for image

 Input Keywords:
    image_no = Image number from within above header

 Output:
    Filter of chosen image

 Calling Sequence:
    filter = eit_gt_filter(fits_header)
    filter = eit_gt_filter(fits_header,image_no=7)
    filter = eit_gt_filter(index [,image_no=4])

 Running Commentary:
    Another workaround for fits keywords disguised as comments.

 History:
     3-November-96 - (BNH) - Written

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//eit_gt_filter.pro)


EIT_GT_WAVELNTH

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

 Purpose:
    Return the wavelength of a 2- or 3-D index structure or
    FITS header.  

 Input Parameters:
    header   = FITS header or EIT index structure for image

 Input Keywords:
    image_no = Image number from within above header

 Output:
    wavelength of chosen image

 Calling Sequence:
    wave = eit_gt_wavelnth(fits_header)
    wave = eit_gt_wavelnth(fits_header,image_no=7)
    wave = eit_gt_wavelnth(index [,image_no=4])

 Running Commentary:
    Another workaround for fits keywords disguised as comments.

 History:
     3-November-96 - (BNH) - Written

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//eit_gt_wavelnth.pro)


EIT_IMAGE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
	EIT_IMAGE
 PURPOSE:
	Read a SOHO Extreme ultraviolet Imaging Telescope (EIT) image
       from a FITS file, and return the byte-scaled image.

 CALLING SEQUENCE:
	scaled_image =	EIT_IMAGE(filename, [original_image =
			original_image,] [scale_factor = scale_factor,]
			[top = top], [flat=flat],
			[image_time = image_time,] [header = header],
			[show_image = show_image], [replacement_value =
			replacement_value], [fill_block = fill_block],
			[surround = surround], [adjust = adjust],
			[dark_current = dark_current], [v_offset = v_offset],
			[no_degrid = no_degrid], [half = half],
			[quarter = quarter], [no_rescale = no_rescale],
			[xpos = xpos, ypos = ypos], image_no=image_no)

 INPUTS:
	FILENAME = String containing the name of the FITS file to be read.
			Optionally, this can instead be the string returned
			by EIT_CATRD for a file.

 OUTPUTS:
	Result = byte-scaled image array (usually 1024 x 1024)
;
 KEYWORDS:
	show_image - if present and non-zero, display the image on the
			currently selected graphics device
	original_image - original, floating-point version of contents of file
	scale_factor = scaling for logarithmic scaling on the current X
			device
	top - maximum value to which to scale (useful when scaling a series
			of images to the same maximum)
	image_time = string concatenating DATE-OBS and TIME-OBS from the
			FITS header
	header = FITS header (string array)
	replacement_value - DN with which to replace missing data block pixels
	fill_block - intarr(32, 32) with which to replace missing data blocks
	surround - if set, replace missing block data with the average of
			surrounding blocks
	adjust - multiplicative factor by which to adjust for strange exposure
			times
	dark_current - dark current value to be subtracted when image is
			scaled (Note: if replacement_value is defined and
			dark_current is not, the dark current is set to the
			replacement value.)
	v_offset - if show is set, the vertical offset for display (useful
			for displays incapable of displaying the full image)
	no_degrid - if set, do not remove the grid, otherwise remove by
			the method of F. Clette
	half - if set, rebin image to half size
	quarter - if set, rebin to quarter size
	xpos = x position of image window
	ypos = y position of image window
       image_no = selected image from a multiple image LZ file
       flat - if set flat field the image
	no_rescale - set if image is not to be rescaled into 0 - 255 range

 EXAMPLE:
	Find the most current EIT image on the EIT image directory,
	and display it on the current device:

	s = findfile("reformat_dir:ef*.*")
	n = n_elements(s)
	a = EIT_IMAGE(s(n - 1), /show_image)

 RESTRICTIONS:
	None.

 NOTES:
	None.

 PROCEDURES USED:
	READFITS (Astronomy library)
	RAISE_MISSING_BLOCKS
	EIT_DEGRID
       EIT_FLAT

 MODIFICATION HISTORY:

	D.M. fecit, from SXT_IMAGE, 25 October, 1993.

	Changed to ignore v_offset unless n_y eq 1024. D.M. fecit, 1996/02/25.

	Call EIT_DEGRID instead of reinventing the wheel. D.M. fecit,
	   1996/03/30.

       1996-Aug-20 JSN added support for 3-D LZ data

	Changed filename argument handling to accept "brief" catalog lines.
	   D.M. fecit, 1996/09/01.

       1996-Sep-25 J Newmark added flat fielding

	1996/10/20	Changed scaling to use only southernmost 15/16
			of a full-frame image (to avoid scaling 284 A,
			clear filter pos. images to the light leak).
			D.M. fecit.
       1996/12/04 J. Newmark - removed last traces of find_keyword

	1996/12/23	Added QUARTER keyword.			D.M. fecit.

	1997/02/05	Added NO_RESCALE keyword.		D.M. fecit.

(See /service/soho-archive/home/solarsoft//soho/eit/idl/anal//eit_image.pro)


EIT_LZSORT

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

   Purpose: get index of subimages from a level zero FITS file which
             match selected wavelength

   Input Parameters:
      filename - EIT level zero FITS file
      wave     - specified wavelength of subimages
 
   Output Parameters:
     Function return indices of subimages matching specified wavelength
     make_array - set if want to return data
     img      - if make_array specified returns subimage data
 
   Keyword Parameters: none

   Calling Sequence:
      indices=eit_lzsort(filename,wave [,img=img, /make_array]) 

   Method:
     Check if FITS file, call eit_fxpar to read in subimage info 
     returns data cube if asked for via:
         IDL> img=readfits(file)
         IDL> img=img(index)
  
   History:
     18-July-1996 - J. Newmark  - created

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//eit_lzsort.pro)


EIT_MIRROR

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

   Purpose; make and submit EIT quicklook mirror job

   6-feb-1996 (S.L.Freeland)

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//eit_mirror.pro)


EIT_NORM_RESPONSE

[Previous Routine] [Next Routine] [List of Routines]
NAME
   eit_norm_response
PURPOSE 
  compute a normalized response for each eit band  
INPUTS
   date_obs  = date of observation
   wave      = wavelength of interest
OUTPUTS
   returns normalziation factor to be applied to measured DN level
   on givewn date such that all EIT data is normalized
WARNINGS
   this routine may not always have the most recent normalizations
   especially just following a bakeout.
MODIFICATIONS
    1997 Apr 01 J.Newmark - Created
    1997 Jul 02 J.Newmark - use 304 fit for 284  

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//eit_norm_response.pro)


EIT_PIXSIZE

[Previous Routine] [Next Routine] [List of Routines]
 NAME
  EIT_PIXSIZE
  return pixel scale, i.e. arcsec/pixel
  "/pix=(0.206265/focal length)*pixel size microns
       =(0.206265/1.652)*21=2.62

   However, a problem arises with comparison of features with other
   SOHO instruments. Part of the problem is caused by the physical
   size difference of the solar disk in the photoshphere and transition
   region and corona. Part of the problem is unknown. It may be that 
   physical size of the pixels is 20.9 microns.

   Therefore an empirical number that works better is 2.59

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//eit_pixsize.pro)


EIT_POSTAGE

[Previous Routine] [Next Routine] [List of Routines]
 NAME        : 
              EIT_POSTAGE
 PURPOSE     : display small images of whole day on one screen

 CATEGORY    : image summary

 EXPLANATION :  

 SYNTAX      : eit_postage

 EXAMPLES    : none

 CALLED BY   :

 CALLS TO    : put, eit_catrd, label_image, eit_file2path, readfits

 ARGUMENTS   :
       INDATE  - string of the day to display

 KEYWORDS    :
       LZ      - if set then display level zero data, not quicklook data
       GIF     - if set then output a GIF file
       USE_CT  - if set creates a color table for each wavelength

 OUTPUTS     : IF GIF set then a file name eit_YYYY-DD-MM.gif

 COMMON      : none

 RESTRICTIONS: none

 SIDE EFFECTS: 
      If USE_CT keyword is set will mess up the color tables. User
      should reset them by running loadct,0 after using this routine

 PROJECT     : SOHO - EIT

 HISTORY     : V1,  Jeff Newmark, 24-jan-1997
               1997 Feb 21 - J. Newmark use multiple color tables
		1997 Mar 17 - E. Einfalt add titles

 CONTACT     : newmark@eitv2.nascom.nasa.gov

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//eit_postage.pro)


EIT_PREP

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

 PURPOSE:
	Process an EIT image.

	A preliminary version of a processing routine for analyzing
       EIT images. Presently this version reads in the named FITS
       image and produces a background subtracted, degridded and
	flat-fielded output array or FITS file. In the future this 
	routine will also vignette correct. The input may also be
       the output index structure and data cube as produced by
       read_eit

 CATEGORY:
	FITS processing

 CALLING SEQUENCE:
       EIT_PREP,filename,[outheader,outimage] [,/outfits]

 INPUTS:
	filename - FITS file name or the output of eit_catrd 
                  may also be index structure (e.g. output of read_eit)

 
 OPTIONAL INPUT KEYWORD PARAMETERS: 
       outfits  - set if want to produce an output FITS file
	float    - set if you want to return floating point.  Default is I*2
       nrl      - set if input file was processed at NRL
	normalize- set to normalize output image to per sec
	noflat   - set to disable flat-fielding
	no_degrid- set to disable degridding.
	surround - set to replace missing block data with the average of
			surrounding blocks. 
	image_no - Image number to process in multiple image LZ file.
	fill_block - intarr(32,32) which is used to replace missing data blocks
	save_zero- set to retain images that have only 0 counts.
	verbose  - set for a few more messages
       data     - data array(cube) corresponding to index structure
       filter_norm - normalize data taken with AL+1 filter to that of clear

 OPTIONAL OUTPUTS:
	outheader- FITS header or output index structure
	outimage - Processed EIT image.  Default data type is I*2

 OPTIONAL OUTPUT KEYWORD PARAMETERS:
	n_block  - Number of blocks repaired

 COMMON BLOCKS: none.

 SIDE EFFECTS: 
	If /outfits is set, then a FITS file is written. Not used
       if input is index structure/data cube.

 RESTRICTIONS:
	Processes only one image per file.
       If filename is a vector, there is no checks to make sure
       that all the images are the same size. User must be careful
       to check this.

 PROCEDURE:
         The FITS file is read in. Any missing blocks are replaced
         with the present dark noise value. The dark noise is
         subtracted off the entire image. The image is degridded.
         The image is flat fielded. The image is optionally returned.
         A new FITS file with an updated header is written out
         with the format eit_l1_yyyymmdd_hhmmss.fits

         Note: the De-gridding and Flat-fielding are multiplicative 
               operations with an AVERAGE value over the full field
               of 1.0

 MODIFICATION HISTORY:
 	Written by:  J. Newmark 	Date.  July 1996
       1996 Sep 24 - J. Newmark - add flat fielding 
       1996 Oct 8 - J. Newmark  - allow NRL format files
	1996 Oct 16, J. R. Lemen, Changed calling arguments.
       1996 Dec 09 - J. Newmark - add uage of image_no throughout.
       1997 Feb 10 - J. Newmark - allow input if index structure and data
                                  cube
       1997 Mar 09 - J. Newmark - write out FITS files from indx/data
                                   structures
       1997 Mar 10 - J. Newmark - fix output FITS file names.
       1997 Apr 09 - J. Newmark - account for new exptime
       1997 Apr 12 - J. Newmark - account for correction of Al+1 to ClEAR

(See /service/soho-archive/home/solarsoft//soho/eit/idl/anal//eit_prep.pro)


EIT_RATIO

[Previous Routine] [Next Routine] [List of Routines]
   Name: 
         eit_ratio
   Purpose: create a ratio of two images and optionally display it

   Input Parameters:
     file1 - FITS file of image 1 = numerator
     file2 - FITS file of image 2 = denominator

   Output Parameters:
      eit_ratio returns ratio array
      
   Keyword Parameters:
    show - set if want output displayed
    xpixs, ypixs- set if want a subset pixel range of image,
               format is xpixs=[xstart,xstop] 
    magnify - set to integer multiple for output REBIN size
    image[1,2]_no - set for image # of 3D LZ file
    temp_bar - set to display a temperature bar on bottom of image

   Calling Sequence:
      eit_ratio,'efr19960924.123456','efr19960924.654321',/show,$
           magnify=3,xpixs=[100,300],ypixs=[100,300]  

   RESTRICTIONS:
       the temperature calibration is preliminary and not very
       accurate.

   Method:
      read FITS file, load proper color table, subtract background, 
      replace missing blocks, degrid, flat field, take ratio, subset if 
      desired, rebin if desired,optionally display
  
   History:
     24-Sep-1996 - J. Newmark  - created
     08-Dec-1996 - J. Newmark  - took out all processing steps and
                      directly called routine EIT_PREP
     1997/02/06   Added missing block replacement (unit ratio) and
		   MIN_RATIO, MAX_RATIO keywords for display.	D.M. fecit
     1997/02/10   J. Newmark - added "rough" temperature bar.

(See /service/soho-archive/home/solarsoft//soho/eit/idl/anal//eit_ratio.pro)


EIT_RING_FLUX

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

 PURPOSE:
   Calculate the total flux (DN) per second with a given annulus in 
   an EIT full field image.

 CALLING SEQUENCE:
    flux = eit_ring_flux(fits_file, inner_rad, outer_rad)

 INPUTS:
    infile      = FITS file of full field EIT image
    inner_rad   = inner edge for annulus in solar radii
    outer_rad   = outer edge for annulus in solar radii

 OUTPUTS:
    flux        = total flux per second in given annulus

 OPTIONAL INPUTS: 
    eastonly    = set if want semi-annulus on east limb
    westonly    = set if want semi-annulus on west limb

 EXAMPLES:
     Return flux within annulus 1.13-1.17 Rsun:
         flux = eit_ring_flux(infile,1.13,1.17)
     Return all flux on disk:
         flux = eit_ring_flux(infile,0,1.0)
     Return all flux off disk:
         flux = eit_ring_flux(infile,1.001,2.0)

 MODIFICATION HISTORY
    1997 Jan 08 - (JSN) - Written
    1997 Feb 13 - J. Newmark - add east and west keywords
    1997 Mar 17 - J. Newmark - account for change in exptime parameter
    1997 Apr 10 - J. Newmark - use normalize exptime, normalize filter
                               in eit_prep

 COMMON BLOCKS: none
 NOTES: this procedure will fill in missing blocks with the /surround
        option, i.e. with average of surrounding blocks.
        
        If image taken using AL+1 Filter will normalize to CLEAR.

(See /service/soho-archive/home/solarsoft//soho/eit/idl/anal//eit_ring_flux.pro)


EIT_STRUCT

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

   Purpose: return eit_structure 

   Input Parameters:
      number (optional) - number structures returned  - default is one  
  
   Keyword Parameters:
      catalog   - if set, return catalog structure (subset)
      ncomment -  if set, number of COMMENT records to include

   Calling Sequence:
      str=eit_struct( [number , ncomment=xx ]  )

   History:
      27-apr-1996 S.L.Freeland (map FITs header)
      24-may-1996 S.L.Freeland (add .VERSION, make .MJD long)
      15-aug-1996 S.L.Freeland (Version 2, naxis3 - add /CATALOG switch)
      27-oct-1996 S.L.Freeland (typo (BCALE->BSCALE))
      11-dec-1996 S.L.Freeland (add /CATALOG keyword for testing)
      14-mar-1997 J.S.Newmark  (add history to obtain version number)
      11-apr-1997 S.L.Freeland (add NCOMMENT keyword , a few new tags)
      14-apr-1997 J.S.Newmark  (add sci-obj field to catalog)
      05-may-1997 J.S. Newmark (add s/c pointing info tags)

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//eit_struct.pro)


EIT_TEMP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  eit_temp
 PURPOSE:
  Specify  195/171 or 284/195 ratio or individual DN values ==> compute TEMP, 
                                                     emission measure
  NOTE: THIS IS MAINLY A PLACEHOLDER, HOWEVER IT MAY BE USEFUL.

 CALLING SEQUENCE:
         temp=eit_temp(dn171=dn171,dn195=dn195,expotime=expotime,$
                       inratio=inratio,dn284=dn284]

 INPUTS:
    MUST SPECIFY EITHER
      dn171,dn195,dn284 = observed flux in image, best if corrected by
                    eit_prep, must have background subtracted
 OR   
      inratio     = calculated 195/171 or 284/195 ratio, e.g. from eit_ratio
    
 OUTPUTS:
   This function returns temperature and emission measure (cm^-5).
   IF a dn195 level is not input the output emission measure is
   normalized to 1 DN a observed in 195.

 OPTIONAL INPUT KEYWORDS:
     expotime = total exposure time (including shutter close time)
                 if specifying non-normalized DN values
     r195_to_171- set if this is wanted ratio (default)
     r284_to_195- set if this is wanted ratio

 OPTIONAL OUTPUT KEYWORDS:

 RESTRICTIONS:
   Until the CHIANTI database comes online this routine only works
   on a given set of MY input parameters. 
   ASSUMPTION: electron density for level populations = 1e9 cm^-3
                       (not very sensitive to this)

 MODIFICATION HISTORY:
   1997 Feb 05, J.S. Newmark, Written.

(See /service/soho-archive/home/solarsoft//soho/eit/idl/anal//eit_temp.pro)


EIT_WITNESS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  eit_witness
 PURPOSE:
  Return the product of the reflectivities of the 
  primary & secondary witness mirrors
 CALLING SEQUENCE:
  eit_witness, 171, wave, reflect
  eit_witness, 195, wave, reflect
  eit_witness, 284, wave, reflect
  eit_witness, 304, wave, reflect
 INPUTS:
  Sector	= 171, 195, 284 or 304
 OUTPUTS:
  wave		= Vector of wavelengths
  reflect	= Vector of reflectivities
 HISTORY:
   5-Jun-95, J. R. Lemen and R. C. Catura, Written

(See /service/soho-archive/home/solarsoft//soho/eit/idl/response//eit_witness.pro)


EIT_XCAT

[Previous Routine] [Next Routine] [List of Routines]
 NAME        : 
               EIT_XCAT
 PURPOSE     : Interactive Widget interface to LZ catalog

 CATEGORY    : Catalogs

 EXPLANATION : This function calls EIT_CATRD with interactive + LZ switch

 SYNTAX      : list = eit_xcat(filename=filename,tai=tai)

 EXAMPLES    : 
                IDL> file=''
                IDL> list=eit_xcat(file=file)
 
 CALLED BY   : top level

 CALLS TO    : eit_catrd

 ARGUMENTS   : none

 KEYWORDS    : 
	FILENAME  IF present, then return the fits file names matching 
		  the entries in the returned variable.
	TAI      IF present, then return the TAI time matching 
		 the entries in the returned variable.
       CAT_STRUCT -Alternate catalog input, raw catalog previously
                created, as by read_eit

 OUTPUTS     : 
	Return a string array of catalog entries,or a raw IDL structure 
       of entries. Optional outputs include list of filenames or tai times

 COMMON      : none

 RESTRICTIONS: none

 SIDE EFFECTS: none

 PROJECT     : SOHO - EIT

 HISTORY     : J. Newmark 22-Aug-96

 CONTACT     : newmark@eitv2.nascom.nasa.gov

(See /service/soho-archive/home/solarsoft//soho/eit/idl/anal//eit_xcat.pro)


FIND_FITS_KEYWORD

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

 NAME:
    find_fits_keyword
 PURPOSE:
    Find the FITS header line containing the given keyword.
 CALLING SEQUENCE:
    position = find_fits_keyword(fits_header, keyword)

 INPUTS:
    fits_header = fits_header
    keyword     = Header line to sort on

 OUTPUT:
    Subscript of any lines in the fits header that match 
    (If more than one take the first one)
    Returns -1 if no match

 MODIfICATION HISTORY:
    10-Apr-1996 - (BNH) - Idea stolen from D.M. Fecit, code chopped
			   out of EIT_DEGRID

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//find_fits_keyword.pro)


GET_EIT_DATA

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

 PURPOSE:
	This procedure copies all full field images from specified
   date to either local directory or FTP's to remote machine.

 CALLING SEQUENCE:
       get_eit_data,date,['remote-machine'],['remote-login'],['remote_dir',]
           [,/local]

 INPUTS:  
    date            specified day of interest, will use LZ data if available
    rem_machine     remote machine name for FTP
    rem_name        remote login name for FTP
    rem_dir         remote directory name for FTP
    local           set if only want to copy files to local directory

 KEYWORD PARAMETERS: None

 OUTPUTS:
	Copies files to either local directory or remote machine

 EXAMPLES:
       Copy all EIT full field images from Jan 3, 1997 to my subdirectory
       data:
         get_eit_data,'3-jan-97','eitv2.nascom.nasa.gov','newmark','data'

 COMMON BLOCKS: none.

 SIDE EFFECTS:

 CALLS: eit_catrd

 MODIFICATION HISTORY:
 	Written by:  J. Newmark 	Date.  Jan 1997

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//get_eit_data.pro)


GET_EIT_INFO

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

   Purpose: provide 'standard' 1-line summaries of EIT index/fits file headers

   Input Parameters:
      inrecs - EIT structures (via read_eit) or fits file names

   Keyword Parameters:
      short     - if set, provide a "shorter" summary
      fmt_time  - output TIME format (default=ECS) - (see anytim OUT_STYLE)
      out_style - synonym for FMT_TIME (see anytim OUT_STYLE) 

   History:
      15-mar-1997 S.L.Freeland
      18-mar-1997 S.L.Freeland - allow user FMT_TIME&OUT_STYLE, 
                                 set default time output to -> ECS

   Method:
     just setup can call  for some EIT "standards"

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//get_eit_info.pro)


GT_EITFILTER

[Previous Routine] [Next Routine] [List of Routines]
NAME:
  gt_EITfilter
PURPOSE:
  To extract the EIT filter number optionally return a string mnemonic.
CALLING SEQUENCE:
  print, gt_EITfilter()			;to list the mnemonics
  filters = gt_EITfilter(index)
  filters = gt_EITfilter(roadmap)
  filters = gt_EITfilter(index.eit, /string)
  filters = gt_EITfilter(index, /short)
  filters = gt_EITfilter(indgen(4))		;used with menu selection
  filters = gt_EITfilter(index.eit, /space)	;put single space before string
  filters = gt_EITfilter(index.eit, space=3)	;put 3 spaces
METHOD:
  The input can be a vector or a scalar.
  The input can be a integer or a structure.
  The structure can be the index, or roadmap, or observing log.  
  The integer value corresponding to the EIT definition.  To
		check, use print,gt_EITfilter()
	
INPUT:
  item	- A integer or structure, which can be scalar or an array.  If this
	  value is not present, a help summary is printed with the filter
	  names used.
OPTIONAL INPUT:
  string	- If present, return the string mnemonic (long notation)
  short	- If present, return the short string mnemonic 
  spaces	- If present, place that many spaces before the output
		  string.
OUTPUT:
  returns	- The filter selected, a integer value or a string
		  value depending on the switches used.  It is a vector
		  if the input is a vector
OPTIONAL OUTPUT:
  header	- A string that describes the item that was selected
                 to be used in listing headers.
HISTORY:
 10-Jun-1995, J. R. Lemen (LPARL), Written

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//gt_eitfilter.pro)


GT_EITSECTOR

[Previous Routine] [Next Routine] [List of Routines]
NAME:
  gt_EITsector
PURPOSE:
  To extract the EIT sector number optionally return a string mnemonic.
CALLING SEQUENCE:
  print, gt_EITsector()			;to list the mnemonics
  sectors = gt_EITsector(index)
  sectors = gt_EITsector(roadmap)
  sectors = gt_EITsector(index.eit, /string)
  sectors = gt_EITsector(index, /short)
  sectors = gt_EITsector(indgen(4))		;used with menu selection
  sectors = gt_EITsector(index.eit, /space)	;put single space before string
  sectors = gt_EITsector(index.eit, space=3)	;put 3 spaces
  sectors = gt_EITsector(index,/wave)		;Same as /short, but return integers
METHOD:
  The input can be a vector or a scalar.
  The input can be a integer or a structure.
  The structure can be the index, or roadmap, or observing log.  
  The integer value corresponding to the EIT definition.  To
		check, use print,gt_EITsector()
	
INPUT:
  item	- A integer or structure, which can be scalar or an array.  If this
	  value is not present, a help summary is printed on the
	  wavelength sector names used.
OPTIONAL INPUT:
  string	- If present, return the string mnemonic (long notation)
  short	- If present, return the short string mnemonic 
  wave		- If present, return wavelengths as integers
  spaces	- If present, place that many spaces before the output
		  string.
OUTPUT:
  returns	- The filter selected, a integer value or a string
		  value depending on the switches used.  It is a vector
		  if the input is a vector
OPTIONAL OUTPUT:
  header	- A string that describes the item that was selected
                 to be used in listing headers.
RESTRICTIONS:
  The /wave keyword overrides /short and /string keywords.
HISTORY:
 10-Jun-1995, J. R. Lemen (LPARL), Written

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//gt_eitsector.pro)


IS_FITS

[Previous Routine] [Next Routine] [List of Routines]
     IS_FITS determines whether a file is in fits format

DESCRIPTION:  
     IS_FITS reads the primary header unit from a file and searches
     for the keyword 'SIMPLE'.  If SIMPLE = T then the file is 
     determined to be a fits file and result = 1.  The keyword 
     'EXTENSIONS' is then searched for; if it is found then then
     next header unit is read in and the value of the 'XTENSION'
     keyword is returned in the optional parameter 'extension'. If
     'EXTENSIONS' is not found then 'extension' is left blank.
     

CALLING SEQUENCE:  
     RESULT = IS_FITS ( filename, [extension] )

ARGUMENTS (I = input, O = output, [] = optional):
     RESULT        O   integer    Contains 1 for each file that is in
                                  fits format, SIMPLE = 'T'
     FILENAME      I   string     File name to be checked
     EXTENSION    [O]  string     Contains the extension type if 
                                  the fits file contains 'XTENSION'
                                  keyword

WARNINGS:

EXAMPLE:
	To check if file 'filename' is fits format use the following:

	    status = is_fits('filename') 

	The return status = 1 if it is a fits file and 0 if not.  No 
	information on extensions is returned.

	To determine if a file is a valid fits extension file and what
	type if extension it is, then include the optional 'extension'
	keyword:

	    status = is_fits('filename', extension)

	In this case status = 1 if the file is a valid fits file.  The
	keyword extension = 'BINTABLE' if the file is fits Binary
	Table Extension.  If no extensions were found then extension
	is left blank.  !ERROR will be returned as 0 for no errors and
	as 1 if the file was not found.
#
COMMON BLOCKS:
     None

PROCEDURE (AND OTHER PROGRAMMING NOTES): 

PERTINENT ALGORITHMS, LIBRARY CALLS, ETC.:
	Uses a call to SXPAR to find keyword values.
  
MODIFICATION HISTORY:
     Written by Dave Bazell,  General Sciences Corp.  4 Feb 1993 spr 10477
     Modified by Dalroy Ward, General Sciences Corp. 24 Mar 1993 spr
              modified routine to handle headers longer than one record

.TITLE
 Routine IS_FITS

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//is_fits.pro)


IS_SS

[Previous Routine] [Next Routine] [List of Routines]
     IS_SS determines whether a file is a valid IDL save set

DESCRIPTION:  
     IS_SS attempts to open FILENAME and read the first two bytes.
     IDL save sets have the first two bytes set to 83 and 84 so we 
     check the values of these bytes and return a 1 if the test is
     positivie and a 0 if either one is negative.

CALLING SEQUENCE:  
     RESULT = IS_SS(filename)

ARGUMENTS (I = input, O = output, [] = optional):
     RESULT        O   int        Return value = 1 if FILENAME is 
                                  determined to be an IDL save set
                                  and 0 if it is not.
     FILENAME      I   str        Name of file to be checked        

WARNINGS:
	This algorithm is based on the first two bytes of the save
	set record begin equal to 83 and 82.  It has been observed
	that IDL save sets start with these bytes.  Invalid results
	will occur if  RSI changes this convention (possible) or if
	a non-IDL save set starts with 83 82 (also possible).

EXAMPLE:
	To determine if 'file' is a valid IDL save set use:

	   status = is_ss('file')

	Status = 1 if it is a save set and 0 if it is not.
#
COMMON BLOCKS:
     None

PROCEDURE (AND OTHER PROGRAMMING NOTES): 

PERTINENT ALGORITHMS, LIBRARY CALLS, ETC.:
     None
  
MODIFICATION HISTORY:
     Written by Dave Bazell,  General Sciences Corp. 4 Feb 1993 spr 10463

.TITLE
 Routine IS_SS

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//is_ss.pro)


LASTEIT

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

   Purpose: read and display most recent EIT images

   Input Parameters:
      number - number of images to read (default=1)

   Output Parameters:
      info - EIT instrument parameter (string array, 1 per image) 
      data - EIT image or image cube

   Keyword Parameters:
      /w171, /w195, /w284, /304    - desired wavelength (default=171)
      /wall		            - show all four wavel.
      /norebin - return full size    (default reduced to 512x512)
      rebin    - size to rebin to     (assumed sqare!)
      /notv    - just return the data
      quality  - minimum quality "accepted" (see data_quality.pro)
                 (or, if set as flag, default=90%)

   Calling Sequence:
      lasteit [info, data, number, /w171, /w195, /w284, /304]

   Calling Examples:
      lasteit			   		; display most recent 171 image
      lasteit,/w195		   		; ditto for 195
      lasteit,info,data,5,/w304   		; most recent 5 304 images
				   		;    return info and data 
      lasteit,/wall				; most recent all wavelenghts
      lasteit,index,data,50, rebin=256,/quality   ; last "50" @171, 
			                           ; rebin->256, quality>90
                                                    

   History:
      5-feb-1996 (S.L.Freeland)
     23-apr-1996 (s.l.freeland) tvscl display if /noscale set
      3-mar-1997 (S.L.Freeland) use genx (IDL eit_struct based) catalog 
                                instead of old ascii catalog
     14-mar-1997 (S.L.Freeland) insure chronological order on output
                                add QUALITY keyword and function
     23-jul-1997 (S.L.Freeland) apply QUALITY *BEFORE* FILL

   Restrictions:
      Full disk only, Files in $EIT_QUICKLOOK

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//lasteit.pro)


MK_EIT_L1

[Previous Routine] [Next Routine] [List of Routines]
 Project     : SOHO - EIT

 Name        : 
	MK_EIT_L1
 Purpose     : 
	Create Level 1 FITS files via eit_prep. Demo program to show usage.
 Use         : 
	mk_eit_l1,date,[qkl=qkl]
        IDL> mk_eit_l1,'20-mar-1997'
        IDL> mk_eit_l1,['5-mar-1997','10-mar-1997']


 Inputs      : 
        DATE : Date in any accepted format or 2 element array consisting
               of start and stop dates.
 Opt. Inputs : 
        QKL  = if keyword set then use quicklook rather than level zero data
        fullfov = set if want only full FOV images

 Outputs     : 
         Create a single output FITS file for each image. The processing
         is done by EIT_PREP. A background is subtracted off, image is
         degridded, flat fielded, and normalized

 Calls       : EIT_PREP, EIT_CATRD, EIT_FXPAR
 Common      : 
	None.
 Restrictions: 
	None.
 Side effects: 
 Category    : 
	Data Handling, I/O, FITS.
 Written     : 1997 March 20, J. Newmark
               1997 July 23 Added fullfov keyword, use save_zero option
                            in eit_prep to save memory J Newmark

(See /service/soho-archive/home/solarsoft//soho/eit/idl/anal//mk_eit_l1.pro)


MK_LASTEIT_MOVIE

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

   Purpose: recent EIT full disk movies->WWW  (illustrate image2movie...)

   Input Parameters:
      NONE

   Optional Keyword Parameters:
      waves   - array of EIT wavelengths to include (default = all)
      outsize - output size of movie frames (default=280)
      mpeg    - if set, make the movies MPEG (Default = gif animation)
      nimg    - number of images to include (most recent NN for each WAVE)
                (default=30)

   Calling Examples:
      IDL> mk_lasteit_movie                       
      IDL> mk_lasteit_movie, outsize=100, nimg=100, waves=[195,304], /mpeg

   Calls:
      html_doc, file_append, lasteit, eit_colors, data2files, image2movie...
      http_names, prstr, strjustify

   History:
     15-mar-1997 - S.L.Freeland 
     18-mar-1997 - S.L.Freeland - change movie label times to ECS format
                                  thumbnail frame size ->  80x 80
                                  [via image2movie parameters]
                                  add rename as last step (assume cron only)
     21-mar-1997 - S.L.Freeland - if batch mode, move to scratch area 1st
     16-jul-1997 - S.L.Freeland - add  /JAVA option (pass to image2movie)
     22-jul-1997 - S.L.Freeland - add /loop switch in image2movie,/gif call 

   Restrictions:
     User needs write access to $path_http/... area
     Assume html HEADER and TRAILER template files are available
     If desired, a call to eit_prep would be inserted after  call

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//mk_lasteit_movie.pro)


MOVIE_MAKER

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

 PURPOSE:
      This procedure will create EIT movies (IDL Save Sets).
      The user interactively selects a series of FITS images,
      scales them, and saves them.

 CATEGORY:
	WIDGET interface

 CALLING SEQUENCE:
       MOVIE_MAKER

 INPUTS:  None. The default is to list files from todays QKL catalog.
          User can select date and/or LZ catalog as well as other
          selection criteria.

 KEYWORD PARAMETERS: None

 OUTPUTS:
	This routine creates an IDL save set in MOVIE_DIR or current
       directory.

 COMMON BLOCKS:
  common filestuff1,dirspec,flist,index,list7,save_file
  common parms,dateit,dateend,nxit,nyit,waveit,outfit,halfres,sclit,rbin,qres
  common parms2,fresit,fmark,use_qkl,use_lz,new_flist,save_index,numfiles
  common params,date_start,date_end,n_x,n_y,wavel,top_val
  common ratio_par,ratioit,save_195,save_171,s195,s171,mk_ratio,$
         title_start,title_end,stamp_time,mk_diff

 SIDE EFFECTS:
	unsure if common block must be re-initialized after each run.

 RESTRICTIONS:
	Serious memory hog, especially if display movies

 PROCEDURE:
       A widget is displayed. The user uses the various text widgets
       to input selection criterion. The user can display or delete
       any of the selected images. The user selects the scaling procedure,
       setting a minimum value and maximum value, the movie is then
       saved to an IDL save set in movie_dir or current directory.

 MODIFICATION HISTORY:
 	Written by:  J. Newmark 	Date.  Apr. 1996
	Ratio movie change:	D.M. fecit	1996 July 12
       Scaling changes J. Newmark              1996 Jul 17
	Changed RESCALE calls to EIT_RESCALE.	D.M. fecit	1996 Sept. 13
       Significant changes:
       Changed date format in title, added hourglass. J. Newmark 1996 Sept 27
       Add flat fielding, allow inclusion of 1024x1024 images in
         sequences of 512x512. J. Newmark 1996 Sept. 27
       Add Histogram Scaling, changed scaling algorithm to account
         for total exptime, added comments. J. Newmark 1996 Sep 30
       v2.0 1996 October 01
       Cleaned up code, combined scaleit, roiit J. Newmark 1996 Oct 2
       Handle Level-Zero Data - Substantial changes to work with
          files which contain 3D data. J Newmark 1996 Oct 7
       Allow input of image size in blocks if lt 32, list number of
          selected files.  J. Newmark 1996 Oct 08
       v3.0 1996 October 08
       Desensitize SAVE MOVIE button until after images are scaled.
          J. Newmark 1996 December 04
       Change scaling 284 images, too faint for alog10. J. Newmark 1996 Dec 08
       USe fake_missing_blocks,/high for ratio movies J. Newmark 1996 Dec 09
       Change rebin from 512x512 to 2 times. J Newmark 1996 10 Dec
       Add Quarter resolution output. J Newmark 1996 Dec 23
       Remove darks, cal lamps from movies J Newmark 1997 Jan 16
       Add inclusion of 4x4 binned with full field J. Newmark 1997 Jan 28
       Changed/fixed scaling for image totals J. Newmark 1997 Jan 30
       Don't use images with many missing blocks in histogram scale.
                  J. Newmark 1997 Apr 14
       Add ability to make CRUDE difference movies. J. Newmark 1997 Apr 21
	Made default for rebin /SAMPLE.		D.M. fecit	1997 May 23

(See /service/soho-archive/home/solarsoft//soho/eit/idl/anal//movie_maker.pro)


NRL2EIT

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

 PURPOSE:
       To make a NRL formatted EIT FITS file compatible with EIT software.

 CATEGORY:
	FITS processing

 CALLING SEQUENCE:
       eithdr = nrl2eit(nrlhdr)

 INPUTS:  NRL formatted FITS header

 KEYWORD PARAMETERS: none

 OUTPUTS:
	FITS header comptaible with EIT software.

 COMMON BLOCKS: none.

 SIDE EFFECTS: none.

 RESTRICTIONS: none.

 PROCEDURE:
          The only changes needed are to add new keywords to the 
          header which already contains this info. The necessary info
          is grabbed out and re-written.

 MODIFICATION HISTORY:
 	Written by:  J. Newmark 	Date.  Oct 08 1996

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//nrl2eit.pro)


PLOT_EIT_AREA

[Previous Routine] [Next Routine] [List of Routines]
NAME: 
   plot_eit_area
PURPOSE:
   Plot the EIT effective area vs wavelength
CALLING SEQUENCE:
  plot_eit_area		; Will read the era*genx file
  plot_eit_area, area		; area = data structure (in/out)
  plot_eit_area,/hc		; For PostScript output
  plot_eit_area,/one		; On one wavelength scale

  plot_eit_area will produce a four panel plot (unless the /one)
  option is specified.  Use the /open, /entrance, /ccd switches
  to specify which filter wheel case to use (default = /open)
INPUTS:
  None are required.
OPTIONAL INPUT/OUTPUT:
  area		- Data structure from era*.genx
		  If area is undefined, will be read from the
		  era*genx file.
  filein	- By default, the EIT effective area file is read:
		    concat_dir('SSW_EIT_RESPONSE','era*.genx')
		  Use filein='your_file_name' to override the default.
OPTIONAL INPUT KEYWORDS:
  /one		- If set, put all four sectors on one graph.
  /linear	- If set, plot the ordinance on a linear scale (def. is log)

  /open	- If set, plot the open filterwheel case
  /entrance	- If set, plot the entrance filterwheel case
  /ccd		- If set, plot the ccd filterwheel case
  (None)	- If open, entrance and ccd area all 0, plot all cases.

  /notime	- If set, don't put the time on the PostScript plot.
  /hc		- If set, send to the PostScript printer
  /noprint	- If both /hc and /noprint are set, create PostScript file 
		  but do not print it.
HISTORY:
  12-Jun-95, J. R. Lemen (LPARL), Written.

(See /service/soho-archive/home/solarsoft//soho/eit/idl/response//plot_eit_area.pro)


PLOT_EIT_ENTRANCE

[Previous Routine] [Next Routine] [List of Routines]
 NAME: 
   plot_eit_entrance
 PURPOSE:
   Plot the comparison between computed EIT entrance filter
   and Jean-Pierre Delaboudiniere measured values.
 CALLING SEQUENCE:
   plot_eit_entrance
   plot_eit_entrance,/hc	; Send to the PostScript printer
 HISTORY:
   10-Jun-95, J. R. Lemen (LPARL), Written.

(See /service/soho-archive/home/solarsoft//soho/eit/idl/response//plot_eit_entrance.pro)


PLOT_EIT_FILTERS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  plot_eit_filters
 PURPOSE:
  Plot the transmissions of the EIT filters
 CALLING SEQUENCE:
  plot_eit_filters
  plot_eit_filters,filters		; filters is a data structure
 INPUTS:
   None are required.
 OPTIONAL INPUT/OUTPUT:
   filters	- Data structure written to era*genx
		  If filters is undefined, plot_eit_filters
		  will read the era*genx file to obtain filters.
   filein	- By default, the EIT effective area file is read:
		    concat_dir('SSW_EIT_RESPONSE','era*.genx')
		  Use filein='your_file_name' to override the default.
 OPTIONAL INPUT KEYWORDS:
   /notime	- If set, don't put the time on the PostScript plot.
   /hc		- If set, send to the PostScript printer
   /noprint	- If /hc and /noprint are set, create but don't print 
		  PostScript file.
 MODIFICATION HISTORY:
 10-Jun-95, J. R. Lemen (LPARL), Written.

(See /service/soho-archive/home/solarsoft//soho/eit/idl/response//plot_eit_filters.pro)


PLOT_EIT_FLUX

[Previous Routine] [Next Routine] [List of Routines]
NAME:
  plot_eit_flux
PURPOSE
  Plot the EIT response curves
CALLING SEQUENCE:
  plot_eit_flux
  plot_eit_flux, /hc		; To make hardcopy
INPUTS:
  None.
OPTIONAL INPUT KEYWORDS:
  /open	- Set to plot the Filter wheel Open case
  /entrance	- Set to plot the Filter wheel entrance-like case
  /ccd		- Set to plot the Filter wheel CCD-like case
		  (if none of these are specified, all will be plotted).
  ccd_gain	- The assumed CCD_gain in e-/DN
  /noverbose	- If set, suppress informational messages.
  /hc		- If set, send plot to PostScript printer
  filein	- To specify explicitly the ere*genx file
		  containing the EIT response curves.
OUTPUTS:
  None.
CALLS:
  EIT_FLUX to read the response file.
HISTORY:
  12-jun-95, J. R. Lemen (LPARL), Written.  
               test version  -- just reads the ere*genx file directly.

(See /service/soho-archive/home/solarsoft//soho/eit/idl/response//plot_eit_flux.pro)


PLOT_EIT_MIRROR

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   plot_eit_mirror
 PURPOSE:
   Plot the EIT mirror reflectivity
 CALLING SEQUENCE:
   plot_eit_mirror, mirror
   plot_eit_mirror, code=2, /notime, /hc, yra=[1.e-6,.1]
   plot_eit_mirror, /extend_range, filein=filein
 OPTIONAL INPUT/OUTPUT:
   mirror	- Data structure from the EIT effective area file (era*genx)
		  If mirror is not defined, the era*genx file will be read.
   filein	- By default the EIT effective area file is read:
		    concat_dir('SSW_EIT_RESPONSE','era*.genx')
		  Use filein='your_file_name' to override the default.
 OPTIONAL INPUT KEYWORDS:
   code	0: Plot measurements and model
   		1: Plot ratio of model/measurements
   		2: Same as 0, but also over plot corrected model (Default)
   extend_range If set, extend the wavelength ranges by +/- 50 A
   notime	- If set, do not put the time on the plot
   yrange	- Vector of length 2 equal to desired min and max y-axis range
   /hc		- If set, send to PostScript printer
   /noprint    - If both /hc and /noprint are set, create PostScript file
		  but do not print it
   /noverbose	- Don't give the explanations when running.
 CALLS:
   eit_witness to obtain the witness mirror data.
 HISTORY:
  10-Jun-95, J. R. Lemen (LPARL), Written.

(See /service/soho-archive/home/solarsoft//soho/eit/idl/response//plot_eit_mirror.pro)


PLOT_EIT_RESPONSE

[Previous Routine] [Next Routine] [List of Routines]
NAME:
  plot_eit_response
PURPOSE:
  Plot the various EIT response parameters
CALLING SEQUENCE:
  .run plot_eit_response
HISTORY:
  10-Jun-95, J. R. Lemen (LPARL), Written.

(See /service/soho-archive/home/solarsoft//soho/eit/idl/response//plot_eit_response.pro)


QMENU

[Previous Routine] [Next Routine] [List of Routines]
    QMENU puts up a one-column scrolling menu on an X-window terminal.

DESCRIPTION:
    QMENU puts up a one-column scrolling menu on an X-window terminal.
    This routine uses a list widget for the menu.
    It replaces BIGWMENU which did not scroll.

CALLING SEQUENCE:
    sel_index = qmenu( strings, title=[...], init=[...] )
       
     
ARGUMENTS (I=input, O=output, []=optional)
    strings    I   1-D arr  str        A 1-D array of option strings
                                       (and possibly a title too).
    title     [I]  keyword  int        Index of the element in STRINGS
                                       which will be the title.
    init      [I]  keyword  int        Index of the element in STRINGS
                                       which will be the default choice.
                                       of the menu window.
    sel_index  O   scalar   int        Index of the selected option.

WARNINGS:
    1. A value of -1 is returned in the event of any error-conditions.

EXAMPLE:
    sel_index = qmenu(['title','option 1','option 2'],title=0)
#
COMMON BLOCKS:  none.

LIBRARY CALLS:  none.

PROCEDURE:
    If this routine is invoked from a non-X-window terminal, then put
    out a message and exit.  Check if a valid argument was supplied
    for STRINGS, if not then put out a message and exit.  Determine
    what will be the title of the menu (if any) and what will be the
    options.  

    Calculate an appropriate X-size for the menu window.  This does
    not currently work due to the List Widget's insistance on 
    setting the width based on the items in the list, w/out concern
    for the title's width.

    Put up the menu window, then monitor and respond to mouse activity.  
    Exit when a mouse button is pressed and the option is not blank.

REVISION HISTORY:
	Created 23-Dec-1992 Peter Kryszak:
		parameter checking from Ewing's BIGQMENU
		use of IDL's scrolling list widget from Turpie's WDGM

 Prgmr    SPR    Date       Reason
 -------- ------ ---------- -------------------------------------------
 Ewing    10619  Feb 25 93  Supply a left margin.
 Turpie   unknwn Mar 19 93  Added large nonproportional font,
                            fixed inconsistencies in margins.
  SPR 11127 06 Jul 1993  IDL for Windows compatability. J. Newmark
.TITLE
Routine QMENU

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//qmenu.pro)


READ_EIT

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

   Purpose: read eit image(s) into 2D or 3D array & map header->structure 

   Input Parameters:
      files - FITS file name(s) to read
      
   Output Parameters:
      index - IDL structure containing  FITs information (vector)
      data  - 2D or 3D array of EIT images
      nodata - switch, if set, only read and map headers (faster)

   Calling Sequence:
      read_eit, files, index , /nodata		 ; only read headers
      read_eit, files, index, data		 ; return 2D or 3D cube
      read_eit, files, index, data, outsize=256 ; rebin all DATA to outsize

   Keyword Parameters:
      outsize (input)  - output size (rebinning) - scalar size or [x,y]
      header  (output) - FITS header of last file in filelist
      comment (output) - COMMENT records for all input files 
      ccnts   (output) - used with COMMENT in call to 'mreadfits_info'

   History:
      27-apr-1996 S.L.Freeland 
       9-May-1996 S.L.Freeland - pass NODATA through to mreadfits
      24-May-1996 S.L.Freeland - update MJD tag
      20-aug-1996 S.L.Freeland - fill in expdur tag (exptime+shutclose)
      22-oct-1996 S.L.Freeland - add 3D file ("lz") support
      23-oct-1996 S.L.Freeland - use anytim(ints,out_style='utc_int')
                                 (in place of anytim2utc(stringtime) )
      10-dec-1996 S.L.Freeland - protect against old QKL (no SHUTTER CLOSE...)
      14-jan-1997 S.L.Freeland - update DATE_OBS -> CCSDS (soho 'standard')
                                 add INITIALIZE keyword in eit_fxpar 3D call
      15-jan-1997 S.L.Freeland - add OUTSIZE (pass to mreadfits)
      28-jan-1997 S.L.Freeland - update for enhanced mreadfits (some 3D work)
                                 (removes single 3D file restriction)
      11-apr-1997 S.L.Freeland - avoid carrying large coment tag around
      12-apr-1997 S.L.Freeland - add documentation, COMMENT and CCNTS output
       7-may-1997 S.L.Freeland - extract non-3D "COMMENT KEYWORDS"
                                 (protect against SHUTTER CLOSE ss problem?)
      29-may-1997 S.L.Freeland - make new stuff work for single input file!

   Method:
      use mreadfits.pro for reading and structure mapping
   
   Restrictions:

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//read_eit.pro)


READ_EITS

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

   Purpose: read of one or multiple EIT files

   Input: 
      eitfiles - input file array

   Output Parameters:
      odata   - data array - 2D or 3D

   Calling Sequence:
      read_eits, eitfiles

   History:
      15-Jan-1996 (SLF) - orig LPARL access of EIT quicklook data
      17-jan-1996 (SLF) - allow multiple reads (cube returned)
      29-jan-1996 (SLF) - use index file for summary information
      18-feb-1996 (SLF) - broke the info part out

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//read_eits.pro)


SXT2EIT

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

   Purpose: align SXT image to EIT

   Calling Sequence: 
      sxtaligned=sxt2eit(sxtfits, eitfits)
      
   History: proto-version, 23-jan-1996

   Restrictions:
      only full sun EIT and SXT , simple FITS for now

(See /service/soho-archive/home/solarsoft//soho/eit/idl/util//sxt2eit.pro)