EIT Software Listings

 

anal
obsolete
response
util

 

Previous Routine
Next Routine

 

Listing of $SSW/soho/eit/idl/obsolete/plot_eit_mirror.pro

 


pro plot_eit_mirror, Item, code=qcode, extend_range=extend_range,  	$
	yrange=yrange,notime=notime,hc=hc,filein=filein,		$
	noverbose=noverbose,qstop=qstop,noprint=noprint
;+
; NAME:
;   plot_eit_mirror
; PURPOSE:
;   Plot the EIT mirror reflectivity
; CALLING SEQUENCE:
;   plot_eit_mirror, mirror
;   plot_eit_mirror, code=2, /notime, /hc, yra=[1.e-6,.1]
;   plot_eit_mirror, /extend_range, filein=filein
; OPTIONAL INPUT/OUTPUT:
;   mirror	- Data structure from the EIT effective area file (era*genx)
;		  If mirror is not defined, the era*genx file will be read.
;   filein	- By default the EIT effective area file is read:
;		    concat_dir('SSW_EIT_RESPONSE','era*.genx')
;		  Use filein='your_file_name' to override the default.
; OPTIONAL INPUT KEYWORDS:
;   code	0: Plot measurements and model
;   		1: Plot ratio of model/measurements
;   		2: Same as 0, but also over plot corrected model (Default)
;   extend_range If set, extend the wavelength ranges by +/- 50 A
;   notime	- If set, do not put the time on the plot
;   yrange	- Vector of length 2 equal to desired min and max y-axis range
;   /hc		- If set, send to PostScript printer
;   /noprint    - If both /hc and /noprint are set, create PostScript file
;		  but do not print it
;   /noverbose	- Don't give the explanations when running.
; CALLS:
;   eit_witness to obtain the witness mirror data.
; HISTORY:
;  10-Jun-95, J. R. Lemen (LPARL), Written.
;-

if n_elements(qcode) eq 0 then qcode = 2
if (qcode lt 0) or (qcode gt 2) then begin
  on_error,1					; Return to the caller
  message,string('Invalid value of code =',qcode)
endif

; Call eit_eff_area to read the EIT effective area file:
if n_elements(Item) eq 0 then $
   dum = eit_eff_area(0,filein=filein,area_str=Item)	; Read the era*genx file

; Allow input item to be either the entire data structure from era*.genx file
; or just Item.mirror

tag_pos = tag_index(Item, 'mirror')
if tag_pos ne -1 then mirror = item.(tag_pos) else mirror = Item


!p.multi = [0,2,2]
sector = gt_EITsector(indgen(4),/short)		; Get a list of sectors
sector = sector(sort(sector))			; Wavelength order

if keyword_set(hc) then set_plot,'PS'
tit  = string(sector)+' A mirror double reflectivity'
xtit = 'Wavelength (A)'
if !d.name eq 'PS' then begin
  device,/land,/inch,xsize=9.,ysize=6.5,xoff=1.,yoff=11-1.
  !x.thick=3 & !y.thick=3 & !p.thick=3 & !p.charthick=3.6
  font = 0
endif else font = -1

xrange = [0,0]
if n_elements(yrange) ne 0 then yran = yrange else yran   = [0,0]
xlab_pos = [.95,.95,.95,.95]
ylab_pos = [.9 ,.1 ,.9 ,.9 ]
ylab_pos = [.9 ,.9 ,.9 ,.9 ]
align    = [1.,1.,1.,1.]

for j=0,3 do begin

; -------------------------------------------
; Get the witness mirror values and the model:
; -------------------------------------------
   eit_witness,fix(sector(j)),ww0,rr0
   i = (where(mirror.name eq sector(j)))(0)

   ww1  = mirror(i).wave
   rr1  = mirror(i).ref_model	; Model calculation
   ref2 = mirror(i).ref_corr	; Corrected model
   band = mirror(i).band
   factors1 = rr1/ref2
   ww2  = [ww1,ww0] & ww2 = ww2(sort(ww2))
   factors2 = dspline(ww1,factors1,ww2,interp=0)
   factors0 = dspline(ww1,factors1,ww0,interp=0)

;   eit_mirror,sector(j),ww1,rr1,ref2,band=band,ddir=ddir, $
;		factors0=factors0,factors2=factors2, wave2=ww2

; --------------------------------------------
; Plot the results
; --------------------------------------------
   wmin = min(ww0) & wmax = max(ww0)	; Range witness measurements
   if keyword_set(extend_range) then xrange = [wmin-50,wmax+50]
   
   if (qcode eq 0) or (qcode eq 2) then begin
     plot_io,ww0,rr0,xtit=xtit,psym=4,xstyle=2,	$
		xr=xrange,yr=yran,font=font
     if qcode eq 2 then line=2 else line=0
     oplot,ww1,rr1,line=line

; The Plot labels have to be put on by hand:

     xx = !x.crange(0)+xlab_pos(i)*(!x.crange(1)-!x.crange(0))
     yy = 10.^(!y.crange(0)+ylab_pos(i)*(!y.crange(1)-!y.crange(0)))
     xyouts,xx,yy,font=font,align=align(i),	$
		string((['(a)','(b)','(c)','(d)'])(j)+' '+sector(j)+' A')
     xyouts,.5,1.,/norm,'Double Mirror Reflectivity',font=font,align=.5,chars=1.5

   endif

   ij = where(ww2 ge wmin and ww2 le wmax,nc)
;  Short wavelength side:
   ij1 = where((ww2 le wmin) and (ww2 ge (wmin-band)),nc)
;  Long wavelength side:
   ij2 = where((ww2 ge wmax) and (ww2 le (wmax+band)),nc)
     

   if qcode eq 1 then begin
     if keyword_set(extend_range) then xrange1=xrange   $
				  else xrange1=[min(ww0)-2*band,max(ww0)+2*band]
     plot,ww0,factors0,psym=4,chars=1.,symsiz=1.3,	$
		tit=sector(j)+': Ratio of Theory/Data', 	$
		xtitle='Wavelength(A)',xrange=xrange1, font=font
     oplot,ww2(ij1),factors2(ij1),thick=4
     oplot,ww2(ij2),factors2(ij2),thick=4
     oplot,ww2,factors2
   endif				; qcode eq 1

   if qcode eq 2 then begin
     oplot,ww1,rr1/dspline(ww2,factors2,ww1,interp=0),thick=2
   endif
 
endfor
if !d.name eq 'PS' then begin 
   if not keyword_set(notime) then begin
      text = string('Plot done at: ',!stime,format='(2a)')
      if n_elements(filein) ne 0 then $
                text = text+string(' File: ',filein,format='(2a)') else $
                text = text+string(' Version: ',mirror(0).Version, format='(2a)')
      xyouts,0.5,-0.05,/norm,alig=.5,text
   endif
   pprint,/reset,noprint=noprint
endif
clearplot & !x.thick=0 & !y.thick=0 & !p.thick=0 & !p.charthick=0

if not keyword_set(noverbose) then begin
  case qcode of 
  0: begin
       text = ['- Diamonds are the witness mirror measurements']
       text = [text,'- Curves are the model calculations.']
     endcase
  1: begin
       text = ['- Diamonds are the correction factors at the wavelengths']
       text = [text,'  of the witness mirror measurements.']
       text = [text,'- The curves are the correction factors (theory/data).']
       text = [text,'- The thick portion shows the region over which the']
       text = [text,'  correction factors have been extrapolated to unity.']
     endcase
  2: begin
       text = ['- Diamonds are the witness mirror measurements']
       text = [text,'- Thin curves are the model calculations.']
       text = [text,'- Thick curves are the model calculations forced to the data.']
     endcase
  endcase
  more,text
endif					; not keyword_set(noverbose)

if keyword_set(qstop) then stop
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:45:09 2007- F. Auchère