docs: def randomPositionsMask(mask, nside_pix, n):
      """
      Generate n random positions within a HEALPix mask of booleans.
  
      KCB: Likely superceded by the randomPositions function, but more generic.
      """
      
      npix = len(mask)
      nside = hp.npix2nside(npix)
  
      # Estimate the number of points that need to be thrown based off
      # coverage fraction of the HEALPix mask
      coverage_fraction = float(np.sum(mask)) / len(mask) 
      n_throw = int(n / coverage_fraction)
          
      lon, lat = [], []
      latch = True
      count = 0
      while len(lon) < n:
          lon_throw = np.random.uniform(0., 360., n_throw)
          lat_throw = np.degrees(np.arcsin(np.random.uniform(-1., 1., n_throw)))
  
          pix = ugali.utils.healpix.angToPix(nside, lon_throw, lat_throw)
          cut = mask[pix].astype(bool)
  
          lon = np.append(lon, lon_throw[cut])
          lat = np.append(lat, lat_throw[cut])
  
          count += 1
          if count > 10:
              raise RuntimeError('Too many loops...')
  
      return lon[0:n], lat[0:n]