README file for UNICORN Photometry Catalog - Created by Steve Finkelstein, stevenf@astro.as.utexas.edu - v0.5/0.6: 2/15/2025 · v0.9: 6/8/2025 · v0.94: 2025 · v0.97: 2026 This readme describes the photometric and photometric-redshift catalog for the field named in the filename, produced with UNICORN (Uniform Near-Infrared CatalOg from Robust imagiNg). The photometry process is described in detail in Finkelstein et al. (2024); a summary is at the end of this document. Photometry is in nJy throughout. ===================================================================================================== DATA PROVENANCE FOR THIS FIELD ===================================================================================================== CEERS (Cosmic Evolution Early Release Science), Extended Groth Strip -- single-tile UNICORN reduction. JWST NIRCam + HST ACS/WFC3 imaging from CEERS (ERS 1345), MINERVA (GO 7814), and SPAM (GO 8559). ===================================================================================================== Version notes: v0.1: initial version, process broadly follows Finkelstein+2023 (in prep), with the addition of a hot+cold step v0.11 - changed threshold for magnitude of nearby sources to PSF stars (from mag-1 to mag+1) v0.12 - changed params for cold catalog (to get more high-z sources in CEERS). v0.2 - fixed (most) missing bright sources, changed fiducial photo-z to be without WFC3 photometry - Each field now includes area over which sources are selected, as well as estimated total 5-sigma depths - in COSMOS updated to v0.8 imaging, in JADES updated to v2 (more area, more MB filters) and included F435W (NB JADES currently missing F850LP) v0.5/0.6 - Minor modifications to the F444W selection; inclusion of the detection/selection flags v0.9 - Changed Cold-mode detection (MINAREA=50 -> 40) to recover some high-z sources of interest. Changed a few things w/ how hot and cold are merged to keep slightly more hot-mode objects. One was a bug (if there was no cold-mode segmap pixels in the region of a hot map, it didn't include the hot-map object), and one was an adjustment, requiring >20% of hot-mode pixels residing in a cold-mode segmap object for it to not be added (up from >10%). v0.9 - Also switched from EAZY to LAZY, with a slightly smaller template set (FSPS plus the two bluest Larson et al. templates, down from six Larson templates). v0.91 - Fixed an issue in hot+cold merging where the first 1000 objects in the hot catalog were not included v0.94 - Major updates: Imaging - GOODS-N and S updated to JADES DR5. Note that the NGDEEP region in the JADES release is shallower than the UNICORN reduction, so I recommend using the UNICORN NGDEEP catalog separately. Catalogs - Only change in the cataloguing was to fix an issue when combining hot+cold+f444 segmaps; this process extracts subregions, and the previous region size of 100 pixels didn't encompass some larger galaxies. This is now 600 pixels. Photo-zs - Now using SFHZ+Larson22 templates after optimization tests with 10,000 spec-confirmed galaxies. Also improved accuracy by measuring and applying zero-point offsets, and using the Lazy implementation of the Asada et al CGM. v0.95-v0.97 - Consolidated changes since v0.94: - File layout: the photometric-redshift outputs for each run are now packaged as a SINGLE multi-extension FITS file (_photz_v.fits, 4 extensions; see the Photo-z section) rather than the older set of separate photz_quantities / zgrid / pz / chi2 / templates / fluxes files. The best-fit template BASES are now shipped once per project as unicorn_templates_{fiducial,eelg,lrd}.fits. - The circular-aperture DIAMETERS (D_APER) are now stored as a single shared vector in a dedicated FITS extension of the photom file (extension 2, column APER_DIAMETER_ARCSEC) instead of a per-object column. The per-filter circular-aperture arrays are the 12 apertures with diameter <= 1.0". - Added photo-z runs: an EELG (extreme emission-line galaxy) template run and a broadband-only (BBonly) run, plus an EELG-based recovery branch in the high-z selection (see EELG_RECOVERED in the selected file). - Added spec-z and source-of-interest columns to the photom catalog (ZSPEC, ZSPEC_QUAL, ZSPEC_PROGRAM, ZSPEC_GRATING, INTEREST_SOURCE, INTEREST_LABEL), matched from curated master lists. - Added rest-frame UV columns MABS_1500 (absolute M_UV at 1500 A) and BETA (UV continuum slope) to the photom catalog, measured from the LAZY best-fit model. - Support for multi-tile fields: fields built from several tiles are merged into a single catalog, which then carries tile-provenance columns (TILE, TILE_ID, COORDID); single-tile fields do not have these. --------------------------------------------------------------------------------------- The file unicorn_field_version.tar.gz includes all files below *except* the (quite large) template files. Most users will not need these, so I'd recommend starting with this tar file. All files are explained below. This folder contains a single photometry file, labeled: field_photom_version.fits (where field and version have specific values for this field and a given catalog version). This FITS catalog contains photometry in units of nJy. The main table is in extension 1; extension 2 holds the shared aperture-diameter vector (see D_APER below). A description of the extension-1 columns: ---------------------------------------- ID: a running Source Extractor ID (first cold objects, then creating new IDs for hot objects indexing after the cold values). COORDID : IAU-style string RA: Right ascension (J2000, measured in the detection image) Dec: Declination (J2000, measured in the detection image) DETECTCAT: Describes whether the source was selected in the cold-fiducial, hot-fiducial, or f444W-selected catalog X: Image x value (measured in the detection image) Y: Image y value (measured in the detection image) XMIN: Source Extractor XMIN value XMAX: Source Extractor XMAX value YMIN: Source Extractor YMIN value YMAX: Source Extractor YMAX value SE_FLAGS: Source Extractor bit flag values KRON_RADIUS: kron radius for the fiducial small kron aperture A_IMAGE: semi-major axis of the kron aperture is A_IMAGE * KRON_RADIUS B_IMAGE: semi-minor axis of the kron aperture is B_IMAGE * KRON_RADIUS THETA_IMAGE: position angle of the kron aperture APCORR: Initial aperture correction for fiducial Kron apertures APCORR_APER: Initial aperture correction for the 12 circular apertures (a 12-element vector) APCORR_WINGS: Residual aperture correction (has already been multiplied into APCORR and APCORR_APER) STELLARITY: Source Extractor star-galaxy separator value (1=star, 0=galaxy) ISOAREA_IMAGE: Area (in pixels) of the segmentation map for a given object STARFLAGS: 1 if the object's central pixel falls in the star mask (star mask is currently unavailable in most fields, in which case this is 0 for all objects) DEPTHTIER: For fields with more than one depth region, an integer labeling which depth tier the object falls in (see field_area.txt and the 5-sigma depths file, which are tabulated per tier); 0/single-valued where a field has one uniform depth APERFLAGS: Flag denoting if the object had a correction applied due to a too-large Kron aperture (0/1/2; see below) SCALE_KRON: The scaling to apply the original kron flux to the new replacement value (in case you want to backtrack) for objects with aperflags>0 SCALE_MODEL: The scaling to apply to the fiducial model to match the new photometry (e.g., for bio plots; for use with the circular *templates* set, where you apply this scale factor to the circular model so it matches the fiducial photometry) MABS_1500: Absolute UV magnitude at rest-frame 1500 Angstrom, from the LAZY best-fit model (apparent m1500 with the aperflag scale_model applied, minus the distance modulus at za); 99 = undefined BETA: UV continuum slope (f_lam ~ lam^beta) measured on the LAZY best-fit model over the Calzetti windows; NaN if too few windows are covered ZSPEC: Spectroscopic redshift matched from curated master lists (sentinel, e.g. -1, if none) ZSPEC_QUAL: Quality/confidence flag for the matched spec-z ZSPEC_PROGRAM: Program/survey the spec-z came from ZSPEC_GRATING: Grating/mode of the spec-z (where applicable) INTEREST_SOURCE: Provenance label if the object appears on a curated "source of interest" list (empty otherwise) INTEREST_LABEL: Short human-readable label for a source of interest (empty otherwise) ***(the remaining columns are repeated for each filter, denoted FXXXX) *** FLUX_FXXXX: Fiducial flux, measured in small Kron apertures, PSF-corrected, with the full aperture correction applied. These are then corrected if the Kron apertures are too large (see below). FLUXERR_FXXXX: Fiducial flux error, calculated empirically and with aperture corrections applied. For use with FLUX_FXXXX. Also corrected if the Kron apertures are too large (see below). FLUX_KRON_FXXXX: Same as FLUX_FXXXX, but without the (occasionally inaccurate) Kron correction FLUXERR_KRON_FXXXX: Same as FLUXERR_FXXXX, but without the inaccurate Kron correction FLUX_APER_FXXXX: Fluxes in the 12 circular apertures (diameters in extension 2), PSF-corrected FLUX_APER_NATIVE_FXXXX: Fluxes in the 12 circular apertures on the native (unmatched) image resolution FLUXERR_APER_FXXXX: Empirical flux error for the 12 circular apertures. For use with FLUX_APER_FXXXX and FLUX_APER_NATIVE_FXXXX. FLUX_APERTOT_FXXXX: Fluxes in the 12 circular apertures, PSF-corrected AND with the full aperture correction applied FLUXERR_APERTOT_FXXXX: Empirical flux error for the 12 circular apertures with aperture corrections applied. For use with FLUX_APERTOT_FXXXX. RH_FXXXX: Source Extractor half-light radius, measured on the native-resolution image FWHM_FXXXX: Source Extractor FWHM, measured on the native-resolution image EDGEFLAGS_51PIX_FXXXX: 1 if more than 10% of a 51x51 pixel box centered on the source has NaN values (i.e. close to an edge) EDGEFLAGS_21PIX_FXXXX: same as above for a tighter 21x21 pixel box ***(end of per-filter columns) *** NEIGHBOR_D_CLOSEST: Distance to the closest neighboring source NEIGHBOR_MAG_CLOSEST: F444W magnitude of the closest neighboring source NEIGHBOR_D_BRIGHTEST_4ARCSEC: Distance to the brightest source (in F444W) within 4" NEIGHBOR_MAG_BRIGHTEST_4ARCSEC: F444W mag of the brightest source (in F444W) within 4" For MULTI-TILE fields only (e.g. those built by merging several tiles), three extra columns appear at the front of the table: TILE (which tile the source came from), TILE_ID (its ID within that tile), and COORDID. Single-tile fields do not have these. EXTENSION 2 — APER_DIAMETER_ARCSEC: a single 12-element vector giving the diameters (arcsec) of the circular apertures used by all FLUX_APER_* / FLUX_APERTOT_* columns. It is the same for every source, so it is stored once here rather than repeated per object. (In older catalogs this lived in the first row of the main table.) ---------------------------------------- Inaccurate Kron Aperture Correction: Sometimes, usually due a bright neighbor, the Kron apertures are drawn larger than they should be (e.g., they don't hug the isophote as intended). To screen against this, we calculate a quantity "aperrat", which is the ratio between the Kron area (pi*a_image*b_image*kron_radius^2) to the area of a d=0.2" circle. We make a correction if: 1) This ratio is larger than 10 *and* the object in question has m_F444W > 25, 2) 3 < aperrat < 10 *and* a) The brightest neighbor within d=4 has m < 23, or b) The brightest neighbor within d=1.5" has m < 24, or c) The brightest neighbor within d=0.5" is brighter than the object in question, or d) The brightest neighbor within d=1" is more than two magnitudes brighter than the object in question 3) za > 7 (lower-z objects are just larger, so more work is needed to design criteria for those) Objects that fall under #1 have APERFLAG=1; those under #2 have APERFLAG=2 ---------------------------------------- ---------------------------------------- This directory also includes: field_area.txt - Area in square arcminutes, tabulated PER DEPTH TIER (one row per tier). For each tier it gives the SW+LW area (based on the number of pixels with valid data in the 115+150+200+277+356 images) and the LW-only area (based on the 277+356 images). Fields with a single uniform depth report a single populated tier. field_5sig-depths_vX.X.txt - Estimated 5-sigma point-source depths in each filter, given PER DEPTH TIER (one column per tier, PSF_total(tierK)). Computed from the measured noise function in the field using a 0.2" diameter aperture, corrected to total based on the flux enclosed for a given band's PSF. A value of 99 means the filter has no valid data in that tier. ---------------------------------------- ---------------------------------------- There is also a Flags directory which includes: field_detectionflags_vX.X.fits - Binary flags (0 or 1) for whether an object satisfies the following flags based primarily on image *detection*: - snr_detect: calculated by building an array of the signal-to-noise ratios in the native d=0.2" aperture fluxes (using flux_aper_native and fluxerr_aper_empirical) for all NIRCam bands in the catalog. At least two must have SNR > 5.3, or at least three must have SNR > 4.3, for the flag to be 1. - snr_break: 1 if the flux below the Lya break is not significant. This is the case if no filters fully below the Lya break have SNR > 2.5, and no more than one has SNR > 2. Calculated using native d=0.2" aperture fluxes (and does not include WFC3). The break wavelength is set at the redshift from the 16% C.L. of the full P(z). - snr_break_circ: same as snr_break, except using the P(z) from photz_circles (photo-z from the circular-aperture fluxes) - err: 1 if the errmap value at the central pixel is < 10^3 in F115W, F150W, F277W and F444W. Using this in selection excludes objects in the SW chip gap. - stars: 1 if the central pixel is not flagged in the starmask (this mask is currently not available in most fields). - edge: 1 if the 51-pixel edgeflag (edgeflags_51pix) is not set in all six of the regular NIRCam broadbands. - edge_sw: 1 if the 51-pixel edgeflag is not set in all of F115W, F150W, F200W. - edge_lw: 1 if the 51-pixel edgeflag is not set in all of F277W, F356W, F444W. field_selectionflags_vX.X.fits - Binary flags (0 or 1) for whether an object satisfies the following flags based primarily on the fiducial photometric-redshift information. Some make use of these definitions: z_sample=[3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.75,13.5,17.5] dz=[1.0,1.0,1.0,1.0,1.0,1.0,1.0,2.5,3.0,5.0] The flags contained are: - intpz: 1 if the chosen P(z) integral is >= 0.7. This is int_zgtX, where "X" is generally z_sample-2 (though for z=10.75, 13.5, 17.5 this is int_zgt8, 10 and 13, respectively). - za: 1 if za is greater than z_sample-dz/2.0-1.0 - chia: 1 if chia (the chi2 at za) is <= 60 - sample: 1 if the "redshift sample" equals z_sample; this is the redshift interval which contains the plurality of the P(z) compared to the other intervals. - dz_circ: 1 if the fiducial and circular-aperture photo-z agree (|za - za_circ| within tolerance); guards against aperture-dependent photo-z swings. - dchi2: 1 if either za < 7, or za > 7 and the chi2 at the secondary (low-z) solution exceeds chia by at least 4.0. - rh: 1 for all objects unless za > 12 and the F356W half-light radius is < 1.3 (to reject bad LW pixels that mimic very high-z objects). - eelg: relates to the EELG-template recovery branch — set so that strong-line high-z emitters the fiducial templates underfit are not lost (and low-z EELG interlopers are not spuriously gained). See EELG_RECOVERED in the selected file. - inspect: 1 for objects that pass visual inspection *for this specific redshift subsample* - mag: 1 for everything (could be used to apply a magnitude limit) - aperrat: currently 1 for everything - ***_circ: same as above, but using photo-z values from the circular-aperture (photoz_circles) run - ***_kron: same as above, but using photo-z values from the un-aperture-corrected (kron) run **NB - the "local" (snr_local_*) values are DEPRECATED, do not use. A more detailed explanation is given in Finkelstein+2024; the values here generalize that work to all of z > 3. To select a sample akin to a UNICORN "selected" object, one requires these flags: snr_detect, err, intpz, chia, za, sample, snr_break, dchi2, edge, stars, rh, eelg I have done this myself and created: field_selected_vX.X.fits, whose columns are: - selected: 1 if all UNICORN selection criteria are met (0 otherwise) - sample: an INTEGER giving the redshift sample (the sample_integer of the delta_z=1 bin that holds the plurality of P(z), 1-19); 0 if not selected - inspected: -1 prior to inspection; 1 if inspection validates the object (in any subsample); 0 if inspection indicates it is spurious - detflag: 0 if the detection SNR was not satisfied (SNR > 5.3 in two filters, or > 4.3 in three) - pixflag: 0 if the LW errmap at this position is "bad" (>10^10), or a 51-pixel edge flag is set in a NIRCam broadband, or a star flag is set - zflag: 0 unless the object satisfies the photo-z selection flags (intpz, za, chia, sample, dchi2, rh, snr_break, dz_circ, eelg) for at least one redshift bin - eelg_recovered: 1 if the object was selected ONLY via the EELG-template recovery branch; for these, the reported photo-z has been swapped to the EELG fit that justified selection Inspection plots provide (some) of this information. If an object is selected, it is shown in gold in the SED plot; if not, that is listed in red, with detection, image, and/or photo-z flags listed if any were set to zero. The plots also indicate whether an object has been flagged "good" or "bad" by visual inspection, or not yet inspected. ---------------------------------------- ---------------------------------------- There are several directories of photometric-redshift results, each a different run: Photoz: The fiducial results — run on our fiducial (small-Kron, PSF-corrected, aperture-corrected) fluxes over the full redshift range 0-20, including (when applicable) a correction for inaccurately drawn Kron apertures. Photoz_Circles: Run on 0.2"-diameter circular-aperture fluxes (the FLUX_APERTOT values — colors measured in 0.2" circles with the PSF correction, corrected to total with the full aperture correction). Photoz_eelg: Same fluxes as fiducial, but fit with an EELG (extreme emission-line galaxy) template set; used to recover strong-line high-z emitters the fiducial templates underfit. Photoz_BBonly: Fiducial fluxes restricted to the broadband filters only (no medium bands). Photoz_WFC3: Same as fiducial, but including the WFC3 fluxes. Each directory contains ONE multi-extension file, field_photz_version.fits, with four extensions: EXT 1 - single-value photo-z quantities (one row per object). Columns include: za - best-fitting photometric redshift (where chi2 is minimized) zm - P(z)-weighted ("marginalized") redshift chia - chi2 at za z_lowz - best-fitting redshift restricted to z < 7 (the low-z solution) chia_lowz - chi2 at z_lowz zl68/zu68/zl95/zu95 - 68% and 95% confidence bounds on the redshift int_cen - integral of P(z) between za +/- 0.15(1+za) int_pzX - integral of P(z) in delta_z=1 windows centered at z=X (X=0..20; z=0 integrates 0-0.5, z=20 integrates 19.5-20) int_pzX_Y - integral of P(z) between the two redshifts in the name (e.g. int_pz12_15 = z=12 to 15) int_zgtX - integral of P(z) from z=X to the top of the grid int_zgtza_2 - integral of P(z) above (za - 2), used in the selection "za" flag sample_integer - the delta_z=1 integer-centered bin holding the plurality of P(z) (1-19) sample_jwst - as sample_integer, but replacing 10-19 with the int_pzX_Y windows (options 1-9, 11, 13, 17) coeffs / coeffs_lowz - template coefficients that reconstruct the best-fit model at za and at the low-z solution (use with the matching unicorn_templates_*.fits basis) m1300 / m1500 - absolute UV magnitude at rest-frame 1300 / 1500 Angstrom id - matches the ID column in the photom catalog EXT 2 - best-fit MODEL FLUXES: the bandpass-integrated flux of the best-fit model in each filter (one column per filter). EXT 3 - the full P(z): columns ZGRID (the redshift grid), PZ (P(z) per object, normalized to unit integral), and CHI2 (chi2(z) per object). EXT 4 - the low-z P(z): columns ZGRID_LOWZ and PZ_LOWZ — the P(z) restricted to z < 7, used to visualize the low-redshift solution. Template bases (shared across the whole project, not per field) are shipped as: unicorn_templates_fiducial.fits - the fiducial (SFHZ + Larson22) template set used by Photoz / Photoz_Circles / Photoz_BBonly / Photoz_WFC3 unicorn_templates_eelg.fits - the EELG template set used by Photoz_eelg unicorn_templates_lrd.fits - the LRD (little red dot) template set Each holds the rest-frame wavelength array and the template spectra; multiply the template basis by an object's COEFFS (from ext 1 of the matching run) and redshift by (1+z) to reconstruct its best-fit model. ---------------------------------------- ---------------------------------------- ----------------------------------------------- Summary of process - full details in Finkelstein et al. 2024 (https://ui.adsabs.harvard.edu/abs/2024ApJ...969L...2F/abstract) We match the PSF of all ACS bands and all NIRCam bands bluer than F277W to that of F277W. For bands with larger PSFs (the redder NIRCam bands, and all WFC3 bands), we calculate correction factors by convolving the F277W image to the larger PSF, and measuring the flux ratio in the native image to that in the convolved image. Applying this correction factor to the fluxes measured in the larger-PSF images corrects for the missing flux (under the assumption that the morphology does not change significantly). Photometry was performed with Source Extractor (v2.25.0) in two-image mode, using a weighted sum of the native-resolution F277W and F356W as the detection image. For the detection image we used a 1/sqrt(WHT) map with map_rms weighting, such that Poisson noise (which is in the ERR maps) did not affect the detections. For the measurement image we used the relevant ERR map. We run both hot- and cold-mode catalogs. The hot-mode catalog has DETECT_THRESH=1.75 and DETECT_MINAREA=5, derived iteratively via visual inspection to minimize spurious sources while maximizing completeness; this same threshold is used for all fields. A cold-mode catalog was run with DETECT_THRESH=3.5 and DETECT_MINAREA=40. For both, a top-hat convolution kernel 4 pixels wide with a 5x5 kernel size was used, with DEBLEND_NTHRESH=32. For the hot catalog we used DEBLEND_MINCONT 0.0001; for the cold catalog 0.005. We fed Source Extractor an effective gain of the true instrumental gain times the exposure time. The only final-catalog columns sensitive to these values are the Source Extractor errors, which we do not recommend using (our empirical errors are more robust, and the exposure time is often a rough estimate for mosaics). Flux uncertainties were derived by placing random non-overlapping apertures with diameters from 0.1-1.5" in empty regions of the image (avoiding the segmentation map), and fitting a four-parameter function to the NMAD in each aperture as a function of aperture area. Each object's flux error is evaluated from this fit at the object's aperture area. Our fiducial fluxes are measured in small Kron apertures with two aperture corrections. The first is the ratio of the default larger MAG_AUTO Kron aperture to our small aperture. We then calculate an additional correction for flux missed on larger scales: in the NIRCam bands we ran source-injection simulations, injecting small Sersic profiles with Galfit into F277W and F356W, building an F277W+F356W detection image, and measuring photometry in F277W. Comparing input to output fluxes, input fluxes are ~5-20% higher than output, rising slightly toward fainter magnitudes. We fit a linear function to this offset and apply it (typically 1.02 at m=24 rising to 1.10 at m=28, capped at 1.20 since recovered fluxes cannot be measured reliably near the depth). This was done identically for hot and cold detection parameters. To combine the catalogs, all cold-mode objects are included first; hot-mode objects whose central pixel does not lie in a (5x5-dilated) cold-mode segmentation map are then also included. Photometric redshifts were estimated with LAZY (the Asada et al. implementation of the method described in CEERS Key Paper I, https://arxiv.org/abs/2211.05792), using an SFHZ + Larson et al. 2022 (https://arxiv.org/abs/2211.10035) template set optimized against ~10,000 spec-confirmed galaxies, after measuring and applying per-band zero-point offsets.