Index: trunk/SophyaLib/SkyMap/spherehealpix.cc
===================================================================
--- trunk/SophyaLib/SkyMap/spherehealpix.cc	(revision 979)
+++ trunk/SophyaLib/SkyMap/spherehealpix.cc	(revision 980)
@@ -261,21 +261,20 @@
 template<class T>
 SphereHEALPix<T>& SphereHEALPix<T>::Set(const SphereHEALPix<T>& a)
-   {
+{
   if (this != &a) 
     { 
-
-  if (a.NbPixels() < 1) 
-    throw RangeCheckError("SphereHEALPix<T>::Set(a ) - Array a not allocated ! ");
-  if (NbPixels() < 1) CloneOrShare(a);
-  else CopyElt(a);
-
-
-      //     CloneOrShare(a);
-     if (mInfo_) delete mInfo_;
-     mInfo_ = NULL;
-     if (a.mInfo_) mInfo_ = new DVList(*(a.mInfo_));
+      
+      if (a.NbPixels() < 1) 
+	throw RangeCheckError("SphereHEALPix<T>::Set(a ) - Array a not allocated ! ");
+      if (NbPixels() < 1) CloneOrShare(a);
+      else CopyElt(a);
+      
+      
+      if (mInfo_) delete mInfo_;
+      mInfo_ = NULL;
+      if (a.mInfo_) mInfo_ = new DVList(*(a.mInfo_));
     }
   return(*this);
-   }
+}
 
 template<class T>
@@ -285,5 +284,5 @@
     throw RangeCheckError("SphereHEALPix<T>::CopyElt(const SphereHEALPix<T>& )  - Not Allocated Array ! ");
   if (NbPixels() != a.NbPixels()) 
-    throw(SzMismatchError("TArray<T>::MultElt(const TArray<T>&) SizeMismatch")) ;
+    throw(SzMismatchError("SphereHEALPix<T>::CopyElt(const SphereHEALPix<T>&) SizeMismatch")) ;
   nSide_= a.nSide_;
   nPix_ = a.nPix_;
Index: trunk/SophyaLib/SkyMap/spherehealpix.h
===================================================================
--- trunk/SophyaLib/SkyMap/spherehealpix.h	(revision 979)
+++ trunk/SophyaLib/SkyMap/spherehealpix.h	(revision 980)
@@ -215,5 +215,5 @@
 
 inline  SphereHEALPix<T>& operator = (const SphereHEALPix<T>& a) 
-                                                       {return Set(a);}
+                                                        {return Set(a);}
         
 private :
@@ -239,4 +239,5 @@
  void CloneOrShare(const SphereHEALPix<T>& a);
  SphereHEALPix<T>& Set(const SphereHEALPix<T>& a);
+ SphereHEALPix<T>& CopyElt(const SphereHEALPix<T>& a);
 
 // ------------- variables internes -----------------------
Index: trunk/SophyaLib/SkyMap/spherethetaphi.cc
===================================================================
--- trunk/SophyaLib/SkyMap/spherethetaphi.cc	(revision 979)
+++ trunk/SophyaLib/SkyMap/spherethetaphi.cc	(revision 980)
@@ -39,9 +39,9 @@
 template <class T>
 SphereThetaPhi<T>::SphereThetaPhi()
+  : NPhi_(), TNphi_(), Theta_(), pixels_() 
 
 //--
 {
   InitNul();
-  pixels_.Reset();
 }
 
@@ -67,9 +67,9 @@
     pixels_(s.pixels_ , share) 
 {
-  if(s.mInfo_) mInfo_= new DVList(*s.mInfo_);
 
   NTheta_= s.NTheta_;
   NPix_  = s.NPix_;
   Omega_ = s.Omega_;
+  if(s.mInfo_) mInfo_= new DVList(*s.mInfo_);
 }
 
@@ -78,9 +78,9 @@
   : NPhi_(s.NPhi_), TNphi_(s.TNphi_), Theta_(s.Theta_), pixels_(s.pixels_) 
 {
-  if(s.mInfo_) mInfo_= new DVList(*s.mInfo_);
 
   NTheta_= s.NTheta_;
   NPix_  = s.NPix_;
   Omega_ = s.Omega_;
+  if(s.mInfo_) mInfo_= new DVList(*s.mInfo_);
 }
 
@@ -122,21 +122,25 @@
 {
 
-    NPhi_.CloneOrShare(a.NPhi_);
-    TNphi_.CloneOrShare(a.TNphi_);
-    Theta_.CloneOrShare(a.Theta_);
-    pixels_.CloneOrShare(a.pixels_);
-}
-
+  NTheta_= a.NTheta_;
+  NPix_  = a.NPix_;
+  Omega_ = a.Omega_;
+  NPhi_.CloneOrShare(a.NPhi_);
+  TNphi_.CloneOrShare(a.TNphi_);
+  Theta_.CloneOrShare(a.Theta_);
+  pixels_.CloneOrShare(a.pixels_);
+}
+
+////////////////////////// methodes de copie/share
 template<class T>
 SphereThetaPhi<T>& SphereThetaPhi<T>::Set(const SphereThetaPhi<T>& a)
-   {
+{
   if (this != &a) 
     { 
-
-
-      NTheta_= a.NTheta_;
-      NPix_  = a.NPix_;
-      Omega_ = a.Omega_;
-      CloneOrShare(a);
+      
+      
+      if (a.NbPixels() < 1) 
+	throw RangeCheckError("SphereThetaPhi<T>::Set(a ) - Array a not allocated ! ");
+      if (NbPixels() < 1) CloneOrShare(a);
+      else CopyElt(a);
       if (mInfo_) delete mInfo_;
       mInfo_ = NULL;
@@ -144,7 +148,25 @@
     }
   return(*this);
-   }
-
-
+}
+
+template<class T>
+SphereThetaPhi<T>& SphereThetaPhi<T>::CopyElt(const SphereThetaPhi<T>& a)
+{
+  if (NbPixels() < 1) 
+    throw RangeCheckError("SphereThetaPhi<T>::CopyElt(const SphereThetaPhi<T>& )  - Not Allocated Array ! ");
+  if (NbPixels() != a.NbPixels()) 
+    throw(SzMismatchError("SphereThetaPhi<T>::CopyElt(const SphereThetaPhi<T>&) SizeMismatch")) ;
+
+  NTheta_= a.NTheta_;
+  NPix_  = a.NPix_;
+  Omega_ = a.Omega_;
+  int k;
+  for (k=0; k< NPix_; k++) pixels_(k) = a.pixels_(k);
+  for (k=0; k< a.NPhi_.Size(); k++) NPhi_(k) = a.NPhi_(k);
+  for (k=0; k< a.TNphi_.Size(); k++) TNphi_(k) = a.TNphi_(k);
+  for (k=0; k< a.Theta_.Size(); k++) Theta_(k) = a.Theta_(k);
+  return(*this);
+
+}
 
 /* --Methode-- */
@@ -524,5 +546,8 @@
   // Le nombre de pixels en phi de chacune des bandes en theta
   //  NPhi_ = new int_4[m];
-  NPhi_.ReSize(m);
+  // une taille de m suffit, mais je mets m+1 pour que les 3 tableaux aient 
+  // la meme taille pour une manipulation plus faciles par la librairie 
+  // cfitsio -- GLM (13-04-00)
+  NPhi_.ReSize(m+1);
   
   // Le nombre/Deuxpi total des pixels contenus dans les bandes de z superieur a une
Index: trunk/SophyaLib/SkyMap/spherethetaphi.h
===================================================================
--- trunk/SophyaLib/SkyMap/spherethetaphi.h	(revision 979)
+++ trunk/SophyaLib/SkyMap/spherethetaphi.h	(revision 980)
@@ -15,4 +15,7 @@
 template <class T>
 class FIO_SphereThetaPhi;  
+
+template<class T>
+class FITS_SphereThetaPhi;
 
 
@@ -33,4 +36,5 @@
 
   friend class FIO_SphereThetaPhi<T>;
+  friend class FITS_SphereThetaPhi<T>;
 
 public :
@@ -198,4 +202,5 @@
 
 SphereThetaPhi<T>& Set(const SphereThetaPhi<T>& a);
+ SphereThetaPhi<T>& CopyElt(const SphereThetaPhi<T>& a);
 
 // ------------- variables internes ---------------------
