def __init__(self, z=0.3, m200=1e13, c200=5., gammadm=1., mstar=1e11, reff=5., ra=0., dec=0., sources=None, \ cosmo=wl_cosmology.default_cosmo): self.z = z self.cosmo = cosmo self.m200 = m200 # halo mass in M_Sun units self.mstar = mstar # central point mass in M_Sun units self.rhocrit = wl_cosmology.rhoc(self.z, cosmo=self.cosmo) self.r200 = (self.m200 * 3. / 200. / (4. * pi) / self.rhocrit)**( 1 / 3.) #r200 in Mpc self.c200 = c200 self.rs = self.r200 / self.c200 self.reff = reff # effective radius in kpc self.gammadm = gammadm self.angD = wl_cosmology.Dang(self.z, cosmo=self.cosmo) self.Mpc2deg = np.rad2deg(1. / self.angD) self.rs_ang = self.rs * self.Mpc2deg self.reff_ang = self.reff * self.Mpc2deg / 1000. self.halo_norm = self.m200 / gnfw.fast_M3d(self.r200, self.rs, self.gammadm) self.S_bulge = self.mstar / self.reff**2 * 1e6 self.sources = sources if ra is not None: self.ra = ra if dec is not None: self.dec = dec
def __init__(self, z=0.3, m200=1e13, c200=5., mstar=1e11, reff=5., ra=0., dec=0., sources=None, \ cosmo=wl_cosmology.default_cosmo): self.z = z self.cosmo = cosmo self.m200 = m200 # halo mass in M_Sun units self.mstar = mstar # stellar mass in M_Sun units self.rhocrit = wl_cosmology.rhoc(self.z, cosmo=self.cosmo) self.r200 = (self.m200*3./200./(4.*pi)/self.rhocrit)**(1/3.) #r200 in Mpc self.c200 = c200 self.rs = self.r200/self.c200 self.reff = reff # effective radius in kpc self.angD = wl_cosmology.Dang(self.z, cosmo=self.cosmo) self.Mpc2deg = np.rad2deg(1./self.angD) self.rs_ang = self.rs*self.Mpc2deg self.reff_ang = self.reff*self.Mpc2deg/1000. self.S_s = self.m200/(np.log(1. + self.c200) - self.c200/(1. + self.c200))/(4.*pi*self.rs**2) self.S_bulge = self.mstar/self.reff**2*1e6 self.sources = sources if ra is not None: self.ra = ra if dec is not None: self.dec = dec
def __init__(self, z=0.3, m200=1e13, c200=5., mstar=1e11, reff=5., nser=4., nu=0., ra=0., dec=0., sources=None, \ cosmo=wl_cosmology.default_cosmo): import adcontr self.z = z self.cosmo = cosmo self.m200 = m200 # halo mass in M_Sun units self.mstar = mstar # stellar mass in M_Sun units self.fbar = self.mstar / (self.mstar + self.m200) self.rhocrit = wl_cosmology.rhoc(self.z, cosmo=self.cosmo) self.r200 = (self.m200 * 3. / 200. / (4. * pi) / self.rhocrit)**( 1 / 3.) #r200 in Mpc self.c200 = c200 self.rs = self.r200 / self.c200 self.reff = reff # effective radius in kpc self.nser = nser # Sersic index self.nu = nu # adiabatic contraction efficiency parameter self.angD = wl_cosmology.Dang(self.z, cosmo=self.cosmo) self.Mpc2deg = np.rad2deg(1. / self.angD) self.rs_ang = self.rs * self.Mpc2deg self.reff_ang = self.reff * self.Mpc2deg / 1000. self.S_h = self.m200 / self.rs**2 self.S_bulge = self.mstar / self.reff**2 * 1e6 self.sources = sources if ra is not None: self.ra = ra if dec is not None: self.dec = dec
def __init__(self, z=0.3, m200=1e13, c200=5., mstar=1e11, ra=0., dec=0., sources=None, \ cosmo=wl_cosmology.default_cosmo): self.z = z self.cosmo = cosmo self.m200 = m200 # halo mass in M_Sun units self.mstar = mstar # central point mass in M_Sun units self.rhocrit = wl_cosmology.rhoc(self.z, cosmo=self.cosmo) self.r200 = (self.m200*3./200./(4.*pi)/self.rhocrit)**(1/3.) #r200 in Mpc self.c200 = c200 self.rs = self.r200/self.c200 self.angD = wl_cosmology.Dang(self.z, cosmo=self.cosmo) self.Mpc2deg = np.rad2deg(1./self.angD) self.rs_ang = self.rs*self.Mpc2deg self.S_s = self.m200/(np.log(1. + self.c200) - self.c200/(1. + self.c200))/(4.*pi*self.rs**2) self.sources = sources if ra is not None: self.ra = ra if dec is not None: self.dec = dec
def __init__(self, z=0.3, m200=1e13, c200=5., alpha=1., mstar=1e11, ra=0., dec=0., sources=None, \ cosmo=wl_cosmology.default_cosmo): self.z = z self.cosmo = cosmo self.m200 = m200 # halo mass in M_Sun units self.mstar = mstar # central point mass in M_Sun units self.rhocrit = wl_cosmology.rhoc(self.z, cosmo=self.cosmo) self.r200 = (self.m200*3./200./(4.*pi)/self.rhocrit)**(1/3.) #r200 in Mpc self.c200 = c200 self.r2 = self.r200/self.c200 self.alpha = alpha self.angD = wl_cosmology.Dang(self.z, cosmo=self.cosmo) self.Mpc2deg = np.rad2deg(1./self.angD) self.r2_ang = self.r2*self.Mpc2deg self.halo_norm = self.m200/einasto.M3d(self.r200, self.r2, self.alpha) self.sources = sources if ra is not None: self.ra = ra if dec is not None: self.dec = dec
for line in lines[1:]: line = line.split() name = line[0] zd = float(line[1]) zs_here = float(line[2]) zs.append(zs_here) tein_here = float(line[3]) tein_obs.append(tein_here) tein_err.append(0.1 * tein_here) lmchab_obs.append(float(line[6])) lmchab_err.append(float(line[7])) dd = wl_cosmology.Dang(zd) ds = wl_cosmology.Dang(zs_here) dds = wl_cosmology.Dang(zs_here, zd) arcsec2kpc = np.deg2rad(1. / 3600.) * dd * 1000. rhoc.append(wl_cosmology.rhoc(zd)) rein_phys_here = tein_here * arcsec2kpc rein_phys.append(rein_phys_here) s_cr = c**2 / (4. * np.pi * G) * ds / dds / dd / Mpc / M_Sun * kpc**2 mein_here = np.pi * rein_phys_here**2 * s_cr reff1 = float(line[4]) nser1 = float(line[5])
def S_cr(self, z): Ds = wl_cosmology.Dang(z, cosmo=self.cosmo) Dds = wl_cosmology.Dang(z, self.z, cosmo=self.cosmo) return c**2/(4.*pi*G)*Ds/Dds/self.angD*Mpc/M_Sun
from scipy.interpolate import splrep, splev from astropy.io import fits as pyfits calib_dir = '/Users/sonnen/hsc_weaklensing/hsc-unblinded-Aug2017/' # reads in the shear calibration info calib_file = h5py.File(calib_dir + 'hsc_16a_mandelbaum_shear.hdf5', 'r') rmax = 0.5 # maximum radius for the WL analysis, in Mpc (physical) rmin = 0.03 # minimum radius for the WL analysis, in Mpc (physical) nz = 1001 zd_grid = np.linspace(0.01, 1., nz) dd_grid = 0. * zd_grid for i in range(nz): dd_grid[i] = wl_cosmology.Dang(zd_grid[i]) dd_spline = splrep(zd_grid, dd_grid) # reads in the shape measurement and photo-z table wl_table = h5py.File( '/gdrive/projects/hsc_weaklensing/HSC_S16A_2.0_minimal.hdf5', 'r') # reads in the lens sample catalog f = open('sdss_legacy_hscoverlap_mcut11.0.cat', 'r') ra, dec, zd, mstar, mstar_err = np.loadtxt(f, usecols=(0, 1, 2, 3, 4), unpack=True) f.close() ngal = len(ra)
# defines the stellar profile ein_frac = sersic.M2d(rein, nser, reff) def bulge_M2d(R): return sersic.M2d(R, nser, reff * arcsec2kpc) def bulge_Sigma(R): return sersic.Sigma(R, nser, reff * arcsec2kpc) lmchab_obs = float(line[6]) lmchab_err = float(line[7]) dd = wl_cosmology.Dang(zd) ds = wl_cosmology.Dang(zs) dds = wl_cosmology.Dang(zs, zd) rhoc = wl_cosmology.rhoc( zd) # critical density of the Universe in M_Sun/Mpc**3 s_cr = c**2 / ( 4. * np.pi * G ) * ds / dds / dd / Mpc / M_Sun * kpc**2 # critical surface mass density in M_Sun/kpc**2 arcsec2kpc = arcsec2rad * dd * 1000. rein_phys = rein * arcsec2kpc # Einstein radius in kpc nm200 = 30 nmstar = 30
def S_cr(self, z): # critical surface mass density in M_Sun/Mpc^2 Ds = wl_cosmology.Dang(z, cosmo=self.cosmo) Dds = wl_cosmology.Dang(z, self.z, cosmo=self.cosmo) return c**2 / (4. * pi * G) * Ds / Dds / self.angD * Mpc / M_Sun
lnser_samp = nser_mu + nser_beta * (lmchab_samp - mchab_piv) lreff_samp = reff_mu + reff_nu * (lnser_samp - np.log10(4.)) + reff_beta * ( lmchab_samp - mchab_piv) # prepares arrays to store values of theta_ein and the lensing cross-section for each point of the sample tein_samp = np.zeros(nsamp) crosssect_samp = np.zeros(nsamp) for i in range(nsamp): # loops over the sample if zs_samp[i] < zd_samp[i] + 0.01: # source is in front of the lens tein_samp[i] = 0. crosssect_samp[i] = 0. else: dd = wl_cosmology.Dang(zd_samp[i]) rhoc = wl_cosmology.rhoc( zd_samp[i]) # critical density of the Universe in M_Sun/Mpc**3 arcsec2kpc = arcsec2rad * dd * 1000. ds = wl_cosmology.Dang(zs_samp[i]) dds = wl_cosmology.Dang(zs_samp[i], zd_samp[i]) s_cr = c**2 / ( 4. * np.pi * G ) * ds / dds / dd / Mpc / M_Sun * kpc**2 # critical surface mass density, in M_Sun/kpc**2 r200 = (10.**lm200_samp[i] * 3. / 200. / (4. * np.pi) / rhoc)**(1. / 3.) * 1000. c200 = 10.**lc200_samp[i]