;+ ;FUNCTION; get_bkg3d,dat ;PURPOSE: Uses energy steps defined by esteps array, computes average ; count rate in those steps and then copies that average value into all ; data values. Each angle bin is treated separately. The result can be ; used for background subtraction. ; ;INPUT: ; dat: 3d data structure such as is generated by ; "get_el" and other get routines ;KEYWORDS ; ESTEPS: Two element array of integers that corresponds to the first ; and last energy steps to be used. (default is [0,3]) ; ;CREATED BY: Davin Larson ;LAST MODIFICATION: @(#)get_bkg3d.pro 1.9 02/04/17 ; ;WARNING! This is a crude subroutine. Use at your own risk. ;- function get_bkg3d, dat, $ esteps=esteps, $ fudge = fudge, $ bins = bins, $ average=average if n_elements(esteps) eq 0 then esteps = [0,3] e1 = esteps(0) e2 = esteps(1) nbins = dat.nbins nenergy = dat.nenergy bdat = dat nbkg = total( finite(dat.data(e1:e2,*)) ,1) bkg = total( dat.data(e1:e2,*),1 , /nan) / nbkg sbkg = sqrt(bkg) / nbkg if keyword_set(average) then begin theta= reform(bdat.theta(0,*)) anode = fix((90.-theta)/180.*8.) for a=0,7 do begin w = where(anode eq a and bins,count) print,float(w) print,bkg(w) print,sqrt(bkg(w)) nel = total( finite( bkg(w) ) ) tot = total(bkg(w), /nan) sig = sqrt(tot) bkg(w) = tot/nel sbkg(w) = sig/nel print,tot/nel print,sig/nel print,'' endfor endif bdat.data = replicate(1.,nenergy) # bkg str_element,/add,bdat,'ddata',replicate(1.,nenergy) # sbkg return,bdat end