diff --git a/5_reconstruction/gtReconstruct6DLaunchAlgorithm.m b/5_reconstruction/gtReconstruct6DLaunchAlgorithm.m
index 436620a8aa65a2afd9c8ffe87ce19923e4ca1e7c..cdb1be0ee06fecdce7e5d8ae9ff06d2bfbeb434c 100644
--- a/5_reconstruction/gtReconstruct6DLaunchAlgorithm.m
+++ b/5_reconstruction/gtReconstruct6DLaunchAlgorithm.m
@@ -1,12 +1,17 @@
-function [algo, good_or] = gtReconstruct6DLaunchAlgorithm(sampler, rec_opts, parameters)
-% FUNCTION algo = gtReconstruct6DLaunchAlgorithm(sampler, rec_opts, parameters)
+function [algo, good_or] = gtReconstruct6DLaunchAlgorithm(sampler, rec_opts, parameters, det_index)
+% FUNCTION algo = gtReconstruct6DLaunchAlgorithm(sampler, rec_opts, parameters, det_index)
 %
 
+    if (~exist('det_index', 'var') || isempty(det_index))
+        det_index = 1;
+    end
+
     rec_factory = Gt6DReconstructionAlgorithmFactory(parameters, ...
         'volume_downscaling', rec_opts.volume_downscaling, ...
         'rspace_super_sampling', rec_opts.rspace_super_sampling, ...
         'rspace_oversize', rec_opts.rspace_oversize, ...
-        'use_predicted_scatter_ints', rec_opts.use_predicted_scatter_ints );
+        'use_predicted_scatter_ints', rec_opts.use_predicted_scatter_ints, ...
+        'det_index', det_index );
 
     num_interp = rec_opts.num_interp;
     if (num_interp < 0)
diff --git a/zUtil_Deformation/Gt6DReconstructionAlgorithmFactory.m b/zUtil_Deformation/Gt6DReconstructionAlgorithmFactory.m
index 24c26f4e701a035ca1a4fbcf11f18f7ca11ef5e2..250de80b4ad3980de1d94394a241203e2b8f10e9 100644
--- a/zUtil_Deformation/Gt6DReconstructionAlgorithmFactory.m
+++ b/zUtil_Deformation/Gt6DReconstructionAlgorithmFactory.m
@@ -35,8 +35,10 @@ classdef Gt6DReconstructionAlgorithmFactory < handle
         function [algo, good_orients, blobs] = getGrainReconstructionAlgo(self, sampler, num_interp, varargin)
             % Build Empty volumes
             ref_gr = sampler.get_reference_grain();
-            spacing = mean([ref_gr.proj.vol_size_y, ref_gr.proj.vol_size_x, ref_gr.proj.vol_size_z]) * (self.rspace_oversize - 1);
-            volume_size = round([ref_gr.proj.vol_size_y, ref_gr.proj.vol_size_x, ref_gr.proj.vol_size_z] + spacing);
+            proj = ref_gr.proj(self.det_index);
+
+            spacing = mean([proj.vol_size_y, proj.vol_size_x, proj.vol_size_z]) * (self.rspace_oversize - 1);
+            volume_size = round([proj.vol_size_y, proj.vol_size_x, proj.vol_size_z] + spacing);
 
             if (self.volume_downscaling > 1)
                 volume_size = ceil(volume_size / self.volume_downscaling);
@@ -98,8 +100,10 @@ classdef Gt6DReconstructionAlgorithmFactory < handle
 
             % Build Empty volumes
             ref_gr = sampler(1).get_reference_grain();
-            spacing = mean([ref_gr.proj.vol_size_y, ref_gr.proj.vol_size_x, ref_gr.proj.vol_size_z]) * (self.rspace_oversize - 1);
-            volume_size = round([ref_gr.proj.vol_size_y, ref_gr.proj.vol_size_x, ref_gr.proj.vol_size_z] + spacing);
+            proj = ref_gr.proj(self.det_index);
+
+            spacing = mean([proj.vol_size_y, proj.vol_size_x, proj.vol_size_z]) * (self.rspace_oversize - 1);
+            volume_size = round([proj.vol_size_y, proj.vol_size_x, proj.vol_size_z] + spacing);
 
             if (self.volume_downscaling > 1)
                 volume_size = ceil(volume_size / self.volume_downscaling);
@@ -109,8 +113,8 @@ classdef Gt6DReconstructionAlgorithmFactory < handle
             % ones that were selected among the included, because the
             % information we have in the twins about the spots that
             % coincide are about the included and not the selected
-            included_pos_in_selected = zeros(size(ref_gr.proj.included));
-            included_pos_in_selected(ref_gr.proj.selected) = 1:numel(find(ref_gr.proj.selected));
+            included_pos_in_selected = zeros(size(proj.included));
+            included_pos_in_selected(proj.selected) = 1:numel(find(proj.selected));
 
             blobs_to_not_shrink = cell(num_grains, 1);
             blobs_to_not_shrink{1} = false(size(included_pos_in_selected));
@@ -433,8 +437,8 @@ classdef Gt6DReconstructionAlgorithmFactory < handle
 
             if (isfield(bl, 'psf'))
                 psf = arrayfun(@(x){ permute(x.psf, [1 3 2]) }, bl);
-            elseif (isfield(sampler.ref_gr.proj, 'psf'))
-                psf = { permute(sampler.ref_gr.proj.psf, [1 3 2]) };
+            elseif (isfield(proj, 'psf'))
+                psf = { permute(proj.psf, [1 3 2]) };
             else
                 psf = {};
             end