PRO HSI_VIS_AVG_SIZE, vis ; ; Procedure to use calculated visibilities to calculate/display various interesting things... ; ; vis is a stucture containing visibility data ; ; 27-Mar-05 Initial version (ghurford@ssl.berkeley.edu) just plots |vis| vs spatial frequency ; 14-Apr-05 gh Add labels to vis vs spatial frequency plot ; 18-Apr-05 gh Correct numerical error in visibility fit plot. ; 20-Apr-05 gh Adapt names to be consistent with use of term, "spatial frequencies" ; Rename routine from hsi_use_vis to hsi_vis_avg_size ; Debug handling of cases when some subcollimators are missing. ; ; Loop over subcollimators to rotationally averaged amplitudes. avamp = FLTARR(9) scok = INTARR(9) amp = SQRT(vis.x^2 + vis.y^2) FOR n=0,8 DO BEGIN oki = WHERE(REFORM(vis.ok[n,*]) GT 0, nok) IF nok EQ 0 THEN CONTINUE ; on to next subcoll if no good data scok[n] = 1 ; flag to indicate subcollimator has results avamp[n] = MEAN(amp[n, oki]) ENDFOR ok = WHERE(scok GT 0, nok) IF nok LT 3 THEN BEGIN PRINT, 'HSI_VIS_AVG_SIZE: skipped because only', nok, ' subcollimators had amplitudes'; RETURN ENDIF ; ; Fit and display rotationally-averaged size. PRINT, '=',avamp, FORMAT='(A7, 9E12.4)' angpitch = 2 * 2.26 * 3.^(FINDGEN(9)*0.5) spatfreq = 1./angpitch maxavamp = MAX(avamp) PLOT, spatfreq[ok], avamp[ok], /XLOG, PSYM=6, TITLE=' vs SPATIAL FREQUENCY', $ XTITLE='SPATIAL FREQUENCY (/arcsec)', YTITLE=' (photons/s/cm^2)', YRANGE=[0, maxavamp*1.2] output = hsi_gaussfit(spatfreq[ok], avamp[ok], YFIT=yfit) PRINT, output[1:2], FORMAT="('FWHM=', F6.2, ' arcsec. Flux=', E12.3, ' ph/cm^2/s')" aftab = 0.001 * 1.1^FINDGEN(60) avampfit = output[2] * EXP(-!PI^2/(4*ALOG(2))*(aftab*output[1])^2) OPLOT, aftab, avampfit, LINESTYLE=0 XYOUTS, spatfreq[4], maxavamp*1.15, STRING(output[1], FORMAT='("FWHM= ",F4.1, " arcsec")') ; , CHARSIZE=0.6 FOR n=0,8 DO BEGIN IF scok[n] NE 0 THEN XYOUTS, spatfreq[n]*0.9, maxavamp*1.1, STRING(n+1, FORMAT='(I1)'); , CHARSIZE=0.5 ENDFOR RETURN END