Detector tools#

Tap subtraction#

COO detectors read out in taps, and each tap carries a signal half and a reset half side by side. The tap_subtraction tool rebuilds a corrected frame by gathering the reset halves of one frame, gathering the signal halves of another, and subtracting one from the other.

This is instrument-specific, so it stays off unless you ask for it:

tools:
  tap_subtraction:
    enabled: true
    tap_width: 128        # pixels per tap, must be even
    num_taps: 32

Or for a single session:

atlas signal.fits reset.fits --enable tap_subtraction

Using it#

Tools → Subtract Signal/Reset Taps operates on the current frame and the one before it: the earlier frame supplies the signal halves, the current one supplies the reset halves. So you choose the pair with Frame → Next and Previous rather than from a dialog, and the result arrives as a new frame.

The difference is computed in int64, which matters: reset minus signal is genuinely signed, and an unsigned accumulator would wrap negative pixels around to full brightness.

Geometry, and the errors it produces#

The frame has to match the configured geometry. atlas expects a width of tap_width * (num_taps + 1), the extra tap being the reference tap, and it says so plainly when the numbers do not line up:

Tap subtraction failed: frame is 2048 px wide but 32 taps of 128 px needs 4224

Two other cases you may meet in the status bar:

Message

Means

Tap subtraction needs two frames; open a second image first.

Only one frame is open

expected a 2D frame, got shape ...

The frame is a cube or a colour image

tap_width must be even, since each tap splits into two halves; a configuration with an odd tap_width is rejected at startup rather than at the moment you click the menu item.

The detector profile#

The bundled detector profile assembles the pieces a COO detector session usually wants:

atlas --profile detector
display:
  mode: tile
  tile_columns: 1         # signal above reset, not side by side
tools:
  header: true
  histogram: true
  tap_subtraction:
    enabled: true
    tap_width: 128
    num_taps: 32
  zmq:
    enabled: true
    address: tcp://localhost:5555
    socket_type: SUB
  shm:
    enabled: false        # off until verified against a real segment
    segment_name: hispec_tracking_camera

Note that shm is present but disabled in the shipped profile. Turn it on for a session with atlas --profile detector --enable shm, or copy the profile into your own --config file and set it there along with the right segment_name. See Shared memory.