Spitzer Documentation & Tools


Correct IRAC observed aperture photometry-derived fluxes for the pixel phase and array location dependent response functions. ***NOTE: the pixel phase response is unity (zero variation across a pixel) for channels 3 and 4 (Cryogenic mission only).

The correction is of the following form: CORRECTED_FLUX = Q * Observed_Flux(x,y) / R_al(i,j) * R_pp(xphase,yphase)

Here the corrected flux is in Jy or proportional units, Q is the cal factor converting observed units to Jy (or whatever you have chosen), Observed_Flux(x,y) is the measured aperture flux at centroid position (x,y), R_al(i,j) is the Array Location response function (depends on the integer pixel i,j), and R_pp(xphase,yphase) is the Pixel Phase response function (depends on pixel phase xphase,yphase). Q and the input parameters of R_al and R_pp are hardcoded in this program to the values used in deriving the flux conversion factor in the IRAC cryogenic (S18.24, keyword /CRYO) and warm (S19.2, keyword /WARM) pipelines.

You can override these defaults using the PARAMS keyword. See description of keyword PARAMS for more information on these functions.

Optional keywords /REACH and /HORA allow you to correct data using previously determined cryogenic functions for pixel phase and array location dependent response (Reach et al. 2005; Hora et al. 2008).

Author: Jim Ingalls (SSC/Caltech)
Date Contributed: 06 Oct 2015
System Requirements: IDL; astrolib IDL library




Photometry, corrections

Calling Sequence

[,/REACH] [,/HORA] $


OBSERVED_FLUX:array of observed aperture fluxes corresponding to (X,Y)
X:array of X centroids (float), defined such that the center of the bottom left pixel is (0,0). The bottom left corner of the array is therefore (-0.5,-0.5) and the top right corner is (255.5,255.5). Same number of elements as OBSERVED_FLUX.
Y: array of Y centroids (float). Same number of elements as OBSERVED_FLUX.
CHANNEL:IRAC channel number (1-4). Same number of elements as OBSERVED_FLUX, or a single-element array or scalar (if only one element, the program assumes all elements of OBSERVED_FLUX are for the same channel).

If CHANNEL is 3 or 4 and none of /CRYO, /REACH, or /HORA is set, then the input data will be returned unchanged.

Optional Inputs


Keyword Parameters

PARAMS:a 14 x 4 element matrix, where PARAMS[*,i] gives the parameter array for the model, for the ith IRAC channel. NOTE: Normally you should not have to change the default values of these parameters. Entries for the ith channel of PARAMS (i goes from 0 to 3, corresponding to channels 1-4) are as follows:
PARAMS[0:5,i]: (A,B,C,D,E,F), the coefficients of the quadratic array location dependence:
                 R_al(i,j) = A + B*(i-127) + C*(j-127) +
                             D*(i-127)*(j-127) + E*(i-127)^2 +
Here, i = FIX(X) and j = FIX(Y)

PARAMS[6:12,i]:the coefficients of the double gaussian pixel phase dependence:
                 R_pp(xphase,yphase) =
                       + deltaF_y * exp(-WRAP(yphase-Y0,0.5)^2/(2*sigma_y^2))
                       + F0

                  PARAMS[6,i] = deltaF_x
                  PARAMS[7,i] = deltaF_y
                  PARAMS[8,i] = X0
                  PARAMS[9,i] = Y0
                  PARAMS[10,i] = sigma_x
                  PARAMS[11,i] = sigma_y
                  PARAMS[12,i] = F0_pp

Here, xphase and yphase are the observed pixel phase (x-ROUND(x) and y-ROUND(y)), deltaF_x and deltaF_y are the peak to baseline offsets of the x and y gaussians, X0 and Y0 are the central x and y pixel phases of the gaussians, sigma_x and sigma_y are the gaussian sigmas, and F0_pp is the baseline relative flux (relative flux at infinity). The function WRAP(z,0.5) wraps the pixel phase offset so that it is periodic at ±0.5 pixels (z=+0.5 becomes z=-0.5, continuing to 0, and vice versa). The center of the wrap (z=0) is the phase function peak. The pixel phase response is normalized so that the function's average, integrated over a pixel, equals 1.

PARAMS[13,i]:the calibration factor converting observed units to Jy. (In most cases, aperture-photometry measurements will already be in Jy, so PARAMS[13,*] = 1.0.)
/WARM:Apply the pixel phase and array location corrections appropriate to the post-cryogenic (S19.2) pipeline. This is the default when neither /CRYO, /REACH, or /HORA are set.
/CRYO:Apply the pixel phase and array location corrections appropriate to the cryogenic (S18.24) pipeline.
/PP_ONLY:Only correct the data using the pixel phase function.
/AL_ONLY:Only correct the data using the array location dependent function.
/REACH:Apply the pixel phase and array location corrections of Reach et al. 2005, PASP, 117, 975
/HORA:Apply the pixel phase and array location corrections of Hora et al. 2008, PASP, 120, 1233
/SUBARRAY:Interpret (X,Y) as relative to the appropriate subarray frame.


This function returns the corrected flux, which will be either a scalar or array, depending on the number of elements of OBSERVED_FLUX.


The pixel phase response was derived from aperture photometry performed with a 3 pixel aperture (3-7 pixel background annulus), and so is best used to correct data from the same aperture. (A larger aperture will give a less pronounced variation in pixel phase response, in which case this program may overcorrect your data.)

This correction will give valid results only when applied to appropriate data. The default (/WARM) correction is based on S19.2 data from the post-cryogenic mission. The /CRYO correction is based on S18.18 cryogenic data. The /REACH and /HORA corrections are relevant to S18.7 and earlier data.


  1. Measure X and Y pixel centroid position(s) for stellar image(s) (recommended method: first moment for example: http://irsa.ipac.caltech.edu/data/SPITZER/docs/irac/calibrationfiles/pixelphase/box_centroid.pro). X and Y are decimal values defined such that the center of the bottom left pixel of the image has (X,Y) = (0.0,0.0).
  2. Perform aperture photometry on the observation(s) to derive flux(es) (recommended routine: aper.pro from the IDL Astronomy User's Library) NOTE: This correction is optimized for the 3 pixel radius aperture, and 3-7 pixel sky background annulus.
  3. Correct measured flux(es) using this function.


	    IDL> corrected_flux = IRAC_APHOT_CORR( OBSERVED_FLUX, X, Y, CHANNEL )