PRO	GAUSS_FUNCT2,X,A,F,PDER
;+
; NAME:
;	GAUSS_FUNCT2
; PURPOSE:
;	EVALUATE THE SUM OF A GAUSSIAN AND A 2ND ORDER POLYNOMIAL
;	AND OPTIONALLY RETURN THE VALUE OF IT'S PARTIAL DERIVATIVES.
;	NORMALLY, THIS FUNCTION IS USED BY CURVEFIT TO FIT THE
;	SUM OF A LINE AND A VARYING BACKGROUND TO ACTUAL DATA.
;
; CATEGORY:
;	E2 - CURVE AND SURFACE FITTING.
; CALLING SEQUENCE:
;	GAUSS_FUNCT2,X,A,F,PDER
; INPUTS:
;	X = VALUES OF INDEPENDENT VARIABLE.
;	A = PARAMETERS OF EQUATION DESCRIBED BELOW.
; OUTPUTS:
;	F = VALUE OF FUNCTION AT EACH X(I).
;
; OPTIONAL OUTPUT PARAMETERS:
;	PDER = (N_ELEMENTS(X),6) ARRAY CONTAINING THE
;		PARTIAL DERIVATIVES.  P(I,J) = DERIVATIVE
;		AT ITH POINT W/RESPECT TO JTH PARAMETER.
; COMMON BLOCKS:
;	NONE.
; SIDE EFFECTS:
;	NONE.
; RESTRICTIONS:
;	NONE.
; PROCEDURE:
;	F = A(0)*EXP(-Z^2/2) + A(3) + A(4)*X + A(5)*X^2
;	Z = (X-A(1))/A(2)
; MODIFICATION HISTORY:
;	WRITTEN, DMS, RSI, SEPT, 1982.
;	Modified, DMS, Oct 1990.  Avoids divide by 0 if A(2) is 0.
;	Modified, JRL, LPARL, Nov, 1988  - If n_elements(A) is 4 or 5,
;					   then a constant or linear
;					   background term is calculated.
;	Modified, JRL, LPARL, Aug, 1990	 - Allow for no background term
;	Modified, SLF, ISAS,  4-Sep-92   - Split gaussfit2/gauss_funct2
;-
	ON_ERROR,2			;Return to caller if an error occurs
	if a(2) ne 0.0 then Z = (X-A(1))/A(2) $	;GET Z
	else z = 10.
	EZ = EXP(-Z^2/2.)*(ABS(Z) LE 7.) ;GAUSSIAN PART IGNORE SMALL TERMS
;;	F = A(0)*EZ + A(3) + A(4)*X + A(5)*X^2 ;FUNCTIONS.
	F = A(0)*EZ
	case n_elements(a) of
		4: F = F + A(3) 
		5: F = F + A(4)*X 
		6: F = F + A(4)*X + A(5)*X^2 ;FUNCTIONS.
	   else:
	endcase
	IF N_PARAMS(0) LE 3 THEN RETURN ;NEED PARTIAL?
;
;	PDER = FLTARR(N_ELEMENTS(X),6) ;YES, MAKE ARRAY.
	PDER = FLTARR(N_ELEMENTS(X),n_elements(a)) ;YES, MAKE ARRAY.
	PDER(0,0) = EZ		;COMPUTE PARTIALS
	PDER(0,1) = A(0) * EZ * Z/A(2)
	PDER(0,2) = PDER(*,1) * Z
;	PDER(*,3) = 1.
;	PDER(0,4) = X
;	PDER(0,5) = X^2
	if n_elements(a) ge 4 then PDER(0,3) = 1.
	if n_elements(a) ge 5 then PDER(0,4) = X
	if n_elements(a) ge 6 then PDER(0,5) = X^2
	RETURN
END
