;---------------------------------------------------------------------------
; Document name: SUM_SHOW_HEADER.PRO
; Created by:    Dietmar Germerott, MPS Lindau, June 23, 2010
;
; Last Modified: Wed Jun 23 22:41:06 2010 (GERMEROTT.nospam(at)linmpi.mpg.de)
;---------------------------------------------------------------------------
;
FUNCTION sum_string_head, inheader, full=full, errmsg=errmsg
;+
; PROJECT:
;       SOHO/SUMER
;
; NAME:
;       SUM_STRING_HEAD()
;
; PURPOSE: 
;       Return the decoded header inforamtion as string array
;
; CATEGORY:
;       
; 
; EXPLANATION:
;       
; SYNTAX: 
;       Result = sum_string_head()
;
; EXAMPLES:
;       header_as_string=sum_string_head(header_data)
;
; INPUTS:
;       inheader - the SUMER binary header
;
; OPTIONAL INPUTS: 
;       None.
;
; OUTPUTS:
;       None.
;
; OPTIONAL OUTPUTS:
;       None.
;
; KEYWORDS: 
;       full - return more information.
;       errmsg - return processinf status.
;
; COMMON:
;       None.
;
; RESTRICTIONS: 
;       SUMER header data as bytarr 92
;
; SIDE EFFECTS:
;       None.
;
; HISTORY:
;       Version 1, June 23, 2010, Dietmar Germerott. Written
;
; CONTACT:
;        (germerott at linmpi.mpg.de)
;-
;

   ON_ERROR, 2
   msg_inproc = ''
   errmsg = ''
   tmphead = ''
   rethead = ''
   
   contflag = 1
   i = 0
   
   IF N_ELEMENTS(inheader) EQ 0 THEN GOTO, usage_label
   
   PRINT,' Decoding Header'
   dec_header = sum_image_head(inheader, errmsg=errmsg)
   
   IF errmsg NE '' THEN GOTO, handle_error
   
   tmp_num = N_ELEMENTS(dec_header) 

   
   WHILE (i LT tmp_num) DO BEGIN
     line = ' IMAGE FORMAT               ='+string(format='(i3)', dec_header(i).sstypimg)
     tmphead = line
     line = ' POP/UDP NUMBER             ='+string(format='(i3)', dec_header(i).sspopudp)
     tmphead = [tmphead,line]
     line = ' SLIT NUMBER                ='+string(format='(i3)', dec_header(i).ssslitn)
     tmphead = [tmphead, line]
     line = ' EXPOSURE TIME (sec)        ='+string(format='(f8.2)', dec_header(i).ssexptim)
     tmphead = [tmphead, line]
     line = ' EXPOSURE START TIME        = '+dec_header(i).utc_ecs
     tmphead = [tmphead, line]
     line = ' REFERENCE PIXEL            ='+string(format='(i5)', dec_header(i).ssrefpix)
     tmphead = [tmphead, line]
     line = ' RELATIVE REFPIXEL (Det B)  ='+string(format='(i5)', dec_header(i).relrefpix)
     tmphead = [tmphead, line]
     line = ' WAVELENGTH (Angstroem)     ='+string(format='(f9.3)', dec_header(i).sswavel)
     tmphead = [tmphead, line]
     line = ' HIGH VOLTAGE (V)           ='+string(format='(f7.1)', dec_header(i).s_mcpvf)
     tmphead = [tmphead, line]
     line = ' MCP CURRENT (uA)           ='+string(format='(f7.1)', dec_header(i).simcpif)
     tmphead = [tmphead, line]
     line = ' TOTAL COUNTS IN IMAGE      ='+string(format='(i8)', dec_header(i).ssimgtot)
     tmphead = [tmphead, line]
     line = ' FLATFIELD CORRECTION       = '+dec_header(i).ssff_t
     tmphead = [tmphead, line]
     line = ' DETECTOR                   = '+dec_header(i).ssdet_t
     tmphead = [tmphead, line]
     line = ' BRIGHTEST PIXEL ADDRESS Y  ='+string(format='(i5)', dec_header(i).ssbpaddy)
     tmphead = [tmphead, line]
     line = ' BRIGHTEST PIXEL ADDRESS Z  ='+string(format='(i5)', dec_header(i).ssbpaddz)
     tmphead = [tmphead, line]
     line = ' BRIGHTEST PIXEL COUNTS     ='+string(format='(i7)', dec_header(i).ssbpcnts)
     tmphead = [tmphead, line]
     line = ' COMPRESSION SCHEME         ='+string(format='(i4)', dec_header(i).sscomprm)
     tmphead = [tmphead, line]
     line = ' COMPRESSION PARAMETER 1    ='+string(format='(i4)', dec_header(i).sscompp1)
     tmphead = [tmphead, line]
     line = ' COMPRESSION PARAMETER 2    ='+string(format='(i4)', dec_header(i).sscompp2)
     tmphead = [tmphead, line]
     line = ' COMPRESSION PARAMETER 3    ='+string(format='(i4)', dec_header(i).sscompp3)
     tmphead = [tmphead, line]
     line = ' POINTING Y (E/W) (arcsec)  ='+string(format='(f7.2)', dec_header(i).p_suny)
     tmphead = [tmphead, line]
     line = ' POINTING Z (S/N) (arcsec)  ='+string(format='(f7.2)', dec_header(i).p_sunz)
     tmphead = [tmphead, line]
     line = ' ROTCOMP TIME (sec)         ='+string(format='(f7.2)', dec_header(i).ssrotcomp)
     tmphead = [tmphead, line]
     line = ' EXPLOSIVE EVENT TRIGGER    ='+string(format='(f7.2)', dec_header(i).sseetrig)
     tmphead = [tmphead, line]
     line = ' IMAGE COUNTER              ='+string(format='(i6)', dec_header(i).ssimgcnt)
     tmphead = [tmphead, line]
     line = ' BINNING SPEC (Y)           ='+string(format='(i5)', dec_header(i).ssbinny)
     tmphead = [tmphead, line]
     line = ' BINNING SPAT (Z)           ='+string(format='(i5)', dec_header(i).ssbinnz)
     tmphead = [tmphead, line]
     line = ' X-EVENTS                   ='+string(format='(f7.1)', dec_header(i).x_evcnt)
     tmphead = [tmphead, line]
     line = ' Y-EVENTS                   ='+string(format='(f7.1)', dec_header(i).y_evcnt)
     tmphead = [tmphead, line]
     line = ' ADMINISTRATION COUNTER     ='+string(format='(i6)', dec_header(i).ssadmcnt)
     tmphead = [tmphead, line]
     line = ' ACCUMULATIVE IMG COUNTER   ='+string(format='(i6)', dec_header(i).ssacimgc)
     tmphead = [tmphead, line]
     line = ' NUMBER OF STEPS (Spec)     ='+string(format='(i6)', dec_header(i).ssstepn)
     tmphead = [tmphead, line]
     line = ' STEP SIZE (Spec)           ='+string(format='(i6)', dec_header(i).ssstepsz)
     tmphead = [tmphead, line]
     line = ' MC2 - POSITION (Steps)     ='+string(format='(i6)', dec_header(i).ssmc2pos)
     tmphead = [tmphead, line]
     line = ' MC3 - POSITION (Steps)     ='+string(format='(i6)', dec_header(i).ssmc3pos)
     tmphead = [tmphead, line]
     line = ' MC4 - POSITION (Steps)     ='+string(format='(i6)', dec_header(i).ssmc4pos)
     tmphead = [tmphead, line]
     line = ' MC8 - POSITION (Steps)     ='+string(format='(i6)', dec_header(i).ssmc8pos)
     tmphead = [tmphead, line]
     line = ' MC6 - POSITION (Steps)     ='+string(format='(i6)', dec_header(i).ssmc6pos)
     tmphead = [tmphead, line]
     line = ' MISSING DATA IN IMAGE      ='+string(format='(i3)', dec_header(i).mdu)
     tmphead = [tmphead, line]
     line = ' INCORRECT DATA TRANSMITION ='+string(format='(i3)', dec_header(i).qac)
     tmphead = [tmphead, line]
     
     IF KEYWORD_SET(full) THEN BEGIN
       
       line = ' Additional Information:'
       tmphead = [tmphead, line]
       line = ' DATA SYNC 1                ='+string(format='(i4)', dec_header(i).SSYNC0)
       tmphead = [tmphead, line]
       line = ' DATA SYNC 2                ='+string(format='(i4)', dec_header(i).SSYNC1)
       tmphead = [tmphead, line]
       line = ' IMAGE RECORD ID            ='+string(format='(i4)', dec_header(i).img_rec)
       tmphead = [tmphead, line]
       line = ' HIGH VOLTAGE RAW           ='+string(format='(i4)', dec_header(i).s_mcpv)
       tmphead = [tmphead, line]
       line = ' MCP CURRENT RAWVALUE       ='+string(format='(i4)', dec_header(i).simcpi)
       tmphead = [tmphead, line]
       line = ' MC1 - ERROR                ='+string(format='(i4)', dec_header(i).ssmc1err)
       tmphead = [tmphead, line]
       line = ' MC2 - ERROR                ='+string(format='(i4)', dec_header(i).ssmc2err)
       tmphead = [tmphead, line]
       line = ' MC3 - ERROR                ='+string(format='(i4)', dec_header(i).ssmc3err)
       tmphead = [tmphead, line]
       line = ' MC4 - ERROR                ='+string(format='(i4)', dec_header(i).ssmc4err)
       tmphead = [tmphead, line]
       line = ' MC5 - ERROR                ='+string(format='(i4)', dec_header(i).ssmc5err)
       tmphead = [tmphead, line]
       line = ' MC6 - ERROR                ='+string(format='(i4)', dec_header(i).ssmc6err)
       tmphead = [tmphead, line]
       line = ' MC8 - ERROR                ='+string(format='(i4)', dec_header(i).ssmc8err)
       tmphead = [tmphead, line]
       line = ' FLATFIELD RAW VALUE        ='+string(format='(i4)', dec_header(i).ssff)
       tmphead = [tmphead, line]
       line = ' DETECTOR TYPE RAW          ='+string(format='(i4)', dec_header(i).ssdettyp)
       tmphead = [tmphead, line]
       line = ' INTER INSTR STATUS         ='+string(format='(i4)', dec_header(i).ssintsta)
       tmphead = [tmphead, line]
       line = ' FLIGHT REQUEST DATE        ='+string(format='(i4)', dec_header(i).ssfldate)
       tmphead = [tmphead, line]
       line = ' FLIGHT REQUEST NUMBER      ='+string(format='(i4)', dec_header(i).ssflreqn)
       tmphead = [tmphead, line]
       line = ' X-EVENT RAW VALUE          ='+string(format='(i6)', dec_header(i).ssxcnt)
       tmphead = [tmphead, line]
       line = ' X-EVENT RAW VALUE          ='+string(format='(i6)', dec_header(i).ssycnt)
       tmphead = [tmphead, line]
       line = ' SUN Y RAW VALUE            ='+string(format='(i6)', dec_header(i).sssuny)
       tmphead = [tmphead, line]
       line = ' SUN Z RAW VALUE            ='+string(format='(i6)', dec_header(i).sssunz)
       tmphead = [tmphead, line]
       line = ' START TIME IN TAI          ='+string(format='(f15.3)', dec_header(i).tai)
       tmphead = [tmphead, line]
       line = ' FILE ID OF RAWTM           ='+string(format='(i6)', dec_header(i).fid)
       tmphead = [tmphead, line]
       line = ' FILE POINTER TO TM         ='+string(format='(i8)', dec_header(i).fptr)
       tmphead = [tmphead, line]
       line = ' LOCATION NUMBER            ='+string(format='(i4)', dec_header(i).ssloc)
       tmphead = [tmphead, line]
       line = ' TARGET NUMBER              ='+string(format='(i6)', dec_header(i).sstarget)
       tmphead = [tmphead, line]
       line = ' STATUS                     ='+string(format='(i6)', dec_header(i).ssstat)
       tmphead = [tmphead, line]
       line = ' DETECTOR STATUS            ='+string(format='(i4)', dec_header(i).ssdetsta)
       tmphead = [tmphead, line]
       line = ' INTER INSTR DZ             ='+string(format='(i4)', dec_header(i).ssiidz)
       tmphead = [tmphead, line]
       line = ' INTER INSTR DY             ='+string(format='(i4)', dec_header(i).ssiidy)
       tmphead = [tmphead, line]
       line = ' MOTOR CONTROLER ERROR      ='+string(format='(i4)', dec_header(i).ssmcerr)
       tmphead = [tmphead, line]
       line = ' OPERATIONS COUNTER         ='+string(format='(i4)', dec_header(i).ssopcnt)
       tmphead = [tmphead, line]
               
      ENDIF
      
      IF i EQ 0 THEN rethead = tmphead ELSE rethead = [[rethead],[tmphead]]
      
      i = i+1
      
   ENDWHILE


   RETURN, rethead
   
usage_label:
   
   PRINT,' '
   PRINT,' Usage of SUM_SHOW_HEADER:'
   PRINT,'    SUM_STRING_HEAD, header_data [,/full]'
   PRINT,' '
   PRINT,' Where header_data is the binary SUMER Image header'
   PRINT,' with at least 92 Bytes'
   PRINT,' '
   RETURN, rethead   
   
handle_error:
   IF errmsg EQ '' THEN errmsg = msg_inproc
   MESSAGE,errmsg,/cont
   RETURN, rethead
   
END


;---------------------------------------------------------------------------
; End of 'SUM_SHOW_HEADER.PRO'.
;---------------------------------------------------------------------------
