DETECTOR_BANK_SIZES in ess.dream.workflows folds the mantle as
{"wire": 32, "module": 5, "segment": 6, "strip": 256, "counter": 2}
but the DREAM detector ICD (ESS-5462547, section 4.4.3) defines pixel = 256·(60·wire + 12·MU + 2·cassette + counter) + strip + 1, i.e. C-order (wire, module, segment, counter, strip). The geometry file (geometry-dream-no-shape-2026-06-09.nxs) agrees with the ICD: consecutive ids are neighbouring strips along z, and id + 256 is the other counter.
With the current order, folded strip jumps from z = +1078 mm back to -1091 mm at index 128, and counter is strip parity (adjacent strips 13 mm apart in z, same azimuth). Positions are folded with the same order, so anything that only uses coordinates is unaffected; anything selecting or labelling by strip/counter is not.
Fix: swap the last two entries.
Found while fixing the live-data logical views in scipp/esslivedata (they no longer use this dict).
DETECTOR_BANK_SIZESiness.dream.workflowsfolds the mantle as{"wire": 32, "module": 5, "segment": 6, "strip": 256, "counter": 2}but the DREAM detector ICD (ESS-5462547, section 4.4.3) defines
pixel = 256·(60·wire + 12·MU + 2·cassette + counter) + strip + 1, i.e. C-order(wire, module, segment, counter, strip). The geometry file (geometry-dream-no-shape-2026-06-09.nxs) agrees with the ICD: consecutive ids are neighbouring strips along z, and id + 256 is the other counter.With the current order, folded
stripjumps from z = +1078 mm back to -1091 mm at index 128, andcounteris strip parity (adjacent strips 13 mm apart in z, same azimuth). Positions are folded with the same order, so anything that only uses coordinates is unaffected; anything selecting or labelling bystrip/counteris not.Fix: swap the last two entries.
Found while fixing the live-data logical views in scipp/esslivedata (they no longer use this dict).