
PRO eis_get_hdr_struc, data, hdrstr

;+
; NAME
;
;    EIS_GET_HDR_STRUC
;
; PROJECT
;
;    HINODE/EIS
;
; EXPLANATION
;
;    This routine extracts selected information from an EIS data header 
;    into a structure. The particular fields taken from the header are
;    defined in the file $SSW/hinode/eis/idl/atest/pyoung/headcat_tags.txt.
;
; INPUTS
;
;    DATA   An EIS data object.
;
; OUTPUTS
;
;    HDRSTR  A structure containing header information extracted from the
;            EIS data object.
;
; HISTORY
;
;    Ver.1, 13-Jan-2007, Peter Young
;    Ver.2, 30-Jan-2007, Peter Young
;        Now points to SSW for the headcat_tags.txt file, so no need for
;        environment variable.
;    Ver.3, 3-Feb-2007, Peter Young
;        Added additional tags that describe windows.
;    Ver.4, 4-Dec-2007, Peter Young
;        Location of headcat_tags.txt file has changed.
;-


tag_file=concat_dir(getenv('SSW'),'hinode')
tag_file=concat_dir(tag_file,'eis')
tag_file=concat_dir(tag_file,'idl')
tag_file=concat_dir(tag_file,'atest')
tag_file=concat_dir(tag_file,'pyoung')
tag_file=concat_dir(tag_file,'headcat_tags.txt')

chck=file_search(tag_file)
IF chck[0] EQ '' THEN BEGIN
  print,'% EIS_GET_HDR_STRUC: headcat_tags.txt file not found. Please send following'
  print,'  information to Peter Young (p.r.young@rl.ac.uk) for bug-checking:'
  print,''
  print,'Searched for:'
  print,tag_file
  return
ENDIF


openr,lin,tag_file,/get_lun
tags=''
desc=''
str1=''
str2=''
WHILE eof(lin) NE 1 DO BEGIN
  readf,lin,format='(a8,3x,a1)',str1,str2
  tags=[tags,trim(str1)]
  desc=[desc,str2]
ENDWHILE
free_lun,lin
tags=tags[1:*]
desc=desc[1:*]

;
; Note: it's necessary to create a unique name for a structure, so I use the
; trick below
;
strname='s'+trim(long(systime(1)))
create_struct,hdrstr,strname,tags,desc

hdr_obj=data->gethdr()
text = hdr_obj->getbte_hdr()
;obj_destroy,hdr_obj

ntags=n_elements(tags)
FOR j=0,ntags-1 DO BEGIN
  index=get_tag_index(hdrstr,tags[j])
  hdrstr.(index)=fxpar(text,strupcase(tags[j]))
ENDFOR

;
; add additional tags
;
hdrstr=add_tag(temporary(hdrstr),'','tdetxw')
hdrstr=add_tag(temporary(hdrstr),'','tdetx')
hdrstr=add_tag(temporary(hdrstr),'','tdety')

tdetxw=''
tdetx=''
tdety=''
FOR j=1,25 DO BEGIN
  chck=fxpar(text,'TDETXW'+trim(j))
  IF chck GT 0 THEN BEGIN
    IF tdetxw EQ '' THEN tdetxw=trim(chck) ELSE tdetxw=tdetxw+' '+trim(chck)
                                ;
    chck=fxpar(text,'TDETX'+trim(j))
    IF tdetx EQ '' THEN tdetx=trim(chck) ELSE tdetx=tdetx+' '+trim(chck)
     ;
    chck=fxpar(text,'TDETY'+trim(j))
    IF tdety EQ '' THEN tdety=trim(chck) ELSE tdety=tdety+' '+trim(chck)
     ;
  ENDIF
ENDFOR
hdrstr.tdetxw=tdetxw
hdrstr.tdetx=tdetx
hdrstr.tdety=tdety


END
