pro get_hist_var,xx,count,back,expt,dist,dl,dh,flux,eflux,texpt $ ,dlow=dlow,dhigh=dhigh,ctonth=ctonth,sel=sel ;- ; ; written by wqd, March 8, 1996 ;+ if n_params() eq 0 then begin print,'CALLING SEQUENCE -- get_hist_var,xx,count,back,expt,dist,dl,dh,flux,eflux,texpt' print,',dlow=dlow,dhigh=dhigh,ctonth=ctonth,sel=sel' return endif if n_elements(ctonth) eq 0 then ctonth=3. nsel=n_elements(sel) if nsel ne 0 then begin x=xx(sel) rcount=count(sel) rback=back(sel) rexpt=expt(sel) endif else begin nsel=n_elements(xx) x=xx rcount=count rback=back rexpt=expt endelse flux=[-999] eflux=[-999] texpt=[-999] dist=[-999] if n_elements(dlow) eq 0 then dl=x(0) else dl=dlow if n_elements(dhigh) eq 0 then dhigh=x(nsel-1) dh=[-999] db=0. & cb=0 & bb=0. & eb=0. for k=0L, nsel-1 do begin db=db+x(k)*rcount(k) cb=cb+rcount(k) bb=bb+rback(k) eb=eb+rexpt(k) ; if cb ge ctonth or k eq (nsel-1) then begin if imdiv(cb-bb,sqrt((cb > bb) > 5.)) ge ctonth or k eq (nsel-1) then begin if k ne (nsel-1) then div=(x(k)+x(k+1))*0.5 else div=dhigh dh=[dh,div] dl=[dl,div] dist=[dist,db/cb] flux=[flux,(cb-bb)] eflux=[eflux,sqrt(cb > bb)] texpt=[texpt,eb] db=0 & cb = 0 & bb=0 & eb=0 endif ;if k gt 60 then stop endfor dl=dl(0:n_elements(dist)-2) dh=dh(1:*) dist=dist(1:*) flux=flux(1:*) eflux=eflux(1:*) texpt=texpt(1:*) end