From 4ad740a3008792fb21d6cce5aaaae2694b530cc5 Mon Sep 17 00:00:00 2001
From: Olivier Sauter <olivier.sauter@epfl.ch>
Date: Sun, 16 Jun 2024 07:59:39 +0200
Subject: [PATCH] add time_out as array provided for radcam option

keep previous xtomo time_interval as is
---
 matlab/TCV/gdat_tcv.m | 36 ++++++++++++++++++++++++++++++------
 1 file changed, 30 insertions(+), 6 deletions(-)

diff --git a/matlab/TCV/gdat_tcv.m b/matlab/TCV/gdat_tcv.m
index a6118f64..28552955 100644
--- a/matlab/TCV/gdat_tcv.m
+++ b/matlab/TCV/gdat_tcv.m
@@ -3337,10 +3337,14 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
           % 200ms includes all characteristic time constants
           time_interval = [gdat_data.gdat_params.time_out-0.1 gdat_data.gdat_params.time_out+0.1];
         else
-          time_interval = [min(gdat_data.gdat_params.time_out)-0.1 max(gdat_data.gdat_params.time_out)+0.1];
+          if strcmp(gdat_data.gdat_params.source,'radcam')
+            time_interval = gdat_data.gdat_params.time_out; % for radcam provide time array on which to do interpos
+          else
+            time_interval = [min(gdat_data.gdat_params.time_out)-0.1 max(gdat_data.gdat_params.time_out)+0.1];
+            warning(['Expects a time interval [t1 t2] for ' data_request_eff ' in param time_out, uses [' ...
+                     num2str(time_interval(1)) ',' num2str(time_interval(2)) ']' char(10)])
+          end
         end
-        warning(['Expects a time interval [t1 t2] for ' data_request_eff ' in param time_out, uses [' ...
-                 num2str(time_interval(1)) ',' num2str(time_interval(2)) ']' char(10)])
       end
     end
     % at this stage 2 option for freq, raw data (fast, default), 10kHz or similar (slow)
@@ -3429,10 +3433,30 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
       end
       sxr = rc_load_diodes(shot,'diag_name',"sxr",'channels',gdat_data.x); % since all cameras with different channel number
       if freq_opt == 1
-        gdat_data.data = sxr.data';
-        gdat_data.t = sxr.time;
+         if ~isempty(time_interval)
+           if numel(time_interval) == 2
+             ij = find(sxr.time>=time_interval(1) & sxr.time>=time_interval(end));
+             gdat_data.data = sxr.data(ij,:)';
+             gdat_data.t = sxr.time(ij);
+           else
+             ij = iround_os(sxr.time,time_interval);
+             gdat_data.data = sxr.data(ij,:)';
+             gdat_data.t = sxr.time(ij);
+           end
+         else
+           gdat_data.data = sxr.data';
+           gdat_data.t = sxr.time;
+         end
       else
-        gdat_data.t = linspace(sxr.time(1),sxr.time(end),round((sxr.time(end)-sxr.time(1))/1e-4));
+        if ~isempty(time_interval)
+          if numel(time_interval) == 2
+            gdat_data.t = linspace(time_interval(1),time_interval(2),round((time_interval(2)-time_interval(1))/1e-4));
+          else
+            gdat_data.t = time_interval;
+          end
+        else
+          gdat_data.t = linspace(sxr.time(1),sxr.time(end),round((sxr.time(end)-sxr.time(1))/1e-4));
+        end
         for i=1:size(sxr.data,2)
           gdat_data.data(i,:) = interpos(sxr.time,sxr.data(:,i),gdat_data.t,gdat_data.gdat_params.fit_tension);
         end
-- 
GitLab