Cartoon of electron-beam phase-space emittance

Matlab code % Movie of generating nonlaminar beam and its phase-space ellipse as a

% function of position along beam

clear; close all;

vid = VideoWriter('electronEllipseEmittance.mp4','MPEG-4');

vid.Quality = 100;

vid.FrameRate = 30;

open(vid);

figure('units','pixels','position',[0 0 1920 1080],'ToolBar','none');

%set(0,'defaultfigurecolor',[1 1 1]); % White

set(gca,'linewidth',7);

M = 5000; % Number of emitting electrons

col = [0.3 0.4 0.7];

x = randn(M,1); % Gaussian random distribution used for position

y = randn(M,1); % Gaussian random distribution used for angle

R = 1; % ratio of normalized x and x' determines b/a of ellipse

for i = -1:0.01:1 % Number of loops (frames)

newplot;

subplot(1, 9, [7, 8, 9]);  % Last two slots of six for this plot. Used 6 and not 3 to make the gap between

% this subplot and the other smaller

hold off;

xnow = x+(y*i); % Move along beam direction from beginning of converging beam at -1

% to focus at 0, and on to spreading beam up to +1

scatter(xnow/R,R*y,10,'filled','MarkerFaceColor',col); % plot electrons in phase space

axis square % Keep scaling 1:1 for x,y

axis([-4.4 4.4 -5 5]) % axis limits

axis off

subplot(1, 9, [1, 2, 3, 4, 5, 6]) % Occupies the first four of six horizontal plot positions

newplot;

hold off;

axis square % Keep scaling 1:1 for x,y

axis off

xchord = [0*x-1 1+(0*x)]; % From zero to 1.0 in x-direction

ychord = [(x-y)/R R*(x+y)]; % From position of electron on x-axis to the end of the emitted ray

% determined by the angle generator in y

cc = jet(100);

for j = 1:2:M % Plot the rays in the x-plane

hold on

colIndex = 50+round(y(j)*100/(max(y) - min(y))); % maximize range of jet palette

if (colIndex>100)

colIndex = 100;

end

if (colIndex<1)

colIndex = 1;

end

ebeam = plot(xchord(j,:), ychord(j,:), 'color',cc(colIndex,:), 'Linewidth', 1.4);

ebeam.Color(4) = 0.5; % Semitransparent line

end

p1 = plot([i i], [-5.6 5.6], 'color', 'red', 'Linewidth', 8); % Moving vertical line along beam path

p1.Color(4) = 0.25; % Semitransparent line

p2 = plot([i+0.005 i+0.005], [-5.6 5.6], 'color', 'red', 'Linewidth', 8); % Moving vertical line along beam path

p2.Color(4) = 0.25; % Semitransparent line

hold off;

axis([-1 1 -10 10])

hold off;

% Store the frame

frame = getframe(gcf);

writeVideo(vid,frame);

end

hold off;

% Output the movie as an mpg file

close(vid);