prepic.radiation module

Classes for modelling emitted radiation from laser-plasma interaction

prepic.radiation.differential_intensity_distribution(ħω, θ, ħωc, γ)[source]

Computes the synchrotron energy distribution in frequency and solid angle.

Doubly differential intensity distribution \(\frac{d^2I}{d \hbar \omega d \Omega}\), representing the radiated energy per unit energy interval \(d \hbar \omega\) per unit solid angle \(d \Omega\).

\[\frac{d^2I}{d \hbar \omega d \Omega} = \frac{3 \alpha}{4 \pi^2} \left(\frac{\hbar \omega}{\hbar \omega_c}\right)^2 \gamma^6 \left(\frac{1}{\gamma^2} + \theta^2\right)^2 \left[K^2_{2/3}(\xi) + \frac{\theta^2}{1/\gamma^2 + \theta^2} K^2_{1/3}(\xi)\right]\]

where

\[\xi \simeq \frac{\hbar \omega}{2 \hbar \omega_c} \left(1 + \gamma^2 \theta^2 \right)^{3/2}\]
Parameters
  • ħω (float, energy) – Observation energy.

  • θ (float, angle) – Observation angle relative to the particle’s orbital plane (latitude).

  • ħωc (float, energy) – Critical synchrotron energy.

  • γ (float, dimensionless) – Electron Lorentz factor.

Returns

d2I – Doubly differential cross section.

Return type

float, dimensionless

References

Eq. (24) of [DE].

DE

Don Edwards, “Notes on Synchrotron Radiation”.

Examples

>>> d2I = differential_intensity_distribution(ħω=59.24 * u.kiloelectronvolt, θ=0.1 * u.miliradian, ħωc=197.0 * u.kiloelectronvolt, γ=4956.5 * u.dimensionless)
>>> print("{:.1f}".format(d2I))
15364.7 dimensionless
prepic.radiation.photon_frequency_distribution(ω, ωc, γ)[source]

Computes the number of photons per unit frequency interval.

Computes the number of photons per unit frequency interval, at frequency \(\omega\), per betatron oscillation and per electron, integrated over all angles.

\[ \begin{align}\begin{aligned}\frac{dN}{dy} = \frac{9 \sqrt{3}}{8 \pi} \frac{I}{\hbar \omega_c} y S(y)\\I = \frac{2}{9} \omega_c \gamma \frac{e^2}{\epsilon_0 c}\\S(y) = \int_{y=\omega/\omega_c}^{\infty} dx\, K_{5/3}(x)\end{aligned}\end{align} \]
Parameters
  • ω (float, 1/time) – Observation frequency.

  • ωc (float, 1/time) – Critical synchrotron frequency.

  • γ (float, dimensionless) – Electron Lorentz factor.

Returns

dN_over_dy – Number of photons per unit frequency interval \(y=\omega/\omega_c\).

Return type

float, dimensionless

Examples

>>> Ny = photon_frequency_distribution(ω=9e4 / u.fs, ωc=3e5 / u.fs, γ=5e3 * u.dimensionless)
>>> print("{:.1f}".format(Ny))
58.0 dimensionless
prepic.radiation.photon_angle_distribution(θ, γ)[source]

Computes the number of photons per unit solid angle.

Computes the number of photons observed at an angle \(\theta\) from the electron’s plane of oscillation, per unit solid angle, per betatron oscillation and per electron, integrated over all frequencies.

\[\frac{dN}{d\Omega} = \frac{7 e^2}{96 \pi \epsilon_0 \hbar c} \frac{\gamma^2}{(1 + \gamma^2 \theta^2)^{5 / 2}} \left(1 + \frac{5}{7} \frac{\gamma^2 \theta^2}{1 + \gamma^2 \theta^2}\right)\]
Parameters
  • γ (float, dimensionless) – Electron Lorentz factor.

  • θ (float, angle) – Observation angle relative to the particle’s orbital plane (latitude).

Returns

dN_over_dΩ – Number of photons \(N\) per solid angle \(\Omega\).

Return type

float, dimensionless

References

See [DZDS], Eq. (18), where we divided by \(\hbar \omega_c\)

DZDS

Downer, M. C., et al. Reviews of Modern Physics 90.3 (2018): 035002.

Examples

>>>  = photon_angle_distribution(θ=0.5 * u.degree, γ=5e3 * u.dimensionless)
>>> print("{:.1e}".format())
5.8e-04 dimensionless
class prepic.radiation.AnnotationText(*, text, xy, xycoords='data')[source]

Bases: object

Examples

>>> ann = AnnotationText(text="blarg", xy=(0.6, 0.9), xycoords='axes fraction')
>>> ann.text
'blarg'
class prepic.radiation.DifferentialSpectrum(radiator, npoints=50, ħω=None, θ=None)[source]

Bases: object

property doubly_differential_data
property angle_integrated_data
property energy_integrated_data
doubly_differential(fig)[source]
angle_integrated(ax, **kwargs)[source]
energy_integrated(ax, **kwargs)[source]
class prepic.radiation.Radiator(plasma)[source]

Bases: prepic.base.BaseClass

Class for estimating the properties of emitted radiation of a given laser-plasma.

τ0

Radiation-reaction time-scale.

Type

unyt_quantity

a

Scaling constant used to calculate the betatron amplitude.

Type

unyt_quantity

b

Scaling constant used to calculate the number of betatron periods.

Type

unyt_quantity

γ

Lorentz factor of accelerated electrons.

Type

unyt_quantity

Betatron oscillation amplitude.

Type

unyt_quantity

Number of betatron periods (oscillations).

Type

unyt_quantity

λu

Spatial period of (local) electron betatron oscillations.

Type

unyt_quantity

K

Betatron oscillation amplitude (strength parameter). K ≫ 1 means we are in the wiggler regime.

Type

unyt_quantity

ħωc

Critical photon energy of the synchrotron-like radiation spectrum.

Type

unyt_quantity

ħω_avg

Mean photon energy of the synchrotron-like radiation spectrum.

Type

unyt_quantity

Number of photons emitted at ħω_avg per betatron period and per electron.

Type

unyt_quantity

θ_par

Opening angle of the radiation in the plane of electron oscillations.

Type

unyt_quantity

θ_perp

Opening angle of the radiation in the plane perpendicular to electron oscillations.

Type

unyt_quantity

N_shot

Total number of radiated photons per laser shot.

Type

unyt_quantity

N_RR

Threshold number of oscillations for noticeable radiation-reaction effects.

Type

unyt_quantity

Notes

a and b were obtained by fitting the example data from http://doi.org/f4j98s. The opening angle θ_par is defined as the maximum deflection angle of the electron trajectory, such that the full width of the angular distribution of the radiated energy in the electron oscillation plane is 2×``θ_par``.

References

See [JCK], Section 14.6.

JCK

Jackson, J. D. (1999). Classical electrodynamics.

Examples

>>> import unyt as u
>>> from prepic import Plasma, Laser, GaussianBeam
>>> waist = 15 * u.micrometer
>>> mylaser = Laser.from_power(power=1 * u.petawatt, ɛL=3 * u.joule,
...                            beam=GaussianBeam(w0=waist))
>>> myplasma = Plasma(n_pe=1e18 / u.cm**3, laser=mylaser, bubble_radius=waist)
>>> myradiator = Radiator(myplasma)
>>> myradiator
<Radiator(<Plasma(1e+18 cm**(-3), <Laser(3.0 J, 2.818311836098954 fs, <GaussianBeam(15.0 µm, 0.8 µm)>)>, 15.0 µm)>)>
>>> print(myradiator)
Betatron radiation is emitted at a mean energy of <ħω> = 1475.6 keV, while the critical
energy is ħωc = 4792.0 keV. The number of photons emitted at <ħω> per betatron period
and per electron is Nᵧ = 2.6, while the total number of
betatron photons per laser shot is 4.9e+10.
The half width of the angular distribution of the radiated energy in the
electron oscillation plane is θᵣ = 5.9 mrad.
Radiation-reaction effects are negligible.
τ0 = unyt_quantity(6.26642521, 'ys')
a = unyt_quantity(1510.3, '1/sqrt(µm)')
b = unyt_quantity(1.34164079e+10, 'cm**(-3/2)')