Pro rad_stats,file ; 24Sep02 by C. See ; The program counts the energetic particle hits in the images of "Log". ; It does this by creating a synthetic 'uneffected' image set from the first ; three dark frames, and comparing that to the rest of the dark images in the ; log. Variations greater than 5 dn are considered a hit. printflag=0 if n_params() eq 0 then file = "~/rad_stats.txt" ;list of Logs to check filt=0 ;hardwire filter off ;___________________________________ ; Count Logs in File... Readlogs: close,3 openw,3,"~/rad_stats.out" printf,3,'This is the Cosmic Ray Hit data for the Logs listed in: ',file printf,3,'Today is: ',systime(0),string(10b) Print,'These are the logs in the file: ',file Printf,3,'These are the logs in the file: ',file printf,3,' Log # Log Name' n=0 line='' close,1 openr,1,file while not eof(1) do begin n=n+1 ;logs counter readf,1,line print,n,' ',line printf,3,n,' ',line endwhile close,1 ans='' Read,"Do you Want to Contniue? (y or n): ",ans if ans ne 'y' then goto,exit ;___________________________________ ; Loop on Logs in File... nlogs=n distdata=fltarr(12,nlogs) ;hits>5,10,15,20,25,30,35,40,45,50,100,j/filecount x nlogs temp=fltarr(nlogs) ;chip temp at the beginning of the test. maxhit=intarr(nlogs) ;amplitude of the largest hit. testdate=strarr(nlogs) ;date of test, text testjuli=lonarr(nlogs) ;date of test, juliday imagefilesused=intarr(nlogs) ;number of dark, compressed image files in log logname=strarr(nlogs) ;the names of the logs mridev=fltarr(nlogs) ;standard deviation of mri hits slidev=fltarr(nlogs) ;standard deviation of sli hits hridev=fltarr(nlogs) ;standard deviation of hri hits mriave=fltarr(nlogs) ;average size of mri hits sliave=fltarr(nlogs) ;average size of sli hits hriave=fltarr(nlogs) ;average size of hri hits overalldev=fltarr(nlogs) ;vector sum of mri, sli & hri deviations overallave=fltarr(nlogs) ;average of the averages minexp=intarr(nlogs) ;minimum exposure time maxexp=intarr(nlogs) ;maximum exposure time minexp(*)=3000 ;just to be sure it gets updated ;setup window for first MRIs (print first mri to verify dust cover is on) hight=fix(nlogs/3)+1 !p.multi=[0,3,hight] window,3,xsize=700,ysize=900 ;__________________________ ;loop on Logs starts here... close,1 openr,1,file for logcount=0,nlogs-1 do begin readf,1,line Log=line logname(logcount)=log cd,Log+'/DB/Image' spawn,'lsf',files,/noshell & siz=size(files) & nfiles=siz(1) ;for lots of files if nfiles lt 10 then goto,nextlog ;___________________________________ ; read in the first 3 dark images... j=0 ;file index counter mrifile=intarr(3) slifile=intarr(3) hrifile=intarr(3) for i=0,2 do begin ;the first 3 dark images mricount='' slicount='' hricount='' while not (mricount eq 'done' and slicount eq 'done' and hricount eq 'done') do begin d_read,files(j),h,p ;skip uncompressed images s=size(p) if s(2) ne 256 then goto,nextimage ;short MRI, or uncompressed if lamps(files(j)) eq '0000' or lamps(files(j)) eq '0001' then begin if mtype(files(j)) eq 21 and mricount eq '' then begin & mrifile(i)=j & mricount='done' & endif if mtype(files(j)) eq 22 and slicount eq '' then begin & slifile(i)=j & slicount='done' & endif if mtype(files(j)) eq 23 and hricount eq '' then begin & hrifile(i)=j & hricount='done' & endif endif nextimage: j=j+1 endwhile endfor ;___ MRI: ;____________________________________ ;Read in reference images... d_read,files(mrifile(0)),h,p & mri1=p & temp0=d_value(h,22) d_read,files(mrifile(1)),h,p & mri2=p d_read,files(mrifile(2)),h,p & mri3=p ;remove average per row... for i=0,255 do mri1(*,i)=mri1(*,i)-min(mri1(*,i)) for i=0,255 do mri2(*,i)=mri2(*,i)-min(mri2(*,i)) for i=0,255 do mri3(*,i)=mri3(*,i)-min(mri3(*,i)) index=where(abs(mri1-mri2) gt 1) if index(0) eq -1 then goto,diffmri13 s=size(index) for i=0l,s(1)-1 do mri1(index(i))=median([mri1(index(i)),mri2(index(i)),mri3(index(i))]) for i=0l,s(1)-1 do mri2(index(i))=median([mri1(index(i)),mri2(index(i)),mri3(index(i))]) diffmri13: index=where(abs(mri1-mri3) gt 1) if index(0) eq -1 then goto,diffmri23 s=size(index) for i=0l,s(1)-1 do mri1(index(i))=median([mri1(index(i)),mri2(index(i)),mri3(index(i))]) for i=0l,s(1)-1 do mri3(index(i))=median([mri1(index(i)),mri2(index(i)),mri3(index(i))]) diffmri23: index=where(abs(mri2-mri3) gt 1) if index(0) eq -1 then goto,averagemri s=size(index) for i=0l,s(1)-1 do mri2(index(i))=median([mri1(index(i)),mri2(index(i)),mri3(index(i))]) for i=0l,s(1)-1 do mri3(index(i))=median([mri1(index(i)),mri2(index(i)),mri3(index(i))]) averagemri: mri=(mri1+mri2+mri3)/3 ;;show3,mri ;;surface,mri,xrange=[0,180],yrange=[0,256],zrange=[-10,150],title=log,charsize=2 ;___ SLI: ;____________________________________ ;Read in reference images... d_read,files(slifile(0)),h,p & sli1=p d_read,files(slifile(1)),h,p & sli2=p d_read,files(slifile(2)),h,p & sli3=p ;remove average per row... for i=0,255 do sli1(*,i)=sli1(*,i)-min(sli1(*,i)) for i=0,255 do sli2(*,i)=sli2(*,i)-min(sli2(*,i)) for i=0,255 do sli3(*,i)=sli3(*,i)-min(sli3(*,i)) index=where(abs(sli1-sli2) gt 1) if index(0) eq -1 then goto,diffsli13 s=size(index) for i=0l,s(1)-1 do sli1(index(i))=median([sli1(index(i)),sli2(index(i)),sli3(index(i))]) for i=0l,s(1)-1 do sli2(index(i))=median([sli1(index(i)),sli2(index(i)),sli3(index(i))]) diffsli13: index=where(abs(sli1-sli3) gt 1) if index(0) eq -1 then goto,diffsli23 s=size(index) for i=0l,s(1)-1 do sli1(index(i))=median([sli1(index(i)),sli2(index(i)),sli3(index(i))]) for i=0l,s(1)-1 do sli3(index(i))=median([sli1(index(i)),sli2(index(i)),sli3(index(i))]) diffsli23: index=where(abs(sli2-sli3) gt 1) if index(0) eq -1 then goto,averagesli s=size(index) for i=0l,s(1)-1 do sli2(index(i))=median([sli1(index(i)),sli2(index(i)),sli3(index(i))]) for i=0l,s(1)-1 do sli3(index(i))=median([sli1(index(i)),sli2(index(i)),sli3(index(i))]) averagesli: sli=(sli1+sli2+sli3)/3 ;___ HRI: ;____________________________________ ;Read in reference images... d_read,files(hrifile(0)),h,p & hri1=p d_read,files(hrifile(1)),h,p & hri2=p d_read,files(hrifile(2)),h,p & hri3=p ;remove average per row... for i=0,255 do hri1(*,i)=hri1(*,i)-min(hri1(*,i)) for i=0,255 do hri2(*,i)=hri2(*,i)-min(hri2(*,i)) for i=0,255 do hri3(*,i)=hri3(*,i)-min(hri3(*,i)) index=where(abs(hri1-hri2) gt 1) if index(0) eq -1 then goto,diffhri13 s=size(index) for i=0l,s(1)-1 do hri1(index(i))=median([hri1(index(i)),hri2(index(i)),hri3(index(i))]) for i=0l,s(1)-1 do hri2(index(i))=median([hri1(index(i)),hri2(index(i)),hri3(index(i))]) diffhri13: index=where(abs(hri1-hri3) gt 1) if index(0) eq -1 then goto,diffhri23 s=size(index) for i=0l,s(1)-1 do hri1(index(i))=median([hri1(index(i)),hri2(index(i)),hri3(index(i))]) for i=0l,s(1)-1 do hri3(index(i))=median([hri1(index(i)),hri2(index(i)),hri3(index(i))]) diffhri23: index=where(abs(hri2-hri3) gt 1) if index(0) eq -1 then goto,averagehri s=size(index) for i=0l,s(1)-1 do hri2(index(i))=median([hri1(index(i)),hri2(index(i)),hri3(index(i))]) for i=0l,s(1)-1 do hri3(index(i))=median([hri1(index(i)),hri2(index(i)),hri3(index(i))]) averagehri: hri=(hri1+hri2+hri3)/3 print,"Processing Log: ",log,string(7b) ;______________________________________________ ;average all image files. kmri=1 & ksli=1 & khri=1 ;counters for files processed for k=1,nfiles do begin if lamps(files(k-1)) ne '0000' or lamps(files(k-1)) eq '0001' then goto,nextfile4 d_read,files(k-1),h,p s=size(p) if s(2) ne 256 then goto,nextfile4 ;short MRI, or uncompressed if d_value(h,36) lt minexp(logcount) then minexp(logcount)=d_value(h,36) if d_value(h,36) gt maxexp(logcount) then maxexp(logcount)=d_value(h,36) p=removerowslope(p) ;remove average & row slope if d_value(h,96) eq 21 then begin ;mri mri=(kmri*mri+p)/(kmri+1) kmri=kmri+1 endif if d_value(h,96) eq 22 then begin ;sli sli=(ksli*sli+p)/(ksli+1) ksli=ksli+1 endif if d_value(h,96) eq 23 then begin ;hri hri=(khri*hri+p)/(khri+1) khri=khri+1 endif nextfile4: endfor ;______________________________________________ ;average all image files, cutout pixels which are greater than 10 dN from mean. kmri=1 & ksli=1 & khri=1 ;counters for files processed for k=1,nfiles do begin if lamps(files(k-1)) ne '0000' or lamps(files(k-1)) eq '0001' then goto,nextfile2 d_read,files(k-1),h,p s=size(p) if s(2) ne 256 then goto,nextfile2 ;short MRI, or uncompressed p=removerowslope(p) ;remove average & row slope if d_value(h,96) eq 21 then begin ;mri index=where(abs(p-mri) lt 10) if index(0) eq -1 then goto,nextfile2 mri(index)=(kmri*mri(index)+p(index))/(kmri+1) kmri=kmri+1 endif if d_value(h,96) eq 22 then begin ;sli index=where(abs(p-sli) lt 10) if index(0) eq -1 then goto,nextfile2 sli(index)=(ksli*sli(index)+p(index))/(ksli+1) ksli=ksli+1 endif if d_value(h,96) eq 23 then begin ;hri index=where(abs(p-hri) lt 10) if index(0) eq -1 then goto,nextfile hri(index)=(khri*hri(index)+p(index))/(khri+1) khri=khri+1 endif nextfile2: endfor ;show3,mri surface,hri,xrange=[0,160],yrange=[0,256],zrange=[-10,150],title=log,charsize=2 ;______________________________________________ ;calculate mean and standard deviation kmri=1 & ksli=1 & khri=1 ;counters for files processed for k=1,nfiles do begin if lamps(files(k-1)) ne '0000' or lamps(files(k-1)) eq '0001' then goto,nextfile3 d_read,files(k-1),h,p s=size(p) if s(2) ne 256 then goto,nextfile3 ;short MRI, or uncompressed p=removerowslope(p) ;remove average & row slope if d_value(h,96) eq 21 then begin ;mri newdev=stdev(abs(p-mri),ave) mridev(logcount)=sqrt(mridev(logcount)^2+newdev^2) mriave(logcount)=(kmri*mriave(logcount)+ave)/(kmri+1) kmri=kmri+1 endif if d_value(h,96) eq 22 then begin ;sli newdev=stdev(abs(p-sli),ave) slidev(logcount)=sqrt(slidev(logcount)^2+newdev^2) sliave(logcount)=(ksli*sliave(logcount)+ave)/(ksli+1) ksli=ksli+1 endif if d_value(h,96) eq 23 then begin ;hri newdev=stdev(abs(p-hri),ave) hridev(logcount)=sqrt(hridev(logcount)^2+newdev^2) hriave(logcount)=(khri*hriave(logcount)+ave)/(khri+1) khri=khri+1 endif nextfile3: endfor overalldev(logcount)=sqrt(mridev(logcount)^2+slidev(logcount)^2+hridev(logcount)^2) overallave(logcount)=(mriave(logcount)+sliave(logcount)+hriave(logcount))/3 ;______________________________________________ ; create array of cosmic ray hit effects... array=intarr(13000000) j=0 ;counts the number of hits > 5 dn filecount=0 ;counter for image files actually used (processed vs skipped) for n=0,nfiles-1 do begin if lamps(files(n)) ne '0000' or lamps(files(n)) eq '0001' then goto,nextfile d_read,files(n),h,p s=size(p) if s(2) ne 256 then goto,nextfile ;short MRI, or uncompressed p=removerowslope(p) ;remove average & row slope filecount=filecount+1 ;count of actual files used if d_value(h,96) eq 21 then begin ;mri ;;if max(abs(p-mri)) gt 500 then show3,p-mri index=where(abs(p-mri) gt 5) if index(0) eq -1 then goto,nextfile s=size(index) array(j:j+s(1)-1)=abs(p(index)-mri(index)) j=j+s(1) endif if d_value(h,96) eq 22 then begin ;sli ;;if max(abs(p-sli)) gt 500 then show3,p-sli index=where(abs(p-sli) gt 5) if index(0) eq -1 then goto,nextfile s=size(index) array(j:j+s(1)-1)=abs(p(index)-sli(index)) j=j+s(1) endif if d_value(h,96) eq 23 then begin ;hri ;;if max(abs(p-hri)) gt 500 then show3,p-hri index=where(abs(p-hri) gt 5) if index(0) eq -1 then goto,nextfile s=size(index) array(j:j+s(1)-1)=abs(p(index)-hri(index)) j=j+s(1) endif nextfile: endfor ;______________________________________________ ;Save Data... ;;Print,Log ;;Print,'The total number of hits greater than 5 dn was: ',sstr(j) ;;print,'The initial chip temperature is: ',temp0,string(10b) s=size(array) nhits=float(j)/filecount print,'The number of hits greater that 5 dn is: ',nhits,' per image' index=where(array ge 10) s=size(index) if index(0) eq -1 then s(*)=0 ;i.e. no pixels over the limit perimage10=float(s(1))/filecount ;;print,'The number of hits greater that 10 dn is: ',perimage10,' per image' index=where(array ge 15) s=size(index) if index(0) eq -1 then s(*)=0 ;i.e. no pixels over the limit perimage15=float(s(1))/filecount ;;print,'The number of hits greater that 15 dn is: ',perimage15,' per image' index=where(array ge 20) s=size(index) if index(0) eq -1 then s(*)=0 ;i.e. no pixels over the limit perimage20=float(s(1))/filecount ;;print,'The number of hits greater that 20 dn is: ',perimage20,' per image' index=where(array ge 25) s=size(index) if index(0) eq -1 then s(*)=0 ;i.e. no pixels over the limit perimage25=float(s(1))/filecount ;;print,'The number of hits greater that 25 dn is: ',perimage25,' per image' index=where(array ge 30) s=size(index) if index(0) eq -1 then s(*)=0 ;i.e. no pixels over the limit perimage30=float(s(1))/filecount ;;print,'The number of hits greater that 30 dn is: ',perimage30,' per image' index=where(array ge 35) s=size(index) if index(0) eq -1 then s(*)=0 ;i.e. no pixels over the limit perimage35=float(s(1))/filecount ;;print,'The number of hits greater that 35 dn is: ',perimage35,' per image' index=where(array ge 40) s=size(index) if index(0) eq -1 then s(*)=0 ;i.e. no pixels over the limit perimage40=float(s(1))/filecount ;;print,'The number of hits greater that 40 dn is: ',perimage40,' per image' index=where(array ge 45) s=size(index) if index(0) eq -1 then s(*)=0 ;i.e. no pixels over the limit perimage45=float(s(1))/filecount ;;print,'The number of hits greater that 45 dn is: ',perimage45,' per image' index=where(array ge 50) s=size(index) if index(0) eq -1 then s(*)=0 ;i.e. no pixels over the limit perimage50=float(s(1))/filecount ;;print,'The number of hits greater that 50 dn is: ',perimage50,' per image' index=where(array ge 100) s=size(index) if index(0) eq -1 then s(*)=0 ;i.e. no pixels over the limit perimage100=float(s(1))/filecount ;;print,'The number of hits greater that 100 dn is: ',perimage100,' per image' distdata(*,logcount)=$ [float(j)/filecount,perimage10,perimage15,perimage20,perimage25,perimage30,perimage35,perimage40,perimage45,perimage50,perimage100,0] temp(logcount)=temp0 maxhit(logcount)=max(array) testdate(logcount)=logamerdate(log) ;date of test, mo/day/yr testjuli(logcount)=logjuli(log) ;date of test, juliday imagefilesused(logcount)=filecount close,2 openw,2,Log+"/rad_hits.out" Printf,2,Log print,'The initial chip temperature is: ',temp0 printf,2,'The initial chip temperature is: ',temp0 Printf,2,'The total number of hits greater than 5 dn was: ',sstr(j) Printf,2,'The total number of images used was: ',sstr(filecount) Printf,2,'The maximum hit (in dN) was: ',sstr(max(array)),string(10b) printf,2,'The number of hits greater that 5 dn is: ',nhits,' per image' printf,2,'The number of hits greater that 10 dn is: ',perimage10,' per image' printf,2,'The number of hits greater that 20 dn is: ',perimage20,' per image' printf,2,'The number of hits greater that 25 dn is: ',perimage25,' per image' printf,2,'The number of hits greater that 35 dn is: ',perimage35,' per image' printf,2,'The number of hits greater that 50 dn is: ',perimage50,' per image' printf,2,'The number of hits greater that 100 dn is: ',perimage100,' per image' close,2 nextlog: endfor ;end of loop on logcount ;____________________________ ;Write History Data to File... Printf,3,string(10b),'The following table presents the average number of cosmic ray ',$ 'hits per image with amplitudes greater than the threshold indicated.',string(10b) label=['5','10','15','20','25','30','35','40','45','50','100','ymax'] printf,3,format='("Log # = ",$)' for i=1,nlogs do printf,3,i,format='(i9,$)' printf,3,'' printf,3,format='("Date = ",$)' for i=0,nlogs-1 do printf,3,testdate(i),format='(a9,$)' printf,3,'' printf,3,format='("Ymax = ",$)' for i=0,nlogs-1 do printf,3,maxhit(i),format='(i9,$)' printf,3,'' printf,3,format='("# files = ",$)' for i=0,nlogs-1 do printf,3,imagefilesused(i),format='(i9,$)' printf,3,'' printf,3,format='("ChipTemp =",$)' for i=0,nlogs-1 do printf,3,temp(i),format='((F9.1,$))' printf,3,'' printf,3,format='("Exp Time: ",$)' for i=0,nlogs-1 do printf,3,sstr(fix(minexp(i))),sstr(fix(maxexp(i))),format='((2x,a3,"/",a3,$))' printf,3,'' printf,3,format='("Stdev (dn)",$)' for i=0,nlogs-1 do printf,3,overalldev(i),format='((F9.2,$))' printf,3,'' printf,3,format='("Hit Ave =",$)' for i=0,nlogs-1 do printf,3,overallave(i),format='((F9.2,$))' printf,3,'' printf,3,'' printf,3,format='("Threshold Number of Hits > Threshold (on the average, per image")' for i=0,11 do begin printf,3,label(i),format='(a4," dN ",$)' for j=0,nlogs-1 do printf,3,distdata(i,j),format='((f9.2,$))' printf,3,'' endfor printf,3,string(10b),"Ymax is the amplitude of the largest cosmic ray hit in all of the Images" close,3 ;______________ ;Make plots.. plot: ;______________ ;Plot Distribution... If printflag eq 0 then window,0,xsize=600,ysize=900 !p.multi=[0,1,1] ;first log... symbol=[1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7] ;plot sym type linesty=[1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3] ;plot line type x=[5,10,15,20,25,30,35,40,45,50,100,maxhit(0)] y=distdata(*,0) plot,x,y,psym=symbol(0),xrange=[0,110],yrange=[0,25],Title='Distribution of Rad Hits',$ xtitle='X = Hit Amplitude (dN)',ytitle='Total Number of Hits > X, per Image' x2=findgen(100) y2=spline(x,y,x2,5) oplot,x2,y2,linestyle=linesty(0) ;subsaquent logs... for m=1,nlogs-1 do begin x=[5,10,15,20,25,30,35,40,45,50,100,maxhit(m)] y=distdata(*,m) oplot,x,y,psym=-symbol(m),linestyle=linesty(m) x2=findgen(100) y2=spline(x,y,x2,5) ;; oplot,x2,y2,linestyle=linesty(m) endfor ; Legend... for i=0,nlogs-1 do begin ystep=0.03 ;fraction of range between entries (i.e. 3%) xstep=0.0 ;fraction of range between entries (i.e. 0%) yoffset=0.5 ;fraction of range to first entry (i.e. 50%) xoffset=0.5 ;fraction of range to first entry (i.e. 50%) space=0.1 ;fraction of range between dot and text (i.e. 10%) length=0.03 ;Length of line, fraction of range (i.e. 0% long) xrange=!x.crange(1)-!x.crange(0) yrange=!y.crange(1)-!y.crange(0) ypos=(!y.crange(0)+yoffset*yrange)+(ystep*yrange*i) xpos=(!x.crange(0)+xoffset*xrange)+(xstep*xrange*i) xspace=space*xrange xlength=length*xrange oplot,[xpos,xpos+xlength],[ypos,ypos],psym=-symbol(i),linestyle=linesty(i) xyouts,xpos+xlength+xspace,ypos,logname(i) endfor if printflag eq 0 then read,'Hit return to continue... ',ans ;______________ ;plot hit history... If printflag eq 0 then window,1 !p.multi=[0,1,1] ;plotted on separate graphs... startdate=testjuli(0) enddate=testjuli(nlogs-1) n_years=fix((enddate-startdate)/365)+1 startdate2=startdate-(n_years*365-(enddate-startdate))/2 enddate2=startdate2+365*n_years ;;enddate2=startdate+(fix((enddate-startdate)/365)+1)*365 dummy=LABEL_DATE(DATE_FORMAT='%M%Y') ;date=findgen(enddate+1-startdate)*n+startdate ;n=# of days between datapoints for i=0,11 do begin ;; plot,testjuli,distdata(i,*),xrange=[startdate2,enddate2],xtickformat='LABEL_DATE',xstyle=1,$ plot,testjuli,distdata(i,*),xrange=[startdate2,enddate2],xtickformat='LABEL_DATE',xstyle=1,$ title='History of Cosmic Ray hits greater than '+label(i)+' dN',$ xtitle='Date of Test', ytitle='# of Hits per Image > '+label(i)+' dN',$ yrange=[0,0],/ylog,xticks=n_years if printflag eq 0 then read,'Hit return to continue... ',ans endfor ;plot all on one graph... plot,testjuli,distdata(0,*),xrange=[startdate2,enddate2],xtickformat='LABEL_DATE',xstyle=1,$ title='History of Cosmic Ray hits',xticks=n_years,/ylog,yrange=[0.1,max(distdata)],$ xtitle='Date of Test', ytitle='# of Hits per Image ',psym=symbol(0) for i=0,11 do oplot,testjuli,distdata(i,*),linestyle=linesty(i),psym=-symbol(i) ; Legend... for i=0,11 do begin yoffset=0.7 ;fraction of range to first entry (i.e. 70%) xoffset=0.5 ;fraction of range to first entry (i.e. 50%) length=0.03 ;Length of line, fraction of range (i.e. 3% long) space=0.05 ;fraction of range between dot and text (i.e. 5%) ystep=0.02 ;fraction of range between entries (i.e. 2%) xrange=!x.crange(1)-!x.crange(0) yrange=!y.crange(1)-!y.crange(0) ypos=10^((!y.crange(0)+yoffset*yrange)+(ystep*yrange*i)) xpos=(!x.crange(0)+xoffset*xrange)+(xstep*xrange*i) xspace=space*xrange xlength=length*xrange oplot,[xpos,xpos+xlength],[ypos,ypos],psym=-symbol(i),linestyle=linesty(i) xyouts,xpos+xlength+xspace,ypos,label(i)+' dN' endfor ;______________ ;Plot Temperature vs time... If printflag eq 0 then window,2 plot,testjuli,temp,xrange=[startdate2,enddate2],xtickformat='LABEL_DATE',xstyle=1,$ title='History of Test Temperatures',xticks=n_years,yrange=[.9*min(temp),1.1*max(temp)],$ xtitle='Date of Test', ytitle='Temperature (K) ',psym=-symbol(0) ans='' If printflag eq 0 then read,'Hit return to continue...',ans ;______________ ;Plot Standard Deviation vs time... If printflag eq 0 then window,4 combined=[mridev,slidev,hridev] plot,testjuli,mridev,xrange=[startdate2,enddate2],xtickformat='LABEL_DATE',xstyle=1,$ title='History of Cosmic Ray Hit Standard Deviation',xticks=n_years,yrange=[0,1.1*max(combined)],$ xtitle='Date of Test', ytitle='Hit Standard Deviation (dN) ',psym=-7 oplot,testjuli,slidev,psym=-1 oplot,testjuli,hridev,psym=-2 xyouts,0.5,0.92,"MRI = X, SLI = +, HRI = *",/norm,alignment=.5,charsize=1.5 ;______________ ;Plot Averages vs time... If printflag eq 0 then window,5 combined=[mriave,sliave,hriave] plot,testjuli,mriave,xrange=[startdate2,enddate2],xtickformat='LABEL_DATE',xstyle=1,$ title='History of Average of Hits',xticks=n_years,yrange=[0,1.1*max(combined)],$ xtitle='Date of Test', ytitle='Hit Average (dN)',psym=-7 oplot,testjuli,sliave,psym=-1 oplot,testjuli,hriave,psym=-2 xyouts,0.5,0.92,"MRI = X, SLI = +, HRI = *",/norm,alignment=.5,charsize=1.5 ans='' If printflag eq 0 then read,'Hit return to continue...',ans ;____________________________________ ;Print Plots?... ans='' If printflag eq 0 then read,'Would you like to print the plots? (y or n): ',ans if ans eq "y" then begin pwin,3 printflag=1 set_plot,'ps' device,filename = '~/idl.ps',/palatino,/portrait,xsize=7.5,ysize=10, $ xoffset=.25,yoffset=.5,/inches device,filename = '~/idl.ps',font_size=12,/inches,scale_factor=1. command='lp -ofp14 -olm5 -olandscape ~/rad_stats.out' spawn,command goto,plot endif if printflag EQ 1 then begin device,/close_file spawn,'lp ~/idl.ps' set_plot,'x' ;returns to X windows environment endif ;____________________________________ ;Done... exit: ;stop !p.multi=[0,1,1] ;stop close,/all Print,'Done!' end ;;;____________________________________ ;;;make synthetic zero ms images... ;;zeromri=intarr(176,256) ;;zerosli=intarr(128,256) ;;zerohri=intarr(160,256) ;;column=zero_ms_max*findgen(256)/256 ;memory zone darkcurrent for 0 ms exposure ;;for i=0,175 do zeromri(i,0:255)=column ;;for i=0,127 do zerosli(i,0:255)=column ;;for i=0,159 do zerohri(i,0:255)=column