diff --git a/crpptbx/TCV_IMAS/tcv_get_ids_bpol_probe.m b/crpptbx/TCV_IMAS/tcv_get_ids_bpol_probe.m
deleted file mode 100644
index 55c345b217b09c36e4c079b43eb71ff5bbcbe44c..0000000000000000000000000000000000000000
--- a/crpptbx/TCV_IMAS/tcv_get_ids_bpol_probe.m
+++ /dev/null
@@ -1,31 +0,0 @@
-function [ids_struct_out, varargout] =  tcv_get_ids_bpol_probe(shot, ids_structures)
-% Get magnetics.bpol_probe
-
-mdsopen(shot);
-tmp = gdat( shot, '\MAGNETICS::BPOL_003');
-
-% Get data
-names = tmp.dim{2};
-time = tmp.dim{1};
-data = tmp.data;
-
-% Preallocate output structure
-Nprobes = size(tmp.data,2);
-ids_struct_out(1:Nprobes) = ids_structures;
-
-
-for ii=1:Nprobes
-    ids_struct_out{ii}.name  = [names{ii}];  
-    ids_struct_out{ii}.position.r  = mdsvalue('STATIC("R_M"  )[$1]',ids_struct_out{ii}.name);
-    ids_struct_out{ii}.position.z  = mdsvalue('STATIC("Z_M"  )[$1]',ids_struct_out{ii}.name); 
-    
-    ids_struct_out{ii}.field.data  =  data(:,ii);
-    ids_struct_out{ii}.field.time  =  time; 
-    
-    %ids_struct_out{ii}.position.toroidal_angle  =  mdsdata('STATIC("ANG_M"  )[$1]',ids_struct_out{ii}.position.name); 
-    %ids_struct_out{ii}.position.poloidal_angle  =  0; % TO BE FOUND   
-
-    ids_struct_out{ii}.field.data_error_upper = 0.001.*ones(size(ids_struct_out{ii}.field.data));% TO BE FOUND;   
-    %(not filled if symmetric) ids_struct_out{ii}.position.field.data_error_lower = 0.001;%.*ones(size(ids_struct_out{ii}.field.data));% TO BE FOUND;    
-end
-
diff --git a/crpptbx/TCV_IMAS/tcv_get_ids_core_profiles.m b/crpptbx/TCV_IMAS/tcv_get_ids_core_profiles.m
index 2a7dd14ef9e22056fa4b4ac8c079762f20aba6a8..647a05eb592e85a81265adb78f33047a9ee5688f 100644
--- a/crpptbx/TCV_IMAS/tcv_get_ids_core_profiles.m
+++ b/crpptbx/TCV_IMAS/tcv_get_ids_core_profiles.m
@@ -1,8 +1,10 @@
-function [ids_cores_profiles,ids_cores_profiles_description,varargout] = tcv_get_ids_core_profiles(shot,ids_equil_empty,varargin);
+function [ids_cores_profiles,ids_cores_profiles_description,varargout] = tcv_get_ids_core_profiles(shot,ids_equil_empty, gdat_params,varargin);
 %
 %  [ids_cores_profiles,ids_cores_profiles_description,varargout] = tcv_get_ids_cores_profiles(shot,ids_equil_empty,varargin);
 %
 %
+% gdat_params: gdat_data.gdat_params to get all params passed from original call, in particular error_bar options
+%
 
 machine = 'tcv';
 tens_time = -1;
diff --git a/crpptbx/TCV_IMAS/tcv_get_ids_equilibrium.m b/crpptbx/TCV_IMAS/tcv_get_ids_equilibrium.m
index c05276b3320e19e96ab43ea25eb08616e7ba605b..6d30400d278e9460cba418ed1dcd2b54dc0a54b5 100644
--- a/crpptbx/TCV_IMAS/tcv_get_ids_equilibrium.m
+++ b/crpptbx/TCV_IMAS/tcv_get_ids_equilibrium.m
@@ -1,8 +1,10 @@
-function [ids_equilibrium,ids_equilibrium_description,varargout] = tcv_get_ids_equilibrium(shot,ids_equil_empty,varargin);
+function [ids_equilibrium,ids_equilibrium_description,varargout] = tcv_get_ids_equilibrium(shot,ids_equil_empty, gdat_params,varargin);
 %
 %  [ids_equilibrium,ids_equilibrium_description,varargout] = tcv_get_ids_equilibrium(shot,ids_equil_empty,varargin);
 % 
 %
+% gdat_params: gdat_data.gdat_params to get all params passed from original call, in particular error_bar options
+%
 
 machine = 'tcv';
 
diff --git a/crpptbx/TCV_IMAS/tcv_get_ids_flux_loop.m b/crpptbx/TCV_IMAS/tcv_get_ids_flux_loop.m
index 0f2edb80b56ad992974881d6c6bdab77b89533a6..46d4c5074823397132a1d33f74e65b1dce01c7bb 100644
--- a/crpptbx/TCV_IMAS/tcv_get_ids_flux_loop.m
+++ b/crpptbx/TCV_IMAS/tcv_get_ids_flux_loop.m
@@ -2,8 +2,7 @@ function ids_struct_out = tcv_get_ids_flux_loop(shot, ids_structures)
 % Get ids field magnetics.fluxx_loop 
 
 % Get data 
-mdsopen(shot);
-tmp = gdat(shot, 'tcv_idealloop("FLUX")');
+tmp = gdat_tcv(shot, 'tcv_idealloop("FLUX")');
 names = tmp.dim{2};
 time = tmp.dim{1};
 data = tmp.data;
@@ -20,8 +19,8 @@ for ii=1:Nprobes
     ids_struct_out{ii}.flux.data  =  data(:,ii);
     ids_struct_out{ii}.flux.time  =  time;
 
-    ids_struct_out{ii}.flux.data_error_upper = 0.0012.*ones(size(ids_struct_out{ii}.flux.data));
+    ids_struct_out{ii}.flux.data_error_upper = 0.001200000056997.*ones(size(ids_struct_out{ii}.flux.data));
     %(not filled if symmetric) ids_struct_out{ii}.flux.data_error_lower = 0.0012;%.*ones(size(ids_struct_out{ii}.flux.data));
-    %ids_struct_out{ii}.position.phi  =  0; % TO BE FOUND    
+    %ids_struct_out{ii}.position.phi  =  0; % TO BE FOUND
 end
 
diff --git a/crpptbx/TCV_IMAS/tcv_get_ids_ip.m b/crpptbx/TCV_IMAS/tcv_get_ids_ip.m
deleted file mode 100644
index 5188537ba686c49178c48a2ca592e2aad398759c..0000000000000000000000000000000000000000
--- a/crpptbx/TCV_IMAS/tcv_get_ids_ip.m
+++ /dev/null
@@ -1,17 +0,0 @@
-function [ids_struct_out] = tcv_get_ids_ip(shot, ids_structures)
-% Get magnetics.method{1}.ip
-
-mdsopen(shot);
-tmp = gdat( shot, 'ip_trapeze');
-
-time = tmp.dim{1};
-data = tmp.data;
-
-% Preallocate dimension
-ids_struct_out = ids_structures;
-
-% Put data into ids structure
-ids_struct_out{1}.ip.data = data;
-ids_struct_out{1}.ip.time = time;
-
-
diff --git a/crpptbx/TCV_IMAS/tcv_get_ids_magnetics.m b/crpptbx/TCV_IMAS/tcv_get_ids_magnetics.m
index 2736fe7a7a81604d22baf8f75ca17f8d6478272b..86449e0e1efb992e144eb4334efa5124179a9f25 100644
--- a/crpptbx/TCV_IMAS/tcv_get_ids_magnetics.m
+++ b/crpptbx/TCV_IMAS/tcv_get_ids_magnetics.m
@@ -1,15 +1,15 @@
-function [ids_magnetics,ids_magnetics_description,varargout] = tcv_get_ids_magnetics(shot, ids_magnetics_empty, varargin)
+function [ids_magnetics,ids_magnetics_description,varargout] = tcv_get_ids_magnetics(shot, ids_magnetics_empty, gdat_params, varargin)
 %
 %  [ids_magnetics,ids_magnetics_description,varargout] = tcv_get_ids_magnetics(shot, ids_magnetics_empty, varargin);
 %
+% gdat_params: gdat_data.gdat_params to get all params passed from original call, in particular error_bar options
+%
 
 [ids_magnetics, params_magnetics] = tcv_ids_headpart(shot, ids_magnetics_empty,'magnetics','homogeneous_time',0,varargin{:});
 
-[ids_magnetics.bpol_probe]= tcv_get_ids_bpol_probe(params_magnetics.shot, ids_magnetics.bpol_probe(1));
-[ids_magnetics.flux_loop]= tcv_get_ids_flux_loop(params_magnetics.shot, ids_magnetics.flux_loop(1));
-[ids_magnetics.method]= tcv_get_ids_ip(params_magnetics.shot, ids_magnetics.method(1));
+[ids_magnetics.bpol_probe,ids_magnetics_description.bpol_probe]= tcv_ids_bpol_probe(params_magnetics.shot, ids_magnetics.bpol_probe(1),gdat_params);
+[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
 
-%% Temporarely documentation
-ids_magnetics_description = struct([]);
diff --git a/crpptbx/TCV_IMAS/tcv_get_ids_pf_active.m b/crpptbx/TCV_IMAS/tcv_get_ids_pf_active.m
index aaf6a5a6cb67bcd0705b93ef78e062b07099ba30..92a5cae65803cb21ca8130bc75c295a1ae5c7b3f 100644
--- a/crpptbx/TCV_IMAS/tcv_get_ids_pf_active.m
+++ b/crpptbx/TCV_IMAS/tcv_get_ids_pf_active.m
@@ -1,11 +1,14 @@
-function [ids_pf_active,ids_description,varargout] = tcv_get_ids_pf_active(shot, ids_pf_active_empty, varargin)
+function [ids_pf_active,ids_description,varargout] = tcv_get_ids_pf_active(shot, ids_pf_active_empty, gdat_params, varargin)
+%
+% gdat_params: gdat_data.gdat_params to get all params passed from original call, in particular error_bar options
+%
 
 % Input pharser
 [ids_pf_active, params] = tcv_ids_headpart(shot, ids_pf_active_empty,'pf_active','homogeneous_time',0,varargin{:});
 
 % Get subfield
-[ids_pf_active.coil]= tcv_get_ids_coil(params.shot, ids_pf_active.coil(1));
-[ids_pf_active.circuit]= tcv_get_ids_circuit(params.shot, ids_pf_active.circuit(1));
+[ids_pf_active.coil]= tcv_ids_coil(params.shot, ids_pf_active.coil(1));
+[ids_pf_active.circuit]= tcv_ids_circuit(params.shot, ids_pf_active.circuit(1));
 [ids_pf_active.supply]= tcv_get_ids_supply(params.shot, ids_pf_active.supply(1));
 
 % make arrays not filled in empty: not the case for magnetics
diff --git a/crpptbx/TCV_IMAS/tcv_get_ids_tf.m b/crpptbx/TCV_IMAS/tcv_get_ids_tf.m
index 066b76c5b3ab14a2dd46487457169c3820850a3d..d0985503b3c8d59f7155274230b3d9775e143e32 100644
--- a/crpptbx/TCV_IMAS/tcv_get_ids_tf.m
+++ b/crpptbx/TCV_IMAS/tcv_get_ids_tf.m
@@ -1,4 +1,4 @@
-function [ids_tf_out,ids_tf_out_description] =  tcv_get_ids_tf(shot, ids_tf_empty,varargin)
+function [ids_tf_out,ids_tf_out_description] =  tcv_get_ids_tf(shot, ids_tf_empty, gdat_params,varargin)
 %
 % [ids_tf_out] =  tcv_get_ids_tf(shot, ids_tf_empty,varargin);
 %
@@ -6,6 +6,8 @@ function [ids_tf_out,ids_tf_out_description] =  tcv_get_ids_tf(shot, ids_tf_empt
 %
 % ids_tf_empty should at least be the empty tf ids structure in input
 %
+% gdat_params: gdat_data.gdat_params to get all params passed from original call, in particular error_bar options
+%
 
 ids_tf_out = ids_tf_empty;
 
diff --git a/crpptbx/TCV_IMAS/tcv_get_ids_wall.m b/crpptbx/TCV_IMAS/tcv_get_ids_wall.m
index 4c1c1a8c2d4c7a41c7e05e78429527acbf4fa535..2196f69dba15b5b1a36b5b163b489f43bbe05c6e 100644
--- a/crpptbx/TCV_IMAS/tcv_get_ids_wall.m
+++ b/crpptbx/TCV_IMAS/tcv_get_ids_wall.m
@@ -1,10 +1,14 @@
-function [ids_wall,ids_description,varargout] = tcv_get_ids_wall(shot, ids_wall_empty, varargin)
+function [ids_wall,ids_description,varargout] = tcv_get_ids_wall(shot, ids_wall_empty, gdat_params, varargin)
+%
+%
+% gdat_params: gdat_data.gdat_params to get all params passed from original call, in particular error_bar options
+%
 
 % Input pharser
 [ids_wall, params] = tcv_ids_headpart(shot, ids_wall_empty,'wall','homogeneous_time',0,varargin{:});
 
 % Get data of outline
-[ids_wall.description_2d]= tcv_get_ids_descprition_2d(params.shot, ids_wall.description_2d(1));
+[ids_wall.description_2d]= tcv_ids_wall_description_2d(params.shot, 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
diff --git a/crpptbx/TCV_IMAS/tcv_ids_bpol_probe.m b/crpptbx/TCV_IMAS/tcv_ids_bpol_probe.m
new file mode 100644
index 0000000000000000000000000000000000000000..73af32fcd36af7147d06d849cdf05e30508b305d
--- /dev/null
+++ b/crpptbx/TCV_IMAS/tcv_ids_bpol_probe.m
@@ -0,0 +1,67 @@
+function [sub_ids_struct_out,sub_ids_struct_out_description, varargout] =  tcv_ids_bpol_probe(shot, ids_structures, gdat_params, varargin)
+%
+% [sub_ids_struct_out,sub_ids_struct_out_description, varargout] =  tcv_ids_bpol_probe(shot, ids_structures, gdat_params, varargin)
+%
+% Get magnetics.bpol_probe
+%
+% error_bar: from gdat_params.error_bar
+%            'relative' (default): value to be added
+%            'added': value already added to data: data +- error_bar
+%
+
+error_bar = 'relative';
+if exist('gdat_params') && isfield(gdat_params,'error_bar') && ~isempty(gdat_params.error_bar)
+  error_bar = gdat_params.error_bar;
+end
+
+% Get data 
+tmp = gdat_tcv( shot, '\MAGNETICS::BPOL_003');
+names = tmp.dim{2};
+time = tmp.dim{1};
+data = tmp.data;
+ang_m = gdat_tcv( shot, 'static("ANG_M")');
+
+% Preallocate output structure
+Nprobes = size(tmp.data,2);
+sub_ids_struct_out(1:Nprobes) = ids_structures;
+
+for ii=1:Nprobes
+    sub_ids_struct_out{ii}.name  = [names{ii}];  
+    sub_ids_struct_out_description{ii}.name  = [names{ii}];
+    sub_ids_struct_out{ii}.position.r  = mdsvalue('STATIC("R_M"  )[$1]',sub_ids_struct_out{ii}.name);
+    sub_ids_struct_out_description{ii}.position_r  = ['from ''STATIC("R_M"  )[' sub_ids_struct_out{ii}.name ']'''];
+    sub_ids_struct_out{ii}.position.z  = mdsvalue('STATIC("Z_M"  )[$1]',sub_ids_struct_out{ii}.name); 
+    sub_ids_struct_out_description{ii}.position_z  = ['from ''STATIC("Z_M"  )[' sub_ids_struct_out{ii}.name ']'''];
+    sub_ids_struct_out{ii}.field.data  =  data(:,ii);
+    sub_ids_struct_out_description{ii}.field_data  =  'from ''\MAGNETICS::BPOL_003''';
+    sub_ids_struct_out{ii}.field.time  =  time; 
+    
+    sub_ids_struct_out{ii}.toroidal_angle  =  0.; % to see if should match sector 3 (bpol003)
+    aa =  gdat_tcv( shot, ['static("ANG_M")[$1]'',''' sub_ids_struct_out{ii}.name '']); 
+    sub_ids_struct_out{ii}.poloidal_angle  = aa.data;
+    sub_ids_struct_out_description{ii}.poloidal_angle  = ['from ' aa.data_fullpath];
+    sub_ids_struct_out_description{ii}.toroidal_angle = 'set to 0 although BPOL_003 means sector 3';
+end
+
+fixed_error = 0.009999999776483;
+switch error_bar
+ case 'relative'
+  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'];
+  end
+ case 'added'
+  for ii=1:Nprobes 
+    sub_ids_struct_out{ii}.field.data_error_upper = sub_ids_struct_out{ii}.field.data + fixed_error.*ones(size(sub_ids_struct_out{ii}.field.data));
+    sub_ids_struct_out{ii}.field.data_error_lower = sub_ids_struct_out{ii}.field.data - fixed_error.*ones(size(sub_ids_struct_out{ii}.field.data));
+    sub_ids_struct_out_description{ii}.field_data_error_upper = ['from data + fixed error value in case ' error_bar];
+    sub_ids_struct_out_description{ii}.field_data_error_lower = ['from data - fixed error value in case ' error_bar];
+  end
+ otherwise
+  error(['tcv_ids_bpol_loop: error_bar option not known: ' error_bar])
+end
+
+
+  
+
diff --git a/crpptbx/TCV_IMAS/tcv_get_ids_circuit.m b/crpptbx/TCV_IMAS/tcv_ids_circuit.m
similarity index 100%
rename from crpptbx/TCV_IMAS/tcv_get_ids_circuit.m
rename to crpptbx/TCV_IMAS/tcv_ids_circuit.m
diff --git a/crpptbx/TCV_IMAS/tcv_get_ids_coil.m b/crpptbx/TCV_IMAS/tcv_ids_coil.m
similarity index 100%
rename from crpptbx/TCV_IMAS/tcv_get_ids_coil.m
rename to crpptbx/TCV_IMAS/tcv_ids_coil.m
diff --git a/crpptbx/TCV_IMAS/tcv_ids_ip.m b/crpptbx/TCV_IMAS/tcv_ids_ip.m
new file mode 100644
index 0000000000000000000000000000000000000000..90b3f0036f10a7dcbec550f06dd33c2e56afe76e
--- /dev/null
+++ b/crpptbx/TCV_IMAS/tcv_ids_ip.m
@@ -0,0 +1,30 @@
+function [ids_struct_out,ids_struct_out_description] = tcv_ids_ip(shot, ids_structures, gdat_params, varargin)
+%
+%    [ids_struct_out,ids_struct_out_description] = tcv_ids_ip(shot, ids_structures, gdat_params, varargin);
+%
+% Get magnetics.method{1}.ip
+%
+% error_bar: from gdat_params.error_bar
+%            'relative' (default): value to be added
+%            'added': value already added to data: data +- error_bar
+%
+
+error_bar = 'relative';
+if exist('gdat_params') && isfield(gdat_params,'error_bar') && ~isempty(gdat_params.error_bar)
+  error_bar = gdat_params.error_bar;
+end
+
+% Get data 
+tmp = gdat_tcv( shot, 'ip_trapeze');
+time = tmp.dim{1};
+data = tmp.data;
+
+% Preallocate dimension
+ids_struct_out = ids_structures;
+
+% Put data into ids structure
+ids_struct_out{1}.ip.data = data;
+ids_struct_out_description{1}.ip = ['from ' tmp.data_fullpath];
+ids_struct_out{1}.ip.time = time;
+
+
diff --git a/crpptbx/TCV_IMAS/tcv_get_ids_supply.m b/crpptbx/TCV_IMAS/tcv_ids_supply.m
similarity index 100%
rename from crpptbx/TCV_IMAS/tcv_get_ids_supply.m
rename to crpptbx/TCV_IMAS/tcv_ids_supply.m
diff --git a/crpptbx/TCV_IMAS/tcv_get_ids_descprition_2d.m b/crpptbx/TCV_IMAS/tcv_ids_wall_description.m
similarity index 100%
rename from crpptbx/TCV_IMAS/tcv_get_ids_descprition_2d.m
rename to crpptbx/TCV_IMAS/tcv_ids_wall_description.m