From 099238c8e001516df95a98bef3143cf9215ed1f3 Mon Sep 17 00:00:00 2001
From: Olivier Sauter <Olivier.Sauter@epfl.ch>
Date: Sat, 2 May 2020 14:37:13 +0200
Subject: [PATCH] rm to use CXRS_analysis svn

---
 matlab/TCV/CXRS_load_MDS.m | 1466 ------------------------------------
 1 file changed, 1466 deletions(-)
 delete mode 100644 matlab/TCV/CXRS_load_MDS.m

diff --git a/matlab/TCV/CXRS_load_MDS.m b/matlab/TCV/CXRS_load_MDS.m
deleted file mode 100644
index 83fecbc6..00000000
--- a/matlab/TCV/CXRS_load_MDS.m
+++ /dev/null
@@ -1,1466 +0,0 @@
-function data=CXRS_load_MDS(shot,sys,what2read,data,k_debug,k_plot)
-% Read CXRS data from MDS
-% Call: data=CXRS_load_MDS(shot,[sys,what2read,data,k_debug,k_plot])
-% Inputs: shot       - TCV shot number
-%         sys        - CXRS system 1 (default) - LFS HOR, 2 - VER
-%         what2read  - what to load from MDS  
-%                 cxrsdsi           - Displays CXRS Data Storage Info, information on nodes in MDS impotrant for CXRS data analysis
-%                 atlas (default)   - CXRS experimental data from MDS (ATLAS tree) from CCD camera
-%                 result            - Ti,Vi,nC,Zeff from CXRS
-%                 time              - CXRS timing data from MDS (vista)
-%                 analysis
-%                 calibration
-%                 plasma_ts; plasma_zeff; plasma_ip; psitbxtcv - External data for CXRS data analysis
-%         data       - adds data to this structure, default [] - empty (new structure)
-%         k_debug    - debug messages: 0 (default)-OFF; 1-ON, 
-%         k_plot     - plot option: 0 (default)-OFF; 1-ON, 
-%                     Created: AK, CRPP-EPFL, 2010
-%                     Update:  AK, 27.04.2011
-% Examples:  data=CXRS_load_MDS(shot,[],'cxrsdsi');
-%            data=CXRS_load_MDS(shot,sys,'atlas',[],1,1);
-%            data=CXRS_load_MDS(data.shot,data.system,'time',data,1,1);
-%            data=CXRS_load_MDS(shot,sys,'result',[],1,1);
-
-%% 0 Initialization
-% mdsserver='tcvdata';
-% mdsdefaultserver(mdsserver);
-% mdsconnect(mdsserver)
-
-% default shot - last
-if (nargin<1),        shot = [];  end
-if (length(shot)==0), shot = 0;   end
-if (shot==0),         shot = mdsopen(shot);end
-
-%default system No.1
-if (nargin<2),       sys=[]; end
-if (length(sys)==0), sys=1;  end
-
-%default action read measurement from ATLAS
-if (nargin<3),             what2read=[];      end
-if (length(what2read)==0), what2read='atlas';  end
-
-%redefine data structure
-if (nargin<4), data=[]; end 
-if (length(data)==0), data.shot=shot; data.system=sys; data.confidence      = -4; end
-
-if (nargin<5), k_debug=0; elseif (length(k_debug)==0), k_debug=0; elseif (k_debug==0), k_debug=0; else, k_debug=1; end 
-if (nargin<6), k_plot =0; elseif (length(k_plot )==0), k_plot =0; elseif (k_plot ==0), k_plot =0; else, k_plot =1; end 
-
-s=sprintf('%s',upper(mfilename));
-data.OK=1; data.msg=sprintf('%s OK',s);
-
-if ~strcmp(what2read,'file')
-    try
-        c_shot = shot;
-        shot = mdsopen(shot); 
-    catch
-        mdsdisconnect;
-        pause(0.1);
-        shot = mdsopen(c_shot); 
-    end  
-   if isempty(shot), 
-      data.msg=sprintf('ERROR in %s - MDS Open shot #%d - probably not exist',s,data.shot); disp(data.msg);
-      data.OK=-100; return
-   elseif (shot~=data.shot)&&(data.shot~=45640), 
-      data.msg=sprintf('ERROR in %s - MDS Open shot #%d <> data.shot #%d',s,shot,data.shot); disp(data.msg);
-      data.OK=-100; return
-   end
-end
-
-%% Different options
-switch (what2read)
-case 'cxrsdsi', 
-%% 1. CXRS Data Storage Info - Displays information on nodes in MDS impotrant for CXRS data analysis
-  shot = mdsopen(shot);
-  
-  data.last_action=sprintf('Check CXRS nodes in MDS for TCV shot %d',shot);
-  if k_debug, disp(sprintf('%s - %s',s,data.last_action)); end
-  Info=AK_MDS_node_info;
-  shot_time=Info.shot_time;
-  disp(sprintf('          ----- TCV shot %d cycle start date and time:%s -----',shot,shot_time));
-  shot_time_vec = Info.shot_time_vec;
-  shot_run      = Info.shot_run;
-  dsi.shot=shot; dsi.shot_time=shot_time;
-  id=0;
-  disp('          ------------------------------- CXRS data -------------------------------')
-  if(shot>=59000);
-      Sysmax=5;
-  elseif(shot>=50200);
-      Sysmax=4;
-  elseif (shot>=45100);
-      Sysmax=3; 
-  else
-      Sysmax=2;
-  end
-  Sys_range = intersect(1:Sysmax,sys);
-  for System=Sys_range
-    if shot>50100,
-      shot = mdsopen(shot);
-      TrEE='\ATLAS::CXRS';
-    elseif   (shot>=48900)&&(System~=3) || shot>=49900 ,
-      shot = mdsopen('cxrs',shot);
-      TrEE='\CXRS';
-    else
-      shot = mdsopen(shot);
-      TrEE='\ATLAS::CXRS';
-    end
-    if   (shot>=41216) && ((System~=3) || (shot>=45458))  
-      node           = sprintf('%s_%3.3d:COMMENT',TrEE,System);
-    else
-      node           = sprintf('\\ATLAS::CXRS_DATA:P_%3.3d',System);
-    end
-      if (System==1), SysT='LFS'; elseif (System==2), SysT='HFS'; elseif (System==3), SysT='VER'; elseif (System==4), SysT='EDV'; else, SysT='unknown'; end
-      disp(sprintf('                                     ---- System No.%2.2d (%s) ----',System,SysT))
-      label          = sprintf('CXRS experimental data from System No.%2.2d (%s)',System,SysT);
-      Info=AK_MDS_node_info(node,[],[],shot_time); node_owner=Info.node_owner; node_time=Info.node_time;
-      if (Info.OK==1), OK=true; else, OK=false; node_time='Not filled'; end      
-      if OK, msg=sprintf('%55s: filled at %s by %s',label,node_time,node_owner); else, msg=sprintf('%50s: not filled yet',label); end
-      disp(msg); id=id+1; 
-      dsi.node{id}.node=node; dsi.node{id}.OK=OK; dsi.node{id}.label=label; dsi.node{id}.time=node_time; dsi.node{id}.owner=node_owner;
-      dsi.CXRS_atlas_EXP_OK(System) = OK;
-      
-    if ((shot>=41216)&&(System~=3))||((shot>=45390)&&(System==3))  
-      label          = sprintf('CXRS ACQ Info for System No.%2.2d (%s)',System,SysT);
-      node           = sprintf('%s_%3.3d.INFO:CAMERA',TrEE,System);
-      Info=AK_MDS_node_info(node,[],[],shot_time); node_owner=Info.node_owner; node_time=Info.node_time;
-      if (Info.OK==1), OK=true; else, OK=false; node_time='Not filled'; end      
-      if OK, msg=sprintf('%55s: filled at %s by %s',label,node_time,node_owner); else, msg=sprintf('%50s: not filled yet',label); end
-      disp(msg); id=id+1; 
-      dsi.node{id}.node=node; dsi.node{id}.OK=OK; dsi.node{id}.label=label; dsi.node{id}.time=node_time; dsi.node{id}.owner=node_owner;
-      dsi.CXRS_atlas_INFO_OK(System) = OK;
-     
-      node           = sprintf('%s_%3.3d.DCD:RD',TrEE,System);
-      label          = sprintf('CXRS Diagnostic Chords for System No.%2.2d (%s)',System,SysT);
-      Info=AK_MDS_node_info(node,[],[],shot_time); node_owner=Info.node_owner; node_time=Info.node_time;
-      if (Info.OK==1), OK=true; else, OK=false; node_time='Not filled'; end      
-      if OK, msg=sprintf('%55s: filled at %s by %s',label,node_time,node_owner); else, msg=sprintf('%50s: not filled yet',label); end
-      disp(msg); id=id+1; 
-      dsi.node{id}.node=node; dsi.node{id}.OK=OK; dsi.node{id}.label=label; dsi.node{id}.time=node_time; dsi.node{id}.owner=node_owner;
-      dsi.CXRS_atlas_DCD_OK(System) = OK;
-    else
-      dsi.CXRS_atlas_DCD_OK(System) = 0;
-     dsi.CXRS_atlas_INFO_OK(System) = 0;
-    end
-    
-    if ((shot>=41216)&&(System~=3))||((shot>=45390)&&(System==3))
-      node           = sprintf('%s_%3.3d.ACQ:SPECTRA',TrEE,System);
-    else
-      node           = sprintf('\\ATLAS::CXRS_DATA:P_%3.3d',System);
-    end
-      label          = sprintf('CXRS Spectra for System No.%2.2d (%s)',System,SysT);
-      Info=AK_MDS_node_info(node,[],[],shot_time); node_owner=Info.node_owner; node_time=Info.node_time;
-      if (Info.OK==1), OK=true; else, OK=false; node_time='Not filled'; end      
-      if OK, msg=sprintf('%55s: filled at %s by %s',label,node_time,node_owner); else, msg=sprintf('%50s: not filled yet',label); end
-      disp(msg); id=id+1; 
-      dsi.node{id}.node=node; dsi.node{id}.OK=OK; dsi.node{id}.label=label; dsi.node{id}.time=node_time; dsi.node{id}.owner=node_owner;
-      dsi.CXRS_atlas_ACQ_OK(System) = OK;
-      
-    if ((shot>=41216)&&(System~=3))||((shot>=45390)&&(System==3))
-      node           = sprintf('%s_%3.3d.CALIBRATION.ABS:TRANSMISSION',TrEE,System); 
-      label          = sprintf('CXRS Absolute Calibration for System No.%2.2d (%s)',System,SysT);
-      Info=AK_MDS_node_info(node,[],[],shot_time); node_owner=Info.node_owner; node_time=Info.node_time;
-      if (Info.OK==1), OK=true; else, OK=false; node_time='Not filled'; end      
-      if OK, msg=sprintf('%55s: filled at %s by %s',label,node_time,node_owner); else, msg=sprintf('%50s: not filled yet',label); end
-      disp(msg); id=id+1; 
-      dsi.node{id}.node=node; dsi.node{id}.OK=OK; dsi.node{id}.label=label; dsi.node{id}.time=node_time; dsi.node{id}.owner=node_owner;
-      dsi.CXRS_atlas_CAL_ABS_OK(System) = OK;
-    else
-      dsi.CXRS_atlas_CAL_ABS_OK(System) = 0;
-    end
-      
-    if ((shot>=41216)&&(System~=3))||((shot>=45390)&&(System==3))
-      node           = sprintf('%s_%3.3d.CALIBRATION.CAMERA:PARAM',TrEE,System);
-      label          = sprintf('CXRS Camera Calibration for System No.%2.2d (%s)',System,SysT);
-      Info=AK_MDS_node_info(node,[],[],shot_time); node_owner=Info.node_owner; node_time=Info.node_time;
-      if (Info.OK==1), OK=true; else, OK=false; node_time='Not filled'; end      
-      if OK, msg=sprintf('%55s: filled at %s by %s',label,node_time,node_owner); else, msg=sprintf('%50s: not filled yet',label); end
-      disp(msg); id=id+1; 
-      dsi.node{id}.node=node; dsi.node{id}.OK=OK; dsi.node{id}.label=label; dsi.node{id}.time=node_time; dsi.node{id}.owner=node_owner;
-      dsi.CXRS_atlas_CAL_Camera_OK(System) = OK;
-    else
-      dsi.CXRS_atlas_CAL_Camera_OK(System) = 0;
-    end
-      
-    if ((shot>=41216)&&(System~=3))||((shot>=45390)&&(System==3))
-      node           = sprintf('%s_%3.3d.CALIBRATION.WL:SPECTRA',TrEE,System);
-      label          = sprintf('CXRS WaveLength Calibration for System No.%2.2d (%s)',System,SysT);
-      Info=AK_MDS_node_info(node,[],[],shot_time); node_owner=Info.node_owner; node_time=Info.node_time;
-      if (Info.OK==1), OK=true; else, OK=false; node_time='Not filled'; end      
-      if OK, msg=sprintf('%55s: filled at %s by %s',label,node_time,node_owner); else, msg=sprintf('%50s: not filled yet',label); end
-      disp(msg); id=id+1; 
-      dsi.node{id}.node=node; dsi.node{id}.OK=OK; dsi.node{id}.label=label; dsi.node{id}.time=node_time; dsi.node{id}.owner=node_owner;
-      dsi.CXRS_atlas_CAL_WL_OK(System) = OK;
-    else
-      dsi.CXRS_atlas_CAL_WL_OK(System) = 0;
-    end
-      
-      if ((shot>=41216)&&(System~=3))||((shot>=45390)&&(System==3))
-          node           = sprintf('%s_%3.3d.CALIBRATION.FULL_FRAME:SPECTRA',TrEE,System);
-      else
-          node           = sprintf('\\ATLAS::CXRS_CALIBRATION.SYS_%3.3d:SPECTRA',System);
-      end
-      label          = sprintf('CXRS Full Frame Calibration for System No.%2.2d (%s)',System,SysT);
-      Info=AK_MDS_node_info(node,[],[],shot_time); node_owner=Info.node_owner; node_time=Info.node_time;
-      if (Info.OK==1), OK=true; else, OK=false; node_time='Not filled'; end      
-      if OK, msg=sprintf('%55s: filled at %s by %s',label,node_time,node_owner); else, msg=sprintf('%50s: not filled yet',label); end
-      disp(msg); id=id+1; 
-      dsi.node{id}.node=node; dsi.node{id}.OK=OK; dsi.node{id}.label=label; dsi.node{id}.time=node_time; dsi.node{id}.owner=node_owner;
-      dsi.CXRS_atlas_CAL_FF_OK(System) = OK;
-      
-      shot = mdsopen(shot);
-
-      if (shot>=36390)||(System~=1),
-          node           = sprintf('\\RESULTS::CXRS_%3.3d:TI',System);
-      else
-          node           = sprintf('\\RESULTS::CXRS:TI');          
-      end
-      label          = sprintf('CXRS Ti Results for System No.%2.2d (%s)',System,SysT);
-      Info=AK_MDS_node_info(node,[],[],shot_time); node_owner=Info.node_owner; node_time=Info.node_time;
-      [node_data,stat]=mdsdata(node);
-      if (Info.OK==1)&&(mod(stat,2)), OK=true; else, OK=false; node_time='Not filled'; end      
-      if OK, msg=sprintf('%55s: filled at %s by %s',label,node_time,node_owner); else, msg=sprintf('%50s: not filled yet',label); end
-      disp(msg); id=id+1; 
-      dsi.node{id}.node=node; dsi.node{id}.OK=OK; dsi.node{id}.label=label; dsi.node{id}.time=node_time; dsi.node{id}.owner=node_owner;
-      dsi.CXRS_result_TI_OK(System) = OK;
-      
-      if (shot>=36390),
-          node           = sprintf('\\RESULTS::CXRS_%3.3d:VI',System);
-      elseif (System==1)
-          node           = sprintf('\\RESULTS::CXRS:VI_TOR');  
-      else
-          node           = sprintf('\\RESULTS::CXRS:VI_POL');  
-      end
-      label          = sprintf('CXRS Vi Results for System No.%2.2d (%s)',System,SysT);
-      Info=AK_MDS_node_info(node,[],[],shot_time); node_owner=Info.node_owner; node_time=Info.node_time;
-      [node_data,stat]=mdsdata(node);
-      if (Info.OK==1)&&(mod(stat,2)), OK=true; else, OK=false; node_time='Not filled'; end      
-      if OK, msg=sprintf('%55s: filled at %s by %s',label,node_time,node_owner); else, msg=sprintf('%50s: not filled yet',label); end
-      disp(msg); id=id+1; 
-      dsi.node{id}.node=node; dsi.node{id}.OK=OK; dsi.node{id}.label=label; dsi.node{id}.time=node_time; dsi.node{id}.owner=node_owner;
-      dsi.CXRS_result_VI_OK(System) = OK;
-
-      if (shot>=36390)||(System~=1),
-          node           = sprintf('\\RESULTS::CXRS_%3.3d:NI',System);
-      else
-          node           = sprintf('\\RESULTS::CXRS:NI');          
-      end
-      label          = sprintf('CXRS nC Results for System No.%2.2d (%s)',System,SysT);
-      Info=AK_MDS_node_info(node,[],[],shot_time); node_owner=Info.node_owner; node_time=Info.node_time;
-      [node_data,stat]=mdsdata(node);
-      if (Info.OK==1)&&(mod(stat,2)), OK=true; else, OK=false; node_time='Not filled'; end      
-      if OK, msg=sprintf('%55s: filled at %s by %s',label,node_time,node_owner); else, msg=sprintf('%50s: not filled yet',label); end
-      disp(msg); id=id+1; 
-      dsi.node{id}.node=node; dsi.node{id}.OK=OK; dsi.node{id}.label=label; dsi.node{id}.time=node_time; dsi.node{id}.owner=node_owner;
-      dsi.CXRS_result_NI_OK(System) = OK;
-
-    if (shot>=41216)  
-      node           = sprintf('\\RESULTS::CXRS_%3.3d:ZEFF',System);
-      label          = sprintf('CXRS Zeff Results for System No.%2.2d (%s)',System,SysT);
-      Info=AK_MDS_node_info(node,[],[],shot_time); node_owner=Info.node_owner; node_time=Info.node_time;
-      if (Info.OK==1), OK=true; else, OK=false; node_time='Not filled'; end      
-      if OK, msg=sprintf('%55s: filled at %s by %s',label,node_time,node_owner); else, msg=sprintf('%50s: not filled yet',label); end
-      disp(msg); id=id+1; 
-      dsi.node{id}.node=node; dsi.node{id}.OK=OK; dsi.node{id}.label=label; dsi.node{id}.time=node_time; dsi.node{id}.owner=node_owner;
-      dsi.CXRS_result_ZEFF_OK(System) = OK;
-    else
-      dsi.CXRS_result_ZEFF_OK(System) = 0; 
-    end
-    
-    if (shot>=40000) 
-      node           = sprintf('\\RESULTS::CXRS_%3.3d.WL_CAL:WAVELENGTH',System);  
-      label          = sprintf('CXRS Cali Results for System No.%2.2d (%s)',System,SysT);
-      Info=AK_MDS_node_info(node,[],[],shot_time); node_owner=Info.node_owner; node_time=Info.node_time;
-      if (Info.OK==1), OK=true; else OK=false; node_time='Not filled'; end      
-      if OK, msg=sprintf('%55s: filled at %s by %s',label,node_time,node_owner); else msg=sprintf('%50s: not filled yet',label); end
-      disp(msg); id=id+1; 
-      dsi.node{id}.node=node; dsi.node{id}.OK=OK; dsi.node{id}.label=label; dsi.node{id}.time=node_time; dsi.node{id}.owner=node_owner;
-      dsi.CXRS_result_WLCAB_OK(System) = OK;
-    else
-      dsi.CXRS_result_WLCAB_OK(System) = 0; 
-    end
-    
-    
-    
-  end
-
-  disp('          ----------------------------- CXRS profiles -----------------------------')
-
-  node           = sprintf('\\RESULTS::CXRS.PROFFIT:TI');
-  label          = sprintf('CXRS Ion Temperature Profile');
-  Info=AK_MDS_node_info(node,[],[],shot_time); node_owner=Info.node_owner; node_time=Info.node_time;
-  if (Info.OK==1), OK=true; else, OK=false; node_time='Not filled'; end      
-  if OK, msg=sprintf('%55s: filled at %s by %s',label,node_time,node_owner); else, msg=sprintf('%50s: not filled yet',label); end
-  disp(msg); id=id+1; 
-  dsi.node{id}.node=node; dsi.node{id}.OK=OK; dsi.node{id}.label=label; dsi.node{id}.time=node_time; dsi.node{id}.owner=node_owner;
-  eval(sprintf('dsi.CXRS_proffit_Ti_OK = %d;',OK));
-
-  node           = sprintf('\\RESULTS::CXRS.PROFFIT:VI_TOR');
-  label          = sprintf('CXRS CVI Toroidal Rotation Profile');
-  Info=AK_MDS_node_info(node,[],[],shot_time); node_owner=Info.node_owner; node_time=Info.node_time;
-  if (Info.OK==1), OK=true; else, OK=false; node_time='Not filled'; end      
-  if OK, msg=sprintf('%55s: filled at %s by %s',label,node_time,node_owner); else, msg=sprintf('%50s: not filled yet',label); end
-  disp(msg); id=id+1; 
-  dsi.node{id}.node=node; dsi.node{id}.OK=OK; dsi.node{id}.label=label; dsi.node{id}.time=node_time; dsi.node{id}.owner=node_owner;
-  eval(sprintf('dsi.CXRS_proffit_Vi_Tor_OK = %d;',OK));
-
-  node           = sprintf('\\RESULTS::CXRS.PROFFIT:VI_POL');
-  label          = sprintf('CXRS CVI Poloidal Rotation Profile');
-  Info=AK_MDS_node_info(node,[],[],shot_time); node_owner=Info.node_owner; node_time=Info.node_time;
-  if (Info.OK==1), OK=true; else, OK=false; node_time='Not filled'; end      
-  if OK, msg=sprintf('%55s: filled at %s by %s',label,node_time,node_owner); else, msg=sprintf('%50s: not filled yet',label); end
-  disp(msg); id=id+1; 
-  dsi.node{id}.node=node; dsi.node{id}.OK=OK; dsi.node{id}.label=label; dsi.node{id}.time=node_time; dsi.node{id}.owner=node_owner;
-  eval(sprintf('dsi.CXRS_proffit_Vi_Pol_OK = %d;',OK));
-
-  node           = sprintf('\\RESULTS::CXRS.PROFFIT:NI');
-  label          = sprintf('CXRS CVI Ion Density Profile');
-  Info=AK_MDS_node_info(node,[],[],shot_time); node_owner=Info.node_owner; node_time=Info.node_time;
-  if (Info.OK==1), OK=true; else, OK=false; node_time='Not filled'; end      
-  if OK, msg=sprintf('%55s: filled at %s by %s',label,node_time,node_owner); else, msg=sprintf('%50s: not filled yet',label); end
-  disp(msg); id=id+1; 
-  dsi.node{id}.node=node; dsi.node{id}.OK=OK; dsi.node{id}.label=label; dsi.node{id}.time=node_time; dsi.node{id}.owner=node_owner;
-  eval(sprintf('dsi.CXRS_proffit_Ni_OK = %d;',OK));
-
-  
-  disp('          --------------------------- External MDS data ---------------------------')
-  % Nodes required for CXRS data analysis
-  % < Feb 08, 2013
-  %    \TCV_SHOT::TOP.RESULTS.EQ_RECON.TRACES:I_P         == \I_P
-  %    \TCV_SHOT::TOP.RESULTS.EQ_RECON.PSITBX:RMAG        == \PSITBX:RMAG
-  %    \TCV_SHOT::TOP.RESULTS.THOMSON:NE                  == \RESULTS::THOMSON:NE == \THOMSON:NE == \NE_THOMSON
-  %    \TCV_SHOT::TOP.RESULTS.THOMSON:PSISCATVOL          == \THOMSON:PSISCATVOL
-  %    \TCV_SHOT::TOP.RESULTS.THOMSON.PROFILES.AUTO:NE    == \RESULTS::THOMSON.PROFILES.AUTO:NE == \THOMSON.PROFILES.AUTO:NE
-  % > Feb 08, 2013
-  %    \TCV_SHOT::TOP.RESULTS.EQ_RECON.TRACES:PSI == \RESULTS::PSI        == \PSI 
-  %    \TCV_SHOT::TOP.RESULTS.THOMSON:NE          == \RESULTS::THOMSON:NE == \THOMSON:NE == \NE_THOMSON
-  
-  % Plasma current
-  node = sprintf('\\I_P:FOO');         
-  label          = sprintf('Plasma Current (Ip)');
-  Info=AK_MDS_node_info(node,[],[],shot_time); node_owner=Info.node_owner; node_time=Info.node_time;
-  if (Info.OK==1), OK=true; else, OK=false; node_time='Not filled'; end      
-  if OK, msg=sprintf('%55s: filled at %s by %s',label,node_time,node_owner); else, msg=sprintf('%50s: not filled yet',label); end
-  disp(msg); id=id+1; 
-  dsi.node{id}.node=node; dsi.node{id}.OK=OK; dsi.node{id}.label=label; dsi.node{id}.time=node_time; dsi.node{id}.owner=node_owner;
-  eval(sprintf('dsi.CXRS_plasma_IP_OK = %d;',OK));
-  
-  % LIUQE
-  node = sprintf('\\PSI:FOO');         
-  label          = sprintf('TCV Psi Toolbox (PSI, LIUQE)');
-  Info=AK_MDS_node_info(node,[],[],shot_time); node_owner=Info.node_owner; node_time=Info.node_time;
-  if (Info.OK==1), OK=true; else, OK=false; node_time='Not filled'; end      
-  if OK, msg=sprintf('%55s: filled at %s by %s',label,node_time,node_owner); else, msg=sprintf('%50s: not filled yet',label); end
-  disp(msg); id=id+1; 
-  dsi.node{id}.node=node; dsi.node{id}.OK=OK; dsi.node{id}.label=label; dsi.node{id}.time=node_time; dsi.node{id}.owner=node_owner;
-  eval(sprintf('dsi.CXRS_plasma_PSI_OK = %d;',OK));
-
-  % Thomson Ne and Te
-  % node = sprintf('\\ne_thomson:foo');                         
-  node = sprintf('\\THOMSON:NE:FOO');
-  label          = sprintf('Thomson Ne and Te experimental data');
-  Info=AK_MDS_node_info(node,[],[],shot_time); node_owner=Info.node_owner; node_time=Info.node_time;
-  if (Info.OK==1), OK=true; else, OK=false; node_time='Not filled'; end      
-  if OK, msg=sprintf('%55s: filled at %s by %s',label,node_time,node_owner); else, msg=sprintf('%50s: not filled yet',label); end
-  disp(msg); id=id+1; 
-  dsi.node{id}.node=node; dsi.node{id}.OK=OK; dsi.node{id}.label=label; dsi.node{id}.time=node_time; dsi.node{id}.owner=node_owner;
-  eval(sprintf('dsi.CXRS_plasma_TS_data_OK = %d;',OK));
-
-  % Thomson PsiScatVol
-  %node = sprintf('\\thomson:psiscatvol:foo'); 
-  node = sprintf('\\THOMSON:PSISCATVOL:FOO');
-  label          = sprintf('Thomson PsiScatVol');
-  Info=AK_MDS_node_info(node,[],[],shot_time); node_owner=Info.node_owner; node_time=Info.node_time;
-  if (Info.OK==1), OK=true; else, OK=false; node_time='Not filled'; end      
-  if OK, msg=sprintf('%55s: filled at %s by %s',label,node_time,node_owner); else, msg=sprintf('%50s: not filled yet',label); end
-  disp(msg); id=id+1; 
-  dsi.node{id}.node=node; dsi.node{id}.OK=OK; dsi.node{id}.label=label; dsi.node{id}.time=node_time; dsi.node{id}.owner=node_owner;
-  eval(sprintf('dsi.CXRS_plasma_PsiScatVol_OK = %d;',OK));
-
-  % Thomson auto fits
-  %node = sprintf('\\RESULTS::THOMSON.PROFILES.AUTO:NE:FOO');
-  node = sprintf('\\THOMSON.PROFILES.AUTO:NE:FOO');
-  label          = sprintf('Thomson AutoFit Ne and Te Profiles');
-  Info=AK_MDS_node_info(node,[],[],shot_time); node_owner=Info.node_owner; node_time=Info.node_time;
-  if (Info.OK==1), OK=true; else, OK=false; node_time='Not filled'; end      
-  if ~OK, 
-      node      = sprintf('\\RESULTS::PROFFIT.LOCAL_TIME:NEFT'); 
-      label          = sprintf('Thomson Proffit Profiles');
-      Info=AK_MDS_node_info(node,[],[],shot_time); node_owner=Info.node_owner; node_time=Info.node_time;
-      if (Info.OK==1), OK=true; else, OK=false; node_time='Not filled'; fill_msg='not filled yet'; end      
-  end
-  if (Info.OK==1),
-      node_run=Info.node_run;
-       if (node_run>=shot_run),
-           OK=1;
-           fill_msg='filled';
-       else
-           OK=0;
-           fill_msg=sprintf('created at %s before shot',node_time);
-       end
-  end
-  if OK, msg=sprintf('%55s: filled at %s by %s',label,node_time,node_owner); else, msg=sprintf('%50s: %s',label,fill_msg); end  
-  disp(msg); id=id+1; 
-  dsi.node{id}.node=node; dsi.node{id}.OK=OK; dsi.node{id}.label=label; dsi.node{id}.time=node_time; dsi.node{id}.owner=node_owner;
-  eval(sprintf('dsi.CXRS_plasma_TS_profile_OK = %d;',OK));
-  
-  disp(sprintf('          ----- TCV shot %d cycle start date and time:%s RUN: %8.6f (YYYYMMDD.hhmmss) -----',shot,shot_time,shot_run));
-  data.dsi=dsi;
-  data.last_action=sprintf('Check CXRS nodes in MDS for TCV shot %d - DONE',shot);
-  if k_debug, disp(sprintf('%s - %s',s,data.last_action)); end
-  
-case 'atlas', 
-%% 2. Load CXRS experimental data from MDS (ATLAS tree) from CCD camera
-  data.last_action=sprintf('Read CXRS data from MDS (atlas) TCV shot:%d - system No.%d',shot,sys);
-  if k_debug, disp(sprintf('%s - %s',s,data.last_action)); end
-  if shot>50100,
-    [D,Stat]=CXRS_load_ATLAS(shot,sys);
-  elseif (shot>=48900)&(sys~=3) || shot>=49900,
-    [D,Stat]=CXRS_load_TCV1(shot,sys);  
-  elseif ((shot>=41216)&(sys~=3))||((shot>=45390)&(sys==3)),
-    [D,Stat]=CXRS_load_ATLAS(shot,sys);
-  elseif (shot>=45092)&(sys==3)
-    [D,Stat]=CXRS_load_ATLAS_2010(shot,sys); % Old cameras
-  elseif (shot>=36390)&(shot<=41215)
-    [D,Stat]=CXRS_load_ATLAS_2010(shot,sys); % Old cameras
-  else
-     data.msg=sprintf('%s - CXRS analysis not possible for TCV shot:%d < 36390',s,shot); disp(data.msg);
-     data.OK=-112; return,
-  end
-  if (D.OK<1), 
-     data.msg=sprintf('ERROR in %s - Data loading error for TCV shot:%d',s,shot); disp(data.msg);
-     data.OK=D.OK; return,
-  elseif (D.OK>1), 
-     data.msg=sprintf('Warning in %s - Data loading for TCV shot:%d',s,shot); disp(data.msg);
-     data.OK=D.OK;
-  end
-  if ((D.Param.Shot~=shot)||(D.Param.System~=sys))
-     data.msg=sprintf('Warning in %s - shot and/or system not correct %d->%d, %d->%d ',s,shot,D.Param.Shot,sys,D.Param.System); disp(data.msg);
-     data.shot=D.Param.Shot; data.system=D.Param.System;
-  end
-  data.load=rmfield(D,'OK');
-  
-  CXRS_FixTrig; % Fix Trig. problem for CXRS ACQ
-
-  data.ACQ.DateTime     = data.load.ACQ.Param.DateTime;
-  data.ACQ.Shot         = data.load.ACQ.Param.Shot;
-  data.ACQ.System       = data.load.ACQ.Param.System;
-  % Convert counts to photons
-  % active signals in photons to CCD
-  if isempty(data.load.CAL.Camera.QEFF.FunctionName),
-      disp('ATTENTION: no data.load.CAL.Camera.QEFF.FunctionName field')
-    if (data.system==1), QE=0.1; elseif (data.system==3), QE=0.1; else, QE=0.15; end
-  else
-    if ~isfield(data.load.Info.Spectrometer,'WaveLength'), data.load.Info.Spectrometer.WaveLength=5286; end
-    cmd=sprintf('QE=%s(%f);',data.load.CAL.Camera.QEFF.FunctionName,data.load.Info.Spectrometer.WaveLength);
-    eval(cmd);     % QE - Camera quantum efficiency (0.968) event/photon
-  end
-  if isempty(data.load.CAL.Camera.AMP.FunctionName),
-    AMP=1; eNoise=1;
-  else
-    cmd=sprintf('[AMP,P,eNoise]=%s(%f,%f,%f,%f,[],%f);',data.load.CAL.Camera.AMP.FunctionName,data.load.ACQ.Setup.PreAmpGain,data.load.ACQ.Setup.OutputAmplifier,data.load.ACQ.Setup.HSSpeed,data.load.ACQ.Setup.EMCCDGain,data.load.Info.Camera.CameraSerialNumber);
-    eval(cmd);     % AMP - ADCcounts/event
-  end
-  data.ACQ.QE      = QE;  % QE - Camera quantum efficiency (0.968) event/photon
-  data.ACQ.AMP     = AMP; % AMP - ADCcounts/event
-  data.ACQ.Spectra      = data.load.ACQ.Spectra/AMP/QE; % ADC counts /(event/photon)/(ADCcount/event) =>  [photons on ccd / pixel]
-  data.ACQ.Label_Spectra = 'data.ACQ.Spectra in [ph], for [counts] use data.load.ACQ.Spectra';
-  data.ACQ.phNoise      = eNoise*QE; % camera noise (in photons)
-  data.last_action=sprintf('Read CXRS data from MDS (atlas) TCV shot:%d - system No.%d - DONE',shot,sys);
-  if k_debug, 
-      disp('          --------------------------- Load Summary ---------------------------')
-      for id=1:length(Stat.OK)
-          if (Stat.OK(id)==1), Msg='Loaded'; else, Msg='NOT Loaded'; end
-          disp(sprintf('%60s - %s',Stat.node{id},Msg));
-      end
-      disp(sprintf('%s - %s',s,data.last_action)); 
-  end
-  if k_plot,
-      figure(1205); clf
-      plot(squeeze(max(data.load.ACQ.Spectra,[],2)));
-      grid on
-      set(gca,'Xlim',[0 size(data.load.ACQ.Spectra,1)+1]);
-      xlabel('WaveLength, pix'); ylabel('Max. counts');
-      title(sprintf('CXRS ACQ Spectra #%d SYS:%2.2d',data.shot,data.system));      
-  end
-  
-case 'file',
-%% 3. Load CXRS experimental data from file from CCD camera - test of CXRS data analysis
-  data.last_action=sprintf('Read CXRS data from file for TCV shot:%d - system No.%d',shot,sys);
-  if k_debug, disp(sprintf('%s - %s',s,data.last_action)); end
-  data_path='/macii/karpusho/Work/CXRS/';
-  ACQ_file=sprintf('%sACQ%2.2d_%5.5d.mat',data_path,sys,shot);
-  CAL_file=sprintf('%sCAL%2.2d_%5.5d.mat',data_path,sys,shot);
-  if (exist(ACQ_file,'file')~=2),
-     data.msg=sprintf('ERROR in %s - File %s not found',s,ACQ_file); disp(data.msg);
-     data.OK=-121; return,
-  elseif (exist(CAL_file,'file')~=2),
-     data.msg=sprintf('ERROR in %s - File %s not found',s,CAL_file); disp(data.msg);
-     data.OK=-122; return,
-  end
-  data.load=load(ACQ_file);
-  data.load.CAL=load(CAL_file);
-  data.ACQ.DateTime     = data.load.ACQ.Param.DateTime;
-  data.ACQ.Shot         = data.load.ACQ.Param.Shot;
-  data.ACQ.System       = data.load.ACQ.Param.System;
-  data.ACQ.Spectra      = double(data.load.ACQ.Spectra);
-  
-case 'time',
-%% 4. Load CXRS timing data from MDS (vista)
-  shot = mdsopen(shot); 
-  data.last_action=sprintf('Read CXRS timing for TCV shot %d - system No.%d',shot,sys);
-  if k_debug, disp(sprintf('%s - %s',s,data.last_action)); end
-  OK=1;
-  if ~isfield(data,'load'), OK=-1; elseif ~isfield(data.load,'ACQ'), OK=-2; elseif ~isfield(data.load.ACQ,'Timing'), OK=-3; elseif ~isfield(data.load.ACQ.Timing,'TriggerName'), OK=-4; end 
-  if (OK~=1), 
-           data.msg=sprintf('%s ERROR - NO field ''data.load.ACQ.Timing.TriggerName'' in input data structure',s); disp(data.msg);
-           data.OK=-129; return
-  end
-  if (data.load.ACQ.Timing.TriggerName(2)=='\'), icf=2; else, icf=1; end
-  node=data.load.ACQ.Timing.BurstsName(icf:end);
-  data.ACQ.Timing.timpulses=mdsdata(node);
-  data.ACQ.Timing.node_timpulses=node;
-  node=data.load.ACQ.Timing.PeriodName(icf:end);
-  data.ACQ.Timing.timperiode = mdsdata(node)./1e6;
-  data.ACQ.Timing.node_timperiode = node;
-  node=data.load.ACQ.Timing.TriggerName(icf:end);
-  data.ACQ.Timing.timtrig=mdsdata(node);
-  data.ACQ.Timing.node_timtrig=node;
-  if shot > 50100
-       dPeriod=-0.5;
-  elseif (shot>46558),
-      if (sys==3), dPeriod=0.5; else, dPeriod=-0.5; end
-  else
-  % Correction on Trig length and +- for shots <= 46558
-    if (sys==1), dPeriod=-0.5; elseif (sys==3), dPeriod=-0.5; elseif ((shot>41258)&(shot<41892)), dPeriod=-0.5; else, dPeriod=-0.0; end
-    if (shot<41218)&(shot>36396)&(data.system==1), 
-      dPeriod=dPeriod+1; 
-    elseif (shot<=36396)&(shot>0)&(data.system==1), 
-      dPeriod=dPeriod-1; 
-    elseif  (shot<41218)&(data.system==2), 
-      dPeriod=dPeriod-0.5; 
-    elseif (shot>45092)&(data.system==3), 
-      dPeriod=dPeriod+1;
-    end
-    % end of coorection
-  end
-    
-  % disp(dPeriod); 
-  data.ACQ.Time= data.ACQ.Timing.timtrig + ([0:data.ACQ.Timing.timpulses-1]+dPeriod).*data.ACQ.Timing.timperiode;
-  data.ACQ.Time=data.ACQ.Time(1:size(data.ACQ.Spectra,3));
-  data.ACQ.dTime=data.ACQ.Timing.timperiode;  
-  
-  % Fix. Trig problem
-  if (shot==47849)&&(data.system~=3), data.ACQ.Time=data.ACQ.Time-0.02; end 
-  if (shot==47851)&&(data.system==1), data.ACQ.Time=data.ACQ.Time-0.02; end
-  if (shot==47854)&&(data.system==1), data.ACQ.Time=data.ACQ.Time-0.02; end
-  if (shot==47875)&&(data.system==1), data.ACQ.Time=data.ACQ.Time-0.02; end
-  if (shot==47876)&&(data.system==1), data.ACQ.Time=data.ACQ.Time-0.02; end
-  if (shot==48166)&&(data.system==1), data.ACQ.Time=data.ACQ.Time-0.02; end
-  if (shot==47420)&&(data.system==1), data.ACQ.Time=data.ACQ.Time-0.02; end
-  if (shot==47337)&&(data.system==1), data.ACQ.Time=data.ACQ.Time-0.02; end
-  if (shot==48881)&&(data.system==1), data.ACQ.Time=data.ACQ.Time-0.02; end
-  if (shot==48959)&&(data.system==1), data.ACQ.Time=data.ACQ.Time-0.02; end
-
-  data.last_action=sprintf('Read CXRS timing for TCV shot %d - system No.%d - DONE',shot,sys);
-  if k_debug, 
-      disp(sprintf('          CXRS data acquired in %4.4f - %4.4f sec with integration time %2.2f msec',data.ACQ.Time([1 end]),data.ACQ.dTime*1000))
-      disp(sprintf('%s - %s',s,data.last_action)); 
-  end
-  if k_plot,
-      figure(1206); clf
-      plot(data.ACQ.Time(1:size(data.ACQ.Spectra,3)),squeeze(mean(data.ACQ.Spectra,2))*data.ACQ.AMP*data.ACQ.QE);
-      grid on
-      set(gca,'Xlim',data.ACQ.Time([1 end]));
-      xlabel('Time, sec'); ylabel('Mean counts');
-      title(sprintf('CXRS ACQ #%d SYS:%2.2d',data.shot,data.system));      
-  end
-
-case 'plasma_ip',
-%% 5. Read TCV plasma current
-  shot = mdsopen(shot); 
-  data.last_action=sprintf('Read TCV plasma current for TCV shot %d',shot);
-  if k_debug, disp(sprintf('%s - %s',s,data.last_action)); end
-  ip_limit=20000.; % minimal Ip 20kA
-  data.plasma.ip_lower_limit_check = ip_limit;
-  node=sprintf('\\magnetics::iplasma:trapeze');
-  %tdis=sprintf('times(getnci("\\%s","TIME_INSERTED"))',node); node_time=mdsvalue(tdis);
-  %tdis=sprintf('getnci("\\%s","OWNER")',node);  node_owner=mdsvalue(tdis);   node_owner=num2str(node_owner);
-  Info=AK_MDS_node_info(node,[],[]); node_owner=Info.node_owner; node_time=Info.node_time;
-  node=sprintf('\\magnetics::iplasma:trapeze[*:*:0.0001]');
-  node_tdi=tdi(node);
-  if strcmp(node_owner,'[0,0]')||strcmp(node_owner,'0'), node_owner='[unknown]'; OK=0; else, OK=1; end
-  if OK, 
-     if k_debug, disp(sprintf('    ---  Ip DATA filled on %s by %s',node_time,node_owner)); end
-  else
-     if k_debug, disp(sprintf('    ---  Ip DATA - EMPTY')); end
-     data.msg=sprintf('%s ERROR - NO data in MDS for %s (#%d)',s,node,shot); disp(data.msg);
-     data.OK=-131; return
-  end
-  data.plasma.ip_shot    = shot;
-  data.plasma.ip_tdi     = node_tdi;
-  data.plasma.ip_date    = node_time;
-  data.plasma.ip_owner   = node_owner;
-  data.plasma.ip         = node_tdi.data-mean(node_tdi.data(1:10));
-  data.plasma.ip_time    = node_tdi.dim{1};
-  max_ip=max(abs(data.plasma.ip));
-  if (max_ip<=ip_limit),
-   data.msg=sprintf('%s ERROR - low |Ip| - %2.2f <= %2.2f kA  (#%d)',s,max_ip/1000,ip_limit/1000,shot); disp(data.msg);
-   data.OK=-132; return
-  end
-  sel=find(abs(data.plasma.ip)>=0.1*max_ip);
-  data.plasma.ip_start=data.plasma.ip_time(sel(1));
-  data.plasma.ip_stop =data.plasma.ip_time(sel(end));
-  if (data.shot~=40539),
-   y = mdsvalue('abs(tcv_eq("BZERO","LIUQE"))');
-   data.plasma.BT=mean(y);
-  else
-   data.plasma.BT=1.46;
-  end
-  data.last_action=sprintf('Read TCV plasma current for TCV shot %d - DONE',shot);
-  if k_debug, 
-      disp(sprintf('    ---  TCV plasma in %2.2f-%2.2f (sec) max |Ip| %2.2f kA; mean BT %2.2f T',data.plasma.ip_start,data.plasma.ip_stop,max_ip/1000,data.plasma.BT));
-      disp(sprintf('%s - %s',s,data.last_action)); 
-  end
-  if k_plot&&(data.OK==1),
-      figure(1207); clf
-      plot(data.plasma.ip_time,data.plasma.ip/1000,'-r','LineWidth',2.);
-      grid on
-      set(gca,'Xlim',data.plasma.ip_time([1 end]),'Ylim',[min(data.plasma.ip)-10.e+3 max(data.plasma.ip)+10.e+3]/1000.);
-      xlabel('Time, sec'); ylabel('Ip, kA');
-      title(sprintf('Plasma current for TCV shot:%d',data.shot));      
-  end
-
-case 'psitbxtcv',
-%% 6. Read TCV psitbxtcv
-  data.last_action=sprintf('Read psitbxtcv for TCV shot %d',shot);
-  if k_debug, disp(sprintf('%s - %s',s,data.last_action)); end
-  try
-      source = 'LIUQE';
-      % using LIUQE 2 reconstruction
-      if data.shot== 47340 || data.shot== 47341 || data.shot== 47345  || data.shot== 47351 || data.shot== 47420 || data.shot== 47402 || data.shot== 47418  || data.shot== 47417  || data.shot== 47402 || data.shot== 47418  || data.shot== 47415  || data.shot== 47417  || data.shot== 47906 || data.shot== 47865 || data.shot== 47901
-          data.shot
-          data.shot
-          source = 'LIUQE2';
-      end
-      liuqe_times = mdsvalue('dim_of(tcv_eq("i_p",$1))',source);
-      input_times = liuqe_times(iround(liuqe_times,data.calc.time));
-      psi = psitbxtcv(shot,input_times,'01',source);
-      mask = iround(psi.t,input_times);% Handle duplicate times
-      psi = subs_time(psi,mask);       % Handle duplicate times
-      
-      data.plasma.psi_shot    = shot;
-      data.plasma.psi         = psi;
-  catch
-      data.plasma.psi_shot    = NaN;
-      data.plasma.psi=[];
-      data.msg=sprintf('%s ERROR - psitbxtcv not OK for TCV shhot: %d',s,shot); disp(data.msg);
-      data.OK=-151;
-  end
-  data.last_action=sprintf('Read psitbxtcv for TCV shot %d - DONE',shot);
-  if k_debug, disp(sprintf('%s - %s',s,data.last_action)); end
-  if k_plot&&(data.OK==1),
-      figure(1208); clf
-      plot(data.plasma.psi)
-      title(sprintf('PsiTbxTCV for shot No.%d',data.shot));      
-  end
-
-
-case 'plasma_zeff', % deafult value for Zeff
-%% 7. Read Zeff from alternative diagnostics - Not inplemented yet
-  data.last_action=sprintf('Read Zeff for TCV shot %d',shot);
-  if k_debug, disp(sprintf('%s - %s',s,data.last_action)); end
-  data.plasma.Zeff = 2.5;
-  data.last_action=sprintf('Read Zeff for TCV shot %d - DONE',shot);
-  if k_debug, disp(sprintf('%s - %s',s,data.last_action)); end
-
-case 'plasma_ts',
-%% 8. Read TCV Thomson Te and ne profiles
-  shot = mdsopen(shot); 
-  data.last_action=sprintf('Read TCV TS ne&Te profiles for TCV shot %d',shot);
-  if k_debug, disp(sprintf('%s - %s',s,data.last_action)); end
-   node_OK=1;
-   node_root      = sprintf('\\RESULTS::THOMSON.PROFILES.AUTO');
-   node_gen       = sprintf('%s:NE',node_root);
-   node_version   = sprintf('%s:VERSION_NUM',node_gen);
-   node_user      = sprintf('%s:USER_NAME',node_gen);
-   % Check version number
-   data_version   = tdi(node_version); data_version   = data_version.data;
-   data_user      = tdi(node_user);    data_user      = data_user.data;
-   if (isempty(data_version)),
-     data.msg=sprintf('%s ERROR - shot #%d node: %s is empty',s,shot,node_version); disp(data.msg);
-     data.OK=-141; return
-   end
-
-  % Read data
-  if (data_version==0),
-     data.msg=sprintf('%s WARNING - shot #%d tree: %s version is "0"',s,shot,node_gen); disp(data.msg);
-     data.msg=sprintf('%s WARNING - try to fill %s for shot #%d (anasrv)',s,node_gen,shot); disp(data.msg);
-  end
-  data_tdi=tdi(node_gen);
-  if (data_version==0),
-     data_version   = tdi(node_version); data_version   = data_version.data;
-     if (data_version==0),
-       data.msg=sprintf('%s ERROR - shot #%d node: %s not filled',s,shot,node_version); disp(data.msg);
-       data.OK=-142; return
-     end
-  end
-  if (isstr(data_tdi.data)),
-       data.msg=sprintf('%s ERROR - shot #%d node: %s not filled',s,shot,node_gen); disp(data.msg);
-       data.OK=-143; return
-  end 
-  tdis=sprintf('times(getnci("\\%s","TIME_INSERTED"))',node_gen);
-  node_time=mdsvalue(tdis);
-
-  d.node_root    = node_root;
-  d.node_gen     = node_gen;
-  d.data_version = data_version;
-  d.node_user    = data_user;
-  d.data_tdi     = data_tdi;
-  d.node_time    = node_time;
-  data.plasma.TS_ne=d;
-
-   node_gen       = sprintf('%s:TE',node_root);
-   node_version   = sprintf('%s:VERSION_NUM',node_gen);
-   node_user      = sprintf('%s:USER_NAME',node_gen);
-   % Check version number
-   data_version   = tdi(node_version); data_version   = data_version.data;
-   data_user      = tdi(node_user);    data_user      = data_user.data;
-   if (isempty(data_version)),
-     data.msg=sprintf('%s ERROR - shot #%d node: %s is empty',s,shot,node_version); disp(data.msg);
-     data.OK=-141; return
-   end
-
-  % Read data
-  if (data_version==0),
-     data.msg=sprintf('%s WARNING - shot #%d tree: %s version is "0"',s,shot,node_gen); disp(data.msg);
-     data.msg=sprintf('%s WARNING - try to fill %s for shot #%d (anasrv)',s,node_gen,shot); disp(data.msg);
-  end
-  data_tdi=tdi(node_gen);
-  if (data_version==0),
-     data_version   = tdi(node_version); data_version   = data_version.data;
-     if (data_version==0),
-       data.msg=sprintf('%s ERROR - shot #%d node: %s not filled',s,shot,node_version); disp(data.msg);
-       data.OK=-142; return
-     end
-  end
-  if (isstr(data_tdi.data)),
-       data.msg=sprintf('%s ERROR - shot #%d node: %s not filled',s,shot,node_gen); disp(data.msg);
-       data.OK=-143; return
-  end 
-  tdis=sprintf('times(getnci("\\%s","TIME_INSERTED"))',node_gen);
-  node_time=mdsvalue(tdis);
-
-  d.node_root    = node_root;
-  d.node_gen     = node_gen;
-  d.data_version = data_version;
-  d.node_user    = data_user;
-  d.data_tdi     = data_tdi;
-  d.node_time    = node_time;
-  data.plasma.TS_Te=d;
-  data.last_action=sprintf('Read TCV TS ne&Te profiles for TCV shot %d - DONE',shot);
-  if k_debug, disp(sprintf('%s - %s',s,data.last_action)); end
-  if k_plot&&(data.OK==1),
-      figure(1209); clf
-      subplot(2,1,1)
-      plot(data.plasma.TS_ne.data_tdi.dim{2},data.plasma.TS_ne.data_tdi.data)
-      grid on
-      xlabel('\rho_{\psi}'); ylabel('ne, m^{-3}');
-      title(sprintf('TS data for TCV shot:%d',data.shot));      
-      subplot(2,1,2)
-      plot(data.plasma.TS_Te.data_tdi.dim{2},data.plasma.TS_Te.data_tdi.data)
-      grid on
-      xlabel('\rho_{\psi}'); ylabel('Te, eV');
-  end
-
-case 'result',
-%% 9. Read CXRS Ti,Vi,nC,Zeff results
-  shot = mdsopen(shot); 
-  data.last_action=sprintf('Read CXRS results for TCV shot #%d - system No.%d',shot,sys);
-  if k_debug, disp(sprintf('%s - %s',s,data.last_action)); end
-  if ((shot>=20382)&(shot<36390)), CXRS_load_OLD_Results; return; end % Old version of data storage, CXRS not in DS (40 fibers) configuration
-
-  node           = sprintf('\\RESULTS::CXRS_%3.3d:VERSION',sys);
-  d=tdi(node);
-  data.calc.version=d.data;
-  if isempty(data.calc.version),
-       data.msg=sprintf('%s ERROR - shot #%d node: %s not filled',s,shot,node); disp(data.msg);
-       data.OK=-152; return
-  end
-  node           = sprintf('\\RESULTS::CXRS_%3.3d:CONFIDENCE',sys);
-  d=tdi(node);
-  data.calc.confidence=d.data;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d:COMMENT',sys);
-  d=tdi(node);
-  if isempty(d.data), d.data=' '; end
-  data.calc.comment=d.data;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.CX_LINE:NAME',sys);
-  d=tdi(node);
-  data.Info.CX_Line.Name=d.data; data.calc.cxrs_line_name = d.data;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.CX_LINE:WAVELENGTH',sys);
-  d=tdi(node);
-  data.Info.CX_Line.WaveLength=d.data; data.calc.cxrs_line = d.data;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.CX_LINE:MASS_NUMBER',sys);
-  d=tdi(node);
-  data.Info.CX_Line.Mass_Number=d.data; data.calc.atom_numb = d.data;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.CX_LINE:ION_CHARGE',sys);
-  d=tdi(node);
-  data.Info.CX_Line.Ion_Charge=d.data; data.calc.ion_charge = d.data;
-
-  % Read Ti
-  node           = sprintf('\\RESULTS::CXRS_%3.3d:TI:VERSION',sys);
-  d=tdi(node);
-  data.calc.Ti_version=d.data;
-  if mod(d.status,2),
-  % if ~isempty(data.calc.Ti_version)
-  % if 1
-    node           = sprintf('\\RESULTS::CXRS_%3.3d:TI:CONFIDENCE',sys);
-    d=tdi(node);
-    data.calc.Ti_confidence=d.data;
-    node           = sprintf('\\RESULTS::CXRS_%3.3d:TI:COMMENT',sys);
-    d=tdi(node);
-    if isempty(d.data), d.data=' '; end
-    data.calc.Ti_comment=d.data;
-    node           = sprintf('\\RESULTS::CXRS_%3.3d:TI',sys);  
-    d=tdi(node);  
-    data.calc.Ti=d.data;
-    data.calc.Ti_units = '[eV]';
-    data.calc.rho =d.dim{1};
-    if (length(d.dim)==1), 
-        nn=sprintf('\\RESULTS::CXRS_%3.3d:ANALYSIS.TIME',sys);dd=tdi(nn);
-        nn=sprintf('\\RESULTS::CXRS_%3.3d:ANALYSIS.TIME_INDEX:USE',sys);cc=tdi(nn);
-        d.dim{2}=dd.data(cc.data);
-    end
-    data.calc.time=d.dim{2};
-    data.calc.rho_type=d.dimunits{1};
-    if ~isempty(findstr(d.dimunits{1},'from DNB atten')), data.calc.rho_dnbi = data.calc.rho; end
-    %tdis=sprintf('times(getnci("\\%s","TIME_INSERTED"))',node); node_str_time = mdsvalue(tdis);
-    %tdis=sprintf('getnci("\\%s","OWNER")',node);                   node_owner    = mdsvalue(tdis);    node_owner=num2str(node_owner);
-    Info=AK_MDS_node_info(node,[],[]); node_owner=Info.node_owner; node_str_time=Info.node_time;
-    data.calc.Ti_node_time = node_str_time; data.calc.Ti_node_owner = node_owner;    
-    if k_debug, msg=sprintf('%35s: filled at %s by %s loaded',node,node_str_time,node_owner); disp(msg); end
-    node           = sprintf('\\RESULTS::CXRS_%3.3d:TI:ERR',sys);  
-    d=tdi(node);
-    data.calc.err_Ti=d.data;
-    if (length(d.dim)==1), 
-        nn=sprintf('\\RESULTS::CXRS_%3.3d:ANALYSIS.TIME',sys);dd=tdi(nn);
-        nn=sprintf('\\RESULTS::CXRS_%3.3d:ANALYSIS.TIME_INDEX:USE',sys);cc=tdi(nn);
-        d.dim{2}=dd.data(cc.data);
-    end    
-    if ~isempty(data.calc.Ti_version)
-      data.calc.rho_err =d.dim{1};
-      data.calc.dtime=mean(d.dim{2});
-    else
-      data.calc.rho_err =data.calc.rho/10.;
-      data.calc.dtime=min(diff(data.calc.time));
-    end
-    if ~isempty(findstr(d.dimunits{1},'from DNB atten')), data.calc.rho_dnbi_err = data.calc.rho_err; end    
-    if k_plot
-     figure(1211); clf
-     X_ALL=data.calc.rho; Y_ALL=data.calc.Ti; dX_ALL=data.calc.rho_err; dY_ALL=data.calc.err_Ti;
-     T_ALL=data.calc.time; dT_ALL=data.calc.dtime;
-     G=CXRS_plot_XYT(X_ALL,dX_ALL,Y_ALL,dY_ALL,T_ALL,dT_ALL);
-     if (data.system==1), vdir='toroidal'; elseif (data.system==2), vdir='poloidal'; else, vdir='??'; end
-     title(sprintf('CXRS #%d SYS:%3.3d (%s) ion temperature',data.shot,data.system,vdir));
-     ylabel(sprintf('T C, eV'));
-    end
-  end
-  % Read Vi
-  node           = sprintf('\\RESULTS::CXRS_%3.3d:VI:VERSION',sys);
-  d=tdi(node);
-  data.calc.vi_version=d.data;
-  if mod(d.status,2),
-  %if ~isempty(data.calc.vi_version)
-  %if 1
-    node           = sprintf('\\RESULTS::CXRS_%3.3d:VI:CONFIDENCE',sys);
-    d=tdi(node);
-    data.calc.vi_confidence=d.data;
-    node           = sprintf('\\RESULTS::CXRS_%3.3d:VI:COMMENT',sys);
-    d=tdi(node);
-    if isempty(d.data), d.data=' '; end
-    data.calc.vi_comment=d.data;
-    node           = sprintf('\\RESULTS::CXRS_%3.3d:VI',sys);  
-    d=tdi(node);
-    if (length(d.dim)==1)&(~isempty(d.data)), 
-        nn=sprintf('\\RESULTS::CXRS_%3.3d:ANALYSIS.TIME',sys);dd=tdi(nn);
-        nn=sprintf('\\RESULTS::CXRS_%3.3d:ANALYSIS.TIME_INDEX:USE',sys);cc=tdi(nn);
-        d.dim{2}=dd.data(cc.data);
-    end    
-    if isempty(d.data)
-       disp('!!!! Vi results are empty!!!!');
-    elseif (max(abs(data.calc.time-d.dim{2}))==0)
-      data.calc.vi=d.data;
-      data.calc.vi_units = '[km/s]';
-      %tdis=sprintf('times(getnci("\\%s","TIME_INSERTED"))',node); node_str_time = mdsvalue(tdis);
-      %tdis=sprintf('getnci("\\%s","OWNER")',node);                   node_owner    = mdsvalue(tdis);   node_owner=num2str(node_owner);
-      Info=AK_MDS_node_info(node,[],[]); node_owner=Info.node_owner; node_str_time=Info.node_time;
-      data.calc.vi_node_time = node_str_time; data.calc.vi_node_owner = node_owner;
-      if k_debug, msg=sprintf('%35s: filled at %s by %s loaded',node,node_str_time,node_owner); disp(msg); end
-      node           = sprintf('\\RESULTS::CXRS_%3.3d:VI:ERR',sys);  
-      d=tdi(node);
-      data.calc.err_vi=d.data;
-       if k_plot
-         figure(1212); clf
-         X_ALL=data.calc.rho; Y_ALL=data.calc.vi; dX_ALL=data.calc.rho_err; dY_ALL=data.calc.err_vi;
-         T_ALL=data.calc.time; dT_ALL=data.calc.dtime;
-         G=CXRS_plot_XYT(X_ALL,dX_ALL,Y_ALL,dY_ALL,T_ALL,dT_ALL);
-         if (data.system==1), vdir='toroidal'; elseif (data.system==2), vdir='poloidal'; else, vdir='??'; end
-         title(sprintf('CXRS #%d SYS:%3.3d (%s) velocity',data.shot,data.system,vdir));
-         ylabel(sprintf('V C, [km/s]'));
-       end
-    else
-       disp('!!!! Different time basis for Ti and Vi !!!!');
-    end
-  end
-  % Read Ni
-  node           = sprintf('\\RESULTS::CXRS_%3.3d:NI:VERSION',sys);
-  d=tdi(node);
-  data.calc.ni_version=d.data;
-  %if ~isempty(data.calc.ni_version)
-  if mod(d.status,2),
- %if 1
-    node           = sprintf('\\RESULTS::CXRS_%3.3d:NI:CONFIDENCE',sys);
-    d=tdi(node);
-    data.calc.ni_confidence=d.data;
-    node           = sprintf('\\RESULTS::CXRS_%3.3d:NI:COMMENT',sys);
-    d=tdi(node);
-    if isempty(d.data), d.data=' '; end
-    data.calc.ni_comment=d.data;
-    node           = sprintf('\\RESULTS::CXRS_%3.3d:NI',sys);  
-    d=tdi(node);
-    if (length(d.dim)==1)&(~isempty(d.data)), 
-        nn=sprintf('\\RESULTS::CXRS_%3.3d:ANALYSIS.TIME',sys);dd=tdi(nn);
-        nn=sprintf('\\RESULTS::CXRS_%3.3d:ANALYSIS.TIME_INDEX:USE',sys);cc=tdi(nn);
-        d.dim{2}=dd.data(cc.data);
-    end    
-    if isempty(d.data)
-       disp('!!!! Ni results are empty!!!!');
-    elseif (max(abs(data.calc.time-d.dim{2}))==0)
-      data.calc.ni=d.data;
-      data.calc.ni_units = '[m^-^3]';
-      %tdis=sprintf('times(getnci("\\%s","TIME_INSERTED"))',node); node_str_time = mdsvalue(tdis);
-      %tdis=sprintf('getnci("\\%s","OWNER")',node);                   node_owner    = mdsvalue(tdis);  node_owner=num2str(node_owner);
-      Info=AK_MDS_node_info(node,[],[]); node_owner=Info.node_owner; node_str_time=Info.node_time;
-      data.calc.ni_node_time = node_str_time; data.calc.ni_node_owner = node_owner;
-      if k_debug, msg=sprintf('%35s: filled at %s by %s loaded',node,node_str_time,node_owner); disp(msg); end
-      node           = sprintf('\\RESULTS::CXRS_%3.3d:NI:ERR',sys);  
-      d=tdi(node);
-      data.calc.err_ni=d.data;
-      if k_plot
-        figure(1213); clf; subplot(2,1,1);
-        X_ALL=data.calc.rho; Y_ALL=data.calc.ni; dX_ALL=data.calc.rho_err; dY_ALL=data.calc.err_ni;
-        T_ALL=data.calc.time; dT_ALL=data.calc.dtime;
-        G=CXRS_plot_XYT(X_ALL,dX_ALL,Y_ALL,dY_ALL,T_ALL,dT_ALL);
-        title(sprintf('CXRS #%d SYS:%3.3d carbon density',data.shot,data.system));
-        ylabel(sprintf('nC, [m^{-3}]'));
-      end
-    else
-       disp('!!!! Different time basis for Ti and Ni !!!!');
-    end
-  end
-  % Read Zeff
-  node           = sprintf('\\RESULTS::CXRS_%3.3d:ZEFF:VERSION',sys);
-  d=tdi(node);
-  data.calc.zeff_version=d.data;
-  if mod(d.status,2),
-  %if ~isempty(data.calc.zeff_version)
-    node           = sprintf('\\RESULTS::CXRS_%3.3d:ZEFF:CONFIDENCE',sys);
-    d=tdi(node);
-    data.calc.zeff_confidence=d.data;
-    node           = sprintf('\\RESULTS::CXRS_%3.3d:ZEFF:COMMENT',sys);
-    d=tdi(node);
-    if isempty(d.data), d.data=' '; end
-    data.calc.zeff_comment=d.data;
-    node           = sprintf('\\RESULTS::CXRS_%3.3d:ZEFF',sys);  
-    d=tdi(node);
-    if (length(d.dim)==1)&(~isempty(d.data)), 
-        nn=sprintf('\\RESULTS::CXRS_%3.3d:ANALYSIS.TIME',sys);dd=tdi(nn);
-        nn=sprintf('\\RESULTS::CXRS_%3.3d:ANALYSIS.TIME_INDEX:USE',sys);cc=tdi(nn);
-        d.dim{2}=dd.data(cc.data);
-    end    
-    if (max(abs(data.calc.time-d.dim{2}))==0)
-      data.calc.zeff=d.data;
-      data.calc.zeff_units = '';
-      %tdis=sprintf('times(getnci("\\%s","TIME_INSERTED"))',node); node_str_time = mdsvalue(tdis);
-      %tdis=sprintf('getnci("\\%s","OWNER")',node);                   node_owner    = mdsvalue(tdis);  node_owner=num2str(node_owner);
-      Info=AK_MDS_node_info(node,[],[]); node_owner=Info.node_owner; node_str_time=Info.node_time;
-      data.calc.zeff_node_time = node_str_time; data.calc.zeff_node_owner = node_owner;
-      if k_debug, msg=sprintf('%35s: filled at %s by %s loaded',node,node_str_time,node_owner); disp(msg); end
-      node           = sprintf('\\RESULTS::CXRS_%3.3d:ZEFF:ERR',sys);  
-      d=tdi(node);
-      data.calc.err_zeff=d.data;
-      if k_plot
-        figure(1213); subplot(2,1,2);
-        X_ALL=data.calc.rho; Y_ALL=data.calc.zeff; dX_ALL=data.calc.rho_err; dY_ALL=data.calc.err_zeff;
-        T_ALL=data.calc.time; dT_ALL=data.calc.dtime;
-        G=CXRS_plot_XYT(X_ALL,dX_ALL,Y_ALL,dY_ALL,T_ALL,dT_ALL);
-        title(sprintf('CXRS #%d SYS:%3.3d Zeff',data.shot,data.system));
-        ylabel(sprintf('Zeff'));
-      end
-    else
-       disp('!!!! Different time basis for Ti and Zeff !!!!');
-    end
-  end
-  
-  % Read angle gamma
-  node = sprintf('\\RESULTS::CXRS_%3.3d:PRO_ANG',sys);
-  d=tdi(node);
-  if mod(d.status,2)
-      data.calc.gamma = d.data;
-      data.calc.gamma_label = 'Angles between the toroidal direction and the viewline directions, range [0:pi), [rad]' ;
-  else
-      data.calc.gamma = [];
-  end
-  
-  % Read angle delta
-  node = sprintf('\\RESULTS::CXRS_%3.3d:DELTA_ANG',sys);
-  d=tdi(node);
-  if mod(d.status,2)
-      data.calc.delta = d.data;
-      data.calc.delta_label =[ d.help ' ' d.units] ;
-  else
-      data.calc.delta = [];
-  end
-  
- % Read Radiance
-  node = sprintf('\\RESULTS::CXRS_%3.3d:RADIANCE',sys);
-  d=tdi(node);
-  if mod(d.status,2)
-      data.calc.RAD = d.data;
-      data.calc.RAD_units = '[ph/s/sr/m^2]';
-      data.calc.RAD_label =[ d.help ' ' d.units] ;
-  else
-      data.calc.RAD = [];
-  end 
-  
-  % Read Radiance uncertainty
-  node = sprintf('\\RESULTS::CXRS_%3.3d:RADIANCE:ERR',sys);
-  d=tdi(node);
-  if mod(d.status,2)
-      data.calc.err_RAD = d.data;
-      %data.calc.RAD_label =[ d.help ' ' d.units] ;
-  else
-      data.calc.err_RAD = [];
-  end 
-  
-  % Read R
-  node = sprintf('\\RESULTS::CXRS_%3.3d:R',sys);
-  d=tdi(node);
-  if mod(d.status,2)
-      data.calc.R = d.data;
-  else
-      data.calc.R = [];
-  end
-  
-  % Read Z
-  node = sprintf('\\RESULTS::CXRS_%3.3d:Z',sys);
-  d=tdi(node);
-  if mod(d.status,2)
-      data.calc.Z = d.data;
-  else
-      data.calc.Z = [];
-  end
-  
-  % Read Residuals
-  node = sprintf('\\RESULTS::CXRS_%3.3d:RESIDUALS',sys);
-  d=tdi(node);
-  if mod(d.status,2)
-      data.calc.res_and_sat= d.data;
-      data.calc.res_and_sat_label =[ d.help ' ' d.units] ;
-  else
-      data.calc.res_and_sat = [];
-  end
-  
-  if isfield(data.calc,'Ti'),  
-      data.last_action=sprintf('Read CXRS results for TCV shot #%d - system No.%d - DONE',shot,sys);
-  else
-      data.last_action=sprintf('Read CXRS results for TCV shot #%d - system No.%d - ERROR',shot,sys);
-      data.OK=-9001;   
-  end
-  if k_debug, disp(sprintf('%s - %s',s,data.last_action)); end
-   
-case 'analysis',
-%% 10. Read CXRS analysis data
-  shot = mdsopen(shot); 
-  data.last_action=sprintf('Read CXRS analysis data for TCV shot #%d - system No.%d',shot,sys);
-  if k_debug, disp(sprintf('%s - %s',s,data.last_action)); end
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.ANALYSIS:COMMENT',sys);
-  d=tdi(node);
-  data.use.comment=d.data;
-  if isempty(data.use.comment),
-       data.msg=sprintf('%s ERROR - shot #%d node: %s not filled',s,shot,node); disp(data.msg);
-       data.OK=-162; return
-  end
-  if k_debug, disp(sprintf('      Analysis info: %s',data.use.comment)); end
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.ANALYSIS:PARAM',sys);
-  d=tdi(node);
-  V=String2Struct(d.data);
-  data.ACQ.DateTime = V.DateTime;
-  data.ACQ.Shot     = V.Shot;
-  data.ACQ.System   = V.System;
-  data.ACQ.dTime    = V.dTime;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.ANALYSIS:SOURCES',sys);
-  d=tdi(node);
-  V=String2Struct(d.data);  
-  %V.ACQ_From               = 'MDS, atlas';
-  data.load.ACQ.Param.DateTime       = V.ACQ_DateTime;
-  data.load.ACQ.Param.File           = V.ACQ_File;
-  data.load.ACQ.Param.NumberKinetics = V.ACQ_NumberKinetics;
-  data.load.ACQ.Param.Shot           = V.ACQ_Shot;
-  data.load.ACQ.Param.System         = V.ACQ_System;
-  data.calibr.Comment                = V.CAL_Comment;
-  data.calibr.Function               = V.CAL_Function;
-  data.calibr.DateTime               = V.CAL_DateTime;
-  data.calibr.Shot                   = V.CAL_Shot;
-  data.calibr.System                 = V.CAL_System;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.ANALYSIS:FIT',sys);
-  d=tdi(node);
-  V=String2Struct(d.data);  
-  data.fit.version  = V.version;
-  data.fit.fitfun   = V.fitfun;
-  data.fit.accept   = V.accept;
-  data.fit.max_its  = V.max_its;
-  data.fit.comment  = V.comment;
-  data.fit.pix_lim  = V.pix_lim;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.ANALYSIS:TIME',sys);
-  d=tdi(node);
-  data.use.time = d.data;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.ANALYSIS:TIME_INDEX:ACTIVE',sys);
-  d=tdi(node);
-  data.use.with_beam = d.data;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.ANALYSIS:TIME_INDEX:PASSIVE',sys);
-  d=tdi(node);
-  data.use.frames_OFF = d.data;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.ANALYSIS:TIME_INDEX:USE',sys);
-  d=tdi(node);
-  data.use.frames_ON = d.data;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.ANALYSIS:SPECTRA',sys);  
-  d=tdi(node);
-  data.use.spectra = d.data;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.ANALYSIS:SPECTRA:ERR',sys);  
-  d=tdi(node);
-  data.use.spectra_err = d.data;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.ANALYSIS:ACT_SPECTRA',sys);  
-  d=tdi(node);
-  data.use.spectra_active = d.data;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.ANALYSIS:ACT_SPECTRA:ERR',sys);  
-  d=tdi(node);
-  data.use.spectra_active_err = d.data;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.ANALYSIS:PASS_SPECTRA',sys);  
-  d=tdi(node);
-  data.use.spectra_passive = d.data;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.ANALYSIS:PASS_SPECTRA:ERR',sys);  
-  d=tdi(node);
-  data.use.spectra_passive_err = d.data;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.ANALYSIS:ACT_2_PASS',sys);
-  d=tdi(node);
-  data.use.act2pass = d.data;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.ANALYSIS:BAD_CHANNELS',sys);
-  d=tdi(node);
-  data.use.bad_channels = d.data;  
-  if k_plot
-        figure(1211); clf; subplot(3,1,1);
-        chan=1;
-        plot(squeeze(data.use.spectra_active(:,chan,:))); hold on
-        plot(squeeze(data.use.spectra_passive(:,chan,:)));
-        title(sprintf('CXRS ch.%2.2d active and passive spectra for #%d Sys.%2.2d',chan,data.shot,data.system));
-        ylabel(sprintf('photons'));
-        grid on
-        set(gca,'Xlim',[0 size(data.use.spectra_active,1)+1],'Ylim',[-0.02 1.05]*max(max(squeeze(data.use.spectra_passive(:,chan,:)))));
-        plot(data.fit.pix_lim,[0 0],'ok','LineWidth',2,'MarkerSize',10);
-        subplot(3,1,2);
-        chan=round(size(data.use.spectra_active,2)/2);
-        plot(squeeze(data.use.spectra_active(:,chan,:))); hold on
-        plot(squeeze(data.use.spectra_passive(:,chan,:)));
-        title(sprintf('CXRS ch.%2.2d active and passive spectra for #%d Sys.%2.2d',chan,data.shot,data.system));
-        ylabel(sprintf('photons'));
-        grid on
-        set(gca,'Xlim',[0 size(data.use.spectra_active,1)+1],'Ylim',[-0.02 1.05]*max(max(squeeze(data.use.spectra_passive(:,chan,:)))));
-        plot(data.fit.pix_lim,[0 0],'ok','LineWidth',2,'MarkerSize',10);
-        subplot(3,1,3);
-        chan=size(data.use.spectra_active,2);
-        plot(squeeze(data.use.spectra_active(:,chan,:))); hold on
-        plot(squeeze(data.use.spectra_passive(:,chan,:)));
-        title(sprintf('CXRS ch.%2.2d active and passive spectra for #%d Sys.%2.2d',chan,data.shot,data.system));
-        ylabel(sprintf('photons'));
-        grid on
-        set(gca,'Xlim',[0 size(data.use.spectra_active,1)+1],'Ylim',[-0.02 1.05]*max(max(squeeze(data.use.spectra_passive(:,chan,:)))));
-        plot(data.fit.pix_lim,[0 0],'ok','LineWidth',2,'MarkerSize',10);
-  end
-  data.last_action=sprintf('CXRS analysis data for TCV shot #%d - system No.%d - Loaded',shot,sys);
-  if k_debug, disp(sprintf('%s - %s',s,data.last_action)); end
-   
-case 'calibration',
-%% 11. Read CXRS calibration data
-  shot = mdsopen(shot); 
-  data.last_action=sprintf('Read CXRS calibration for TCV shot #%d - system No.%d',shot,sys);
-  if k_debug, disp(sprintf('%s - %s',s,data.last_action)); end
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.WL_CAL:COMMENT',sys);
-  d=tdi(node);
-  if strcmpi(d.data,'t');
-      c_comment = d.units;
-  else
-      c_comment = d.data;
-  end
-  data.calibr.Comment=c_comment;
-  data.calibr.lamcalib.comment = c_comment;
-  if isempty(data.calibr.Comment),
-       data.msg=sprintf('%s ERROR - shot #%d node: %s not filled',s,shot,node); disp(data.msg);
-       data.OK=-172; return
-  end
-  if k_debug, disp(sprintf('      Calibration info: %s',data.calibr.Comment)); end
-  %data.calibr.lamcalib.version,data.load.Info.Spectrometer.WaveLength
-  
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.WL_CAL:PIX0',sys);  
-  d=tdi(node);
-  data.calibr.lamcalib.pix_0 = d.data;
-  
-  n_slit = size(data.calibr.lamcalib.pix_0,2);
-  
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.WL_CAL:PARAM',sys);
-  d=tdi(node);
-  if strcmpi(d.data,'t');
-      c_str = d.units;
-  else
-      c_str = d.data;
-  end
-  V=String2Struct(c_str);  
-  data.calibr.Shot                         = V.Shot;
-  data.calibr.System                       = V.System;
-  data.calibr.Function                     = V.Function;
-  data.calibr.lamcalib.shot                = V.Shot;
-  data.calibr.lamcalib.system              = V.System;
-  data.calibr.lamcalib.version             = V.Version;
-  data.calibr.lamcalib.CX_Line_WaveLength  = V.CX_Line_WaveLength;
-  data.load.Info.Spectrometer.WaveLength   = V.Spectrometer_WaveLength;
-  data.calibr.lamcalib.LampWLs             = V.LampWLs;
-  for i_sl = 1:n_slit;
-      c_com = sprintf('data.calibr.lamcalib.LampWLs_use{%d}      = V.LampWLs_use%d;',i_sl,i_sl);
-      eval(c_com);
-  end
-  data.calibr.lamcalib.FitFun              = V.FitFun;
-  data.calibr.lamcalib.pix_bg0             = V.pix_bg0;
-  
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.WL_CAL:PIX0:ERR',sys);  
-  d=tdi(node);
-  data.calibr.lamcalib.dpix_0 = d.data;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.WL_CAL:WAVELENGTH',sys);  
-  d=tdi(node);
-  data.calibr.lamcalib.lambda_all = d.data;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.WL_CAL:WAVELENGTH:ERR',sys);  
-  d=tdi(node);
-  data.calibr.lamcalib.dlamdpix = d.data./data.calibr.lamcalib.dpix_0;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.WL_CAL:TRACKS',sys);
-  d=tdi(node);
-  if strcmpi(d.data,'f');
-      c_val = d.units;
-  else
-      c_val = d.data;
-  end
-  data.load.ACQ.Tracks = c_val;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.IF_CAL:COMMENT',sys);
-  d=tdi(node);
-  if strcmpi(d.data,'t');
-      c_str = d.units;
-  else
-      c_str = d.data;
-  end
-  data.calibr.instrfun.comment = c_str;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.IF_CAL:PARAM',sys);
-  d=tdi(node);
-  if strcmpi(d.data,'t');
-      c_str = d.units;
-  else
-      c_str = d.data;
-  end
-  V=String2Struct(c_str);
-  data.calibr.instrfun.shot           = V.Shot;
-  data.calibr.instrfun.system         = V.System;
-  data.calibr.instrfun.version        = V.Version;
-  data.calibr.Function                = V.Function;
-  data.load.Info.Spectrometer.WaveLength = V.Spectrometer_WaveLength;
-  data.calibr.instrfun.LampWL_use_A      = V.LampWLs';
-  data.calibr.instrfun.LampWL_use        = V.LampWLs_use;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.IF_CAL:SPECTRA',sys);  
-  d=tdi(node);
-  data.calibr.instrfun.shape = d.data;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.IF_CAL:X0',sys);  
-  d=tdi(node);
-  data.calibr.instrfun.x0 = d.data;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.IF_CAL:X0:ERR',sys);  
-  d=tdi(node);
-  data.calibr.instrfun.dx0 = d.data;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.IF_CAL:FWHM',sys);  
-  d=tdi(node);
-  data.calibr.instrfun.FWHM = d.data;
-  node           = sprintf('\\RESULTS::CXRS_%3.3d.IF_CAL:FWHM:ERR',sys);  
-  d=tdi(node);
-  data.calibr.instrfun.dFWHM = d.data;    
-  C=data.calibr;
-  symb = {'-vr' '-^b' '-*m' '-oc'};
-  if k_plot
-    figure(1903); clf
-    subplot(2,1,1);
-    for i_sl = 1: n_slit;
-        c_com = sprintf('plot(C.lamcalib.pix_0(:,%d)-mean(C.lamcalib.pix_0(:,%d)),''%s'',''LineWidth'',2);',i_sl,i_sl,symb{i_sl});
-        eval(c_com);
-        hold on
-    end
-    %plot(C.lamcalib.pix_0(:,1)-mean(C.lamcalib.pix_0(:,1)),'-vr','LineWidth',2); hold on
-    %plot(C.lamcalib.pix_0(:,2)-mean(C.lamcalib.pix_0(:,2)),'-^b','LineWidth',2); hold on
-    grid on;
-    title(sprintf('CXRS calibration shift of %3.3f (A) line',C.lamcalib.CX_Line_WaveLength));
-    xlabel('channel'); ylabel('shift, pix');
-    subplot(2,1,2);
-    for i_sl = 1: n_slit;
-        c_com = sprintf('plot(C.lamcalib.dpix_0(:,%d),''%s'',''LineWidth'',2);',i_sl,symb{i_sl});
-        eval(c_com);
-        hold on
-    end
-    %plot(C.lamcalib.dpix_0(:,1),'-vr','LineWidth',2); hold on
-    %plot(C.lamcalib.dpix_0(:,2),'-^b','LineWidth',2); hold on
-    grid on;
-    title(sprintf('Error in position of %3.3f (A) line',C.lamcalib.CX_Line_WaveLength));
-    xlabel('channel'); ylabel('shift, pix');
- 
-    figure(1904); clf
-    fwhm=squeeze(sum(C.instrfun.shape(:,:,:)))./squeeze(max(C.instrfun.shape(:,:,:)));
-    if size(fwhm,1)==1; fwhm = fwhm(:); end
-    for i_sl = 1: n_slit;
-        c_com = sprintf('plot(C.instrfun.FWHM(:,%d),''%s'',''LineWidth'',2);',i_sl,symb{i_sl});
-        eval(c_com);
-        hold on
-        c_com = sprintf('plot(fwhm(:,%d),''-%s'',''LineWidth'',2);',i_sl,symb{i_sl});
-        eval(c_com);
-        hold on
-    end
-    %plot(C.instrfun.FWHM(:,1),'-vr','LineWidth',2); hold on
-    %plot(C.instrfun.FWHM(:,2),'-^b','LineWidth',2); hold on
-    %plot(fwhm(:,1),'--<r','LineWidth',1); hold on
-    %plot(fwhm(:,2),'-->b','LineWidth',1); hold on
-    grid on;
-    title(sprintf('CXRS instrumental function FWHM for TCV shot:%d  system No.%2.2d',C.Shot,C.System));
-    xlabel('channel'); ylabel('FWHM, pix');  
-  end  
-  data.last_action=sprintf('CXRS calibration for TCV shot #%d - system No.%d - Loaded',shot,sys);
-  if k_debug, 
-      disp(sprintf('      Unsifted positions for 2 stits: %2.2f/%2.2f pix',mean(C.lamcalib.pix_0(:,:))));
-      disp(sprintf('%s - %s',s,data.last_action)); 
-  end
-
-case 'profiles',
-%% 12. Read CXRS profiles
-  shot = mdsopen(shot); 
-  data.last_action=sprintf('Read CXRS profiles for TCV shot #%d',shot);
-  if k_debug, disp(sprintf('%s - %s',s,data.last_action)); end
-  
-  data.proffit.shot        =shot;
-  node           = sprintf('\\RESULTS::CXRS.PROFFIT:TI:COMMENT');
-  d=tdi(node);
-  data.proffit.comment = d.data;
-  if isempty(d.data),
-       data.msg=sprintf('%s ERROR - shot #%d node: %s not filled',s,shot,node); disp(data.msg);
-       data.OK=-192; return
-  end
-  data.proffit.comment = d.data(6:end);
-  node           = sprintf('\\RESULTS::CXRS.PROFFIT:TIME');
-  d=tdi(node); data.proffit.time = d.data;
-  if length(d.data)>1, data.proffit.dtime=min(diff(data.proffit.time))/6; else, data.proffit.dtime=NaN; end
-  node           = sprintf('\\RESULTS::CXRS.PROFFIT:RHO');
-  d=tdi(node); data.proffit.rho = d.data;
-
-  node           = sprintf('\\RESULTS::CXRS.PROFFIT:TI');  
-  d=tdi(node); data.proffit.Ti = d.data;
-  p.title  =d.help; p.xlabel =d.dimunits{1}; p.ylabel =d.units;
-  forplot.Ti=p;
-  node           = sprintf('\\RESULTS::CXRS.PROFFIT:TI:ERR');  
-  d=tdi(node); data.proffit.dTi = d.data;
-  data.proffit.Ti_rho = d.dim{1};
-
-  node           = sprintf('\\RESULTS::CXRS.PROFFIT:VI_TOR');  
-  d=tdi(node); data.proffit.vTor = d.data;
-  p.title  =d.help; p.xlabel =d.dimunits{1}; p.ylabel =d.units;
-  forplot.vTor=p;
-  node           = sprintf('\\RESULTS::CXRS.PROFFIT:VI_TOR:ERR');  
-  d=tdi(node); data.proffit.dvTor = d.data;
-  data.proffit.vTor_rho = d.dim{1};
-
-  node           = sprintf('\\RESULTS::CXRS.PROFFIT:VI_POL');  
-  d=tdi(node); data.proffit.vPol = d.data;
-  p.title  =d.help; p.xlabel =d.dimunits{1}; p.ylabel =d.units;
-  forplot.vPol=p;
-  node           = sprintf('\\RESULTS::CXRS.PROFFIT:VI_POL:ERR');  
-  d=tdi(node); data.proffit.dvPol = d.data;
-  data.proffit.vPol_rho = d.dim{1};
-
-  node           = sprintf('\\RESULTS::CXRS.PROFFIT:NI');  
-  d=tdi(node); data.proffit.nC = d.data;
-  p.title  =d.help; p.xlabel =d.dimunits{1}; p.ylabel =d.units;
-  forplot.nC=p;
-  node           = sprintf('\\RESULTS::CXRS.PROFFIT:NI:ERR');  
-  d=tdi(node); data.proffit.dnC = d.data;
-  data.proffit.nC_rho = d.dim{1};
-
-  node           = sprintf('\\RESULTS::CXRS.PROFFIT:TI:PARAM');
-  d=tdi(node); 
-  if ~isempty(d.data)
-      if strcmpi(d.data,'t')
-          pp=String2Struct(d.units);
-      else
-          pp=String2Struct(d.data);
-      end
-  else
-      pp=[];
-  end
-  data.proffit.param.Ti=pp;
-
-  node           = sprintf('\\RESULTS::CXRS.PROFFIT:VI_TOR:PARAM');
-  d=tdi(node); 
-  if ~isempty(d.data)
-      if strcmpi(d.data,'t')
-          pp=String2Struct(d.units);
-      else
-          pp=String2Struct(d.data);
-      end
-  else
-      pp=[];
-  end
-  data.proffit.param.vi=pp;
- 
-  node           = sprintf('\\RESULTS::CXRS.PROFFIT:NI:PARAM');
-  d=tdi(node); 
-  if ~isempty(d.data)
-      if strcmpi(d.data,'t')
-          pp=String2Struct(d.units);
-      else
-          pp=String2Struct(d.data);
-      end
-  else
-      pp=[];
-  end
-  data.proffit.param.nc=pp;
-    
-  data.OK=1;
-
-  if k_plot
-      ifig=9900;
-      what2plot={'Ti' 'vTor' 'vPol' 'nC'};
-      for ii=1:length(what2plot),
-          ifig=ifig+1; figure(ifig); clf
-          eval(sprintf('X=data.proffit.%s_rho; Y=data.proffit.%s; dY=data.proffit.d%s; p=forplot.%s;',what2plot{ii},what2plot{ii},what2plot{ii},what2plot{ii}));
-          if length(Y)>0
-              dX=ones(size(X))*min(min(diff(X)))/2.;             
-              G=CXRS_plot_XYT(X,dX,Y,dY,data.proffit.time,min(diff(data.proffit.time))/6.);
-              title(p.title); xlabel(p.xlabel); ylabel(p.ylabel);
-              set(gca,'Xlim',[min(min(X)) max(max(X))],'Ylim',[min(min(Y-dY)) max(max(Y+dY))]);
-          end  
-      end
-
-  end
-  
-otherwise,
-  data.last_action=sprintf('Read CXRS unknown (%s) action: USE cxrsdsi,atlas, time, result, etc.',what2read); 
-  if k_debug, disp(sprintf('%s - %s',s,data.last_action)); end
-  data.OK=0;
-end 
-
-return
-- 
GitLab