initial commit

This commit is contained in:
2026-08-07 15:56:42 +09:00
commit 91ad25aca9
1012 changed files with 159314 additions and 0 deletions
+181
View File
@@ -0,0 +1,181 @@
% 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 Multislice ptychography enables highresolution 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 Multislice ptychography enables highresolution 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');