function tempfit, energy, $
parameters=p, p_names = p_names, pder_values= pder_values
if not keyword_set(p) then $
p = {tempfit_param,n1:10.0d, t1:10.0d, n2:.1d, t2:70.0d, $
n3:.005d, t3:1000.d,units:'df'}
mass = 5.6856593e-06
k = (mass/2/!dpi)^1.5
a = 2./mass^2*1e5
case strlowcase(p.units) of
'df' : conv = k
'flux' : conv = k * energy * a
'eflux': conv = k * energy^2 * a
else : message,"Units not recognized!"
endcase
e1 = p.t1 ^ (-1.5) * exp(- energy/p.t1)
e2 = p.t2 ^ (-1.5) * exp(- energy/p.t2)
e3 = p.t3 ^ (-1.5) * exp(- energy/p.t3)
f = conv * (p.n1 * e1 + p.n2 * e2 + p.n3 * e3 )
if keyword_set(p_names) then begin
np = n_elements(p_names)
nd = n_elements(f)
pder_values = dblarr(nd,np)
for i=0,np-1 do begin
case strlowcase(p_names[i]) of
'n1': pder_values(*,i) = conv * e1
'n2': pder_values(*,i) = conv * e2
'n3': pder_values(*,i) = conv * e3
't1': pder_values(*,i) = conv*p.n1*(energy/p.t1 -1.5)*e1/p.t1
't2': pder_values(*,i) = conv*p.n2*(energy/p.t2 -1.5)*e2/p.t2
't3': pder_values(*,i) = conv*p.n3*(energy/p.t3 -1.5)*e3/p.t3
endcase
endfor
endif
return,f
end