subr rigplot,count,name_in,dxs,dys,seeing,meanint,kstart ;try 3 per page ;seeing plot x0=( .03 + (count%3)*0.3333 ) > .05 ;leftmost needs more room x1=x0+.25 y0=.33 y1=y0+.19 window,x0,x1,y0,y1 limits,0,0,0,0 sy='mean first difference/mean intensity' st=name_in+' seeing measure' xx=indgen(seeing)+kstart sx='image number (total of '+istring(dimen(xx,0),3,2)+')' pen,1 plot,xx,seeing,sx,sy,st ;mark the best ones sq=reverse(index(seeing)) n=dimen(xx,0) < 5 ;top 5 ix=0 for i=0,n-1 do { iq=sq(i) ix=( !wxb+(iq+kstart-!mxb)*(!wxt-!wxb)/(!mxt-!mxb) ) iy=!wyb+(seeing(iq)-!myb)*(!wyt-!wyb)/(!myt-!myb) pslabel,istring(iq+kstart,3,2),ix+.005,iy+.005,8,90,'Times-Bold' } ;also plot the mean intensities ;just crudely for now, no appropiate rhs ticks or labels xq=meanint*(!myt-!myb)/4096. oplot,xx,xq,-2 pslabel,'+''s are mean intensity, 0 to full well range',!wxt+.005,!wyt-.005,8 - ,270,'Times-Roman' ;offsets ;2/23/93 changed to plot the computed (usually hipass) offsets ;rather than the raw offset pairs y0=y0+.245 y1=y0+.19 window,x0,x1,y0,y1 ;use limits of +-10 unless there are larger values in d limits,0,0,( min(dys) < min(dxs) ), ( max(dxs) > max(dys)) sy='x and y offsets in pixels' st=name_in+' rigid alignment results' sx='' pen,1 plot,xx,dxs,sx,sy,st pen,3 oplot,xx,dys ;indicate the bad ones ;a future project endsubr ;============================================================================== subr rotplot,r_ref,r,name_in,kstart x0=.04 x1=x0+.25 y0=.05 y1=y0+.19 ;rotation plot, fix range of angles so they can be compared window,x0,x1,y0,y1 limits,0,0,-40,120 xq=(r+r_ref)%360 xq=xq+360*(xq lt 0) xq=xq-360.*(xq gt 180) yq=r_ref%360 yq=yq+360*(yq lt 0) yq=yq-360.*(yq gt 180) sx='image number' sy='La Palma rotation angle' st=name_in+' orientation, ref ='+string(yq) plot,indgen(xq)+kstart,xq,sx,sy,st n=dimen(xq,0) oplot,[0,n],[yq,yq],12 endsubr ;============================================================================== block infoblock s='data set '+tapeid postraw,'/Courier-Bold findfont .008333333 scalefont setfont' pslabel,s,.05,.75,20,0,'Times-BoldItalic' s='derotation, alignment processing '+!date+' '+!time pslabel,s,0.0,.72,10,0,'Times-BoldItalic' pen,3 !tickx=.005 !ticky=.005 !fsize=.33333 !symsize=.33333 !erase=0 ;right and top margins and line spacing set here xmargin=.0 ypos=.70 deltay=-.01111 run postshow endblock ;============================================================================== subr stamps,sample_a,sample_b,count,im,name,kstart,kend size=.15 x0=(count%3)*0.3333 x1=x0+size y0=im*size y1=y0+size !scalemax=255 !scalemin=0 !iorder=2 postimage,ft(sample_a),x0,x1,y0,y1 pslabel,fns('n####',kstart)+name,x0,y1-0.015,8,0,'Times-Bold' x0=x0+size x1=x0+size postimage,ft(sample_b),x0,x1,y0,y1 pslabel,fns('n####',kend)+name,x0,y1-0.015,8,0,'Times-Bold' endsubr ;============================================================================== subr pslabel,s,x,y,size,angle,font ;just output Postscript text, size is in points, font is a string containing ;Postscript font, default is none set which implies the last one ;no angle implies no rotation, same as 0 narg=!narg ;if no size, angle, or font => use whatever was last set at top level if narg le 3 then { postraw,' '+string(x)+' '+string(y)+' M ' postraw,'('+s+') show' return } ;otherwise, we do it all isolated postraw,' gsave' if narg lt 5 then xq=0 else xq=angle sq=string(x)+' '+string(y)+' translate ' if xq ne 0 then sq=sq+string(xq)+' rotate' postraw,sq if narg lt 6 then { postraw,'/Times-Roman findfont' } else { postraw,'/'+font+' findfont' } xq=size/720.0 postraw,string(xq)+' scalefont setfont' postraw,'0 0 moveto' postraw,'('+s+') show' postraw,'grestore' return endsubr ;============================================================================== block postshow ;2/21/93 adapted from $show to output postscript text ;uses only 2 columns of wavelengths save=!redim_warn_flag !redim_warn_flag=0 ;a bit complicated to do mulitple columns of the sequence when necessary minlines=9 ;# of info lines needed if nexp gt 51 then nq= 18*(6+nexp) else nq=18*18*3 types=bmap('unknown solar flats darks ') s=zero(bytarr(nq))+bmap(' ') redim,s,18,num_elem(s)/18 if nexp gt 0 then { for i=0,nexp-1 do { ss=ist((i+1)%100,2)+ist(seq_wave(i),5)+ist(seq_off(i),6)+smap(seq_pol(*,i))+ - ' '+smap(seq_width(i)) s(0,i+1)=bmap(ss) }} ss=' # wave off pol r ' s(0)=bmap(ss) ;sbuf=blanks(num_elem(ss)) sbuf=bytarr(num_elem(ss)) s1=' D'+ist(doyy,3,1)+ist(year,5) i1=datatype*8 if i1 lt 0 or i1 gt 32 then i1=0 i2=i1+7 s2=' type: '+smap(types(i1:i2)) s3=' tape: '+tapeid s4=' nimage='+ist(nimage,7,2)+', nexp ='+ist(nexp,5,2) s5=' CCD: '+ist(sumx,3,2)+'x'+ist(sumy,2,2)+', '+ist(nx,4,2)+'x'+ist(ny,4,2) s6=' @('+ist(ccdx,4,2)+', '+ist(ccdy,4,2)+')' s7=' sequence: '+seqname(0:10) if arn ne 0 then s8=' AR '+ist(arn,5,2) else s8=' AR ????' if lat ge 0 then s8=s8+' N' else s8=s8+' S' s8=s8+ist(abs(lat),2,1) if longitude ge 0 then s8=s8+' W' else s8=s8+' E' s8=s8+ist(abs(longitude),2,1) s9=' scale: '+string(pixscale)+'"/pixel' pslabel,#t(0:46),xmargin,ypos ypos=ypos+deltay if nexp le 0 then for i=1,minlines-1 do { pslabel,eval('s'+ist(i+1,2,2)),xmargin,ypos ypos=ypos+deltay } else { if nexp le 17 then { ;one column case nl=(nexp+1)(nexp+1)/2 pslabel,smap(s(*,0))+'|'+smap(s(*,0))+'|'+s1,xmargin,ypos ypos=ypos+deltay nl=minlines-1 ;ok to put out minlines because of padding in s for i=1,nl do { pslabel,smap(s(*,i))+'|'+smap(s(*,i+nq))+'|'+eval('s'+ist(i+1,2,2)),xmargin,ypos ypos=ypos+deltay } if (nexp-nq) gt (minlines-1) then { for i=nl+1,nexp-nq do { pslabel,smap(s(*,i))+'|'+smap(s(*,i+nq))+'|',xmargin,ypos ypos=ypos+deltay } nl=nexp-nq } if nl lt nq then for i=nl+1,nq do { pslabel,smap(s(*,i))+'|',xmargin,ypos ypos=ypos+deltay } } } dt=3600.*fix(#t(39:40))+60.*fix(#t(42:43))+fix(#t(45:46) dt=dt-3600.*fix(#t(27:28))-60.*fix(#t(30:31))-fix(#t(33:34) if dt lt 0 then dt=dt+24.*3600. hdt=fix(dt/3600.) s=istring(hdt,2,1)+':' mdt=dt-hdt s=s+istring(fix(mdt/60.),2,1)+':'+istring(fix(mdt mod 60),2,1) s='duration = '+s+' rate = '+string(dt/nimage)+' mean cadence =' s=s+string(nexp*dt/nimage)+' nreps = '+string(nimage/nexp) pslabel,s,xmargin,ypos ypos=ypos+deltay !redim_warn_flag=save endblock