;+
;PROCEDURE:	convert_sst_units
;PURPOSE:	to convert units of data from the sst instruments
;INPUT:		
;	data:	A 3d structure such as those generated by get_sf,get_so
;	units:	A string telling the procedure which units to convert to, such
;		as ncounts,rate,nrate,eflux,flux,df
;
;KEYWORDS:
;	scale:	A named variable in which the scale factor is returned.
;SEE ALSO:
;       "conv_units",
;       "get_sf","get_so"
;WARNING:
;	This procedure is NOT tested!
;       
;CREATED BY:	Davin Larson, 1995
;LAST MODIFICATION:	@(#)convert_sst_units.pro	1.10 96/08/22
;-

pro convert_sst_units, data, units, $
  SCALE = scale

scale = 1

if data.units_name eq units then return

if data.units_name ne 'Counts' then begin
   print,'Unable to convert from '+data.units_name+' to any other units'
   return
endif

units_names = ['Counts','Ncounts','Rate','Nrate','Eflux','Flux','DF']

energy = data.energy           ; in eV                (ne,nbins)
geom   = data.geom             ; number of bins summed (nbins)
n_e = data.nenergy               ; number of energies   
nbins=data.nbins               ; number of bins       
dt = data.eff * data.integ_t; effective duty cycle x integration time (ne)
gf = data.geomfactor           ; geometric factor of smallest bin
mass = data.mass               ; scaler
denergy = data.denergy
feff = data.feff	       ; foil electron efficiency,
				;for background 	  subtracted data only	

if ndimen(geom) eq 0 then geom = [geom]

case strupcase(units) of 
'COUNTS' :  return
'NCOUNTS':  scale =  replicate(1.,n_e) # geom
'RATE'   :  scale =  dt # replicate(1.,nbins)
'NRATE'  :  scale =  dt # geom
'EFLUX'  :  scale = (dt # (gf * geom)) * denergy / energy
'FLUX'   :  scale = (dt # (gf * geom)) * denergy
'FLUXE'  :  scale = (dt # (gf * geom)) * denergy * feff
'DF'     :  scale = (2./mass/mass*dt*1e5 # (gf * geom)) * denergy * energy
else: begin
        print,'Undefined units'
	return
      end
endcase

;print,'SST units are invalid!  Please edit the procedure: ', data.units_procedure


data.units_name = units

if find_str_element(data,'ddata') ge 0 then data.ddata = data.ddata/scale
data.data = data.data / scale 

return
end