Index: /trunk/SophyaLib/Samba/localmap.cc
===================================================================
--- /trunk/SophyaLib/Samba/localmap.cc	(revision 603)
+++ /trunk/SophyaLib/Samba/localmap.cc	(revision 604)
@@ -90,4 +90,5 @@
 {
   InitNul();
+  pixels_.Reset();
 }
 
@@ -417,5 +418,5 @@
   cos_angle_= 1.0;
   sin_angle_= 0.0;
-  pixels_.Reset();
+//  pixels_.Reset(); Pas de reset par InitNul (en cas de share) - Reza 20/11/99 $CHECK$
 }
 
@@ -589,4 +590,5 @@
 {
   dobj= new LocalMap<T>;
+  dobj->DataBlock().SetTemp(true);
   ownobj= true;
   Read(filename);
@@ -600,4 +602,5 @@
 {
   dobj= new LocalMap<T>(obj, true);
+  dobj->DataBlock().SetTemp(true);
   ownobj= true;
 }
@@ -637,4 +640,6 @@
     {
       dobj= new LocalMap<T>;
+      dobj->DataBlock().SetTemp(true);
+      ownobj= true;
     }
 
@@ -682,8 +687,6 @@
     }
 
-  T* pixels= new T[nPix];
-  PIOSReadArray(is, pixels, nPix);
-  dobj->setDataBlock(pixels, nPix);
-  delete [] pixels;
+// On lit le DataBlock;
+  is >> dobj->DataBlock();
 }
 
@@ -745,5 +748,6 @@
     }
 
-  PIOSWriteArray(os,(dobj->getDataBlock())->Data(), nPix);
-}
-
+// On ecrit le dataBlock 
+  os << dobj->DataBlock();
+}
+
Index: /trunk/SophyaLib/Samba/localmap.h
===================================================================
--- /trunk/SophyaLib/Samba/localmap.h	(revision 603)
+++ /trunk/SophyaLib/Samba/localmap.h	(revision 604)
@@ -156,4 +156,8 @@
 inline void setDataBlock(T* data, int n) {pixels_.FillFrom(n,data);}
 
+/*  Acces to the DataBlock  */
+inline       NDataBlock<T>& DataBlock()       {return pixels_;}
+inline const NDataBlock<T>& DataBlock() const {return pixels_;}
+
 /* impression */ 
 void print(ostream& os) const;
Index: /trunk/SophyaLib/Samba/spheregorski.cc
===================================================================
--- /trunk/SophyaLib/Samba/spheregorski.cc	(revision 603)
+++ /trunk/SophyaLib/Samba/spheregorski.cc	(revision 604)
@@ -1,7 +1,9 @@
+#include "machdefs.h"
+#include <math.h>
+#include <complex>
+
+#include "pexceptions.h"
 #include "spheregorski.h"
 #include "strutil.h"
-#include <math.h>
-#include <complex>
-#include "piocmplx.h"
 
 extern "C" 
@@ -179,4 +181,5 @@
 {
   InitNul();
+  pixels_.Reset();
 }
 
@@ -196,5 +199,5 @@
     {
       cout << "SphereGorski : m hors bornes [0,8192], m= " << m << endl;
-      exit(1);
+      throw RangeCheckError("SphereGorski<T>::SphereGorski() - Out of bound nside (< 8192)!");
     }
   // verifier que m est une puissance de deux 
@@ -204,5 +207,5 @@
     {  
       cout<<"SphereGorski: m doit etre une puissance de deux, m= "<<m<<endl;
-      exit(1);
+      throw ParmError("SphereGorski<T>::SphereGorski() - nside != 2^n !");
     }
   InitNul();
@@ -233,5 +236,6 @@
 //--
 {
-  InitNul();
+//  InitNul();  - Non , le destructeur ne doit pas mettre les pixels a zero !
+//	        Reza 20/11/99
 }
 
@@ -303,6 +307,5 @@
   nPix_ = 0;
   omeg_ = 0.;
-  pixels_.Reset();
-
+//  pixels_.Reset();  -  Il ne faut pas mettre les pixels a zero si share !
 }
 
@@ -1114,4 +1117,5 @@
 {
   dobj= new SphereGorski<T>;
+  dobj->DataBlock().SetTemp(true);
   ownobj= true;
   Read(filename);
@@ -1122,4 +1126,5 @@
 {
   dobj= new SphereGorski<T>(obj, true);
+  dobj->DataBlock().SetTemp(true);
   ownobj= true;
 }
@@ -1151,4 +1156,6 @@
     {
       dobj= new SphereGorski<T>;
+      dobj->DataBlock().SetTemp(true);
+      ownobj= true;      
     }
 
@@ -1179,9 +1186,6 @@
   dobj->setPixSolAngle(Omega);
 
-  T* pixels= new T[nPix];
-  PIOSReadArray(is, pixels, nPix);
-  dobj->setDataBlock(pixels, nPix);
-  delete [] pixels;
-
+// On lit le DataBlock;
+  is >> dobj->DataBlock();
 }
 
@@ -1218,8 +1222,6 @@
   os.PutI4(nPix);
   os.PutR8(dobj->PixSolAngle(0));
-
-  PIOSWriteArray(os,(dobj->getDataBlock())->Data(), nPix);
-
-
+// On ecrit le dataBlock 
+  os << dobj->DataBlock();
 }
 
Index: /trunk/SophyaLib/Samba/spheregorski.h
===================================================================
--- /trunk/SophyaLib/Samba/spheregorski.h	(revision 603)
+++ /trunk/SophyaLib/Samba/spheregorski.h	(revision 604)
@@ -168,4 +168,8 @@
 inline void setDataBlock(T* data,int m) { pixels_.FillFrom(m,data); }
 
+/*  Acces to the DataBlock  */
+inline       NDataBlock<T>& DataBlock()       {return pixels_;}
+inline const NDataBlock<T>& DataBlock() const {return pixels_;}
+
 
 
Index: /trunk/SophyaLib/Samba/spherethetaphi.cc
===================================================================
--- /trunk/SophyaLib/Samba/spherethetaphi.cc	(revision 603)
+++ /trunk/SophyaLib/Samba/spherethetaphi.cc	(revision 604)
@@ -42,4 +42,5 @@
 {
   InitNul();
+  pixels_.Reset();
 }
 
@@ -79,5 +80,4 @@
   TNphi_[NTheta_]= s.TNphi_[NTheta_];
   Omega_ = s.Omega_;
-  pixels_= s.pixels_;
 }
 
@@ -107,5 +107,5 @@
   NPhi_  = NULL;
   TNphi_ = NULL;
-  pixels_.Reset();
+//  pixels_.Reset();  Pas de reset par InitNul (en cas de share) - Reza 20/11/99 $CHECK$
 }
 
@@ -686,4 +686,5 @@
 {
   dobj= new SphereThetaPhi<T>;
+  dobj->DataBlock().SetTemp(true);
   ownobj= true;
   Read(filename);
@@ -694,4 +695,5 @@
 {
   dobj= new SphereThetaPhi<T>(obj, true);
+  dobj->DataBlock().SetTemp(true);
   ownobj= true;
 }
@@ -723,4 +725,6 @@
     {
       dobj= new SphereThetaPhi<T>;
+      dobj->DataBlock().SetTemp(true);
+      ownobj= true;      
     }
 
@@ -766,8 +770,6 @@
   delete [] mTheta;
 
-  T* mPixels= new T[mNPix];
-  PIOSReadArray(is, mPixels, mNPix);
-  dobj->setDataBlock(mPixels, mNPix);
-  delete [] mPixels;
+// On lit le DataBlock;
+  is >> dobj->DataBlock();
 }
 
@@ -807,6 +809,6 @@
   os.PutI4s(dobj->getmTNphi(), mNTheta+1);
   os.PutR8s(dobj->getmTheta(), mNTheta+1);
-  //os.Put((dobj->getDataBlock())->Data(), mNPix);
-  PIOSWriteArray(os,(dobj->getDataBlock())->Data(), mNPix);
+// On ecrit le datablock
+  os << dobj->DataBlock();
 }
 
Index: /trunk/SophyaLib/Samba/spherethetaphi.h
===================================================================
--- /trunk/SophyaLib/Samba/spherethetaphi.h	(revision 603)
+++ /trunk/SophyaLib/Samba/spherethetaphi.h	(revision 604)
@@ -149,4 +149,8 @@
 void setDataBlock(T* data, int m);
 
+/*  Acces to the DataBlock  */
+inline       NDataBlock<T>& DataBlock()       {return pixels_;}
+inline const NDataBlock<T>& DataBlock() const {return pixels_;}
+
 /* impression */ 
 void print(ostream& os) const;
