;
;------------------------------------------------------------------------------
FUNCTION f_nline, energy_bins, parameters, NLINE=nline, _REF_EXTRA=_ref_extra

npar = n_elements( parameters )

nline = 0

IF NOT( npar MOD 3 EQ 0 AND npar GT 0 ) THEN BEGIN
    MESSAGE, 'Invalid parameter array. ' + $
             'Must have 3*nline elements in parameters.', $
             /CONTINUE
    RETURN, 0.
ENDIF

twod = Size( energy_bins, /n_dim) eq 2
n_energy_bins = Twod ? $
                N_Elements( energy_bins ) / 2 : $
                N_Elements( energy_bins )

line = Fltarr( n_energy_bins )

nline = npar / 3

w2 = Indgen(2)
!except = 0
FOR i=0,nline-1 DO BEGIN
    IF parameters[i*3] NE 0.0 THEN BEGIN
        line = Temporary( line ) + $
                ((TwoD eq 1)? $
               f_gauss_intg( energy_bins, $
                             [ f_div( parameters[i*3]/sqrt(2*!pi), $
                               parameters[2+i*3]),  $
                               parameters[1+i*3+w2 ] ], $
                             _EXTRA=_ref_extra ) : $
               gaussian( energy_bins, $
                [f_div( parameters[i*3]/sqrt(2*!pi), $
                parameters[2+i*3]),  parameters[1+i*3+ w2]] ))


    ENDIF
ENDFOR
result = check_math()
!except = 1

RETURN,line
END