function omni3d,inpdat, $
bins=bins
dat = inpdat
units = dat.units_name
if size(/type,dat) ne 8 then return,0
if dat.valid eq 0 then return,{valid:0}
tags = ['project_name','data_name','valid','units_name','units_procedure', $
'time','end_time', 'integ_t', 'nbins','nenergy', $
'mass', 'eff','geomfactor']
extract_tags,omni,dat,tags=tags
if keyword_set(bins) eq 0 then bins = replicate(1b,dat.nbins)
ind = where(bins,count)
if count eq 0 then return,omni
omni.nbins = 1
fluxindx = where(['FLUX','EFLUX','DF'] eq strupcase(units),fluxcnt)
if fluxcnt eq 0 then begin
dprint, 'Converting units to EFlux'
dat=conv_units(dat,'EFlux')
endif
norm = count
str_element,dat,'feff',value=feff
if n_elements(feff) ne 0 then $
str_element,/add,omni, 'feff',total(dat.feff(*,ind),2)/count
str_element,/add,omni, 'units_name', dat.units_name
str_element,/add,omni, 'denergy',total(dat.denergy(*,ind),2)/count
str_element,/add,omni, 'data' ,total(dat.data(*,ind),2)/norm
str_element,/add,omni, 'energy' ,total(dat.energy(*,ind),2)/count
str_element,/add,omni, 'domega' ,total(dat.domega(ind))
str_element,dat,'ddata',value=ddata
if n_elements(ddata) ne 0 then $
str_element,/add,omni,'ddata', sqrt(total(ddata(*,ind)^2,2))/norm
omni.nbins = 1
return,omni
end