diff --git a/matlab/TCV_IMAS/tcv_get_ids_magnetics.m b/matlab/TCV_IMAS/tcv_get_ids_magnetics.m
index e1491454cd4214f7e53b1f66b8431c755fd6159b..8f405901f5f4fa16ac9196c991e1c0a6ecef5f91 100644
--- a/matlab/TCV_IMAS/tcv_get_ids_magnetics.m
+++ b/matlab/TCV_IMAS/tcv_get_ids_magnetics.m
@@ -5,7 +5,7 @@ function [ids_magnetics,ids_magnetics_description,varargout] = tcv_get_ids_magne
 % gdat_params: gdat_data.gdat_params to get all params passed from original call, in particular error_bar options
 %
 
-if exist('gdat_params')
+if exist('gdat_params','var')
   [ids_magnetics, params_magnetics] = tcv_ids_headpart(shot, ids_magnetics_empty,'magnetics','homogeneous_time',0, ...
           'gdat_params',gdat_params,varargin{:});
 else
@@ -18,10 +18,13 @@ end
 [ids_magnetics.flux_loop,ids_magnetics_description.flux_loop]= tcv_ids_flux_loop(params_magnetics.shot, ids_magnetics.flux_loop(1),gdat_params);
 [ids_magnetics.method,ids_magnetics_description.method]= tcv_ids_ip(params_magnetics.shot, ids_magnetics.method(1),gdat_params);
 
-% make arrays not filled in empty: not the case for magnetics
+% make arrays not filled in empty
+ids_magnetics.b_field_pol_probe = {};
+ids_magnetics.b_field_tor_probe = {};
+ids_magnetics.rogowski_coil = {};
 
 % cocos automatic transform
-if exist('ids_generic_cocos_nodes_transformation_symbolic') == 2
+if exist('ids_generic_cocos_nodes_transformation_symbolic','file')
   [ids_magnetics,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_magnetics,'magnetics',gdat_params.cocos_in, ...
           gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in, ...
           gdat_params.error_bar,gdat_params.nverbose);
diff --git a/matlab/TCV_IMAS/tcv_get_ids_pf_active.m b/matlab/TCV_IMAS/tcv_get_ids_pf_active.m
index a8978b733c0c9e9d2b97084c9fec085298b5c1dd..1df35c1c1f990eff12d6d9bca0fe1403629eb9dc 100644
--- a/matlab/TCV_IMAS/tcv_get_ids_pf_active.m
+++ b/matlab/TCV_IMAS/tcv_get_ids_pf_active.m
@@ -4,7 +4,7 @@ function [ids_pf_active,ids_pf_active_description,varargout] = tcv_get_ids_pf_ac
 %
 
 % Input pharser
-if exist('gdat_params')
+if exist('gdat_params','var')
   [ids_pf_active, params] = tcv_ids_headpart(shot, ids_pf_active_empty,'pf_active','homogeneous_time',0,'gdat_params',gdat_params,varargin{:});
 else
   [ids_pf_active, params] = tcv_ids_headpart(shot, ids_pf_active_empty,'pf_active','homogeneous_time',0,varargin{:});
@@ -21,7 +21,7 @@ end
 ids_pf_active.vertical_force = {};
 
 % cocos automatic transform
-if exist('ids_generic_cocos_nodes_transformation_symbolic') == 2
+if exist('ids_generic_cocos_nodes_transformation_symbolic','file')
   [ids_pf_active,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_pf_active,'pf_active',gdat_params.cocos_in, ...
           gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in, ...
           gdat_params.error_bar,gdat_params.nverbose);
diff --git a/matlab/TCV_IMAS/tcv_get_ids_tf.m b/matlab/TCV_IMAS/tcv_get_ids_tf.m
index 4ce27ae1376038cd1e79fd15adc829ca55145114..9bb067037b2a80b527a9dbb1a961bd07ba509bc2 100644
--- a/matlab/TCV_IMAS/tcv_get_ids_tf.m
+++ b/matlab/TCV_IMAS/tcv_get_ids_tf.m
@@ -11,7 +11,7 @@ function [ids_tf,ids_tf_description] =  tcv_get_ids_tf(shot, ids_tf_empty, gdat_
 
 ids_tf = ids_tf_empty;
 
-if exist('gdat_params')
+if exist('gdat_params','var')
   [ids_tf, params_tf] = tcv_ids_headpart(shot, ids_tf_empty,'tf','homogeneous_time',0,'gdat_params',gdat_params,varargin{:});
   params_eff = gdat_params;
   params_eff.data_request = 'b0';
@@ -26,6 +26,8 @@ if ~ischar(tmp.data)
   ids_tf_description.r0 = ' b0.r0 from gdat_tcv(shot, ''b0'')';
   ids_tf.b_field_tor_vacuum_r.data = tmp.data .* ids_tf.r0;
   ids_tf_description.b_field_tor_vacuum_r.data = ' gdat_tcv(shot, ''b0'') * .r0';
+  ids_tf.b_field_tor_vaccum_r.data_error_upper = 19.2e-6*200; %TODO: Check the 200A value (might be more since TOR goes up to 70kA)
+  ids_tf_description.b_field_tor_vacuum_r.data_error_upper = ' Error on coil measurement is 200A, b0.r0 is 19.2e-6*iphi';
   ids_tf.b_field_tor_vacuum_r.time = tmp.t;
 else
   % leave defaults
@@ -37,7 +39,7 @@ ids_tf.coil = {};
 ids_tf.field_map = {};
 
 % cocos automatic transform
-if exist('ids_generic_cocos_nodes_transformation_symbolic') == 2
+if exist('ids_generic_cocos_nodes_transformation_symbolic','file')
   [ids_tf,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_tf,'tf',gdat_params.cocos_in, ...
           gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in, ...
           gdat_params.error_bar,gdat_params.nverbose);
diff --git a/matlab/TCV_IMAS/tcv_get_ids_wall.m b/matlab/TCV_IMAS/tcv_get_ids_wall.m
index 19404fea23bd1528131bbd96401fded284c8e92b..537e23253e551d43253eefbb3de11726ee20af6c 100644
--- a/matlab/TCV_IMAS/tcv_get_ids_wall.m
+++ b/matlab/TCV_IMAS/tcv_get_ids_wall.m
@@ -4,8 +4,8 @@ function [ids_wall,ids_wall_description,varargout] = tcv_get_ids_wall(shot, ids_
 % gdat_params: gdat_data.gdat_params to get all params passed from original call, in particular error_bar options
 %
 
-% Input pharser
-if exist('gdat_params')
+% Input parser
+if exist('gdat_params','var')
   [ids_wall, params] = tcv_ids_headpart(shot, ids_wall_empty,'wall','homogeneous_time',0,'gdat_params',gdat_params,varargin{:});
 else
   [ids_wall, params] = tcv_ids_headpart(shot, ids_wall_empty,'wall','homogeneous_time',0,varargin{:});
@@ -14,19 +14,20 @@ else
 end
 
 % Get data of outline, only static, no need for gdat_params and time_out parameter for example
-[ids_wall.description_2d,ids_wall_description.description_2d]= tcv_ids_wall_description_2d(params.shot, ids_wall.description_2d(1));
+[ids_wall.description_2d,ids_wall_description.description_2d]= tcv_ids_wall_description_2d(ids_wall.description_2d(1));
 
 % make arrays not filled in empty: not the case for magnetics
 ids_wall.global_quantities.neutral = {}; % wall does not work with Antoine's addpath
 ids_wall.description_ggd = {};
 ids_wall.description_2d{1}.mobile.unit = {};
+ids_wall.description_2d{1}.vessel.unit{1}.element = {};
 
 
 %% TODO
 ids_description = [];
 
 % cocos automatic transform (should have nothing to do for wall)
-if exist('ids_generic_cocos_nodes_transformation_symbolic') == 2
+if exist('ids_generic_cocos_nodes_transformation_symbolic','file')
   [ids_wall,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_wall,'wall',gdat_params.cocos_in, ...
           gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in, ...
           gdat_params.error_bar,gdat_params.nverbose);
diff --git a/matlab/TCV_IMAS/tcv_ids_bpol_probe.m b/matlab/TCV_IMAS/tcv_ids_bpol_probe.m
index d5764521e61a01fa450a32a71223c19c334276be..2cb28fae28b146248cbfd4d7a4ded9bf941f754d 100644
--- a/matlab/TCV_IMAS/tcv_ids_bpol_probe.m
+++ b/matlab/TCV_IMAS/tcv_ids_bpol_probe.m
@@ -11,24 +11,25 @@ function [sub_ids_struct_out,sub_ids_struct_out_description, varargout] =  tcv_i
 %
 
 error_bar = 'delta';
-if exist('gdat_params') && isfield(gdat_params,'error_bar') && ~isempty(gdat_params.error_bar)
+if exist('gdat_params','var') && isfield(gdat_params,'error_bar') && ~isempty(gdat_params.error_bar)
   error_bar = gdat_params.error_bar;
 end
 params_eff_ref = gdat_params; params_eff_ref.doplot=0;
-try;params_eff_ref=rmfield(params_eff_ref,'source');catch;end % make sure no source (from ids def)
+try params_eff_ref=rmfield(params_eff_ref,'source');catch;end % make sure no source (from ids def)
 
 % Get data
 params_eff = params_eff_ref;
 params_eff.data_request = '\MAGNETICS::BPOL_003';
 tmp = gdat_tcv( shot,params_eff);
-tmp_desc = params_eff.data_request;
+% tmp_desc = params_eff.data_request;
 names = tmp.dim{2};
 time = tmp.dim{1};
 data = tmp.data;
 params_eff.data_request = 'static("ANG_M")';
-ang_m = gdat_tcv(shot,params_eff);
-ang_m_desc = params_eff.data_request;
+% ang_m = gdat_tcv(shot,params_eff);
+% ang_m_desc = params_eff.data_request;
 
+%TODO find this either in the static or the magnetics tree.
 % from mapping file from Holger:
 probes_name={ '001' '002' '003' '004' '005' '006' '007' '008' '009' '010' '011' '012' '013' '014' '015' '016' '017' '018' '019' ...
              '020' '021' '022' '023' '024' '025' '026' '027' '028' '029' '030' '031' '032' '033' '034' '035' '036' '037' '038'};
@@ -46,6 +47,7 @@ probes_length = [2.400000D-02, 2.400000D-02, 2.400000D-02, 2.400000D-02, 2.40000
 % Preallocate output structure
 Nprobes = size(tmp.data,2);
 sub_ids_struct_out(1:Nprobes) = ids_structures;
+sub_ids_struct_out_description = cell(1,Nprobes);
 
 for ii=1:Nprobes
     sub_ids_struct_out{ii}.name  = [names{ii}];
@@ -62,7 +64,7 @@ for ii=1:Nprobes
     params_eff.data_request = ['static("ANG_M")[$1]'',''' sub_ids_struct_out{ii}.name ''];
     aa =  gdat_tcv(shot,params_eff);
     sub_ids_struct_out{ii}.poloidal_angle  = -aa.data;
-    ij=strmatch(names{ii},probes_name);
+    ij=strcmp(names{ii},probes_name);
     sub_ids_struct_out{ii}.area = probes_area(ij);
     sub_ids_struct_out{ii}.length = probes_length(ij);
     sub_ids_struct_out_description{ii}.poloidal_angle  = ['from ' aa.data_fullpath];
@@ -71,13 +73,13 @@ for ii=1:Nprobes
     sub_ids_struct_out_description{ii}.length = 'from array in machine description file';
 end
 
-fixed_error = 0.009999999776483;
+fixed_error = 0.01;
 switch error_bar
  case 'delta'
   for ii=1:Nprobes
     sub_ids_struct_out{ii}.field.data_error_upper = fixed_error.*ones(size(sub_ids_struct_out{ii}.field.data));% TO BE FOUND;
     sub_ids_struct_out_description{ii}.field_data_error_upper = ['from fixed error value in case ' error_bar];
-    sub_ids_struct_out_description{ii}.field_data_error_lower = ['not provided since symmetric'];
+    sub_ids_struct_out_description{ii}.field_data_error_lower = 'not provided since symmetric';
   end
  case 'delta_with_lower'
   for ii=1:Nprobes
diff --git a/matlab/TCV_IMAS/tcv_ids_coil.m b/matlab/TCV_IMAS/tcv_ids_coil.m
index 13eb86f0f7d3580ba00cb632fc5fa407f6024323..8fc6ae8171d4beecee6e90c79594b4e02f671b55 100644
--- a/matlab/TCV_IMAS/tcv_ids_coil.m
+++ b/matlab/TCV_IMAS/tcv_ids_coil.m
@@ -13,11 +13,11 @@ function [ids_struct_out,ids_struct_out_description] =  tcv_ids_coil(shot, ids_s
 % TODO add logic to get the current in the coils only once.
 
 error_bar = 'delta';
-if exist('gdat_params') && isfield(gdat_params,'error_bar') && ~isempty(gdat_params.error_bar)
+if exist('gdat_params','var') && isfield(gdat_params,'error_bar') && ~isempty(gdat_params.error_bar)
   error_bar = gdat_params.error_bar;
 end
 params_eff_ref = gdat_params; params_eff_ref.doplot=0;
-try;params_eff_ref=rmfield(params_eff_ref,'source');catch;end % make sure no source (from ids def)
+try params_eff_ref=rmfield(params_eff_ref,'source');catch;end % make sure no source (from ids def)
 
 % Coils that can be characterized by R, Z and a
 % crosssectional area are described as distinct coils with a single element, this also corresponds to coils with distinct TCV names).
@@ -44,117 +44,118 @@ r_c     = mdsvalue('_r_c=static(''r_c'')'); % R position
 z_c     = mdsvalue('_z_c=static(''z_c'')'); % Z position
 w_c     = mdsvalue('static(''w_c'')'); % width rectangular description
 h_c     = mdsvalue('static(''h_c'')'); % height rectangular description
-a_c     = mdsvalue('static(''a_c'')'); % tilt angle for parallelogram representation ( deprecated representation in IDS)
+% a_c     = mdsvalue('static(''a_c'')'); % tilt angle for parallelogram representation ( deprecated representation in IDS)
 nt_c    = mdsvalue('static(''nt_c'')'); % number of turns
 xsect_c = mdsvalue('static(''xsect_c'')');
 res_c   = mdsvalue('static(''res_c'')'); % resistence of the coil
 sizepfc = numel(r_c);
-namepfc = mdsvalue('dim_of(_r_c)');
+namepfc = mdsvalue('static(''dim_c'')');
 
 % Set effective turns in T1 and T2 (see J.-M. Moret, et al., RSI 69 (1998) 2333)
-iT = strmatch('T_001',namepfc);
+iT = strcmp('T_001',namepfc);
 nt_c(iT)=26/68;
-iT = strmatch('T_002',namepfc);
+iT = strcmp('T_002',namepfc);
 nt_c(iT)=42/68;
-iT = strmatch('T_003',namepfc);      % Return current
+iT = strcmp('T_003',namepfc);      % Return current
 nt_c(iT)=1;
 
 % Approximate circular G-coil conductor with a square of the same crosssection
-iG=strmatch('G_00',namepfc);
+iG=strcmp('G_00',namepfc);
 w_c(iG)=sqrt(xsect_c(iG));
 h_c(iG)=sqrt(xsect_c(iG));
 
 %% Put data to ids structure
 ids_struct_out(1:sizepfc) = ids_structures;
+ids_struct_out_description = cell(1,sizepfc);
 ind_coil_ids = 0;
 params_eff = params_eff_ref;
 for ii=1:ncircuits2ids
-    ncoil2ids = numel(coil_names2ids{ii}); % number of coils for a given circuit
-
-    for jj = 1:ncoil2ids
-      ind_coil_ids = ind_coil_ids +1;
-      ids_struct_out{ind_coil_ids}.name = coil_names2ids{ii}{jj};
-      ids_struct_out_description{ind_coil_ids}.name = ['through aa=tcv_ids_pf_active_definition from aa.coil_names  '];
-
-      % time-varying data
-      if shot == -1
-        tmpdata.dim{1} = [];
-        tmpdata.data = [];
-        warning('no time data loaded for shot %d',shot);
-      else
-        params_eff.data_request = mds_paths2ids{ii};
-        tmpdata = gdat_tcv(shot,params_eff);
-      end
-% $$$       ids_struct_out{ind_coil_ids}.current.data = tmpdata.data;
-% $$$       ids_struct_out_description{ind_coil_ids}.current.data = ['from ' mds_paths2ids{ii}];
-      ids_struct_out{ind_coil_ids}.current.data = pf_def.coil_current_signs{ii}(jj) .* tmpdata.data;
-      ids_struct_out_description{ind_coil_ids}.current.data = ['from ' num2str(pf_def.coil_current_signs{ii}(jj)) ' * ' mds_paths2ids{ii}];
-try
+  ncoil2ids = numel(coil_names2ids{ii}); % number of coils for a given circuit
+  
+  for jj = 1:ncoil2ids
+    ind_coil_ids = ind_coil_ids +1;
+    ids_struct_out{ind_coil_ids}.name = coil_names2ids{ii}{jj};
+    ids_struct_out_description{ind_coil_ids}.name = 'through aa=tcv_ids_pf_active_definition from aa.coil_names  ';
+    
+    % time-varying data
+    if shot == -1
+      tmpdata.dim{1} = [];
+      tmpdata.data = [];
+      warning('no time data loaded for shot %d',shot);
+    else
+      params_eff.data_request = mds_paths2ids{ii};
+      tmpdata = gdat_tcv(shot,params_eff);
+    end
+    % $$$       ids_struct_out{ind_coil_ids}.current.data = tmpdata.data;
+    % $$$       ids_struct_out_description{ind_coil_ids}.current.data = ['from ' mds_paths2ids{ii}];
+    ids_struct_out{ind_coil_ids}.current.data = pf_def.coil_current_signs{ii}(jj) .* tmpdata.data;
+    ids_struct_out_description{ind_coil_ids}.current.data = ['from ' num2str(pf_def.coil_current_signs{ii}(jj)) ' * ' mds_paths2ids{ii}];
+    try
       ids_struct_out{ind_coil_ids}.current.time = tmpdata.dim{1};
-catch
-  keyboard
-  end
-
-      % Find index on static tree
-      tmpind = find(strcmp(ids_struct_out{ind_coil_ids}.name, namepfc));
-      ids_struct_out{ind_coil_ids}.element{1}.geometry.rectangle.r = r_c(tmpind);
-      ids_struct_out_description{ind_coil_ids}.element{1}.geometry.rectangle_r = ['from static(''r_c'')'];
-      ids_struct_out{ind_coil_ids}.element{1}.geometry.rectangle.z = z_c(tmpind);
-      ids_struct_out_description{ind_coil_ids}.element{1}.geometry.rectangle_z = ['from static(''z_c'')'];
-      ids_struct_out{ind_coil_ids}.element{1}.geometry.rectangle.width = w_c(tmpind);
-      ids_struct_out_description{ind_coil_ids}.element{1}.geometry.rectangle_width = ['from static(''w_c'')'];
-      ids_struct_out{ind_coil_ids}.element{1}.geometry.rectangle.height = h_c(tmpind);
-      ids_struct_out_description{ind_coil_ids}.element{1}.geometry.rectangle_height = ['from static(''h_c'')'];
-      ids_struct_out{ind_coil_ids}.element{1}.turns_with_sign = nt_c(tmpind);
-      ids_struct_out_description{ind_coil_ids}.element{1}.turns_with_sign = ['from static(''nt_c'')'];
-      ids_struct_out{ind_coil_ids}.element{1}.geometry.geometry_type = 2; % 1 outline, 2 rectangle, 4 arc of circle
-      ids_struct_out_description{ind_coil_ids}.element{1}.geometry.geometry_type = 'rectangle';
-
-      ids_struct_out{ind_coil_ids}.resistance = res_c(tmpind);
-      ids_struct_out_description{ind_coil_ids}.resistance = ['from static(''res_c'')'];
+    catch
+      keyboard
     end
+    
+    % Find index on static tree
+    tmpind = find(strcmp(ids_struct_out{ind_coil_ids}.name, namepfc));
+    ids_struct_out{ind_coil_ids}.element{1}.geometry.rectangle.r = r_c(tmpind);
+    ids_struct_out_description{ind_coil_ids}.element{1}.geometry.rectangle_r = 'from static(''r_c'')';
+    ids_struct_out{ind_coil_ids}.element{1}.geometry.rectangle.z = z_c(tmpind);
+    ids_struct_out_description{ind_coil_ids}.element{1}.geometry.rectangle_z = 'from static(''z_c'')';
+    ids_struct_out{ind_coil_ids}.element{1}.geometry.rectangle.width = w_c(tmpind);
+    ids_struct_out_description{ind_coil_ids}.element{1}.geometry.rectangle_width = 'from static(''w_c'')';
+    ids_struct_out{ind_coil_ids}.element{1}.geometry.rectangle.height = h_c(tmpind);
+    ids_struct_out_description{ind_coil_ids}.element{1}.geometry.rectangle_height = 'from static(''h_c'')';
+    ids_struct_out{ind_coil_ids}.element{1}.turns_with_sign = nt_c(tmpind);
+    ids_struct_out_description{ind_coil_ids}.element{1}.turns_with_sign = 'from static(''nt_c'')';
+    ids_struct_out{ind_coil_ids}.element{1}.geometry.geometry_type = 2; % 1 outline, 2 rectangle, 4 arc of circle
+    ids_struct_out_description{ind_coil_ids}.element{1}.geometry.geometry_type = 'rectangle';
+    
+    ids_struct_out{ind_coil_ids}.resistance = res_c(tmpind);
+    ids_struct_out_description{ind_coil_ids}.resistance = 'from static(''res_c'')';
+  end
 end
 
 % fixed_error = 200.;
 ind_coil_ids = 0;
 switch error_bar
- case 'delta'
-  for ii=1:ncircuits2ids
-    ncoil2ids = numel(coil_names2ids{ii}); % number of coils for a given circuit
-    for jj = 1:ncoil2ids
-      fixed_error = pf_def.coil_current_error{ii}(jj);
-      ind_coil_ids = ind_coil_ids +1;
-      ids_struct_out{ind_coil_ids}.current.data_error_upper = fixed_error.*ones(size(ids_struct_out{ind_coil_ids}.current.data));
-      ids_struct_out_description{ind_coil_ids}.current_data_error_upper = fixed_error.*ones(size(ids_struct_out{ind_coil_ids}.current.data));
-      ids_struct_out_description{ind_coil_ids}.current_data_error_lower = ['not provided since symmetric'];
+  case 'delta'
+    for ii=1:ncircuits2ids
+      ncoil2ids = numel(coil_names2ids{ii}); % number of coils for a given circuit
+      for jj = 1:ncoil2ids
+        fixed_error = pf_def.coil_current_error{ii}(jj);
+        ind_coil_ids = ind_coil_ids +1;
+        ids_struct_out{ind_coil_ids}.current.data_error_upper = fixed_error.*ones(size(ids_struct_out{ind_coil_ids}.current.data));
+        ids_struct_out_description{ind_coil_ids}.current_data_error_upper = fixed_error.*ones(size(ids_struct_out{ind_coil_ids}.current.data));
+        ids_struct_out_description{ind_coil_ids}.current_data_error_lower = 'not provided since symmetric';
+      end
     end
-  end
- case 'delta_with_lower'
-  for ii=1:ncircuits2ids
-    ncoil2ids = numel(coil_names2ids{ii}); % number of coils for a given circuit
-    for jj = 1:ncoil2ids
-      fixed_error = pf_def.coil_current_error{ii}(jj);
-      ind_coil_ids = ind_coil_ids +1;
-      ids_struct_out{ind_coil_ids}.current.data_error_upper = fixed_error.*ones(size(ids_struct_out{ind_coil_ids}.current.data));
-      ids_struct_out{ind_coil_ids}.current.data_error_lower = ids_struct_out{ind_coil_ids}.current.data_error_upper;
-      ids_struct_out_description{ind_coil_ids}.current_data_error_upper = ['from fixed error value in case ' error_bar];
-      ids_struct_out_description{ind_coil_ids}.current_data_error_lower = ['from fixed error value in case ' error_bar];
+  case 'delta_with_lower'
+    for ii=1:ncircuits2ids
+      ncoil2ids = numel(coil_names2ids{ii}); % number of coils for a given circuit
+      for jj = 1:ncoil2ids
+        fixed_error = pf_def.coil_current_error{ii}(jj);
+        ind_coil_ids = ind_coil_ids +1;
+        ids_struct_out{ind_coil_ids}.current.data_error_upper = fixed_error.*ones(size(ids_struct_out{ind_coil_ids}.current.data));
+        ids_struct_out{ind_coil_ids}.current.data_error_lower = ids_struct_out{ind_coil_ids}.current.data_error_upper;
+        ids_struct_out_description{ind_coil_ids}.current_data_error_upper = ['from fixed error value in case ' error_bar];
+        ids_struct_out_description{ind_coil_ids}.current_data_error_lower = ['from fixed error value in case ' error_bar];
+      end
     end
-  end
- case 'added'
-  for ii=1:ncircuits2ids
-    ncoil2ids = numel(coil_names2ids{ii}); % number of coils for a given circuit
-    for jj = 1:ncoil2ids
-      fixed_error = pf_def.coil_current_error{ii}(jj);
-      ind_coil_ids = ind_coil_ids +1;
-      ids_struct_out{ind_coil_ids}.current.data_error_upper = ids_struct_out{ind_coil_ids}.current.data ...
+  case 'added'
+    for ii=1:ncircuits2ids
+      ncoil2ids = numel(coil_names2ids{ii}); % number of coils for a given circuit
+      for jj = 1:ncoil2ids
+        fixed_error = pf_def.coil_current_error{ii}(jj);
+        ind_coil_ids = ind_coil_ids +1;
+        ids_struct_out{ind_coil_ids}.current.data_error_upper = ids_struct_out{ind_coil_ids}.current.data ...
           + fixed_error.*ones(size(ids_struct_out{ind_coil_ids}.current.data));
-      ids_struct_out{ind_coil_ids}.current.data_error_lower = ids_struct_out{ind_coil_ids}.current.data ...
+        ids_struct_out{ind_coil_ids}.current.data_error_lower = ids_struct_out{ind_coil_ids}.current.data ...
           - fixed_error.*ones(size(ids_struct_out{ind_coil_ids}.current.data));
-      ids_struct_out_description{ind_coil_ids}.current_data_error_upper = ['from data + fixed error value in case ' error_bar];
-      ids_struct_out_description{ind_coil_ids}.current_data_error_lower = ['from data - fixed error value in case ' error_bar];
+        ids_struct_out_description{ind_coil_ids}.current_data_error_upper = ['from data + fixed error value in case ' error_bar];
+        ids_struct_out_description{ind_coil_ids}.current_data_error_lower = ['from data - fixed error value in case ' error_bar];
+      end
     end
-  end
- otherwise
-  error(['tcv_ids_bpol_loop: error_bar option not known: ' error_bar])
+  otherwise
+    error(['tcv_ids_bpol_loop: error_bar option not known: ' error_bar])
 end
diff --git a/matlab/TCV_IMAS/tcv_ids_flux_loop.m b/matlab/TCV_IMAS/tcv_ids_flux_loop.m
index 5ba7c87c35a45bd1797527370a5d3f4b050290d8..fdd8f1315badc9a7f43454ac788f6e5da1c7ecf1 100644
--- a/matlab/TCV_IMAS/tcv_ids_flux_loop.m
+++ b/matlab/TCV_IMAS/tcv_ids_flux_loop.m
@@ -11,17 +11,17 @@ function [sub_ids_struct_out,sub_ids_struct_out_description] = tcv_ids_flux_loop
 %
 
 error_bar = 'delta';
-if exist('gdat_params') && isfield(gdat_params,'error_bar') && ~isempty(gdat_params.error_bar)
+if exist('gdat_params','var') && isfield(gdat_params,'error_bar') && ~isempty(gdat_params.error_bar)
   error_bar = gdat_params.error_bar;
 end
 params_eff_ref = gdat_params; params_eff_ref.doplot=0;
-try;params_eff_ref=rmfield(params_eff_ref,'source');catch;end % make sure no source (from ids def)
+try params_eff_ref=rmfield(params_eff_ref,'source');catch;end % make sure no source (from ids def)
 
 % Get data
 params_eff = params_eff_ref;
 params_eff.data_request = 'tcv_idealloop("FLUX")';
 tmp = gdat_tcv(shot,params_eff);
-tmp_desc = params_eff.data_request;
+% tmp_desc = params_eff.data_request;
 names = tmp.dim{2};
 time = tmp.dim{1};
 data = tmp.data;
@@ -29,6 +29,7 @@ data = tmp.data;
 % Preallocate output structure
 Nprobes = size(tmp.data,2);
 sub_ids_struct_out(1:Nprobes) = ids_structures;
+sub_ids_struct_out_description = cell(1,Nprobes);
 
 % Put data on ids structure
 for ii=1:Nprobes
@@ -38,21 +39,20 @@ for ii=1:Nprobes
     sub_ids_struct_out_description{ii}.position_r  = ['from ''STATIC("R_F"  )[' sub_ids_struct_out{ii}.name ']'''];
     sub_ids_struct_out{ii}.position{1}.z  = mdsvalue('STATIC("Z_F"  )[$1]',sub_ids_struct_out{ii}.name);
     sub_ids_struct_out_description{ii}.position_z  = ['from ''STATIC("Z_F"  )[' sub_ids_struct_out{ii}.name ']'''];
-    sub_ids_struct_out{ii}.position{1}.phi  = 0.;
-    sub_ids_struct_out_description{ii}.position_phi  = ['assumed 0'];
+%     sub_ids_struct_out{ii}.position{1}.phi  = 0.; % TO BE FOUND
+%     sub_ids_struct_out_description{ii}.position_phi  = 'assumed 0';
     sub_ids_struct_out{ii}.flux.data  =  data(:,ii);
     sub_ids_struct_out_description{ii}.flux_data  =  'from ''tcv_idealloop("FLUX")''';
     sub_ids_struct_out{ii}.flux.time  =  time;
-    % sub_ids_struct_out{ii}.position.phi  =  0; % TO BE FOUND
 end
 
-fixed_error = 0.001200000056997;
+fixed_error = 0.0012*2*pi; % Convert old LIUQE error to Webers
 switch error_bar
  case 'delta'
   for ii=1:Nprobes
     sub_ids_struct_out{ii}.flux.data_error_upper = fixed_error.*ones(size(sub_ids_struct_out{ii}.flux.data));
     sub_ids_struct_out_description{ii}.flux_data_error_upper = ['from fixed error value in case ' error_bar];
-    sub_ids_struct_out_description{ii}.flux_data_error_lower = ['not provided since symmetric'];
+    sub_ids_struct_out_description{ii}.flux_data_error_lower = 'not provided since symmetric';
     %(not filled if symmetric) sub_ids_struct_out{ii}.flux.data_error_lower = 0.0012;%.*ones(size(sub_ids_struct_out{ii}.flux.data));
   end
  case 'delta_with_lower'
diff --git a/matlab/TCV_IMAS/tcv_ids_ip.m b/matlab/TCV_IMAS/tcv_ids_ip.m
index fe1e786ec5b28dc2daaf9eddfd422c1f33251309..dd89754216d7a015f53d8e1b1b66418328e0bf88 100644
--- a/matlab/TCV_IMAS/tcv_ids_ip.m
+++ b/matlab/TCV_IMAS/tcv_ids_ip.m
@@ -11,22 +11,22 @@ function [ids_struct_out,ids_struct_out_description] = tcv_ids_ip(shot, ids_stru
 %
 
 error_bar = 'delta';
-if exist('gdat_params') && isfield(gdat_params,'error_bar') && ~isempty(gdat_params.error_bar)
+if exist('gdat_params','var') && isfield(gdat_params,'error_bar') && ~isempty(gdat_params.error_bar)
   error_bar = gdat_params.error_bar;
 end
 params_eff_ref = gdat_params; params_eff_ref.doplot=0;
-try;params_eff_ref=rmfield(params_eff_ref,'source');catch;end % make sure no source (from ids def)
+try params_eff_ref=rmfield(params_eff_ref,'source');catch;end % make sure no source (from ids def)
 
 % Get data
 params_eff = params_eff_ref;
 params_eff.data_request = 'ip_trapeze';
 tmp = gdat_tcv(shot,params_eff);
-tmp_desc = params_eff.data_request;
+% tmp_desc = params_eff.data_request;
 time = tmp.dim{1};
 data = tmp.data;
 params_eff.data_request = '\results::dmlcor';
 tmpdml = gdat_tcv(shot,params_eff);
-tmpdml_desc = params_eff.data_request;
+% tmpdml_desc = params_eff.data_request;
 
 % Preallocate dimension
 ids_struct_out = ids_structures;
@@ -40,16 +40,16 @@ ids_struct_out{1}.diamagnetic_flux.data = tmpdml.data;
 ids_struct_out_description{1}.diamagnetic_flux = ['from ' tmpdml.data_fullpath];
 ids_struct_out{1}.diamagnetic_flux.time = tmpdml.t;
 
-fixed_error_ip = 2.4e3;
-fixed_error_diamagnetic_flux = 0.01;
+fixed_error_ip = 24e3;
+fixed_error_diamagnetic_flux = 0.13e-3;
 switch error_bar
  case 'delta'
   ids_struct_out{1}.ip.data_error_upper = fixed_error_ip.*ones(size(ids_struct_out{1}.ip.data));
   ids_struct_out_description{1}.ip_data_error_upper = ['from fixed error value in case ' error_bar];
-  ids_struct_out_description{1}.ip_data_error_lower = ['not provided since symmetric'];
+  ids_struct_out_description{1}.ip_data_error_lower = 'not provided since symmetric';
   ids_struct_out{1}.diamagnetic_flux.data_error_upper = fixed_error_diamagnetic_flux.*ones(size(ids_struct_out{1}.diamagnetic_flux.data));
   ids_struct_out_description{1}.diamagnetic_flux_data_error_upper = ['from fixed error value in case ' error_bar];
-  ids_struct_out_description{1}.diamagnetic_flux_data_error_lower = ['not provided since symmetric'];
+  ids_struct_out_description{1}.diamagnetic_flux_data_error_lower = 'not provided since symmetric';
  case 'delta_with_lower'
   ids_struct_out{1}.ip.data_error_upper = fixed_error_ip.*ones(size(ids_struct_out{1}.ip.data));
   ids_struct_out{1}.ip.data_error_lower = ids_struct_out{1}.ip.data_error_upper;
diff --git a/matlab/TCV_IMAS/tcv_ids_pf_active_definition.m b/matlab/TCV_IMAS/tcv_ids_pf_active_definition.m
index 35230de7d17067ce3c7292de7b3cb202203be099..413340424beb1618110ad6bee605be8d466516d6 100644
--- a/matlab/TCV_IMAS/tcv_ids_pf_active_definition.m
+++ b/matlab/TCV_IMAS/tcv_ids_pf_active_definition.m
@@ -1,87 +1,96 @@
-function [ combined_structure] =  tcv_ids_pf_active_definition()
+function [ combined_structure] =  tcv_ids_pf_active_definition(doplot)
 % All circuits are connected in series and has only 1 power supply, so they
 % share the same current.
 
+if nargin < 1, doplot = 0;end
+
+% NOTE: The sign for T_00* comes from the connection matrix in the static
+% tree "T_C_A".
+% TODO: We could probably rebuild the connection matrix from the static
+% tree node "T_C_A".
+
 % {Coil name}, [connection side identifier]
-error_fixed = 200.;
+error_fixed = 200.; % This is the error assigned by LIUQE to each circuit/PS
+                    % Since all coils are serially connected to their PS,
+                    % this is also the error for individual coil currents.
 coil_names_and_current_sign = {...
- {'A_001'}, [1], error_fixed*0.007; ... % Circuit 1
- {'B_001', 'B_002',  'C_001',  'C_002',  'D_001',  'D_002'}, [1, 1, 1, 1, 1, 1], ...
-    error_fixed*[0.03448275862, 0.03448275862, 0.08333333333333, 0.08333333333333, 0.125, 0.125]; ... % Circuit 2
-    {'E_001'}, [1], error_fixed*0.02941176470588; ... % Circuit 3
-    {'E_002'}, [1], error_fixed*0.02941176470588; ... % Circuit 4
-    {'E_003'}, [1], error_fixed*0.02941176470588; ... % Circuit 5
-    {'E_004'}, [1], error_fixed*0.02941176470588; ... % Circuit 6
-    {'E_005'}, [1], error_fixed*0.02941176470588; ... % Circuit 7
-    {'E_006'}, [1], error_fixed*0.02941176470588; ... % Circuit 8
-    {'E_007'}, [1], error_fixed*0.02941176470588; ... % Circuit 9
-    {'E_008'}, [1], error_fixed*0.02941176470588; ... % Circuit 10
-    {'F_001'}, [1], error_fixed*0.02777777777778; ... % Circuit 11
-    {'F_002'}, [1], error_fixed*0.02777777777778; ... % Circuit 12
-    {'F_003'}, [1], error_fixed*0.02777777777778; ... % Circuit 13
-    {'F_004'}, [1], error_fixed*0.02777777777778; ... % Circuit 14
-    {'F_005'}, [1], error_fixed*0.02777777777778; ... % Circuit 15
-    {'F_006'}, [1], error_fixed*0.02777777777778; ... % Circuit 16
-    {'F_007'}, [1], error_fixed*0.02777777777778; ... % Circuit 17
-    {'F_008'}, [1], error_fixed*0.02777777777778; ... % Circuit 18
-    {'G_001', 'G_002', 'G_003', 'G_004', 'G_005', 'G_006'}, [1,1,1,-1,-1,-1], error_fixed*[1, 1, 1, 1, 1, 1]; ... % Circuit 19 Lower coils connected in opposite direcetion
-    {'T_001', 'T_002', 'T_003'}, [1,1,-1], error_fixed*[2.61538489704145, 1.619047511111125, 1]; ...% Circuit 20 %T003 in opposite direction
-};
+  {'A_001'}, 1, error_fixed; ... % Circuit 1
+  {'B_001', 'B_002',  'C_001',  'C_002',  'D_001',  'D_002'}, [1, 1, 1, 1, 1, 1], ...
+    error_fixed*[1, 1, 1, 1, 1, 1]; ... % Circuit 2
+  {'E_001'}, 1, error_fixed; ... % Circuit 3
+  {'E_002'}, 1, error_fixed; ... % Circuit 4
+  {'E_003'}, 1, error_fixed; ... % Circuit 5
+  {'E_004'}, 1, error_fixed; ... % Circuit 6
+  {'E_005'}, 1, error_fixed; ... % Circuit 7
+  {'E_006'}, 1, error_fixed; ... % Circuit 8
+  {'E_007'}, 1, error_fixed; ... % Circuit 9
+  {'E_008'}, 1, error_fixed; ... % Circuit 10
+  {'F_001'}, 1, error_fixed; ... % Circuit 11
+  {'F_002'}, 1, error_fixed; ... % Circuit 12
+  {'F_003'}, 1, error_fixed; ... % Circuit 13
+  {'F_004'}, 1, error_fixed; ... % Circuit 14
+  {'F_005'}, 1, error_fixed; ... % Circuit 15
+  {'F_006'}, 1, error_fixed; ... % Circuit 16
+  {'F_007'}, 1, error_fixed; ... % Circuit 17
+  {'F_008'}, 1, error_fixed; ... % Circuit 18
+  {'G_001', 'G_002', 'G_003', 'G_004', 'G_005', 'G_006'}, [ 1, 1, 1,-1,-1,-1], error_fixed*[ 1, 1, 1, 1, 1, 1]; ... % Circuit 19 Lower coils connected in opposite direcetion
+  {'T_001', 'T_002', 'T_003'}, [-1,-1, 1], error_fixed*[1, 1, 1]; ...% Circuit 20 %T003 in opposite direction
+  };
 power_supply_names_and_current_sign = {...
-{'OH1'}, [1];... % Circuit 1
-{'OH2'}, [1];... % Circuit 2
-{'E1'},  [1];...% Circuit 3
-{'E2'},  [1];...% Circuit 4
-{'E3'},  [1];... % Circuit 5
-{'E4'},  [1];... % Circuit 6
-{'E5'},  [1];... % Circuit 7
-{'E6'},  [1];... % Circuit 8
-{'E7'},  [1];... % Circuit 9
-{'E8'},  [1];... % Circuit 10
-{'F1'},  [1];... % Circuit 11
-{'F2'},  [1];... % Circuit 12
-{'F3'},  [1];... % Circuit 13
-{'F4'},  [1];... % Circuit 14
-{'F5'},  [1];... % Circuit 15
-{'F6'},  [1];... % Circuit 16
-{'F7'},  [1];... % Circuit 17
-{'F8'},  [1];... % Circuit 18
-{'FPS'}, [1];...% Circuit 19
-{'T'},   [1];... % Circuit 20
-};
-
-coil_names = {coil_names_and_current_sign{:,1}}';
-coil_current_sign = {coil_names_and_current_sign{:,2}};
-coil_current_error = {coil_names_and_current_sign{:,3}};
-power_supply_names = {power_supply_names_and_current_sign{:,1}}';
-power_supply_current_sign = {power_supply_names_and_current_sign{:,2}};
+  {'OH1'}, 1;... % Circuit 1
+  {'OH2'}, 1;... % Circuit 2
+  {'E1'},  1;... % Circuit 3
+  {'E2'},  1;... % Circuit 4
+  {'E3'},  1;... % Circuit 5
+  {'E4'},  1;... % Circuit 6
+  {'E5'},  1;... % Circuit 7
+  {'E6'},  1;... % Circuit 8
+  {'E7'},  1;... % Circuit 9
+  {'E8'},  1;... % Circuit 10
+  {'F1'},  1;... % Circuit 11
+  {'F2'},  1;... % Circuit 12
+  {'F3'},  1;... % Circuit 13
+  {'F4'},  1;... % Circuit 14
+  {'F5'},  1;... % Circuit 15
+  {'F6'},  1;... % Circuit 16
+  {'F7'},  1;... % Circuit 17
+  {'F8'},  1;... % Circuit 18
+  {'FPS'}, 1;... % Circuit 19
+  {'T'},   1;... % Circuit 20
+  };
+
+coil_names                = coil_names_and_current_sign(:,1);
+coil_current_sign         = coil_names_and_current_sign(:,2);
+coil_current_error        = coil_names_and_current_sign(:,3);
+power_supply_names        = power_supply_names_and_current_sign(:,1);
+power_supply_current_sign = power_supply_names_and_current_sign(:,2);
 
 
 circuit_names = power_supply_names;
 
 % mds path to be called with gdat
 mds_paths = {...
- '\magnetics::ipol[*,"OH_001"]';... % Circuit 1
- '\magnetics::ipol[*,"OH_002"]'; ... % Circuit 2
- '\magnetics::ipol[*,"E_001"]';... % Circuit 3
- '\magnetics::ipol[*,"E_002"]';...% Circuit 4
- '\magnetics::ipol[*,"E_003"]';...% Circuit 5
- '\magnetics::ipol[*,"E_004"]';...% Circuit 6
- '\magnetics::ipol[*,"E_005"]';...% Circuit 7
- '\magnetics::ipol[*,"E_006"]';...% Circuit 8
- '\magnetics::ipol[*,"E_007"]';...% Circuit 9
- '\magnetics::ipol[*,"E_008"]'; ...% Circuit 10
- '\magnetics::ipol[*,"F_001"]';...% Circuit 11
- '\magnetics::ipol[*,"F_002"]';...% Circuit 12
- '\magnetics::ipol[*,"F_003"]';...% Circuit 13
- '\magnetics::ipol[*,"F_004"]';...% Circuit 14
- '\magnetics::ipol[*,"F_005"]';...% Circuit 15
- '\magnetics::ipol[*,"F_006"]';...% Circuit 16
- '\magnetics::ipol[*,"F_007"]';...% Circuit 17
- '\magnetics::ipol[*,"F_008"]';... % Circuit 18
- 'is_in("G_001",dim_of(\magnetics::ipol,1)) ? \magnetics::ipol[*,"G_001"] : make_signal(zero(shape(data(\magnetics::ipol))[0],1.0),*,dim_of(\magnetics::ipol,0))';... % G coils % Circuit 19
- '\magnetics::iphi';... % Connection between tf coils % Circuit 20
-};
+  '\magnetics::ipol[*,"OH_001"]';... % Circuit 1
+  '\magnetics::ipol[*,"OH_002"]'; ... % Circuit 2
+  '\magnetics::ipol[*,"E_001"]';... % Circuit 3
+  '\magnetics::ipol[*,"E_002"]';...% Circuit 4
+  '\magnetics::ipol[*,"E_003"]';...% Circuit 5
+  '\magnetics::ipol[*,"E_004"]';...% Circuit 6
+  '\magnetics::ipol[*,"E_005"]';...% Circuit 7
+  '\magnetics::ipol[*,"E_006"]';...% Circuit 8
+  '\magnetics::ipol[*,"E_007"]';...% Circuit 9
+  '\magnetics::ipol[*,"E_008"]'; ...% Circuit 10
+  '\magnetics::ipol[*,"F_001"]';...% Circuit 11
+  '\magnetics::ipol[*,"F_002"]';...% Circuit 12
+  '\magnetics::ipol[*,"F_003"]';...% Circuit 13
+  '\magnetics::ipol[*,"F_004"]';...% Circuit 14
+  '\magnetics::ipol[*,"F_005"]';...% Circuit 15
+  '\magnetics::ipol[*,"F_006"]';...% Circuit 16
+  '\magnetics::ipol[*,"F_007"]';...% Circuit 17
+  '\magnetics::ipol[*,"F_008"]';... % Circuit 18
+  'is_in("G_001",dim_of(\magnetics::ipol,1)) ? \magnetics::ipol[*,"G_001"] : make_signal(zero(shape(data(\magnetics::ipol))[0],1.0),*,dim_of(\magnetics::ipol,0))';... % G coils % Circuit 19
+  '\magnetics::iphi';... % Connection between tf coils % Circuit 20
+  };
 
 
 % Combined structure
@@ -93,17 +102,18 @@ combined_structure.coil_current_signs = coil_current_sign;
 combined_structure.coil_current_error = coil_current_error;
 combined_structure.power_supply_current_signs = power_supply_current_sign;
 combined_structure.circuit_names = circuit_names;
-combined_structure = get_circuiting(combined_structure); %Add circuiting information
+combined_structure = get_circuiting(combined_structure,doplot); %Add circuiting information
 
 %% Create the connection matrix from the previous information
-function circuit_struct = get_circuiting(circuit_struct)
+function circuit_struct = get_circuiting(circuit_struct,doplot)
+if nargin<2, doplot=0;end
 % Get dimension of the circuits
 circuit_struct.ntotcircuits = numel(circuit_struct.circuit_names);
 circuit_struct.ntotpowersupplies = numel(circuit_struct.power_supply_names);
 circuit_struct.ntotcoils = numel([circuit_struct.coil_names{1:end}]);
 circuit_struct.ncoilpercircuit = zeros(1,circuit_struct.ntotcircuits);
 for ii=1:circuit_struct.ntotcircuits
-   circuit_struct.ncoilpercircuit(ii) =  numel(circuit_struct.coil_names{ii});
+  circuit_struct.ncoilpercircuit(ii) =  numel(circuit_struct.coil_names{ii});
 end
 
 % Each circuit has only 1 power supply-> number of elements per circuit =
@@ -114,74 +124,72 @@ circuit_struct.ntotelements = sum(circuit_struct.nnodespercircuit);
 
 circuit_struct.connection_matrix = struct([]);
 
-power_supply_index = 0;
 coil_column_index = 2*circuit_struct.ntotpowersupplies ;
 for ii=1:circuit_struct.ntotcircuits
-    circuit_connection_matrix = zeros(circuit_struct.nnodespercircuit(ii), 2*circuit_struct.ntotelements);
-
-    % Put power supply connection
-    power_supply_index = ii;
-    if circuit_struct.power_supply_current_signs{power_supply_index} == 1
-        circuit_connection_matrix(1,2*(power_supply_index-1)+2) = 1;
-        circuit_connection_matrix(circuit_struct.nnodespercircuit(ii),2*(power_supply_index-1)+1) = 1;
-    elseif circuit_struct.power_supply_current_signs{power_supply_index} == -1
-        circuit_connection_matrix(1,2*(power_supply_index-1)+1) = 1;
-        circuit_connection_matrix(circuit_struct.nnodespercircuit(ii),2*(power_supply_index-1)+2) = 1;
-    end
-
-    % Put coil connection
-    for jj=1:circuit_struct.ncoilpercircuit(ii)
-        if circuit_struct.coil_current_signs{ii}(jj) == 1
-            circuit_connection_matrix(jj, coil_column_index + 2*(jj-1) + 1  ) = 1;
-            circuit_connection_matrix(jj + 1, coil_column_index + 2*(jj-1) + 2 ) = 1;
-
-        elseif circuit_struct.coil_current_signs{ii}(jj) == -1
-            circuit_connection_matrix(jj, coil_column_index + 2*(jj-1) + 2  ) = 1;
-            circuit_connection_matrix(jj + 1, coil_column_index + 2*(jj-1) + 1 ) = 1;
-        end
+  circuit_connection_matrix = zeros(circuit_struct.nnodespercircuit(ii), 2*circuit_struct.ntotelements);
+  
+  % Put power supply connection
+  power_supply_index = ii;
+  if circuit_struct.power_supply_current_signs{power_supply_index} == 1
+    circuit_connection_matrix(1,2*(power_supply_index-1)+2) = 1;
+    circuit_connection_matrix(circuit_struct.nnodespercircuit(ii),2*(power_supply_index-1)+1) = 1;
+  elseif circuit_struct.power_supply_current_signs{power_supply_index} == -1
+    circuit_connection_matrix(1,2*(power_supply_index-1)+1) = 1;
+    circuit_connection_matrix(circuit_struct.nnodespercircuit(ii),2*(power_supply_index-1)+2) = 1;
+  end
+  
+  % Put coil connection
+  for jj=1:circuit_struct.ncoilpercircuit(ii)
+    if circuit_struct.coil_current_signs{ii}(jj) == 1
+      circuit_connection_matrix(jj, coil_column_index + 2*(jj-1) + 1  ) = 1;
+      circuit_connection_matrix(jj + 1, coil_column_index + 2*(jj-1) + 2 ) = 1;
+      
+    elseif circuit_struct.coil_current_signs{ii}(jj) == -1
+      circuit_connection_matrix(jj, coil_column_index + 2*(jj-1) + 2  ) = 1;
+      circuit_connection_matrix(jj + 1, coil_column_index + 2*(jj-1) + 1 ) = 1;
     end
-
-    coil_column_index = coil_column_index + 2*circuit_struct.ncoilpercircuit(ii);
-    circuit_struct.connection_matrix{ii} = circuit_connection_matrix;
-
-    % Plot all the connaction matrices as a check
-    doplot = 0;
-    if doplot
+  end
+  
+  coil_column_index = coil_column_index + 2*circuit_struct.ncoilpercircuit(ii);
+  circuit_struct.connection_matrix{ii} = circuit_connection_matrix;
+  
+  % Plot all the connaction matrices as a check
+  if doplot
     plot_connection_matrix(circuit_connection_matrix, circuit_struct.power_supply_names, circuit_struct.coil_names);
-    end
-
+  end
+  
 end
 
 %% Plot connection matrix
-function plot_connection_matrix(mat, psnames, cnames, circuitname, circuit )
+function plot_connection_matrix(mat, psnames, cnames) %, circuitname, circuit
 % Plot the value of a matrix in separated block
 figure
-b = zeros([size(mat)]+1);
+b = zeros(size(mat)+1);
 b(1:end-1, 1:end-1) = mat;
 
 pcolor(b)
 
-yti = [1:size(b,1)]+0.5;
-xti = [1:size(b,2)]+0.5;
+yti = (1:size(b,1))+0.5;
+xti = (1:size(b,2))+0.5;
 
-ylab = cellstr(num2str([1:size(b,1)-1]'));
+ylab = cellstr(num2str((1:size(b,1)-1).'));
 index = 0;
-xlab = {};
+xlab = cell(1,numel(psnames));
 % Get the labels
 for ii=1:numel(psnames)
-    index = index +1;
-    xlab{index} = [psnames{ii}{1} 'in'];
-    index = index +1;
-    xlab{index} = [psnames{ii}{1} 'out'];
+  index = index +1;
+  xlab{index} = [psnames{ii}{1} 'in'];
+  index = index +1;
+  xlab{index} = [psnames{ii}{1} 'out'];
 end
 for ii=1:numel(cnames)
-    for jj=1:numel(cnames{ii})
-
-        index = index +1;
-        xlab{index} = [cnames{ii}{jj} 'in'];
-        index = index +1;
-        xlab{index} = [cnames{ii}{jj} 'out'];
-    end
+  for jj=1:numel(cnames{ii})
+    
+    index = index +1;
+    xlab{index} = [cnames{ii}{jj} 'in'];
+    index = index +1;
+    xlab{index} = [cnames{ii}{jj} 'out'];
+  end
 end
 
 shg
diff --git a/matlab/TCV_IMAS/tcv_ids_wall_description_2d.m b/matlab/TCV_IMAS/tcv_ids_wall_description_2d.m
index 8a8ed6aa62d68ae90cd1f9eae0c03388b051d148..e47b89d74ff086d3d13cacf8832ea217280e64ff 100644
--- a/matlab/TCV_IMAS/tcv_ids_wall_description_2d.m
+++ b/matlab/TCV_IMAS/tcv_ids_wall_description_2d.m
@@ -1,4 +1,4 @@
-function [ids_struct_out,ids_struct_out_description] =  tcv_ids_wall_description_2d(shot, ids_structures)
+function [ids_struct_out,ids_struct_out_description] =  tcv_ids_wall_description_2d(ids_structures)
 
 ids_struct_out =  ids_structures;
 
@@ -10,9 +10,9 @@ ids_struct_out{1}.type.index = 0;
 r_l = mdsdata('STATIC("R_T")');
 z_l = mdsdata('STATIC("Z_T")');
 ids_struct_out{1}.limiter.unit{1}.outline.r = r_l;
-ids_struct_out_description{1}.limiter.unit{1}.outline_r = ['from ''STATIC("R_T")'];
+ids_struct_out_description{1}.limiter.unit{1}.outline_r = 'from ''STATIC("R_T")''';
 ids_struct_out{1}.limiter.unit{1}.outline.z = z_l;
-ids_struct_out_description{1}.limiter.unit{1}.outline_z = ['from ''STATIC("Z_T")'];
+ids_struct_out_description{1}.limiter.unit{1}.outline_z = 'from ''STATIC("Z_T")''';
 
 % vessel
 r_v_in = mdsdata('STATIC("R_V:IN")');
@@ -20,13 +20,13 @@ z_v_in = mdsdata('STATIC("Z_V:IN")');
 r_v_out = mdsdata('STATIC("R_V:OUT")');
 z_v_out = mdsdata('STATIC("Z_V:OUT")');
 ids_struct_out{1}.vessel.unit{1}.annular.outline_inner.r = r_v_in ;
-ids_struct_out_description{1}.vessel.unit{1}.annular.outline_inner.r = ['from ''STATIC("R_V:IN")'];
+ids_struct_out_description{1}.vessel.unit{1}.annular.outline_inner.r = 'from ''STATIC("R_V:IN")''';
 ids_struct_out{1}.vessel.unit{1}.annular.outline_inner.z = z_v_in;
-ids_struct_out_description{1}.vessel.unit{1}.annular.outline_inner.z = ['from ''STATIC("Z_V:IN")'];
+ids_struct_out_description{1}.vessel.unit{1}.annular.outline_inner.z = 'from ''STATIC("Z_V:IN")''';
 ids_struct_out{1}.vessel.unit{1}.annular.outline_outer.r = r_v_out;
-ids_struct_out_description{1}.vessel.unit{1}.annular.outline_outer.r = ['from ''STATIC("R_V:OUT")'];
+ids_struct_out_description{1}.vessel.unit{1}.annular.outline_outer.r = 'from ''STATIC("R_V:OUT")''';
 ids_struct_out{1}.vessel.unit{1}.annular.outline_outer.z = z_v_out;
-ids_struct_out_description{1}.vessel.unit{1}.annular.outline_outer.z = ['from ''STATIC("Z_V:OUT")'];
+ids_struct_out_description{1}.vessel.unit{1}.annular.outline_outer.z = 'from ''STATIC("Z_V:OUT")''';
 
 % The value of the resistivity is taken as an average of the value in Fig.3
 % of Jean-Marc LIUQE paper.