From 00a8329eef581ca38dd233ee114f414577f83b4b Mon Sep 17 00:00:00 2001
From: Nicola Vigano <nicola.vigano@esrf.fr>
Date: Fri, 16 Jan 2015 12:41:41 +0100
Subject: [PATCH] FwdSim: renamed stackHSize to stackUSize, and simplified a
 few things in blob creation

Signed-off-by: Nicola Vigano <nicola.vigano@esrf.fr>
---
 zUtil_Deformation/GtOrientationSampling.m     |  8 ++--
 .../test_generation/Gt6DTwinTestCreator.m     |  4 +-
 zUtil_ForwardSim/gtForwardSimulate_v2.m       | 20 +++++---
 zUtil_ForwardSim/gtFwdSimBuildDifstackBlobs.m | 46 +++++++++++--------
 zUtil_ForwardSim/gtFwdSimBuildDifstackSpots.m | 32 ++++++-------
 zUtil_ForwardSim/gtFwdSimBuildProjGeometry.m  | 14 +++---
 .../gtFwdSimCheckSpotInRawImages.m            |  2 +-
 .../gtFwdSimGetDiffspotsCommonProperties.m    |  2 +-
 zUtil_ForwardSim/gtFwdSimGetStackShifts.m     |  8 ++--
 .../gtFwdSimPredictGrainVolumeSize.m          |  4 +-
 zUtil_ForwardSim/gtFwdSimPredictVolumeSize.m  |  4 +-
 zUtil_ForwardSim/gtShowFsim.m                 |  4 +-
 12 files changed, 82 insertions(+), 66 deletions(-)

diff --git a/zUtil_Deformation/GtOrientationSampling.m b/zUtil_Deformation/GtOrientationSampling.m
index 0097b1ff..660e2061 100644
--- a/zUtil_Deformation/GtOrientationSampling.m
+++ b/zUtil_Deformation/GtOrientationSampling.m
@@ -335,10 +335,10 @@ classdef GtOrientationSampling < handle
             cosnc = abs(cosd(n)) >= 0.5;
             dn = zeros(size(n));
             bls_bbm = cat(1, bls(:).mbbsize);
-            % 4th component is the horizontal, while the 5th is the
-            % vertical
-            dn(cosnc) = bls_bbm(cosnc, 4) ./ abs(cosd(n(cosnc)));
-            dn(~cosnc) = bls_bbm(~cosnc, 5) ./ abs(sind(n(~cosnc)));
+            % 1th component is the horizontal, while the 2th is the
+            % vertical !!
+            dn(cosnc) = bls_bbm(cosnc, 1) ./ abs(cosd(n(cosnc)));
+            dn(~cosnc) = bls_bbm(~cosnc, 2) ./ abs(sind(n(~cosnc)));
             dn = dn ./ (2 * sqrt(sum((uv - gc_det_pos) .^ 2, 2)));
 
             % Let's take a small eviation in eta, to determine the plane
diff --git a/zUtil_Deformation/test_generation/Gt6DTwinTestCreator.m b/zUtil_Deformation/test_generation/Gt6DTwinTestCreator.m
index e70b9b14..a94e28c2 100644
--- a/zUtil_Deformation/test_generation/Gt6DTwinTestCreator.m
+++ b/zUtil_Deformation/test_generation/Gt6DTwinTestCreator.m
@@ -297,7 +297,7 @@ classdef Gt6DTwinTestCreator < Gt6DTestCreator
 
                 % position of Detector
 %                 detPos = detposcorner ...
-%                     + spotsCommProps.stackHSize/2 * parameters.labgeo.detdiru * omegaRotTens ...
+%                     + spotsCommProps.stackUSize/2 * parameters.labgeo.detdiru * omegaRotTens ...
 %                     + spotsCommProps.stackVSize/2 * parameters.labgeo.detdirv * omegaRotTens;
 %                 detPos = detPos * omegaRotTens - grain.center ./ pixelsize;
                 detPos = diffBeamDir * norm(detposcorner);
@@ -329,7 +329,7 @@ classdef Gt6DTwinTestCreator < Gt6DTestCreator
 
             diagonal = round(norm(size(obj.fullVol)));
             % take the biggest spot and add a relative extra margin (multiplicative factor oversize)
-            spotsProps.stackHSize = diagonal;
+            spotsProps.stackUSize = diagonal;
             % ...same for vertical direction
             spotsProps.stackVSize = diagonal;
         end
diff --git a/zUtil_ForwardSim/gtForwardSimulate_v2.m b/zUtil_ForwardSim/gtForwardSimulate_v2.m
index a0927eec..5c63fc15 100644
--- a/zUtil_ForwardSim/gtForwardSimulate_v2.m
+++ b/zUtil_ForwardSim/gtForwardSimulate_v2.m
@@ -246,6 +246,9 @@ for n = first : last
         'bbwim', [], ...        % Image BB on W <- Not strictly w
         'bbsize', [], ...       % Image BoundingBox (includes margins)
         'mbbsize', [], ...      % Real (Measured) Blob Bounding Box
+        'mbbu', [], ...         % Real (Measured) Blob BB on U
+        'mbbv', [], ...         % Real (Measured) Blob BB on V
+        'mbbw', [], ...         % Real (Measured) Blob BB on W <- Not strictly w
         'intensity', [] );      % Blob original intensity
     checkSpots = struct('info', cell(numspots, 1));
 
@@ -310,7 +313,7 @@ for n = first : last
         end
 
         bls = gtFwdSimBuildDifstackBlobs(candidateIDs, [], parameters, ...
-            spotsCommProps.stackHSize, spotsCommProps.stackVSize);
+            spotsCommProps.stackUSize, spotsCommProps.stackVSize);
 
         proj_bl = proj_bls(ii * ones(numel(bls), 1));
 
@@ -413,7 +416,7 @@ for n = first : last
     fprintf(' (Done).\n - Building difstack..');
 
     difstack = gtFwdSimBuildDifstackSpots(spotid, included, parameters, ...
-        spotsCommProps.stackHSize, spotsCommProps.stackVSize, ...
+        spotsCommProps.stackUSize, spotsCommProps.stackVSize, ...
         spotsCommProps.Xsize, spotsCommProps.Ysize, ...
         bb, info);
 
@@ -461,7 +464,7 @@ for n = first : last
     proj = gtFwdSimBuildProjGeometry(...
         diff_beam_dirs(included, :), gr.center, W(included), ...
         bb(included, :), parameters, ...
-        spotsCommProps.stackHSize, spotsCommProps.stackVSize, ...
+        spotsCommProps.stackUSize, spotsCommProps.stackVSize, ...
         selected);
 
     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -664,10 +667,12 @@ function proj_bls = predict_spot_masks_from_indexed(gr, grain_INDX, ...
 
     % Producing blobs' boundingboxes (as by dilated segmentation info)
     bls_INDXTR = gtFwdSimBuildDifstackBlobs(difspotID_INDXTR, [], ...
-        parameters, spotsCommProps.stackHSize, spotsCommProps.stackVSize);
+        parameters, spotsCommProps.stackUSize, spotsCommProps.stackVSize);
     % INDEXTER Data
-    BBs = cat(1, bls_INDXTR(:).mbbsize);
-    BBs = BBs(:, [1 2 4 5]);
+    BBus = cat(1, bls_INDXTR(:).mbbu);
+    BBvs = cat(1, bls_INDXTR(:).mbbv);
+    BBsizes = cat(1, bls_INDXTR(:).mbbsize);
+    BBs = [BBus(:, 1), BBvs(:, 1), BBsizes(:, 1:2)];
 
     Ws = segmentedSpots.CentroidImage(difspotID_INDXTR) .* parameters.labgeo.omstep;
 
@@ -685,6 +690,9 @@ function proj_bls = predict_spot_masks_from_indexed(gr, grain_INDX, ...
 
     for ii_b = 1:numel(proj_bls)
         proj_bls(ii_b).mbbsize = proj_bls_original(ii_b).bbsize;
+        proj_bls(ii_b).mbbu = proj_bls_original(ii_b).bbuim;
+        proj_bls(ii_b).mbbv = proj_bls_original(ii_b).bbvim;
+        proj_bls(ii_b).mbbw = proj_bls_original(ii_b).bbwim;
     end
 end
 
diff --git a/zUtil_ForwardSim/gtFwdSimBuildDifstackBlobs.m b/zUtil_ForwardSim/gtFwdSimBuildDifstackBlobs.m
index 2ac7e7fa..edef6589 100644
--- a/zUtil_ForwardSim/gtFwdSimBuildDifstackBlobs.m
+++ b/zUtil_ForwardSim/gtFwdSimBuildDifstackBlobs.m
@@ -1,11 +1,11 @@
-function bl = gtFwdSimBuildDifstackBlobs(blobids, indexes, parameters, stackHSize, stackVSize)
+function bl = gtFwdSimBuildDifstackBlobs(blobids, indexes, parameters, stackUSize, stackVSize)
 % BUILDDIFSTACKSPOTS
-%   bl = gtFwdSimBuildDifstackSpots(spotids, indexes, parameters, stackHSize, stackVSize)
+%   bl = gtFwdSimBuildDifstackSpots(spotids, indexes, parameters, stackUSize, stackVSize)
 %
 % blobids    : spotid from grain
 % indexes    :
 % parameters : parameters.mat
-% stackHSize :
+% stackUSize :
 % stackVSize :
 %
 % bl         :
@@ -24,39 +24,47 @@ function bl = gtFwdSimBuildDifstackBlobs(blobids, indexes, parameters, stackHSiz
         'bbwim', [], ...        % Image BB on W <- Not strictly w
         'bbsize', [], ...       % Image BoundingBox (includes margins)
         'mbbsize', [], ...      % Real (Measured) Blob Bounding Box
+        'mbbu', [], ...         % Real (Measured) Blob BB on U
+        'mbbv', [], ...         % Real (Measured) Blob BB on V
+        'mbbw', [], ...         % Real (Measured) Blob BB on W <- Not strictly w
         'intensity', [] );      % Blob original intensity
 
     for ii = reshape(indexes, 1, [])
         [blob_vol, blob_bb, blob_mask, blob_int] = gtFwdSimBuildBlob(blobids(ii), parameters);
 
-        % Essentially zero pads the blob to make it fit into ASTRA's
-        % diffraction stack
-        shifts_blob = gtFwdSimGetStackShifts(stackHSize, stackVSize, blob_bb, false);
-        shifts = [shifts_blob.v, shifts_blob.h, 1];
-
+        % Transposing to keep the same convention as spots
+        blob_vol = permute(blob_vol, [2 1 3]);
+        blob_mask = permute(blob_mask, [2 1 3]);
         blob_bb = blob_bb([2 1 3 5 4 6]);
 
-        bl(ii).mbbsize = blob_bb;
+        bl(ii).mbbsize = blob_bb(4:6);
+        bl(ii).mbbu = [blob_bb(1), blob_bb(1) + blob_bb(4) + 1];
+        bl(ii).mbbv = [blob_bb(3), blob_bb(2) + blob_bb(5) + 1];
+        bl(ii).mbbw = [blob_bb(4), blob_bb(3) + blob_bb(6) + 1];
+
+        % Essentially zero pads the blob to make it fit into ASTRA's
+        % diffraction stack
+        shifts_blob = gtFwdSimGetStackShifts(stackUSize, stackVSize, blob_bb, false);
+        shifts = [shifts_blob.u, shifts_blob.v, 1];
 
         % We are applying a padding of one slice (perside) on the w
         % diretion
+        blob_size_im = [stackUSize, stackVSize, blob_bb(6)+2];
+        blob_bb_im = [blob_bb(1:3) - shifts, blob_size_im];
+
         bl(ii).intm = gtPlaceSubVolume( ...
-            zeros(stackVSize, stackHSize, blob_bb(6)+2), ...
+            zeros(blob_size_im, 'single'), ...
             blob_vol, shifts);
-        bl(ii).intm = permute(bl(ii).intm, [2 1 3]);
 
         bl(ii).mask = gtPlaceSubVolume( ...
-            zeros(stackVSize, stackHSize, blob_bb(6)+2), ...
+            false(blob_size_im), ...
             uint8(blob_mask), shifts);
-        bl(ii).mask = permute(logical(bl(ii).mask), [2 1 3]);
 
-        bl(ii).bbsize = size(bl(ii).intm);
+        bl(ii).bbsize = blob_size_im;
 
-        bl(ii).bbuim = [(blob_bb(1) - shifts_blob.h), ...
-            (blob_bb(1) - shifts_blob.h + bl(ii).bbsize(1) - 1)];
-        bl(ii).bbvim = [(blob_bb(2) - shifts_blob.v), ...
-            (blob_bb(2) - shifts_blob.v + bl(ii).bbsize(2) - 1)];
-        bl(ii).bbwim = [blob_bb(3)-1, (blob_bb(3) + blob_bb(6))];
+        bl(ii).bbuim = [blob_bb_im(1), blob_bb_im(1) + blob_bb_im(4) - 1];
+        bl(ii).bbvim = [blob_bb_im(2), blob_bb_im(2) + blob_bb_im(5) - 1];
+        bl(ii).bbwim = [blob_bb_im(3), blob_bb_im(3) + blob_bb_im(6) - 1];
 
         bl(ii).intensity = blob_int;
     end
diff --git a/zUtil_ForwardSim/gtFwdSimBuildDifstackSpots.m b/zUtil_ForwardSim/gtFwdSimBuildDifstackSpots.m
index d9e83914..5b10dd3b 100644
--- a/zUtil_ForwardSim/gtFwdSimBuildDifstackSpots.m
+++ b/zUtil_ForwardSim/gtFwdSimBuildDifstackSpots.m
@@ -1,14 +1,14 @@
-function [difstack, shifts] = gtFwdSimBuildDifstackSpots(spotids, indexes, parameters, stackHSize, stackVSize, Xsize, Ysize, bb, info)
+function [difstack, shifts] = gtFwdSimBuildDifstackSpots(spotids, indexes, parameters, stackUSize, stackVSize, Usize, Vsize, bb, info)
 % BUILDDIFSTACKSPOTS
-%   [difstack, shifts] = gtFwdSimBuildDifstackSpots(spotids, indexes, parameters, stackHSize, stackVSize, Xsize, Ysize, bb, info)
+%   [difstack, shifts] = gtFwdSimBuildDifstackSpots(spotids, indexes, parameters, stackUSize, stackVSize, Usize, Vsize, bb, info)
 %
 % spotids    : spotid from grain
 % indexes
 % parameters : parameters.mat
-% stackHSize :
+% stackUSize :
 % stackVSize :
-% Xsize      :
-% Ysize      :
+% Usize      :
+% Vsize      :
 % bb         : bounding boxes
 % info
 %
@@ -17,14 +17,14 @@ function [difstack, shifts] = gtFwdSimBuildDifstackSpots(spotids, indexes, param
 
     num_spots = numel(spotids);
 
-    difstack = zeros(stackHSize, num_spots, stackVSize, 'single');
+    difstack = zeros(stackUSize, num_spots, stackVSize, 'single');
 
     if (~exist('indexes', 'var') || isempty(indexes))
         indexes = 1:num_spots;
     end
 
     if (~exist('parameters', 'var') || isempty(parameters))
-        load('parameters.mat');
+        parameters = gtLoadParameters();
     end
     if (~exist('info', 'var') || isempty(info))
         difspotfile = fullfile(parameters.acq.dir, '2_difspot', '00000', 'difspot00001.edf');
@@ -35,20 +35,20 @@ function [difstack, shifts] = gtFwdSimBuildDifstackSpots(spotids, indexes, param
         end
     end
 
-    shifts = gtFwdSimGetStackShifts(stackHSize, stackVSize, bb(indexes, :), true);
+    shifts = gtFwdSimGetStackShifts(stackUSize, stackVSize, bb(indexes, :), true);
 
     for ii = 1:numel(indexes)
-        spotid = spotids(indexes(ii));
-        bb_id = bb(indexes(ii), :);
+        spot_id = spotids(indexes(ii));
+        spot_bb = bb(indexes(ii), :);
+
+        [spot, ~] = gtFwdSimBuildSpot(spot_id, parameters, Usize, Vsize, spot_bb, info);
 
-        [spot, ~] = gtFwdSimBuildSpot(spotid, parameters, Xsize, Ysize, bb_id, info);
         % Essentially zero pads the spot to make it fit into ASTRA's
         % diffraction stack
+        spot_pad = gtPlaceSubVolume( ...
+            zeros(stackUSize, stackVSize, 'single'), spot', ...
+            [shifts.u(ii), shifts.v(ii), 0]);
 
-        spot_pad = gtPlaceSubImage2(spot,...
-            zeros(stackVSize, stackHSize, 'single'),...
-            shifts.h(ii) + 1, shifts.v(ii) + 1, 'summed');
-
-        difstack(:, indexes(ii), :) = spot_pad';
+        difstack(:, indexes(ii), :) = spot_pad;
     end
 end
diff --git a/zUtil_ForwardSim/gtFwdSimBuildProjGeometry.m b/zUtil_ForwardSim/gtFwdSimBuildProjGeometry.m
index d7e40fea..00421720 100644
--- a/zUtil_ForwardSim/gtFwdSimBuildProjGeometry.m
+++ b/zUtil_ForwardSim/gtFwdSimBuildProjGeometry.m
@@ -1,5 +1,5 @@
-function proj = gtFwdSimBuildProjGeometry(diff_beam_dirs, gr_center, omegas, bb, parameters, stackHSize, stackVSize, selected, det_ind)
-% FUNCTION proj = gtFwdSimBuildProjGeometry(diff_beam_dirs, gr_center, omegas, bb, parameters, stackHSize, stackVSize, selected, det_ind)
+function proj = gtFwdSimBuildProjGeometry(diff_beam_dirs, gr_center, omegas, bb, parameters, stackUSize, stackVSize, selected, det_ind)
+% FUNCTION proj = gtFwdSimBuildProjGeometry(diff_beam_dirs, gr_center, omegas, bb, parameters, stackUSize, stackVSize, selected, det_ind)
 %
     if (~exist('det_ind', 'var') || isempty(det_ind))
         det_ind = 1;
@@ -13,12 +13,12 @@ function proj = gtFwdSimBuildProjGeometry(diff_beam_dirs, gr_center, omegas, bb,
 
     num_projs = size(diff_beam_dirs, 1);
 
-    spot_shifts = gtFwdSimGetStackShifts(stackHSize, stackVSize, bb, true);
+    spot_shifts = gtFwdSimGetStackShifts(stackUSize, stackVSize, bb, true);
 
     % Bouning boxes in detector coordinates!
     bbpos_det_grain = [ ...
-        (bb(:, 1) - spot_shifts.h), (bb(:, 2) - spot_shifts.v), ...
-        stackHSize(ones(num_projs, 1)), stackVSize(ones(num_projs, 1)) ...
+        (bb(:, 1) - spot_shifts.u), (bb(:, 2) - spot_shifts.v), ...
+        stackUSize(ones(num_projs, 1)), stackVSize(ones(num_projs, 1)) ...
         ];
 
     % Bouning boxes in detector coordinates!
@@ -52,13 +52,13 @@ function proj = gtFwdSimBuildProjGeometry(diff_beam_dirs, gr_center, omegas, bb,
     proj.geom_abs  = proj_geom_abs;
 
     proj.num_rows  = stackVSize;
-    proj.num_cols  = stackHSize;
+    proj.num_cols  = stackUSize;
 
     proj.centerpix = gtGeoLab2Sam(gr_center, eye(3), labgeo, recgeo, true);
 
     use_polyhedron = numel(find(selected)) >= 3;
     vol_size = gtFwdSimPredictVolumeSize(gr_center, omegas(selected), ...
-        bb(selected, :), parameters, stackHSize, stackVSize, use_polyhedron);
+        bb(selected, :), parameters, stackUSize, stackVSize, use_polyhedron);
 
     proj.vol_size_x = vol_size(2);
     proj.vol_size_y = vol_size(1);
diff --git a/zUtil_ForwardSim/gtFwdSimCheckSpotInRawImages.m b/zUtil_ForwardSim/gtFwdSimCheckSpotInRawImages.m
index 079572fd..abb183cf 100644
--- a/zUtil_ForwardSim/gtFwdSimCheckSpotInRawImages.m
+++ b/zUtil_ForwardSim/gtFwdSimCheckSpotInRawImages.m
@@ -4,7 +4,7 @@ function [found_intensity, spotInfo] = gtFwdSimCheckSpotInRawImages(uvw, spotsCo
 %
 % uvw            : spot position at 'u', 'v', 'w'
 % spotsCommProps : diffraction spots common properties (Xsize, Ysize,
-%                  stackHSize, stackVSize)
+%                  stackUSize, stackVSize)
 % parameters     : parameters.mat
 
     omega_step = parameters.labgeo.omstep;
diff --git a/zUtil_ForwardSim/gtFwdSimGetDiffspotsCommonProperties.m b/zUtil_ForwardSim/gtFwdSimGetDiffspotsCommonProperties.m
index fdf080d8..6a079352 100644
--- a/zUtil_ForwardSim/gtFwdSimGetDiffspotsCommonProperties.m
+++ b/zUtil_ForwardSim/gtFwdSimGetDiffspotsCommonProperties.m
@@ -34,7 +34,7 @@ function spotsProps = gtFwdSimGetDiffspotsCommonProperties(grain, detrefpos_pix,
 
     grainBBox = [max(grain.bbxs), max(grain.bbys)];
     % take the biggest spot and add a relative extra margin (multiplicative factor oversize)
-    spotsProps.stackHSize = round(grainBBox(1) * fsim.oversize);
+    spotsProps.stackUSize = round(grainBBox(1) * fsim.oversize);
     % ...same for vertical direction
     spotsProps.stackVSize = round(grainBBox(2) * fsim.oversize);
 
diff --git a/zUtil_ForwardSim/gtFwdSimGetStackShifts.m b/zUtil_ForwardSim/gtFwdSimGetStackShifts.m
index 5349ab18..bc9c2379 100644
--- a/zUtil_ForwardSim/gtFwdSimGetStackShifts.m
+++ b/zUtil_ForwardSim/gtFwdSimGetStackShifts.m
@@ -1,9 +1,9 @@
-function shifts = gtFwdSimGetStackShifts(stackHSize, stackVSize, bb, use_spots)
+function shifts = gtFwdSimGetStackShifts(stackUSize, stackVSize, bb, use_spots)
     if (~exist('use_spots', 'var') || use_spots)
-        shifts.h = round((stackHSize - bb(:, 3)) / 2);
+        shifts.u = round((stackUSize - bb(:, 3)) / 2);
         shifts.v = round((stackVSize - bb(:, 4)) / 2);
     else
-        shifts.h = round((stackHSize - bb(:, 5)) / 2);
-        shifts.v = round((stackVSize - bb(:, 4)) / 2);
+        shifts.u = round((stackUSize - bb(:, 4)) / 2);
+        shifts.v = round((stackVSize - bb(:, 5)) / 2);
     end
 end
diff --git a/zUtil_ForwardSim/gtFwdSimPredictGrainVolumeSize.m b/zUtil_ForwardSim/gtFwdSimPredictGrainVolumeSize.m
index b4577f0a..a53595f1 100644
--- a/zUtil_ForwardSim/gtFwdSimPredictGrainVolumeSize.m
+++ b/zUtil_ForwardSim/gtFwdSimPredictGrainVolumeSize.m
@@ -14,11 +14,11 @@ function vol_size = gtFwdSimPredictGrainVolumeSize(gr, parameters, use_polyhedro
         bb = gr.bb;
     end
 
-    stackHSize = gr.proj.num_cols;
+    stackUSize = gr.proj.num_cols;
     stackVSize = gr.proj.num_rows;
 
     selected = gr.selected;
 
     vol_size = gtFwdSimPredictVolumeSize(gr.center, omegas(selected), ...
-        bb(selected, :), parameters, stackHSize, stackVSize, use_polyhedron);
+        bb(selected, :), parameters, stackUSize, stackVSize, use_polyhedron);
 end
diff --git a/zUtil_ForwardSim/gtFwdSimPredictVolumeSize.m b/zUtil_ForwardSim/gtFwdSimPredictVolumeSize.m
index 1642c522..18a7d36c 100644
--- a/zUtil_ForwardSim/gtFwdSimPredictVolumeSize.m
+++ b/zUtil_ForwardSim/gtFwdSimPredictVolumeSize.m
@@ -1,4 +1,4 @@
-function vol_size = gtFwdSimPredictVolumeSize(gr_center, omegas, bb, parameters, stackHSize, stackVSize, use_polyhedron)
+function vol_size = gtFwdSimPredictVolumeSize(gr_center, omegas, bb, parameters, stackUSize, stackVSize, use_polyhedron)
     if (~exist('use_polyhedron', 'var') || isempty(use_polyhedron))
         use_polyhedron = false;
     end
@@ -16,7 +16,7 @@ function vol_size = gtFwdSimPredictVolumeSize(gr_center, omegas, bb, parameters,
     else
         % We should in the future handle properly vertical detector
         % (general geometry) maybe determining a convex shape of the grain!
-        vol_size = [stackHSize, stackHSize, stackVSize];
+        vol_size = [stackUSize, stackUSize, stackVSize];
         oversize_vol = fsim.oversizeVol / fsim.oversize;
     end
 
diff --git a/zUtil_ForwardSim/gtShowFsim.m b/zUtil_ForwardSim/gtShowFsim.m
index 63333b83..629e541a 100644
--- a/zUtil_ForwardSim/gtShowFsim.m
+++ b/zUtil_ForwardSim/gtShowFsim.m
@@ -1609,7 +1609,7 @@ function sfShowMontage(hObj, ~, varargin)
 
     % prepare the stack
     [difstack, shifts] = gtFwdSimBuildDifstackSpots(ids, [], parameters, ...
-        spotsCommProps.stackHSize, spotsCommProps.stackVSize, ...
+        spotsCommProps.stackUSize, spotsCommProps.stackVSize, ...
         spotsCommProps.Xsize, spotsCommProps.Ysize, ...
         bb);
 
@@ -1709,7 +1709,7 @@ function sfUpdateFullImage(hObj, ~)
 
         % prepare the stack
         [~, shifts] = gtFwdSimBuildDifstackSpots(ids, [], parameters, ...
-            spotsCommProps.stackHSize, spotsCommProps.stackVSize, ...
+            spotsCommProps.stackUSize, spotsCommProps.stackVSize, ...
             spotsCommProps.Xsize, spotsCommProps.Ysize, ...
             bb);
 
-- 
GitLab