TNG300 X-ray Lightcone, LC-TNGX
LC-TNGX is made available here. Here, we give some key details and expand on the data structure of the public TNG300-based X-ray lightcone.
We use the IllustrisTNG cosmological hydrodynamical simulation with the box of side length \(302.6\) Mpc (TNG300) to construct a lightcone. The lightcone is described in detail in Shreeram et al. 2025a: Quantifying Observational Projection Effects with a Simulation-Based Hot CGM Model; particularly see Sec. 2.
Figure 1 from Shreeram et al. 2025a, which is an illustration of the lightcone built using TNG300 in the x − y plane.
Lightcone Construction
LC-TNGX models the hot gas emission in X-rays in the redshift range \(0.03 \lesssim z \lesssim 0.3\), to mock observations in the local Universe. The code used to generate the lightcone is also publicly available: LightGen.
Figure 2 from Shreeram et al. 2025a, showing the projected rest-frame X-ray events from the TNG300 ligthcone in the 0.5−2.0 keV band.
We box remap all snapshots into a configuration where the most extended length of one of the sides is approximately four times the original length (Carlson & White 2010; see also this website). This technique ensures that the new elongated box has a one-to-one remapping, remains volume-preserving, and preserves local structures. For a box whose original dimensions are normalized to \((1,1,1)\), the unique solution for the transformed box sides is \((4.1231, 0.7276, 0.3333)\). The opening angles for the observer are (10.16, 4.64) degrees and the area subtended in the sky for the observer is 47.28 sq. degress. We remap the coordinates of the gas cells, dark matter particles, and the halo and subhalo catalogues.
Directory & File Descriptions
This public lightcone is constructed using 19 snapshots within the observationally motivated redshift range \(0.03 \leq z \leq 0.3\). Therefore, the data within the LC-TNGX directories is structured into snapshot directories. E.g., snapdir_XX, where XX goes from 78-96 (\(0.03 \leq z \leq 0.3\) ). Snapshot numbering matches the standard IllustrisTNG convention. Each of the lightcone_xray_SNXX.hdf5 file contains the following subdirectories ['Gas', 'XrayEvents', 'XrayPhotons'], which are containing the following information described below.
import h5py as h5
with h5.File(f"{filapath}/lightcone_xray_096.hdf5", "r") as f:
print(list(f.keys()))
print(list(f["Gas/data"].keys()))
print(list(f["XrayEvents/data"].keys()))
print(list(f["XrayPhotons/data"].keys()))
outputs the following:
['Gas', 'XrayEvents', 'XrayPhotons']
['Zmet', 'density', 'hsml', 'mass', 'pos', 'sfr', 'temperature', 'vel', 'x_H', 'x_e']
['density', 'eobs', 'event_positions', 'los', 'num_photons', 'redshift_ph', 'temperature', 'xsky', 'ysky']
['density', 'dx', 'energy', 'num_photons', 'temperature', 'vx', 'vy', 'vz', 'x', 'y', 'z']
We further describe the quantities in the directories Gas/, XrayEvents/, and XrayPhotons/ in the following subsections.
Gas/
This directory contains the properties of gas cells across the lightcone. The files within describe the thermodynamic and physical characteristics of the gas cells from TNG that contributes to the lightcone. There are 21 snapshot directories, each corresponding to the shells of the lightcone.
The files within each snapshot directory are named
lightcone_xray_SNXX.hdf5/Gas. Here, `XX` goes from 78-96.
lightcone_xray_SNXX.hdf5/Gas/data/
Gas cell properties corresponding to the remapped IllustrisTNG snapshots used for construction of the lightcone. Units follow the original IllustrisTNG snapshot specification (PartType0). See: https://www.tng-project.org/data/docs/specifications/#parttype0
| Column | Description |
|---|---|
Zmet |
Gas metallicity. Defined as
GFM_Metallicity / 0.0127 from the original TNG snapshot.
|
density |
Gas cell density (same definition as PartType0/Density in TNG).
|
hsml |
Gas cell smoothing length computed as
hsml = 2.0 * (3 * vol / (4.0 * π))^(1/3),
where vol is the Voronoi cell volume.
|
mass |
Gas cell mass (same definition as PartType0/Masses).
|
pos |
Three-dimensional comoving position of the gas cell
(same definition as PartType0/Coordinates).
|
sfr |
Star formation rate of the gas cell
(same definition as PartType0/StarFormationRate).
|
temperature |
Gas temperature derived from internal energy and electron abundance
(same definition as PartType0/InternalEnergy-based temperature).
|
vel |
Three-dimensional peculiar velocity of the gas cell
(same definition as PartType0/Velocities).
|
x_H |
Hydrogen mass fraction of the gas cell. When not available (e.g., for the mini-snaps), set to 0.76. |
x_e |
Electron abundance of the gas cell
(same definition as PartType0/ElectronAbundance).
|
XrayEvents/ and XrayPhotons/
Files corresponding to the X-ray emission from gas in LC-TNGX. The X-ray events are generated using pyXSIM in the 0.5 - 2 keV X-ray energy band, using the Asplund et al. 2009 abundance tables.
In the directory, there are 19 snapshot files, SNXX, where XX \( \in\)[78, 96]. This corresponds to the shells of the lightcone. The XrayPhotons/ directory is the merged outputs of the make_photons() function in pyXSIM. The XrayEvents/ directory is the merged data products of pyXSIM function project_photons(), representing the synthetic observations enabling comparison with real observed data (e.g., Shreeram et al. 2025b). Please refer to the pyXsim documentation for details on the file properties.
lightcone_xray_SNXX.hdf5/XrayEvents
X-ray photons and event file generated from pyXsim. Each row corresponds to a single detected event in the 0.5−2.0 keV band for a telescope with energy-independent collecting area 1000 cm sq. and exposure time of 1000 ks.
| Column | Units | Description |
|---|---|---|
xsky |
deg | Right Ascension (J2000). |
ysky |
deg | Declination (J2000). |
eobs |
keV | Photon energy. |
los |
pkpc | Line-of-sight distance to the X-ray event. |
redshift |
– | Redshift of the photon. |
temperature |
K | Temperature of the gas cell that is emitting the X-ray photon. Note: the same gas cell may emit multiple photons. |
density |
g cm-3 | Density of the gas cell that is emitting the X-ray photon. |
event_positions |
ckpc |
(X, Y, Z) coordinates of the gas cells emitting the X-ray photon.
Caution: do not use these for cross-matching with FoF halos.
Use xsky, ysky, and los for cross-matching on the sky.
|
num_photons |
ckpc | The number of photons. Here, the value is simply one. The number of photons per gas cell can be found in XrayPhotons/data/num_photons, which provides useful information about the number of X-ray photons emitted per gas cell. |
Halo and subhalo catalogs
The below two files represent the halo (central galaxies) and subhalo (satellite galaxies) catalog. The quantities are all taken from the original TNG snapshots.
central_halo_properties_all_snaps.fits
Merged halo catalogue containing all central halos across lightcone snapshots.
| Column | Units | Description |
|---|---|---|
Halo_ID |
– | Halo ID (count starts from 0). |
flag_mass |
– | Cases exist where SUBFIND does not define a mass for the halo; these cases are flagged with False. |
RA |
deg | Right Ascension (J2000). |
DEC |
deg | Declination (J2000). |
M500c |
1e10 M☉ | Total mass enclosed in a sphere whose mean density is 500× the critical density of the Universe. |
M200c |
1e10 M☉ | Total mass enclosed in a sphere whose mean density is 200× the critical density of the Universe. |
M200m |
1e10 M☉ | Total mass enclosed in a sphere whose mean density is 200× the mean matter density of the Universe. |
R200c |
ckpc | Comoving radius of a sphere centered at (X_halo, Y_halo, Z_halo) whose mean density is 200× the critical density. |
R200m |
ckpc | Comoving radius of a sphere centered at (X_halo, Y_halo, Z_halo) whose mean density is 200× the mean matter density. |
R500c |
ckpc | Comoving radius of a sphere centered at (X_halo, Y_halo, Z_halo) whose mean density is 500× the critical density. |
R200c_deg |
deg | Angular size corresponding to R200c, computed using astropy's arcsec_per_kpc_comoving(redshift). |
D_c |
ckpc | Comoving distance to the group. |
redshift |
– | Redshift of the group within the framework of the lightcone. |
subhalo_ids |
– | ID into the original TNG300-1 Subhalo catalog. |
M_star_in_2xR_star |
1e10 M☉ | Sum of masses of all particles/cells within twice the stellar half-mass radius. |
X_halo |
ckpc | Projected X-coordinate of the group. Warning: do not use for cross-matching with X-ray events. Use the RA, Dec., los for cross-matching on the sky. |
Y_halo |
ckpc | Projected Y-coordinate of the group. Warning: do not use for cross-matching with X-ray events. Use the RA, Dec., los for cross-matching on the sky. |
Z_halo |
ckpc | Projected Z-coordinate of the group. Warning: do not use for cross-matching with X-ray events. Use the RA, Dec., los for cross-matching on the sky. |
N_gal |
– | Total number of groups in this halo catalog. |
ARF |
cm2 | Effective collecting area defined for generation of events with pyxsim. |
sat_subhalo_properties_all_snaps.fits
Merged subhalo catalogue containing all satellite subhalos across lightcone snapshots. Definitions follow those of the central halo catalogue; here all entries correspond to satellites.
| Column | Units | Description |
|---|---|---|
Subhalo_ID |
– | Subhalo ID (count starts from 0). |
flag_mass |
– | Cases where SUBFIND does not define a mass are flagged with False. |
Parent_ID |
– | ID of the parent distinct halo (Halo_ID). |
RA |
deg | Right Ascension (J2000). |
DEC |
deg | Declination (J2000). |
M_star_in_2xR_star |
1e10 M☉ | Sum of masses of all particles/cells within twice the stellar half-mass radius. |
Cen_M_star_in_2xR_star |
1e10 M☉ | Stellar mass of the corresponding central halo, defined within twice the stellar half-mass radius. |
subhalo_sfr |
M☉ yr-1 | Star formation rate of the subhalo. |
stellar_metallicity |
– | Stellar metallicity of the subhalo. |
subhalo_radius |
ckpc | Comoving radius of the subhalo. |
subhalo_radius_deg |
deg | Angular size corresponding to subhalo_radius. |
D_c |
ckpc | Comoving distance to the subhalo. |
redshift |
– | Redshift of the subhalo within the framework of the lightcone. |
M500c |
1e10 M☉ | Parent halo mass enclosed within 500× the critical density. |
M200m |
1e10 M☉ | Parent halo mass enclosed within 200× the mean matter density. |
R200c |
ckpc | Comoving radius of the parent halo defined at 200× the critical density. |
R200m |
ckpc | Comoving radius of the parent halo defined at 200× the mean matter density. |
R500c |
ckpc | Comoving radius of the parent halo defined at 500× the critical density. |
R200c_deg |
deg | Angular size corresponding to R200c. |
X_subhalo |
ckpc | Projected X-coordinate of the subhalo. Warning: do not use for cross-matching with X-ray events. Use the RA, Dec., los for cross-matching on the sky. |
Y_subhalo |
ckpc | Projected Y-coordinate of the subhalo. Warning: do not use for cross-matching with X-ray events. Use the RA, Dec., los for cross-matching on the sky. |
Z_subhalo |
ckpc | Projected Z-coordinate of the subhalo. Warning: do not use for cross-matching with X-ray events. Use the RA, Dec., los for cross-matching on the sky. |
N_gal |
– | Total number of satellite subhalos in this catalogue. |
ARF |
cm2 | Effective collecting area defined for generation of events with pyxsim. |
observer_locations.npy
Defines the possible observer locations for the generated lightcone. This lightcone and all the data products correspond to the base case observer located at (0, 0, 0). Nevertheless, 8 other possible observer positions are possible.
snapshot_info.csv
Provides metadata describing the structure of the lightcone. The file includes the following information:
snapshot_info.csv
Snapshot-level information defining the lightcone shell boundaries. Each row corresponds to one snapshot contributing to the lightcone.
| Column | Units | Description |
|---|---|---|
snapshot |
– | TNG snapshot number. |
redshift |
– | Redshift of the snapshot in IllustrisTNG. |
d_c |
Mpc | Comoving distance corresponding to the snapshot redshift. |
d_c_min |
Mpc | Minimum comoving distance defining the inner boundary of the shell. |
d_c_max |
Mpc | Maximum comoving distance defining the outer boundary of the shell. |
redshift_min |
– | Minimum redshift corresponding to d_c_min. |
redshift_max |
– | Maximum redshift corresponding to d_c_max. |
volMpc3 |
Mpc3 | Comoving volume of the shell subtended by the lightcone. |
⚠️ Recommended starting point: users are encouraged to inspect this file first to understand the overall layout and organization of the lightcone.
Xray_products_0.50-2.00_keV
This file combines the X-ray and gas property information for every halo in a given stellar mass or halo mass bin within the 0.50–2.00 keV X-ray energy band.
central_halo_profiles_logM200m_11.5-15.fits
The central halo profiles for halos in the lightcone with \( 11.5 \leq \log_{10}(M_{200m}) \leq 15 \). This file combines halo properties with X-ray emission and gas thermodynamic profiles computed in radial bins. The lightcone is constructed primarily for Milky Way and slightly higher mass halos, and is best suited for science cases studying that mass range.
| Column | Units | Description |
|---|---|---|
Halo_ID |
– | Halo ID (same definition as in central_halo_properties_all_snaps.fits). |
snap_nr |
– | Snapshot number corresponding to the halo. |
redshift |
– | Redshift of the halo within the lightcone. |
M200m |
1e10 M☉ | Halo mass enclosed within 200× the mean matter density. |
M200c |
1e10 M☉ | Halo mass enclosed within 200× the critical density. |
M500c |
1e10 M☉ | Halo mass enclosed within 500× the critical density. |
R200m |
ckpc | Comoving radius corresponding to M200m. |
R200c |
ckpc | Comoving radius corresponding to M200c. |
R500c |
ckpc | Comoving radius corresponding to M500c. |
R200c_deg |
deg | Angular size corresponding to R200c. |
M_star_in_2xR_star |
1e10 M☉ | Stellar mass within twice the stellar half-mass radius. |
ra_halo |
deg | Right Ascension (J2000) of the halo. |
dec_halo |
deg | Declination (J2000) of the halo. |
dc_halo |
ckpc | Comoving distance to the halo. |
x_halo |
ckpc | Projected X-coordinate of the halo. |
y_halo |
ckpc | Projected Y-coordinate of the halo. |
z_halo |
ckpc | Projected Z-coordinate of the halo. |
all_profiles_2d |
erg s-1 cm-2 | X-ray surface brightness profile for the halo. Zeros correspond to no events found for the used telescope specifications. |
all_Lx_2d |
erg s-1 | Sum of the X-ray events within R200m of the halo. |
r_gas_mean |
ckpc | Radial bins over which the gas property profiles are computed. |
den_mw_prof |
M☉ kpc-3 | Density profile, mass-weighted. |
den_vol_prof |
M☉ kpc-3 | Density profile, volume-weighted. |
temp_mw_prof |
keV | Temperature profile, mass-weighted. |
temp_vol_prof |
keV | Temperature profile, volume-weighted. |
zmet_mw_prof |
– | Metallicity profile, mass-weighted. |
zmet_vol_prof |
– | Metallicity profile, volume-weighted. |
den_emv_prof |
M☉ kpc-3 | Density profile, emission-measure weighted. |
temp_emv_prof |
keV | Temperature profile, emission-measure weighted. |
zmet_emv_prof |
– | Metallicity profile, emission-measure weighted. |
mass_vol_prof |
M☉ | Volume-weighted mass profile. |
ne_vol_prof |
cm-3 | Electron number density profile (use with caution as it is not tested). |
gas_mass500c |
M☉ | Sum of gas cell masses within R500c; use with caution as it is not volume-weighted. |
gas_mass200m |
M☉ | Sum of gas cell masses within R200m; use with caution as it is not volume-weighted. |
Note that there is also another file central_halo_profiles_logMstar_10.0-11.6.fits, with identical columns as central_halo_profiles_logM200m_11.5-15.fits. However, this file is a selection of central galaxies within LC-TNGX in a stellar mass range of \( 10.0 \leq \log_{10}(M_{\star}) \leq 11.6 \).
The radial bins over which the X-ray surface brightness profiles (all_profiles_2d) are computed are logarithmically spaced from 0.8 kpc up to 3000 kpc. You can copy the python code snippet below:
r_bins = 10**np.arange(0., 3.51, 0.05)
Note: to obtain the mean X-ray profile in the selected mass/redshift range, average over the halo axis.
mean_profile = np.mean(out["all_profiles_2d"], axis=0)