def magnitudeAB_from_sfr(sfr): """Use Kennicutt (1998) conversion from UV luminosity to AB magnitude. Convenience function: uses L_nu_from_sfr and magnitudes.magnitude_AB_from_L_nu. """ lnu = L_nu_from_sfr(sfr) return magnitudes.magnitude_AB_from_L_nu(lnu)
def test_sfrd(): """ Check conversion of Lmin -> SFRD. At z=7: Lmin = 0.2 L*z=6 -> Mmin=-18.5 -> log(rho/erg/s/Hz/Mpc^3)=25.5 -> SFRD = 10^-2.32 Msun/yr^-1/Mpc^-3. From Oesch et al (2009 ApJ 690 1350). """ cosmo = cparam.WMAP7_BAO_H0_mean(flat=True) # # From Bouwens 2008ApJ...686..230B # lfhist = luminosityfunction.LFHistory(params=luminosityfunction.B2008, # **cosmo) # mStarz6 = lfhist.params_z(6.0)['MStar'] alpha = -1.74 mStarz6 = -20.24 mStarz7 = -19.7 phiStar = 1.4e-3 lStarz6 = magnitudes.L_nu_from_magAB(mStarz6) lmin = 0.2 * lStarz6 magmin = magnitudes.magnitude_AB_from_L_nu(lmin) ltot = luminosityfunction.schechterCumuLM(magnitudeAB=magmin, MStar=mStarz7, phiStar=phiStar, alpha=alpha) sfrd = luminosityfunction.sfr_from_L_nu(ltot) print """Lmin = 0.2 L*z=6 -> Lmin/erg/s/Hz = %.3g -> Mmin = %.3g -> log(rho/(erg/s/Hz/Mpc^3)) = %.3g -> log(SFRD/(MSun/yr)) = %.3g"""\ % (lmin, magmin, numpy.log10(ltot), numpy.log10(sfrd)) ltotz6 = luminosityfunction.schechterCumuLM(magnitudeAB=magmin, MStar=mStarz6, phiStar=phiStar, alpha=alpha) print "luminosity density increase from z=7 to z=6 is %.2g percent." \ % (100 * (1. - ltot/ltotz6)) assert numpy.abs(numpy.round(1. - ltot/ltotz6, 1) - 0.5) < 0.1 assert numpy.round(magmin, 1) == -18.5 assert numpy.abs(numpy.round(numpy.log10(ltot), 1) - 25.5) < 0.2 assert numpy.abs(numpy.round(numpy.log10(sfrd), 1) - -2.32) < 0.05