Identify the four rows before selecting a pair
Perseus occupies four rows in Table A1. The first two have projected centre distances of about 9.4 and 6.5 kiloparsecs; these are the inner pair selected here. Two farther cavities lie near 28 and 39 kiloparsecs. Cavities are identified by their original table rows. All four rows remain in the input, with only the first two selected.
The pressure-times-volume column already incorporates the paper’s geometry and surrounding-pressure estimates. Its errors include projection effects. We read that column directly and retain the original cosmology, without reconstructing an unreported line-of-sight axis from the printed ellipse.
| Inner cavity | Projected radius / kiloparsecs | Pressure times volume / ten-to-the-58 ergs | Buoyancy age / million years |
|---|---|---|---|
| First row | 9.4 | 16 | |
| Second row | 6.5 | 11 |
Reading: Rafferty et al. (2006)
Convert energy units first
One erg is one ten-millionth of a joule. One table energy unit is therefore ten to the fifty-first joules. With the relativistic-cavity factor of four, the inner-pair enthalpy is:
Reading: Rafferty et al. (2006) · Bîrzan et al. (2004)
Read the cooling columns in the right order
Table 2 lists cavity energy, cavity power, X-ray luminosity, mass cooling rate, low-temperature cooling luminosity and aperture. The Perseus value twenty is a mass rate in solar masses per year. Twenty-one in the next column is the luminosity in units of ten to the forty-second ergs per second.
Section 3.1.3 defines the required heating as total X-ray luminosity minus the luminosity associated with gas cooling to low temperatures. Both luminosities use the same aperture and bolometric convention.
Reading: Rafferty et al. (2006)
Keep the asterisk on ninety kiloparsecs
The paper normally defines a cooling region using a cooling time below 7.7 billion years. Perseus has an asterisk on its ninety-kiloparsec value: the cooling region extends beyond the detector chip, so the chip edge sets the quoted aperture.
This comparison therefore concerns luminosity inside that truncated aperture. It neither integrates unseen outer gas nor identifies ninety kiloparsecs as the full physical cooling radius. Removing this distinction from the input makes the script stop.
Reading: Rafferty et al. (2006)
State the age estimator before calculating power
Our conditional estimator divides each inner-cavity enthalpy by its own tabulated age and adds the two quotients. Using buoyancy ages gives about 4.77 times ten to the thirty-seventh watts, or 0.896 of the required heating. The inner-pair enthalpy could replace about 12.6 million years of the quoted radiation loss if fully delivered to it.
Sound-crossing and refill ages remain in the input. The former uses travel at the local sound speed; the latter estimates the time for surrounding material to refill the displaced volume. Choosing them changes the inferred power substantially.
| Age column | Conditional inner-pair power / watts | Relative to required heating |
|---|---|---|
| Buoyancy | 0.896 | |
| Sound crossing | 1.42 | |
| Refill | 0.285 |
Reading: Rafferty et al. (2006)
Retain the sensitivity range and aggregate mismatch
Hold ages fixed and use opposite endpoints of the asymmetric pressure-volume and luminosity intervals. The resulting buoyancy-power ratio spans about 0.611 to 1.845. It crosses unity, but is an endpoint sensitivity envelope, not a joint confidence interval. Age uncertainty is not included and the table supplies no full covariance.
Table 2 also reports a published aggregate cavity power of 1.50 times ten to the thirty-seventh watts under its overall cavity selection and time convention. That differs from this inner-pair proxy. The script saves both and marks the aggregate as not reproduced. Reproducing it requires tracing the selected generations and outburst-time convention.
The inner cavities carry an energy worth comparing with losses in the aperture. Long-term local balance also depends on repetition, release location and dissipation.
Reading: Rafferty et al. (2006)
Run the calculation and test a bad input
Place the input, script, expected output and notes in one folder. The script uses fifty-digit decimal arithmetic and records input and source hashes. A different Python-version string is acceptable; the physical outputs should agree.
Fourteen independent rational-arithmetic and bad-input checks actually passed. Copy the input and set one age to zero: the replay must stop. Wrong luminosity units, mixed cavity generations, a missing chip-edge flag or a changed enthalpy coefficient must also be rejected.
python3 reproduce-perseus.py --input perseus-input.json --output local-results.json
python3 test-perseus-inputs.py
Reading: Rafferty et al. (2006)