function heatflux, dat, $
ESTEPRANGE = esteprange
if n_elements(esteprange) eq 0 then esteprange = [0 ,dat.nenergy-1]
e1 = esteprange(0)
e2 = esteprange(1)
b1 = 0
b2 = dat.nbins-1
data = dat.data(e1:e2,b1:b2)
theta= dat.theta(e1:e2,b1:b2)
phi = dat.phi(e1:e2,b1:b2)
energy = dat.energy(e1:e2,b1:b2)
mult = replicate(1.,e2-e1+1)
domega = mult # dat.domega(b1:b2)
geom = mult # dat.geom(b1:b2)
sphere_to_cart, 1., theta, phi, sx,sy,sz
pp = data * domega * energy * energy / geom
qx = total(sx*sx*pp,/double)
qy = total(sy*sy*pp,/double)
qz = total(sz*sz*pp,/double)
heatflux = [ qx,qy,qz ]
return ,heatflux
end