DUE November 30
The Alternating Gradient Synchrotron (AGS) at Brookhaven National Laboratory operates at a top energy of 24 GeV (Kinetic Energy) and is used as the injector to the Relativistic Heavy Ion Collider (RHIC). Its injection energy was designed to be 200 MeV, below its transition energy. We can use the following parameters for the AGS at its design injection energy:
\(V\) = 0.3 MV; \(h\) = 12; \(E_s\) = 1.138 GeV; \(\gamma_t\) = 8.5
For beam contained within a stationary bucket at this energy, what synchronous phase must be chosen?
Create a function which accepts a vector of \((\phi,\Delta E/E_s)_i\) and returns the vector \((\phi,\Delta E/E_s)_f\) corresponding to one turn about the synchrotron, say at the exit of the RF acceleration system, given the above parameters.
Take a proton that starts with initial \(\Delta E/E_s\) = 0 and an initial phase \(\phi = \pi/20\). Make a plot in \(\phi-\Delta E/E_s\) phase space of the particle motion over 2000 turns.
R has a built-in Fast Fourier Transform (FFT) function that allows one to analyze data for frequency content. The frequency (or, in this case, the “synchrotron tune”) of the particle’s motion can be estimated by looking at what tune value corresponds to the peak of the FFT coefficients. The following is a code chunck that creates a function to perform an FFT on a set of data (x
), and finds the value of the peak coefficient:
# Fast Fourier analyze the data to extract a "tune"
fftpeak = function(x){
zz_x = abs(fft(x))
f_x = c(1:length(x))/length(x)
f_xfft = f_x[ max.col( t( cbind( f_x, zz_x) ) )[2] ]
nu_x = min(f_xfft, (1-f_xfft))
nu_x
}
ntr = c(1:500)
xtrial = cos(2*pi*0.3812*ntr) # ie., cos(2pi * tune * n)
fftpeak(xtrial)
## [1] 0.384
(Try varying the number of points used to see how close the FFT frequency comes to the original value.)
Again, track a particle for 2000 turns (Note: FFT calculations often perform best when using \(2^N\) data points) which has initial conditions \(\phi_0 = \pi/20\) and \(\Delta E_0/E_s\) = 0. This time, keep track of \(\phi_n\) each turn.
What synchrotron tune does an FFT analysis of the phase data (\(\phi_n\)) show?
How does this compare with the analytically predicted value?
Try varying the number of turns tracked, such as 250, 500, 1000, 2000, 4000, 8000, etc. For what number of turns is the FFT result within 1% of the predicted result?
How does the tune behave? Make a plot of \(\nu_s\) vs. \(\phi_0\) for the range within the stable region (separatrix).
What can you say about the particle motion on or very near the separatrix?
Let’s model the trajectory of a particle in an otherwise ideal storage ring but with a single sextupole present. The ideal betatron tune is set to \(\nu\) = 0.420809. As shown in class, the mapping of phase space variables for a single turn around the ring can be expressed with the following function:
cn = cos(2*pi*nu)
sn = sin(2*pi*nu)
SextTrack = function(U){
ac = U[1]
as = U[2]
U[1] = ac*cn + (as-ac^2)*sn
U[2] = -ac*sn + (as-ac^2)*cn
return(U)
}
x0 = 0
p0 = c(0.05,0.1,0.2,0.5,1.0,1.4)
Hint: For the sake of comparison, make a series of plots, with equal axes (use asp=1
) and arrange in a grid using the par(mfrow=c(3,2))
function in R prior to plotting, where c(3,2)
indicates there are three rows of two plots each. Naturally, you may wish to select different numbers for these. (If you use ggplot2, etc., there are other ways of setting up a grid; but par
works in base R.)
Create a distribution of 2000 particles each with coordinates \(x\) and \(p\), with mean(x) = mean(p) = 0
, and sd(x) = sd(p) = 0.05
.
Give all the particles of the entire distribution a “kick” in the \(p\) coordinate by same amount, say, kck = 0.05
.
Now track the entire distribution for 1000 turns, keeping tally of xave[n] = mean(x)
for each of the n
turns. We can imagine that the data xave
are results of average beam position measurements at a monitor near the sextupole, taken once per revolution.
Make plots of xave
vs. n
for the following conditions:
plot | sd(x)=sd(p) |
kck |
---|---|---|
1 | 0.05 | 0.05 |
2 | 0.05 | 0.10 |
3 | 0.05 | 0.20 |
4 | 0.10 | 0.20 |
5 | 0.10 | 0.50 |
6 | 0.10 | 1.00 |
7 | 0.20 | 0.50 |
8 | 0.20 | 1.00 |
9 | 0.20 | 1.40 |
xave
above) and select only the last several hundred turns. (Note: This can be done in R by the following command: xend = xave[200:1000]
, for example.) Perform an FFT on this subset of data and comment on the answer. How does the frequency measured coincide with the phase space for this set of conditions?