! updated 19-may-1993 by r.neri: accept more than one parameter ! RL 21-apr-1994 ! use character chains fxmax, fxmin, fymax, fymin for the limits ! corresponding to the fxtype and fytype parameters (same number ! of arguments assumed, not checked) ! ! corrected a bug with several x variables RL 11-sep-1996. ! Added ZTYPE ! clear plot set box /def define integer kx kmodel ex ky ey nc i1 i2 ni nj ic kc kz define character xtext*30 ytext*30 ztext*30 atext*30 atype*8 if .not.exist(fztype) then define character fztype*20 /global def real r0 z0 /global let z0 1 let r0 1 endif define character fxtype*12[nfx] fxmin*12[nfx] fxmax*12[nfx] fytype*12[nfy] fymin*12[nfy] fymax*12[nfy] symbol sline 'axtype' ; let fxtype[1:nfx] 'sline' symbol sline 'axmin' ; let fxmin[1:nfx] 'sline' symbol sline 'axmax' ; let fxmax[1:nfx] 'sline' symbol sline 'aytype' ; let fytype[1:nfy] 'sline' symbol sline 'aymin' ; let fymin[1:nfy] 'sline' symbol sline 'aymax' ; let fymax[1:nfy] 'sline' ! ! nfx and nfy are global variables ... ! if (name.eq." ") then say "Please enter UVfit name (without extension) " let name endif define image f 'name'.uvfit read let nc f%dim[1] let i1 0 let i2 0 for i 1 to nc if (f[i,1].ne.0.and.i1.eq.0) then let i1 i endif next for i nc to 1 by -1 if (f[i,1].ne.0.and.i2.eq.0) then let i2 i endif next let i1 max(first,i1) if (last.eq.0) then let i2 min(nc,i2) else let i2 min(last,i2) endif set blanking f%blank[1] f%blank[1]*0.1 define real x[nc] y[nc] z[nc] ! @ fitheader.graphic 'i1' 'i2' 'nc' ! define int n1 n2 n nmap define real x1 y1 dx ddx ddy let exsave min(3.|nfx|nfy,1.) /new real set expand min(3.|nfx|nfy,1.) if no_fit.eq.0 then let no_fit 1 endif if .not.exist(n_box) then def integer n_box[2] /global def real big_box[4] big_view[4] sub_view[4] /global endif let big_box box_xmin box_xmax box_ymin box_ymax let big_view 0.05 1 0.05 1 let sub_view 0 0.98 0 0.98 let n_box nfx nfy ! ! ! ! added 11-sep-1996 RL if fztype.eq."RMS" then let kz 1 let ztext "r.m.s." else if fztype.eq."FLUX" then let kz 12 let ztext "Flux" else if fztype.eq."WIDTH".and.kmodel.ge.3 then let kz 14 let ztext "Full width" else if fztype.eq."MAJOR".and.kmodel.eq.2 then let kz 14 let ztext "Major axis" else if fztype.eq."MINOR".and.kmodel.eq.2 then let kz 16 let ztext "Minor axis" endif ! RL for fy 1 to nfy if fytype[fy].eq."VELOC" then let ky 4 let ey 0 let ytext "Velocity (km/s)" else if fytype[fy].eq."FREQ" then let ky -1 let ey 0 let ytext "Frequency (MHz)" else if fytype[fy].eq."CHANNEL" then let ky 0 let ey 0 let ytext "Channel" else if fytype[fy].eq."RMS" then let ky 1 let ey 0 let ytext "r.m.s." else if fytype[fy].eq."RA" then let ky 8 let ey 9 let ytext "R.A. Offset" else if fytype[fy].eq."DEC" then let ky 10 let ey 11 let ytext "Dec. offset" else if fytype[fy].eq."FLUX" then let ky 12 let ey 13 let ytext "Flux" else if fytype[fy].eq."WIDTH".and.kmodel.ge.3 then let ky 14 let ey 15 let ytext "Full width" else if fytype[fy].eq."MAJOR".and.kmodel.eq.2 then let ky 14 let ey 15 let ytext "Major axis" else if fytype[fy].eq."MINOR".and.kmodel.eq.2 then let ky 16 let ey 17 let ytext "Minor axis" else if fytype[fy].eq."ANGLE".and.kmodel.eq.2 then let ky 18 let ey 19 let ytext "Position angle" else say "Unknown FYTYPE: " 'fytype[fy]' return endif for fx 1 to nfx @ sub_box.greg 'fx' 'fy' let kmodel nint(f[i1,6]) greg1\set mark 4 0 .2 if fxtype[fx].eq."VELOC" then let kx 4 let ex 0 let xtext "Velocity (km/s)" else if fxtype[fx].eq."FREQ" then let kx -1 let ex 0 let xtext "Frequency (MHz)" else if fxtype[fx].eq."CHANNEL" then let kx 0 let ex 0 let xtext "Channel" else if fxtype[fx].eq."RMS" then let kx 1 let ex 0 let xtext "r.m.s." else if fxtype[fx].eq."RA" then let kx 8 let ex 9 let xtext "R.A. Offset" else if fxtype[fx].eq."DEC" then let kx 10 let ex 11 let xtext "Dec. offset" else if fxtype[fx].eq."FLUX" then let kx 12 let ex 13 let xtext "Flux (Jy)" else if fxtype[fx].eq."WIDTH".and.kmodel.ge.3 then let kx 14 let ex 15 let xtext "Full width" else if fxtype[fx].eq."MAJOR".and.kmodel.eq.2 then let kx 14 let ex 15 let xtext "Major axis" else if fxtype[fx].eq."MINOR".and.kmodel.eq.2 then let kx 16 let ex 17 let xtext "Minor axis" else if fxtype[fx].eq."ANGLE".and.kmodel.eq.2 then let kx 18 let ex 19 let xtext "Position angle" else say "Unknown FXTYPE: " 'fxtype[fx]' return endif let y f%blank[1] set blank f%blank[1] f%blank[2] ! ! loop on components for icomp 1 to n_component let ic component[icomp] ! for i i1 to i2 if (ky.gt.4) then let kc ky+(ic-1)*15 let y[i] f[i,kc] else if (ky.gt.0) then let y[i] f[i,ky] else if ky.eq.0 then let y[i] i else if ky.eq.-1 then let y[i] -(f[i,4]-f%veloff)*f%restfre|299792.458+f%restfre endif if (kx.gt.4) then let kc kx+(ic-1)*15 let x[i] f[i,kc] else if (kx.gt.0) then let x[i] f[i,kx] else if kx.eq.0 then let x[i] i else if kx.eq.-1 then let x[i] -(f[i,4]-f%veloff)*f%restfre|299792.458+f%restfre endif if (kz.gt.4) then let kc kz+(ic-1)*15 let z[i] f[i,kc] else if (kz.gt.0) then let z[i] f[i,kz] else if kz.eq.0 then let z[i] i else if kz.eq.-1 then let z[i] -(f[i,4]-f%veloff)*f%restfre|299792.458+f%restfre endif next if (icomp.eq.1) then symbol blimits 'fxmin[fx]'" "'fxmax[fx]'" "'fymin[fy]'" "'fymax[fy]' g\limits 'blimits' del /symb blimits endif pen icomp if error_bars then if ex.ne.0 then let kc ex+(ic-1)*15 error x x y f[kc] endif if ey.ne.0 then let kc ey+(ic-1)*15 error y x y f[kc] endif endif if fztype.ne." " then set expand exsave*0.5 for i i1 to i2 by step if abs(z[i]).gt.z0 then draw text x[i] y[i] '0.1*nint(10.*f[i,4])' 9 /user ellipse r0*sqrt(abs(z[i]|z0)) /user x[i] y[i] endif next set expand exsave endif points connect ! ! end loop on components next ! draw box and labels pen 0 if fx.eq.1.and.fy.eq.1 then box label 'ytext' /y label 'xtext' /x else if fx.eq.1 then box n o label 'ytext' /y else if fy.eq.1 then box p n label 'xtext' /x else box n n endif ! end loops on boxes ... next next