function get_stb_swea3d, t, times=times, index=index if keyword_set(times) then begin get_data,'stb_swea_dist',ptr=pdata return,*pdata.time endif dat = {swea_struct, $ PROJECT_NAME: 'STEREO-B IMPACT', $ DATA_NAME: 'SWEA', $ UNITS_NAME: 'flux', $ UNITS_PROCEDURE:'convert_flux_units', $ TIME : 0.d, $ END_TIME : 0.d, $ TRANGE : [0.d,0.d], $ INTEG_T : 0.d, $ DELTA_T : 0.d, $ MASS : 0.d, $ GEOMFACTOR: 0.d, $ INDEX : 0l, $ N_samples : 0l, $ SHIFT : 0b, $ VALID : 0, $ NBINS : 80, $ NENERGY : 16, $ DATA : fltarr(16, 80), $ energy : fltarr(16, 80), $ denergy : fltarr(16, 80), $ phi: fltarr(16, 80), $ dphi: fltarr(16, 80), $ theta: fltarr(16, 80), $ dtheta: fltarr(16, 80), $ bins : replicate(1b,16,80), $ dt : fltarr(16,80), $ gf : fltarr(16,80), $ bkgrate : fltarr(16,80), $ deadtime : fltarr(16,80), $ dvolume : fltarr(16,80), $ ddata : replicate(!values.f_nan,16,80), $ magf : replicate(!values.f_nan,3), $ vsw : replicate(!values.f_nan,3), $ ; domega: fltarr(80), $ sc_pot: 0., $ e_shift: 0. $ } if n_elements(index) eq 0 then i=-1 else i=index if n_elements(t) eq 0 then t=0d retdat = dat get_data,'stb_swea_dist',ptr=pdata if t then begin time = gettime(t) tidx = where((*pdata.time) gt t, tcnt) if tcnt eq 0 then begin print,'Time ',time_string(t),' is out of range' return,-1 endif i = min(tidx) endif tcorr = ((*pdata.sweadistinterval)[i])/2d retdat.trange = ((*pdata.time)[i]) + [-1d * tcorr, tcorr] retdat.time = retdat.trange[0] print,'Time is: ',time_string(retdat.time) retdat.end_time = retdat.trange[1] retdat.integ_t = 7.424 retdat.delta_t = (*pdata.sweadistinterval)[i] retdat.mass = 5.6856591e-6 ; mass eV/(km/sec)^2 retdat.geomfactor = 1d retdat.index = i retdat.n_samples = 1 retdat.valid = 1 get_data,'stb_swea_flux',data=dflux retdat.data = reform(dflux.y[i,*,*]) common swea_l1_common if not keyword_set(swea_energies) then swea_l1_energies gf = swea_geom_factor('b',0d,0d) for i=0,79 do begin retdat.energy[*,i] = swea_dist_energy retdat.denergy[*,i] = swea_dist_denergy/2d if i lt 8 then retdat.gf[*,i] = gf[2*i,0]+gf[2*i+1,0] if (i ge 8) and (i lt 24) then retdat.gf[*,i] = gf[i-8,1] if (i ge 24) and (i lt 40) then retdat.gf[*,i] = gf[i-24,2] if (i ge 40) and (i lt 56) then retdat.gf[*,i] = gf[i-40,3] if (i ge 56) and (i lt 72) then retdat.gf[*,i] = gf[i-56,4] if (i ge 72) then retdat.gf[*,i] = gf[2*i-72*2,5]+gf[2*i-72*2+1,5] endfor stb_swea_angle_map,phi,dphi,theta,dtheta ;2007-12-01 switched phi and theta for i=0,15 do begin retdat.theta[i,*] = phi retdat.dtheta[i,*] = dphi retdat.phi[i,*] = theta retdat.dphi[i,*] = dtheta endfor retdat.dt[*,*] = 5.8d-3 fudge_factor = dblarr(16,80) fudge_factor[*,0:7] = 6. fudge_factor[*,8:71] = 3. fudge_factor[*,72:79] = 6. retdat.data = retdat.data/fudge_factor return,retdat end