EIT Software Listings

 

anal
obsolete
response
util

 

Previous Routine
Next Routine

 

Listing of $SSW/soho/eit/idl/anal/cat_to_text.pro

 


;+
; 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
;		1997 April 07, einfalt - output SCI_OBJ instead of IP steps.
;		1997 Aug 14 - einfalt - added ip steps after thres
;
; CONTACT     : eit@xanado.nascom.nasa.gov
;-

function cat_to_text, entry, short=short, lz=lz, web=web

; if web version put filename first
   if keyword_set(web) then begin
     filename = strupcase(entry.file_name) 
     text =  filename+'   '
   endif else text=''
 
   ; Convert EIT time to CDS time

   time = {mjd:entry.obs_time.mjd+49718, time:entry.obs_time.sec*1000L}

   vms_time = anytim2utc( utc2tai(time), /vms)		; time in vms format
   text = text+ strmid(vms_time,7,4) + '-' + strmid(vms_time,3,3) + '-' + $
	       	string(strmid(vms_time,0,2),'(i2.2)') + ' ' +$
		strmid(vms_time,12,8) 

   exptime = float(entry.exp_time)		; so can divide by 10. later

   version_no = (ishft(entry.version,-4) and '0f'x) + $	   ; convert version #
		(entry.version and '0f'x)/10.		   ; to major.minor

   w_ver_2 = where(version_no ge 2.0,count)
   if count gt 0 then exptime(w_ver_2) = exptime(w_ver_2) /10.

   expos_time = string(exptime, '(f6.1)') + ' s'
   text = text + expos_time 

   ; For this code only use the 1st wave
   waves   = fix(entry.wave(0))
   w_waves = where(waves ne 0, nwaves)
   if nwaves gt 0 then waves(w_waves) = waves(w_waves) + 170
   sec_wave=strtrim(fix(waves),2)

   w_info=where(entry.n_wave gt 1,num_info)
   if num_info gt 0 and not keyword_set(short) then begin
       for i=0,num_info-1 do begin
           numw=entry(w_info(i)).n_wave
           for j=1,numw-1 do sec_wave(w_info(i))=sec_wave(w_info(i))+','+$
              strtrim(fix(entry(w_info(i)).wave(j))+170,2)
       endfor
   endif

   filter = replicate('?      ', n_elements(entry.filter))

   ; old way   filt_str = ['Clear  ', 'Al sup ', 'Al+2 ','Al+1 ', 'Al inf ']
   filt_str = ['Al+1 ', 'Blk Est',  'Clear  ', 'Blk Wst', 'Al+2 ' ]
   w_filter = where(entry.filter ge 0 and entry.filter le 4, n_filt)
   if n_filt gt 0 then filter(w_filter) = filt_str(entry(w_filter).filter)
   
   sec_filt = sec_wave + '::' + filter 
   text = text + ' ' + sec_filt 

;   nsize =  strtrim(fix(entry.nx_sum)>1,2) + 'x' + $
   nsize =  string(fix(entry.nx_sum)>1,'(i2)') + 'x' + $
		'('+string(fix(entry.nx),'(i2)') + ',' + $
		string(fix(entry.ny),'(i2)') +')'
   text = text + nsize

   readout = '@(' + string(entry.low_x, '(i4)')  + ',' + $
	     string(entry.low_y, '(i4)')  + '/' + $
	     string(entry.high_x, '(i4)') + ',' + $
	     string(entry.high_y, '(i4)') + ')'
   text = text + ' ' + readout 

   
   if keyword_set(lz) then begin
        n_info=replicate('',n_elements(entry.n_repeat))
        w_info=where(entry.n_repeat gt 0,num_info)
        if num_info gt 0 then $
	   if keyword_set(short) then n_info(w_info)=$
              		strtrim(entry(w_info).n_repeat,2)+'x ' $
	   else n_info(w_info) = strtrim(entry(w_info).n_repeat,2)+'img '

        text=text+' '+ n_info
   endif
   ; Don't make the text line too long so return now.

   if keyword_set(short) then return,text


   ; Note: the 1st ip is really "noop" not null

    ip = ['','/badcol','/intmin','/rt1bit','/pixsum','/radspk','/sqrt', $
          '/Pyrmid', '/intsum', '/intdf1', '/intdf2', '/nocomp', '/rice',   $
	  '/adct', '/dcmp', '/synstp', '/intrBP', '/intrDP', $
	  '/notuse', '/debug', '/headr', '/Dbug0', '/Dbug1', '/Dbug2', $
	  '/Dbug3', '/mask', '/nomask', '/noocc', '/Dbug4', '/InvMsk', $
	  '/NoInvM', '/DetArr', '/resetB', '/clrROI', '/thresh','/ImBuf', $
	  '/SumBuf1','/ClrBuf1','/AddSum1','/SubSum1',$
	  '/SumBuf2','/ClrBuf2','/AddSum2','/SubSum2','/Buf1-2',$
	  '/Dbug5','/Dbug6', '/HC0', '/HC1', '/HC2', '/HC3', $
	  '/HC4', '/HC5', '/HC7', '/HC7', '/HC7', '/HC9'  ]

; 1997/4/7 - some shorter names
;   lp = [ 	' Req Periph', ' M1 Measure', ' Wobb FP 1', ' Wobb FP 2', $
;		' Dark', ' FP C+C', ' contin', ' FP Scan', ' Normal', ' Dump', $
;		' grd-perph', ' ld perph', ' Def Param', ' Sect Seq', $
;		' FP, Coord', ' Concurr', ' Cal lmp', ' Schd Mech', $
;		' inter-sum', ' Seq Imag', ' Op/Cl M1']

   lp = [ 	' Req Periph', ' M1 Measure', ' Wobb FP 1', ' Wobb FP 2', $
		' D', ' FP C+C', ' RO', ' FP Scan', ' N', ' Dump', $
		' grd-perph', ' ld perph', ' Def Param', ' PW', $
		' FP, Coord', ' Concurr', ' C', ' Schd Mech', $
		' SUM', ' Seq Imag', ' Op/Cl M1']

    ; The entry.leb_proc tag has 8 bytes in it, that's why divide by 8
   process = ip(entry.leb_proc)  &  n_proc = n_elements(process(0,*))
   proc_step = reform(process(0,*),n_proc)
   for i = 1, 7 do proc_step =  proc_step + reform(process(i,*),n_proc) 
   proc_step = strmid(proc_step,1,max(strlen(proc_step)))

; 1997/04/07 - to make room for the more useful SCI_OBJ
;   if keyword_set(lz) then leb_list = proc_step else $

   if keyword_set(lz) then begin		; the blanks below leave room
						; for multi-image count, if any
	leb_list = string(entry.sci_obj) 
        not_multi = where(entry.n_repeat eq 0, count)	; these are singles
        if count gt 0 then leb_list(not_multi) = '    ' + leb_list(not_multi)
   endif else leb_list = lp(entry.program-1) + '::' + proc_step

   text = text + leb_list

   if not keyword_set(web) then begin
     filename = strupcase(entry.file_name) 
     text = text + '  ' + filename
   endif

return, text
end


Web curator: Frédéric Auchère
Responsible NASA official: Joseph B. Gurman, Facility Scientist, Solar Data Analysis Center
joseph.b.gurman@gsfc.nasa.gov
+1 301 286-4767
NASA Goddard Space Flight Center
Solar Physics Branch / Code 682

Last revised: - Wed May 9 21:44:57 2007- F. Auchère