pro ltx_neon_calib,out=out ;processes calibration data from 9/2011 and generates wavelength & dispersion arrays xplot39 tekcolor !p.multi=[0,1,1] pix=indgen(512) ntr=11 dir='/Users/tb8/Documents/work_ORNL/LTX_work/calibration_Sept_11/Neon_lamp_calibration/' ;read in neon calibration data for Li_5175 grating filename='li_100ms_f05_bin.SPE' tb_read_spe,dir+filename,data05 filename='li_100ms_f05_bin_bkg.SPE' tb_read_spe,dir+filename,dark05 texp05=.1 ;100 ms exposure data05=data05-dark05 edata05=sqrt(abs(data05)) data05=data05/texp05 edata05=edata05/texp05 ;data05=reverse(data05) ;order reversal due to EMCCD port read ;edata05=reverse(edata05) filename='li_50ms_f06_bin.SPE' tb_read_spe,dir+filename,data06 filename='li_50ms_f06_bin_bkg.SPE' tb_read_spe,dir+filename,dark06 texp06=.05 ;100 ms exposure data06=data06-dark06 edata06=sqrt(abs(data06)) data06=data06/texp06 edata06=edata06/texp06 filename='li_50ms_f07_bin.SPE' tb_read_spe,dir+filename,data07 filename='li_50ms_f07_bin_bkg.SPE' tb_read_spe,dir+filename,dark07 texp07=.05 ;100 ms exposure data07=data07-dark07 edata07=sqrt(abs(data07)) data07=data07/texp07 edata07=edata07/texp07 filename='li_50ms_f08_bin.SPE' tb_read_spe,dir+filename,data08 filename='li_50ms_f08_bin_bkg.SPE' tb_read_spe,dir+filename,dark08 texp08=.05 ;100 ms exposure data08=data08-dark08 edata08=sqrt(abs(data08)) data08=data08/texp08 edata08=edata08/texp08 filename='li_50ms_f09_bin.SPE' tb_read_spe,dir+filename,data09 filename='li_50ms_f09_bin_bkg.SPE' tb_read_spe,dir+filename,dark09 texp09=.05 ;100 ms exposure data09=data09-dark09 edata09=sqrt(abs(data09)) data09=data09/texp09 edata09=edata09/texp09 filename='li_50ms_f10_bin.SPE' tb_read_spe,dir+filename,data10 filename='li_50ms_f10_bin_bkg.SPE' tb_read_spe,dir+filename,dark10 texp10=.05 ;100 ms exposure data10=data10-dark10 edata10=sqrt(abs(data10)) data10=data10/texp10 edata10=edata10/texp10 filename='li_80ms_f11_bin.SPE' tb_read_spe,dir+filename,data11 filename='li_80ms_f11_bin_bkg.SPE' tb_read_spe,dir+filename,dark11 texp11=.08 ;80 ms exposure data11=data11-dark11 edata11=sqrt(abs(data11)) data11=data11/texp11 edata11=edata11/texp11 filename='li_80ms_f12_bin.SPE' tb_read_spe,dir+filename,data12 filename='li_80ms_f12_bin_bkg.SPE' tb_read_spe,dir+filename,dark12 texp12=.08 ;80 ms exposure data12=data12-dark12 edata12=sqrt(abs(data12)) data12=data12/texp12 edata12=edata12/texp12 filename='li_80ms_f13_bin.SPE' tb_read_spe,dir+filename,data13 filename='li_80ms_f13_bin_bkg.SPE' tb_read_spe,dir+filename,dark13 texp13=.08 ;80 ms exposure data13=data13-dark13 edata13=sqrt(abs(data13)) data13=data13/texp13 edata13=edata13/texp13 filename='li_80ms_f14_bin.SPE' tb_read_spe,dir+filename,data14 filename='li_80ms_f14_bin_bkg.SPE' tb_read_spe,dir+filename,dark14 texp14=.08 ;80 ms exposure data14=data14-dark14 edata14=sqrt(abs(data14)) data14=data14/texp14 edata14=edata14/texp14 filename='li_80ms_f15_bin.SPE' tb_read_spe,dir+filename,data15 filename='li_80ms_f15_bin_bkg.SPE' tb_read_spe,dir+filename,dark15 texp15=.08 ;80 ms exposure data15=data15-dark15 edata15=sqrt(abs(data15)) data15=data15/texp15 edata15=edata15/texp15 ;package the data into a single array data=data05 data[*,1]=data06[*,1] data[*,2]=data07[*,2] data[*,3]=data08[*,3] data[*,4]=data09[*,4] data[*,5]=data10[*,5] data[*,6]=data11[*,6] data[*,7]=data12[*,7] data[*,8]=data13[*,8] data[*,9]=data14[*,9] data[*,10]=data15[*,10] edata=edata05 edata[*,1]=edata06[*,1] edata[*,2]=edata07[*,2] edata[*,3]=edata08[*,3] edata[*,4]=edata09[*,4] edata[*,5]=edata10[*,5] edata[*,6]=edata11[*,6] edata[*,7]=edata12[*,7] edata[*,8]=edata13[*,8] edata[*,9]=edata14[*,9] edata[*,10]=edata15[*,10] ;pass the data to the calibration routine lam=fltarr(512,ntr) elam=fltarr(512,ntr) inst=fltarr(ntr) einst=fltarr(ntr) in={index:0,data:data,edata:edata} for ki=0,ntr-1 do begin in.index=ki ltx_disp_calib,in=in,out=out,guess=guess lam[*,ki]=out.lam elam[*,ki]=out.elam inst[ki]=out.wid einst[ki]=out.ewid ; wait,1 endfor window,0 !p.multi=[0,1,2] track=indgen(ntr) erplot,track+5,inst,einst,/ynoz,title='instrumental width',ytitle='FWHM ('+angstrom()+')',xtitle='Fiber' plot,pix,lam[*,ntr-1]-lam[*,0],title='wavelength variation from central fiber',ytitle='('+angstrom()+')',/ynoz,/xst,yrange=[-0.5,1],xtitle='pixel' for i=0,ntr-1 do oplot,pix,lam[*,i]-lam[*,ntr/2],color=i+2 for i=0,ntr-1 do xyouts,256,lam[256,i]-lam[256,ntr/2],'Fiber '+strtrim(i+5,2),color=i+2 window,1 plot,pix,lam[*,ntr/2],ytitle='wavelength ('+angstrom()+')',/ynoz,/xst,xtitle='pixel' for i=0,ntr-1 do oplot,pix,lam[*,i],color=i+2 plot,pix,deriv(pix,lam[*,ntr/2]),ytitle='dispersion ('+angstrom()+'/pixel)',/ynoz,/xst,xtitle='pixel' for i=0,ntr-1 do oplot,pix,deriv(pix,lam[*,i]),color=i+2 window,2 !p.multi=[0,1,1] plot,lam[*,ntr/2],deriv(pix,lam[*,ntr/2])/16.e-3,ytitle='dispersion ('+angstrom()+'/mm)',/ynoz,/xst,xtitle='wavelength ('+angstrom()+')' for i=0,ntr-1 do oplot,lam[*,i],deriv(pix,lam[*,i])/16.e-3,color=i+2 ;oerplot,lam[*,ntr/2],deriv(pix,lam[*,ntr/2])/16.e-3,elam[*,ntr/2]/16.e-3,psym=-3 out={note:'Sept 2011 neon lamp',pix:pix,lam:lam,elam:elam,inst:inst,einst:einst} stop save,filename=dir+'li5175_neon_lamp_calib.sav',out,/verbose end