;+
;FUNCTION: sub3d
;PURPOSE: Takes two 3D structures and returns a single 3D structure
; whose data is the difference of the two.
; This routine is useful for subtracting background counts.
; Integration period is considered if units are in counts.
;INPUTS: d1,d2 each must be 3D structures obtained from the get_?? routines
; e.g. "get_el"
;RETURNS: single 3D structure
;
;CREATED BY: Davin Larson
;LAST MODIFICATION: @(#)sub3d.pro 1.10 01/10/08
;
;Notes: This is a very crude subroutine. Use at your own risk.
;-
function sub3d, d1,d2,siglevel=siglevel
if data_type(d1) ne 8 then return,d2
if d1.data_name ne d2.data_name then begin
dprint,'Incompatible data types'
return,d1
endif
if d1.units_name ne d2.units_name then begin
dprint,'Different Units'
return,d1
endif
dif = d1
if strlowcase(d1.units_name) eq 'counts' then trat = d1.integ_t/d2.integ_t else trat = 1
dif.data = (d1.data - trat * d2.data)
;if find_str_element(dif,'ddata') ge 0 and find_str_element(d2,'ddata') ge 0 $
; then begin
; print, "Computing Errors... "
dif.ddata = sqrt( d1.ddata^2 + (trat * d2.ddata)^2 )
;endif
if n_elements(siglevel) ne 0 then begin
sig = dif.data/dif.ddata
w = where(sig lt siglevel, nw)
if nw gt 0 then dif.bins[w] = 0
; if nw gt 0 then dif.data[w] = 0
endif
return, dif
end