Polarization Resolution#

Each PUNCH spacecraft observes polarized light in three polarizer wheel states, denoted M, Z, and P (minus 60 degrees, zero, and plus 60 degrees). These measurements are in the spacecraft frame, however. To merge these observations into a unified virtual field of view, these polarization data must be represented in a unified MZP frame with respect to the solar frame.

Concept#

The polarization correction is primarily carried out by the solpolpy framework, with a module within the punchbowl calling this code. See this code for full documentation.

Applying correction#

Polarization resolution is carried out in the punchbowl.level2.polarization.resolve_polarization function:

punchbowl.level2.polarization.resolve_polarization(data_list: list[NDCube]) list[NDCube]

Take a set of input data in the camera MZP frame and convert to the solar MZP frame.

Parameters:

data_list (List[NDCube]) – List of NDCube objects on which to resolve polarization

Returns:

modified version of the input with polarization resolved

Return type:

List[NDCube]

If you wish to incorporate this as a Prefect task in a custom pipeline, using something like the punchbowl.level2.polarization.resolve_polarization_task is recommended.