From 55cebc7e3bc5017f61263539cd9ca140b3d6c3dd Mon Sep 17 00:00:00 2001
From: Olivier Sauter <olivier.sauter@epfl.ch>
Date: Wed, 1 Dec 2010 11:01:36 +0000
Subject: [PATCH] .mat files from scp from hal

git-svn-id: https://spcsvn.epfl.ch/repos/TCV/gdat/trunk@2425 d63d8f72-b253-0410-a779-e742ad2e26cf
---
 crpptbx/TCV/loadTCVdata.m              |  93 ++++++++++++++++++++++---
 crpptbx/TCV/private/angular_fact_1.mat | Bin 3502 -> 3664 bytes
 crpptbx/TCV/private/bad_channels.mat   | Bin 28504 -> 28504 bytes
 crpptbx/TCV/private/tcv_vesc1.mat      | Bin 3285 -> 3488 bytes
 crpptbx/gdat.m                         |  12 +++-
 5 files changed, 94 insertions(+), 11 deletions(-)

diff --git a/crpptbx/TCV/loadTCVdata.m b/crpptbx/TCV/loadTCVdata.m
index 915106a8..6c0a2f7f 100644
--- a/crpptbx/TCV/loadTCVdata.m
+++ b/crpptbx/TCV/loadTCVdata.m
@@ -18,6 +18,7 @@
 % 'delta', 'triang'[_2,_3] =  edge averaged triangularity vs time
 % 'deltatop', 'triangtop'[_2,_3] =  edge upper (top) triangularity vs time
 % 'deltabot', 'triangbot'[_2,_3] =  edge lower (bottom) triangularity vs time
+% 'j_tor'[_2,_3] =  J_TOR vs (R,Z,time)
 % 'neint' =  line-integrated electron density [m/m^3]
 % 'ne'= ne raw profile on (z,t). ADD error bars in .std
 % 'te'= Te raw profile on (z,t). ADD error bars in .std
@@ -28,6 +29,7 @@
 % 'profnerho' =  ne smoothed or fitted , vs (rho,t) (from Thomson auto fit)
 % 'profterho' =  te smoothed or fitted , vs (rho,t) (from Thomson auto fit)
 % 'neft' =  ne fitted from data on rho mesh (from proffit.local_time:neft_abs)
+% 'neft:4' =  ne fitted from data on rho mesh (from proffit.local_time:neft_abs from trial:trial_indx=4)
 % 'teft' =  te fitted from data on rho mesh (from proffit.local_time:teft)
 % 'neftav' =  ne fitted from averaged over time data on rho mesh (from proffit.avg_time:neft_abs)
 % 'teftav' =  te fitted from averaged over time data on rho mesh (from proffit.avg_time:teft)
@@ -113,7 +115,20 @@ if shot==-1 || shot>=100000
 end
 
 % use keyword without eventual _2 or _3 extension to check for multiple possibilities
-data_type_eff_noext=data_type_eff(1:end-i_23);
+% Also remove ":4" for trial_indx specification
+jj=strfind(data_type_eff,':');
+trialindx=[];
+if ~isempty(jj)
+  ii=strmatch(data_type_eff(1:jj-1),[{'teft'},{'neft'},{'teftav'},{'neftav'}])
+  if ~isempty(ii)
+    trialindx=str2num(data_type_eff(jj+1:end));
+    data_type_eff_noext=[data_type_eff(1:jj-1) ':trial'];
+  else
+    data_type_eff_noext=data_type_eff(1:end-i_23);
+  end
+else
+  data_type_eff_noext=data_type_eff(1:end-i_23);
+end
 if ~isempty(strmatch(data_type_eff_noext,[{'ip'} {'i_p'} {'xip'}],'exact'))
   data_type_eff_noext='Ip';
 end
@@ -153,6 +168,10 @@ end
 if ~isempty(strmatch(data_type_eff_noext,[{'elongation'} {'elon'}],'exact'))
   data_type_eff_noext='kappa';
 end
+if ~isempty(strmatch(lower(data_type_eff_noext),[{'j_tor'} {'jtor'} {'\results::j_tor'}],'exact'))
+  data_type_eff_noext='jtor';
+  data_type_eff = ['jtor' endstr];
+end
 if ~isempty(strmatch(data_type_eff_noext,[{'triangularity'} {'triang'}],'exact'))
   data_type_eff_noext='delta';
 end
@@ -182,9 +201,10 @@ end
 
 % nodes which have _2 and _3 equivalence, related to simpletdi case
 liuqe23=[{'\results::i_p'} {'\results::z_axis'} {'\results::r_axis'} {'\results::q_psi'} ...
-      {'\results::beta_tor'} {'\results::beta_pol'} {'\results::q_95'} {'\results::l_i'}  {'\results::delta_95'} ...
-      {'\results::kappa_95'} {'\results::r_contour'} {'\results::z_contour'} {'\results::psi_axis'} ...
-      {'\results::thomson:psiscatvol'} {'\results::thomson:psi_max'} {'\results::rms_error'} {'\results::total_energy'}];
+         {'\results::beta_tor'} {'\results::beta_pol'} {'\results::q_95'} {'\results::l_i'}  {'\results::delta_95'} ...
+         {'\results::kappa_95'} {'\results::r_contour'} {'\results::z_contour'} {'\results::psi_axis'} ...
+         {'\results::thomson:psiscatvol'} {'\results::thomson:psi_max'} {'\results::rms_error'} {'\results::total_energy'} ...
+         {'\results::j_tor'} ];
 
 % nodes which have FBTE equivalence, related to simpletdi case
 liuqeFBTE=[{'\results::i_p'} {'\results::z_axis'} {'\results::r_axis'} {'\results::q_psi'} ...
@@ -193,14 +213,14 @@ liuqeFBTE=[{'\results::i_p'} {'\results::z_axis'} {'\results::r_axis'} {'\result
 
 % keywords which do not have FBTE equivalence and are returned empty
 noFBTE=[{'ne'} {'te'} {'nerho'} {'terho'} {'nerhozshift'} {'terhozshift'} {'profnerho'} {'profterho'} ...
-	{'neft'} {'teft'} {'neftav'} {'teftav'} {'sxr'} {'sxR'} {'ece'} {'MPX'} {'IOH'} {'vloop'} {'neint'}];
+	{'neft'} {'neft:trial'} {'teft:trial'} {'neftav:trial'} {'teftav:trial'} {'sxr'} {'sxR'} {'ece'} {'MPX'} {'IOH'} {'vloop'} {'neint'}];
 
 % all keywords and corresponding case to run below
 TCVkeywrdall=[{'Ip'} {'zmag'} {'rmag'} {'rcont'} {'zcont'} {'vol'} {'rhovol'} {'qrho'} {'q95'} {'kappa'} ...
       {'delta'} {'deltatop'} {'deltabot'} {'neint'} ...
       {'ne'} {'te'} {'nerho'} {'terho'} {'nerhozshift'} {'terhozshift'} {'profnerho'} {'profterho'} ...
-      {'neft'} {'teft'} {'neftav'} {'teftav'}  ...
-      {'sxr'} {'sxR'} {'ece'} {'MPX'} {'IOH'} {'vloop'} {'pgyro'}];
+      {'neft'} {'teft'} {'neftav'} {'teftav'} {'neft:trial'} {'teft:trial'} {'neftav:trial'} {'teftav:trial'}  ...
+      {'sxr'} {'sxR'} {'ece'} {'MPX'} {'IOH'} {'vloop'} {'pgyro'} {'jtor'}];
 TCVsig.iip=strmatch('Ip',TCVkeywrdall,'exact');
 TCVsig.izmag=strmatch('zmag',TCVkeywrdall,'exact');
 TCVsig.irmag=strmatch('rmag',TCVkeywrdall,'exact');
@@ -224,9 +244,13 @@ TCVsig.iterhozshift=strmatch('terhozshift',TCVkeywrdall,'exact');
 TCVsig.iprofnerho=strmatch('profnerho',TCVkeywrdall,'exact');
 TCVsig.iprofterho=strmatch('profterho',TCVkeywrdall,'exact');
 TCVsig.ineft=strmatch('neft',TCVkeywrdall,'exact');
+TCVsig.ineft_trial=strmatch('neft:trial',TCVkeywrdall);
 TCVsig.iteft=strmatch('teft',TCVkeywrdall,'exact');
+TCVsig.iteft_trial=strmatch('teft:trial',TCVkeywrdall);
 TCVsig.ineftav=strmatch('neftav',TCVkeywrdall,'exact');
+TCVsig.ineftav_trial=strmatch('neftav:trial',TCVkeywrdall);
 TCVsig.iteftav=strmatch('teftav',TCVkeywrdall,'exact');
+TCVsig.iteftav_trial=strmatch('teftav:trial',TCVkeywrdall);
 TCVsig.isxr=strmatch('sxr',TCVkeywrdall,'exact');
 TCVsig.isxR=strmatch('sxR',TCVkeywrdall,'exact');
 TCVsig.iece=strmatch('ece',TCVkeywrdall,'exact');
@@ -234,6 +258,7 @@ TCVsig.iMPX=strmatch('MPX',TCVkeywrdall,'exact');
 TCVsig.iIOH=strmatch('IOH',TCVkeywrdall,'exact');
 TCVsig.ivloop=strmatch('vloop',TCVkeywrdall,'exact');
 TCVsig.ipgyro=strmatch('pgyro',TCVkeywrdall,'exact');
+TCVsig.ijtor=strmatch('jtor',TCVkeywrdall,'exact');
 
 % For each keyword, specify which case to use. As most common is 'simpletdi', fill in with this and change
 % only indices needed. Usually use name of case same as keyword name
@@ -245,6 +270,10 @@ TCVkeywrdcase(TCVsig.irhovol)=TCVkeywrdall(TCVsig.irhovol); % idem vol
 TCVkeywrdcase(TCVsig.ine)=TCVkeywrdall(TCVsig.ine); % special as dimensions from other nodes
 TCVkeywrdcase(TCVsig.ite)=TCVkeywrdall(TCVsig.ite); % idem
 TCVkeywrdcase(TCVsig.inerho)=TCVkeywrdall(TCVsig.inerho); % idem
+TCVkeywrdcase(TCVsig.iteft_trial)=TCVkeywrdall(TCVsig.iteft_trial); % special to extract trial_indx if needed
+TCVkeywrdcase(TCVsig.ineft_trial)=TCVkeywrdall(TCVsig.ineft_trial); % special to extract trial_indx if needed
+TCVkeywrdcase(TCVsig.iteftav_trial)=TCVkeywrdall(TCVsig.iteftav_trial); % special to extract trial_indx if needed
+TCVkeywrdcase(TCVsig.ineftav_trial)=TCVkeywrdall(TCVsig.ineftav_trial); % special to extract trial_indx if needed
 TCVkeywrdcase(TCVsig.iterho)=TCVkeywrdall(TCVsig.iterho); % idem
 TCVkeywrdcase(TCVsig.inerhozshift)=TCVkeywrdall(TCVsig.inerhozshift); % idem
 TCVkeywrdcase(TCVsig.iterhozshift)=TCVkeywrdall(TCVsig.iterhozshift); % idem
@@ -257,6 +286,7 @@ TCVkeywrdcase(TCVsig.iMPX)=TCVkeywrdall(TCVsig.iMPX);
 TCVkeywrdcase(TCVsig.iIOH)=TCVkeywrdall(TCVsig.iIOH);
 TCVkeywrdcase(TCVsig.ivloop)=TCVkeywrdall(TCVsig.ivloop);
 TCVkeywrdcase(TCVsig.ipgyro)=TCVkeywrdall(TCVsig.ipgyro);
+TCVkeywrdcase(TCVsig.ijtor)=TCVkeywrdall(TCVsig.ijtor);
 
 % Information about which dimension has time, always return 2D data as (x,t) array
 % as most are 1D arrays with time as first index, fill in with ones and change only those needed
@@ -283,6 +313,11 @@ TCVsiglocation(TCVsig.ineft)={'\results::proffit.local_time:neft_abs'}; TCVsigti
 TCVsiglocation(TCVsig.iteft)={'\results::proffit.local_time:teft'}; TCVsigtimeindx(TCVsig.iteft)=2;
 TCVsiglocation(TCVsig.ineftav)={'\results::proffit.avg_time:neft_abs'}; TCVsigtimeindx(TCVsig.ineftav)=2;
 TCVsiglocation(TCVsig.iteftav)={'\results::proffit.avg_time:teft'}; TCVsigtimeindx(TCVsig.iteftav)=2;
+TCVsiglocation(TCVsig.ineft_trial)=TCVsiglocation(TCVsig.ineft); TCVsigtimeindx(TCVsig.ineft_trial)=2;
+TCVsiglocation(TCVsig.iteft_trial)=TCVsiglocation(TCVsig.iteft); TCVsigtimeindx(TCVsig.iteft_trial)=2;
+TCVsiglocation(TCVsig.ineftav_trial)=TCVsiglocation(TCVsig.ineftav); TCVsigtimeindx(TCVsig.ineftav_trial)=2;
+TCVsiglocation(TCVsig.iteftav_trial)=TCVsiglocation(TCVsig.iteftav); TCVsigtimeindx(TCVsig.iteftav_trial)=2;
+
 
 % initialize order of substructures and allows just a "return" if data empty
 trace.data=[];
@@ -291,7 +326,6 @@ trace.t=[];
 trace.dim=[];
 trace.dimunits=[];
 trace.units=[];
-
 irpintwarn=0;
 % find index of signal called upon
 if strcmp(data_type_eff(1:1),'\')
@@ -316,7 +350,7 @@ if strcmp(data_type_eff(1:1),'\')
     error('in loadTCVdata')
   end
 else
-  index=strmatch(data_type_eff_noext,TCVkeywrdall,'exact');
+  index=strmatch(data_type_eff_noext,TCVkeywrdall,'exact')
   if isempty(index)
     disp(' ')
     disp('********************')
@@ -938,6 +972,47 @@ switch TCVkeywrdcase{index}
     mdsclose;
     error=0;
     
+  %&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
+  case 'jtor'
+    %  \results::j_tor , 3-D so need to specify time dim index
+    mdsopen(shot);
+    nodenameeff=[{'\results::j_tor'} endstr];
+    tracetdi=tdi(nodenameeff{:});
+    trace.data=tracetdi.data;
+    trace.x=tracetdi.dim{1};
+    trace.t=tracetdi.dim{3};
+    trace.dim=tracetdi.dim;
+    trace.dimunits=tracetdi.dimunits;
+    % isfield does not work since tracetdi is not a 'struct' but a tdi object, thus isfield using isa does not work
+    if any(strcmp(fieldnames(tracetdi),'units'))
+      trace.units=tracetdi.units;
+    end
+    trace.name=[num2str(shot) ';' nodenameeff];
+    mdsclose;
+    error=0;
+    
+  %&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
+  case {'neft:trial','teft:trial','neftav:trial','teftav:trial'}
+    %  trial indx
+    mdsopen(shot);
+    eval(['nodenameeff={''' TCVsiglocation{index} ':trial''};']);
+    tracetdi=tdi(nodenameeff{:});
+    if isempty(trialindx)
+      error('trialindx should not be empty, check call or ask O. Sauter');
+    end
+    trace.data=tracetdi.data(:,:,trialindx+1);
+    trace.x=tracetdi.dim{1};
+    trace.t=tracetdi.dim{2};
+    trace.dim=tracetdi.dim(1:2);
+    trace.dimunits=tracetdi.dimunits(1:2);
+    % isfield does not work since tracetdi is not a 'struct' but a tdi object, thus isfield using isa does not work
+    if any(strcmp(fieldnames(tracetdi),'units'))
+      trace.units=tracetdi.units;
+    end
+    trace.name=[num2str(shot) ' ; ' nodenameeff{:} ' ; trialindx=' num2str(trialindx) ];
+    mdsclose;
+    error=0;
+    
   otherwise
     % eval(['!mailto_Andrea ''from loadTCVdata, data_type_eff= ' data_type_eff ''''])
     disp(['this data_type_eff' ' ' data_type_eff ' ' 'not yet programmed in loadTCVdata, ask Andrea.Scarabosio@epfl.ch']);
diff --git a/crpptbx/TCV/private/angular_fact_1.mat b/crpptbx/TCV/private/angular_fact_1.mat
index 85fd9a52692c72745b87ad324e2601e6d90fa66d..9643be7b4b3edd0f3734bc7b666c5eaa6373c0b2 100755
GIT binary patch
literal 3664
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
W&GavTnoW<a=oZc2y@IF^iux}K<?Ofs

literal 3502
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

diff --git a/crpptbx/TCV/private/bad_channels.mat b/crpptbx/TCV/private/bad_channels.mat
index e950698cfd82fae24b1fcd0aeaf8eea96ef638b1..9933a3a72f2d4265b5e3a3fcb23ed94bc7a3b57a 100755
GIT binary patch
delta 39
vcmca{kMYJm#tG&ke)(kz#s&(8rdB3~R)!`DMh1ok69cs;Ca`U+xswL~55Wy0

delta 39
vcmca{kMYJm#tG&kUZpt-h6W0TW>%)gR>l?zMg|6k69cs;Ca`U+xswL~4_pl*

diff --git a/crpptbx/TCV/private/tcv_vesc1.mat b/crpptbx/TCV/private/tcv_vesc1.mat
index becc16ea4e9dc15a3afedbacd112ef4f681b7bcb..85f9d33a1e61bdb183f766825358e927713cb698 100644
GIT binary patch
literal 3488
zcmeH|Yfw~m7{(VyNE@PQOfF8v4yl!_$|98PczJ<RR(4@8z;fA@MOkKOgdMIz1CHsW
zjErE27xV*Vh{1wjQi99nWe^Zb3y1m;BU*e&1f&g%3Zzc#`|_ct4-PZ>#WQo}-E(Ho
z`9II^dCvTmL6M4}U~#}&U$HVMa!qo|Zj(f;+MSq{Y|coPiRHn{1dUcA4#_YjW|@-2
z<}{f&GTS5$H|L1g`--IjGJijrbiLTmSL!Q%)Wbofl#4_nSCPoMP?*lbxtOLfL{4;V
z5~ibYI{b4l<Gq}eG~tJEED;`2fx&+9#HPOXnoFjo7ve{90)7fU4e=}g44KuJLfp>1
znq@hMA-2NNC^@<xVm|-ll_c{r(0x&x?(*3Qh`yZA+4!3qL^UmSGX$Q5$foWTrveYq
zHs@LE@DymStZ|KA<O%94cZ{>!%0Xp4cB!gpIYjI;#IG2+3gPm4R220=IQf4%=Ro|I
z2XSI<%#pb=XXeg1a4wt^=f*j5uADRH&OP8>Jn4SY`dj`QIbJhWG6C)rz7S}cgja13
zivybE;4`+%IpKIINGFpv6u0z1z|SYf$1ik2;CSyRijO*B)4iD(ODO_8a6jY}oB+YU
zH2lzL-2rdgwr@=GH^A13;gd`2^bmSK-`2S*9=4CWDKaYJKrvc>-rFM<!tco)`ag^T
zmHzh4U9O#=b_lV;rEpN6%RO7|G5{KR-QgFK<3Kb1V``|w6llSo<ASG;q^)xF7HHB^
z501HyfjYBw@KlfmR9We3;RBy}U96LJvk&&gKG`>OU@pvwxiLrP%AAQi=g>}hAl*m$
zAJTJ3??HMm(mF`%BI!WVg`^WnH<Aw|Ur0WY@<8H%#07~HYVF*R_%C=;u1Gl}<&M+?
zq+ZPHVx6p;eXuX~$-bEbb74-*jX5$`=1kl<2hK$(-=pkD&cc3V&d!>vEbT`|dw&g&
zd+urPj&!*OdRu4FB8w69uX}IyNI3xUJNEU+TFM}<?6%7Ad=<og=~7s^_Zx`$wqo62
z$q?vngq3L*w?K6F)XdD5_aUmiGBL9$LD-K}U8B;Cplx`#dS{I%XsWA=zxSR3_1UON
z^_c-sopIFlzIYKLq{&d#ya|-GzRUAw`#=eH|4--ta3D_1jX5$`=FHqV2hN3a;@mh#
z&XsfK+_?wb3j_7!vG?;|--9SS(DG95E%2!S?vU}K4OWyEuBs_+1j+T4j`w?d!SBGG
zp__#_;LVTMDIT1Q1zB5x)vaR~HV=OF#)hFZ2+BVaR#%V@Aw~ZC+lo5io$|rvuTMV%
z+dkcYw?L8)^2@8eie()T*3}<fA$JDlK<<$ST^K|R?(s0GkAbT1-PYmhR$*W0)m`6e
z2F=T_{dzZI323?xmh_ifL2Evr=$NMiE!uNj@T@d?O@}@Un(2zMa@z&ah~Dx{?|2SW
zzYiCT1dc+)u-DZN)6sdItebtXFZRj4nFDiSPRxxtGFRrz+$jg-N%xWdhx8oMdyw9X
zv<}j`NIH;oA?ZZYjpPH#7g8QbzL7W}aY5pQT01u+{tKV>T#<4{%3at8=X!wD3#6XR
f>tx;RgMG12_RSoa3v*&_%#pb=XXeh|1<k(!wK-6w

literal 3285
zcmeH|e@v8h9LEo)SdDDW<cF)+NUelYnv}=<@exWnLAW2n@#9WT1vlD+A&Stz87^fq
z!4Q9-e_R=2a3GkJ;PK<bPCzUz9Q8*`wD=<tPP(wDK<a?cn>Aa1vC%)?_Uv=dbI<d9
z-|yG^z56N@3PqChaCIKzA2;W*^SzAZl!-Hi!bp=}W`1^9(%r9C8t7E;Pk|YI@l<3O
z3;A<VJRQoIuid*fj&hIqn_SJYG(R=*#Xmleq2r&qr&WHTCy(E1Z3&m6>4ehgF|RI)
zymDqIx7BT;lU!xZs@IYCtmwI~UDi^``Z3d;%NkmcUv}}RRZUm=7RDR*MbfqWaIRKG
zi0{X9GXH;b04Hz*M{osaa7PZv1vw!%<cM66Gjc}{(2M`8myfPHSU6m9tnaTiLlz}1
z8}uYqU0}gO$4gXnEWvHtfFHFt6s$-b3ZT~WcKh+41IhML_$M89C2^4@X7t`FN(i2P
z(DMP&W^3&aHNOOtae3m(4UV_TP&MyF@8CL$Uu<(^-w&lY^UiP&`v!{j@;z7GA5JkJ
zcDktUMUZXowwt#NYKpi>)({sBb-9<H$vmr}xb4p#s#0lb*d=twk9O^3pGi0Ed8@y)
z$=^>$1D*p1cBE*@vi4+mW4ea?KA_jrcB!XyK__&>2YkUNe1ikHfD^cZBe;SyxFZLd
z&2pXPK9=WL-ox@<mUURxWzoT+i$y1kZWbRbzF2&+<iWy$g$oNO7H&MzAJR>GO0Fz9
zv*gaw1D0M)>4Hw^h7b6HPxuB0Z~-T914nQLXK+Uj$YtF3KX;lr&U5EZle&A?_%8~D
zNw%07oLAj9wKeZClF2eF-{vsT{$#J!zONXlxFM*0-{yEKd&a1~T^vW>>@Cf6|1y?(
z3cHt@zm1`WCv?SOH}v%Wn$gkWwrEPIOW#u397QVw`dih`t;V}z>yn2xIvV!<zM#BZ
zOI@cmLs4fmbm6%Uz3XW;t*S4h?E%iMW-M#LvdWD#;h!GQ|Kb2n;0BK13eMn;9FPlg
zLT<<rxguxejvk;F=*fh>8SLky>)pzH-lE*CAjbvM!SAZQsJ5VDabD3v>S(|3y6Cz;
z-N?Jyb7%h>6npkT_|lKxq}~<}Yfe)TrSz<L^{ejHl$}!*b~t-2wd6PDF3%64Ij6p^
z?=E?Vvi)=J=6<@KT7n9EmRwSio5~#B*&0S+`kKR;T^s4BCdq40cO*5A^ftbGO--rm
zuIoFTfB8>F-u?CE7qnz8=`1|ZrX_ur>y~q=vc>T9=To60KBiI~op+QBm`AkqbW57|
zTM8}pEBkVKe^=9yq?Ri_y^&Kop&LHn3qIi+9KZ#fzzrP16`a8xIml$W&T=2ib1d&+
zc`wU4EbFr9V9~{*lSMa+4;Ei6d9e6q;lRR$g%b-mp6CzDRx^z$xw7QUk~>QeSbD+I
elPR6h4Il6YpYRP1-~vwI29Dqg&ftz5kjvj<o-(!o

diff --git a/crpptbx/gdat.m b/crpptbx/gdat.m
index 8358d100..242b82ea 100644
--- a/crpptbx/gdat.m
+++ b/crpptbx/gdat.m
@@ -141,8 +141,16 @@ if doplot==1 & length(trace.data)>1 & ~ischar(trace.data)
     plot(trace.t,trace.data);
     ylabel(data_type)
   else
-    plot(trace.t,trace.data(:,:,1));
-    ylabel([data_type '(:,:,1)'])
+    for idim=1:length(trace.dim)
+      if length(trace.t)==length(trace.dim{idim}); idim_t=idim; end
+    end
+    if idim_t<=2
+      plot(trace.t,trace.data(:,:,floor(end/2)));
+      ylabel([data_type '(:,:,floor(end/2))'])
+    elseif idim_t==3;
+      plot(trace.t,reshape(trace.data(:,floor(end/2),:),length(trace.dim{1}),length(trace.t)));
+      ylabel([data_type '(:,floor(end/2),:)'])
+    end
   end
   xlabel('time [s]')
   title([machine ' '  num2str(shot)])
-- 
GitLab