This repository contains the X-ray surface brightness analysis and physical modeling of the massive galaxy cluster Abell 2163, using Chandra ACIS-I observations.
The analysis includes:
-
Surface brightness fitting using single and double β-models.
-
Posterior sampling using MCMC (
emcee) and uncertainty estimation. -
Derivation of key physical parameters from the X-ray data:
- Double-β core radii ( R_{01}, R_{02} )
- Central electron density ( n_{e0} )
- Gas mass profile
- Electron pressure profile
- Hydrostatic total mass profile
- SZ projection and a literature-(y_0)-based Hubble constant estimate
a2163-xray-analysis/
├── scripts/ # Python scripts for fitting and physical parameter extraction
│ ├── rprofile_fit.py
│ ├── rprofile_fit_sherpa.py
│ ├── extract_radial_profile.py
│ └── physical_parameters_calc.py
│
├── results/ # Fit result and computed physical parameters
│ ├── fit_result
│ ├── fit_params.json
│ └── physical_parameters.json
│
├── graphs/ # Final plots for publication/reporting
│ ├── surface_brightness.png
│ ├── electron_pressure_profile.png
│ └── hydrostatic_mass_profile.png
│
├── report/ # Optional LaTeX scientific report
│ └── a2163_report.tex
│
├── requirements.txt # Python package dependencies (optional)
├── LICENSE # License (e.g., MIT or Apache-2.0)
└── README.md # You're here
.fits, .evt, .pi, .arf, .rmf). Only derived results and scripts are shared.
- Beta Model Fitting: Sherpa and SciPy used for parameter estimation.
- Posterior Sampling:
emceefor β-model uncertainty quantification. - Gas Mass & Electron Density: Derived from a double-β density model tied to the X-ray surface-brightness fit and XSPEC normalization.
- Pressure & Hydrostatic Mass: Computed with physical assumptions and visualized with Seaborn.
- SZ / Hubble Step: The current pipeline uses the double-β density model plus an isothermal temperature and a literature central Comptonization (y_0) to estimate (D_A) and (H_0).
- Chandra CIAO Tools
- Sherpa Fitting Documentation
- Relevant astrophysics literature on A2163 surface brightness and pressure modeling.
Feel free to use this for modeling other clusters by modifying the input radial profile and updating redshift & cosmology parameters accordingly.
The current checked-in results can be reproduced from the existing fit products in this repository.
Run these commands from the repository root inside the sz-env Python environment:
python scripts/physical_parameters_calc.py
python scripts/observed_yb_profile.py
python scripts/pressure_profile.py
python scripts/hubble_constant_from_literature_y0.pyThese commands regenerate:
results/physical_parameters.jsonresults/fit_params.jsonresults/sz_planck_comparison.jsonresults/hubble_constant_from_literature_y0.jsongraphs/electron_pressure_profile.pnggraphs/hydrostatic_mass_profile.png
If you already have radial_profile.fits, run:
python scripts/rprofile_fit.pyThis reproduces the Python double-β fit to the radial surface-brightness profile.
If you are working inside a CIAO environment with the required event files available, run:
python scripts/extract_radial_profile.pyThis creates radial_profile.fits, which is then used by the fitting scripts.
- The current README summary corresponds to the checked-in pipeline state and the existing
results/fit_result. - The current Hubble constant result in this repository is:
- ( H_0 = 119.99^{+51.50}_{-25.80} ) km s(^{-1}) Mpc(^{-1})
- The Planck catalog step only provides an integrated SZ observable (
Y5R500), not observed radial SZ profile points.
| Parameter | Value | Uncertainty |
|---|---|---|
| Core radius ( R_{01} ) | 296.97 kpc | ± 72.42 kpc |
| Core radius ( R_{02} ) | 705.12 kpc | ± 608.20 kpc |
| Central electron density ( n_{e0} ) | 7.34 × 10⁻³ cm⁻³ | ± 1.23 × 10⁻² cm⁻³ |
| Temperature ( kT ) | 12.47 keV | ± 1.97 keV |
| Abundance | 0.356 | ± 0.126 |
| Spectral Norm | 1.72 × 10⁻³ | ± 5.88 × 10⁻⁵ |
| Gas Mass (r < 1 Mpc) | 1.67 × 10¹⁴ ( M_\odot ) | from Monte Carlo sampling |
| Angular diameter distance ( D_A ) | 401.71 Mpc | +110.04 / -120.65 Mpc |
| Hubble constant ( H_0 ) | 119.99 km s⁻¹ Mpc⁻¹ | +51.50 / -25.80 |
The current Hubble constant estimate is obtained from:
- the double-β X-ray density model,
- an isothermal temperature from the core spectral fit,
- the literature central SZ Comptonization (y_0 = 3.73^{+0.48}_{-0.61} \times 10^{-4}),
- inversion of the angular-diameter distance relation at (z = 0.203).
Using the current scripts:
- ( D_A = 401.71^{+110.04}_{-120.65} ) Mpc
- ( H_0 = 119.99^{+51.50}_{-25.80} ) km s(^{-1}) Mpc(^{-1})
This value should be treated as a working pipeline result, not a final cosmological measurement.
- The XSPEC spectral normalization used here comes from a core extraction region of radius 50 pixels, while the double-β surface-brightness model is being used as a broader cluster gas model.
- The current temperature is a core temperature, not a global temperature profile.
- The Hubble constant uncertainty currently propagates only the literature (y_0) error. Full propagation of X-ray uncertainties is not yet implemented in the (H_0) step.
- The double-β density reconstruction assumes the two X-ray surface-brightness components can be mapped into two density components through the projected emissivity ratio.
- The Planck catalogue entry provides an integrated SZ observable ((Y5R500)), not observed radial SZ points.
- The current X-ray-predicted integrated SZ signal overestimates the Planck catalogue value:
- model (Y5R500 = 65.36 \times 10^{-3}) arcmin(^2)
- Planck (Y5R500 = 23.53 \pm 1.63 \times 10^{-3}) arcmin(^2)
- Re-run the X-ray spectral fit using a region that is geometrically consistent with the double-β surface-brightness model, not only the 50-pixel core.
- Replace the single isothermal temperature assumption with either a global temperature measurement or a radial temperature model.
- Propagate the uncertainties in (n_{e01}), (n_{e02}), (r_{01}), (r_{02}), (\beta_1), (\beta_2), and (kT) through the SZ and (H_0) calculations.
- Compare the X-ray-predicted integrated SZ signal to Planck as a consistency check before treating the (H_0) estimate as final.
- If available later, incorporate a properly matched SZ radial dataset instead of relying only on literature (y_0) and catalogue (Y5R500).
This repository is licensed under the GNU General Public License v3.0 (GPL-3.0) to comply with the licensing terms of key scientific packages it depends on.
This project is licensed under the GNU General Public License v3.0 (GPL-3.0).
See the LICENSE file for details.
- The core analysis is built around Sherpa, which is licensed under GPL-3.0.
- As a result, this repository and all associated scripts are distributed under the same license.
If you use this repository, please cite it via:
Anurag Garg. (2025). mranuraggarg/a2163-xray-analysis: Initial Scientific Release: A2163 X-ray Surface Brightness & Mass Analysis (v1.0.0). Zenodo. https://doi.org/10.5281/zenodo.15097986


