From 1d05bdec2c00a9ba20b01fe055be6145e649a696 Mon Sep 17 00:00:00 2001
From: Nicola Vigano <nicola.vigano@esrf.fr>
Date: Mon, 20 Jun 2016 15:52:28 +0200
Subject: [PATCH] 6D-Twinned-Grains: added include_all option and made optional
 the use of the parent mask for raw images

Signed-off-by: Nicola Vigano <nicola.vigano@esrf.fr>
---
 ...t6DCreateProjDataFromTwinnedGrainFwdProj.m | 34 +++++++++++++++----
 1 file changed, 28 insertions(+), 6 deletions(-)

diff --git a/zUtil_Deformation/gt6DCreateProjDataFromTwinnedGrainFwdProj.m b/zUtil_Deformation/gt6DCreateProjDataFromTwinnedGrainFwdProj.m
index efc9943e..3633b22c 100644
--- a/zUtil_Deformation/gt6DCreateProjDataFromTwinnedGrainFwdProj.m
+++ b/zUtil_Deformation/gt6DCreateProjDataFromTwinnedGrainFwdProj.m
@@ -22,9 +22,17 @@ function [samp_ors, estim_space_bbox_pix, estim_orient_bbox] = gt6DCreateProjDat
         'check_spots', false, ...
         'stack_oversize', 1.4, ...
         'use_raw_images', false, ...
+        'use_parent_mask', false, ...
+        'include_all', false, ...
         'save', false );
     conf = parse_pv_pairs(conf, varargin);
 
+    if (~conf.use_raw_images && conf.include_all)
+        warning('gt6DCreateProjDataFromTwinnedGrainFwdProj:wrong_argument', ...
+            '"include_all" cannot be enabled if "use_raw_images" is not enabled')
+        conf.include_all = false;
+    end
+
     p = gtLoadParameters();
     symm = gtCrystGetSymmetryOperators(p.cryst(phase_id).crystal_system);
 
@@ -126,8 +134,14 @@ function [samp_ors, estim_space_bbox_pix, estim_orient_bbox] = gt6DCreateProjDat
     refgr_proj = refgr.proj(conf.det_index);
 
     ref_ondet = refgr_proj.ondet;
-    ref_included = refgr_proj.included;
-    ref_selected = refgr_proj.selected;
+    if (conf.include_all)
+        ref_included = 1:numel(ref_ondet);
+        ref_selected = false(size(ref_included));
+        ref_selected(refgr_proj.included(refgr_proj.selected)) = true;
+    else
+        ref_included = refgr_proj.included;
+        ref_selected = refgr_proj.selected;
+    end
 
     if (conf.verbose > 1)
         produce_matching_reflections_table(grs, conf, refl_matches, ref_ondet, ref_included)
@@ -293,8 +307,10 @@ function [samp_ors, estim_space_bbox_pix, estim_orient_bbox] = gt6DCreateProjDat
             if (ii_g > 1)
                 blobs(extended_projs(ii_g).shared_refl) = samp_ors(1).proj(conf.det_index).bl(extended_projs(ii_g).shared_refl_pos_in_parent);
 
-                proj_bl_masks = project_masks(samp_ors(ii_g), extended_projs(ii_g), grs(1).fwd_sim(conf.det_index).gv_verts, p, conf);
-                blobs = assign_masks(blobs, proj_bl_masks, ~extended_projs(ii_g).shared_refl);
+                if (conf.use_parent_mask)
+                    proj_bl_masks = project_masks(samp_ors(ii_g), extended_projs(ii_g), grs(1).fwd_sim(conf.det_index).gv_verts, p, conf);
+                    blobs = assign_masks(blobs, proj_bl_masks, ~extended_projs(ii_g).shared_refl);
+                end
             end
         else
             fprintf(' - Loading segmented blobs..')
@@ -583,8 +599,14 @@ function eproj = find_matches_with_refor(refor, twingr, refl_matches, conf)
     refor_proj = refor.proj(conf.det_index);
 
     ref_ondet = refor_proj.ondet;
-    ref_included = refor_proj.included;
-    ref_selected = refor_proj.selected;
+    if (conf.include_all)
+        ref_included = 1:numel(ref_ondet);
+        ref_selected = false(size(ref_included));
+        ref_selected(refor_proj.included(refor_proj.selected)) = true;
+    else
+        ref_included = refor_proj.included;
+        ref_selected = refor_proj.selected;
+    end
 
     bool_ref_inc = false(size_refl_list);
     bool_ref_inc(ref_ondet(ref_included)) = true;
-- 
GitLab