Window-convolved Power Spectra

When analyzing power spectrum measurements from a galaxy survey, the theoretical quantity of interest is the power spectrum convolved with the survey window function, which arises due to the presence of the survey selection function. In particular, the most common power spectrum spectrum from galaxy survey data is the window-convolved power spectrum multipoles. See 1704.02357 for more details about how this measurement is made from survey data.

The pyRSD package includes functionality for computing the theoretical power spectrum multipoles convolved with a window function input by the user. The window convolution procedure implemented in pyRSD is described in detail in Wilson et al. 2017, as well as in Section 4.3.2 of 1706.02362. Please see these references for further details about the algorithm.

Specifying the Window Function

In order to convolve the theoretical power spectrum multipoles with a survey window function, the user must input the correlation function multipoles of the survey window in configuration space. Specifically, for a set of separations \(s\), the user should supply the window multipoles \(Q_\ell(s)\) for \(\ell=0,2,4,...,\ell_\mathrm{max}\). In order to fully account for the anisotropy introduced by the window function on the model, we recommend that \(\ell_\mathrm{max} = 8\) or \(\ell_\mathrm{max} = 10\), to be cautious.

Below, we show the window function multipoles in configuration space as measured with a pair counter correlation function code for the BOSS DR12 CMASS sample.

# load the window function correlation multipoles array from disk
# first column is s, followed by W_ell
Q = numpy.loadtxt('data/window.dat')

# now plot
for i in range(1, Q.shape[1]):
  plt.semilogx(Q[:,0], Q[:,i], label=r"$\ell=%d$" %(2*(i-1)))
_images/window_poles_plot.png

From this plot we can see that the \(Q_\ell\) vanish for scales approaching 3000 \(\mathrm{Mpc}/h\), as these are the largest scales in the volume of the CMASS sample. Also note that on small scales, the clustering becomes isotropic, with the multipoles vanishing, and that in general, the contribution of the higher-order multipoles decreases as \(\ell\) increases.

Evaluating the Convolution

Once the window multipoles have been measured, we can evaluate the convolved multipoles with the transfer function class, WindowTransfer. For example, to evalute the convolved monopole, quadrupole, and hexadecapole, we simply do

# adjust the model kmin/kmax
model.kmin = 1e-4
model.kmax = 0.7

# the multipoles to compute
ells = [0, 2, 4]

# the window transfer function, with specified valid k range
transfer = WindowTransfer(Q, ells, grid_kmin=1e-3, grid_kmax=0.6)

# evaluate the model with this transfer function
Pell_conv = model.from_transfer(transfer) # shape is (78, 3)

# get the coordinate arrays from the grid
k, mu = transfer.coords # this has shape of (Nk, Nmu)

for i, iell in enumerate(ells):
  plt.loglog(k[:,i], Pell_conv[:,i], label=r"$\ell = %d$" % iell)
_images/poles_conv_plot.png

In this plot, we show the unconvoled \(P_0\), \(P_2\), and \(P_4\) multipoles in black, and the correpsonding window-convolved multipoles in color. The effects of the window function, mostly on large scales (small \(k\)) are clearly evident.

Warning

The convolution is performed in configuration space using the Convolution Theorem. FFTLog is used to perform the Fourier transfrom on a grid, and to achieve the best results, the grid bounds should be padded to cover a wider range than the wavenumbers of interest. Typically, if one is interested in the power at \(k = 0.4 \ h/\mathrm{Mpc}\), the grid_kmax keyword should be set to \(k = 0.6 \ h/\mathrm{Mpc}\) or \(k = 0.7 \ h/\mathrm{Mpc}\), as was done in the example above. Also, note that to avoid slowdowns, the model kmin and kmax attributes should be adjusted to include the desired grid range, as was done above.