; ; given the raw wedge data, return the grid Info averaged, over the requested stp. ; grid is defined for ; deltax=9.6m ; deltay=25.2 m ; these are divisible by .15,.3,.6,1.2 meters ; args: ; WI : {} this defines the range of the wedge of good data ; and the x,y range of the grid to use ; d : {} holds w wedge from wedgeinp ; stp: dbl for bin spacing use .15,.3,.6,1.2 ; pro wedge_getgrid,wI,d,stp,gdI,xyz=xyz,rtp=rtp ; ; xyz=blmscale(d.hdr,*(d.pd)) rtp=blmxyztosph(xyz,/deg,/cwy) center=wi.center npnts=d.npnts ; select the grid ok=intarr(npnts) + 1 ii=where((xyz[0,*] lt wi.xrange[0]) or (xyz[0,*] gt wi.xrange[1]) or $ (xyz[1,*] lt wi.yrange[0]) or (xyz[1,*] gt wi.yrange[1]) or $ (xyz[2,*] lt wi.zlim[0]) or (xyz[2,*] gt wi.zlim[1]) or $ (rtp[1,*] lt wi.azrange[0]) or (rtp[1,*] gt wi.azrange[1]) or $ (rtp[2,*] lt wi.elrange[0]) or (rtp[2,*] gt wi.elrange[1]),cnt) ok[ii]=0 ii=where(ok eq 1,npntsGrid) xyz=xyz[*,ii] rtp=rtp[*,ii] xmin=wi.xrange[0] xmax=wi.xrange[1] ymin=wi.yrange[0] ymax=wi.yrange[1] nx=long((xmax - xmin)/stp + .5) -1 ny=long((ymax - ymin)/stp + .5) -1 gdI={ scannum : d.scannum,$ npnts: npntsGrid,$ ; number measured points total nx: nx ,$; number of x bins ny: ny ,$; number of y bins avgAll:0d,$; avg errRad over entire grid.. at full resolution rmsAll:0d,$; rms of errRad over entire grid. at full resolution ; bin info stp : stp ,$; bin width,hght meters xar : dblarr(nx),$; x sample points (left edge.) should add stp/2. yar : dblarr(ny),$; x sample points (bottom edge. should add stp/2 cntAr : lonarr(nx,ny),$; == 0 if no points in bin rmsAr: dblarr(nx,ny),$; rms radErr in each bin .. full resolution avgAr: dblarr(nx,ny)} ; avg radErr in each bin .. Rm=reform(blmcmpradius(xyz,center=wI.center)) Rerr= Rm - wi.r0 ; update wi to this grid spacing wi.nx=nx wi.ny=ny wi.stp=stp gdI.xar=dindgen(nx)*stp + wi.xrange[0] gdI.yar=dindgen(ny)*stp + wi.yrange[0] a=rms(Rerr,/quiet) gdI.avgAll=a[0] gdI.rmsAll=a[1] ; ; now loop over the grid ; for ix=0,nx-1 do begin &$ ; xdim bin xs=wi.xrange[0] + ix*stp &$ xe=xs + stp &$ iix=where((xyz[0,*] ge xs) and (xyz[0,*] lt xe),cnt) &$ ; now loop along y for iy=0,ny-1 do begin &$ ys=wi.yrange[0] + iy*stp &$ ye=ys + stp &$ ii=where((xyz[1,iix] ge ys) and (xyz[1,iix] lt ye),cnt) &$ gdI.cntAr[ix,iy]=cnt &$ if (cnt gt 2) then begin &$ a=rms(Rerr[iix[ii]],/quiet) &$ gdI.avgAr[ix,iy]=a[0] &$ gdI.rmsAr[ix,iy]=a[1] &$ endif endfor &$ endfor return end