charge_diffusion#

optika.sensors.charge_diffusion(absorption, thickness_substrate, thickness_depletion)[source]#

The standard deviation of the charge diffusion in a backilluminated CCD given by Janesick [2001].

Parameters:
  • absorption (Quantity | AbstractScalar) – The absorption coefficient of the light-sensitive layer for the incident photon.

  • thickness_substrate (Quantity | AbstractScalar) – The thickness of the light-sensitive region of the imaging sensor.

  • thickness_depletion (Quantity | AbstractScalar) – The thickness of the depletion region of the imaging sensor.

Return type:

AbstractScalar

Examples

Plot the width of the charge diffusion kernel as a function of wavelength and energy for the sensor parameters in Heymes et al. [2020].

import matplotlib.pyplot as plt
import astropy.units as u
import astropy.visualization
import named_arrays as na
import optika

# Define a grid of wavelengths
wavelength = na.geomspace(1, 10000, axis="wavelength", num=1001) * u.AA

# Convert the grid to energies as well
energy = wavelength.to(u.eV, equivalencies=u.spectral())

# Load the optical properties of silicon
si = optika.chemicals.Chemical("Si")

# Retrieve the absorption coefficient of silicon
# for the given wavelengths.
absorption = si.absorption(wavelength)

# Compute the charge diffusion
width_diffusion = optika.sensors.charge_diffusion(
    absorption=absorption,
    thickness_substrate=14 * u.um,
    thickness_depletion=2.4 * u.um,
)

# Plot the charge diffusion as a function
# of wavelength and energy
with astropy.visualization.quantity_support():
    fig, ax = plt.subplots()
    ax2 = ax.twiny()
    ax2.invert_xaxis()
    na.plt.plot(
        wavelength,
        width_diffusion,
        ax=ax,
    )
    na.plt.plot(
        energy,
        width_diffusion,
        ax=ax2,
        linestyle="None",
    )
    ax.set_xscale("log")
    ax2.set_xscale("log")
    ax.set_xlabel(f"wavelength ({ax.get_xlabel()})")
    ax.set_ylabel(f"charge diffusion ({ax.get_ylabel()})")
../_images/optika.sensors.charge_diffusion_0_0.png

Notes

The standard deviation of the charge diffusion kernel is given by Janesick [2001] as

\[\begin{split}\sigma_\text{cd}(x) = \begin{cases} x_{ff} \sqrt{1 - \frac{x}{x_{ff}}}, & 0 < x < x_{ff} \\ 0, & x_{ff} < x < x_s \end{cases}\end{split}\]

where \(x\) is the distance from the back surface at which the photon is absorbed,

\[x_{ff} = x_s - x_d\]

is the thickness of the field-free region of the sensor, \(x_s\) is the total thickness of the light-sensitive region, and \(x_d\) is the thickness of the depletion region.

The average variance of the charge diffusion kernel is then the weighted average,

\[\begin{split}\overline{\sigma}_\text{cd}^2 &= \dfrac{\displaystyle \int_0^{x_s} \left( \sigma_\text{cd}(x) \right)^2 e^{-\alpha x} dx} {\displaystyle \int_0^{x_s} e^{-\alpha x} dx} \\[1mm] &= \dfrac{\displaystyle \int_0^{x_{ff}} x_{ff}^2 \left( 1 - \frac{x}{x_{ff}} \right) e^{-\alpha x} dx} {\displaystyle \int_0^{x_s} e^{-\alpha x} dx} \\[1mm] &= \dfrac{x_{ff} \left( \alpha x_{ff} + e^{-\alpha x_{ff}} - 1 \right)} {\alpha \left( 1 - e^{-\alpha x_s} \right)}\end{split}\]

where \(\alpha\) is the absorption coefficient of the light-sensitive layer.