def projectCl(lvec,P,D,dNdz,z,growthFac=None): """ project C_l's given a power spectrum class P (Camb or BBKS) and Distance class D together arguments: lvec: vector of l values P: p.pk p.k contains the power spectrum, e.g. pt.Camb instance D: frw.Distance instance dNdz,z, growthFac: vectors suitable for trapezoid z-integration presently it crashes if z=0.0 is included, start from a small z value """ lvec = M.asarray(lvec) dNdz2 = M.asarray(dNdz)**2 z = M.asarray(z) da1 = 1./D.rtc(z)/D.h #comoving Da in h^1Mpc dNdz2vc = dNdz2/D.vc(z)/D.h**3 # comovin volume in (h^-1Mpc)^3 #`use growth factor if given if growthFac: dNdz2vc = dNdz2vc*(growthFac**2) lk = M.log(P.k) pk = P.pk ## return M.asarray([utils.trapz(utils.splineResample(pk,lk, ## M.log(l*da1))*dNdz2vc,z) for l in lvec]) return M.asarray([utils.trapz(utils.interpolateLin(pk,lk, M.log(l*da1))*dNdz2vc,z) for l in lvec])
def logpkInterp(self, logknew, lin=False): """ log P(k) interpolated in log space for arbitrary k Linearly interpolate if lin=True """ if lin == True: return utils.interpolateLin(self.logpk, self.logk, logknew) else: return utils.splineResampleUniform(self.logpk, self.logk, logknew)