Cosmic-Messenger v2 — Directional Cross-Match
Status: BUILT 2026-06-15 (Mike) · Owner: Mike + Claude (engine room)
Parent: the cosmic-messenger trio scope docs (scope-gravitational-wave-eventdex.md,
scope-uhecr-eventdex.md, scope-neutrino-eventdex.md), each of which deferred its real sweep to
this shared v2.
The three cosmic-messenger Eventdex kinds (gw, uhecr, neutrino) all ship catalog-only: each slot holds the event's own reconstruction, and the per-kind sweep is empty because no terrestrial sensor can see an extragalactic source. Their real sweep is not terrestrial, it is each other — the multi-messenger question of whether different messengers point at the same place on the sky, and at the same time. This module is that cross-match.
What it does
For every pair of cosmic-messenger events that carry a point arrival direction, compute the great-circle angular separation on the sky and the time separation, and flag the pairs that fall within a directional threshold (and, more strongly, within a directional and temporal window).
The marquee precedent: IceCube-170922A, a neutrino that arrived pointing at the blazar TXS 0506+056 while it was flaring in 2017, the first single neutrino tied to a likely source.
Who participates (verified 2026-06-15)
- neutrino — 348/348 events have RA/Dec (+ asymmetric error). Full directional.
- uhecr — 99/109 have RA/Dec (Auger angular resolution ~1 deg). Full directional.
- gw — HELD OUT. 0/431 GW events have a point direction: a gravitational-wave localization is a large probability region on the sky (tens to thousands of square degrees), not a point. GW can only join this cross-match once its healpix skymaps are fetched and matched as regions, which is the separately-deferred GW v2 skymap sweep. Until then GW is honestly excluded (a temporal-only coincidence with no direction would be pure noise).
So v1 is the neutrino x uhecr directional cross-match, plus same-kind self-clustering (anisotropy) which the identical machinery yields for free.
Method + frozen settings
- Angular separation: great-circle (spherical law of cosines) between RA/Dec, in degrees.
- Primary threshold:
THETA_DEG = 3.0. Sensitivity sweep: 1, 3, 5 deg (reported together, so no single threshold is load-bearing). - Spacetime window:
DT_DAYS = 14.0. A pair within the angular threshold AND within 14 days is flaggedspacetime_coincident— the physically interesting, much rarer case. - Honesty about chance: at a few degrees over the whole sky the random-coincidence rate is not
small. The catalog reports the random expectation at each threshold
(
N_a * N_b * (1 - cos theta) / 2) next to the observed count, so a directional-only excess is never read as a signal when it is consistent with chance.
Output
data/event_storehouse/cosmic_coincidences.json — the cross-match catalog: directional-event counts
per kind, the sensitivity table (observed vs random at each threshold), every pair within the primary
threshold (sorted by separation), and the spacetime-coincident subset. Decoupled from the per-kind
dossiers (which keep their deferred-v2-directional marker) so a per-kind live re-sweep never races
it. Refreshed by a daily scheduler job (cosmic_messenger) as new neutrino/uhecr events arrive.
First result (2026-06-15) — an honest null plus a real clustering signal
- Cross-messenger (neutrino x uhecr) directional correlation: NULL. Observed pair counts are at or below the random expectation at every threshold (3 deg: 13 observed vs ~24 expected by chance; 5 deg: 47 vs ~66). No evidence of a neutrino-UHECR directional association in this data.
- One spacetime coincidence (<=3 deg and <=14 d): it is same-kind, two gold neutrinos (IC220627A x IC220629A) 1.9 deg and 2.25 days apart, a neutrino self-clustering candidate, not a multi-messenger pair.
- TXS 0506+056 direction: IceCube-170922A has two other gold neutrinos within 3 deg (IC160104A, IC180123A) over months-to-years, neutrino self-clustering around the known TXS source direction, echoing IceCube's own result that TXS is a neutrino source. No UHECR neighbour.
The cross-messenger null is a finding, not a failure: at these catalog sizes and the whole-sky chance rate, the trio's directional correlation is consistent with isotropy. The clustering around TXS is the real astrophysics the machinery surfaces.
Follow-ups (noted, not v1)
- GW v2 skymap sweep — fetch the per-event healpix localizations so GW joins the cross-match as a region (point-in-region tests against neutrino/uhecr directions). This is the biggest unlock.
- Wire coincidences into dossiers — stamp each event's coincidences into its slot (per-kind
build_dossierreads this catalog) so the slot accretes the result, durably across re-sweeps. - Same-kind anisotropy significance — a proper p-value (sky-scramble / isotropic Monte Carlo) for the neutrino self-clustering, rather than the random-expectation comparison alone.