Index: trunk/SophyaPI/PIext/nomskymapadapter.cc
===================================================================
--- trunk/SophyaPI/PIext/nomskymapadapter.cc	(revision 3505)
+++ trunk/SophyaPI/PIext/nomskymapadapter.cc	(revision 3520)
@@ -33,4 +33,15 @@
   virtual 	~LocalMapArrAdapter() { if (ad) delete map; }
   virtual double  Value(int ix, int iy) { return((*map)(ix, iy)); }
+  virtual double  MeanVal(int ix1, int ix2, int jy1, int jy2)
+  {
+  int ec;
+  if (ix1>ix2) { ec=ix1; ix1=ix2; ix2=ec; }
+  if (jy1>jy2) { ec=jy1; jy1=jy2; jy2=ec; }    
+  double ss = 0.;
+  for(int j=jy1; j<=jy2; j++) 
+    for(int i=ix1; i<=ix2; i++)  ss += (double)((*map)(i, j));
+  ss /= (double)((jy2-jy1+1)*(ix2-ix1+1));
+  return ss;  
+  }   
 
 protected :
@@ -56,4 +67,32 @@
 im = (*map)(iy, ix).imag();
 return(sqrt(re*re+im*im));
+}
+
+/* --Methode-- */
+DECL_TEMP_SPEC  /* equivalent a template <> , pour SGI-CC en particulier */
+double LocalMapArrAdapter< complex<float> >::MeanVal(int ix1, int ix2, int jy1, int jy2)
+{
+int ec;
+if (ix1>ix2) { ec=ix1; ix1=ix2; ix2=ec; }
+if (jy1>jy2) { ec=jy1; jy1=jy2; jy2=ec; }    
+complex<float> ss = 0.;
+for(int j=jy1; j<=jy2; j++) 
+  for(int i=ix1; i<=ix2; i++)  ss += (*map)(i, j);
+ss /= (double)((jy2-jy1+1)*(ix2-ix1+1));
+return sqrt(ss.real()*ss.real()+ss.imag()*ss.imag());  
+}
+
+/* --Methode-- */
+DECL_TEMP_SPEC  /* equivalent a template <> , pour SGI-CC en particulier */
+double LocalMapArrAdapter< complex<double> >::MeanVal(int ix1, int ix2, int jy1, int jy2)
+{
+int ec;
+if (ix1>ix2) { ec=ix1; ix1=ix2; ix2=ec; }
+if (jy1>jy2) { ec=jy1; jy1=jy2; jy2=ec; }    
+complex<double> ss = 0.;
+for(int j=jy1; j<=jy2; j++) 
+  for(int i=ix1; i<=ix2; i++)  ss += (*map)(i, j);
+ss /= (double)((jy2-jy1+1)*(ix2-ix1+1));
+return sqrt(ss.real()*ss.real()+ss.imag()*ss.imag());  
 }
 
Index: trunk/SophyaPI/PIext/phistwrapper.h
===================================================================
--- trunk/SophyaPI/PIext/phistwrapper.h	(revision 3505)
+++ trunk/SophyaPI/PIext/phistwrapper.h	(revision 3520)
@@ -99,4 +99,6 @@
   // Identique a l'operateur ()(i)
   virtual double Value(int i, int j) { return (*this)(i, j); }
+  // Calcule la moyenne des bins entre (ix1,jy1) <= (ix2, jy2)
+  virtual double MeanVal(int ix1, int ix2, int jy1, int jy2);
 
   // Methode de mise a jour du contenu 
Index: trunk/SophyaPI/PIext/pihisto2d.cc
===================================================================
--- trunk/SophyaPI/PIext/pihisto2d.cc	(revision 3505)
+++ trunk/SophyaPI/PIext/pihisto2d.cc	(revision 3520)
@@ -23,4 +23,17 @@
 P2DHistoWrapper::~P2DHistoWrapper()
 {
+}
+
+
+double P2DHistoWrapper::MeanVal(int ix1, int ix2, int jy1, int jy2)
+{
+  int ec;
+  if (ix1>ix2) { ec=ix1; ix1=ix2; ix2=ec; }
+  if (jy1>jy2) { ec=jy1; jy1=jy2; jy2=ec; }    
+  double ss = 0.;
+  for(int j=jy1; j<=jy2; j++) 
+    for(int i=ix1; i<=ix2; i++)  ss += (double)((*this)(i, j));
+  ss /= (double)((jy2-jy1+1)*(ix2-ix1+1));
+  return ss;     
 }
 
Index: trunk/SophyaPI/PIext/pimgadapter.h
===================================================================
--- trunk/SophyaPI/PIext/pimgadapter.h	(revision 3505)
+++ trunk/SophyaPI/PIext/pimgadapter.h	(revision 3520)
@@ -32,4 +32,15 @@
   virtual 	  ~ImageAdapter() { if (aDel) delete mImg; }
   virtual double  Value(int ix, int iy) { return((*mImg)(ix, iy)); }
+  virtual double  MeanVal(int ix1, int ix2, int jy1, int jy2)  
+    {
+    int ec;
+    if (ix1>ix2) { ec=ix1; ix1=ix2; ix2=ec; }
+    if (jy1>jy2) { ec=jy1; jy1=jy2; jy2=ec; }    
+    double ss = 0.;
+    for(int j=jy1; j<=jy2; j++) 
+      for(int i=ix1; i<=ix2; i++)  ss += (double)((*mImg)(i, j));
+    ss /= (double)((jy2-jy1+1)*(ix2-ix1+1));
+    return ss;  
+    }   
 
 protected :
Index: trunk/SophyaPI/PIext/pitvmaad.cc
===================================================================
--- trunk/SophyaPI/PIext/pitvmaad.cc	(revision 3505)
+++ trunk/SophyaPI/PIext/pitvmaad.cc	(revision 3520)
@@ -71,4 +71,19 @@
 
 /* --Methode-- */
+template <class T> 
+double POTMatrixAdapter<T>::MeanVal(int ix1, int ix2, int jy1, int jy2)
+{
+int ec;
+if (ix1>ix2) { ec=ix1; ix1=ix2; ix2=ec; }
+if (jy1>jy2) { ec=jy1; jy1=jy2; jy2=ec; }    
+double ss = 0.;
+for(int j=jy1; j<=jy2; j++) 
+  for(int i=ix1; i<=ix2; i++)  ss += (double)((*mMtx)(j, i));
+ss /= (double)((jy2-jy1+1)*(ix2-ix1+1));
+return ss;  
+}   
+
+
+/* --Methode-- */
 DECL_TEMP_SPEC  /* equivalent a template <> , pour SGI-CC en particulier */
 double POTMatrixAdapter< complex<float> >::Value(int ix, int iy)
@@ -89,4 +104,32 @@
 return(sqrt(re*re+im*im));
 }
+
+/* --Methode-- */
+DECL_TEMP_SPEC  /* equivalent a template <> , pour SGI-CC en particulier */
+double POTMatrixAdapter< complex<float> >::MeanVal(int ix1, int ix2, int jy1, int jy2)
+{
+int ec;
+if (ix1>ix2) { ec=ix1; ix1=ix2; ix2=ec; }
+if (jy1>jy2) { ec=jy1; jy1=jy2; jy2=ec; }    
+complex<float> ss = 0.;
+for(int j=jy1; j<=jy2; j++) 
+  for(int i=ix1; i<=ix2; i++)  ss += (*mMtx)(j, i);
+ss /= (double)((jy2-jy1+1)*(ix2-ix1+1));
+return sqrt(ss.real()*ss.real()+ss.imag()*ss.imag());  
+}   
+
+/* --Methode-- */
+DECL_TEMP_SPEC  /* equivalent a template <> , pour SGI-CC en particulier */
+double POTMatrixAdapter< complex<double> >::MeanVal(int ix1, int ix2, int jy1, int jy2)
+{
+int ec;
+if (ix1>ix2) { ec=ix1; ix1=ix2; ix2=ec; }
+if (jy1>jy2) { ec=jy1; jy1=jy2; jy2=ec; }    
+complex<double> ss = 0.;
+for(int j=jy1; j<=jy2; j++) 
+  for(int i=ix1; i<=ix2; i++)  ss += (*mMtx)(j, i);
+ss /= (double)((jy2-jy1+1)*(ix2-ix1+1));
+return sqrt(ss.real()*ss.real()+ss.imag()*ss.imag());  
+}   
 
 #ifdef __CXX_PRAGMA_TEMPLATES__
Index: trunk/SophyaPI/PIext/pitvmaad.h
===================================================================
--- trunk/SophyaPI/PIext/pitvmaad.h	(revision 3505)
+++ trunk/SophyaPI/PIext/pitvmaad.h	(revision 3520)
@@ -38,4 +38,5 @@
   virtual         ~POTMatrixAdapter();
   virtual double  Value(int ix, int iy);
+  virtual double  MeanVal(int ix1, int ix2, int jy1, int jy2);
 
 protected:
