;+
;
; NAME: SXT_WEIGHT
;
; PURPOSE: Returns value of a wavelength-dependent parameter weighted
;     by the SXT passbands times a Mewe solar spectrum.
;
;

PRO sxt_weight, wavein, parmin, parmeem, parmtc, parmgrid=parmgrid

;
; INPUT PARAMETERS:
;	wavein = wavelength vector for input parameter, Angstroms.
;		Must be monotonically increasing.
;
;	parmin = vector of parameter values.
;
; OUTPUT PARAMETERS:
;	parmeem = weighted values of the parameter assuming equal
;		emission measures at all temperatures from 
;		Log10(T) = 5.5 to 8.0.  Vector (6).  Filter order
;		as given by GT_FILTB().
;
;	parmtc = corrections to parmeem for quadratic variation with
;		Log10(T).  Dimensioned(6,3).  Corrected value is
;		parmeem(i) + parmtc(i,0) + parmtc(i,1)*(Log10(T)-6.)
;			+ parmtc(i,2)*(Log10(T)-6.)^2
;
; OPTIONAL OUTPUT KEYWORDS:
;	parmgrid = array of weighted values, dimensioned (nfilts,ntemps)
;		Both nfilts and ntemps = 6.  Temperature values are
;		Log10 = 5.5 to 8.0 by 0.5.  Use this return to be
;		that PARMTC is a valid fit.
;
; METHOD:
;	Uses Mewe_spec to get solar spectrum, takes SXT passbands from
;	database.
;
; HISTORY:
;	Written  March 27, 1995  Barry LaBonte
;	Added /PARMGRID keyword  May 1, 1995 BJL
;
;-


; Get the SXT passbands
SPAWN, 'ls -t $DIR_SXT_SENSITIVE/sra*.genx', filelist
RESTGEN, FILE=filelist(0), STR=area
nfilts = 6
filtname = ['Open', 'Al.1', 'AlMg', 'Be119', 'Al12', 'Mg3']
; Put filters in GT_FILTB order
filter = area.filter
junk = filter(3,*)
filter(3,*) = filter(5,*)
filter(5,*) = junk

; Get sorted indices (avoid redundant wavelengths)
ix = UNIQ( area.wave, SORT(area.wave) )
nwavel = N_ELEMENTS(ix)

; Compute Mewe spectra for various temperatures in MK
ltemps = FINDGEN(6)/2. - 0.5
temps = 10^ltemps
flux = MEWE_SPEC( temps, area.wave(ix) )
flux = TRANSPOSE(flux)
ntemps = N_ELEMENTS(temps)

; Interpolate input parameter onto SXT filter wavelengths
pint = INTERPOL( parmin , wavein, area.wave(ix) )

; Compute the flux-weighted mean for all (filters, temperatures)
denom = filter(*,ix) # flux
numer = filter(*,ix) # (flux * REBIN( pint, nwavel, ntemps))
amean = numer / denom

; Now the values for equal emission measure at all temperatures
parmeem = TOTAL(numer,2) / TOTAL(denom,2)

; Fit for polynomial variation of the difference from the
; equal emission measure value with Log(temperature)
ndegree = 2
parmtc = FLTARR(nfilts,ndegree+1)
FOR i=0, nfilts-1 DO BEGIN &$
	parmtc(i,*) = POLY_FIT( ltemps, amean(i,*)-parmeem(i), ndegree)
ENDFOR

;Grid output if needed
parmgrid = amean

; Done
RETURN
END
