# IceTracks-DR2 season hotspot test

The strongest patch in this reproducible 5,000-event sample is compatible with chance under a declination-preserving, uniform-right-ascension null. The global Monte Carlo p-value is **0.377**: 753 of 1,999 randomized skies produced a maximum score at least as large as the observed one. This is not evidence for a detected source, nor is it the probability that the null hypothesis is true.

## Data and dates

Source: [IceTracks-DR2 version 3.1, DOI 10.7910/DVN/MMIIZA](https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/MMIIZA&version=3.1), season IC86_XI, supplied in the attached JSON bundle.

The supplied provenance reports the README publication date as **2026-10-05** and retrieval as **2026-10-08**. These are release-document/retrieval dates, not observation dates. An independent version-wide V3.1 publication timestamp is not established by this analysis. The provenance says version 3 corrected time documentation from UT1 to UTC without changing event values.

The actual events run from **2021-05-03 21:18:21.817 UTC** to **2022-05-23 19:46:15.813 UTC**, MJD 59337.88775251–59722.82379413. Good-run intervals span 2021-05-03 21:17:23.832 to 2022-05-23 19:56:09.401 UTC. Their summed livetime is **356.555219 days**, across 384.943583 elapsed days (with gaps).

All three embedded files match their supplied SHA-256 values. The event file contains 127,695 rows; every row is finite and within valid coordinate ranges. No duplicate (run, event, subevent) identifiers were found, and all events fall within the 1,218 ordered, non-overlapping good-run intervals. Despite the .csv suffix, these are whitespace-separated files.

Bundle SHA-256: `e2da4674800865b8408e919c9e0f1291302efa3b5578903a7b1faad4da93a259`. Checksums establish consistency with the supplied provenance, not an independent online authentication of the release.

## Fixed analysis

The protocol was saved before calculating any hotspot. NumPy default_rng (PCG64), seed **20261008**, selected exactly 5,000 events without replacement from all valid rows. Row indices were sorted after selection. No energy, directional, temporal, or hotspot-based selection was used.

The fixed grid has RA 0°, 3°, …, 357° and declination −87°, −84°, …, 87°, plus one center at each pole: **7,082 centers**. At every center we used circular spherical caps of radius **3°, 6°, and 10°**, for **21,246 windows**. Six polar windows have zero conditional variance because changing RA cannot change their counts; they are excluded from the standardized maximum, leaving 21,240 nondegenerate windows.

For a center and radius, the statistic is

`S = (observed count − μ) / sqrt(v)`,

where `μ = sum(p_i)` and `v = sum[p_i(1−p_i)]`. Each `p_i` is the exact fraction of RA values that place event i, at its fixed declination, inside that cap. For nonpolar centers,

`p_i = acos(clip[(cos r − sin δ0 sin δi)/(cos δ0 cos δi), −1, 1]) / π`.

Thus the scan looks for the strongest excess relative to the measured declination distribution, rather than simply selecting the largest raw count in a region of high detector acceptance. S is a ranking statistic, **not a Gaussian detection significance**. Sparse counts need not have Gaussian tails.

For each of **1,999 skies**, seed **20261009**, every sampled RA was independently drawn uniformly from [0°, 360°), holding every declination fixed. The same grid, radii, expected counts, variances, and maximization were used for every sky. Spherical counts used a 3D unit-vector cKDTree and chord distance; a direct dot-product calculation confirmed the winning observed count.

## Result and search correction

| Quantity | Result |
|---|---:|
| Winning center, J2000 | RA 210°, Dec 0° |
| Radius | 3° |
| Observed count | 18 |
| Conditional null mean | 6.03870 |
| Conditional null standard deviation | 2.44008 |
| Maximum standardized count excess | 4.90202 |
| Random maxima at least as large | 753 / 1,999 |
| Global p-value, (753+1)/(1999+1) | **0.377** |
| 95% binomial Monte Carlo interval | **0.355–0.398** |

The interval is the exact binomial interval for the null exceedance probability; it describes simulation uncertainty, not uncertainty in detector modeling. The minimum attainable corrected p-value with 1,999 skies is 0.0005.

The random-maximum median is 4.747; its central 95% range is 3.984–6.026. The observed maximum is ordinary within this distribution. Comparing the maximum in each sky accounts simultaneously for searching all locations and all three radii, including overlap between windows. No independent-trial assumption or additional Bonferroni correction is needed. This correction covers this frozen scan, not unreported trials with other samples, grids, radii, or statistics.

## Is uniform RA randomization reasonable?

For this season-long sample, the checks support it:

| Diagnostic | 5,000-event sample | Full season, context |
|---|---:|---:|
| RA uniformity, 12 equal bins, chi-square p | 0.646 | 0.989 |
| RA versus declination quartile, independence p | 0.371 | 0.776 |
| RA versus observing-time quartile, independence p | 0.450 | 0.858 |

First through fourth RA Fourier-harmonic approximate p-values are 0.369, 0.956, 0.789, and 0.265 in the sample. Separate 12-bin uniformity tests in declination quartiles give p = 0.228–0.806; those in time quartiles give p = 0.321–0.789. These are descriptive, unadjusted diagnostics; absence of a small p-value does not prove uniformity or independence.

Integrating the good-run intervals into 24 sidereal-phase bins gives exposure between **0.99680 and 1.00297 times the mean**, at most **0.32%** deviation. This uses a constant sidereal frequency of 1.00273790935 rotations per UTC day and an arbitrary phase origin, sufficient to assess coverage uniformity. It is a livetime check, not a complete acceptance model.

The bundled README states that IceCube's South Pole location gives effectively uniform RA exposure over timescales longer than a day. It also notes approximately 10% local-azimuth dependence and recommends time scrambling with local coordinates for sub-day searches. The long season, broad sidereal coverage, and data checks make independent uniform RA a reasonable working null here. Small-scale or time-dependent acceptance effects could escape these diagnostics; the full-season checks are contextual and are not independent of the sample.

## Assumptions and limits

- Conditional on the sampled declinations, the null treats event RAs as independent uniform draws. It preserves the observed north–south acceptance pattern exactly but removes RA structure and any real source contribution.
- The catalogue consists of reconstructed neutrino candidates, not 5,000 certified astrophysical neutrinos. Background and reconstruction effects remain relevant.
- This is an unweighted count scan. It does not use individual angular uncertainties, reconstructed energies, an astrophysical spectrum, or instrument response functions. It is not IceCube's full point-source likelihood analysis and provides no flux limit.
- The 3° grid and chosen radii deliberately restrict the search. Smaller, narrower, off-grid, transient, or energy-dependent signals can be missed. No grid refinement or radius tuning was performed after seeing the winner.
- Only 5,000 of 127,695 events were scanned; the subsample substantially reduces sensitivity. A non-significant result does not establish absence of sources in the full release.
- Results depend on the RA null. For short-duration searches or demonstrated exposure structure, use a validated time/local-coordinate or exposure-aware null and recalibrate its entire scan.

## Figures and reproduction

`hotspot-test.png` and `hotspot-test.pdf` show (a) all 5,000 sampled directions on a Mollweide sky map, RA increasing leftward, with the winning 3° cap in orange; and (b) the distribution of maxima from 1,999 random skies, with the observed maximum in orange. The histogram uses exactly the same fixed sample declinations and scan as the observed sky.

`reproducibility.zip` contains the complete standalone Python analysis and plotting script, protocol, sampled event identifiers and values, all random maxima, all observed scan windows, numerical diagnostics, checksums, and source metadata. Supply the original attached JSON and run:

```
python reproduce.py PATH_TO_ATTACHED_JSON
```

Dependencies used: NumPy 2.5.3, SciPy 1.18.0, pandas 2.3.3; the Matplotlib version is recorded in results.json. The script was assembled from the executed analysis, syntax-checked, and the archive CRCs verified; it was not separately rerun end-to-end. Plot styling in the standalone script uses standard Matplotlib defaults plus explicit settings, so cosmetic differences from the workbench figure are possible. The figure was visually inspected and passed text overlap/boundary checks.
