Index: /trunk/SophyaLib/SkyMap/localmap.cc
===================================================================
--- /trunk/SophyaLib/SkyMap/localmap.cc	(revision 1550)
+++ /trunk/SophyaLib/SkyMap/localmap.cc	(revision 1551)
@@ -640,5 +640,5 @@
   if (nSzX_ != a.nSzX_ || nSzY_ != a.nSzY_)
     {
-    throw(SzMismatchError("LocalMap<T>::AddElt(const LocalMap<T>&) SizeMismatch")) ;
+    throw(SzMismatchError("LocalMap<T>::SubElt(const LocalMap<T>&) SizeMismatch")) ;
     }
   pixels_ -= a.pixels_;
@@ -652,7 +652,19 @@
   if (nSzX_ != a.nSzX_ || nSzY_ != a.nSzY_)
     {
-    throw(SzMismatchError("LocalMap<T>::AddElt(const LocalMap<T>&) SizeMismatch")) ;
+    throw(SzMismatchError("LocalMap<T>::MulElt(const LocalMap<T>&) SizeMismatch")) ;
     }
   pixels_ *= a.pixels_;
+  return (*this);
+}
+
+//! Divide two LocalMaps (elements by elements) - No protection for divide by 0
+template <class T>
+LocalMap<T>& LocalMap<T>::DivElt(const LocalMap<T>& a)
+{
+  if (nSzX_ != a.nSzX_ || nSzY_ != a.nSzY_)
+    {
+    throw(SzMismatchError("LocalMap<T>::DivElt(const LocalMap<T>&) SizeMismatch")) ;
+    }
+  pixels_ /= a.pixels_;
   return (*this);
 }
Index: /trunk/SophyaLib/SkyMap/localmap.h
===================================================================
--- /trunk/SophyaLib/SkyMap/localmap.h	(revision 1550)
+++ /trunk/SophyaLib/SkyMap/localmap.h	(revision 1551)
@@ -142,4 +142,6 @@
   virtual LocalMap<T>&  MulElt(const LocalMap<T>& a);
   inline  LocalMap<T>&  operator *= (const LocalMap<T>& a)  { return MulElt(a); }
+  virtual LocalMap<T>&  DivElt(const LocalMap<T>& a);
+  inline  LocalMap<T>&  operator /= (const LocalMap<T>& a)  { return DivElt(a); }
 
 
@@ -255,4 +257,26 @@
     return result; }
 
+////////////////////////////////////////////////////////////////
+// Surcharge d'operateurs C = A (*,/) B
+
+/*! \ingroup SkyMap \fn operator*(const LocalMap<T>&,const LocalMap<T>&)
+  \brief Operator LocalMap = LocalMap * LocalMap (pixel by pixel multiply)*/
+template <class T>
+inline LocalMap<T> operator * (const LocalMap<T>& a,const LocalMap<T>& b)
+    { LocalMap<T> result; result.SetTemp(true); 
+    if (b.IsTemp())  { result.Share(b); result.MulElt(a); }
+    else { result.CloneOrShare(a); result.MulElt(b); }
+    return result; }
+
+/*! \ingroup SkyMap \fn operator/(const LocalMap<T>&,const LocalMap<T>&)
+  \brief Operator LocalMap = LocalMap / LocalMap (pixel by pixel divide)*/
+template <class T>
+inline LocalMap<T> operator / (const LocalMap<T>& a,const LocalMap<T>& b)
+    { LocalMap<T> result; result.SetTemp(true); 
+    if (b.IsTemp())  { result.Share(b); result.DivElt(a); }
+    else { result.CloneOrShare(a); result.DivElt(b); }
+    return result; }
+
+
 
 } // Fin du namespace
Index: /trunk/SophyaLib/SkyMap/spherehealpix.cc
===================================================================
--- /trunk/SophyaLib/SkyMap/spherehealpix.cc	(revision 1550)
+++ /trunk/SophyaLib/SkyMap/spherehealpix.cc	(revision 1551)
@@ -645,7 +645,19 @@
   if (NbPixels() != a.NbPixels() )
     {
-    throw(SzMismatchError("SphereHEALPix<T>::SubElt(const SphereHEALPix<T>&) SizeMismatch")) ;
+    throw(SzMismatchError("SphereHEALPix<T>::MulElt(const SphereHEALPix<T>&) SizeMismatch")) ;
     }
   pixels_ *= a.pixels_;
+  return (*this);
+}
+
+//! Divide two SphereHEALPix (elements by elements) - No protection for divide by 0
+template <class T>
+SphereHEALPix<T>& SphereHEALPix<T>::DivElt(const SphereHEALPix<T>& a)
+{
+  if (NbPixels() != a.NbPixels() )
+    {
+    throw(SzMismatchError("SphereHEALPix<T>::DivElt(const SphereHEALPix<T>&) SizeMismatch")) ;
+    }
+  pixels_ /= a.pixels_;
   return (*this);
 }
Index: /trunk/SophyaLib/SkyMap/spherehealpix.h
===================================================================
--- /trunk/SophyaLib/SkyMap/spherehealpix.h	(revision 1550)
+++ /trunk/SophyaLib/SkyMap/spherehealpix.h	(revision 1551)
@@ -171,4 +171,6 @@
   virtual SphereHEALPix<T>&  MulElt(const SphereHEALPix<T>& a);
   inline  SphereHEALPix<T>&  operator *= (const SphereHEALPix<T>& a)  { return MulElt(a); }
+  virtual SphereHEALPix<T>&  DivElt(const SphereHEALPix<T>& a);
+  inline  SphereHEALPix<T>&  operator /= (const SphereHEALPix<T>& a)  { return DivElt(a); }
 
 
@@ -278,4 +280,25 @@
     return result; }
 
+////////////////////////////////////////////////////////////////
+// Surcharge d'operateurs C = A (*,/) B
+
+/*! \ingroup SkyMap \fn operator*(const SphereHEALPix<T>&,const SphereHEALPix<T>&)
+  \brief Operator SphereHEALPix = SphereHEALPix * SphereHEALPix (pixel by pixel multiply) */
+template <class T>
+inline SphereHEALPix<T> operator * (const SphereHEALPix<T>& a,const SphereHEALPix<T>& b)
+    { SphereHEALPix<T> result; result.SetTemp(true); 
+    if (b.IsTemp())  { result.Share(b); result.MulElt(a); }
+    else { result.CloneOrShare(a); result.MulElt(b); }
+    return result; }
+
+/*! \ingroup SkyMap \fn operator/(const SphereHEALPix<T>&,const SphereHEALPix<T>&)
+  \brief Operator SphereHEALPix = SphereHEALPix / SphereHEALPix (pixel by pixel divide) */
+template <class T>
+inline SphereHEALPix<T> operator / (const SphereHEALPix<T>& a,const SphereHEALPix<T>& b)
+    { SphereHEALPix<T> result; result.SetTemp(true); 
+    if (b.IsTemp())  { result.Share(b); result.DivElt(a); }
+    else { result.CloneOrShare(a); result.DivElt(b); }
+    return result; }
+
 } // Fin du namespace
 
Index: /trunk/SophyaLib/SkyMap/spherethetaphi.cc
===================================================================
--- /trunk/SophyaLib/SkyMap/spherethetaphi.cc	(revision 1550)
+++ /trunk/SophyaLib/SkyMap/spherethetaphi.cc	(revision 1551)
@@ -811,7 +811,19 @@
   if (NbPixels()!= a.NbPixels())
     {
-    throw(SzMismatchError("SphereThetaPhi<T>::SubElt(const SphereThetaPhi<T>&) SizeMismatch")) ;
+    throw(SzMismatchError("SphereThetaPhi<T>::MulElt(const SphereThetaPhi<T>&) SizeMismatch")) ;
     }
   pixels_ *= a.pixels_;
+  return (*this);
+}
+
+//! Divide two SphereThetaPhi (elements by elements) - No protection for divide by 0
+template <class T>
+SphereThetaPhi<T>& SphereThetaPhi<T>::DivElt(const SphereThetaPhi<T>& a)
+{
+  if (NbPixels()!= a.NbPixels())
+    {
+    throw(SzMismatchError("SphereThetaPhi<T>::DivElt(const SphereThetaPhi<T>&) SizeMismatch")) ;
+    }
+  pixels_ /= a.pixels_;
   return (*this);
 }
Index: /trunk/SophyaLib/SkyMap/spherethetaphi.h
===================================================================
--- /trunk/SophyaLib/SkyMap/spherethetaphi.h	(revision 1550)
+++ /trunk/SophyaLib/SkyMap/spherethetaphi.h	(revision 1551)
@@ -223,4 +223,6 @@
   virtual SphereThetaPhi<T>&  MulElt(const SphereThetaPhi<T>& a);
   inline  SphereThetaPhi<T>&  operator *= (const SphereThetaPhi<T>& a)  { return MulElt(a); }
+  virtual SphereThetaPhi<T>&  DivElt(const SphereThetaPhi<T>& a);
+  inline  SphereThetaPhi<T>&  operator /= (const SphereThetaPhi<T>& a)  { return DivElt(a); }
 
 
@@ -332,4 +334,25 @@
     return result; }
 
+////////////////////////////////////////////////////////////////
+// Surcharge d'operateurs C = A (*,/) B
+
+/*! \ingroup SkyMap \fn operator*(const SphereThetaPhi<T>&,const SphereThetaPhi<T>&)
+  \brief Operator SphereThetaPhi = SphereThetaPhi * SphereThetaPhi (pixel by pixel multiply)*/
+template <class T>
+inline SphereThetaPhi<T> operator * (const SphereThetaPhi<T>& a,const SphereThetaPhi<T>& b)
+    { SphereThetaPhi<T> result; result.SetTemp(true); 
+    if (b.IsTemp())  { result.Share(b); result.MulElt(a); }
+    else { result.CloneOrShare(a); result.MulElt(b); }
+    return result; }
+
+/*! \ingroup SkyMap \fn operator/(const SphereThetaPhi<T>&,const SphereThetaPhi<T>&)
+  \brief Operator SphereThetaPhi = SphereThetaPhi / SphereThetaPhi (pixel by pixel divide) */
+template <class T>
+inline SphereThetaPhi<T> operator / (const SphereThetaPhi<T>& a,const SphereThetaPhi<T>& b)
+    { SphereThetaPhi<T> result; result.SetTemp(true); 
+    if (b.IsTemp())  { result.Share(b); result.DivElt(a, true); }
+    else { result.CloneOrShare(a); result.DivElt(b); }
+    return result; }
+
 
 } // Fin du namespace
