Index: trunk/SophyaLib/BaseTools/dvlist.cc
===================================================================
--- trunk/SophyaLib/BaseTools/dvlist.cc	(revision 1404)
+++ trunk/SophyaLib/BaseTools/dvlist.cc	(revision 1405)
@@ -53,5 +53,7 @@
    used to represent FITS headers. The class \b SOPHYA::ObjFileIO<DVList>
    handles serialisation for DVList. (See SOPHYA::PPersist ).
-   
+   \sa SOPHYA::ObjFileIO<DVList>
+
+   \code
    //  ------- Using DVList objects ------ 
    DVList  dvl;
@@ -76,5 +78,4 @@
 
    \endcode
-   \sa SOPHYA::ObjFileIO<DVList>
 */
 
Index: trunk/SophyaLib/HiStats/ntuple.cc
===================================================================
--- trunk/SophyaLib/HiStats/ntuple.cc	(revision 1404)
+++ trunk/SophyaLib/HiStats/ntuple.cc	(revision 1405)
@@ -16,4 +16,24 @@
    Simple NTuple class (a Table or 2-D data set) with floating value
    columns. 
+   \sa SOPHYA::ObjFileIO<NTuple>
+
+   \code
+   #include "ntuple.h"
+   // ...
+   char * names[3] = {"XPos", "YPos", "Val"};
+   // NTuple (Table) creation with 3 columns
+   NTuple  nt(3, names);
+   // Filling the NTuple
+   r_4 x[3];
+   for(int i=0; i<63; i++) {
+     x[0] = (i%9)-4.;  x[1] = (i/9)-3.;  x[2] = x[0]*x[0]+x[1]*x[1];
+     nt.Fill(x);
+   }
+   // Printing table info
+   cout << nt ;
+   // Saving object into a PPF file
+   POutPersist po("nt.ppf");
+   po << nt ;
+   \endcode
 */
 
@@ -32,4 +52,5 @@
 
 /* --Methode-- */
+//! Default constructor
 //++
 NTuple::NTuple()
@@ -46,4 +67,11 @@
 
 
+//! Constructor with specification of number of columns and column name
+/*!
+  \param nvar : Number of columns in the table 
+  \param noms : Array of column names (length(name) < 8 characters) 
+  \param blk : Optional argument specifying number of table lines
+  in a given data block
+ */
 //++
 NTuple::NTuple(int nvar, char** noms, int blk)
@@ -77,4 +105,5 @@
 }
 
+//! Copy constructor - Copies the table definition and associated data 
 //                                       cmv 8/10/99
 //++
@@ -108,4 +137,5 @@
 
 /* --Methode-- */
+//! Constructor with table initialized from a PPF file
 //++
 NTuple::NTuple(char *flnm)
@@ -131,4 +161,5 @@
 
 /* --Methode-- */
+//! Clear the data table definition and deletes the associated data
 void NTuple::Clean()
 {
@@ -149,4 +180,5 @@
 
 /* --Methode--        cmv 08/10/99 */
+//! = operator, copies the data table definition and its contents
 //++
 NTuple& NTuple::operator = (const NTuple& NT)
@@ -181,4 +213,8 @@
 
 /* --Methode-- */
+//! Adds an entry (a line) to the table
+/*!
+  \param x : content of the line to be appended to the table
+ */
 //++
 void  NTuple::Fill(r_4* x)
@@ -317,4 +353,5 @@
 
 /* --Methode-- */
+//! Prints table definition and number of entries 
 //++
 void  NTuple::Show(ostream& os)  const
@@ -339,4 +376,9 @@
 
 /* --Methode-- */
+//! Fills the table, reading lines from an ascii file
+/*!
+  \param fn : file name
+  \param defval : default value for empty cells in the ascii file 
+ */
 //++
 int  NTuple::FillFromASCIIFile(string const& fn, float defval)
@@ -544,4 +586,9 @@
 }
 
+/*!
+   \class SOPHYA::ObjFileIO<NTuple>
+   \ingroup HiStats
+   Persistence (serialisation) handler for class NTuple
+*/
 
 /* --Methode-- */ 
Index: trunk/SophyaLib/HiStats/ntuple.h
===================================================================
--- trunk/SophyaLib/HiStats/ntuple.h	(revision 1404)
+++ trunk/SophyaLib/HiStats/ntuple.h	(revision 1405)
@@ -97,9 +97,12 @@
 };
 
+/*! Prints table information on stream \b s (nt.Show(os)) */
 inline ostream& operator << (ostream& s, NTuple const & nt)
   {  nt.Show(s);  return(s);  }
 
+/*! Writes the object in the POutPersist stream \b os */
 inline POutPersist& operator << (POutPersist& os, NTuple & obj)
 { ObjFileIO<NTuple> fio(&obj);  fio.Write(os);  return(os); }
+/*! Reads the object from the PInPersist stream \b is */
 inline PInPersist& operator >> (PInPersist& is, NTuple & obj)
 { ObjFileIO<NTuple> fio(&obj);  fio.Read(is);  return(is); }
Index: trunk/SophyaLib/HiStats/xntuple.cc
===================================================================
--- trunk/SophyaLib/HiStats/xntuple.cc	(revision 1404)
+++ trunk/SophyaLib/HiStats/xntuple.cc	(revision 1405)
@@ -20,4 +20,30 @@
    columns with int, float or string type content. In addition, this class
    can handle large data sets, using swap space on disk.
+   \sa SOPHYA::ObjFileIO<XNTuple>
+
+   \code
+   #include "xntuple.h"
+   // ...
+   char * names[4] = {"X", "X2", "XInt","XStr"};
+   // XNTuple (Table) creation with 4 columns, of integer, 
+   // double(2) and string type
+   XNTuple  xnt(2,0,1,1, names);
+   // Filling the NTuple
+   r_8 xd[2];
+   int_4 xi[2];
+   char xss[2][32];
+   char * xs[2] = {xss[0], xss[1]} ;
+   for(int i=0; i<50; i++) {
+     xi[0] = i;  xd[0] = i+0.5;  xd[1] = xd[0]*xd[0];
+     sprintf(xs[0],"X=%g", xd[0]);
+     xnt.Fill(xd, NULL, xi, xs);
+   }
+   // Printing table info
+   cout << xnt ;
+   // Saving object into a PPF file
+   POutPersist po("xnt.ppf");
+   po << xnt ;
+   \endcode
+   
 */
 
@@ -218,4 +244,16 @@
 //--
 
+//! Constructor with specification colum types and names
+/*!
+  \param ndvar : Number of columns with type double (r_8)
+  \param nfvar : Number of columns with type float (r_4)
+  \param nivar : Number of columns with type integer (int_4)
+  \param nsvar : Number of columns with type string
+  \param vnames : Column names (in the order r_8 r_4 int_4 string)
+  (colum names are limited to 31 characters)
+  \param blk : data block size (in number of table lines)
+  \param maxblk : Maximum number of data block in memory
+  \param strsz : string length (for string type columns)
+ */
 XNTuple::XNTuple(int ndvar, int nfvar, int nivar, int nsvar, 
 		   char** vnames, 
@@ -249,4 +287,5 @@
 
 
+//! Constructor with table initialized from a PPF file
 XNTuple::XNTuple(string const& flnm) 
     : mNEnt(0), mNBlk(0), mNSwBlk(0), 
@@ -268,4 +307,5 @@
 
 
+//! Copy constructor - Copies the table definition and associated data 
 XNTuple::XNTuple(XNTuple const& nt) 
     : mNEnt(0), mNBlk(0), mNSwBlk(0), 
@@ -294,4 +334,5 @@
 
 
+//! Clear the data table definition and deletes the associated data
 void XNTuple::clean()
 {
@@ -341,4 +382,11 @@
 //	Opérateur égal (=) , copie "nt" dans le premier NTuple
 //--
+//! Appends an entry (line) to the table
+/*!
+  \param d_data : double (r_8) line elements
+  \param f_data : float (r_4) line elements
+  \param i_data : integer (int_4) line elements
+  \param s_data : string line elements
+ */
 void XNTuple::Fill(r_8* d_data, r_4* f_data, int_4* i_data, char** s_data) 
 {
@@ -552,4 +600,5 @@
 //--
 
+//! Returns the associated DVList object
 DVList&  XNTuple::Info()
 {
@@ -597,4 +646,5 @@
 
 
+//! Prints table definition and number of entries 
 void   XNTuple::Show(ostream& os) const 
 {
@@ -636,4 +686,5 @@
 }
 
+//! NOT YET IMPLEMENTED ! - Fills table from an ascii file
 int    XNTuple::FillFromASCIIFile(string const& fn, r_8 ddval,  r_4 dfval,
                                         int dival, const char * dsval)
@@ -646,4 +697,5 @@
 
 
+//! Defines swap file path for XNTuple objects (Default=/tmp)
 void  XNTuple::SetSwapPath(char* p) 
 {
@@ -843,4 +895,9 @@
 }
 
+/*!
+   \class SOPHYA::ObjFileIO<XNTuple>
+   \ingroup HiStats
+   Persistence (serialisation) handler for class XNTuple
+*/
 
 void   ObjFileIO<XNTuple>::WriteSelf(POutPersist& ppout) const 
Index: trunk/SophyaLib/HiStats/xntuple.h
===================================================================
--- trunk/SophyaLib/HiStats/xntuple.h	(revision 1404)
+++ trunk/SophyaLib/HiStats/xntuple.h	(revision 1405)
@@ -159,10 +159,12 @@
 }; 
 
-
+/*! Prints table information on stream \b s (nt.Show(os)) */
 inline ostream& operator << (ostream& s, XNTuple const & nt)
   {  nt.Show(s);  return(s);  }
 
+/*! Writes the object in the POutPersist stream \b os */
 inline POutPersist& operator << (POutPersist& os, XNTuple & obj)
 { ObjFileIO<XNTuple> fio(&obj);  fio.Write(os);  return(os); }
+/*! Reads the object from the PInPersist stream \b is */
 inline PInPersist& operator >> (PInPersist& is, XNTuple & obj)
 { ObjFileIO<XNTuple> fio(&obj);  fio.Read(is);  return(is); }
Index: trunk/SophyaLib/NTools/fftpserver.cc
===================================================================
--- trunk/SophyaLib/NTools/fftpserver.cc	(revision 1404)
+++ trunk/SophyaLib/NTools/fftpserver.cc	(revision 1405)
@@ -15,6 +15,4 @@
 necessarily correspond with the equivalent fftpack function.  For example,
 fftpack "forward" transformations are in fact inverse fourier transformations.
-Otherwise, the output is in the fftpack format.
-
 
 Due to the way that fftpack manages
@@ -23,4 +21,19 @@
 of differing length, it may be more efficient to create an fftserver object
 for each length.
+
+  \code
+  #include "fftpserver.h"
+  // ...
+  TVector<r_8> in(32);
+  TVector< complex<r_8> > out;
+  in = RandomSequence();
+  FFTPackServer ffts;
+  ffts.setNormalize(true);  // To have normalized transforms
+  cout << " FFTServer info string= " << ffts.getInfo() << endl;
+  cout << "in= " << in << endl;
+  cout << " Calling ffts.FFTForward(in, out) : " << endl;
+  ffts.FFTForward(in, out);
+  cout << "out= " << out << endl;
+  \endcode
 */
 
Index: trunk/SophyaLib/NTools/fftservintf.cc
===================================================================
--- trunk/SophyaLib/NTools/fftservintf.cc	(revision 1404)
+++ trunk/SophyaLib/NTools/fftservintf.cc	(revision 1405)
@@ -6,4 +6,45 @@
   \ingroup NTools
   Defines the interface for FFT (Fast Fourier Transform) operations.
+  Definitions : 
+    - Sampling period \b T
+    - Sampling frequency \b fs=1/T
+    - Total number of samples \b N
+    - Frequency step in Fourier space \b =fs/N=1/(N*T)
+    - Component frequencies
+        - k=0      ->  0
+	- k=1      ->  1/(N*T)
+	- k        ->  k/(N*T)
+	- k=N/2    ->  1/(2*T)   (Nyquist frequency)
+	- k>N/2    ->  k/(N*T)   (or negative frequency -(N-k)/(N*T))
+
+  For a sampling period T=1, the computed Fourier components correspond to :
+  \verbatim
+  0  1/N  2/N  ... 1/2  1/2+1/N  1/2+2/N ... 1-2/N  1-1/N
+  0  1/N  2/N  ... 1/2                   ...  -2/N   -1/N
+  \endverbatim
+
+  For complex one-dimensional transforms:
+  \f[
+  out(i) = F_{norm} \Sigma_{j} \ e^{-2 \pi \sqrt{-1} \ i \  j} \ {\rm (forward)}
+  \f]
+  \f[
+  out(i) = F_{norm} \Sigma_{j} \ e^{2 \pi \sqrt{-1} \ i \  j} \ {\rm (backward)}
+  \f]
+  i,j= 0..N-1 , where N is the input or the output array size.
+
+  For complex multi-dimensional transforms:
+  \f[
+  out(i1,i2,...,id) = F_{norm} \Sigma_{j1} \Sigma_{j2} ... \Sigma_{jd} \ 
+  e^{-2 \pi \sqrt{-1} \ i1 \ j1} ... e^{-2 \pi \sqrt{-1} \ id \ jd} \ {\rm (forward)}
+  \f]
+  \f[
+  out(i1,i2,...,id) = F_{norm} \Sigma_{j1} \Sigma_{j2} ... \Sigma_{jd} \ 
+  e^{2 \pi \sqrt{-1} \ i1 \ j1} ... e^{2 \pi \sqrt{-1} \ id \ jd} \ {\rm (backward)}
+  \f]
+
+  For real forward transforms, the input array is real, and
+  the output array complex, with Fourier components up to k=N/2.
+  For real backward transforms, the input array is complex and
+  the output array is real. 
 */
 
@@ -23,4 +64,9 @@
 
 /* --Methode-- */
+//! Forward Fourier transform for double precision complex data 
+/*!
+  \param in : Input complex array
+  \param out : Output complex array
+ */
 void FFTServerInterface::FFTForward(TArray< complex<r_8> > const &, TArray< complex<r_8> > &)
 {
@@ -29,4 +75,9 @@
 
 /* --Methode-- */
+//! Backward (inverse) Fourier transform for double precision complex data 
+/*!
+  \param in : Input complex array
+  \param out : Output complex array
+ */
 void FFTServerInterface::FFTBackward(TArray< complex<r_8> > const &, TArray< complex<r_8> > &)
 {
@@ -35,4 +86,9 @@
 
 /* --Methode-- */
+//! Forward Fourier transform for double precision real input data
+/*!
+  \param in : Input real array
+  \param out : Output complex array
+ */
 void FFTServerInterface::FFTForward(TArray< r_8 > const &, TArray< complex<r_8> > &)
 {
@@ -41,4 +97,10 @@
 
 /* --Methode-- */
+//! Backward (inverse) Fourier transform for double precision real output data 
+/*!
+  \param in : Input complex array
+  \param out : Output real array
+  \param usoutsz : if true, use the output array size for computing the inverse FFT.
+ */
 void FFTServerInterface::FFTBackward(TArray< complex<r_8> > const &, TArray< r_8 > &, bool)
 {
@@ -50,4 +112,9 @@
 
 /* --Methode-- */
+//! Forward Fourier transform for complex data 
+/*!
+  \param in : Input complex array
+  \param out : Output complex array
+ */
 void FFTServerInterface::FFTForward(TArray< complex<r_4> > const &, TArray< complex<r_4> > &)
 {
@@ -56,4 +123,9 @@
 
 /* --Methode-- */
+//! Backward (inverse) Fourier transform for complex data 
+/*!
+  \param in : Input complex array
+  \param out : Output complex array
+ */
 void FFTServerInterface::FFTBackward(TArray< complex<r_4> > const &, TArray< complex<r_4> > &)
 {
@@ -62,4 +134,9 @@
 
 /* --Methode-- */
+//! Forward Fourier transform for real input data
+/*!
+  \param in : Input real array
+  \param out : Output complex array
+ */
 void FFTServerInterface::FFTForward(TArray< r_4 > const &, TArray< complex<r_4> > &)
 {
@@ -68,4 +145,10 @@
 
 /* --Methode-- */
+//! Backward (inverse) Fourier transform for real output data 
+/*!
+  \param in : Input complex array
+  \param out : Output real array
+  \param usoutsz : if true, use the output array size for computing the inverse FFT.
+ */
 void FFTServerInterface::FFTBackward(TArray< complex<r_4> > const &, TArray< r_4 > &, bool)
 {
@@ -76,4 +159,11 @@
 
 /* --Methode-- */
+/*!
+  \class SOPHYA::FFTArrayChecker
+  \ingroup NTools
+  Service class for checking array size and resizing output arrays,
+  to be used by FFTServer classes
+*/
+
 template <class T>
 FFTArrayChecker<T>::FFTArrayChecker(string msg, bool checkpack, bool onedonly)
Index: trunk/SophyaLib/NTools/fftservintf.h
===================================================================
--- trunk/SophyaLib/NTools/fftservintf.h	(revision 1404)
+++ trunk/SophyaLib/NTools/fftservintf.h	(revision 1405)
@@ -27,6 +27,9 @@
   virtual FFTServerInterface * Clone() = 0;
 
+//! Set/clear the flag for normalizing Fourier transforms.
   inline void setNormalize(bool fg=false) { _fgnorm = fg; }
+//! Returns the status of normalization flag for the server
   inline bool getNormalize() const { return(_fgnorm); } 
+//! Returns the information string associated with the server
   inline string getInfo() const { return _info; }
 
@@ -53,5 +56,4 @@
 };
 
-} // Fin du namespace
 
 template <class T> 
@@ -79,3 +81,5 @@
 };
 
+} // Fin du namespace
+
 #endif
