function tempfit2, x, $
parameters=p
if not keyword_set(p) then $
p = {dens:10.0d,tperp:15.0d,tpar:15.0d, vx:0.d,vy:0.d,vz:0.d, $
bkg_dens:1.d, bkg_temp: 1.d, $
bth:0.,bph:0.}
if data_type(x) eq 8 then begin
energy = x.energy
mass = x.mass
units = x.units_name
vel = sqrt(2*energy/mass)
sphere_to_cart,vel,x.theta,x.phi,vx,vy,vz
gf = x.geomfactor
dt = x.eff * x.integ_t
endif else begin
mass = 5.6856593e-06
energy = .5 * mass * total(x*x,2)
vx = x(*,0)
vy = x(*,1)
vz = x(*,2)
units = 'eflux'
endelse
k = (mass/2/!dpi)^1.5 * 1e10
a = 2./mass^2/1e5
case strlowcase(units) of
'df' : conv = 1.
'flux' : conv = energy * a
'eflux' : conv = energy^2 * a
'nrate' : conv = energy^2 * a * gf
'rate' : conv = energy^2 * a * gf * (replicate(1.,x.nenergy) # x.geom)
'ncounts': conv = energy^2 * a * gf * (dt # replicate(1.,x.nbins))
'counts' : conv = energy^2 * a * gf * (dt # x.geom)
endcase
sphere_to_cart,1.,p.bth,p.bph,bx,by,bz
bdir = [bx,by,bz]
vx = vx - p.vx
vy = vy - p.vy
vz = vz - p.vz
vtot2 = vx*vx + vy*vy + vz*vz
cosa2 = (vx*bx + vy*by + vz*bz)^2/vtot2
e = exp( -mass*vtot2*(1/p.tperp + cosa2*(1/p.tpar-1/p.tperp)) /2)
f = conv * (k * p.dens / p.tperp / sqrt(p.tpar) ) * e
bkg = conv * (k * p.bkg_dens / p.bkg_temp^1.5) * exp( - energy / p.bkg_temp)
f = f+bkg
if data_type(x) eq 8 then begin
x.data = f
str_element,x,'bins',value = bins
if n_elements(bins) gt 0 then begin
ind = where(bins)
f = f(ind)
endif else f = reform(f,n_elements(f),/overwrite)
endif
return,f
end