chandra_aca.dark_model¶
Routines related to the Chandra ACA dark current models.
The canonical model for ACA dark current is a based on smoothed twice-broken power-law fits of dark current histograms from Jan-2007 though Aug-2017. This analysis was done entirely with dark current maps scaled to -14 C.
See: /proj/sot/ska/analysis/dark_current_model/dark_model.ipynb and other files in that directory.
Alternatively: http://nbviewer.ipython.org/url/asc.harvard.edu/mta/ASPECT/analysis/dark_current_model/dark_model.ipynb
The dark_temp_scale_img method in this file uses a more recent 2023 approach with per-pixel scaling.
- chandra_aca.dark_model.dark_temp_scale(t_ccd, t_ccd_ref=-19.0, scale_4c=None)[source]¶
Return the multiplicative scale factor to convert a CCD dark map or dark current value from temperature
t_ccd
to temperaturet_ccd_ref
:scale = scale_4c ** ((t_ccd_ref - t_ccd) / 4.0)
In other words, if you have a dark current value that corresponds to
t_ccd
and need the value at a different temperaturet_ccd_ref
then use the the following. Do not be misled by the misleading parameter names.>>> from chandra_aca.dark_scale import dark_temp_scale >>> scale = dark_temp_scale(t_ccd, t_ccd_ref, scale_4c) >>> dark_curr_at_t_ccd_ref = scale * dark_curr_at_t_ccd
The default value for
scale_4c
is 1.0 / 0.7. It is written this way because the equation was previously expressed using 1 / scale_4c with a value of 0.7. This value is based on best global fit for dark current model in plot_predicted_warmpix.py. This represents the multiplicative change in dark current for each 4 degC increase:>>> dark_temp_scale(t_ccd=-18, t_ccd_ref=-10, scale_4c=2.0) 4.0
- Parameters:
- t_ccd
actual temperature (degC)
- t_ccd_ref
reference temperature (degC, default=-19.0)
- scale_4c
increase in dark current per 4 degC increase (default=1.0 / 0.7)
- Returns:
- scale factor
- chandra_aca.dark_model.dark_temp_scale_img(img, t_ccd, t_ccd_ref)[source]¶
Get dark current taken at
t_ccd
scaled to reference temperaturet_ccd_ref
This scales the dark current based on an exponential scaling factor that depends on the dark current value of each pixel. This is a more accurate way to scale dark current images than using a global scaling factor as in dark_temp_scale().
See the reference notebook at: https://nbviewer.org/url/asc.harvard.edu/mta/ASPECT/analysis/dark_current_model/dark_model-2023.ipynb
- Parameters:
- imgfloat, ArrayLike
Dark current image or value in e-/sec
- t_ccdfloat
CCD temperature (degC) of the input image
- t_ccd_reffloat
CCD temperature (degC) of the scaled output image
- Returns:
- float, np.ndarray
Dark current image scaled to
t_ccd_ref
- chandra_aca.dark_model.get_dark_hist(date, t_ccd)[source]¶
Return the dark current histogram corresponding to
date
andt_ccd
.- Parameters:
- date
date in any DateTime format
- t_ccd
CCD temperature (deg C)
- Returns:
- bin_centers, bins, darkhist
- chandra_aca.dark_model.get_sbp_pars(dates)[source]¶
Return smooth broken powerlaw parameters set(s) at
dates
.This is based on the sbp fits for the darkhist_zodi_m14 histograms in /proj/sot/ska/analysis/dark_current_model/dark_model.ipynb.
The actual bi-linear fits (as a function of year) to the g1, g2, g3, x_b, and ampl parameters are derived from fits and by-hand inspection of fit trending.
This is only accurate for dates > 2007.0.
- Parameters:
- dates
one or a list of date(s) in DateTime compatible format
- Returns:
- one or a list of parameter lists [g1, g2, g3, x_b, ampl]
- chandra_aca.dark_model.get_warm_fracs(warm_threshold, date='2013:001:12:00:00', T_ccd=-19.0)[source]¶
Calculate fraction of pixels in modeled dark current distribution above warm threshold(s).
- Parameters:
- warm_threshold
scalar or list of threshold(s) in e-/sec
- date
date to use for modeled dark current distribution/histogram
- T_ccd
temperature (C) of modeled dark current distribution
- Returns:
- list or scalar of warm fractions (depends on warm_threshold type)
- chandra_aca.dark_model.smooth_broken_pow(pars, x)[source]¶
Smoothed broken power-law. Pars are same as bpl1d (NOT + gaussian sigma): 1: gamma1 2: gamma2 3: x_b (break point) 4: x_r (normalization reference point) 5: ampl1
- chandra_aca.dark_model.smooth_twice_broken_pow(pars, x)[source]¶
Smoothed broken power-law. Pars are same as bpl1d (NOT + gaussian sigma): 1: gamma1 2: gamma2 3: gamma3 4: x_b (break point) 5: ampl1
- chandra_aca.dark_model.synthetic_dark_image(date, t_ccd_ref=None)[source]¶
Generate a synthetic dark current image corresponding to the specified
date
andt_ccd
.- Parameters:
- date
(DateTime compatible)
- t_ccd_ref
ACA CCD temperature
- chandra_aca.dark_model.temp_scalefac(T_ccd)[source]¶
Return the multiplicative scale factor to convert a CCD dark map from the nominal -19C temperature to the temperature T. Based on best global fit for dark current model in plot_predicted_warmpix.py. Previous value was 0.62 instead of 0.70.
If attempting to reproduce previous analysis, be aware that this is now calling chandra_aca.dark_model.dark_temp_scale and the value will be determined using the module DARK_SCALE_4C value which may differ from previous values of 1.0/0.70 or 1.0/0.62.