Jump to: navigation, search

Welcome to the collaboration wiki for TADPOL (Telescope Array Doing POLarization), one of the key projects at CARMA, the Combined Array for Research in Millimeter-wave Astronomy.

Click here for the official TADPOL website, which includes a list of collaborators and their institutions, publications, presentations, and data products.


The CARMA 1mm polarization system

Full-Stokes polarization measurements are possible in the CARMA 1mm (210-270 GHz) band. Each 10-m and 6-m telescope is equipped with two 1mm receivers, one sensitive to left circular polarization (L), the other to right circular polarization (R). The two receivers share a common feed horn; the two polarizations are separated by a waveguide orthomode transducer.

Do not confuse the FULLSTOKES and DUALPOL observing modes. DUALPOL observations offer improved SNR for spectral line observations, but measurement of all 4 Stokes parameters (I,Q,U,V) is possible only in FULLSTOKES mode.

Observing Modes
Correlator Mode Correlations Bands Benefit
LL LL 8 More tunable windows
DUALPOL LL,RR 4 Improve SNR on spectral lines

Polarization measurements require 2 extra calibrations -- XYphase and leakage -- in addition to the usual passband and gain calibrations.

XYphase (L-R phase difference)

"XYphase" (in MIRIAD lingo) is the phase difference between the L and R channels caused by delay differences in the receiver, underground fiber-optic cables, and downconverter cabling. XYphase calibration errors rotate the position angles of linear polarization vectors on the sky. For circularly polarized feeds, changing the XYphase by 180º rotates polarization vectors by 90º.

To calibrate XYphase one must observe a linearly polarized source with a known position angle. (LR and RL visibility amplitudes are zero for unpolarized sources, hence unpolarized sources provide no information about the L-R phase difference.) At cm wavelengths it's common to observe 3c286 for this purpose, but 3c286 is quite weak at 1mm.

At CARMA we calibrate the XYphase by rotating a wire grid into the beam on each 10-m telescope. With the grid in place, vertically polarized radiation reaching the receiver originates from the sky, while horizontally polarized radiation originates from a room temperature load behind the grid. Since the room temperature load is much hotter than the sky, the receiver sees thermal noise that is strongly horizontally polarized. The L-R phase difference can be derived, channel by channel, from LR autocorrelation spectra obtained with the grids in place. With a 10 sec integration, the signal to noise is sufficient to measure the phase difference in a 10 MHz-wide channel to an accuracy of about ± 2º. The XYphase calibration can be done while the telescopes are tracking a calibrator, a source, or blank sky -- the horizontally polarized noise power from the room temperature load overwhelms any signal coming from the sky.

One derives the XYphase corrections by fitting a passband to the LR autocorrelation spectra with MIRIAD program xyauto (a hacked version of mfcal). One then rewrites the data with uvcat or uvcal in order to apply the passband correction. In the new dataset the L-R phase difference to zero for all 10-m spectra. Following this, the regular passband is fit with mfcal, using any one of the 10-m antennas as the reference antenna. Since the L-R phase difference is zero for every channel of the refant spectrum, and since the normal passband correction ensures that all LL and RR cross-correlations have zero phase with respect to the reference antenna, applying the regular passband transfers the XYphase correction to all other antennas, even those without grids.

Additional notes:

  1. The master script initiates XYphase grid calibrations.
  2. When grids are in place, CARMA data are taken with intent=P. Use select=purpose(P) during data reduction.
  3. The MIRIAD header variable evector specifies the position angle of polarized radiation that gives an L-R phase difference of zero. Accordingly, the MIRIAD filler at CARMA sets evector=pi/2, corresponding to the position angle of the horizontally polarized calibration source.
  4. A potential source of error in the autocorrelation XYphase calibration is crosstalk between the L and R receivers; these share a common LO, so they are not phase-switched relative to each other. We believe that the autocorrelation method is adequate because (1) amplitudes increase by roughly an order of magnitude when the grids are inserted, suggesting that the calibration signal is much larger than the crosstalk; and (2) LR and RL crosscorrelation phases observed on strong calibrators with the grids in place also are zeroed by the XYphase correction.


Leakage corrections compensate for crosscoupling between the L and R channels from each antenna, caused by imperfections in the waveguide polarizers and orthomode transducers on the receivers, or by crosstalk that occurs inside the block downconverters in the correlator room. Miriad stores the leakage corrections as two complex numbers per antenna (leakage of L into R, and of R into L), in a separate leakage 'item' inside the visibility dataset.

MIRIAD program gpcal derives the leakage corrections from observations of a bright source that is observed over a wide range of parallactic angle. The parallactic angle changes most rapidly for high declination (dec ~ 20-50º) sources near transit. It doesn't matter if the leakage calibrator is polarized or unpolarized, nor is it necessary to know its polarization a priori. LR and RL crosscorrelated signals from a polarized source vary as the parallactic angle changes, whereas instrumental leakages are constant in time, making it possible to distinguish the two. Once a leakage item is stored in a visibility dataset, subsequent Miriad programs apply the leakage corrections automatically unless options=nopol is specified.

An instrumental problem that remains unsolved is small scale structure (i.e. ripples) in the polarization leakages. Measuring this structure is quite tedious with Miriad - one must rerun gpcal repeatedly on the calibration data using a series of narrow channel ranges. The ripples signify that there are two or more paths by which signals with one polarization leak into the opposite polarization. These paths have different delays, so the leakage signals beat with one another. We know that crosstalk inside the block downconverters in the correlator room leads to ripples with periods of 200-300 MHz, whereas crosstalk inside the dewars on the telescopes typically introduces ripples with periods of about 1 GHz.

Structure in the polarization leakages is not a big problem for wideband observations (e.g., of dust polarization) because the ripples tend to average out across the passband. In addition, over the course of a 4 or 5 hour observation, as the source parallactic angle changes, any remaining errors tend to cancel. One can solve for a single set of leakages (2 complex numbers per telescope) and apply them to the channel-averaged data. Typical wideband leakage amplitudes are 5%. The ripples are a bigger concern for projects that want to measure polarization in narrow frequency intervals (e.g., searches for the Goldreich-Kylafis effect in molecular lines).

Since the CARMA receivers have no moving parts, the leakages are stable with time and reproduce closely from day to day. Nevertheless, we have found that it is best to solve for the leakages using the calibrator in each track, rather than trying to apply historic leakage solutions.

Setting up the observing script

Here is the typical frequency and correlator setup that we use for TADPOL observations. We measure dust continuum in bands 1,3,5 and 12CO/SiO in band 7. Note that only 2BIT mode is allowed for the 500 MHz bandwidths in FULLSTOKES mode.

tuning = {
  'restfreq' : 223.821,  # [GHz] LO1 freq
  'sideband' : USB,    # Sideband for first LO (LSB or USB)
  'IFfreq'   :   0.0,   # [GHz] IF frequency
def setCorrelator(tuning):
  configastroband(1, "FULLSTOKES", BW500, tuning['restfreq'] + 6.0,   AUTO, 'none', 'none', bits=CORR_2BIT)   
  configastroband(3, "FULLSTOKES", BW500, tuning['restfreq'] + 7.5,   AUTO, 'none', 'none', bits=CORR_2BIT)
  configastroband(5, "FULLSTOKES", BW500, tuning['restfreq'] + 8.0,   AUTO, 'none', 'none', bits=CORR_2BIT)
  configastroband(7, "FULLSTOKES", BW31,  tuning['restfreq'] + 6.717, AUTO, 'none', 'none', bits=CORR_2BIT)  # CO in USB, SiO in LSB

Two new keywords in the sources dictionary -- "intervalPol" and "tintpol" -- set up the XYphase calibrations on the 10-m telescopes. These calibrations are performed just after the gain calibrator is observed, roughly once per calibration cycle.

sources = {
  'target'       :    'L1157',
  'mosaicTarget' :      False,
  'tintTarget'   :         15,  # [minutes] time per cycle *** per pointing ***
  'phaseCal'     : '1927+739',
  'tintPhaseCal' :          3,  # [minutes]
  'callist'      :       None,
  'intervalPol'  :       0.66,  # [hours] interval for XYphase grid measurements
  'tintPol'      :        0.5,  # [minutes] integration time with grids in

Data reduction

Here are the key data-reduction steps for polarization observation, appropriate for wideband observations:

1. Derive XYphase corrections with xyauto, rewrite data with uvcat to apply.

  xyauto vis=$RAW select='purpose(P)'        
      # purpose(P) indicates xyphase calibration data (10-m data only)
  rm -r wide.xy
  uvcat vis=$RAW out=wide.xy options=nopol select='-auto,-purpose(P)'  
      # rewriting the data applies the xyphase corrections (to the 10-m data only)

2. Fit the passbands with mfcal, rewrite with uvcat to apply.

  mfcal vis=wide.xy select='source('$PBCAL')' interval=0.1 refant=2
     # IMPORTANT: select one of the 10-m telescopes (1,2,3,4,5,6) as refant, otherwise xyphase correction from step 1 will be lost
  rm -r wide.pb
  uvcat vis=wide.xy out=wide.pb options=nocal,nopol

3. Check the parallactic angle change of the phase calibrator with uvplt:

  uvplt vis=wide.pb select='source('PHSCAL')' axis=time,parang device=/xs

4a. If parallactic angle coverage was adequate (> 45 degrees, say) and phase calibrator is bright, fit leakages with gpcal:

  gpcal vis=wide.pb options=circular,qusolve,noxy,nopass interval=0.5 select='source('PHSCAL')' refant=8 line=chan,1,1,282
      # note that refant can now be any antenna - it does not have to be one of the 10-m antennas

4b. Or, if parallactic angle coverage was poor or phase calibrator was faint, copy leakages from another dataset:

   gpcopy vis=$OTHER out=wide.pb options=nocal,nopass

5. Calibrate phase vs time with selfcal or mfcal

   selfcal vis=$OTHER select='src($PHSCAL),pol(LL,RR)' interval=20 refant=8

6. Make maps of all 4 Stokes parameters.

   rm -r $MAP.I.mp $MAP.Q.mp $MAP.U.mp $MAP.V.mp $MAP.bm
   invert vis=wide.pb line=chan,1,1,282 map=$MAP.I.mp,$MAP.Q.mp,$MAP.U.mp,$MAP.V.mp stokes=I,Q,U,V sup=0 select='source('$SRC')'

Here are 2 sample scripts:

pol_basic.csh is a bare-bones polarization reduction script, with minimal data inspection. It expects that all correlator windows have been set up in wideband mode.

reduce.csh is a fancier script that is customized for TADPOL observations. It expects that correlator windows 1,3,5,9,11,13 are BW500 for continuum polarization measurements, while window 7 is centered on the 5-4 SiO line and window 15 is centered on the 2-1 12CO line. The narrow windows are used to map outflows.

Techical publications

  • CARMA Memo 54: detailed description of the waveguide circular polarizer.

Contact Info

Chat Hull

Dick Plambeck

Personal tools