; docformat = 'rst' ;+ ; This function generates a double Schechter function (single value of ; M-star, but two values for alpha and phi-star) along an input array of ; absolute magnitudes. ; ; Compatible with mpfit ; ; :Params: ; absmag : in, required ; Array of absolute magnitudes ; params : in, optional ; [mstar, alpha_1, phistar_1, alpha_2, phistar_2] OR input separately: ; :Keywords: ; mstar : in, optional ; alpha_1 : in, optional ; phistar_1 : in, optional ; alpha_2 : in, optional ; phistar_2 : in, optional ; loglum : in, optional ; Set to /loglum to input log10 luminosity instead of absolute magnitudes ; :Returns: ; Array of phi for corresponding absmag ; :History: ; 21 April 2008 Written, Anthony Smith ;- FUNCTION ajs_double_schechter, $ absmag, params, mstar=mstar, alpha_1=alpha_1, $ phistar_1=phistar_1, alpha_2=alpha_2, $ phistar_2=phistar_2, loglum=loglum compile_opt idl2 IF n_params() EQ 2 THEN BEGIN mstar = params[0] alpha_1 = params[1] phistar_1 = params[2] alpha_2 = params[3] phistar_2 = params[4] ENDIF absmag = double(absmag) IF keyword_set(loglum) THEN BEGIN phi = alog(10) $ * (phistar_1 * 10 ^ (- (alpha_1 + 1) * (mstar - absmag)) $ + phistar_2 * 10 ^ (- (alpha_2 + 1) * (mstar - absmag))) $ * exp(-10 ^ (- (mstar - absmag))) ENDIF ELSE BEGIN phi = 0.4 * alog(10) $ * (phistar_1 * 10 ^ (0.4 * (alpha_1 + 1) * (mstar - absmag)) $ + phistar_2 * 10 ^ (0.4 * (alpha_2 + 1) * (mstar - absmag))) $ * exp(-10 ^ (0.4 * (mstar - absmag))) ENDELSE RETURN, phi END