diff --git a/crpptbx/JET/gdat_jet.m b/crpptbx/JET/gdat_jet.m
index ac94bd395e91284a9fdfab9d3ceb44741c6cd9eb..1bd041768bec5d8782bafc3c3a7026efea01b2f2 100644
--- a/crpptbx/JET/gdat_jet.m
+++ b/crpptbx/JET/gdat_jet.m
@@ -1179,54 +1179,94 @@ elseif strcmp(mapping_for_jet.method,'switchcase')
     % since cocos=17 for LIUQE we get:
     % q = -dPhi/dpsi => Phi = - int(q*dpsi) which should always have the sign of B0
     % get rhotornorm etc
-    nodenameeff=[{'ppf'},{'EFIT'},{'FTOR'}];
-    ppftype = nodenameeff{1};
-    tracename = [nodenameeff{2} '/' nodenameeff{3}];
-    [a,x,t,d,e]=rda_jet(shot,ppftype,tracename);
-    if e==0
-      if gdat_params.nverbose>=3; disp(['error after rda_jet in signal with nodenameeff= ' nodenameeff]); end
-      if gdat_params.nverbose>=3; disp('cannot get rhotornorm'); end
-      return
-    end
-    phi = a;
-    gdat_data.rhotornorm = sqrt(a/(ones(length(x),1)*a(end,:)));
-
-    params_eff.data_request='b0'; % psi_edge=0 with LIUQE
-    b0=gdat_jet([],params_eff);
-    if strcmp(data_request,'rhotor_edge')
-      gdat_data.data = psi_axis.data; % to have the dimensions correct
-      gdat_data.dim = psi_axis.dim;
-      gdat_data.t = gdat_data.dim{1};
-      gdat_data.data_fullpath='phi from q_rho, psi_axis and integral(-q dpsi)';
-      gdat_data.units = 'T m^2';
-      gdat_data.dimunits{1} = 's';
-    elseif strcmp(data_request,'rhotor')
-      gdat_data.data = q_rho.data; % to have the dimensions correct
-      gdat_data.dim{1} = ones(size(q_rho.dim{1}));
-      gdat_data.dim{1}(:) = rhoequal;
-      gdat_data.dim{2} = q_rho.dim{2};
-      gdat_data.t = gdat_data.dim{2};
-      gdat_data.data_fullpath='sqrt(phitor/phitor_edge), rhotor_edge=sqrt(phitor/B0/pi)';
-      gdat_data.units = '';
-      gdat_data.dimunits{1} = 'rhopol\_norm';
-      gdat_data.dimunits{2} = 's';
-    end
-    for it=1:length(psi_axis.data)
-      ij=find(~isnan(q_rho.data(:,it)));
-      if ~isempty(ij)
-        [qfit,~,~,phi]=interpos(q_rho.x(ij).^2,q_rho.data(ij,it),rhoequal.^2);
-        dataeff = sqrt(phi .* psi_axis.data(it) ./ b0tpsi(it) ./ pi) ; % Delta_psi = -psi_axis
-      else
-        dataeff = NaN;
+    switch data_request_eff
+     case {'rhotor', 'rhotor_edge', 'rhotor_norm'}
+      nodenameeff=[{'ppf'},{'EFIT'},{'FTOR'}];
+      ppftype = nodenameeff{1};
+      tracename = [nodenameeff{2} '/' nodenameeff{3}];
+      [a,x,t,d,e]=rda_jet(shot,ppftype,tracename);
+      if e==0
+        if gdat_params.nverbose>=3; disp(['error after rda_jet in signal with nodenameeff= ' nodenameeff]); end
+        if gdat_params.nverbose>=3; disp(['cannot get ' data_request_eff]); end
+        return
       end
+      phi = a;
+      phi_edge_2d = ones(length(x),1)*a(end,:);
+      gdat_data.rhotornorm = sqrt(phi./phi_edge_2d);
+      params_eff.data_request='b0';
+      b0=gdat_jet(shot,params_eff);
       if strcmp(data_request,'rhotor_edge')
-        gdat_data.data(it) = dataeff(end);
+        b0_phi=interpos(b0.t,b0.data,t,-1);
+        gdat_data.data = sqrt(phi(end,:)./pi./reshape(b0_phi,1,length(b0_phi)));
+        gdat_data.dim = {t};
+        gdat_data.t = gdat_data.dim{1};
+        gdat_data.data_fullpath='sqrt(Phi_edge/pi/B0) from {''ppf''},{''EFIT''},{''FTOR''}';
+        gdat_data.units = 'm';
+        gdat_data.dimunits{1} = 's';
       elseif strcmp(data_request,'rhotor')
-        gdat_data.data(:,it) = dataeff./dataeff(end);
-        gdat_data.rhotor_edge(it) = dataeff(end);
+        b0_phi=interpos(b0.t,b0.data,t,-1);
+        gdat_data.data = sqrt(phi./(ones(length(x),1)*reshape(b0_phi,1,length(b0_phi)))./pi);
+        gdat_data.dim{1} = x;
+        gdat_data.dim{2} = t;
+        gdat_data.x = x;
+        gdat_data.t = gdat_data.dim{2};
+        gdat_data.data_fullpath='sqrt(phitor/pi/B0)) from {''ppf''},{''EFIT''},{''FTOR''}';
+        gdat_data.units = 'm';
+        gdat_data.dimunits{1} = 'rhopol\_norm';
+        gdat_data.dimunits{2} = 's';
+      elseif strcmp(data_request,'rhotor_norm')
+        b0_phi=interpos(b0.t,b0.data,t,-1);
+        gdat_data.data = gdat_data.rhotornorm;
+        gdat_data.rhotor_edge = sqrt(phi(end,:)./pi./reshape(b0_phi,1,length(b0_phi)));
+        gdat_data.dim{1} = x;
+        gdat_data.dim{2} = t;
+        gdat_data.x = x;
+        gdat_data.t = gdat_data.dim{2};
+        gdat_data.data_fullpath='sqrt(phitor/phitor_edge), rhotor_edge=sqrt(phitor/B0/pi) from {''ppf''},{''EFIT''},{''FTOR''}';
+        gdat_data.data_fullpath='sqrt(phitor/pi/B0), rhotor_edge=sqrt(phitor/B0/pi)';
+        gdat_data.units = '';
+        gdat_data.dimunits{1} = 'rhopol\_norm';
+        gdat_data.dimunits{2} = 's';
+      end
+     case {'volume_rho', 'rhovol'}
+      nodenameeff=[{'ppf'},{'EFIT'},{'VJAC'}];
+      ppftype = nodenameeff{1};
+      tracename = [nodenameeff{2} '/' nodenameeff{3}];
+      [a,x,t,d,e]=rda_jet(shot,ppftype,tracename);
+      nodenameeff2=[{'ppf'},{'EFIT'},{'VOLM'}];
+      ppftype = nodenameeff{1};
+      tracename = [nodenameeff{2} '/' nodenameeff{3}];
+      [a2,x2,t2,d2,e2]=rda_jet(shot,ppftype,tracename);
+      if e==0 || e2==0
+        if gdat_params.nverbose>=3; 
+          disp(['error after rda_jet in signal with nodenameeff= ' nodenameeff]);
+          disp(['or with nodenameeff2= ' nodenameeff2]);
+          disp(['cannot get ' data_request_eff]);
+          return
+        end
+      end
+      volume = a2;
+      dvdpsinorm = a;
+      for it=1:length(t)
+        [~,~,~,volpsi(:,it)]=interpos(x,a(:,it),-0.1);
+        volpsi(:,it) = volpsi(:,it) .* volume(it)./volpsi(end,it); % ensure that total volume is the same as volm
       end
-      gdat_data.b0 = b0tpsi(it);
+      gdat_data.x = sqrt(x);
+      gdat_data.t = t;
+      gdat_data.dim = [{gdat_data.x}, {gdat_data.t}];
+      switch  data_request_eff
+       case 'volume_rho'
+        gdat_data.data = volpsi;
+        gdat_data.volume = volume;
+       case 'rhovol'
+        gdat_data.data = sqrt(volpsi./(ones(length(gdat_data.x),1)*reshape(volpsi(end,:),1,length(gdat_data.t))));
+        gdat_data.volume = volpsi(end,:);
+      end
+     otherwise
+      disp(['data_request_eff = ' data_request_eff ' not defined in this section']);
+      return
     end
+
     
     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    case {'rhovol','volume_rho','volume'}
@@ -1504,70 +1544,3 @@ gdat_params = gdat_data.gdat_params;
 error_status=0;
 
 return
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-function [gdat_data] = get_grids_1d(gdat_data,nbdim_x,nopt,nverbose);
-%
-% add various rhos in grids_1d
-%
-% nbdim_x = 1: same x (rhopol) for all times
-%         = 2: rhopol depends on time like Thomson projection
-%
-% nopt = 0: do not fill in, just make the empty structure
-%      = 1: do compute various fields
-%
-
-gdat_data.grids_1d.rhopolnorm = gdat_data.x;
-if (nopt == 0) || isempty(gdat_data.x) || isempty(gdat_data.t) || isempty(gdat_data.data) || ischar(gdat_data.data)
-  gdat_data.grids_1d.rhotornorm = [];
-  gdat_data.grids_1d.rhovolnorm = [];
-  gdat_data.grids_1d.psi = [];
-  gdat_data.grids_1d.rhotor_edge = [];
-  gdat_data.grids_1d.volume_edge = [];
-  return
-end
-
-params_eff = gdat_data.gdat_params;params_eff.doplot=0;
-params_eff.data_request='rhotor';
-rhotor = gdat(gdat_data.shot,params_eff);
-params_eff.data_request='rhovol';
-rhovol = gdat(gdat_data.shot,params_eff);
-
-psi0 = interpos(rhotor.t',rhotor.psi_axis,gdat_data.t,-0.01);
-if (nbdim_x == 1)
-  gdat_data.grids_1d.psi = gdat_data.grids_1d.rhopolnorm.^2*reshape(psi0,1,length(psi0));
-elseif (nbdim_x == 2)
-  gdat_data.grids_1d.psi = gdat_data.grids_1d.rhopolnorm.^2.*repmat(reshape(psi0,1,length(psi0)),size(gdat_data.grids_1d.rhopolnorm,1),1);
-else
-  if nverbose>=0; disp(['option: nbdim_x = ' numstr(nbdim_x) ' not implemented, check with O. Sauter']); end
-  return
-end
-gdat_data.grids_1d.rhotornorm = NaN*ones(size(gdat_data.data));
-gdat_data.grids_1d.rhovolnorm = NaN*ones(size(gdat_data.data));
-it_rt = iround_os(rhotor.t,gdat_data.t);
-it_vol = iround_os(rhovol.t,gdat_data.t);
-for it=1:length(gdat_data.t)
-  % do an interpolation on closest point to avoid 2D interp
-  it_rt_eff = it_rt(it);
-  it_vol_eff = it_vol(it);
-  if (nbdim_x == 1)
-    ii=find(~isnan(gdat_data.grids_1d.rhopolnorm));
-  else
-    ii=find(~isnan(gdat_data.grids_1d.rhopolnorm(:,it)));
-  end
-  if (nbdim_x == 1)
-    if length(ii)==length(gdat_data.grids_1d.rhopolnorm)
-      gdat_data.grids_1d.rhotornorm(:,it)=interpos(rhotor.x,rhotor.data(:,it_rt_eff),gdat_data.grids_1d.rhopolnorm);
-      gdat_data.grids_1d.rhovolnorm(:,it)=interpos(rhovol.x,rhovol.data(:,it_vol_eff),gdat_data.grids_1d.rhopolnorm);
-    end
-  else
-    if length(ii)==size(gdat_data.grids_1d.rhopolnorm,1)
-      gdat_data.grids_1d.rhotornorm(:,it)=interpos(rhotor.x,rhotor.data(:,it_rt_eff),gdat_data.grids_1d.rhopolnorm(:,it));
-      gdat_data.grids_1d.rhovolnorm(:,it)=interpos(rhovol.x,rhovol.data(:,it_vol_eff),gdat_data.grids_1d.rhopolnorm(:,it));
-    end
-  end
-end
-gdat_data.grids_1d.rhotor_edge=interpos(rhotor.t',rhotor.rhotor_edge,gdat_data.t',-0.01);
-gdat_data.grids_1d.volume_edge=interpos(rhovol.t',rhovol.volume_edge,gdat_data.t',-0.01);
-
-return
diff --git a/crpptbx/JET/jet_requests_mapping.m b/crpptbx/JET/jet_requests_mapping.m
index 81fb6f3c139518b30ad1d3a5e4290ddc8e3acbee..9a4f0a62177e26456cd586d59325e613d187d516 100644
--- a/crpptbx/JET/jet_requests_mapping.m
+++ b/crpptbx/JET/jet_requests_mapping.m
@@ -250,7 +250,7 @@ switch lower(data_request)
   mapping.timedim = 1;
   mapping.method = 'switchcase';
   mapping.label = 'rhotor\_edge';
- case 'rhotor_norm'
+ case {'rhotor_norm','rhotornorm'}
   mapping.timedim = 2;
   mapping.method = 'switchcase';
   mapping.label = 'rhotor\_norm';