
PRO eis_write_mask_spec, spec, outfile=outfile

;+
; NAME:
;     EIS_WRITE_MASK_SPEC
;
; PURPOSE:
;     Takes an EIS mask spectrum structure and writes it to a text file.
;
; CATEGORY:
;     Hinode; EIS; output; mask; spectra.
;
; CALLING SEQUENCE:
;     EIS_WRITE_MASK_SPEC, Spec
;
; INPUTS:
;     Spec:  An IDL structure in the format returned by EIS_MASK_SPECTRUM.
;
; OPTIONAL INPUTS:
;     Outfile:  The name of the file to be written. If not specified, the
;               'mask_spectrum.txt' is written.
;
; OUTPUTS:
;     Creates a text file 'mask_spectrum.txt' containing the contents of
;     the structure SPEC.
;
; EXAMPLE:
;     IDL> eis_write_mask_spec, swspec
;
; MODIFICATION HISTORY:
;     Ver.1, 24-Jun-2022, Peter Young
;-


IF n_params() LT 1 THEN BEGIN
  print,'Use:  IDL> eis_write_mask_spec, spec [, outfile= ]'
  return
ENDIF 


IF n_tags(spec) EQ 0 THEN BEGIN
  message,/info,/cont,'The input SPEC must be a structure returned by eis_mask_spectrum. Returning...'
  return
ENDIF 


IF n_elements(outfile) EQ 0 THEN outfile='mask_spectrum.txt'

openw,lout,outfile,/get_lun

IF max(spec.wvl) LT 230. THEN chan='SW' ELSE chan='LW'
printf,lout,format='("CHANNEL: ",a2)',chan
printf,lout,format='("DATE_OBS: ",a19)',spec.date_obs
printf,lout,format='("YIP: ",i4)',spec.yip
printf,lout,format='("QUAL_MAX: ",i6)',spec.qual_max
printf,lout,format='("REFILL: ",i1)',spec.refill
printf,lout,format='("SHIFT: ",i1)',spec.shift
printf,lout,format='("SUM: ",i1)',spec.sum
printf,lout,format='("CALIB: ",i2)',spec.calib
printf,lout,format='("SLIT_IND: ",i1)',spec.slit_ind
printf,lout,format='("MISSING: ",f10.1)',spec.missing
printf,lout,'SUBTRACT_L1NAME: '+trim(spec.subtract_l1name)
printf,lout,format='("FILE CREATED: ",a20)',systime()

n=n_elements(spec.wvl)
FOR i=0,n-1 DO BEGIN
  printf,lout,format='(f10.4,2e12.3,i6)',spec.wvl[i],spec.int[i],spec.err[i],spec.qual[i]
ENDFOR 

free_lun,lout

END
