function energy_to_ebin,dat,en,BIN=bin2
if dat.valid eq 0 then begin
print,'Invalid Data'
return, !values.f_nan
endif
if keyword_set(bin2) then bin=bin2
endim=dimen1(en)
if endim eq 0 then begin
if not keyword_set(bin2) then bin=0
energy=reform(dat.energy(*,bin))
tmp=min((energy-en)^2,ebin)
return,ebin
endif else begin
ebin=intarr(endim)
if not keyword_set(bin2) then bin=intarr(endim)
for a=0,endim-1 do begin
if n_elements(dat.energy(*,0)) eq 1 then $
energy=dat.energy(*,bin(a)) $
else $
energy = reform(dat.energy(*,bin(a)))
tmp=min((energy-en(a))^2,eb)
ebin(a)=eb
endfor
return,ebin
endelse
end