;+ ;FUNCTION: n_4d(dat,ENERGY=en,ERANGE=er,EBINS=ebins,ANGLE=an,ARANGE=ar,BINS=bins,MASS=ms,m_int=mi,q=q,mincnt=mincnt) ;INPUT: ; dat: structure, 4d data structure filled by themis routines mvn_sta_c6.pro, mvn_sta_d0.pro, etc. ;KEYWORDS ; ENERGY: fltarr(2), optional, min,max energy range for integration ; ERANGE: fltarr(2), optional, min,max energy bin numbers for integration ; EBINS: bytarr(na), optional, energy bins array for integration ; 0,1=exclude,include, ; na = dat.nenergy ; ANGLE: fltarr(2,2), optional, angle range for integration ; theta min,max (0,0),(1,0) -901. ; the minus 0.1 helps account for straggling at low mass endelse mass=dat.mass*dat.mass_arr ;if keyword_set(mincnt) then if total(data) lt mincnt then return,0 if keyword_set(mincnt) then if total(data-bkg) lt mincnt then return, def_density if total(data-bkg) lt 1 then return, def_density dat.cnts=data dat.bkg=bkg dat = conv_units(dat,"df") ; Use distribution function data=dat.data Const = (mass)^(-1.5)*(2.)^(.5) charge=dat.charge if keyword_set(q) then charge=q if finite(pot) then energy=(dat.energy+charge*dat.sc_pot/abs(charge))>0. else energy=dat.energy ; energy/charge analyzer, require positive energy if dat.nbins eq 1 then begin density = total(Const*denergy*(energy^(.5))*data*2.*cos(theta)*sin(dtheta/2.)*dphi,1) endif else begin density = total(total(Const*denergy*(energy^(.5))*data*2.*cos(theta)*sin(dtheta/2.)*dphi,1),1) endelse if keyword_set(ms) then density=total(density) ; units are 1/cm^3 return, density end