mirror of
https://github.com/c-sooyoung/fold_slice.git
synced 2026-09-17 22:59:07 +09:00
182 lines
7.5 KiB
Matlab
182 lines
7.5 KiB
Matlab
% multislice_dof_summary.m
|
||
% summarize depth of focus reported in x-ray multislice ptycho literature
|
||
|
||
addpath(fullfile(pwd,'utils'))
|
||
dof = [];
|
||
pixel_size = [];
|
||
thickness = [];
|
||
dz = [];
|
||
Nlayer = [];
|
||
label = {};
|
||
alpha = 4; % additional scaling coefficient
|
||
|
||
%% 1.1 Multi‐slice ptychography enables high‐resolution measurements in extended chemical reactors
|
||
% https://doi.org/10.1038/s41598-020-80926-6
|
||
energy = 9.1; %kev
|
||
det_pixel = 75e-6; %detector pixel size (m)
|
||
det_N = 512; % number of pixels in the detector
|
||
distance = 4.16; % # sample to detector distance (m)
|
||
|
||
[dof(1),pixel_size(1)] = DOF_calculator(energy, det_pixel, det_N, distance, alpha);
|
||
thickness(1) = 100e-6;
|
||
dz(1) = 100e-6; % layer distance used in multi-slice reconstruction
|
||
Nlayer(1) = 2; % number of layers used in multi-slice reconstruction
|
||
label{1} = 'PETRA III-polyimide foil';
|
||
%% 1.2 Multi‐slice ptychography enables high‐resolution measurements in extended chemical reactors
|
||
% https://doi.org/10.1038/s41598-020-80926-6
|
||
energy = 15.25; %kev
|
||
det_pixel = 75e-6; %detector pixel size (m)
|
||
det_N = 512; % number of pixels in the detector
|
||
distance = 3.435; % # sample to detector distance (m)
|
||
|
||
[dof(end+1),pixel_size(end+1)] = DOF_calculator(energy, det_pixel, det_N, distance, alpha);
|
||
thickness(end+1) = 650e-6;
|
||
dz(end+1) = 650e-6; % layer distance used in multi-slice reconstruction
|
||
Nlayer(end+1) = 2; % number of layers used in multi-slice reconstruction
|
||
label{end+1} = 'PETRA III-chemical reactor';
|
||
%% 2. Multi-slice ptychography with large numerical aperture multilayer Laue lenses
|
||
% https://doi.org/10.1364/OPTICA.5.000601
|
||
energy = 12; %kev
|
||
det_pixel = 55e-6; %detector pixel size (m)
|
||
det_N = 128; % number of pixels in the detector
|
||
distance = 0.5; % # sample to detector distance (m)
|
||
|
||
[dof(end+1),pixel_size(end+1)] = DOF_calculator(energy, det_pixel, det_N, distance, alpha);
|
||
thickness(end+1) = 10e-6;
|
||
dz(end+1) = 10e-6; % layer distance used in multi-slice reconstruction
|
||
Nlayer(end+1) = 2; % number of layers used in multi-slice reconstruction
|
||
label{end+1} = 'BNL';
|
||
%% 3.1 X-ray ptychography with extended depth of field - real data
|
||
% https://doi.org/10.1364/OE.24.029089
|
||
energy = 6.2; %kev
|
||
det_pixel = 172e-6; %detector pixel size (m)
|
||
det_N = 192; % number of pixels in the detector
|
||
distance = 7.2; % # sample to detector distance (m)
|
||
|
||
[dof(end+1),pixel_size(end+1)] = DOF_calculator(energy, det_pixel, det_N, distance, alpha);
|
||
thickness(end+1) = 200e-6;
|
||
dz(end+1) = 200e-6; % layer distance used in multi-slice reconstruction
|
||
Nlayer(end+1) = 2; % number of layers used in multi-slice reconstruction
|
||
label{end+1} = 'PSI';
|
||
%% 3.2 X-ray ptychography with extended depth of field - simulation
|
||
% https://doi.org/10.1364/OE.24.029089
|
||
energy = 6.2; %kev
|
||
det_pixel = 172e-6; %detector pixel size (m)
|
||
det_N = 512; % number of pixels in the detector
|
||
distance = 7.2; % # sample to detector distance (m)
|
||
|
||
[dof(end+1),pixel_size(end+1)] = DOF_calculator(energy, det_pixel, det_N, distance, alpha);
|
||
thickness(end+1) = [40e-6];
|
||
dz(end+1) = [20e-6]; % layer distance used in multi-slice reconstruction
|
||
Nlayer(end+1) = 3; % number of layers used in multi-slice reconstruction
|
||
label{end+1} = 'PSI-sim';
|
||
%% 4. High-Resolution Multislice X-Ray Ptychography of Extended Thick Objects
|
||
% https://doi.org/10.1103/PhysRevLett.112.053903
|
||
energy = 7; %kev
|
||
dx = 20e-9;
|
||
det_pixel = 75e-6; %detector pixel size (m). Not given in the paper
|
||
det_N = 606; % number of pixels in the detector
|
||
distance = dx*det_pixel*det_N/(1.23984193e-9/energy); % # sample to detector distance (m)
|
||
|
||
[dof(end+1),pixel_size(end+1)] = DOF_calculator(energy, det_pixel, det_N, distance, alpha);
|
||
thickness(end+1) = 105e-6;
|
||
dz(end+1) = 1e-9; % layer distance used in multi-slice reconstruction
|
||
Nlayer(end+1) = 1; % number of layers used in multi-slice reconstruction
|
||
label{end+1} = 'SPring 8';
|
||
%% 5. Resolving 500 nm axial separation by multi-slice X-ray ptychography
|
||
% https://doi.org/10.1107/S2053273318017229
|
||
energy = 12; %kev
|
||
det_pixel = 55e-6; %detector pixel size (m)
|
||
det_N = 300; % number of pixels in the detector
|
||
distance = 0.35; % # sample to detector distance (m)
|
||
|
||
[dof(end+1),pixel_size(end+1)] = DOF_calculator(energy, det_pixel, det_N, distance, alpha);
|
||
thickness(end+1) = 500e-9;
|
||
dz(end+1:end+1) = 500e-9; % layer distance used in multi-slice reconstruction
|
||
Nlayer(end+1) = 2; % number of layers used in multi-slice reconstruction
|
||
label{end+1} = 'BNL-XRF';
|
||
%% 6. 3D x-ray imaging of continuous objects beyond the depth of focus limit - simulation, tomography
|
||
% https://doi.org/10.1364/OE.24.029089
|
||
energy = 5; %kev
|
||
dx = 1e-9;
|
||
det_pixel = 75e-6; %detector pixel size (m). Not given in the paper
|
||
det_N = 72; % number of pixels in the detector
|
||
distance = dx*det_pixel*det_N/(1.23984193e-9/energy); % # sample to detector distance (m)
|
||
|
||
[dof(end+1),pixel_size(end+1)] = DOF_calculator(energy, det_pixel, det_N, distance, alpha);
|
||
thickness(end+1) = 160e-9;
|
||
dz(end+1:end+1) = 1e-9; % layer distance used in multi-slice reconstruction
|
||
Nlayer(end+1) = 1; % number of layers used in multi-slice reconstruction
|
||
label{end+1} = 'sim-tomo';
|
||
|
||
%% 7. Adorym: A multi-platform generic x-ray image reconstruction framework based on automatic differentiation
|
||
%%%%%%% I'm not sure if they really used multi-slice...
|
||
%{
|
||
% https://arxiv.org/abs/2012.12686
|
||
energy = 5.5; %kev
|
||
det_pixel = 172e-6; %detector pixel size (m). Not given in the paper
|
||
det_N = 64; % number of pixels in the detector
|
||
distance = 2; % # sample to detector distance (m)
|
||
|
||
[dof(end+1),pixel_size(end+1)] = DOF_calculator(energy, det_pixel, det_N, distance, alpha);
|
||
thickness(end+1) = 8e-6;
|
||
dz(end+1:end+1) = 1e-9; % layer distance used in multi-slice reconstruction
|
||
Nlayer(end+1) = 1; % number of layers used in multi-slice reconstruction
|
||
label{end+1} = 'APS-bnp-algae???';
|
||
%}
|
||
%% LCO
|
||
%
|
||
energy = 9.3; %kev
|
||
det_pixel = 75e-6; %detector pixel size (m)
|
||
det_N = 64; % number of pixels in the detector
|
||
distance = 1.92; % # sample to detector distance (m)
|
||
alpha = 4; % additional scaling coefficient
|
||
|
||
[dof(end+1),pixel_size(end+1)] = DOF_calculator(energy, det_pixel, det_N, distance, alpha);
|
||
thickness(end+1) = 25e-6;
|
||
dz(end+1) = 8e-6; % layer distance used in multi-slice reconstruction
|
||
Nlayer(end+1) = 5; % number of layers used in multi-slice reconstruction
|
||
label{end+1} = 'APS-velo-LCO';
|
||
|
||
%% IC Pillar
|
||
%
|
||
energy = 8.8; %kev
|
||
det_pixel = 75e-6; %detector pixel size (m)
|
||
det_N = 64; % number of pixels in the detector
|
||
distance = 1.92; % # sample to detector distance (m)
|
||
alpha = 4; % additional scaling coefficient
|
||
|
||
[dof(end+1),pixel_size(end+1)] = DOF_calculator(energy, det_pixel, det_N, distance, alpha);
|
||
thickness(end+1) = 20e-6;
|
||
dz(end+1) = 8e-6; % layer distance used in multi-slice reconstruction
|
||
Nlayer(end+1) = 5; % number of layers used in multi-slice reconstruction
|
||
label{end+1} = 'APS-velo-IC-pillar';
|
||
|
||
%% CIGS
|
||
%
|
||
energy = 9.3; %kev
|
||
det_pixel = 75e-6; %detector pixel size (m)
|
||
det_N = 64; % number of pixels in the detector
|
||
distance = 1.92; % # sample to detector distance (m)
|
||
alpha = 4; % additional scaling coefficient
|
||
|
||
[dof(end+1),pixel_size(end+1)] = DOF_calculator(energy, det_pixel, det_N, distance, alpha);
|
||
thickness(end+1) = 30e-6;
|
||
dz(end+1) = 8e-6; % layer distance used in multi-slice reconstruction
|
||
Nlayer(end+1) = 5; % number of layers used in multi-slice reconstruction
|
||
label{end+1} = 'APS-velo-CIGS';
|
||
|
||
%%
|
||
close all
|
||
figure1 = figure;
|
||
% Create axes
|
||
axes1 = axes('Parent',figure1);
|
||
hold(axes1,'on');
|
||
for i=1:length(thickness)
|
||
plot(i,thickness(i)./dof(i),'.','MarkerSize',15, 'DisplayName',label{i})
|
||
end
|
||
%hold on
|
||
line([1 length(dof)],[1 1],'LineWidth',1,'LineStyle','--','Color','r', 'DisplayName', 'DOF')
|
||
legend
|
||
set(axes1,'YMinorTick','on','YScale','log');
|