Index: trunk/SophyaPI/PIext/nomtarradapter.cc
===================================================================
--- trunk/SophyaPI/PIext/nomtarradapter.cc	(revision 2999)
+++ trunk/SophyaPI/PIext/nomtarradapter.cc	(revision 3004)
@@ -112,6 +112,6 @@
     }
     else if (opts[0] == "sliceyz") {
-      slice->Share(mArr->SubArray(Range(ks), Range::all(), Range::all(), 
-				  Range::first(), Range::first()) );  
+      slice->Share(mArr->SubArray(Range(ks), Range::all(), Range::all(), Range::first(), 
+				  Range::first()).CompactAllDimensions() );  
       ok = true; 
       sprintf(buff,"sliceyz_%ld",(long)ks);
@@ -119,6 +119,6 @@
     }
     else if (opts[0] == "slicexz") {
-      slice->Share(mArr->SubArray(Range::all(), Range(ks), Range::all(), 
-				  Range::first(), Range::first()) );  
+      slice->Share(mArr->SubArray(Range::all(), Range(ks), Range::all(), Range::first(), 
+				  Range::first()).CompactAllDimensions() );  
       ok = true; 
       sprintf(buff,"slicexz_%ld",(long)ks);
@@ -223,4 +223,60 @@
 /* --Methode-- */
 template <class T> 
+r_8 NTupInt_TArray<T>::GetCell(sa_size_t n, sa_size_t k) const
+{
+  if ((n < 0) || (n >= (int)(mArr->Size()) ) ) 
+    return 0.;
+  if ((k < 0) || (k > 10))  return 0.;
+  GetLineD(n);
+  return mRet[k];
+}
+
+/* --Methode-- */
+template <class T> 
+sa_size_t NTupInt_TArray<T>::ColumnIndex(string const & nom)  const 
+{
+string vardec = "double n,x,y,z,t,u,val,real,imag,mod,phas; \n";
+ if (nom == "n") return 0;
+ else if (nom == "x") return 1;
+ else if (nom == "y") return 2;
+ else if (nom == "z") return 3;
+ else if (nom == "t") return 4;
+ else if (nom == "u") return 5;
+ else if (nom == "val") return 6;
+ else if (nom == "real") return 7;
+ else if (nom == "imag") return 8;
+ else if (nom == "mod") return 9;
+ else if (nom == "phase") return 10;
+ else return -1;
+}
+
+/* --Methode-- */
+template <class T> 
+void NTupInt_TArray<T>::GetMinMax(sa_size_t k, double& min, double& max) const
+{
+  if (k == 0) {
+    min = 0.; max = (r_8)(mArr->Size());  }
+  else if (k == 1) {
+    min = 0.; max = (r_8)(mArr->SizeX());  }
+  else if (k == 2) {
+    min = 0.; max = (r_8)(mArr->SizeY());  }
+  else if (k == 3) {
+    min = 0.; max = (r_8)(mArr->SizeZ());  }
+  else if (k == 4) {
+    min = 0.; max = (r_8)(mArr->Size(3));  }
+  else if (k == 5) {
+    min = 0.; max = (r_8)(mArr->Size(4));  }
+  else if ((k == 6) || (k == 7) || (k == 9)) {
+    T tmin, tmax;
+    mArr->MinMax(tmin, tmax);
+    min = (r_8)(tmin); 
+    max = (r_8)(tmax); 
+  }
+  else { min = max = 0.; }
+  return;
+}
+
+/* --Methode-- */
+template <class T> 
 r_8* NTupInt_TArray<T>::GetLineD(sa_size_t n) const 
 {
@@ -235,6 +291,6 @@
   mRet[3] = iz;  mRet[4] = it;  mRet[5] = iu;  
   mRet[6] = (*mArr)(ix,iy,iz,it,iu);
-  mRet[7] = mRet[2];  mRet[8] = 0.;
-  mRet[9] = mRet[2];  mRet[10] = 0.;
+  mRet[7] = mRet[6];  mRet[8] = 0.;
+  mRet[9] = mRet[6];  mRet[10] = 0.;
   }
 return(mRet);
@@ -272,6 +328,6 @@
   mRet[7] = (*mArr)(ix,iy,iz,it,iu).real();
   mRet[8] = (*mArr)(ix,iy,iz,it,iu).imag();
-  mRet[3] = mRet[6] = sqrt(mRet[7]*mRet[7]+mRet[8]*mRet[8]);
-  mRet[7] = atan2(mRet[8], mRet[7]);
+  mRet[6] = mRet[9] = sqrt(mRet[7]*mRet[7]+mRet[8]*mRet[8]);
+  mRet[10] = atan2(mRet[8], mRet[7]);
 }
 return(mRet);
@@ -292,10 +348,84 @@
   mRet[7] = (*mArr)(ix,iy,iz,it,iu).real();
   mRet[8] = (*mArr)(ix,iy,iz,it,iu).imag();
-  mRet[3] = mRet[6] = sqrt(mRet[7]*mRet[7]+mRet[8]*mRet[8]);
-  mRet[7] = atan2(mRet[8], mRet[7]);
+  mRet[6] = mRet[9] = sqrt(mRet[7]*mRet[7]+mRet[8]*mRet[8]);
+  mRet[10] = atan2(mRet[8], mRet[7]);
 }
 return(mRet);
 }
 
+DECL_TEMP_SPEC  /* equivalent a template <> , pour SGI-CC en particulier */
+void NTupInt_TArray< complex<r_4> >::GetMinMax(sa_size_t k, double& min, double& max) const
+{
+  if (k == 0) {
+    min = 0.; max = (r_8)(mArr->Size());  }
+  else if (k == 1) {
+    min = 0.; max = (r_8)(mArr->SizeX());  }
+  else if (k == 2) {
+    min = 0.; max = (r_8)(mArr->SizeY());  }
+  else if (k == 3) {
+    min = 0.; max = (r_8)(mArr->SizeZ());  }
+  else if (k == 4) {
+    min = 0.; max = (r_8)(mArr->Size(3));  }
+  else if (k == 5) {
+    min = 0.; max = (r_8)(mArr->Size(4));  }
+  else if ((k >= 6) || (k <= 9)) {
+    r_8 tmin[3] = {9.e39,9.e39,9.e39};
+    r_8 tmax[3] = {-9.e39,-9.e39,-9.e39};
+    for(sa_size_t jj=0; jj<mArr->Size(); jj++) {
+      sa_size_t ix, iy, iz, it, iu;
+      mArr->IndexAtPosition(jj, ix, iy, iz, it, iu);
+      r_8 cv[3];
+      cv[0] = (*mArr)(ix,iy,iz,it,iu).real();
+      cv[1] = (*mArr)(ix,iy,iz,it,iu).imag();
+      cv[2] = sqrt(cv[0]*cv[0]+cv[1]*cv[1]);
+      for(int i=0; i<3; i++) {
+	if (cv[i] < tmin[i]) tmin[i] = cv[i];
+	if (cv[i] > tmax[i]) tmax[i] = cv[i];
+      }
+    }
+    if (k == 7) { min = tmin[0]; max = tmax[0]; }
+    else if (k == 8) { min = tmin[0]; max = tmax[0]; }
+    else { min = tmin[2]; max = tmax[2]; }
+  }
+  else { min = max = 0.; }
+  return;
+}
+DECL_TEMP_SPEC  /* equivalent a template <> , pour SGI-CC en particulier */
+void NTupInt_TArray< complex<r_8> >::GetMinMax(sa_size_t k, double& min, double& max) const
+{
+  if (k == 0) {
+    min = 0.; max = (r_8)(mArr->Size());  }
+  else if (k == 1) {
+    min = 0.; max = (r_8)(mArr->SizeX());  }
+  else if (k == 2) {
+    min = 0.; max = (r_8)(mArr->SizeY());  }
+  else if (k == 3) {
+    min = 0.; max = (r_8)(mArr->SizeZ());  }
+  else if (k == 4) {
+    min = 0.; max = (r_8)(mArr->Size(3));  }
+  else if (k == 5) {
+    min = 0.; max = (r_8)(mArr->Size(4));  }
+  else if ((k >= 6) || (k <= 9)) {
+    r_8 tmin[3] = {9.e39,9.e39,9.e39};
+    r_8 tmax[3] = {-9.e39,-9.e39,-9.e39};
+    for(sa_size_t jj=0; jj<mArr->Size(); jj++) {
+      sa_size_t ix, iy, iz, it, iu;
+      mArr->IndexAtPosition(jj, ix, iy, iz, it, iu);
+      r_8 cv[3];
+      cv[0] = (*mArr)(ix,iy,iz,it,iu).real();
+      cv[1] = (*mArr)(ix,iy,iz,it,iu).imag();
+      cv[2] = sqrt(cv[0]*cv[0]+cv[1]*cv[1]);
+      for(int i=0; i<3; i++) {
+	if (cv[i] < tmin[i]) tmin[i] = cv[i];
+	if (cv[i] > tmax[i]) tmax[i] = cv[i];
+      }
+    }
+    if (k == 7) { min = tmin[0]; max = tmax[0]; }
+    else if (k == 8) { min = tmin[0]; max = tmax[0]; }
+    else { min = tmin[2]; max = tmax[2]; }
+  }
+  else { min = max = 0.; }
+  return;
+}
 
 #ifdef __CXX_PRAGMA_TEMPLATES__
Index: trunk/SophyaPI/PIext/nomtarradapter.h
===================================================================
--- trunk/SophyaPI/PIext/nomtarradapter.h	(revision 2999)
+++ trunk/SophyaPI/PIext/nomtarradapter.h	(revision 3004)
@@ -54,4 +54,7 @@
   virtual sa_size_t     NbLines() const ;
   virtual sa_size_t     NbColumns() const ;
+  virtual r_8		GetCell(sa_size_t n, sa_size_t k) const ;
+  virtual sa_size_t     ColumnIndex(string const & nom)  const ;
+  virtual void		GetMinMax(sa_size_t k, double& min, double& max)   const ; 
   virtual r_8 *         GetLineD(sa_size_t n) const ;
   virtual string        VarList_C(const char* nomx=NULL) const ;
