; docformat = 'idl' ;+ ; NAME: ; ajs_choloniewski ; ; ; PURPOSE: ; This function generates a Choloniewski function along an input ; array of absolute magnitudes and surface brightnesses. ; ; ; CATEGORY: ; ; ; ; CALLING SEQUENCE: ; result = ajs_schechter(absmag,sb,params) ; result = ajs_schechter(absmag,sb, $ ; sbstar=sbstar, sigmasb=sigmasb, beta=beta, $ ; mstar=mstar,alpha=alpha,phistar=phistar) ; ; INPUTS: ; absmag ; sb ; ; ; OPTIONAL INPUTS: ; params: [mstar,alpha,phistar,sbstar,sigmasb,beta] OR input separately: ; ; KEYWORD PARAMETERS: ; mstar ; alpha ; phistar ; sbstar ; sigmasb ; beta ; ; OUTPUTS: ; This function returns an rray of phi for corresponding absmag, sbr ; ; ; OPTIONAL OUTPUTS: ; ; ; ; COMMON BLOCKS: ; ; ; ; SIDE EFFECTS: ; ; ; ; RESTRICTIONS: ; Compatible with mpfit2d. ; ; Magnitudes only ; ; PROCEDURE: ; ; ; ; EXAMPLE: ; ; ; ; MODIFICATION HISTORY: ; 17 Jan 2008 Created, Anthony Smith ;- FUNCTION ajs_choloniewski, absmag, sb, params, $ mstar=mstar, alpha=alpha, phistar=phistar, $ sbstar=sbstar, sigmasb=sigmasb, beta=beta compile_opt idl2 IF n_params() EQ 3 THEN BEGIN mstar = params[0] alpha = params[1] phistar = params[2] sbstar = params[3] sigmasb = params[4] beta = params[5] ENDIF ;; Convert 1-d inputs to 2-d if necessary IF size(absmag, /n_dimensions) EQ 1 THEN $ absmag_arr = double(absmag # (sb * 0 + 1)) $ ELSE $ absmag_arr = double(absmag) IF size(sb, /n_dimensions) EQ 1 THEN $ sb_arr = double((absmag * 0 + 1) # sb) $ ELSE $ sb_arr = double(sb) phi = 0.4 * alog(10) / sqrt(2 * !PI) / sigmasb * phistar $ * 10 ^ (0.4 * (alpha + 1) * (mstar - absmag_arr)) $ * exp(-10 ^ (0.4 * (mstar - absmag_arr))) $ * exp(-0.5 * ((sb_arr - sbstar - beta * (absmag_arr - mstar)) $ / sigmasb) ^ 2) RETURN, phi END