pro hc_comp2_ir,log,baselog,description,tcor,print,m,mb mask=1 ;if mask=1 then bad pixels are replaced. ; Last modified by C.See in Jan 1999 ; This procedure is called from hc_comp2.pro ; Compares the health check (defined by 'log') to the values from any other ; checkout 2, The default is: /DF308/23Oct97/Log/L+8day_checkout_23Oct97.2 ;No postscript is baseline, postscript 2 is current test data ; m is a flag that indicates which health check will be analyzed for ; Logs containing multiple health checks. The default is the first ; health check in the Log. To analyze a later HC you must change ; the value of m in the following way: 0 is 1st, 1 is 2nd, etc if n_params() le 1 then m=0 ;offset for multiple HC's in a Log if m ne 0 then print, '**Analyzing HC #',m+1,' from this Log' ; **** Initialization **** @c_system.inc @c_header.inc ;!p.color=255 ;white ;!p.background=0 ;on black !p.multi=[0,1,1] !p.ticklen=.02 ;returns to no grid !x.gridstyle=0 ;solid gridlines !y.gridstyle=0 ;solid gridlines !X.range=[0,0] !Y.range=[0,0] !p.font=0 ;device fonts if tcor eq 'y' then star=' **' else star='' ; **** Define Variables ***** ;no postscript is baseline, postscript 2 is current test data ;ir=fltarr(27) ; (ir_status,temp,col_time,samp_time,precharge,up_max,up_ave,down_max,down_ave) x 3 ;ir_lamps=strarr(3) ; lamp status for IR measurements ans='' ;_________________________________________________________________________________________ ; **** IR Data **** ; Display IR spectra dark current and then response to lamp printf,1,'IR:' print,'*IR ;_________________________________________________________________________________________ ; **** Read Test Values **** cd,Log+'/DB/Ir' files=t_getfil('V_*') d_irread,files(0+3*m),h0_2,p0_2,g0_2 ;Samp=8ms, Collect=.24sec, lamp off d_irread,files(1+3*m),h1_2,p1_2,g1_2 ;Samp=8ms, Collect=60sec, lamp off d_irread,files(2+3*m),h2_2,p2_2,g2_2 ;Samp=8ms, Collect=60sec, lamp on ir2=fltarr(27) ; (ir_status,temp,col_time,samp_time,precharge,up_max,up_ave,down_max,down_ave) x 3 ir_lamps2=strarr(3) ; lamp status for IR measurements ir_lamps2(0)=d_value(h0_2,102) ;ir_lamps 1 ir_lamps2(1)=d_value(h1_2,102) ;ir_lamps 2 ir_lamps2(2)=d_value(h2_2,102) ;ir_lamps 3 ir2(0)=d_value(h0_2,h_ir_status) ;ir_status 1 ir2(1)=0.5*(d_value(h0_2,105)+d_value(h0_2,106)) ;temp ir2(2)=d_value(h0_2,h_ir_col_time) ;col_time ir2(3)=g0_2.reading(5)*8.064 ;samp ir2(4)=d_value(h0_2,h_precharge) ;precharge ir2(9)=d_value(h1_2,h_ir_status) ;ir_status 2 ir2(10)=0.5*(d_value(h1_2,105)+d_value(h1_2,106)) ;temp ir2(11)=d_value(h1_2,h_ir_col_time) ;col_time ir2(12)=g1_2.reading(5)*8.064 ;samp ir2(13)=d_value(h1_2,h_precharge) ;precharge ir2(18)=d_value(h2_2,h_ir_status) ;ir_status 3 ir2(19)=0.5*(d_value(h2_2,105)+d_value(h2_2,106)) ;temp ir2(20)=d_value(h2_2,h_ir_col_time) ;col_time ir2(21)=g2_2.reading(5)*8.064 ;samp ir2(22)=d_value(h2_2,h_precharge) ;precharge ; use pixels 4:145 to trim 4 pixels from each end ir2(5) = max(p0_2(4:145,3)-p0_2(4:145,2)) ;p0_max_u ir2(6) = mean(p0_2(4:145,3)-p0_2(4:145,2)) ;p0_ave_u ir2(7) = max(p0_2(4:145,1)-p0_2(4:145,0)) ;p0_max_d ir2(8) = mean(p0_2(4:145,1)-p0_2(4:145,0)) ;p0_ave_d ir2(14) = max(p1_2(4:145,3)-p1_2(4:145,2)) ;p1_max_u ir2(15) = mean(p1_2(4:145,3)-p1_2(4:145,2)) ;p1_ave_u ir2(16) = max(p1_2(4:145,1)-p1_2(4:145,0)) ;p1_max_d ir2(17) = mean(p1_2(4:145,1)-p1_2(4:145,0)) ;p1_ave_d ir2(23) = max(p2_2(4:145,3)-p2_2(4:145,2)) ;p2_max_u ir2(24) = mean(p2_2(4:145,3)-p2_2(4:145,2)) ;p2_ave_u ir2(25) = max(p2_2(4:145,1)-p2_2(4:145,0)) ;p2_max_d ir2(26) = mean(p2_2(4:145,1)-p2_2(4:145,0)) ;p2_ave_d ;determine EA Temperature... misstime1=d_value(h0_2,88) ;mission time of first measuerment misstime3=d_value(h2_2,88) ;mission time of third measuerment eatemp1_2=eatemp(misstime1,Log) ;eatemp() returns the ea temperature eatemp3_2=eatemp(misstime3,Log) eatemp2_2=(eatemp1_2+eatemp3_2)/2 ;close enough ;_________________________________________________________________________________________ ; **** Read Baseline Values **** cd,BaseLog+'/DB/Ir' files=t_getfil('V_*') d_irread,files(0+3*mb),h0,p0,g0 ;Samp=8ms, Collect=.24sec, lamp off d_irread,files(1+3*mb),h1,p1,g1 ;Samp=8ms, Collect=60sec, lamp off d_irread,files(2+3*mb),h2,p2,g2 ;Samp=8ms, Collect=60sec, lamp on ir=fltarr(27) ; (ir_status,temp,col_time,samp_time,precharge,up_max,up_ave,down_max,down_ave) x 3 ir_lamps=strarr(3) ; lamp status for IR measurements ir_lamps(0)=d_value(h0,102) ;ir_lamps 1 ir_lamps(1)=d_value(h1,102) ;ir_lamps 2 ir_lamps(2)=d_value(h2,102) ;ir_lamps 3 ir(0)=d_value(h0,h_ir_status) ;ir_status 1 ir(1)=0.5*(d_value(h0,105)+d_value(h0,106)) ;temp ir(2)=d_value(h0,h_ir_col_time) ;col_time ir(3)=g0.reading(5)*8.064 ;samp ir(4)=d_value(h0,h_precharge) ;precharge ir(9)=d_value(h1,h_ir_status) ;ir_status 2 ir(10)=0.5*(d_value(h1,105)+d_value(h1,106)) ;temp ir(11)=d_value(h1,h_ir_col_time) ;col_time ir(12)=g1.reading(5)*8.064 ;samp ir(13)=d_value(h1,h_precharge) ;precharge ir(18)=d_value(h2,h_ir_status) ;ir_status 3 ir(19)=0.5*(d_value(h2,105)+d_value(h2,106)) ;temp ir(20)=d_value(h2,h_ir_col_time) ;col_time ir(21)=g2.reading(5)*8.064 ;samp ir(22)=d_value(h2,h_precharge) ;precharge ;determine EA Temperature... misstime1=d_value(h0,88) ;mission time of first measuerment misstime3=d_value(h2,88) ;mission time of third measuerment eatemp1=eatemp(misstime1,BaseLog) ;eatemp() returns the ea temperature eatemp3=eatemp(misstime3,BaseLog) eatemp2=(eatemp1+eatemp3)/2 ;close enough ;____________________________________ ; ** correct for delta temperature... ; the temperature model is made of dark current, responsitivity, & EA components ; they are adjusted to fit the DISR 03 health check thermal data taken on ; 28 June & 22/23 July 1996. See /users/csee/data/ir_temp_dependence.txt if tcor eq 'y' then begin ;first measurement... ;dt=ir2(1)-ir(1) ;Delta temp for 1st measurement (.25ms dark) dtea=eatemp1_2-eatemp1 ;EA delta temperature e=2.718281828 ;base of natural log max=max(p0(4:145,0:1)) ;DLIS DN1=7.4272e-9*e^(0.081995*ir(1)) ;model response at baseline temp. DN2=7.4272e-9*e^(0.081995*ir2(1)) ;model response at test temp. p0(*,0:1)=max-p0(*,0:1) ;invert signal bright=p0(*,0)-p0(*,1) ;subtract off dark p0(*,1)=p0(*,1)*DN2/DN1+.53565*dtea ;DLIS dark current corrections p0(*,0)=p0(*,1)+bright ;reconstruct p0(*,0:1)=max-p0(*,0:1) ;reinvert signal max=max(p0(4:145,2:3)) ;ULIS DN1=3.2357e-10*e^(0.093313*ir(1)) ;model response at baseline temp. DN2=3.2357e-10*e^(0.093313*ir2(1)) ;model response at test temp. p0(*,2:3)=max-p0(*,2:3) ;invert signal bright=p0(*,2)-p0(*,3) ;subtract off dark p0(*,3)=p0(*,3)*DN2/DN1+1.4389*dtea ;ULIS dark current p0(*,2)=p0(*,3)+bright ;reconstruct p0(*,2:3)=max-p0(*,2:3) ;reinvert signal ;second measurement... ;dt=ir2(10)-ir(10) ;2nd measurement (60s dark) dtea=eatemp2_2-eatemp2 ;EA delta temperature max=max(p1(4:145,0:1)) ;DLIS DN1=7.4272e-9*e^(0.081995*ir(10)) ;model response at baseline temp. DN2=7.4272e-9*e^(0.081995*ir2(10)) ;model response at test temp. p1(*,0:1)=max-p1(*,0:1) ;invert signal bright=p1(*,0)-p1(*,1) ;subtract off dark p1(*,1)=p1(*,1)*DN2/DN1+.53565*dtea ;DLIS dark current p1(*,0)=p1(*,1)+bright ;reconstruct p1(*,0:1)=max-p1(*,0:1) ;reinvert signal max=max(p1(4:145,2:3)) ;ULIS DN1=3.2357e-10*e^(0.093313*ir(10)) ;model response at baseline temp. DN2=3.2357e-10*e^(0.093313*ir2(10)) ;model response at test temp. p1(*,2:3)=max-p1(*,2:3) ;invert signal bright=p1(*,2)-p1(*,3) ;subtract off dark p1(*,3)=p1(*,3)*DN2/DN1+1.4389*dtea ;ULIS dark current p1(*,2)=p1(*,3)+bright ;reconstruct p1(*,2:3)=max-p1(*,2:3) ;reinvert signal ;third measurement... dt=ir2(19)-ir(19) ;3rd measurement (60s bright) dtea=eatemp3_2-eatemp3 ;EA delta temperature max=max(p2(4:145,0:1)) ;DLIS DN1=7.4272e-9*e^(0.081995*ir(19)) ;model response at baseline temp. DN2=7.4272e-9*e^(0.081995*ir2(19)) ;model response at test temp. p2(*,0:1)=max-p2(*,0:1) ;invert signal bright=p2(*,0)-p2(*,1) ;subtract off dark bright=bright+2.991*dt-2.3511*dtea ;DLIS responsivity p2(*,1)=p2(*,1)*DN2/DN1+.53565*dtea ;DLIS dark current p2(*,0)=p2(*,1)+bright ;reconstruct p2(*,0:1)=max-p2(*,0:1) ;reinvert signal max=max(p2(4:145,2:3)) ;ULIS DN1=3.2357e-10*e^(0.093313*ir(19)) ;model response at baseline temp. DN2=3.2357e-10*e^(0.093313*ir2(19)) ;model response at test temp. p2(*,2:3)=max-p2(*,2:3) ;invert signal bright=p2(*,2)-p2(*,3) ;subtract off dark bright=bright+23.06*dt-17.466*dtea ;ULIS responsivity p2(*,3)=p2(*,3)*DN2/DN1+1.4389*dtea ;ULIS dark current p2(*,2)=p2(*,3)+bright ;reconstruct p2(*,2:3)=max-p2(*,2:3) ;reinvert signal endif ; use pixels 4:145 to trim 4 pixels from each end ir(5) = max(p0(4:145,3)-p0(4:145,2)) ;p0_max_u ir(6) = mean(p0(4:145,3)-p0(4:145,2)) ;p0_ave_u ir(7) = max(p0(4:145,1)-p0(4:145,0)) ;p0_max_d ir(8) = mean(p0(4:145,1)-p0(4:145,0)) ;p0_ave_d ir(14) = max(p1(4:145,3)-p1(4:145,2)) ;p1_max_u ir(15) = mean(p1(4:145,3)-p1(4:145,2)) ;p1_ave_u ir(16) = max(p1(4:145,1)-p1(4:145,0)) ;p1_max_d ir(17) = mean(p1(4:145,1)-p1(4:145,0)) ;p1_ave_d ir(23) = max(p2(4:145,3)-p2(4:145,2)) ;p2_max_u ir(24) = mean(p2(4:145,3)-p2(4:145,2)) ;p2_ave_u ir(25) = max(p2(4:145,1)-p2(4:145,0)) ;p2_max_d ir(26) = mean(p2(4:145,1)-p2(4:145,0)) ;p2_ave_d print,'The EA temperatures varied from ',sstr(eatemp1),' to ',sstr(eatemp3),' for the Baseline & ' print,sstr(eatemp1_2),' to ',sstr(eatemp3_2),' for this test.' ;_________________________________________________________________________________________ ; **** Plot DLIS Values **** !x.title='Pixel Number' ;Dark Current... ;calculate actual signal... dc1=max(p0(4:145,1))-p0(*,1) ;subtract signal from max value (invert) dc2=max(p1(4:145,1))-p1(*,1) dc3=max(p2(4:145,1))-p2(*,1) dc1_2=max(p0_2(4:145,1))-p0_2(*,1) dc2_2=max(p1_2(4:145,1))-p1_2(*,1) dc3_2=max(p2_2(4:145,1))-p2_2(*,1) ptitle='DLIS Dark Current for 8 ms read, '+description max1=max(dc1) ;maximum of baseline data max2=max(dc1_2) ;maximum of new data top=max([max1,max2]) !y.range=[0,1.2*top] ;leave room for legend plot,dc1,linestyle=2,thick=2,title=ptitle, ytitle='Raw counts' oplot,dc2,linestyle=2,thick=2 oplot,dc3,linestyle=2,thick=2 oplot,dc1_2,linestyle=0,thick=1 oplot,dc2_2,linestyle=0,thick=1 oplot,dc3_2,linestyle=0,thick=1 oplot,[20,40],[1.1*top,1.1*top],linestyle=2,thick=2 xyouts,50,1.1*top,'Baseline, T = '+sstr(ir(10))+' K, Ave. = '+sstr(mean([dc1,dc2,dc3]))+' dn/8ms.'+star oplot,[20,40],[1.15*top,1.15*top],linestyle=0,thick=1 xyouts,50,1.15*top,'This Test, T = '+sstr(ir2(10))+' K, Ave. = '+sstr(mean([dc1_2,dc2_2,dc3_2]))+' dn/8ms.' if print ne 'y' then read,'Hit Return to Continue ',ans ;Shutter Effect... ptitle='DLIS Shutter Effect for 8 ms read, '+description max1=max(p0(*,1)-p0(*,0)) ;maximum of baseline data max2=max(p0_2(*,1)-p0_2(*,0)) ;maximum of new data top=max([max1,max2]) bottom=min([min(p0(*,1)-p0(*,0)),min(p0_2(*,1)-p0_2(*,0))]) range=top-bottom !y.range=[bottom,top+.25*range] ;leave room for legend plot,p0(*,1)-p0(*,0),linestyle=2,thick=2,title=ptitle, ytitle='Raw counts' oplot,p1(*,1)-p1(*,0),linestyle=2,thick=2 oplot,p0_2(*,1)-p0_2(*,0),linestyle=0,thick=1 oplot,p1_2(*,1)-p1_2(*,0),linestyle=0,thick=1 oplot,[20,40],[top+.05*range,top+.05*range],linestyle=2,thick=2 xyouts,50,top+.05*range,'Baseline, .25 ms, T = '+sstr(ir(1))+' K, Ave. = '+sstr(ir(8))+' dn/8ms.'+star oplot,[20,40],[top+.10*range,top+.10*range],linestyle=2,thick=2 xyouts,50,top+.10*range,'Baseline, 60 sec, T = '+sstr(ir(10))+' K, Ave. = '+sstr(ir(17))+' dn/8ms.'+star oplot,[20,40],[top+.15*range,top+.15*range],linestyle=0,thick=1 xyouts,50,top+.15*range,'This Test, .25 ms, T = '+sstr(ir2(1))+' K, Ave. = '+sstr(ir2(8))+' dn/8ms.' oplot,[20,40],[top+.20*range,top+.20*range],linestyle=0,thick=1 xyouts,50,top+.20*range,'This Test, 60 sec, T = '+sstr(ir2(10))+' K, Ave. = '+sstr(ir2(17))+' dn/8ms.' if print ne 'y' then read,'Hit Return to Continue ',ans ;Cal Lamp Signal... ptitle='DLIS Cal Lamp Signal for 8 ms read, '+description max1=max(p2(*,1)-p2(*,0)) ;maximum of baseline data max2=max(p2_2(*,1)-p2_2(*,0)) ;maximum of new data top=max([max1,max2]) bottom=min([min(p2(*,1)-p2(*,0)),min(p2_2(*,1)-p2_2(*,0))]) !y.range=[0,1.15*top] ;leave room for legend plot,p2(*,1)-p2(*,0),linestyle=2,thick=2,title=ptitle, ytitle='Raw counts' oplot,p2_2(*,1)-p2_2(*,0),linestyle=0,thick=1 oplot,[20,40],[1.05*top,1.05*top],linestyle=2,thick=2 xyouts,50,1.05*top,'Baseline, T = '+sstr(ir(19))+' K, Ave. = '+sstr(ir(26))+' dn/8ms.'+star oplot,[20,40],[1.1*top,1.1*top],linestyle=0,thick=1 xyouts,50,1.1*top,'This Test, T = '+sstr(ir2(19))+' K, Ave. = '+sstr(ir2(26))+' dn/8ms.' if print ne 'y' then read,'Hit Return to Continue ',ans ;_________________________________________________________________________________________ ; **** Plot ULIS Values **** !x.title='Pixel Number' ;Dark Current... ;calculate actual signal... dc1=max(p0(4:145,3))-p0(*,3) ;subtract signal from max value (invert) dc2=max(p1(4:145,3))-p1(*,3) dc3=max(p2(4:145,3))-p2(*,3) dc1_2=max(p0_2(4:145,3))-p0_2(*,3) dc2_2=max(p1_2(4:145,3))-p1_2(*,3) dc3_2=max(p2_2(4:145,3))-p2_2(*,3) ptitle='ULIS Dark Current for 8 ms read, '+description max1=max(dc1) ;maximum of baseline data max2=max(dc1_2) ;maximum of new data top=max([max1,max2]) !y.range=[0,1.2*top] ;leave room for legend plot,dc1,linestyle=2,thick=2,title=ptitle, ytitle='Raw counts' oplot,dc2,linestyle=2,thick=2 oplot,dc3,linestyle=2,thick=2 oplot,dc1_2,linestyle=0,thick=1 oplot,dc2_2,linestyle=0,thick=1 oplot,dc3_2,linestyle=0,thick=1 oplot,[20,40],[1.1*top,1.1*top],linestyle=2,thick=2 xyouts,50,1.1*top,'Baseline, T = '+sstr(ir(10))+' K, Ave. = '+sstr(mean([dc1,dc2,dc3]))+' dn/8ms.'+star oplot,[20,40],[1.15*top,1.15*top],linestyle=0,thick=1 xyouts,50,1.15*top,'This Test, T = '+sstr(ir2(10))+' K, Ave. = '+sstr(mean([dc1_2,dc2_2,dc3_2]))+' dn/8ms.' if print ne 'y' then read,'Hit Return to Continue ',ans ;Shutter Effect... ptitle='ULIS Shutter Effect for 8 ms read, '+description max1=max(p0(*,3)-p0(*,2)) ;maximum of baseline data max2=max(p0_2(*,3)-p0_2(*,2)) ;maximum of new data top=max([max1,max2]) bottom=min([min(p0(*,3)-p0(*,2)),min(p0_2(*,3)-p0_2(*,2))]) range=top-bottom !y.range=[bottom,top+.25*range] ;leave room for legend plot,p0(*,3)-p0(*,2),linestyle=2,thick=2,title=ptitle, ytitle='Raw counts' oplot,p1(*,3)-p1(*,2),linestyle=2,thick=2 oplot,p0_2(*,3)-p0_2(*,2),linestyle=0,thick=1 oplot,p1_2(*,3)-p1_2(*,2),linestyle=0,thick=1 oplot,[20,40],[top+.05*range,top+.05*range],linestyle=2,thick=2 xyouts,50,top+.05*range,'Baseline, .25 ms, T = '+sstr(ir(1))+' K, Ave. = '+sstr(ir(6))+' dn/8ms.'+star oplot,[20,40],[top+.10*range,top+.10*range],linestyle=2,thick=2 xyouts,50,top+.10*range,'Baseline, 60 sec, T = '+sstr(ir(10))+' K, Ave. = '+sstr(ir(15))+' dn/8ms.'+star oplot,[20,40],[top+.15*range,top+.15*range],linestyle=0,thick=1 xyouts,50,top+.15*range,'This Test, .25 ms, T = '+sstr(ir2(1))+' K, Ave. = '+sstr(ir2(6))+' dn/8ms.' oplot,[20,40],[top+.20*range,top+.20*range],linestyle=0,thick=1 xyouts,50,top+.20*range,'This Test, 60 sec, T = '+sstr(ir2(10))+' K, Ave. = '+sstr(ir2(15))+' dn/8ms.' if print ne 'y' then read,'Hit Return to Continue ',ans ;Cal Lamp Signal... ptitle='ULIS Cal Lamp Signal for 8 ms read, '+description max1=max(p2(*,3)-p2(*,2)) ;maximum of baseline data max2=max(p2_2(*,3)-p2_2(*,2)) ;maximum of new data top=max([max1,max2]) bottom=min([min(p2(*,3)-p2(*,2)),min(p2_2(*,3)-p2_2(*,2))]) !y.range=[0,1.15*top] ;leave room for legend plot,p2(*,3)-p2(*,2),linestyle=2,thick=2,title=ptitle, ytitle='Raw counts' oplot,p2_2(*,3)-p2_2(*,2),linestyle=0,thick=1 oplot,[20,40],[1.05*top,1.05*top],linestyle=2,thick=2 xyouts,50,1.05*top,'Baseline, T = '+sstr(ir(19))+' K, Ave. = '+sstr(ir(24))+' dn/8ms.'+star oplot,[20,40],[1.1*top,1.1*top],linestyle=0,thick=1 xyouts,50,1.1*top,'This Test, T = '+sstr(ir2(19))+' K, Ave. = '+sstr(ir2(24))+' dn/8ms.' if print ne 'y' then read,'Hit Return to Continue ',ans ;_________________________________________________________________________________________ ; **** Print to file **** printf,1,format='(/,75("_"))' printf,1,format='("IR Data from Health Check",/)' printf,1, $ format='("The first is a quick (noisy) dark, Second is an averaged (60 sec) dark")' printf,1,format='("The third is an averaged (60 sec) bright. All are shutter closed minus shutter open.")' printf,1,eatemp1,eatemp3,eatemp1_2,eatemp3_2, $ format='("During the IR exposures the EA temp. was ",f5.1," to ",f5.1," for the Baseline & ",f5.1," to ",f5.1," for this test.")' ; IR Table header printf,1,format='(/,2x,"Comb",T16,"IR Lamps",T28,"Chip",T37,"Collect",T47,"Sample",T57,"Precharge",T72,"Up",T80,"Up",T88,"Down",T97,"Down")' printf,1,format='(2x,"read",T18,"word",T28,"temp",T37,"time (s)",T47,"time (ms)",T72,"Max.",T80,"Ave.",T88,"Max.",T97,"Ave.",/)' ; First Combination Exposure (dark): printf,1,ir_lamps2(0),ir2(1),ir2(2),ir2(3),ir2(4),ir2(5),ir2(6),ir2(7),ir2(8), $ format='(2x,"First",T18,a4,T28,f6.2,T37,f6.3,T47,f5.3,T57,f7.0,T67,f8.1,T76,f8.1,T85,f8.1,T94,f8.1)' printf,1,ir_lamps(0),ir(1),ir(2),ir(3),ir(4),ir(5),ir(6),ir(7),ir(8), $ format='(2x,"Base 1",T18,a4,T28,f6.2,T37,f6.3,T47,f5.3,T57,f7.0,T67,f8.1,T76,f8.1,T85,f8.1,T94,f8.1)' printf,1,ir2(1)-ir(1),ir2(5)-ir(5),ir2(6)-ir(6),ir2(7)-ir(7),ir2(8)-ir(8), $ format='(2x,"Difference",T28,f6.2,T67,f8.1,T76,f8.1,T85,f8.1,T94,f8.1,/)' ; Second Combination Exposure (dark): printf,1,ir_lamps2(1),ir2(10),ir2(11),ir2(12),ir2(13),ir2(14),ir2(15),ir2(16),ir2(17), $ format='(2x,"Second",T18,a4,T28,f6.2,T37,f6.3,T47,f5.3,T57,f7.0,T67,f8.1,T76,f8.1,T85,f8.1,T94,f8.1)' printf,1,ir_lamps(1),ir(10),ir(11),ir(12),ir(13),ir(14),ir(15),ir(16),ir(17), $ format='(2x,"Base 2",T18,a4,T28,f6.2,T37,f6.3,T47,f5.3,T57,f7.0,T67,f8.1,T76,f8.1,T85,f8.1,T94,f8.1)' printf,1,ir2(10)-ir(10),ir2(14)-ir(14),ir2(15)-ir(15),ir2(16)-ir(16),ir2(17)-ir(17), $ format='(2x,"Difference",T28,f6.2,T67,f8.1,T76,f8.1,T85,f8.1,T94,f8.1,/)' ; Third Combination Exposure (bright): printf,1,ir_lamps2(2),ir2(19),ir2(20),ir2(21),ir2(22),ir2(23),ir2(24),ir2(25),ir2(26), $ format='(2x,"Third",T18,a4,T28,f6.2,T37,f6.3,T47,f5.3,T57,f7.0,T67,f8.1,T76,f8.1,T85,f8.1,T94,f8.1)' printf,1,ir_lamps(2),ir(19),ir(20),ir(21),ir(22),ir(23),ir(24),ir(25),ir(26), $ format='(2x,"Base 3",T18,a4,T28,f6.2,T37,f6.3,T47,f5.3,T57,f7.0,T67,f8.1,T76,f8.1,T85,f8.1,T94,f8.1)' printf,1,ir2(19)-ir(19),100*(ir2(23)-ir(23))/ir(23),100*(ir2(24)-ir(24))/ir(24), $ 100*(ir2(25)-ir(25))/ir(25),100*(ir2(26)-ir(26))/ir(26), $ format='(2x,"Difference (%)",T28,f6.2,T67,f8.1,"%",T76,f8.1,"%",T85,f8.1,"%",T94,f8.1,"%")' ; **** Clean up & Outa here **** ;!p.color=255 ;white ;!p.background=0 ;on black !p.multi=[0,1,1] !p.ticklen=.02 ;returns to no grid !x.gridstyle=0 ;solid gridlines !y.gridstyle=0 ;solid gridlines !X.range=[0,0] !Y.range=[0,0] !x.title='' !y.title='' !p.font=-1 ;vector drawn fonts end