Post-processing data

We provide the following post-processed measurements derived from each simulation in the PNG-pmwd Suite:

  • Halo-Halo Power spectrum.

  • Halo-Halo-Halo Bispectrum.

And we provide measurements on Realspace and Redshift-space distortions.

In redshift space we apply the distant-observer approximation, shifting halo positions along the line of sight (assumed to be the z-axis). The shift accounts for the halo’s peculiar velocity and the cosmological Hubble expansion, using the appropriate scale factor and cosmological parameters of each catalog.

The redshift-space displacement is given by:

\[\boldsymbol{x}_{\text{rs}} = \boldsymbol{x} + \frac{\boldsymbol{v} \cdot \hat{\boldsymbol{z}}}{a(z) H(z)} \hat{\boldsymbol{z}}\]

Where:

  • \(\boldsymbol{x}\) is the halo’s real-space position

  • \(\boldsymbol{v}\) is the peculiar velocity

  • \(a(z) = (1 + z)^{-1}\) is the scale factor

  • The Hubble parameter is assumed to be in perfect matter domination era given by:

\[H(z) = 100 \sqrt{\Omega_{m} a^{-3} + \Omega_{\Lambda} }\]

expressed in \((km/s)(h/Mpc)\), and evaluated using each simulation’s cosmology.

Mass bins tags

Mass bins are defined as:

  • mbin0 : HFull = \([3.28\times10^{13},\ \infty)\) in Msun/h

  • mbin1 : HLow-A = \([3.28,\ 4.46)\times10^{13}\) in Msun/h

  • mbin2 : HLow-B = \([4.46,\ 7.09)\times10^{13}\) in Msun/h

  • mbin3 : HMid = \([7.09\times10^{13},\ \infty)\) in Msun/h

  • mbin4 : HMid-A = \([7.09,\ 9.06)\times10^{13}\) in Msun/h

  • mbin5 : HMid-B = \([9.06,\ 13.26)\times10^{13}\) in Msun/h

  • mbin6 : HHigh = \([13.26\times10^{13},\ \infty)\) in Msun/h

In the following chart, we show the hierarchical structure of mass bins:

Massbinning

Real-space and redshift-space tags

  • Real space tag: real

  • Redshift-space distortions (RSD): irsd3

When accessing the data on Globus, the file naming follows the convention:

powerspectrum_filename = 'powerspectrum_hh_pmwd_{space-tag}_{dataset}_{mbin-tag}_run1_grid144_z0p503.dat' bispectrum_filename = 'bispectrum_hhh_pmwd_{space-tag}_{dataset}_{mbin-tag}_run1_grid144_z0p503.dat'

where {space-tag} is either real or irsd3 (redshift space), {dataset} is the dataset label, and {mbin-tag} is the corresponding mass-bin identifier (mbin0 - mbin6).

Power spectrum

We compute the redshift-space halo power spectrum using the public PBI4 tool (available here), which implements a fourth-order interpolation scheme with interlacing. This method follows the approach detailed in Sefusatti, Crocce, Scoccimarro, Couchman.

Power spectrum measurements are binned using a spacing of \(\Delta k = 2k_f\), where the fundamental mode is defined by the box size as \(k_f \approx 0.006 [h/Mpc]\). The analysis includes modes up to \(k_{max} \approx 0.45 [h/Mpc]\) in \(36\) bins.

Each power spectrum file can be read in Python as follows,

import numpy as np
filename = 'powerspectrum_hh_pmwd_irsd3_LC_mbin0_run1_grid144_z0p503.dat'
k, avgk, P0PSN, P2,  P4, Nmodes, PSN = np.loadtxt(filename, unpack=True)
P0 = P0PSN - PSN #Shot noise subtracted monopole

where:

  • k: is the wavenumber bin center in units of \([h/Mpc]\).

  • kavg: is the average wavenumber in the bin.

  • P0PSN: \(P^{\ell=0}+PSN\), P2: \(P^{\ell=2}(k)\), and P4: \(P^{\ell=4}(k)\) are the monopole, quadrupole, and hexadecapole moments.

  • PSN: is the Poisson shot noise.

Power spectra are in units of \([h/Mpc]^3\). Check the Tutorial notebook Powerspectrum.

Note

The Powerspectrum is defined following the Fourier convetion: \(\langle \delta(\mathbf{k}_1)\delta(\mathbf{k}_2) \rangle = \delta_D(\mathbf{k}_1+\mathbf{k}_2) P(k_1)\)

Bispectrum

Using the same k-bin definitions as in the power spectrum analysis, we also compute the redshift-space bispectrum for each halo catalog. The bispectrum includes \(1522\) triangle configurations formed by triplets of wavevectors with \(k_i \leq 0.3 [h/Mpc]\).

Each bispectrum file can be read in Python as follows

import numpy as np
filename = 'bispectrum_hhh_pmwd_irsd3_LC_mbin0_run1_grid144_z0p503.dat'
k1, k2, k3, Pk1, Pk2, Pk3, B0BSN, BSN, N_tr, B2, B4 = np.loadtxt(filename, unpack=True)
B0 = B0BSN - BSN #Shot noise subtracted B0

Where:

  • k1, k2, k3: are the wavenumbers of the triangle sides in units of the fundamental frequency \(k_f\).

  • B0BSN: \(= B(k_1,k_2,k_3)\) is the measured bispectrum \([h/Mpc]^6\); includes the shot-noise contribution.

  • BSN is the shot-noise correction computed as:

    \(BSN = \frac{1}{\bar{n}^2} + \frac{P(k_1) + P(k_2) + P(k_3)}{\bar{n}}\) where \(\bar{n}\) is the halo number density.

  • N_{tr}: is the number of triangles in the bin

  • B2 and B4: are the bispectrum quadrupole and hexadecapole moments, respectively.

Check the Tutorial notebook Bispectrum.

Note

The Bispectrum is defined following the Fourier convetion: \(\langle \delta(\mathbf{k}_1)\delta(\mathbf{k}_2)\delta(\mathbf{k}_3) \rangle = \delta_D(\mathbf{k}_1+\mathbf{k}_2+\mathbf{k}_3) B(k_1,k_2,k_3)\)