ALMA interferometry imaging workflow

  • hif_makeimlist

    • minimum task parameters:

      • intent (default to ‘TARGET’)

      • spw (defaults to science spws)

      • specmode (defaults to ‘cube’ for ‘TARGET’, else ‘mfs’)

    • create list of imaging targets with these parameters per target set:

      • heuristics instance

      • field

      • spw (for specmode=’cont’ remove spws without data -> re-use for VLASS)

      • cell (common size for all targets of one hif_makeimlist call (min of all))

      • phasecenter

      • imsize (common size for all targets of one hif_makeimlist call (max of all))

      • specmode

      • nchan (pilot image)

      • width (pilot image)

      • imagename

      • LSRK spw selection if cont.dat / lines.dat exists

      • nbin (if set by hif_checkproductsize)

      • gridder (‘standard’ or ‘mosaic’)

      • stokes ‘I’

      • start (task parameter if set)

      • uvrange (task parameter if set)

  • hif_makeimages

    • set additional parameters via task interface:

      • hm_masking (‘centralregion’ or ‘auto’)

      • hm_autotest

      • hm_cleaning (‘rms’)

      • maxncleans

    • run hif_tclean per imaging target (HPC: one job per calibrator image or parallel=True for tclean for intent=’TARGET’)

  • hif_tclean

    • calculate PB limits to define annuli (start with 0.2/0.3, adjust to imsize)

    • determine deconvolver (‘mtmfs’ for ‘cont’ if fractional bandwidth > 10% else ‘hogbom’)

    • determine nterms (2 for deconvolver=’mtmfs’ else None)

    • determine start, width, nchan for ‘cube’ (uses LSRK overlap and skips edge channels)

    • determine TOPO spw selections per MS

    • determine aggregate LSRK and TOPO bandwidths

    • calculate sensitivity

      • median of field ID sensitivities because sensitivity calculator takes only one ID at a time

      • corrections for effective channel width and mosaic overlap

    • calculate initial threshold estimate as tlimit * sensitivity

    • make dirty cube

    • make pb based mask using annuli if not ‘auto’

    • calculate dirty cube statistics using annuli

    • calculate dirty dynamic range (max(residual) / sensitivity)

    • adjust threshold using dirty dynamic range heuristics

    • caclulate niter using beam / mask size heuristics

    • copy iter0 products to iter1 names

    • make clean cube

    • calculate clean cube statistics using annuli