11. Synchrotron Radiation#
11.1. History#
Synchrotron radiation was first observed in GE synchrotron on 1946.

Fig. 11.1 GE synchrotron#

Fig. 11.2 First paper of SR#
Then it was realized as the major obstacle to achieve higher electron energy in a ring accelerator. Since the radiation power is scaled as:
11.2. The Lienard- Wiechert Potential#
We are interested in the E-M field generated by a moving charged particle Suppose the charge particle has determined trajectory
from
So the
From the wave form of the Maxwell equation of one particle:
Here, the charged density and current density are
The scalar and vector potential are
Then the potentials reduces to
Both are evaluated at time
Show code cell source
import numpy as np
import matplotlib.pyplot as plt
%matplotlib widget
def cir_rtd_potential(theta, radius=1, boundary=10, ngrid=300, gamma=1000):
beta_amp=np.sqrt(1-1/gamma**2)
position=np.array([np.cos(theta), np.sin(theta)])*radius
velocity=np.array([np.cos(theta+np.pi/2), np.sin(theta+np.pi/2)])*beta_amp
x=np.linspace(-boundary/2.0, boundary/2.0, ngrid)
y=np.linspace(-boundary/2.0, boundary/2.0, ngrid)
xx,yy=np.meshgrid(x,y)
rdist=np.sqrt((xx-position[0])**2+(yy-position[1])**2)
betadotr=(velocity[0]*(xx-position[0])+velocity[1]*(yy-position[1]))/rdist
phi=1/(1-betadotr)/rdist
return xx, yy, phi
r=1
theta=3*np.pi/12
xx, yy, phi=cir_rtd_potential(theta, radius=r, gamma=500)
fig, ax=plt.subplots()
ax.set_xlim(-5,5)
ax.set_ylim(-5,5)
circle = plt.Circle( (0., 0. ), r ,fill = False, color='C3', alpha=0.5 )
ax.add_artist(circle)
ax.set_aspect('equal')
mask=xx*xx+yy*yy>1.3*r*r
ax.contour(xx, yy, phi, np.linspace(np.min(phi[mask]**0.5), np.max(phi[mask]**0.5),20, endpoint=True)**2, alpha=0.5)
ax.scatter([r*np.cos(theta),], [r*np.sin(theta),], c='C2', alpha=0.5)
<matplotlib.collections.PathCollection at 0x10eae47a0>
The fields therefore can be calculated as from
To evaluate these differential operations, it is important to know the following relations:
And we know that
Therefore we can gather all useful relations below:
The the electric field gives:
The magnetic field gives:
The first term does not involve acceleration, which described a ‘uniformly’ moving charge (see “The classical Theory of Fields” by Landau and Lifshitz). After a Lorentz transform, tt is just the static electric field from a charged particle. The emitted energy from this term is zero. Therefore only the contribution from the second term ‘radiates’ out, which is consequence of
11.3. Radiation Field and Flux#
The Poynting vector of the radiation term gives (using the fact
The power dissipates in the unit solid angle gives, evalutated as source is :
11.3.1. Non-relativistic limit#
In this limit, the approximation
Then the power flux gives:
Here we establish the spherical coordinate system along
Which reduces to the Larmor’s formula
11.3.2. General Case#
In accelerator, we are interested in relativistic case. We start with
We need to establish a spherical coordinate system to go further. Let’s assume
Show code cell source
import sympy
from sympy.physics.vector import ReferenceFrame
sympy.init_printing()
bth,th,ph=sympy.symbols(r"\Theta, \theta, \phi")
beta,dbeta=sympy.symbols(r"\beta, \dot{\beta}")
ref=ReferenceFrame('N')
beta=1*ref.z*beta
beta_dot=(sympy.sin(bth)*ref.x+sympy.cos(bth)*ref.z)*dbeta
r_hat=sympy.sin(th)*sympy.cos(ph)*ref.x+sympy.sin(th)*sympy.sin(ph)*ref.y+sympy.cos(th)*ref.z
temp1=r_hat.dot(beta_dot)*(r_hat-beta)-(1-r_hat.dot(beta))*beta_dot
temp1=sympy.simplify(temp1.magnitude()*temp1.magnitude())
temp2=(1-r_hat.dot(beta))*(1-r_hat.dot(beta))
temp2*=temp2
temp2*=(1-r_hat.dot(beta))
ang_dep=temp1/temp2
sympy.simplify(ang_dep.subs(bth,sympy.pi/2).subs(ph,ph))
int1=sympy.integrate(temp1/temp2, (ph,0,2*sympy.pi))
u,v=sympy.symbols(r"u,v")
int2=sympy.simplify(int1.subs(th, sympy.acos(u)))
#int2=sympy.simplify(int2.subs(u, (1+v)/ba))
intg1=sympy.simplify(sympy.integrate(int2, u))
sympy.simplify(intg1.subs(u,1)-intg1.subs(u,-1))

We have derived the total power that emitted by an accelerated beam. The first term in the parentheses is the contribution from beam acceleration. The second term is the contribution from the bending term.
11.3.2.1. Radiation in linac#
In a linac, the total radiation power is:
It is more convenient to convert the change of velocity to the energy. From
Therefore:
The angular dependence becomes:
when the beam is ultra-relativistic,
The maximum angle locates at
Show code cell source
import matplotlib.pyplot as plt
import numpy as np
%matplotlib widget
fig,ax=plt.subplots()
ax.set_xlabel(r"$\theta$")
ax.set_ylabel(r"Power")
def power_dis(theta, beta):
return np.sin(theta)*np.sin(theta)/np.power(1.0-beta*np.cos(theta),5.0)
theta=np.linspace(0,np.pi/4,200)
betas=[0.8, 0.9,0.95,0.99]
for be in betas:
ax.semilogy(theta, power_dis(theta,be), label=r'$\beta$={}'.format(be))
ax.legend(loc='best');
Show code cell source
import matplotlib.pyplot as plt
import numpy as np
beta=0.9999
z=np.linspace(-2,20.0,1000)
x=np.linspace(-1.0,1.0,400)
zz,xx=np.meshgrid(z,x)
theta=np.arctan2(xx,zz)
r2=zz*zz+xx*xx
srp=np.sin(theta)*np.sin(theta)/np.power(1.0-beta*np.cos(theta),5.0)/r2
fig,ax=plt.subplots()
ax.set_ylabel("x [m]")
ax.set_xlabel("z [m]")
con=ax.contour(zz,xx,np.log(srp))
ax.clabel(con);
11.3.2.2. Radiation in dipole#
In the magnetic field, the velocity only changes its direction,
Then the total power is:
We try to re-express the power in terms of the classical radius
Then
For different particle species the constant
The total energy radiated of the ring will be:
The angular distribution can be found as:
Show code cell source
import matplotlib.pyplot as plt
import numpy as np
beta=0.9999
gamma=1/np.sqrt(1-beta*beta)
print(gamma)
z=np.linspace(-2,20.0,1000)
x=np.linspace(-1.0,1.0,1000)
zz,xx=np.meshgrid(z,x)
theta=np.arctan2(xx,zz)
r2=zz*zz+xx*xx
sphi=1
sphith=sphi*np.sin(theta)/gamma
cth=np.cos(theta)
srp=(sphith*sphith+(beta-cth)*(beta-cth))/np.power(1.0-beta*cth,5.0)/r2
fig,ax=plt.subplots()
ax.set_ylabel("x [m]")
ax.set_xlabel("z [m]")
con=ax.contour(zz,xx,np.log(srp))
ax.clabel(con);
70.71244595191452
In the relativistic limit, we have
The power will drop significantly when
11.4. Radiation Spectrum#
11.4.1. Qualitative analysis#

Fig. 11.3 Cartoon of an ESR#
We are interested in an electron storage ring. The retarded time interval of shining the SR cone to a far field target is
Convert to the observer’s time:
Therefore the frequency content is approximated with:
11.4.2. Quantitative analysis#
To study the frequency spectrum of the synchrotron radiation, we return to the flux, evaluated at the observation point gives
We define an amplitude radiation function which is the square root of the flux:
Then the frequency content is given by Fourier transform:
Now we have to use far field approximation to proceed. We know that
Then the frequency spectrum becomes
Here we use the relation below and integration by part:
Here we found the frequency spectrum of the radiation amplitude. However, what we can measure is the total radiation energy per solid angle:
Therefore we will then focus on the spectrum of the energy:

Fig. 11.4 Coordinates for calculation#
Now we concentrate on the spectrum of an electron storage ring with coordinate as shown.
Assume
Here,
And the unit vector
We may only consider the tangential plane (
Also we use the following assumption:
small cone size
short retarded time interval
We have:
and
Now, we redefine the variable
Here we define the critical frequency of synchrotron radiation:
Then, we have:
The spectrum of the energy flux finally reduces to:
Clearly, the total frequency spectrum of the radiation intensity consists the contribution from two transverse components
Then the frequency spectrum becomes
We are interest in the frequency range of the characteristic frequency of the SR. Using the definition of critical frequency,
The two terms of modified Bessel function corresponds to the contribution from the horizontal and vertical polarized radiation field respectively.
We see that in the bending plane,
Show code cell source
import matplotlib.pyplot as plt
import numpy as np
import scipy.special as special
%matplotlib widget
fig, ax=plt.subplots()
ax.set_xlim(1e-5,10)
ax.set_ylim(1e-8,1)
ax.set_xlabel(r'$\omega/\omega_c$')
ax.set_ylabel(r'$\sim dI/ d\omega$')
omega_ratio=np.logspace(-6,1,1000)
for a in [0,1,2,5]:
xi=omega_ratio/2.0*(1+a*a)**1.5
k23=special.kv(2.0/3,xi)
k13=special.kv(1.0/3,xi)
Igx=xi*xi*k23*k23
Igy=xi*xi*k13*k13
ax.loglog(omega_ratio, (Igx+a*a*Igy/(1+a*a))/(1+a*a), label=r'$\gamma\theta={}$'.format(a))
ax.legend(loc='best');
We see that the spectrum is broad band and sudden drops when the the frequency exceeds the critical frequency.
Recall that:
Therefore, the energy spectrum can be achieved by integrating all solid angles:
By defining
which satisfy
Show code cell source
import matplotlib.pyplot as plt
import numpy as np
import scipy.special as special
import pickle
%matplotlib widget
omega_ratio=np.logspace(-6,1,10001)
xi=np.sqrt((omega_ratio[:-1]*omega_ratio[1:]))
k53=special.kv(5.0/3,xi)
diff=np.diff(omega_ratio)
allsum=np.sum(k53*diff)
intg=allsum-np.cumsum(k53*diff)
s_xi=xi*intg*9*np.sqrt(3)/8/np.pi
int2=np.sum(s_xi*diff)
fig, ax=plt.subplots()
ax.set_xlim(1e-6,20)
#ax.set_ylim(1e-8,1)
ax.set_xlabel(r'$\omega/\omega_c$')
ax.set_ylabel(r'$S(\omega/\omega_c)$')
omega_ratio=np.logspace(-6,1,1000)
ax.loglog(xi, s_xi, label=r'$S(\omega/\omega_c)$')
ax.legend(loc='best')
print("The integral of S function is:", int2);
The integral of S function is: 0.9976699617994194
The total energy can be also attained from the frequency domain integration.
We return to the earlier SR power from time domain integral.
11.5. Quantum Fluctuation#
The photon emission in the SR process is a quantum effect. The energy
Therefore: the photon number density gives:
here
We get the total emitted photon in one revolution gives:
Here
The average emitted photon gives energy by
And the variation gives by
We can summarized the synchrotron radiation parameters’s dependence on energy:
Quantities |
Power of energy |
---|---|
Radiation Power (fix |
|
Radiation Power (fix field) |
|
Number of Photon |
|
Average photon energy |
|
Photon energy variation |
|
Accumulated photon energy variation |