Index: trunk/SophyaLib/HiStats/Makefile
===================================================================
--- trunk/SophyaLib/HiStats/Makefile	(revision 1256)
+++ trunk/SophyaLib/HiStats/Makefile	(revision 1371)
@@ -3,7 +3,7 @@
 all: $(LIB)libHiStats.a
 clean:
-	rm -f $(OBJ)hisprof.o $(OBJ)histinit.o $(OBJ)histos.o $(OBJ)histos2.o $(OBJ)ntuple.o $(OBJ)xntuple.o
+	rm -f $(OBJ)hisprof.o $(OBJ)histinit.o $(OBJ)histos.o $(OBJ)histos2.o $(OBJ)ntupintf.o $(OBJ)ntuple.o $(OBJ)xntuple.o
 	rm -f $(LIB)libHiStats.a
-$(LIB)libHiStats.a : $(OBJ)hisprof.o $(OBJ)histinit.o $(OBJ)histos.o $(OBJ)histos2.o $(OBJ)ntuple.o $(OBJ)xntuple.o
+$(LIB)libHiStats.a : $(OBJ)hisprof.o $(OBJ)histinit.o $(OBJ)histos.o $(OBJ)histos2.o $(OBJ)ntupintf.o $(OBJ)ntuple.o $(OBJ)xntuple.o
 	$(ARCXX) $(ARCXXFLAGS) $@ $?
 ifeq ($(CXX),cxx)
@@ -50,5 +50,5 @@
  $(INC)ndatablock.h \
  $(INC)utilarr.h histos2.h hisprof.h ntuple.h \
- $(INC)ntupintf.h xntuple.h
+ ntupintf.h xntuple.h
 $(OBJ)histos.o: histos.cc $(INC)machdefs.h histos.h \
  $(INC)objfio.h \
@@ -89,4 +89,6 @@
  $(INC)ndatablock.h \
  $(INC)utilarr.h
+$(OBJ)ntupintf.o: ntupintf.cc ntupintf.h \
+ $(INC)machdefs.h
 $(OBJ)ntuple.o: ntuple.cc $(INC)strutil.h \
  $(INC)perrors.h \
@@ -96,6 +98,5 @@
  $(INC)anydataobj.h \
  $(INC)ppersist.h \
- $(INC)gnumd5.h \
- $(INC)ntupintf.h \
+ $(INC)gnumd5.h ntupintf.h \
  $(INC)dvlist.h \
  $(INC)mutyv.h
@@ -104,6 +105,5 @@
  $(INC)pexceptions.h \
  $(INC)gnumd5.h \
- $(INC)perrors.h xntuple.h \
- $(INC)ntupintf.h \
+ $(INC)perrors.h xntuple.h ntupintf.h \
  $(INC)dvlist.h \
  $(INC)objfio.h \
Index: trunk/SophyaLib/HiStats/ntupintf.cc
===================================================================
--- trunk/SophyaLib/HiStats/ntupintf.cc	(revision 1371)
+++ trunk/SophyaLib/HiStats/ntupintf.cc	(revision 1371)
@@ -0,0 +1,189 @@
+
+#include "ntupintf.h"
+#include <stdlib.h>
+#include <stdio.h>
+
+/*!
+   \class SOPHYA::NTupleInterface
+   \ingroup HiStats
+   Interface class (pure virtual) defining generic operations on NTuple,
+   a 2-dimensional data set with named columns
+*/
+
+//++
+// Class	NTupleInterface
+// Lib	Outils++ 
+// include	ntupintf.h
+//
+//	Interface permettant de construire des vues NTuples (tableau lignes-colonnes) 
+//	pour differents objets. Toutes les methodes ont une implementation par defaut. 
+//--
+
+//++
+// NTupleInterface()
+//	Constructeur.
+// virtual ~NTupleInterface()
+//	Destructeur
+// uint_4  NbLines() const 
+//	Nombre de lignes du tableau
+// uint_4  NbColumns() const 
+//	Nombre de colonnes du tableau
+// r_8 *  GetLineD(int n) const
+//	Renvoie un tableau avec le contenu de la ligne "n"
+// r_8	GetCell(int n, int k) const
+//	Renvoie le contenu de la cellule correspondant a la ligne "n"
+//	et colonne "k"
+// r_8  GetCell(int n, string const & nom) const
+//	Renvoie le contenu de la cellule correspondant a la ligne "n"
+//	pour la colonne identifiee par "nom"
+// string  GetCelltoString(int n, int k) const
+//	Renvoie le contenu de la cellule correspondant a la ligne "n"
+//	et colonne "k", sous forme de chaine de caracteres.
+// string  GetCell(int n, string const & nom) const
+//	Renvoie le contenu de la cellule correspondant a la ligne "n"
+//	pour la colonne identifiee par "nom", sous forme de chaine de caracteres.
+// void GetMinMax(int k, double& min, double& max)  const
+//	Renvoie la valeur mini et maxi de la colonne numero "k"
+// void	GetMinMax(string const & nom, double& min, double& max)
+//	Renvoie la valeur mini et maxi de la colonne identifiee par "nom"
+// int  ColumnIndex(string const & nom)  const
+//	Renvoie le numero de colonne identifiee par "nom". Renvoie -1 (negatif)
+//	si colonne "nom" n'existe pas.
+// string ColumnName(int k) const
+//	Renvoie le nom de la colonne numero "k"
+// string VarList_C(const char* nomx=NULL) const
+//	Renvoie une chaine avec les declarations "C" pour les
+//	variables avec les noms de colonnes
+// string  LineHeaderToString()
+//	Renvoie une chaine avec les noms de colonnes, utilisables pour l'impression
+// string  LineToString(int n)
+//	Renvoie une chaine avec le contenu de la ligne "n", utilisable pour l'impression
+//--
+
+/* --Methode-- */
+NTupleInterface::NTupleInterface()
+{
+}
+/* --Methode-- */
+NTupleInterface::~NTupleInterface()
+{
+}
+
+//! Retuns the number of lines (rows) of the data set
+/* --Methode-- */
+uint_4 NTupleInterface::NbLines() const
+{
+return(0);
+}
+
+//! Retuns the number of columns of the data set 
+/* --Methode-- */
+uint_4 NTupleInterface::NbColumns() const
+{
+return(0);
+}
+
+//! Retuns the content of a given line 
+/*! 
+   An array (double *) containg all cells of a given line, converted to 
+   float values is returned
+*/
+/* --Methode-- */
+r_8 * NTupleInterface::GetLineD(int ) const
+{
+return(NULL);
+}
+
+//! Returns the content of a given cell
+/*!
+    The cell is identified by the line and column number. Its content is
+    converted to a floating value.
+*/
+/* --Methode-- */
+r_8 NTupleInterface::GetCell(int , int ) const
+{
+return(0.);
+}
+
+//! Returns the content of a given cell
+/*!
+    The cell is identified by the line number and column name. Its content is
+    converted to a floating value.
+*/
+/* --Methode-- */
+r_8 NTupleInterface::GetCell(int n, string const & nom) const
+{
+return(GetCell(n, ColumnIndex(nom)));
+}
+
+//! Returns the string representation of a given cell
+/*!
+    The cell is identified by the line and column number. Its content is
+    converted to a string.
+*/
+string NTupleInterface::GetCelltoString(int n, int k) const
+{
+char strg[64];
+//sprintf(strg,"C%d= %g\n", k, GetCell(n, k));
+sprintf(strg,"%g\n", GetCell(n, k));
+return(strg);
+}
+
+//! Returns the string representation of a given cell
+/*!
+    The cell is identified by the line number and column name. Its content is
+    converted to a string.
+*/
+string NTupleInterface::GetCelltoString(int n, string const & nom) const
+{
+return(GetCelltoString(n, ColumnIndex(nom)));
+}
+
+//! Returns the minimum and maximum values for a given column
+/* --Methode-- */
+void NTupleInterface::GetMinMax(int , double& min, double& max)   const
+{
+min = max = 0.;
+}
+
+/* --Methode-- */
+//! Returns the minimum and maximum values for a given named column
+void NTupleInterface::GetMinMax(string const & , double& min, double& max)   const
+{
+min = max = 0.;
+}
+
+/* --Methode-- */
+//! Returns the column index given the column name
+int NTupleInterface::ColumnIndex(string const & nom)  const
+{
+return(-1);
+}
+
+/* --Methode-- */
+//! Returns the column name corresponding to a column index.
+string NTupleInterface::ColumnName(int k) const
+{
+return("");
+}
+
+/* --Methode-- */
+string NTupleInterface::VarList_C(const char*) const
+{
+return("");
+}
+
+/* --Methode-- */
+string NTupleInterface::LineHeaderToString() const
+{
+return("");
+}
+
+/* --Methode-- */
+string NTupleInterface::LineToString(int ) const
+{
+return("");
+}
+
+
+
Index: trunk/SophyaLib/HiStats/ntupintf.h
===================================================================
--- trunk/SophyaLib/HiStats/ntupintf.h	(revision 1371)
+++ trunk/SophyaLib/HiStats/ntupintf.h	(revision 1371)
@@ -0,0 +1,51 @@
+// This may look like C code, but it is really -*- C++ -*-
+// Interface de type NTuple           Reza 05/99
+// LAL-IN2P3/CNRS               CEA-DAPNIA      
+
+#ifndef NTUPLEINTERFACE_H_SEEN
+#define NTUPLEINTERFACE_H_SEEN
+
+#include "machdefs.h"
+#include <string>
+
+namespace SOPHYA {  
+
+class NTupleInterface {
+public:
+  			NTupleInterface(); 
+  virtual		~NTupleInterface();
+// Nombre de lignes du NTuple  (Nb d'entrees)  
+  virtual uint_4        NbLines() const ;
+// Nombre de colonnes (nb de variables)
+  virtual uint_4        NbColumns() const ;
+// La ligne numero n, sous forme d'un tableau de double
+  virtual r_8 *         GetLineD(int n) const ;
+// Cellule de la ligne n, colonne k
+  virtual r_8		GetCell(int n, int k) const ;
+// Cellule de la ligne n, colonne nom
+  virtual r_8		GetCell(int n, string const & nom) const ;
+// Cellule de la ligne n, colonne k, converti en chaine de caracteres
+  virtual string	GetCelltoString(int n, int k) const ;
+// Cellule de la ligne n, colonne nom, converti en chaine de caracteres
+  virtual string	GetCelltoString(int n, string const & nom) const ;
+// Min et Max pour la colonne k
+  virtual void		GetMinMax(int k, double& min, double& max)   const ; 
+// Min et Max pour la colonne nom
+  virtual void		GetMinMax(string const & nom, double& min, double& max)   const ;
+// Numero de colonne pour nom 
+  virtual int           ColumnIndex(string const & nom)  const ;
+// Nom de colonne numero k
+  virtual string        ColumnName(int k) const;
+// Declaration des variables style C
+  virtual string	VarList_C(const char* nomx=NULL) const ;
+// Entete et liste de variable, pouvant servir a l'impression
+  virtual string        LineHeaderToString() const;
+// Contenu de la ligne n, pouvant servir a l'impression
+  virtual string        LineToString(int n) const;  
+};
+
+} // namespace SOPHYA
+
+#endif   /*  NTUPLEINTERFACE_H_SEEN  */
+
+
Index: trunk/SophyaLib/HiStats/ntuple.cc
===================================================================
--- trunk/SophyaLib/HiStats/ntuple.cc	(revision 1256)
+++ trunk/SophyaLib/HiStats/ntuple.cc	(revision 1371)
@@ -10,4 +10,11 @@
 #define LENNAME 8
 #define LENNAME1  (LENNAME+1)
+
+/*!
+   \class SOPHYA::NTuple
+   \ingroup HiStats
+   Simple NTuple class (a Table or 2-D data set) with floating value
+   columns. 
+*/
 
 //++
Index: trunk/SophyaLib/HiStats/objlist.list
===================================================================
--- trunk/SophyaLib/HiStats/objlist.list	(revision 1256)
+++ trunk/SophyaLib/HiStats/objlist.list	(revision 1371)
@@ -3,4 +3,5 @@
 histos.o
 histos2.o
+ntupintf.o
 ntuple.o
 xntuple.o
Index: trunk/SophyaLib/HiStats/xntuple.cc
===================================================================
--- trunk/SophyaLib/HiStats/xntuple.cc	(revision 1256)
+++ trunk/SophyaLib/HiStats/xntuple.cc	(revision 1371)
@@ -13,4 +13,12 @@
 #define MAXLEN 128
 #define BADVAL -1.e19
+
+/*!
+   \class SOPHYA::XNTuple
+   \ingroup HiStats
+   NTuple class (a Table or 2-D data set) with the possibility of having
+   columns with int, float or string type content. In addition, this class
+   can handle large data sets, using swap space on disk.
+*/
 
 //++
