# plot_cmb.py - plots the output from CAMB # by Bjoern Malte Schaefer, bjoern.malte.schaefer@uni-heidelberg.de import numpy as np import pylab as plt import scipy.special as special lmin = 0 lmax = 1800 plt.close() data = np.loadtxt('camb_cmb.data') l = data[lmin:lmax,0] cu = data[lmin:lmax,1] su = cu / l / (l+1.0) * 2.0 * np.pi tmin = 0 tmax = 4 theta = np.linspace(tmin,tmax,num=1000) delta = 0.01 def Cu(theta): Tu = 0 TTu = 0 i = 0 for number in su: TTu = TTu + delta * (2 + i) * su[i] * special.j0((2 + i) * theta) / (2 * np.pi) i = i + delta return TTu x = Cu(theta)/Cu(0) data = np.loadtxt('camb_lensed.data') l = data[lmin:lmax,0] cl = data[lmin:lmax,1] sl = cl / l / (l+1.0) * 2.0 * np.pi def Cl(theta): Tl = 0 TTl = 0 i = 0 for number in sl: TTl = TTl + delta * (2 + i) * sl[i] * special.j0((2 + i) * theta) / (2 * np.pi) i = i + delta return TTl y = Cl(theta) / Cl(0) plt.plot(theta,x,'b-',label='unlensed') plt.plot(theta,y,'r-',label='lensed') plt.legend(loc='upper right') plt.xlabel('Theta') plt.ylabel('Corellation of theta') plt.show() Delta = Cu(theta)/Cu(0) - Cl(theta)/Cl(0) plt.plot(theta,Delta,'b-',label='differenz') plt.show() mmax = 200.0 mmin = -mmax plt.close() cov = np.array([[Cu(0),Cu(0.218)],[Cu(0.218),Cu(0)]]) ico = np.linalg.inv(cov) r = cov[1,0] / np.sqrt(cov[0,0] * cov[1,1]) print(r) x = y = np.linspace(mmin,mmax,101) X,Y = np.meshgrid(x,y) Z = X**2 * ico[0,0] + 2.0 * X * Y * ico[1,0] + Y**2 * ico[1,1] mm = np.linspace(1,3,3) levels = -2.0 * np.log(special.erfc(mm/np.sqrt(2.0))) plt.contourf(X,Y,Z,levels) plt.axis('equal') plt.xlabel('$x$-axis') plt.ylabel('$y$-axis') plt.xlim([mmin,mmax]) plt.ylim([mmin,mmax]) plt.show() cov2 = np.array([[Cl(0),Cl(0.218)],[Cl(0.218),Cl(0)]]) ico2 = np.linalg.inv(cov2) r2 = cov2[1,0] / np.sqrt(cov2[0,0] * cov2[1,1]) print(r2) x = y = np.linspace(mmin,mmax,101) X,Y = np.meshgrid(x,y) Z2 = X**2 * ico2[0,0] + 2.0 * X * Y * ico2[1,0] + Y**2 * ico2[1,1] mm = np.linspace(1,3,3) levels = -2.0 * np.log(special.erfc(mm/np.sqrt(2.0))) plt.contourf(X,Y,Z2,levels) plt.axis('equal') plt.xlabel('$x$-axis') plt.ylabel('$y$-axis') plt.xlim([mmin,mmax]) plt.ylim([mmin,mmax]) plt.show() mmax = 200 mmin = -mmax x = y = np.linspace(mmin,mmax,101) X,Y = np.meshgrid(x,y) Z3 =10**5*((Z2-Z)**2)**0.5 mm = np.linspace(1,3,3) levels = -2.0 * np.log(special.erfc(mm/np.sqrt(2.0))) plt.contourf(X,Y,Z3,levels) plt.axis('equal') plt.xlabel('$x$-axis') plt.ylabel('$y$-axis') plt.xlim([mmin,mmax]) plt.ylim([mmin,mmax]) plt.show()