;+ ;FUNCTION: sum4m ;PURPOSE: produces an omnidirectional spectrum structure by summing ; over the non-zero bins in the keyword bins. ; this structure can be plotted with "spec3d" ; ;CREATED BY: McFadden from omni4d.pro ;LAST MODIFICATION: 14/02/04 ; ; WARNING: This is a very crude structure; use at your own risk. ;- function sum4m,inpdat dat = inpdat units = dat.units_name if size(/type,dat) ne 8 then return,0 if dat.valid eq 0 then return,{valid:0} value=0 & str_element,dat,'nmass',value if value eq 0 then return,dat if value eq 1 and ndimen(dat.data) le 2 and dat.data_name ne 'C8 Energy-Angle-Mass' then return,dat tags = ['project_name','spacecraft','data_name','apid','units_name','units_procedure','valid', $ 'time','end_time', 'delta_t', 'integ_t', $ 'md', 'mode', 'rate', 'en_ind', 'mlut_ind', 'eff_ind', 'att_ind', $ 'nenergy', 'nbins', 'ndef' ,'nanode', 'geom_factor', 'nmass', 'mass', $ 'charge', 'sc_pot',$ 'magf','quat_sc','quat_mso','pos_sc_mso'] extract_tags,omni,dat,tags=tags omni.nmass = 1 str_element,/add,omni, 'mass_arr',1. if dat.data_name eq 'C8 Energy-Angle-Mass' then begin str_element,/add,omni, 'theta',reform(dat.theta) str_element,/add,omni, 'dtheta',reform(dat.dtheta) str_element,/add,omni, 'phi',dat.phi str_element,/add,omni, 'dphi',dat.dphi str_element,/add,omni, 'domega',reform(dat.domega) str_element,/add,omni, 'denergy',reform(dat.denergy) str_element,/add,omni, 'energy' ,reform(dat.energy) str_element,/add,omni, 'bins',dat.bins str_element,/add,omni, 'bins_sc',dat.bins_sc str_element,/add,omni, 'gf' ,reform(dat.gf) str_element,/add,omni, 'eff' ,reform(dat.eff) str_element,/add,omni, 'bkg' ,reform(dat.bkg) str_element,/add,omni, 'dead' ,reform(dat.dead) str_element,/add,omni, 'data' ,reform(dat.data) endif else if ndimen(dat.data) eq 2 and dat.nbins eq 1 then begin str_element,/add,omni, 'theta',dat.theta str_element,/add,omni, 'dtheta',dat.dtheta str_element,/add,omni, 'phi',dat.phi str_element,/add,omni, 'dphi',dat.dphi str_element,/add,omni, 'domega',dat.domega str_element,/add,omni, 'denergy',reform(dat.denergy(*,0)) str_element,/add,omni, 'energy' ,reform(dat.energy(*,0)) str_element,/add,omni, 'bins',dat.bins str_element,/add,omni, 'bins_sc',dat.bins_sc str_element,/add,omni, 'gf' ,total(dat.gf(*,*),2)/dat.nmass str_element,/add,omni, 'eff' ,total(dat.eff(*,*),2)/dat.nmass str_element,/add,omni, 'bkg' ,total(dat.bkg(*,*),2) str_element,/add,omni, 'dead' ,total(dat.dead(*,*),2) str_element,/add,omni, 'data' ,total(dat.data(*,*),2) endif else if ndimen(dat.data) eq 3 then begin str_element,/add,omni, 'theta',reform(dat.theta[*,*,0],dat.nenergy,dat.nbins) str_element,/add,omni, 'dtheta',reform(dat.dtheta[*,*,0],dat.nenergy,dat.nbins) str_element,/add,omni, 'phi',reform(dat.phi[*,*,0],dat.nenergy,dat.nbins) str_element,/add,omni, 'dphi',reform(dat.dphi[*,*,0],dat.nenergy,dat.nbins) str_element,/add,omni, 'domega',reform(dat.domega[*,*,0],dat.nenergy,dat.nbins) str_element,/add,omni, 'denergy',reform(dat.denergy[*,*,0],dat.nenergy,dat.nbins) str_element,/add,omni, 'energy' ,reform(dat.energy[*,*,0],dat.nenergy,dat.nbins) str_element,/add,omni, 'bins',dat.bins str_element,/add,omni, 'bins_sc',dat.bins_sc str_element,/add,omni, 'gf' ,reform(total( dat.gf(*,*,*),3),dat.nenergy,dat.nbins)/dat.nmass str_element,/add,omni, 'eff' ,reform(total( dat.eff(*,*,*),3),dat.nenergy,dat.nbins)/dat.nmass str_element,/add,omni, 'bkg' ,reform(total( dat.bkg(*,*,*),3),dat.nenergy,dat.nbins) str_element,/add,omni, 'dead' ,reform(total( dat.dead(*,*,*),3),dat.nenergy,dat.nbins) str_element,/add,omni, 'data' ,reform(total(dat.data(*,*,*),3),dat.nenergy,dat.nbins) endif return,omni end