PRO PLOT_BS_PES2, hk, single=single, noconvert=noconvert, autoscale=autoscale
;
;   Plots boresight and PES-A values
;
; 10/23/98	RAH	Corrected PES-Y conversion formula
; @(#)plot_bs_pes2.pro	1.3 10/23/98 :LASCO IDL LIBRARY
;

; open two output ASCII files

openu, LUN, 'lasco_pointing',/append,/GET_LUN
openu, LUN2, 'basic_pointing',/append,/GET_LUN


sz=size(hk)
IF (sz(sz(0)+1) ne 1) THEN BEGIN
   print,'%%PLOT_BS_PES, Error:  HK array not in bytes'
   return
ENDIF

offset=12		;   offset in bytes to beginning of HK packet
;
IF (!D.NAME EQ 'PS') THEN BEGIN
   DEVICE, /PORTRAIT, XOFFSET=0.2, YOFFSET=0.2, XSIZE=7.5, YSIZE=10, /INCHES
ENDIF

hk1 = gethkn(hk,1)


utc = tai2utc(obt2tai(hk1(offset-6:offset-1,*)))		; for /no_hdr option


!x.title = 'Time (UT)'

IF (not keyword_set(single)) THEN single=0
IF (single NE 0) THEN !p.multi = 0 ELSE !p.multi=[0,1,4,0,1]
IF (not keyword_set(noconvert)) THEN conv=1 ELSE conv=0
IF (conv eq 0) THEN !y.title = 'DN' ELSE !y.title='Arc Sec'

IF ((single eq 0) or (single eq 1)) THEN BEGIN
   v = fix(hk1(offset+35,*))
;   if (conv eq 1) then v=0.52*(v-126)		; .52 arc sec/DN  2/13/96
   if (conv eq 1) then v=0.9091*(v-126)		; arc sec/DN  2/19/96
   if KEYWORD_SET(autoscale) THEN BEGIN
   mn = min(v,max=mx)
   mn = mn-1
   mx = mx+1
   ENDIF ELSE BEGIN
      mn = -20
      mx = 20
   ENDELSE
   utplot,utc,v,title='LASCO BS-X',/ynozero,yrange=[mn,mx]
   

; get max, mins, etc. and print them to screen
   minimum=min(v)
   maximum=max(v)
   results=moment(v)
   mean_value = results(0)
   std_dev = sqrt(results(1))

; assign bs-x mean to a global mean 

   bsx_mean = mean_value     

   xyouts,0.1,0.92,'MIN = '+strtrim(minimum,2),/norm
   xyouts,0.3,0.92,'MAX = '+strtrim(maximum,2),/norm
   xyouts,0.5,0.92,'MEAN = '+strtrim(mean_value,2),/norm
   xyouts,0.7,0.92,'SD = '+strtrim(std_dev,2),/norm

; print the numerical summary to the ASCII output file

	date = utc2str(utc(0))

   printf, LUN, date
   printf, LUN, 'BS-X'
   printf, LUN, format = '(4(f10.6," "))', minimum, maximum, mean_value, std_dev

ENDIF

IF ((single eq 0) or (single eq 2)) THEN BEGIN
   v = fix(hk1(offset+34,*))
;   if (conv eq 1) then v=0.65*(v-185)		; .65 arc sec/DN  2/13/96
   if (conv eq 1) then v=1.0*(v-185)		; arc sec/DN  2/19/96
   if KEYWORD_SET(autoscale) THEN BEGIN
   mn = min(v,max=mx)
   mn = mn-1
   mx = mx+1
   ENDIF ELSE BEGIN
      mn = -30
      mx = 0
   ENDELSE
   utplot,utc,v,title='LASCO BS-Y',/ynozero,yrange=[mn,mx]

   minimum=min(v)
   maximum=max(v)

IF (minimum ne maximum) THEN BEGIN
   results=moment(v)
   mean_value = results(0)
   std_dev = sqrt(results(1))
ENDIF ELSE BEGIN
   mean_value = minimum
   std_dev = 0.
ENDELSE

   xyouts,0.1,0.68,'MIN = '+strtrim(minimum,2),/norm
   xyouts,0.3,0.68,'MAX = '+strtrim(maximum,2),/norm
 
   xyouts,0.5,0.68,'MEAN = '+strtrim(mean_value,2),/norm
   xyouts,0.7,0.68,'SD = '+strtrim(std_dev,2),/norm

; print the numerical summary to the ASCII output file

   printf, LUN, 'BS-Y'
   printf, LUN, format = '(4(F10.6," "))', minimum, maximum, mean_value, std_dev

; assign bs-y mean to a global mean 

   bsy_mean = mean_value

ENDIF

IF ((hk1(offset+16) and 8) gt 0) THEN BEGIN
;
;  the PES values need to be rotated
;  first get the raw DN
;  and then rotate
;
   v_x = fix(hk1(offset+31,*)) ; (pes-x)
   v_y = fix(hk1(offset+30,*)) ; (pes-y)
   
   IF ((single eq 0) or (single eq 3)) THEN BEGIN
      v = v_x
      if (conv eq 1) then v=2.0*(v-104)+0.1*(v_y-129)	; 2.0 arc sec/DN 2/19/96
   if KEYWORD_SET(autoscale) THEN BEGIN
      mn = min(v,max=mx)
      mn = mn-1
      mx = mx+1
   ENDIF ELSE BEGIN
      mn = -20
      mx = 20
   ENDELSE
      utplot,utc,v,title='LASCO PES(A)-X',/ynozero,yrange=[mn,mx]

   minimum=min(v)
   maximum=max(v)
   results=moment(v)
   mean_value = results(0)
   std_dev = sqrt(results(1))
 
   xyouts,0.1,0.43,'MIN = '+strtrim(minimum,2),/norm
   xyouts,0.3,0.43,'MAX = '+strtrim(maximum,2),/norm
   xyouts,0.5,0.43,'MEAN = '+strtrim(mean_value,2),/norm
   xyouts,0.7,0.43,'SD = '+strtrim(std_dev,2),/norm


; print the numerical summary to the ASCII output file

   printf, LUN, 'PES(A)-X'
   printf, LUN, format = '(4(F10.6," "))', minimum, maximum, mean_value, std_dev

; assign pesa_x mean to a global mean

   pesax_mean = mean_value

   ENDIF

   IF ((single eq 0) or (single eq 4)) THEN BEGIN
      v = v_y
      if (conv eq 1) then v=2.0*(v-129)-0.1*(v_x-104)	; 2.0 arc sec/DN 2/19/96
   if KEYWORD_SET(autoscale) THEN BEGIN
      mn = min(v,max=mx)
      mn = mn-1
      mx = mx+1
   ENDIF ELSE BEGIN
      mn = -20
      mx = 20
   ENDELSE
      utplot,utc,v,title='LASCO PES(A)-Y',/ynozero,yrange=[mn,mx]


   minimum=min(v)
   maximum=max(v)
   results=moment(v)
   mean_value = results(0)
   std_dev = sqrt(results(1))
 
   xyouts,0.1,0.18,'MIN = '+strtrim(minimum,2),/norm
   xyouts,0.3,0.18,'MAX = '+strtrim(maximum,2),/norm
   xyouts,0.5,0.18,'MEAN = '+strtrim(mean_value,2),/norm
   xyouts,0.7,0.18,'SD = '+strtrim(std_dev,2),/norm

; print the numerical summary to the ASCII output file

   printf, LUN, 'PES(A)-Y'
   printf, LUN, format = '(4(F10.6," "))', minimum, maximum, mean_value, std_dev

; assign presa_y mean as a global mean

   pesay_mean = mean_value

   ENDIF

ENDIF ELSE BEGIN

   IF ((single eq 0) or (single eq 3)) THEN BEGIN
      v = fix(hk1(offset+33,*))
      if (conv eq 1) then v=2.0*v	; 2.0 arc sec/DN 2/19/96
   if KEYWORD_SET(autoscale) THEN BEGIN
      mn = min(v,max=mx)
      mn = mn-1
      mx = mx+1
   ENDIF ELSE BEGIN
      mn = -20
      mx = 20
   ENDELSE
      utplot,utc,v,title='LASCO PES(B)-X',/ynozero,yrange=[mn,mx]


   minimum=min(v)
   maximum=max(v)
   results=moment(v)
   mean_value = results(0)
   std_dev = sqrt(results(1))
 
   xyouts,0.02,0.3,minimum,/norm
   xyouts,0.2,0.3,maximum,/norm
   xyouts,0.4,0.3,mean_value,/norm
   xyouts,0.6,0.3,std_dev,/norm


   ENDIF

   IF ((single eq 0) or (single eq 4)) THEN BEGIN
      v = fix(hk1(offset+32,*))
      if (conv eq 1) then v=2.0*v	; 2.0 arc sec/DN 2/19/96
   if KEYWORD_SET(autoscale) THEN BEGIN
      mn = min(v,max=mx)
      mn = mn-1
      mx = mx+1
   ENDIF ELSE BEGIN
      mn = -20
      mx = 20
   ENDELSE
      utplot,utc,v,title='LASCO PES(B)-Y',/ynozero,yrange=[mn,mx]


   minimum=min(v)
   maximum=max(v)
   results=moment(v)
   mean_value = results(0)
   std_dev = sqrt(results(1))
 
   xyouts,0.02,0.2,minimum,/norm
   xyouts,0.22,0.2,maximum,/norm
   xyouts,0.42,0.2,mean_value,/norm
   xyouts,0.62,0.2,std_dev,/norm


   ENDIF

ENDELSE

; finish off the lasco_pointing entry

   printf, LUN, " "

; add all four means and date to basic_pointing entry

   printf,LUN2,format='("XX ",A10," ",4(F10.6," "))',date,bsx_mean,bsy_mean,pesax_mean,pesay_mean

close, LUN & FREE_LUN, LUN
close, LUN2 & FREE_LUN, LUN2


!p.multi = 0
!x.title = ''
!y.title = ''
empty
return
end

