Вы находитесь на странице: 1из 4

clear all;

clc;
lxy=2; %�������� ������� � � �� (������) �� x,y
lz=0.4; %�������� ������� � � �� (������) �� z
imm=0;
for mmm=1:10000
x=rand*lxy; %���������� � �� (� ������) ����� ����� �����-������ � �������
y=rand*lxy;
z=0.002;
wx=rand-0.5; %�������� �������, �������� ���������� ������� �����-������ ��
�������������� ���
wy=rand-0.5;%.003;
wz=rand*0.08-0.04;%.004;
W=sqrt(wx^2+wy^2+wz^2);
wx=wx/W;
wy=wy/W;
wz=wz/W;
% function [exitmas, viletmas]=gamma_interaction(lxy, lz, x,y,z, wx,wy,wz);
%������������, ��� ����������� ������������ �� 3-�� ������ �����������
%������� "������ �������� ������ ������", �� ����, ��� �� ������� ����
%��������, � ������� �� ���������� ������������� ��������������. �
%���������, ������ �����, �������� ������, �������� �����, ������� ������
global n
flag=0;
a=10; %����� �������� �� x,y
b=10; %����� �������� �� Z
% n=zeros (a+1,a+1,b+1,5);
SumSigma=zeros(5);
sigma=zeros(5);
nxyz=zeros(5);
exitmas=zeros(4,5);
viletmas=zeros(1,7);
i=0;

maxx=lxy;
maxy=lxy;
maxz=lz;
minx=0;
miny=0;
minz=0;
% for i = 1:a+1
% for j = 1:a+1
% for k = 1:b+1
% for s = 1:5
% % n(i,j,k,s)=10^23*rand(1);
% n(i,j,k,s)=10e23;
% end;
% end;
% end;
% end;
% n(a+1,a+1,b+1,1:5)=0;
n(1:5)=1e23; % ����������� �� ��� ����������� �������
n; %������ ���������� ������ ������������
% dl=(wx^2+wy^2+wz^2)^(1/2); %����� ����, �� ������ �� ������� ����� ����������
dl=min(lxy,lz)/10; %����� ����, �� ������ �� ������� ����� ����������
Er=0.511; %�������� ������ �����-������ � ���
Ep=0;
Emin=0.005; %�������� �������, ��� ������� ������� ��� �����-����� ���������
Ze=[1,7,12,16,80]; %���� �����
for i = 1:5
SumSigma(i)=sigmaF(Er,Ze(i))+sigmaK(Er,Ze(i));
end;
kxy=lxy/a; %����������� ��������� ������ ������ � ������� �����
kz=lz/b;

s=1:5;
sigma(s)= SumSigma(s).*n(s); %���������������� ������� � ����� ��� ��������
�����-����� �� s-�� ��������
MacroSigma = sum(sigma(s)); %���������������� ������� � �����, ���������
ii=0;
flag2=1; %��������� ������ �� �����/������������� ������ ������.
while (Er>Emin) & (x<=lxy) & (x>=0) & (y<=lxy) & (y>=0) & (z<=lz) & (z>=0)%
(flag2==1);
tau=-log(rand(1)); %�������� ���������� ������������ �������
t=0;
flag1=1;
% while (x<=lxy) & (x>=0) & (y<=lxy) & (y>=0) & (z<=lz) & (z>=0) & (flag1==1);
if tau>dl*MacroSigma
tau=tau-dl*MacroSigma;
s=1:5;
% sigma(s)= SumSigma(s).*interp3(n(:,:,:,s),x/kxy,y/kxy,z/kz);
%���������������� ������� � ����� ��� �������� �����-����� �� s-�� ��������
sigma(s)= SumSigma(s).*n(s); %���������������� ������� � ����� ���
�������� �����-����� �� s-�� ��������
MacroSigma= sum(sigma(s)); %���������������� ������� � �����,
���������
x=x+wx*dl;
y=y+wy*dl;
z=z+wz*dl;
t=t+dl;
flag2=0; %��������� ������ �� �����
flag1=1;
else
t=t+tau/MacroSigma;
x=x+t*abs(wx);
y=y+t*abs(wy);
z=z+t*abs(wz);
flag2=1; %��������� ������������� ������ �������
flag1=0;
end;
% end; %while ... flag1
%�������� ����������� �����, �� ������� ���������� ��������������
%����������� i
for i = 1:5
kElem(i)=sigma(i)/MacroSigma;
end;
rnd4=rand(1);
if (0<rnd4) & (rnd4<kElem(1))
i=1;
else
if (kElem(1)<rnd4) & (rnd4<(kElem(1)+kElem(2)))
i=2;
else
if ((kElem(1)+kElem(2))<rnd4) & (rnd4<(kElem(1)+kElem(2)+kElem(3)))
i=3;
else
if ((kElem(1)+kElem(2)+kElem(3))<rnd4) &
(rnd4<(kElem(1)+kElem(2)+kElem(3)+kElem(4)))
i=4;
else
i=5;
end;
end;
end;
end;
if (flag2==1)
rnd5=rand(1);
SigmaElem=sigmaF(Er,Ze(i))+sigmaK(Er,Ze(i));
if (0<rnd5) & (rnd5<=(sigmaK(Er,Ze(i))/SigmaElem))
Er0=Er;
[Er,wx,wy,wz]=kompton(Er,wx,wy,wz);
% if (Er0-Er) > Er0/10
ii=ii+1;
exitmas(1,ii)=x;
exitmas(2,ii)=y;
exitmas(3,ii)=z;
exitmas(4,ii)=Er0-Er;
% end
% x=x1;
% y=y1;
% z=z1;
% [x y z]
% for i = 1:5
% SumSigma(i)=sigmaF(Er,Ze(i))+sigmaK(Er,Ze(i));
% end;
else
% Ep=Ep+Er;
Ep=Er;
exitmas(1,i)=x;
exitmas(2,i)=y;
exitmas(3,i)=z;
exitmas(4,i)=Ep;
end;

else
% if x>lxy
% viletmas(1,1)=floor(x);
% else
% if x<0
% viletmas(1,1)=ceil(x);
% else
% viletmas(1,1)=x;
% end;
% end;
% if y>lxy
% viletmas(1,2)=floor(y);
% else
% if y<0
% viletmas(1,2)=ceil(y);
% else
% viletmas(1,2)=y;
% end;
% end;
% if z>lz
% viletmas(1,3)=floor(z);
% else
% if z<0
% viletmas(1,3)=ceil(z);
% else
% viletmas(1,3)=z;
% end;
% end;
viletmas(1,1)=x;
viletmas(1,2)=y;
viletmas(1,3)=z;
viletmas(1,4)=wx;
viletmas(1,5)=wy;
viletmas(1,6)=wz;
viletmas(1,7)=Er;
imm=imm+1;
% E_out(imm)=Er;
Wz_out(imm)=wz;
end;

end;
% exitmas
% viletmas

mmm
end %for mmm=1:N_gamma

% hist(E_out,20)
% hist(Wz_out,20)
j=0;
for i=1:length(Wz_out)
if abs(Wz_out(i))< 0.04
j=j+1;
W(j)=Wz_out(i);
end
end
hist(W,10)