Polarization

class acstools.polarization_tools.Polarization(pol0, pol60, pol120, filter_name, detector, pav3, tables=None)

Bases: object

Class for handling ACS polarization data. Input data for this class come from photometry of ACS polarization images. The methods associated with this class will transform the photometry into Stokes parameters and polarization properties, i.e., the polarization fraction and position angle.

Parameters:
  • pol0 (float) – Photometric measurement in POL0 filter. Units: electrons or electrons/second.

  • pol60 (float) – Photometric measurement in POL60 filter. Units: electrons or electrons/second.

  • pol120 (float) – Photometric measurement in POL120 filter. Units: electrons or electrons/second.

  • filter_name (str) – Name of the filter crossed with the polarization filter, e.g., F606W.

  • detector ({'wfc', 'hrc'}) – Name of the ACS detector used for the observation. Must be either WFC or HRC.

  • pav3 (float or Quantity) – Position angle of the HST V3 axis. This is stored in the ACS primary header under keyword PA_V3. Units: degrees.

  • tables (PolarizerTables) – Object containing the polarization lookup tables containing the efficiency and transmission leak correction factors for the detectors and filters.

Examples

From an ACS/WFC F606W observation of Vela 1-81 (the polarized calibration standard star), we have count rates of 63684, 67420, and 63752 electrons/second in POL0V, POL60V, and POL120V, respectively. The PA_V3 keyword value in the image header is 348.084 degrees. (Reference: Table 6; Cracraft & Sparks, 2007 (ACS ISR 2007-10)). In this simple case, we will use the polarization reference information contained in the acstools package for the calibration of the polarizers. We can use the Polarization class to determine the Stokes parameters and polarization properties as follows:

>>> from acstools.polarization_tools import Polarization
>>> vela_181 = Polarization(63684, 67420, 63752, 'F606W', 'WFC', 348.084)
>>> vela_181.calc_stokes()
>>> vela_181.calc_polarization()
>>> print(f'I = {vela_181.stokes_i:.2f}, Q = {vela_181.stokes_q:.2f}, U = {vela_181.stokes_u:.2f}')
I = 173336.09, Q = -3758.34, U = 9539.59
>>> print(f'Polarization: {vela_181.polarization:.2%}, Angle: {vela_181.angle:.2f}')
Polarization: 5.92%, Angle: 5.64 deg

If we need to adjust the polarization calibration, we can do so by providing a different set of polarization tables using the PolarizerTables class. See the help text for that class for more information about input format. For the same source as above, we can explicitly provide the calibration tables (using the default tables in this example) as:

>>> from acstools.polarization_tools import Polarization, PolarizerTables
>>> vela_181 = Polarization(63684, 67420, 63752, 'F606W', 'WFC', 348.084,
>>>                         tables=PolarizerTables.from_yaml('data/polarizer_tables.yaml'))
>>> vela_181.calc_stokes()
>>> vela_181.calc_polarization()
>>> print(f'I = {vela_181.stokes_i:.2f}, Q = {vela_181.stokes_q:.2f}, U = {vela_181.stokes_u:.2f}')
I = 173336.09, Q = -3758.34, U = 9539.59
>>> print(f'Polarization: {vela_181.polarization:.2%}, Angle: {vela_181.angle:.2f}')
Polarization: 5.92%, Angle: 5.64 deg

Methods Summary

calc_polarization()

Calculate the polarization parameters (fractional polarization and position angle) using attributes set at initialization.

calc_stokes()

Calculate Stokes parameters using attributes set at initialization.

Methods Documentation

calc_polarization()

Calculate the polarization parameters (fractional polarization and position angle) using attributes set at initialization.

calc_stokes()

Calculate Stokes parameters using attributes set at initialization.