ACT Depth-1 maps

What is a depth-1 map?

Normally we characterize the depth of a map in terms of the number of samples (or the inverse variance) per pixel, but sometimes it's useful to express the depth in terms of the number of TODs, e.g. "at this spot the map has a depth equivalent to being hit by N TODs, so it's N TODs deep here, or depth-N". In practice different tods can have different sensitivity etc., so it's most useful to use a slightly different definition: a point in the map is depth-N if the telescope has drifted past it N times in the data that goes into it. A depth-1 map is then a map where no point has depth greater than 1.

Example

As the telescope's scans drift across the sky, it eventually starts overlapping with itself, going from depth-1 to depth-2.

Why depth-1 maps?

Maximum cadence

Since depth-1 maps are only 1 tod deep, they provide the maximum observing cadence for objects in the map one can get without sub-dividing the detector arrays. This could in principe be done with depth-1 maps too, but it's probably based saved for follow-ups of the most rapidly changing transients.

Precise event timing

Since the telescope only drifts past each pixel in a depth-1 map once, we can timestamp each pixel in the map to an accuracy given by how long it takes an array to drift past a pixel, which is typically around 4 minutes. This is illustrated in the map below, which shows the time (relative to the start of this segment) each pixel was observed, in minutes.

This is not possible for maps that are depth-2 or higher. In those there would be an ambiguity about which of those passes the light came from, giving a time accuracy no better than about the total duration of the map, e.g. 1 day for daily maps. Only array sub-divisions can give more precise timing.

Less holes than per-TOD maps

Per-TOD maps provide the same cadence as depth-1 maps, but by mapping tods separately one ends with maps consisting of thin stripes on the sky, which have a high circumference to area ratio. Noise properties are harder to deal with at the edge, and they can also have different systematic errors due to being hit by only part of an array.

Disadvantage: no crosslinking

A disadvantage of depth-1 maps is that they cannot have any crosslinking (except for the very weak detector-detector crosslinking). However, when working with compact sources this is not a big deal, and as we shall see below, there are ways of dealing with the stripy noise one gets without crosslinking.

Depth-1 mapmaker

I made a depth-1 mapmaker for ACT as a relatively simple modification of my Enki maximum-likelihood mapmaker, using the following approach:

  1. Get the list of all TODs (whether accepted or cut) (including all arrays), sort it by time and split into groups at most 24 hour long where the scanning pattern stays the same. The scanning pattern is here defined as the triplet [el, min(az), max(az)]. The result is a set of [ctime_from, ctime_to] periods that define a potential depth-1 map.
  2. For the tods one actually wants to map (e.g. dr6,pa5,f090,accepted), group the tods into the previously defined depth-1 periods, and make a separate maximum-likelihood map for each group.

With the ACT scanning pattern a depth-1 map can have from 0 to ~80 tods in it (for a single array). To make the maps somewhat efficiently I split the MPI tasks into work-groups, where each work-group makes one of those maps. I typically use assign two groups of 5 mpi tasks per node. This lets me work on several maps in parallel while still not taking too long time for each map.

It might be possible to get away with ~10 CG steps when making these maps, since all relevant targets are just a few arcmin across, but I found that regions with heavy cuts start out the solution process with artifacts that take longer than that to disappear, so I chose to use 100 CG steps. Coupled with not using TOD downsampling to minimize the ocurrence of holes in the maps, this means that these maps are quite expensive to make - comparable to making the normal sky maps.

Example depth-1 maps

Here is an example of the depth-1 map for a single array (pa5 f090) for a single day of observing (2017-07-26). It gives a representative view of the properties of these maps, including the great difference in their size, gaps due to missing data, and stripy noise. For this day only about 12 hours of data passed the cuts.

depth1_1501030967_pa5_f090 (5.2 hours)

depth1_1501067665_pa5_f090 (6.2 hours)

depth1_1501102224_pa5_f090 (0.3 hours)

Full-resolution example

Full resolution version of depth1_1501067665_pa5_f090. This is a day-time map, so don't worry too much about the point source shapes.

Data products

I found 8442 periods in ACT DR6. Combined with our 6 effective arrays pa{5,6}_f090, pa{4,5,6}_f150 and pa4_f220 (and cutting 10504 maps that had no data) this resulted in 25426 depth-1 maps. Each map has the following data products:

  1. A TQU enmap containing the actual map pixels at 0.5 arcmin resolution: [{T,Q,U},ny,nx]
  2. An enmap with the white noise inverse T variance per pixel: [ny,nx]
  3. An enmap with the time each pixel was observed, as seconds since the beginning of the period, t. This is computed as the inverse variance weighted average of the time at which each sample from each detector hit the pixels. [ny,nx]
  4. An hdf file with the following metadata:
    1. t: The starting unix time of this period. This is what must be added to the time map to get the actual time each pixel was hit.
    2. profile: A curve in RA, dec giving the scanning profile in the map. Equispaced in azimuth. [{dec,ra},nsamp], in radians. Useful for building noise models, filters and masks that handle the curvy nature of our scans.
    3. array: The name of the detector array, e.g. pa5_f090.
    4. ids: The ids of the TODs used. NB: This includes tods that were were skipped due to missing metadata etc!
    5. period: The [ctime_min, ctime_max] defining this period.
    6. box: The approximate bounding box of the maps.
    7. pid: Which of the 8442 periods we are, counting from 0.
    The first two of these two are probably the most useful.

Location

Usage

These maps are intended to be used for time domain astronomy, e.g. blind searches for transients; forced photometry of known sources to get light curves; and stacks on moving objects (planets were cut when making these maps, but not asteroids). All these uses would start by making matched filter numerator (rho) and denominator (kappa) maps from the depth-1 maps. Once those are in place, they can be searched directly for objects via. snr = rho/kappa**0.5 and flux = rho/kappa. rho and kappa can be combined linearly, e.g. rho_tot = rho1 + rho2 + rho3 + ..., kappa_tot = kappa1 + kappa2 + kappa3 + ... flux_tot = rho_tot/kappa_tot. Code for making such matched filter maps can be found in pixell.analysis, but should probably be extended to handle the stripy noise of these maps.

Examples

Asteroids

f090 f150 f220
ceres
pallas
vesta
juno