Angular Diameter Distance test using BAO as Standard Ruler using $D_A$ data

Basics of angular diameter distance are explained using plots and standard distance values


In [24]:
import numpy as np
import scipy as sp
from scipy import integrate
import math
import matplotlib.pyplot as plt
from astropy.io import ascii

Observational data of Baryon Accoustic Oscillations consists of a length scale, angular diameter distance ($D_A$) that can be used as a standard ruler. However, due to the galaxy surveys providing more data centered around a particular redshift, we can do correlation function analysis better with high number of galaxies i.e. at a particular redshift. For e.g. with every new data release SDSS publishes galaxy calatalogue along with the estimated parameters, power spectrum and correlation function using a fiducial model of cosmlogy (Generally taken as $\Omega_M=0.3$, $\Omega_{\Lambda}=0.7$ and $h=0.7$). Therefore, we collect data from different references to put together evolution of angular diameter distance standard ruler.

We quote values in the following list from different references

arXiv:1209.0210 $D_A(0.35)=1036\pm 79Mpc$

Chuang MNRAS 226.36 $D_A(0.35)=1048^{+60}_{-58}$

arXiv:1206.6732 $D_A(0.35)=1050\pm 38Mpc$ and $H(0.35)=84.4\pm 7km/s/Mpc$

arXiv:1201:2172 $D_A(0.57)=1411\pm 65Mpc$

arXiv:1303.4666 $D_A(0.57)=1408\pm 45Mpc$ and $H(0.57)=92.9\pm 7.8km/s/Mpc$

arXiv:1303.4391 $D_A(0.57)=1386\pm 45Mpc$ and $H(0.57)=90.8\pm 6.2km/s/Mpc$

arXiv:1404.1801 $D_A(2.34)=1662\pm 96Mpc$ and $H(2.34)=222\pm 7km/s/Mpc$

We now plot graph using these data points comparing with standard cosmology models and linear coasting.


In [25]:
z=np.array([0.35,0.35,0.35,0.54,0.57,0.57,2.34])
zerr=np.zeros(7)
DA=np.array([1036,1048,1050,1411,1408,1386,1662])
DAerr = np.array([79,60,38,65,45,45,96])

In [26]:
plt.figure()
plt.errorbar(z,DA,DAerr,fmt='ro')
#plt.plot(z,DA,'bo')
plt.title("DA vs. z")


Out[26]:
<matplotlib.text.Text at 0x7f510fdbf210>

Define angular diameter distances for Flat LambdaCDM cosmology with $\Omega_M=0.3$ and $\Omega_{\Lambda}=0.7$ starting with definition of $E(z)=\sqrt{0.3(1+z)^3+0.7}$. As we know Angular diameter distance ($D_A$) is comoving distance ($D_C$) divided by $1+z$. We write $D_A=\frac{D_C}{1+z}=\frac{1}{1+z}\int_0^z\frac{dz}{E(z)}$


In [27]:
Ez = lambda x: 1/math.sqrt(0.3*(1+x)**3+0.7)

np.vectorize(Ez)
#Calculate comoving distance of a data point using the Redshift - This definition is based on the cosmology model we take. Here the distance for E-dS universe is considered. Also note that c/H0 ratio is cancelled in the equations and hence not taken.

def DC_LCDM(z):
  return integrate.quad(Ez, 0, z)

In [28]:
zt = np.arange(0, np.round(z.max())+1, 0.1)
n = len(zt)
terr=np.zeros(n)
print n
print zt
print terr


30
[ 0.   0.1  0.2  0.3  0.4  0.5  0.6  0.7  0.8  0.9  1.   1.1  1.2  1.3  1.4
  1.5  1.6  1.7  1.8  1.9  2.   2.1  2.2  2.3  2.4  2.5  2.6  2.7  2.8  2.9]
[ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]

In [29]:
DC_LCDM=np.vectorize(DC_LCDM)

In [86]:
DALCDM=DC_LCDM(zt)[0]/(1+zt)

In [87]:
DALCDM


Out[87]:
array([ 0.        ,  0.08882452,  0.15891724,  0.21452734,  0.25877005,
        0.29398956,  0.32198513,  0.34415862,  0.36161479,  0.37523198,
        0.38571353,  0.39362601,  0.39942814,  0.40349302,  0.40612541,
        0.40757517,  0.40804789,  0.40771333,  0.40671208,  0.4051609 ,
        0.40315707,  0.40078179,  0.39810303,  0.39517777,  0.39205392,
        0.38877174,  0.3853652 ,  0.3818629 ,  0.37828903,  0.37466398])

Since we are using $D_{H_0}$ as length units, we need to scale the length down to $D_{H_0}=3000h^{-1}Mpc\approx 4285.714 Mpc$


In [88]:
DALCDM=DALCDM*4285.714
print DALCDM


[    0.           380.67649975   681.07382525   919.4028106   1109.01443191
  1259.95515873  1379.93616315  1474.96542465  1549.77756357  1608.13694255
  1653.05788928  1686.96851125  1711.83476272  1729.25569715  1740.53736325
  1746.75060384  1748.77656648  1747.34274209  1743.05164622  1736.4037498
  1727.81589091  1717.63611873  1706.1557078   1693.61891923  1680.23096042
  1666.16449897  1651.56501216  1636.55519455  1621.23860183  1605.70267232]

Angular Diameter distance for open empty universe (Milne universe) is $D_A=\frac{z(z/2+1)}{(z+1)^2}$


In [98]:
Ezo = lambda x: 1/math.sqrt(0.9*(1+x)**3+0.1*(1+x)**2)

np.vectorize(Ezo)
#Calculate comoving distance of a data point using the Redshift - This definition is based on the cosmology model we take. Here the distance for E-dS universe is considered. Also note that c/H0 ratio is cancelled in the equations and hence not taken.

def DC_OU(z):
  return integrate.quad(Ezo, 0, z)

In [99]:
DC_OU=np.vectorize(DC_OU)

In [100]:
DAOU=np.sinh(DC_OU(zt)[0])/(1+zt)
print DAOU
DAOU=DAOU*4285.714
print DAOU


[ 0.          0.08493126  0.1465801   0.19221587  0.22648967  0.25249237
  0.27234423  0.28753933  0.29915502  0.30798376  0.31461861  0.31951018
  0.32300546  0.32537483  0.32683119  0.32754377  0.32764821  0.32725409
  0.32645049  0.32531029  0.32389346  0.32224958  0.32041979  0.31843842
  0.31633417  0.31413113  0.31184958  0.30950662  0.30711668  0.304692  ]
[    0.           363.99108888   628.20037716   823.78224163   970.66995851
  1082.11009769  1167.18948134  1232.31133218  1282.09287486  1319.93032764
  1348.36537989  1369.32924878  1384.30903375  1394.46347573  1400.70501131
  1403.75890944  1404.20653501  1402.51743291  1399.07341762  1394.18686575
  1388.11475125  1381.06951702  1373.22757033  1364.73597532  1355.71776505
  1346.27618739  1336.49812066  1326.45683815  1316.2142583   1305.82278585]

Flat linear power law will have $D_A=\frac{1}{1+z}\ln(1+z)$ Hence


In [101]:
def DA_LC(z):
    return 1/(z+1)*np.log(1+z)
DA_LC=np.vectorize(DA_LC)
DALC=DA_LC(zt)
print DALC
DALC=DALC*4285.714
print DALC


[ 0.          0.08664562  0.15193463  0.20181866  0.24033731  0.27031007
  0.29375227  0.31213427  0.32654815  0.33781783  0.34657359  0.3533035
  0.35838971  0.3621344   0.36477864  0.36651629  0.3675044   0.36787103
  0.36772122  0.36714163  0.3662041   0.36496842  0.36348463  0.36179469
  0.35993395  0.35793228  0.35581496  0.35360346  0.35131607  0.34896835]
[    0.           371.33833812   651.14837371   864.93707794  1030.01698221
  1158.47166022  1258.93820869  1337.71819081  1399.49196599  1447.79062417
  1485.31528789  1514.15774544  1535.95579442  1552.00447343  1563.33692677
  1570.78400707  1575.01876043  1576.59001078  1575.94798246  1573.46403844
  1569.44602204  1564.15028027  1557.79115928  1550.54855698  1542.57397063
  1533.99536936  1524.92114294  1515.44331941  1505.64020045  1495.57853011]

Angular Diameter distance for Einstein DeSitter universe) is $D_A=\frac{2}{z+1}[1-\frac{1}{\sqrt{z+1}}$]


In [102]:
def DA_EdS(z):
  return 2*(1-1/np.sqrt(1+z))/(z+1)

In [103]:
DA_EdS=np.vectorize(DA_EdS)

In [104]:
DAEdS=DA_EdS(zt)
print DAEdS
DAEdS=DAEdS*4285.714
print DAEdS


[ 0.          0.08461347  0.14521512  0.18914151  0.22120821  0.24467123
  0.26178823  0.27415884  0.28293779  0.28897237  0.29289322  0.29517566
  0.29618194  0.29619089  0.29541898  0.29403557  0.2921741   0.28994028
  0.28741835  0.28467571  0.28176649  0.2787343   0.27561438  0.27243522
  0.26921991  0.26598715  0.26275207  0.25952689  0.25632149  0.25314375]
[    0.           362.62915053   622.3504644    810.60641207   948.03511193
  1048.59089622  1121.94948748  1174.96636446  1212.59043107  1238.45292446
  1255.25656837  1265.03844896  1269.35110058  1269.38945551  1266.08125714
  1260.15237759  1252.1746211   1242.60112525  1231.79286278  1220.03867872
  1207.57057895  1194.57549387  1181.20440061  1167.57944797  1153.79955868
  1139.94486158  1126.08021851  1112.25804575  1098.52058231  1084.90172209]

In [106]:
#
plt.plot(zt,DAEdS,'r',label='E-dS')
#plt.plot(z,DA,'bo')
#plt.plot(0.35,995.922790748,'bo')
#plt.plot(0.57,1331.15562554,'bo')
plt.plot(2.34,1458.34999871,'bo')
plt.plot(2.34,1339.93790212,'go')
#plt.plot(1.0,1607.15989286,'bo')
#plt.plot(1.5,1800.00111966,'bo')

plt.plot(zt,DAOU,'g',label='Milne')
plt.plot(zt,DALCDM,'b',label='LCDM')
plt.plot(zt,DALC,'c',label='LC')
#plt.errorbar(z,DA,DAerr,fmt='ro')
plt.title("DA vs. z")
plt.legend(frameon=0, loc='lower right')
#plt.title("DA vs. z")
plt.show()



In [105]: