
5.Анализ результатов.
А) Распределение полярного угла, для изотропного источника без фантома представляющая собой лепесток, испытала искажение(значительный спад) в области углов 90 градусов ввиду того,что в этом направлении толщина фантома значительно больше и испытать вероятность столкновения значительно выше.
Б) Распределение азимутального угла почти равномерное в случае, когда источник находится в центре. В случае, когда источник в углу оно смещается в сторону ближайшей границы фантома. Это объясняется тем же что и А)
В) Энергетическое распределение имеет ярко выраженный фотопик а также небольшую часть спекта рядом с ним. Это объясняется попаданием в детектор частиц, испытавших взаимодействие
Г) Распределение событий по детектору представляет из себя широкое пятно. Это обьясняется тем, что угол разлета гамма-квантов изотропен и избежать этого можно путем установки коллиматоров.
Вывод
Данная модель дает лишь частичные представления о работе ПЭТ-томографа. При моделировании рождения гамма-квантов, мы предположили, что из одной точки аннигиляции позитрона вылетает 300 пар гамма-квантов, хотя в реальной жизни их всего 2.Сделано это было в целях экономии времени расчетов. При моделировании взаимодействия с детектором, не учитывалась аппаратная линия детектора, из-за этого в распределении по энергии нет «плавных огибающих» вокруг 0,511 кэВ.
По полученному распределению событий в детекторе можно было определить пространственное разрешение: через два события от гамма-квантов, разлетающихся изначально на 180 градусов, проводится прямая и вычисляется ее угол наклона и расстояние от прямой до центра. Полученные данные являются входящими для функции radon, которая на выходе выдает изображение нашей точки. Сравнивая их, можно оценить пространственное разрешение.
Дозовую нагрузку можно было оценить по энергии, которую теряли частицы, будучи в фантоме. При каждом акте взаимодействия фиксируется координата события и потерянная энергия. Затем, суммируя энергию по координатам, можно определить распределение дозы.
Рассеяние излучения можно определить, сравнивая число частиц, вылетевших из фантома и число частиц, оказавшихся в детекторе.
К сожалению, данные цели в задаче достигнуты не были из-за нехватки времени а также из-за первоначальной нечеткости понимания целей.
Приложение
Текст программы:
clc;
global xx k teta_escape phi_escape st_det E_det NomerSobytiya BazaDannyx
st=0;
k=0;
ntotal=0;
xx=0;
N0=100;
NomerSobytiya=0;
BazaDannyx=zeros(1000,5);
tl = zeros(1,1000);
teta_escape=0;%zeros(1,N0);
st_det=0;
phi_escape=0;
E_det=0;
a1=[0 0.031185031 0.124740125 0.301455301 0.498960499 0.675675676 0.810810811 0.904365904 0.966735967 0.997920998 1];
a2=[0 0.1732 0.3464 0.5196 0.6928 0.866 1.0392 1.2124 1.3856 1.5588 1.732 ];
Charge_h2O = 7.5;
AWeight_h2O = 18;
h = waitbar(0,'1','Name','Computing...',...
'CreateCancelBtn',...
'setappdata(gcbf,''canceling'',1)');
setappdata(h,'canceling',0)
set(0,'ShowHiddenHandles','on')
while ntotal<N0
if getappdata(h,'canceling')
break
end
waitbar(ntotal / N0, h, sprintf('%4.0f %%', ntotal * 100 / N0))
eny=rand;
enx=interp1(a1,a2,eny);
Om=izoomega;
Omx=Om(1);
Omy=Om(2);
Omz=Om(3);
x=0;
y=0;
z=0;
load pet
while enx > 0.01
deltaS=(enx * 0.01) / (interp1(pet(:,1),pet(:,2),enx));
x = x + Omx*deltaS;
y = y + Omy*deltaS;
z = z + Omz*deltaS;
gamma = (enx + 0.511) / 0.511;
beta = ((gamma^2 - 1) / gamma^2)^(0.5);
impulseP = (((enx)^2+2*(enx)*0.511)^(0.5))/(3*10^10);
v = beta * 3*10^10;
X_C_2 = 0.1569 * (Charge_h2O^2 * deltaS)/(impulseP^2 * v^2 * AWeight_h2O);
RightPart = log((6700 * Charge_h2O^(4/3) * deltaS / AWeight_h2O) / (beta^2 + 1.77*(10^(-4)) * Charge_h2O^2));
B_n1 = 23;
B_n = 24;
while abs(B_n1 - B_n) > 0.01
B_n1 = B_n - (log(B_n) - B_n + RightPart) / (1/B_n -1);
B_n = B_n1;
end;
TETA_1_C = sqrt(X_C_2)*sqrt(B_n - 1.25);
asd1=(1-(0.827/B_n))*(1-exp((-(pi/TETA_1_C).^2)));
Ptetr = rand;
Ptet = zeros(1,3141);
i = 1;
Ptetn = 0;
while Ptetn < Ptetr
Ptet(i+1) = (1-(0.827/B_n))*(1-exp((-(i*0.001/TETA_1_C)^2)))/asd1;
Ptetn = Ptet(i+1);
i = i+1;
end
%для построения графика функции вероятности энергии позитрона
%teta=0:0.001:3.14;
%plot(teta,Ptet);
tet = i * 0.001;
psi=rand * 2 * pi;
mu = cos(tet);
Omxn=((1-mu^2)/(1-Omz^2))^0.5*(Omx*Omz*cos(psi)-Omy*sin(psi))+Omx*mu;
Omyn=((1-mu^2)/(1-Omz^2))^0.5*(Omy*Omz*cos(psi)-Omx*sin(psi))+Omy*mu;
Omzn=-((1-mu^2)*(1-Omz^2))^0.5*cos(psi)+Omz*mu;
Omx=Omxn;
Omy=Omyn;
Omz=Omzn;
enx = enx - 0.01 * enx;
%для построения траектории
%k = k + 1;
%ix(k)=x;
%iy(k)=y;
end
%для построения траектории
%plot(ix,iy);
tl(ntotal+1) = sqrt(x^2 + y^2 + z^2);
ntotal=ntotal+1;
xg1 = x;
yg1 = y;
zg1 = z;
xg2 = x;
yg2 = y;
zg2 = z;
u=0;
for u = 1:300
Om=izoomega;
Omg1x = Om(1);
Omg1y = Om(2);
Omg1z = Om(3);
Omg2x = -Om(1);
Omg2y = -Om(2);
Omg2z = -Om(3);
r = [x y z];
NomerSobytiya=NomerSobytiya+1;
Model(r, Om(1), Om(2) ,Om(3) ,0.511);
Model(r, -Om(1), -Om(2) ,Om(3) ,0.511);
end;
end;
delete(get(0,'Children'))
%qwe = [0.17 0.18 0.19 0.2];
BazaDannyx2=zeros(xx,5);
n2=0;
BazaDannyx=BazaDannyx(1:xx,:);
for i=2:xx-1
if BazaDannyx(i,5) == (BazaDannyx(i-1,5))
if BazaDannyx(i,1)*BazaDannyx(i-1,1) <0% | BazaDannyx(i+1,5))
n2=n2+2;
BazaDannyx2(n2,:) = BazaDannyx(i,:);
BazaDannyx2(n2-1,:) = BazaDannyx(i-1,:);
end;
end;
end;
BazaDannyx2=BazaDannyx2(1:n2,:);
Bazadannyx3=zeros(50,76);
i2=0;
j2=0;
k2=0;
for i2=1:n2
for j2=1:51
for k2=1:75
if (BazaDannyx2(i2,2)>j2-25 && BazaDannyx2(i2,2)<j2-20)
if (BazaDannyx2(i2,3)>k2-37.5 && BazaDannyx2(i2,3)<k2-32.5)
%Bazadannyx3(i2,1)= j2;
%Bazadannyx3(i2,2)= j2;
Bazadannyx3(j2,k2)= Bazadannyx3(j2,k2)+BazaDannyx2(i2,4);
end;
end;
end;
end;
end;
figure(1);
subplot(2,2,3); hist(BazaDannyx2(:,4),50);
title('raspredelenie energii viletayushih chastic');
xlabel('E,Mev'); ylabel('n');
dphi=0:2*pi/60:2*pi;
subplot(2,2,2); rose(phi_escape,dphi);
title('uglovoe raspredelenie po phi');
dtetta=-1:0.05:1;
subplot(2,2,4);
image(Bazadannyx3);
%hist(BazaDannyx2(:,2),50);
%plot(adin);
title('koordinata');
xlabel('y'); ylabel('n');
dt=0:pi/30:pi;
subplot(2,2,1);
rose(teta_escape,dt);
title('uglovoe raspredelenie po theta');
warndlg(sprintf('Вылетело фотонов: %4.0f', xx),'')