; ;------------------------------------------------------------------------------ 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