;A Dave Walton (UCL/MSSL) program to reformat Solar-B EIS data files ;into FITS files of the right format for my LTC analysis programs, ;ltd_disp.pro and ltc_anal.pro. flnamina=dialog_pickfile(title='Select File A to read') waIm_al=intarr(512, 400) waIm_ar=intarr(512, 400) openr, 1, flnamina readu, 1, waIm_al, waIm_ar close, 1 if strupcase(!version.arch) EQ 'SPARC' then $ byteorder, waIm_al, waIm_ar ;Swap bytes if a Sun ;Rotate etc. waIm_al=transpose(waIm_al) waIm_ar=rotate(waIm_ar, 1) flnaminb=dialog_pickfile(title='Select File B to read') waIm_bl=intarr(512, 400) waIm_br=intarr(512, 400) openr, 1, flnaminb readu, 1, waIm_bl, waIm_br close, 1 if strupcase(!version.arch) EQ 'SPARC' then $ byteorder, waIm_bl, waIm_br ;Swap bytes if a Sun ;Rotate etc. waIm_bl=transpose(waIm_bl) waIm_br=rotate(waIm_br, 1) flnaminc=dialog_pickfile(title='Select File C to read') waIm_cl=intarr(512, 400) waIm_cr=intarr(512, 400) openr, 1, flnaminc readu, 1, waIm_cl, waIm_cr close, 1 if strupcase(!version.arch) EQ 'SPARC' then $ byteorder, waIm_cl, waIm_cr ;Swap bytes if a Sun ;Rotate etc. waIm_cl=transpose(waIm_cl) waIm_cr=rotate(waIm_cr, 1) loadct, 34 ;Shows blemishes, noise etc. better ;FILE A ;Plot original data and flattened versions to show blemishes, noise etc. window, 0, xsize=850, ysize=550, title='waIm_al' tvscl, waIm_al ;Fit a surface to subtract from the ramp faRampsurface_al=sfit(waIm_al[0:299, *], 1, kX=faRampsurfcoeffs) waRampdiff_al=waIm_al[0:299, *]-fix(faRampsurface_al) tvscl, waRampdiff_al, 410, 0 ;Show the overscan pixels at high contrast tvscl, waIm_al[304:399, *], 720, 0 window, 1, xsize=850, ysize=550, title='waIm_ar' tvscl, waIm_ar faRampsurface_ar=sfit(waIm_ar[0:299, *], 1, kX=faRampsurfcoeffs) waRampdiff_ar=waIm_ar[0:299, *]-fix(faRampsurface_ar) tvscl, waRampdiff_ar, 410, 0 tvscl, waIm_ar[304:399, *], 720, 0 ;FILE B window, 2, xsize=850, ysize=550, title='waIm_bl' tvscl, waIm_bl faRampsurface_bl=sfit(waIm_bl[0:299, *], 1, kX=faRampsurfcoeffs) waRampdiff_bl=waIm_bl[0:299, *]-fix(faRampsurface_bl) tvscl, waRampdiff_bl, 410, 0 tvscl, waIm_bl[304:399, *], 720, 0 window, 3, xsize=850, ysize=550, title='waIm_br' tvscl, waIm_br faRampsurface_br=sfit(waIm_br[0:299, *], 1, kX=faRampsurfcoeffs) waRampdiff_br=waIm_br[0:299, *]-fix(faRampsurface_br) tvscl, waRampdiff_br, 410, 0 tvscl, waIm_br[304:399, *], 720, 0 ;FILE C window, 4, xsize=850, ysize=550, title='waIm_cl' tvscl, waIm_cl faRampsurface_cl=sfit(waIm_cl[0:299, *], 1, kX=faRampsurfcoeffs) waRampdiff_cl=waIm_cl[0:299, *]-fix(faRampsurface_cl) tvscl, waRampdiff_cl, 410, 0 tvscl, waIm_cl[304:399, *], 720, 0 window, 5, xsize=850, ysize=550, title='waIm_cr' tvscl, waIm_cr faRampsurface_cr=sfit(waIm_cr[0:299, *], 1, kX=faRampsurfcoeffs) waRampdiff_cr=waIm_cr[0:299, *]-fix(faRampsurface_cr) tvscl, waRampdiff_cr, 410, 0 tvscl, waIm_cr[304:399, *], 720, 0 ;FILE 0 print ans='' print, 'Enter 1st file to use for LTC (A, B, or C)' read, ans ans=strupcase(ans) case ans of 'A': begin waImLTC0_l=waIm_al waImLTC0_r=waIm_ar end 'B': begin waImLTC0_l=waIm_bl waImLTC0_r=waIm_br end 'C': begin waImLTC0_l=waIm_cl waImLTC0_r=waIm_cr end endcase ;Grab some pixels and reformat for LTC program waLTC_l=intarr(20, 140, 2) waLTC_l[*, 0:19, 0]=waImLTC0_l[340:359, 240:259] for wI=1, 6 do begin waLTC_l[*, (20*wI):(20*wI+19), 0]= $ reform(waImLTC0_l[17:26, (78*wI-39):(78*wI)], 20, 20) endfor waLTC_r=intarr(20, 140, 2) waLTC_r[*, 0:19, 0]=waImLTC0_r[340:359, 240:259] for wI=1, 6 do begin waLTC_r[*, (20*wI):(20*wI+19), 0]= $ reform(waImLTC0_r[86:95, (78*wI-39):(78*wI)], 20, 20) endfor ;FILE 1 print ans='' print, 'Enter 2nd file to use for LTC (A, B, or C)' read, ans ans=strupcase(ans) case ans of 'A': begin waImLTC1_l=waIm_al waImLTC1_r=waIm_ar end 'B': begin waImLTC1_l=waIm_bl waImLTC1_r=waIm_br end 'C': begin waImLTC1_l=waIm_cl waImLTC1_r=waIm_cr end endcase ;Grab some pixels and reformat for LTC program waLTC_l[*, 0:19, 1]=waImLTC1_l[340:359, 240:259] for wI=1, 6 do begin waLTC_l[*, (20*wI):(20*wI+19), 1]= $ reform(waImLTC1_l[17:26, (78*wI-39):(78*wI)], 20, 20) endfor waLTC_r[*, 0:19, 1]=waImLTC1_r[340:359, 240:259] for wI=1, 6 do begin waLTC_r[*, (20*wI):(20*wI+19), 1]= $ reform(waImLTC1_r[86:95, (78*wI-39):(78*wI)], 20, 20) endfor ;Make FITS file print flnamout='' print, 'Enter FITS filename to write' read, flnamout mkhdr, header, waLTC_l, /EXTEN sxaddpar, header, 'CCD_TYPE', 'CCD42' sxaddpar, header, 'EXPOSURE', 1.0 writefits, flnamout, waLTC_l, header mkhdr, header, waLTC_r, /IMAGE sxaddpar, header, 'CCD_TYPE', 'CCD42' sxaddpar, header, 'EXPOSURE', 1.0 writefits, flnamout, waLTC_r, header, /APPEND end