diff --git a/crpptbx_new/TCV/gdat_tcv.m b/crpptbx_new/TCV/gdat_tcv.m
index 7740a261aca0cc019e17140ffc8c2fe06fb87724..01ab654d6b386a43b01029d737c9c6f5415040de 100644
--- a/crpptbx_new/TCV/gdat_tcv.m
+++ b/crpptbx_new/TCV/gdat_tcv.m
@@ -410,6 +410,10 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
       tracetdi=tdi(nodenameeff);
       gdat_data.data=192.E-07 * 0.996 *tracetdi.data/R0EXP;
     end
+    if isempty(tracetdi.data) || isempty(tracetdi.dim) % || ischar(tracetdi.data) (to add?)
+      warning(['problems loading data for ' nodenameeff ' for data_request= ' data_request_eff])
+      return
+    end
     gdat_data.data_fullpath=[nodenameeff];
     gdat_data.dim = tracetdi.dim;    
     gdat_data.t = gdat_data.dim{1};
@@ -424,29 +428,32 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
     % get B0 from gdat_tcv, without re-opening the shot and using the same parameters except data_request
     % easily done thanks to structure call for options
     params_eff = gdat_data.gdat_params;
-    params_eff.data_request='b0';
-    b0=gdat_tcv([],params_eff);
+    params_eff.data_request='b0'; 
+    b0=gdat_tcv([],params_eff); % note: no need to set .doplot=0 since gdat_tcv does not call gdat_plot in any case
     params_eff.data_request='ip';
     ip=gdat_tcv([],params_eff);
     params_eff.data_request='beta';
     beta=gdat_tcv([],params_eff);
     params_eff.data_request='a_minor';
     a_minor=gdat_tcv([],params_eff);
-    
-    nodenameeff = '\results::';
-    if liuqe_version==2 || liuqe_version==3
-      nodenameeff=['\magnetics::iphi'];
-      tracetdi=tdi(nodenameeff);
-      gdat_data.data=192.E-07 * 0.996 *tracetdi.data/R0EXP;
-    end
-    gdat_data.data_fullpath=[nodenameeff];
-    gdat_data.dim = tracetdi.dim;    
-    gdat_data.t = gdat_data.dim{1};
-    if any(strcmp(fieldnames(tracetdi),'units'))
-      gdat_data.units = tracetdi.units;
+    % use beta as time base
+    if isempty(b0.data) || isempty(b0.dim) || isempty(ip.data) || isempty(ip.dim) || isempty(a_minor.data) || isempty(a_minor.dim) || isempty(beta.data) || isempty(beta.dim)
+      warning(['problems loading data for ' nodenameeff ' for data_request= ' data_request_eff])
+      return
     end
-    gdat_data.dimunits = tracetdi.dimunits;
-    gdat_data.request_description = ['vacuum magnetic field at R0=' num2str(R0EXP) 'm'];
+    gdat_data.dim = beta.dim;
+    gdat_data.t = beta.dim{1};
+    gdat_data.data = beta.data;
+    ij=find(~isnan(ip.data));
+    ip_t = interp1(ip.dim{1}(ij),ip.data(ij),gdat_data.t);
+    ij=find(~isnan(b0.data));
+    b0_t = interp1(b0.dim{1}(ij),b0.data(ij),gdat_data.t);
+    ij=find(~isnan(a_minor.data));
+    a_minor_t = interp1(a_minor.dim{1}(ij),a_minor.data(ij),gdat_data.t);
+    gdat_data.data = 100.*beta.data ./ ip_t.*1.e6 .* b0_t .* a_minor_t;
+    gdat_data.data_fullpath='100*beta/ip*1e6*b0*a_minor, each from gdat_tcv';
+    gdat_data.units = '';
+    gdat_data.dimunits = beta.dimunits;
     
    case {'ne','te'}
     % ne or Te from Thomson data on raw z mesh vs (z,t)
diff --git a/crpptbx_new/gdat_data_request_names.xlsx b/crpptbx_new/gdat_data_request_names.xlsx
index a064c20cd7b818eae5f9a3929fd74b5aba1243f9..966dc80b3f5fc6c3c97ef18d07e468cf2f17784b 100644
Binary files a/crpptbx_new/gdat_data_request_names.xlsx and b/crpptbx_new/gdat_data_request_names.xlsx differ