;+
; NAME:
;      bcs_chi_norm
; PURPOSE:
;      compute level 1 fit given te6, td6, and wshift to compute em50 and cnorm
; CALLING SEQUENCE:
;      fit=bcs_chi_norm(wave,flux,eflux,fit_par)
; INPUTS:
;      wave    - wavelength array
;      flux    - flux array
;      eflux   - error in flux
;      fit_par - [chan,te6,td6,em50,wshift,cnorm] - first guess
; OUTPUTS:
;      fit     - level 1 fitted spectrum
; OPTIONAL KEYWORDS:
;      subs(in)    - indicies for chi^2 calculation
;      waveo(out)  - wavelength centers of computed flux
;      chi2 (out)  - chi^2 for fit
;      ainfo (out) - atomic information
;      nfree (out) - no. of free parameters
; PROCEDURE:
;      calls CHI_NORM to compute best fit em50 and cnorm
; HISTORY:
;      Oct'93, D. Zarro (ARC) - written
;      28 Oct'93, Zarro - fixed bug in fit_par
;      17 Feb'94, Zarro - added check for unique values of sub
;-

  function bcs_chi_norm,wave,flux,eflux,fit_par,$
                   waveo=waveo,ainfo=ainfo,subs=subs,chi2=chi2,nfree=nfree

;-- error checking

  on_error,1
  if n_params() lt 4 then begin
    chkarg,'bcs_chi_norm'
    return,0
  endif

;-- input fit parameters

  chan=fit_par(0)
  te6=fit_par(1)
  td6=fit_par(2)
  em50=fit_par(3)
  wshift=fit_par(4)
  cnorm=fit_par(5)

;-- compute line and continuum fluxes 

  cline=bcs_spec(chan,te6,td6,wave+wshift,waveo=waveo,ainfo=ainfo,/nocont)
  ccont=bcs_spec(chan,te6,td6,wave+wshift,waveo=waveo,/noline)

;-- solve for line emission measure and background normalization

  new_subs=subs(uniq(subs,sort(subs)))
  chi2=chi_norm(cline,flux,eflux,ccont,subs=new_subs,norm=em50,bnorm=bnorm)
  cnorm=bnorm/em50
  nfree=n_elements(new_subs)-2

;-- output fit parameters

  if fit_par(3) eq 0 then fit_par(3)=em50 
  if fit_par(5) eq 0 then fit_par(5)=cnorm

;-- fitted spectrum

  fit = em50*cline + bnorm*ccont

  return,fit  & end

                 
