Erica Lastufka

Categories

  • posts

Tags

  • AIA
  • calculation

To calculate expected flux (per AIA pixel) given a temperature and emission measure ( expected_AIA_flux() in flare_physics_utils.py):

F = EM/R(T)

where F is the flux in units DN s-1 px-1, EM has units (cm-3) and R(T) is the response fuction of a given channel at a given temperature, in units DN cm5 s-1 px-1.

The response function on a given day can be obtained with sswidl’s get_aia_response.pro.

To properly calculate the pixel size, use the Sun-Earth distance on the date in question (see arcsec_to_cm() in sunpy_map_utils.py): angular_diameter_arcsec=radians_to_arcseconds * diameter/distance. One square AIA pixel will be about 5.36×1017cm2.

Divide the response function at temperature log10 T (MK) by this pixel area. Units of R(T)/pixel_area are: DN cm3 s-1, which means the units of the predicted flux are now simply DN s-1.

Given observed fluxes, the EM can also be calculated from the above equation (see EM_loci_curves() in flare_physics_utils.py)

Examples

NuSTAR observation of 2020-09-12, orbit 8, with temperature and emission measure calculated by spectral fit between 20:37 and 20:50 (courtesy S. Paterson). Note this is for the entire flare as seen by NuSTAR, extent unknown.

obs_params['EM_spec_cm-3']=1.03e43
obs_params['EM_err_cm-3']=[7.17e42,1.32e43]
obs_params['T_spec_MK']=3.244
obs_params['T_err_MK']=[3.195,3.347]

Compare expected AIA fluxes (dashed lines) with observed fluxes in one pixel at peak of AIA event, at the brightest part of the flare as seen in AIA 211:

obstime='2020-09-12 20:51:00'
testfluxes=get_datavec(df, pd.to_datetime(obstime))
maxloc=argmax2D(testfluxes[4]) #211
obs_fluxes=[f[maxloc] for f in testfluxes] #location corresponding to brightest pixel in AIA 211
obs_fluxes
[6.198385031134314,
27.573456549919502,
498.955343496757,
1216.220135844588,
398.1122242168047,
5.860411883536379]

Here, the loci curves given by the actual observed fluxes in only a single pixel show EM about one order of magnitude greater than what is predicted based on the T and EM from the spectral fit for the whole flare!

Now compare with a pixel not in the flare area:

minloc=argmin2D(testfluxes[4])
outside_fluxes=[f[minloc] for f in testfluxes] #now the dimmest pixel
outside_fluxes
[1.1825562246404253,
 2.7573456549919504,
 191.98281753783036,
 78.0141205558206,
 13.09806451968708,
 0.3447301107962576]

Let’s assume that even though this flare is small, it’s still going to show up in more than one AIA pixel. Instead of the usual mask, take only the top 50% contour in the 211 difference image as the mask:

percent=50
mask50=make_contour_mask(211,contour=[percent],plot=False)
np.sum(~mask50) #number of pixels being considered

7
obs_fluxes #from difference image now

[29.38421407745588,
 180.84673903206203,
 3380.5521036341333,
 5035.8296055020155,
 1857.4968614776121,
 32.470292787569235]

This is ~ 10x higher than fluxes from a single pixel.

References

M. Kuhar et al, 2017 ApJ 835 6 equation 3

Boerner, P. F., Testa, P., Warren, H., Weber, M. A., & Schrijver, C. J. 2014, Sol. Phys., 289, 2377