"""
Contains utility functions for the AIA PSF calculations.
"""
import astropy.units as u
__all__ = ["filter_mesh_parameters"]
[docs]
def filter_mesh_parameters(*, use_preflightcore=False):
"""
Geometric parameters for meshes in AIA filters used to calculate the point
spread function.
Parameters
----------
use_preflightcore : `bool`, optional
If True, use the pre-flight values for the filter mesh parameters
Returns
-------
meshinfo : `dict`
Dictionary with filter mesh information for each channel. Each channel
entry then contains another dictionary with the following keys
describing filter mesh properties of that channel
(see Table 2 of [1]_):
* ``angle_arm``: Angles of the four entrance filter arms
* ``error_angle_arm``: Error in angle of the four entrance filter arms
* ``spacing_e``: Distance between diffraction spikes from entrance filter
* ``spacing_fp``: Distance between diffraction spikes from focal plane filter
* ``mesh_pitch``: Pitch of the mesh
* ``mesh_width``: Width of the mesh
* ``width``: Width applied to the Gaussian such that *after*
convolution we have the proper width
(:math:`4/3` at :math:`1/e` of max)
References
----------
.. [1] `Grigis, P., Su, Y., Weber M., et al., 2012,
AIA PSF Characterization and Deconvolution
<https://sohoftp.nascom.nasa.gov/solarsoft/sdo/aia/idl/psf/DOC/psfreport.pdf>`_
See Also
--------
`calculate_psf` : Calculate the composite point spread function
Notes
-----
These parameters were calculated from the following images and
reference background images.
94:
* image: 'AIA20101016_191039_0094.fits'
* reference: 'AIA20101016_190903_0094.fits'
131:
* image: 'AIA20101016_191035_0131.fits'
* reference: 'AIA20101016_190911_0131.fits'
171:
* image: 'AIA20101016_191037_0171.fits'
* reference: 'AIA20101016_190901_0171.fits'
193:
* image: 'AIA20101016_191056_0193.fits'
* reference: 'AIA20101016_190844_0193.fits'
211:
* image: 'AIA20101016_191038_0211.fits'
* reference: 'AIA20101016_190902_0211.fits'
304:
* image: 'AIA20101016_191021_0304.fits'
* reference: 'AIA20101016_190845_0304.fits'
335:
* image: 'AIA20101016_191041_0335.fits'
* reference: 'AIA20101016_190905_0335.fits'
"""
return {
94 * u.angstrom: {
"angle_arm": [49.81, 40.16, -40.28, -49.92] * u.degree,
"error_angle_arm": [0.02, 0.02, 0.02, 0.02] * u.degree,
"spacing_e": 8.99 * u.pixel,
"mesh_pitch": 363.0 * u.um,
"mesh_width": 34.0 * u.um,
"spacing_fp": 0.207 * u.pixel,
"width": (0.951 if use_preflightcore else 4.5) * u.pixel,
"CDELT": [0.600109, 0.600109] * u.arcsec,
},
131 * u.angstrom: {
"angle_arm": [50.27, 40.17, -39.70, -49.95] * u.degree,
"error_angle_arm": [0.02, 0.02, 0.02, 0.02] * u.degree,
"spacing_e": 12.37 * u.pixel,
"mesh_pitch": 363.0 * u.um,
"mesh_width": 34.0 * u.um,
"spacing_fp": 0.289 * u.pixel,
"width": (1.033 if use_preflightcore else 4.5) * u.pixel,
"CDELT": [0.600698, 0.600698] * u.arcsec,
},
171 * u.angstrom: {
"angle_arm": [49.81, 39.57, -40.13, -50.38] * u.degree,
"error_angle_arm": [0.02, 0.02, 0.02, 0.02] * u.degree,
"spacing_e": 16.26 * u.pixel,
"mesh_pitch": 363.0 * u.um,
"mesh_width": 34.0 * u.um,
"spacing_fp": 0.377 * u.pixel,
"width": (0.962 if use_preflightcore else 4.5) * u.pixel,
"CDELT": [0.599489, 0.599489] * u.arcsec,
},
193 * u.angstrom: {
"angle_arm": [49.82, 39.57, -40.12, -50.37] * u.degree,
"error_angle_arm": [0.02, 0.02, 0.03, 0.04] * u.degree,
"spacing_e": 18.39 * u.pixel,
"mesh_pitch": 363.0 * u.um,
"mesh_width": 34.0 * u.um,
"spacing_fp": 0.425 * u.pixel,
"width": (1.512 if use_preflightcore else 4.5) * u.pixel,
"CDELT": [0.600758, 0.600758] * u.arcsec,
},
211 * u.angstrom: {
"angle_arm": [49.78, 40.08, -40.34, -49.95] * u.degree,
"error_angle_arm": [0.02, 0.02, 0.02, 0.02] * u.degree,
"spacing_e": 19.97 * u.pixel,
"mesh_pitch": 363.0 * u.um,
"mesh_width": 34.0 * u.um,
"spacing_fp": 0.465 * u.pixel,
"width": (1.199 if use_preflightcore else 4.5) * u.pixel,
"CDELT": [0.600758, 0.600758] * u.arcsec,
},
304 * u.angstrom: {
"angle_arm": [49.76, 40.18, -40.14, -49.90] * u.degree,
"error_angle_arm": [0.02, 0.02, 0.02, 0.02] * u.degree,
"spacing_e": 28.87 * u.pixel,
"mesh_pitch": 363.0 * u.um,
"mesh_width": 34.0 * u.um,
"spacing_fp": 0.670 * u.pixel,
"width": (1.247 if use_preflightcore else 4.5) * u.pixel,
"CDELT": [0.600165, 0.600165] * u.arcsec,
},
335 * u.angstrom: {
"angle_arm": [50.40, 39.80, -39.64, -50.25] * u.degree,
"error_angle_arm": [0.02, 0.02, 0.02, 0.02] * u.degree,
"spacing_e": 31.83 * u.pixel,
"mesh_pitch": 363.0 * u.um,
"mesh_width": 34.0 * u.um,
"spacing_fp": 0.738 * u.pixel,
"width": (0.962 if use_preflightcore else 4.5) * u.pixel,
"CDELT": [0.600737, 0.600737] * u.arcsec,
},
}