Add analysis of errors based on ray-tracing
This commit is contained in:
		@@ -34,25 +34,25 @@ pp = [0, 0, 0]; % [m]
 | 
			
		||||
np = [cos(pi/2-theta), 0, sin(pi/2-theta)];
 | 
			
		||||
 | 
			
		||||
%% Reflected beam
 | 
			
		||||
[p2, s2] = get_plane_reflection(p1, s1, pp, np);
 | 
			
		||||
[p2, s2] = getPlaneReflection(p1, s1, pp, np);
 | 
			
		||||
 | 
			
		||||
%% Secondary Mirror
 | 
			
		||||
ps = pp ...
 | 
			
		||||
     + 0.07*[cos(theta), 0, -sin(theta)] ... % x offset (does not matter a lot)
 | 
			
		||||
     + 0.032*[cos(theta), 0, -sin(theta)] ... % x offset (does not matter a lot)
 | 
			
		||||
     - np*10e-3./(2*cos(theta)) ... % Theoretical offset
 | 
			
		||||
     + np*args.dz; % Add error in distance
 | 
			
		||||
 | 
			
		||||
ns = [Rdry*Rdrx*[cos(pi/2-theta), 0, sin(pi/2-theta)]']'; % Normal
 | 
			
		||||
 | 
			
		||||
%% Output Beam
 | 
			
		||||
[p3, s3] = get_plane_reflection(p2, s2, ps, ns);
 | 
			
		||||
[p3, s3] = getPlaneReflection(p2, s2, ps, ns);
 | 
			
		||||
 | 
			
		||||
%% Detector
 | 
			
		||||
pd = [1, 0, 0]; % [m]
 | 
			
		||||
nd = [-1, 0, 0];
 | 
			
		||||
 | 
			
		||||
%% Get beam position on the decector
 | 
			
		||||
p4 = get_plane_reflection(p3, s3, pd, nd);
 | 
			
		||||
p4 = getPlaneReflection(p3, s3, pd, nd);
 | 
			
		||||
 | 
			
		||||
results = struct();
 | 
			
		||||
% Beam position and orientations
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
function [p_reflect, s_reflect] = get_plane_reflection(p_in, s_in, p_plane, n_plane)
 | 
			
		||||
% get_plane_reflection -
 | 
			
		||||
function [p_reflect, s_reflect] = getPlaneReflection(p_in, s_in, p_plane, n_plane)
 | 
			
		||||
% getPlaneReflection -
 | 
			
		||||
%
 | 
			
		||||
% Syntax: [p_reflect, s_reflect] = get_plane_reflection(p_in, s_in, p_plane, n_plane)
 | 
			
		||||
% Syntax: [p_reflect, s_reflect] = getPlaneReflection(p_in, s_in, p_plane, n_plane)
 | 
			
		||||
%
 | 
			
		||||
% Inputs:
 | 
			
		||||
%    - p_in, s_in, p_plane, n_plane -
 | 
			
		||||
@@ -9,6 +9,6 @@ function [] = plotBeamPath(results)
 | 
			
		||||
% Outputs:
 | 
			
		||||
%    - in_data -
 | 
			
		||||
 | 
			
		||||
plot3([results.p1(1), results.p2(1)],[results.p1(2), results.p2(2)], [results.p1(3), results.p2(3)])
 | 
			
		||||
plot3([results.p2(1), results.p3(1)],[results.p2(2), results.p3(2)], [results.p2(3), results.p3(3)])
 | 
			
		||||
plot3([results.p3(1), results.p4(1)],[results.p3(2), results.p4(2)], [results.p3(3), results.p4(3)])
 | 
			
		||||
plot3(100*[results.p1(1), results.p2(1)],100*[results.p1(2), results.p2(2)], 100*[results.p1(3), results.p2(3)], 'linewidth', 0.5)
 | 
			
		||||
plot3(100*[results.p2(1), results.p3(1)],100*[results.p2(2), results.p3(2)], 100*[results.p2(3), results.p3(3)], 'linewidth', 0.5)
 | 
			
		||||
plot3(100*[results.p3(1), results.p4(1)],100*[results.p3(2), results.p4(2)], 100*[results.p3(3), results.p4(3)], 'linewidth', 0.5)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										37
									
								
								matlab/src/plotCrystals.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								matlab/src/plotCrystals.m
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
			
		||||
function [] = plotCrystals(results, args)
 | 
			
		||||
% plotCrystals -
 | 
			
		||||
%
 | 
			
		||||
% Syntax: [in_data] = plotCrystals(drx, dry, dz, theta, )
 | 
			
		||||
%
 | 
			
		||||
% Inputs:
 | 
			
		||||
%    - drx, dry, dz, theta,  -
 | 
			
		||||
%
 | 
			
		||||
% Outputs:
 | 
			
		||||
%    - in_data -
 | 
			
		||||
 | 
			
		||||
arguments
 | 
			
		||||
    results
 | 
			
		||||
    args.color (3,1) double {mustBeNumeric} = [1;1;1]
 | 
			
		||||
    args.alpha (1,1) double {mustBeNumeric} = 1
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
z = results.np;
 | 
			
		||||
y = [0,1,0];
 | 
			
		||||
x = cross(y,z);
 | 
			
		||||
xtal1_rectangle = [results.pp + 0.02/2*y + 0.035/2*x;
 | 
			
		||||
                   results.pp - 0.02/2*y + 0.035/2*x;
 | 
			
		||||
                   results.pp - 0.02/2*y - 0.035/2*x;
 | 
			
		||||
                   results.pp + 0.02/2*y - 0.035/2*x];
 | 
			
		||||
 | 
			
		||||
patch(100*xtal1_rectangle(:,1), 100*xtal1_rectangle(:,2), 100*xtal1_rectangle(:,3), 'k-')
 | 
			
		||||
 | 
			
		||||
z = results.ns;
 | 
			
		||||
% y = [0,cos(drx),sin(drx)];
 | 
			
		||||
y = [0,1,0];
 | 
			
		||||
x = cross(y,z);
 | 
			
		||||
xtal2_rectangle = [results.ps + 0.02/2*y + 0.07/2*x;
 | 
			
		||||
                   results.ps - 0.02/2*y + 0.07/2*x;
 | 
			
		||||
                   results.ps - 0.02/2*y - 0.07/2*x;
 | 
			
		||||
                   results.ps + 0.02/2*y - 0.07/2*x];
 | 
			
		||||
 | 
			
		||||
patch(100*xtal2_rectangle(:,1), 100*xtal2_rectangle(:,2), 100*xtal2_rectangle(:,3), 'k-')
 | 
			
		||||
		Reference in New Issue
	
	Block a user