Index: trunk/SophyaLib/SkyMap/sphereecp.cc
===================================================================
--- trunk/SophyaLib/SkyMap/sphereecp.cc	(revision 2966)
+++ trunk/SophyaLib/SkyMap/sphereecp.cc	(revision 2968)
@@ -304,9 +304,18 @@
 
 template <class T>
+r_8  SphereECP<T>::ThetaOfSlice(int_4 index) const
+{
+  if( (index < 0) || (index >= _pixels.SizeY()) )  
+     throw RangeCheckError("SphereECP::ThetaOfSlice() theta index out of range");
+  return (_theta1 + (index+0.5)*_dtheta);
+ 
+}
+
+template <class T>
 void  SphereECP<T>::GetThetaSlice(int_4 index,r_8& theta, 
 				  TVector<r_8>& phi, TVector<T>& value) const 
 {
   if( (index < 0) || (index >= _pixels.SizeY()) )  
-     throw RangeCheckError("SphereECP::GetThetaSlice() theta index out of range");
+     throw RangeCheckError("SphereECP::GetThetaSlice() index out of range");
 
   theta = _theta1 + (index+0.5)*_dtheta;
@@ -336,5 +345,5 @@
 {
   if( (index < 0) || (index >= _pixels.SizeY()) )  
-    throw RangeCheckError("SphereECP::GetThetaSlice() theta index out of range");
+    throw RangeCheckError("SphereECP::GetThetaSlice() index out of range");
   
   theta = _theta1 + (index+0.5)*_dtheta;
Index: trunk/SophyaLib/SkyMap/sphereecp.h
===================================================================
--- trunk/SophyaLib/SkyMap/sphereecp.h	(revision 2966)
+++ trunk/SophyaLib/SkyMap/sphereecp.h	(revision 2968)
@@ -96,4 +96,5 @@
   inline  uint_4	NbPhiSlices() const { return _pixels.SizeX(); }
 
+  virtual r_8           ThetaOfSlice(int_4 index) const;
   virtual void		GetThetaSlice(int_4 index,r_8& theta, 
 				      TVector<r_8>& phi, TVector<T>& value) const ; 
Index: trunk/SophyaLib/SkyMap/spherehealpix.cc
===================================================================
--- trunk/SophyaLib/SkyMap/spherehealpix.cc	(revision 2966)
+++ trunk/SophyaLib/SkyMap/spherehealpix.cc	(revision 2968)
@@ -299,4 +299,16 @@
 }
 
+//! Return the theta angle for slice defined by \b index
+template<class T>
+r_8 SphereHEALPix<T>::ThetaOfSlice(int_4 index) const
+{
+  uint_4 nbslices = uint_4(4*nSide_-1);
+  if (index<0 || index >= nbslices) 
+    throw RangeCheckError(" SphereHEALPix::ThetaOfSlice()  index out of range");
+  r_8 theta, phi0;
+  PixThetaPhi(sliceBeginIndex_(index), theta, phi0);
+  return theta;
+}
+
 /*!  \fn void SOPHYA::SphereHEALPix::GetThetaSlice(int_4 index,r_8& theta,TVector<r_8>& phi,TVector<T>& value) const 
 
@@ -317,5 +329,5 @@
     {
       cout << " SphereHEALPix::GetThetaSlice : Pixel index out of range" <<endl;
-      throw RangeCheckError(" SphereHEALPix::GetThetaSlice : Pixel index out of range");
+      throw RangeCheckError(" SphereHEALPix::GetThetaSlice()  index out of range");
     }
 
Index: trunk/SophyaLib/SkyMap/spherehealpix.h
===================================================================
--- trunk/SophyaLib/SkyMap/spherehealpix.h	(revision 2966)
+++ trunk/SophyaLib/SkyMap/spherehealpix.h	(revision 2968)
@@ -70,5 +70,6 @@
 virtual T const& PixVal(int_4 k) const;
 
-uint_4 NbThetaSlices() const;
+virtual uint_4 NbThetaSlices() const;
+virtual r_8  ThetaOfSlice(int_4 index) const;
 virtual void GetThetaSlice(int_4 index,r_8& theta,TVector<r_8>& phi,TVector<T>& value) const;
 virtual void GetThetaSlice(int_4 sliceIndex,r_8& theta, r_8& phi0, TVector<int_4>& pixelIndices,TVector<T>& value) const ;
Index: trunk/SophyaLib/SkyMap/spherethetaphi.cc
===================================================================
--- trunk/SophyaLib/SkyMap/spherethetaphi.cc	(revision 2966)
+++ trunk/SophyaLib/SkyMap/spherethetaphi.cc	(revision 2968)
@@ -592,4 +592,14 @@
 }
 
+//! Return the theta angle for slice defined by \b index
+template <class T>
+r_8 SphereThetaPhi<T>::ThetaOfSlice(int_4 index) const
+{
+  if(index < 0 || index >= 2*NTheta_) 
+    throw RangeCheckError("SphereThetaPhi::ThetaOfSlice() index out of range"); 
+  double tet1, tet2;
+  Theta(index, tet1, tet2); 
+  return 0.5*(tet1+tet2);  
+}
 
 /*!    
@@ -606,7 +616,6 @@
 
   if(index < 0 || index >= NbThetaSlices()) 
-    {
-       throw RangeCheckError("SphereThetaPhi::PIxVal Pixel index out of range"); 
-    }
+    throw RangeCheckError("SphereThetaPhi::GetThetaSlice() index out of range"); 
+    
 
   int iring= Index(index,0);
Index: trunk/SophyaLib/SkyMap/spherethetaphi.h
===================================================================
--- trunk/SophyaLib/SkyMap/spherethetaphi.h	(revision 2966)
+++ trunk/SophyaLib/SkyMap/spherethetaphi.h	(revision 2968)
@@ -119,4 +119,5 @@
 void Pixelize(int_4); 
 
+virtual r_8  ThetaOfSlice(int_4 index) const;
 virtual void GetThetaSlice(int_4 index,r_8& theta,TVector<r_8>& phi,TVector<T>& value) const; 
 virtual void GetThetaSlice(int_4 index, r_8& theta, r_8& phi0,TVector<int_4>& pixelIndices, TVector<T>& value) const ;
Index: trunk/SophyaLib/SkyMap/sphericalmap.h
===================================================================
--- trunk/SophyaLib/SkyMap/sphericalmap.h	(revision 2966)
+++ trunk/SophyaLib/SkyMap/sphericalmap.h	(revision 2968)
@@ -47,4 +47,5 @@
 virtual void Resize(int_4 m)=0;
 virtual uint_4 NbThetaSlices() const=0;
+virtual r_8  ThetaOfSlice(int_4 index) const=0;
 virtual void GetThetaSlice(int_4 index,r_8& theta, TVector<r_8>& phi, TVector<T>& value) const=0; 
 virtual void GetThetaSlice(int_4 sliceIndex, r_8& theta, r_8& phi0, TVector<int_4>& pixelIndices,TVector<T>& value) const=0 ;
