The WFS linear response to DM perturbation is acquired by actuation of the DM while recording WFS telemetry.
Edit me

Acquiring Linear Response Calibration

The system linear calibration consists of the following files:

File Description ./conf/RMmodesDM/RMmodesDM.fits Calibration DM modes ./conf/RMmodesWFS/RMmodesWFS.fits WFS linear response to DM modes ./conf/dmmask.fits DM mask (active actuators = 1) ./conf/wfsmask.fits WFS mask (active pixels = 1)

These are the input to the ​computation of control modes

Preparing DM Poke Modes

The cacao-mkDMpokemodes command computes a few different sets of poke modes, from which we can choose the DM poke modes used for acquiring the WFS linear response.

# -z is for number of Zernike modes
# -c is for max spatial frequency [CPA]
cacao-mkDMpokemodes -z 5 -c 25

The following files are written to ./conf/RMmodesDM/:

File Description FpokesC..fits Fourier modes up to spatial frequency CPA (integer) ZpokesC..fits First NUM Zernike modes. SmodesC.fits Simple (single actuator) pokes HpokeC.fits Hadamard modes Hmat.fits Hadamard matrix Hpixindex.fits Hadamard pixel index

DM poke modes can also be prepared independently of the cacao-mkDMpokemodes command, following the file name convention ./conf/RMmodesDM/.fits.

Acquiring WFS Linear Response to DM poke modes

The cacao-aorun-030-acqlinResp command acquires the WFS response corresponding to a set of . For example, to acquire the calibration with Hadamard poke modes:

# -n : number of cycles (increase for higher SNR)
# HpokeC is the DM poke modes
cacao-aorun-030-acqlinResp -n 4 HpokeC

The output is a FITS cube, written to ./conf/RMmodesWFS/.WFSresp.fits. For example, the response to Hadamard pokes will be ./conf/RMmodesWFS/HpokeC.WFSresp.fits.

The cacao-aorun-030-acqlinResp command also creates/updates the sym link ./conf/RMmodesWFS/RMmodesWFS.fits to point to the new .WFSresp.fits file, so that the could be run.

Example measlinrespmdirectory content (with -s option)

Representing WFS response in zonal space (optional)

If a Hadamard response matrix was acquired, the zonal space WFS response is decoded with:

cacao-aorun-031-RMHdecode

Any WFS response can also be projected to the zonal basis with the following script:

#!/usr/bin/env bash
​
cacao
# load custom RM files
loadfits "customRMmodesDM.fits" RMmodesDM
loadfits "customRMmodesWFS.fits" RMmodesWFS
# convert to zonal representation
# last argument is SVD limit - may require tuning
cacaocc.RM2zonal RMmodesDM RMmodesWFS RMmodesDMz RMmodesWFSz 0.01
# save results
saveFITS RMmodesDMz "conf/RMmodesDM/RMmodesDMz.fits"
saveFITS RMmodesDMz "conf/RMmodesWFS/RMmodesWFSz.fits"
exitCLI

DM and WFS masks (optional)

If a zonal response matrix exists, then DM and WFS maps and masks can be computed:

cacao-aorun-032-RMmkmask

Check results:

conf/dmmask.fits
conf/wfsmask.fits

If needed, rerun command with non-default parameters (see -h for options). Note: we are not going to apply the masks in this example, so OK if not net properly. The masks are informative here, allowing us to view which DM actuators and WFS pixels have the best response.