;+ ;FUNCTION: accum_pad,dat,apad ;PURPOSE: makes a data pad from a 3d structure ;INPUT: ; dat: A 3d data structure such as those gotten from get_el,get_pl,etc. ; e.g. "get_el" ;KEYWORDS: ; bdir: Add B direction ; esteps: Energy steps to use ; bins: bins to sum over ; num_pa: number of the pad ; ;CREATED BY: Davin Larson ;LAST MODIFICATION: %W% %E% ;- pro accum_pad,apad,data=dat, $ ESTEPS = esteps, $ lim=plim, $ BINS=bins, $ NUM_PA=num_pa, $ NUM_VEL=num_vel, vlim=vlim if data_type(apad) ne 8 then begin if not keyword_set(num_pa) then num_pa = 10 if not keyword_set(num_vel) then num_vel = 40 vlim= [5.,545000.] d=fltarr(num_vel,num_pa) apad = {project_name:'', $ data_name:'PAD Accumulation', $ units_name:'df', $ mass:0., $ time:1d10, end_time:0.d, $ nbins:fix(num_pa) , nenergy:fix(num_vel), $ vlim:vlim, $ data:double(d) , ddata:double(d), energy:d, angles:d, cnt:d, $ units_procedure: 'convert_pad_units', $ valid:1 } endif num_vel = apad.nbins nenergy = apad.nenergy apad.time = apad.time < dat.time apad.end_time = apad.end_time > dat.end_time apad.mass = dat.mass case ndimen(bins) of -1 or 0: ind = indgen(dat.nenergy*dat.nbins) 1: ind = where(replicate(1,dat.nenergy) # bins) 2: ind = where(bins) endcase ndat = conv_units(dat,'df') df_dat = double(ndat.data(ind)) help,df_dat ; Modified by REE for relativistic electrons. ; vmag=(2.*ndat.energy(ind)/dat.mass)^.5 ; Not relativistic! c = 2.9979d5 ; Davin_units_to_eV = 8.9875e10 E0 = double(dat.mass*c^2) gamma = ( double(ndat.energy(ind)) + E0 ) / E0 vmag = sqrt(1.0d - 1.0d/(gamma*gamma) ) * c ; Velocity in km/s theta = ndat.theta(ind) phi = ndat.phi(ind) nd = n_elements(ind) sphere_to_cart,vmag,theta,phi,vx,vy,vz vel = [[vx],[vy],[vz]] vel = vel - replicate(1.,nd) # dat.vsw rot = rot_mat(dat.magf,dat.vsw) ;vd2d=reform(dat.vsw # rot) newvel = vel # rot cart_to_sphere,newvel(*,0),newvel(*,1),newvel(*,2),vmag,theta,phi,/co_lat vmag = .5*dat.mass*vmag^2 vbin = alog(vmag) lim = alog(apad.vlim) numv = apad.nenergy nump = apad.nbins vbin = fix( (vbin-lim(0))/(lim(1)-lim(0)) * numv ) pbin = fix( theta/180. * nump) ;stop for i = 0,nd-1 do begin v = vbin(i) p = pbin(i) if(v ge 0 and v lt numv and p ge 0 and p lt nump) then begin apad.energy(v,p) = apad.energy(v,p) + vmag(i) apad.angles(v,p) = apad.angles(v,p) + theta(i) apad.data(v,p) = apad.data(v,p) + df_dat(i) apad.ddata(v,p) = apad.ddata(v,p) + df_dat(i)^2 apad.cnt(v,p) = apad.cnt(v,p) + 1 endif endfor if keyword_set(lim) then begin cols = bytescale(pure=numv) plots,theta,df_dat,psym=3,color=cols(vbin) endif end