Index: trunk/SophyaLib/NTools/Makefile
===================================================================
--- trunk/SophyaLib/NTools/Makefile	(revision 1109)
+++ trunk/SophyaLib/NTools/Makefile	(revision 1110)
@@ -3,7 +3,7 @@
 all: $(LIB)libNTools.a
 clean:
-	rm -f $(OBJ)cimage.o $(OBJ)cspline.o $(OBJ)datatypes.o $(OBJ)dates.o $(OBJ)difeq.o $(OBJ)dynccd.o $(OBJ)fct1dfit.o $(OBJ)fct2dfit.o $(OBJ)fftmserver.o $(OBJ)fftpserver.o $(OBJ)fftserver.o $(OBJ)fftservintf.o $(OBJ)generaldata.o $(OBJ)generalfit.o $(OBJ)imageop.o $(OBJ)integ.o $(OBJ)median.o $(OBJ)ntoolsinit.o $(OBJ)ntupintf.o $(OBJ)objfitter.o $(OBJ)perandom.o $(OBJ)poly.o $(OBJ)rk4cdifeq.o $(OBJ)rzimage.o $(OBJ)simplesort.o $(OBJ)tabmath.o $(OBJ)datime.o $(OBJ)fftmayer_r4.o $(OBJ)fftmayer_r8.o $(OBJ)fftpackc.o $(OBJ)matxop.o $(OBJ)nbmath.o $(OBJ)nbtri.o
+	rm -f $(OBJ)cimage.o $(OBJ)cspline.o $(OBJ)datatypes.o $(OBJ)dates.o $(OBJ)difeq.o $(OBJ)dynccd.o $(OBJ)fct1dfit.o $(OBJ)fct2dfit.o $(OBJ)fftmserver.o $(OBJ)fftpserver.o $(OBJ)fftserver.o $(OBJ)fftservintf.o $(OBJ)generaldata.o $(OBJ)generalfit.o $(OBJ)imageop.o $(OBJ)integ.o $(OBJ)median.o $(OBJ)ntoolsinit.o $(OBJ)ntupintf.o $(OBJ)objfitter.o $(OBJ)perandom.o $(OBJ)poly.o $(OBJ)rk4cdifeq.o $(OBJ)simplesort.o $(OBJ)tabmath.o $(OBJ)datime.o $(OBJ)fftmayer_r4.o $(OBJ)fftmayer_r8.o $(OBJ)fftpackc.o $(OBJ)matxop.o $(OBJ)nbmath.o $(OBJ)nbtri.o
 	rm -f $(LIB)libNTools.a
-$(LIB)libNTools.a : $(OBJ)cimage.o $(OBJ)cspline.o $(OBJ)datatypes.o $(OBJ)dates.o $(OBJ)datime.o $(OBJ)difeq.o $(OBJ)dynccd.o $(OBJ)fct1dfit.o $(OBJ)fct2dfit.o $(OBJ)fftmayer_r4.o $(OBJ)fftmayer_r8.o $(OBJ)fftmserver.o $(OBJ)fftpackc.o $(OBJ)fftpserver.o $(OBJ)fftserver.o $(OBJ)fftservintf.o $(OBJ)generaldata.o $(OBJ)generalfit.o $(OBJ)imageop.o $(OBJ)integ.o $(OBJ)matxop.o $(OBJ)median.o $(OBJ)nbmath.o $(OBJ)nbtri.o $(OBJ)ntoolsinit.o $(OBJ)ntupintf.o $(OBJ)objfitter.o $(OBJ)perandom.o $(OBJ)poly.o $(OBJ)rk4cdifeq.o $(OBJ)rzimage.o $(OBJ)simplesort.o $(OBJ)tabmath.o
+$(LIB)libNTools.a : $(OBJ)cimage.o $(OBJ)cspline.o $(OBJ)datatypes.o $(OBJ)dates.o $(OBJ)datime.o $(OBJ)difeq.o $(OBJ)dynccd.o $(OBJ)fct1dfit.o $(OBJ)fct2dfit.o $(OBJ)fftmayer_r4.o $(OBJ)fftmayer_r8.o $(OBJ)fftmserver.o $(OBJ)fftpackc.o $(OBJ)fftpserver.o $(OBJ)fftserver.o $(OBJ)fftservintf.o $(OBJ)generaldata.o $(OBJ)generalfit.o $(OBJ)integ.o $(OBJ)matxop.o $(OBJ)median.o $(OBJ)nbmath.o $(OBJ)nbtri.o $(OBJ)ntoolsinit.o $(OBJ)ntupintf.o $(OBJ)objfitter.o $(OBJ)perandom.o $(OBJ)poly.o $(OBJ)rk4cdifeq.o $(OBJ)simplesort.o $(OBJ)tabmath.o
 	$(ARCXX) $(ARCXXFLAGS) $@ $?
 ifeq ($(CXX),cxx)
@@ -11,35 +11,36 @@
 endif 
  
-$(OBJ)cimage.o: cimage.cc $(INC)machdefs.h \
- $(INC)perrors.h \
- $(INC)pexceptions.h cimage.h rzimage.h \
- rzvect.h datatypes.h $(INC)ppersist.h \
- $(INC)gnumd5.h \
- $(INC)dvlist.h \
- $(INC)objfio.h \
- $(INC)anydataobj.h fct1dfit.h generalfit.h \
- $(INC)tvector.h \
- $(INC)tmatrix.h \
- $(INC)tarray.h \
- $(INC)basarr.h \
- $(INC)ndatablock.h \
- $(INC)utilarr.h generaldata.h ntupintf.h \
- poly.h peida.h $(INC)utils.h fmath.h \
- $(INC)histos.h \
- $(INC)peida.h nbconst.h
-$(OBJ)cspline.o: cspline.cc $(INC)machdefs.h \
- nbtri.h cspline.h $(INC)pexceptions.h
+$(OBJ)cimage.o: cimage.cc \
+ $(INC)machdefs.h \
+ $(INC)pexceptions.h cimage.h \
+ $(INC)tmatrix.h \
+ $(INC)tarray.h \
+ $(INC)basarr.h \
+ $(INC)anydataobj.h \
+ $(INC)mutyv.h \
+ $(INC)dvlist.h \
+ $(INC)objfio.h \
+ $(INC)ppersist.h \
+ $(INC)gnumd5.h \
+ $(INC)ndatablock.h \
+ $(INC)utilarr.h
+$(OBJ)cspline.o: cspline.cc \
+ $(INC)machdefs.h nbtri.h \
+ cspline.h $(INC)pexceptions.h
 $(OBJ)datatypes.o: datatypes.cc datatypes.h \
  $(INC)machdefs.h
-$(OBJ)dates.o: dates.cc $(INC)machdefs.h \
+$(OBJ)dates.o: dates.cc \
+ $(INC)machdefs.h \
  $(INC)perrors.h \
  $(INC)pexceptions.h dates.h
-$(OBJ)difeq.o: difeq.cc difeq.h $(INC)machdefs.h \
- $(INC)pexceptions.h \
- $(INC)tvector.h \
- $(INC)tmatrix.h \
- $(INC)tarray.h \
- $(INC)basarr.h \
- $(INC)anydataobj.h \
+$(OBJ)difeq.o: difeq.cc difeq.h \
+ $(INC)machdefs.h \
+ $(INC)pexceptions.h \
+ $(INC)tvector.h \
+ $(INC)tmatrix.h \
+ $(INC)tarray.h \
+ $(INC)basarr.h \
+ $(INC)anydataobj.h \
+ $(INC)mutyv.h \
  $(INC)dvlist.h \
  $(INC)objfio.h \
@@ -49,5 +50,6 @@
  $(INC)utilarr.h \
  $(INC)ctimer.h
-$(OBJ)dynccd.o: dynccd.cc $(INC)machdefs.h fmath.h \
+$(OBJ)dynccd.o: dynccd.cc \
+ $(INC)machdefs.h fmath.h \
  perandom.h $(INC)histos.h \
  $(INC)objfio.h \
@@ -64,40 +66,48 @@
  $(INC)tarray.h \
  $(INC)basarr.h \
+ $(INC)mutyv.h \
  $(INC)dvlist.h \
  $(INC)ndatablock.h \
  $(INC)utilarr.h nbrandom.h \
- $(INC)srandgen.h cimage.h rzimage.h rzvect.h \
- datatypes.h dynccd.h
-$(OBJ)fct1dfit.o: fct1dfit.cc $(INC)machdefs.h \
- fct1dfit.h generalfit.h $(INC)pexceptions.h \
- $(INC)tvector.h \
- $(INC)tmatrix.h \
- $(INC)tarray.h \
- $(INC)basarr.h \
- $(INC)anydataobj.h \
- $(INC)dvlist.h \
- $(INC)objfio.h \
- $(INC)ppersist.h \
- $(INC)gnumd5.h \
- $(INC)ndatablock.h \
- $(INC)utilarr.h generaldata.h ntupintf.h \
- poly.h peida.h $(INC)utils.h \
- $(INC)perrors.h fmath.h nbconst.h tabmath.h
-$(OBJ)fct2dfit.o: fct2dfit.cc $(INC)machdefs.h \
- fct2dfit.h generalfit.h $(INC)pexceptions.h \
- $(INC)tvector.h \
- $(INC)tmatrix.h \
- $(INC)tarray.h \
- $(INC)basarr.h \
- $(INC)anydataobj.h \
- $(INC)dvlist.h \
- $(INC)objfio.h \
- $(INC)ppersist.h \
- $(INC)gnumd5.h \
- $(INC)ndatablock.h \
- $(INC)utilarr.h generaldata.h ntupintf.h \
- poly.h peida.h $(INC)utils.h \
- $(INC)perrors.h fmath.h nbconst.h tabmath.h \
- simps2d.h
+ $(INC)srandgen.h cimage.h \
+ dynccd.h
+$(OBJ)fct1dfit.o: fct1dfit.cc \
+ $(INC)machdefs.h fct1dfit.h \
+ generalfit.h $(INC)pexceptions.h \
+ $(INC)tvector.h \
+ $(INC)tmatrix.h \
+ $(INC)tarray.h \
+ $(INC)basarr.h \
+ $(INC)anydataobj.h \
+ $(INC)mutyv.h \
+ $(INC)dvlist.h \
+ $(INC)objfio.h \
+ $(INC)ppersist.h \
+ $(INC)gnumd5.h \
+ $(INC)ndatablock.h \
+ $(INC)utilarr.h generaldata.h \
+ ntupintf.h poly.h peida.h \
+ $(INC)utils.h \
+ $(INC)perrors.h fmath.h \
+ nbconst.h tabmath.h
+$(OBJ)fct2dfit.o: fct2dfit.cc \
+ $(INC)machdefs.h fct2dfit.h \
+ generalfit.h $(INC)pexceptions.h \
+ $(INC)tvector.h \
+ $(INC)tmatrix.h \
+ $(INC)tarray.h \
+ $(INC)basarr.h \
+ $(INC)anydataobj.h \
+ $(INC)mutyv.h \
+ $(INC)dvlist.h \
+ $(INC)objfio.h \
+ $(INC)ppersist.h \
+ $(INC)gnumd5.h \
+ $(INC)ndatablock.h \
+ $(INC)utilarr.h generaldata.h \
+ ntupintf.h poly.h peida.h \
+ $(INC)utils.h \
+ $(INC)perrors.h fmath.h \
+ nbconst.h tabmath.h simps2d.h
 $(OBJ)fftmserver.o: fftmserver.cc fftmserver.h fftservintf.h \
  $(INC)machdefs.h \
@@ -107,4 +117,5 @@
  $(INC)basarr.h \
  $(INC)anydataobj.h \
+ $(INC)mutyv.h \
  $(INC)dvlist.h \
  $(INC)objfio.h \
@@ -121,4 +132,5 @@
  $(INC)basarr.h \
  $(INC)anydataobj.h \
+ $(INC)mutyv.h \
  $(INC)dvlist.h \
  $(INC)objfio.h \
@@ -135,4 +147,5 @@
  $(INC)basarr.h \
  $(INC)anydataobj.h \
+ $(INC)mutyv.h \
  $(INC)dvlist.h \
  $(INC)objfio.h \
@@ -149,4 +162,5 @@
  $(INC)basarr.h \
  $(INC)anydataobj.h \
+ $(INC)mutyv.h \
  $(INC)dvlist.h \
  $(INC)objfio.h \
@@ -158,20 +172,23 @@
 $(OBJ)generaldata.o: generaldata.cc \
  $(INC)machdefs.h \
- $(INC)strutil.h nbtri.h generalfit.h \
- $(INC)pexceptions.h \
- $(INC)tvector.h \
- $(INC)tmatrix.h \
- $(INC)tarray.h \
- $(INC)basarr.h \
- $(INC)anydataobj.h \
- $(INC)dvlist.h \
- $(INC)objfio.h \
- $(INC)ppersist.h \
- $(INC)gnumd5.h \
- $(INC)ndatablock.h \
- $(INC)utilarr.h generaldata.h ntupintf.h \
- poly.h peida.h $(INC)utils.h \
+ $(INC)strutil.h nbtri.h \
+ generalfit.h $(INC)pexceptions.h \
+ $(INC)tvector.h \
+ $(INC)tmatrix.h \
+ $(INC)tarray.h \
+ $(INC)basarr.h \
+ $(INC)anydataobj.h \
+ $(INC)mutyv.h \
+ $(INC)dvlist.h \
+ $(INC)objfio.h \
+ $(INC)ppersist.h \
+ $(INC)gnumd5.h \
+ $(INC)ndatablock.h \
+ $(INC)utilarr.h generaldata.h \
+ ntupintf.h poly.h peida.h \
+ $(INC)utils.h \
  $(INC)perrors.h fmath.h
-$(OBJ)generalfit.o: generalfit.cc $(INC)machdefs.h \
+$(OBJ)generalfit.o: generalfit.cc \
+ $(INC)machdefs.h \
  $(INC)pexceptions.h generalfit.h \
  $(INC)tvector.h \
@@ -180,33 +197,17 @@
  $(INC)basarr.h \
  $(INC)anydataobj.h \
- $(INC)dvlist.h \
- $(INC)objfio.h \
- $(INC)ppersist.h \
- $(INC)gnumd5.h \
- $(INC)ndatablock.h \
- $(INC)utilarr.h generaldata.h ntupintf.h \
- poly.h peida.h $(INC)utils.h \
+ $(INC)mutyv.h \
+ $(INC)dvlist.h \
+ $(INC)objfio.h \
+ $(INC)ppersist.h \
+ $(INC)gnumd5.h \
+ $(INC)ndatablock.h \
+ $(INC)utilarr.h generaldata.h \
+ ntupintf.h poly.h peida.h \
+ $(INC)utils.h \
  $(INC)perrors.h fmath.h \
  $(INC)sopemtx.h
-$(OBJ)imageop.o: imageop.cc $(INC)machdefs.h \
- simplesort.h peida.h $(INC)utils.h \
- $(INC)perrors.h \
- $(INC)pexceptions.h fmath.h nbmath.h \
- $(INC)smathconst.h \
- $(INC)histos.h \
- $(INC)objfio.h \
- $(INC)anydataobj.h \
- $(INC)ppersist.h \
- $(INC)gnumd5.h \
- $(INC)peida.h \
- $(INC)tvector.h \
- $(INC)tmatrix.h \
- $(INC)tarray.h \
- $(INC)basarr.h \
- $(INC)dvlist.h \
- $(INC)ndatablock.h \
- $(INC)utilarr.h datatypes.h imageop.h \
- cimage.h rzimage.h rzvect.h cspline.h dynccd.h nbtri.h
-$(OBJ)integ.o: integ.cc integ.h $(INC)machdefs.h \
+$(OBJ)integ.o: integ.cc integ.h \
+ $(INC)machdefs.h \
  $(INC)pexceptions.h generalfit.h \
  $(INC)tvector.h \
@@ -215,15 +216,18 @@
  $(INC)basarr.h \
  $(INC)anydataobj.h \
- $(INC)dvlist.h \
- $(INC)objfio.h \
- $(INC)ppersist.h \
- $(INC)gnumd5.h \
- $(INC)ndatablock.h \
- $(INC)utilarr.h generaldata.h ntupintf.h \
- poly.h peida.h $(INC)utils.h \
+ $(INC)mutyv.h \
+ $(INC)dvlist.h \
+ $(INC)objfio.h \
+ $(INC)ppersist.h \
+ $(INC)gnumd5.h \
+ $(INC)ndatablock.h \
+ $(INC)utilarr.h generaldata.h \
+ ntupintf.h poly.h peida.h \
+ $(INC)utils.h \
  $(INC)perrors.h fmath.h
 $(OBJ)median.o: median.cc
-$(OBJ)ntoolsinit.o: ntoolsinit.cc $(INC)machdefs.h \
- ntoolsinit.h $(INC)tarrinit.h \
+$(OBJ)ntoolsinit.o: ntoolsinit.cc \
+ $(INC)machdefs.h ntoolsinit.h \
+ $(INC)tarrinit.h \
  $(INC)sophyainit.h poly.h \
  $(INC)objfio.h \
@@ -238,9 +242,9 @@
  $(INC)tarray.h \
  $(INC)basarr.h \
- $(INC)dvlist.h \
- $(INC)ndatablock.h \
- $(INC)utilarr.h generaldata.h ntupintf.h \
- cimage.h rzimage.h rzvect.h datatypes.h tabmath.h nbconst.h dates.h \
- datime.h
+ $(INC)mutyv.h \
+ $(INC)dvlist.h \
+ $(INC)ndatablock.h \
+ $(INC)utilarr.h generaldata.h \
+ ntupintf.h cimage.h tabmath.h nbconst.h dates.h datime.h
 $(OBJ)ntupintf.o: ntupintf.cc ntupintf.h \
  $(INC)machdefs.h
@@ -251,15 +255,23 @@
  $(INC)basarr.h \
  $(INC)anydataobj.h \
- $(INC)dvlist.h \
- $(INC)objfio.h \
- $(INC)ppersist.h \
- $(INC)pexceptions.h \
- $(INC)gnumd5.h \
- $(INC)ndatablock.h \
- $(INC)utilarr.h \
- $(INC)tvector.h generalfit.h generaldata.h \
- ntupintf.h poly.h peida.h $(INC)utils.h \
- $(INC)perrors.h fmath.h
-$(OBJ)perandom.o: perandom.cc $(INC)machdefs.h \
+ $(INC)mutyv.h \
+ $(INC)dvlist.h \
+ $(INC)objfio.h \
+ $(INC)ppersist.h \
+ $(INC)pexceptions.h \
+ $(INC)gnumd5.h \
+ $(INC)ndatablock.h \
+ $(INC)utilarr.h \
+ $(INC)tvector.h \
+ $(INC)histos.h \
+ $(INC)peida.h \
+ $(INC)utils.h \
+ $(INC)perrors.h \
+ $(INC)fmath.h \
+ $(INC)histos2.h \
+ $(INC)hisprof.h generalfit.h \
+ generaldata.h ntupintf.h poly.h peida.h
+$(OBJ)perandom.o: perandom.cc \
+ $(INC)machdefs.h \
  $(INC)pexceptions.h perandom.h \
  $(INC)histos.h \
@@ -276,10 +288,11 @@
  $(INC)tarray.h \
  $(INC)basarr.h \
+ $(INC)mutyv.h \
  $(INC)dvlist.h \
  $(INC)ndatablock.h \
  $(INC)utilarr.h nbrandom.h \
  $(INC)srandgen.h pemath.h
-$(OBJ)poly.o: poly.cc $(INC)machdefs.h poly.h \
- $(INC)objfio.h \
+$(OBJ)poly.o: poly.cc $(INC)machdefs.h \
+ poly.h $(INC)objfio.h \
  $(INC)anydataobj.h \
  $(INC)ppersist.h \
@@ -292,4 +305,5 @@
  $(INC)tarray.h \
  $(INC)basarr.h \
+ $(INC)mutyv.h \
  $(INC)dvlist.h \
  $(INC)ndatablock.h \
@@ -297,11 +311,13 @@
  $(INC)sopemtx.h \
  $(INC)fioarr.h
-$(OBJ)rk4cdifeq.o: rk4cdifeq.cc $(INC)machdefs.h \
- rk4cdifeq.h difeq.h $(INC)pexceptions.h \
- $(INC)tvector.h \
- $(INC)tmatrix.h \
- $(INC)tarray.h \
- $(INC)basarr.h \
- $(INC)anydataobj.h \
+$(OBJ)rk4cdifeq.o: rk4cdifeq.cc \
+ $(INC)machdefs.h rk4cdifeq.h \
+ difeq.h $(INC)pexceptions.h \
+ $(INC)tvector.h \
+ $(INC)tmatrix.h \
+ $(INC)tarray.h \
+ $(INC)basarr.h \
+ $(INC)anydataobj.h \
+ $(INC)mutyv.h \
  $(INC)dvlist.h \
  $(INC)objfio.h \
@@ -311,29 +327,19 @@
  $(INC)utilarr.h \
  $(INC)ctimer.h
-$(OBJ)rzimage.o: rzimage.cc $(INC)machdefs.h \
- rzimage.h rzvect.h $(INC)pexceptions.h \
- $(INC)perrors.h datatypes.h \
- $(INC)ppersist.h \
- $(INC)gnumd5.h \
- $(INC)dvlist.h \
- $(INC)objfio.h \
- $(INC)anydataobj.h generalfit.h \
- $(INC)tvector.h \
- $(INC)tmatrix.h \
- $(INC)tarray.h \
- $(INC)basarr.h \
- $(INC)ndatablock.h \
- $(INC)utilarr.h generaldata.h ntupintf.h \
- poly.h peida.h $(INC)utils.h fmath.h
-$(OBJ)simplesort.o: simplesort.cc $(INC)machdefs.h \
- simplesort.h peida.h $(INC)utils.h \
+$(OBJ)simplesort.o: simplesort.cc \
+ $(INC)machdefs.h simplesort.h \
+ peida.h $(INC)utils.h \
  $(INC)perrors.h \
  $(INC)pexceptions.h fmath.h
-$(OBJ)tabmath.o: tabmath.cc $(INC)machdefs.h \
- tabmath.h peida.h $(INC)utils.h \
- $(INC)perrors.h \
- $(INC)pexceptions.h fmath.h nbconst.h
-$(OBJ)datime.o: datime.c $(INC)machdefs.h \
- $(INC)strutil.h nbconst.h datime.h
+$(OBJ)tabmath.o: tabmath.cc \
+ $(INC)machdefs.h tabmath.h \
+ peida.h $(INC)utils.h \
+ $(INC)perrors.h \
+ $(INC)pexceptions.h fmath.h \
+ nbconst.h
+$(OBJ)datime.o: datime.c \
+ $(INC)machdefs.h \
+ $(INC)strutil.h nbconst.h \
+ datime.h
 $(OBJ)fftmayer_r4.o: fftmayer_r4.c fftmayer.h \
  $(INC)machdefs.h trigtbl.h
@@ -345,6 +351,8 @@
  $(INC)machdefs.h \
  $(INC)smathconst.h
-$(OBJ)nbmath.o: nbmath.c nbmath.h $(INC)machdefs.h \
- $(INC)smathconst.h matxop.h nbinteg.h \
- nbtri.h
-$(OBJ)nbtri.o: nbtri.c nbtri.h $(INC)machdefs.h
+$(OBJ)nbmath.o: nbmath.c nbmath.h \
+ $(INC)machdefs.h \
+ $(INC)smathconst.h matxop.h \
+ nbinteg.h nbtri.h
+$(OBJ)nbtri.o: nbtri.c nbtri.h \
+ $(INC)machdefs.h
Index: trunk/SophyaLib/NTools/dynccd.cc
===================================================================
--- trunk/SophyaLib/NTools/dynccd.cc	(revision 1109)
+++ trunk/SophyaLib/NTools/dynccd.cc	(revision 1110)
@@ -161,5 +161,5 @@
 /* Nouvelle-Fonction */
 template <class T>
-Image<T>  NoiseImage(Image<T> const & pim, DynCCD const & dynccd)
+Image<T> NoiseImage(Image<T> const & pim, DynCCD const & dynccd)
 
 /* Creation et Calcul d'une image de bruit a partir de l'image */
@@ -203,5 +203,4 @@
 
 #ifdef __CXX_PRAGMA_TEMPLATES__
-
 #pragma define_template NoiseImage<uint_2>
 #pragma define_template NoiseImage<int_4>
@@ -211,29 +210,13 @@
 #pragma define_template ImgAddNoise<int_4>
 #pragma define_template ImgAddNoise<r_4>
-
 #endif
 
-
-#if defined(ANSI_TEMPLATES) 
-template Image<uint_2> * NoiseImage<uint_2>(Image<uint_2> const * , DynCCD const *);
-template Image< int_4> * NoiseImage< int_4>(Image< int_4> const * , DynCCD const *);
-template Image<   r_4> * NoiseImage<   r_4>(Image<   r_4> const * , DynCCD const *);
+#if defined(ANSI_TEMPLATES) || defined(__GNU_TEMPLATES__)
+template Image<uint_2> NoiseImage<uint_2>(Image<uint_2> const& , DynCCD const&);
+template Image< int_4> NoiseImage< int_4>(Image< int_4> const& , DynCCD const&);
+template Image<   r_4> NoiseImage<   r_4>(Image<   r_4> const& , DynCCD const&);
 
 template void ImgAddNoise<uint_2>(Image<uint_2>&, DynCCD const&);
 template void ImgAddNoise< int_4>(Image< int_4>&, DynCCD const&);
 template void ImgAddNoise<   r_4>(Image<   r_4>&, DynCCD const&);
-
 #endif
-
-#if defined(__GNU_TEMPLATES__)
-template Image<uint_2> * NoiseImage(Image<uint_2> const *, DynCCD const *);
-template Image< int_4> * NoiseImage(Image< int_4> const *, DynCCD const *);
-template Image<   r_4> * NoiseImage(Image<   r_4> const *, DynCCD const *);
-
-template void ImgAddNoise(Image<uint_2>&, DynCCD const&);
-template void ImgAddNoise(Image< int_4>&, DynCCD const&);
-template void ImgAddNoise(Image<   r_4>&, DynCCD const&);
-
-#endif
-
-
Index: trunk/SophyaLib/NTools/dynccd.h
===================================================================
--- trunk/SophyaLib/NTools/dynccd.h	(revision 1109)
+++ trunk/SophyaLib/NTools/dynccd.h	(revision 1110)
@@ -17,5 +17,5 @@
   public :
 
-  int_4 TypNoise;        // Type de calcul du bruit 
+  int_4 TypNoise;      // Type de calcul du bruit 
   r_8 MinADU,MaxADU;   // Valeur min et max des pixels 
   r_8 Gain;            // Gain en electron/ADU 
@@ -60,6 +60,3 @@
 }
 
-
-
-
 #endif
Index: trunk/SophyaLib/NTools/generaldata.cc
===================================================================
--- trunk/SophyaLib/NTools/generaldata.cc	(revision 1109)
+++ trunk/SophyaLib/NTools/generaldata.cc	(revision 1110)
@@ -463,5 +463,5 @@
   Impression de l'etat de la structure de donnees
 */
-void GeneralFitData::PrintStatus()
+void GeneralFitData::PrintStatus() const
 {
   cout<<"GeneralFitData:: "<<endl
@@ -475,5 +475,5 @@
   Impression du point i
 */
-void GeneralFitData::PrintData(int i)
+void GeneralFitData::PrintData(int i) const
 {
  ASSERT(i>=0 && i<mNData);
@@ -491,5 +491,5 @@
   Impression des points i1 a i2
 */
-void GeneralFitData::PrintData(int i1,int i2)
+void GeneralFitData::PrintData(int i1,int i2) const
 {
  if(i1<0) i1=0;
@@ -507,5 +507,5 @@
   Impression de tous les points
 */
-void GeneralFitData::PrintData()
+void GeneralFitData::PrintData() const
 {
  ASSERT(mNData>0);
@@ -605,5 +605,5 @@
   \endverbatim
 */
-int GeneralFitData::GetMeanSigma(int var,double& mean,double& sigma,double min,double max)
+int GeneralFitData::GetMeanSigma(int var,double& mean,double& sigma,double min,double max) const
 {
 mean = sigma = 0.;
@@ -649,5 +649,5 @@
 */
 int GeneralFitData::GetMoMeMed(int var,double& mode,double& mean,double& median,
-                               double min,double max,double coeff)
+                               double min,double max,double coeff) const
 {
 mode = mean = median = 0.;
@@ -695,5 +695,5 @@
   Cf description ci-dessus ``GetMoMeMed''.
 */
-int GeneralFitData::GetMode(int var,double& mode,double min,double max,double coeff)
+int GeneralFitData::GetMode(int var,double& mode,double min,double max,double coeff) const
 {
 double mean,median;
@@ -717,5 +717,5 @@
   \endverbatim
 */
-double GeneralFitData::PolFit(int varx,Poly& pol,int degre,bool ey)
+double GeneralFitData::PolFit(int varx,Poly& pol,int degre,bool ey) const
 {
 if(degre<0) return -1.;
@@ -765,5 +765,5 @@
   \endverbatim
 */
-double GeneralFitData::PolFit(int varx,int vary,Poly2& pol,int degre1,int degre2,bool ez)
+double GeneralFitData::PolFit(int varx,int vary,Poly2& pol,int degre1,int degre2,bool ez) const
 {
 if(degre1<0) return -1.;
@@ -802,5 +802,5 @@
   Retourne une classe contenant les residus du fit ``gfit''.
 */
-GeneralFitData GeneralFitData::FitResidus(GeneralFit& gfit)
+GeneralFitData GeneralFitData::FitResidus(GeneralFit& gfit) const
 {
 if(gfit.GetNVar()!=mNVar)
@@ -812,5 +812,5 @@
   Retourne une classe contenant la function du fit ``gfit''.
 */
-GeneralFitData GeneralFitData::FitFunction(GeneralFit& gfit)
+GeneralFitData GeneralFitData::FitFunction(GeneralFit& gfit) const
 {
 if(gfit.GetNVar()!=mNVar)
Index: trunk/SophyaLib/NTools/generaldata.h
===================================================================
--- trunk/SophyaLib/NTools/generaldata.h	(revision 1109)
+++ trunk/SophyaLib/NTools/generaldata.h	(revision 1110)
@@ -65,8 +65,8 @@
   void SetData(int nData,float** xp,float* f,float* err=NULL,float** errxp=NULL);
 
-  void PrintStatus();
-  void PrintData(int i);
-  void PrintData(int i1,int i2);
-  void PrintData();
+  void PrintStatus() const;
+  void PrintData(int i) const;
+  void PrintData(int i1,int i2) const;
+  void PrintData() const;
   void Show(ostream& os) const;
   inline void Show() const {Show(cout);}
@@ -130,16 +130,16 @@
                 {if(i>=0 && i<mNData) return mErr[i]; else return 0.;}
 
-  r_8* GetVec(int n, r_8* ret=NULL)  const;
-  r_4* GetVecR4(int n, r_4* ret=NULL)  const;
+  r_8* GetVec(int n, r_8* ret=NULL) const;
+  r_4* GetVecR4(int n, r_4* ret=NULL) const;
   int GetMnMx(int var,int& imin,int& imax) const;
   int GetMnMx(int var,double& min,double& max) const;
-  int GetMeanSigma(int var,double& mean,double& sigma,double min=1.,double max=-1.);
+  int GetMeanSigma(int var,double& mean,double& sigma,double min=1.,double max=-1.) const;
   int GetMoMeMed(int var,double& mode,double& mean,double& median,
-                 double min=1.,double max=-1.,double coeff=0.8);
-  int GetMode(int var,double& mode,double min=1.,double max=-1.,double coeff=0.8);
-  double PolFit(int varx,Poly& pol,int degre,bool ey=true);
-  double PolFit(int varx,int vary,Poly2& pol,int degre1,int degre2=-1,bool ez=true);
-  GeneralFitData FitResidus(GeneralFit& gfit);
-  GeneralFitData FitFunction(GeneralFit& gfit);
+                 double min=1.,double max=-1.,double coeff=0.8) const;
+  int GetMode(int var,double& mode,double min=1.,double max=-1.,double coeff=0.8) const;
+  double PolFit(int varx,Poly& pol,int degre,bool ey=true) const;
+  double PolFit(int varx,int vary,Poly2& pol,int degre1,int degre2=-1,bool ez=true) const;
+  GeneralFitData FitResidus(GeneralFit& gfit) const;
+  GeneralFitData FitFunction(GeneralFit& gfit) const;
 
 // Declaration de l interface NTuple
Index: trunk/SophyaLib/NTools/objfitter.cc
===================================================================
--- trunk/SophyaLib/NTools/objfitter.cc	(revision 1109)
+++ trunk/SophyaLib/NTools/objfitter.cc	(revision 1110)
@@ -1,3 +1,9 @@
 #include "objfitter.h"
+
+//===========================================================================
+//===========================================================================
+//=========================== ObjectFitter ==================================
+//===========================================================================
+//===========================================================================
 
 TMatrix<r_4>
@@ -58,5 +64,176 @@
 
 
-// ---------------------------------------------------------------------------
+//=============================== Histo =====================================
+/*! Retourne une classe contenant les residus du fit ``gfit''. */
+Histo ObjectFitter::FitResidus(Histo const& hh, GeneralFit& gfit)
+{
+Histo h(hh);
+if(h.NBins()<=0)
+  throw(SzMismatchError("Histo::FitResidus: size mismatch\n"));
+GeneralFunction* f = gfit.GetFunction();
+if(f==NULL)
+  throw(NullPtrError("Histo::FitResidus: NULL pointer\n"));
+TVector<r_8> par = gfit.GetParm();
+for(int_4 i=0;i<h.NBins();i++) {
+  r_8 x =  h.BinCenter(i);
+  h(i) -=  f->Value(&x,par.Data());
+}
+return h;
+}
+
+/*! Retourne une classe contenant la fonction du fit ``gfit''. */
+Histo ObjectFitter::FitFunction(Histo const& hh, GeneralFit& gfit)
+{
+Histo h(hh);
+if(h.NBins()<=0)
+  throw(SzMismatchError("Histo::FitFunction: size mismatch\n"));
+GeneralFunction* f = gfit.GetFunction();
+if(f==NULL)
+  throw(NullPtrError("Histo::FitFunction: NULL pointer\n"));
+TVector<r_8> par = gfit.GetParm();
+for(int_4 i=0;i<h.NBins();i++) {
+  r_8 x =  h.BinCenter(i);
+  h(i) =  f->Value(&x,par.Data());
+}
+return h;
+}
+
+/*!
+  Fit de l'histogramme par ``gfit''.
+  \verbatim
+    typ_err = 0 :
+       - erreur attachee au bin si elle existe
+       - sinon 1
+    typ_err = 1 :
+       - erreur attachee au bin si elle existe
+       - sinon max( sqrt(abs(bin) ,1 )
+    typ_err = 2 :
+       - erreur forcee a 1
+    typ_err = 3 :
+       - erreur forcee a max( sqrt(abs(bin) ,1 )
+    typ_err = 4 :
+       - erreur forcee a 1, nulle si bin a zero.
+    typ_err = 5 :
+       - erreur forcee a max( sqrt(abs(bin) ,1 ),
+         nulle si bin a zero.
+  \endverbatim
+*/
+int_4 ObjectFitter::Fit(Histo const& h, GeneralFit& gfit,unsigned short typ_err)
+{
+if(h.NBins()<=0) return -1000;
+if(typ_err>5) typ_err=0;
+
+GeneralFitData mydata(1,h.NBins());
+
+for(int_4 i=0;i<h.NBins();i++) {
+  r_8 x =  h.BinCenter(i);
+  r_8 f =  h(i);
+  r_8 saf = sqrt(fabs( f)); if(saf<1.) saf=1.;
+  r_8 e=0.;
+  if(typ_err==0)      {if(h.HasErrors()) e=h.Error(i); else e=1.;}
+  else if(typ_err==1) {if(h.HasErrors()) e=h.Error(i); else e=saf;}
+  else if(typ_err==2) e=1.;
+  else if(typ_err==3) e=saf;
+  else if(typ_err==4) e=(f==0.)?0.:1.;
+  else if(typ_err==5) e=(f==0.)?0.:saf;
+  mydata.AddData1(x,f,e);
+}
+
+gfit.SetData(&mydata);
+
+return gfit.Fit();
+}
+
+//============================== Histo2D ====================================
+/*! Retourne une classe contenant les residus du fit ``gfit''. */
+Histo2D ObjectFitter::FitResidus(Histo2D const& hh, GeneralFit& gfit)
+{
+Histo2D h(hh);
+if(h.NBinX()<=0 || h.NBinY()<=0)
+  throw(SzMismatchError("Histo2D::FitResidus: size mismatch\n"));
+GeneralFunction* f = gfit.GetFunction();
+if(f==NULL)
+  throw(NullPtrError("Histo2D::FitResidus: NULL pointer\n"));
+TVector<r_8> par = gfit.GetParm();
+for(int_4 i=0;i<h.NBinX();i++) for(int_4 j=0;j<h.NBinY();j++) {
+  r_8 xc,yc;
+  h.BinCenter(i,j,xc,yc);
+  r_8 x[2] = {xc,yc};
+  h(i,j) -= f->Value(x,par.Data());
+}
+return h;
+}
+
+/*! Retourne une classe contenant la fonction du fit ``gfit''. */
+Histo2D ObjectFitter::FitFunction(Histo2D const& hh, GeneralFit& gfit)
+{
+Histo2D h(hh);
+if(h.NBinX()<=0 || h.NBinY()<=0)
+  throw(SzMismatchError("Histo2D::FitFunction: size mismatch\n"));
+GeneralFunction* f = gfit.GetFunction();
+if(f==NULL)
+  throw(NullPtrError("Histo2D::FitFunction: NULL pointer\n"));
+TVector<r_8> par = gfit.GetParm();
+for(int_4 i=0;i<h.NBinX();i++) for(int_4 j=0;j<h.NBinY();j++) {
+  r_8 xc,yc;
+  h.BinCenter(i,j,xc,yc);
+  r_8 x[2] = {xc,yc};
+  h(i,j) = f->Value(x,par.Data());
+}
+return h;
+}
+
+/*!
+  Fit de l'histogramme par ``gfit''.
+  \verbatim
+    typ_err = 0 :
+       - erreur attachee au bin si elle existe
+       - sinon 1
+    typ_err = 1 :
+       - erreur attachee au bin si elle existe
+       - sinon max( sqrt(abs(bin) ,1 )
+    typ_err = 2 :
+       - erreur forcee a 1
+    typ_err = 3 :
+       - erreur forcee a max( sqrt(abs(bin) ,1 )
+    typ_err = 4 :
+       - erreur forcee a 1, nulle si bin a zero.
+    typ_err = 5 :
+       - erreur forcee a max( sqrt(abs(bin) ,1 ),
+         nulle si bin a zero.
+  \endverbatim
+*/
+int_4 ObjectFitter::Fit(Histo2D const & h, GeneralFit& gfit,unsigned short typ_err)
+{
+if(h.NBinX()*h.NBinY()<=0) return -1000;
+if(typ_err>5) typ_err=0;
+
+GeneralFitData mydata(2,h.NBinX()*h.NBinY());
+
+for(int_4 i=0;i<h.NBinX();i++) for(int_4 j=0;j<h.NBinY();j++) {
+  r_8 x,y;
+  h.BinCenter(i,j,x,y);
+  r_8 f = h(i,j);
+  r_8 saf = sqrt(fabs(f)); if(saf<1.) saf=1.;
+  r_8 e=0.;
+  if(typ_err==0)      {if(h.HasErrors()) e=h.Error(i,j); else e=1.;}
+  else if(typ_err==1) {if(h.HasErrors()) e=h.Error(i,j); else e=saf;}
+  else if(typ_err==2) e=1.;
+  else if(typ_err==3) e=saf;
+  else if(typ_err==4) e=(f==0.)?0.:1.;
+  else if(typ_err==5) e=(f==0.)?0.:saf;
+  mydata.AddData2(x,y,f,e);
+}
+
+gfit.SetData(&mydata);
+
+return gfit.Fit();
+}
+
+//===========================================================================
+//===========================================================================
+//========================== ArrayFitter<T> =================================
+//===========================================================================
+//===========================================================================
 
 template <class T>
Index: trunk/SophyaLib/NTools/objfitter.h
===================================================================
--- trunk/SophyaLib/NTools/objfitter.h	(revision 1109)
+++ trunk/SophyaLib/NTools/objfitter.h	(revision 1110)
@@ -11,4 +11,7 @@
 #include "tmatrix.h"
 #include "tvector.h"
+#include "histos.h"
+#include "histos2.h"
+#include "hisprof.h"
 #include "generalfit.h"
 
@@ -36,4 +39,24 @@
   static TVector<r_8> FitFunction(TVector<r_8> const & vec, GeneralFit& gfit,
 				double xorg=0.,double dx=1.);
+  // Residus et fonction fittees sur Histo
+  static Histo FitResidus(Histo const& h, GeneralFit& gfit);
+  static Histo FitFunction(Histo const& h, GeneralFit& gfit);
+  static int_4 Fit(Histo const & h, GeneralFit& gfit,unsigned short typ_err=0);
+  // Residus et fonction fittees sur Histo2D
+  static Histo2D FitResidus(Histo2D const& h, GeneralFit& gfit);
+  static Histo2D FitFunction(Histo2D const& h, GeneralFit& gfit);
+  static int_4 Fit(Histo2D const & h, GeneralFit& gfit,unsigned short typ_err=0);
+  // Residus et fonction fittees sur HProf
+  static inline Histo FitResidus(HProf const& h, GeneralFit& gfit)
+         {h.UpdateHisto(); return FitResidus((Histo const&) h,gfit);}
+  static inline Histo FitFunction(HProf const& h, GeneralFit& gfit)
+         {h.UpdateHisto(); return FitFunction((Histo const&) h,gfit);}
+  static int_4 Fit(HProf const & h, GeneralFit& gfit)
+         {h.UpdateHisto(); return Fit((Histo const&) h,gfit,0);}
+  // Residus et fonction fittees sur GeneralFitData
+  static inline GeneralFitData FitResidus(GeneralFitData const& g, GeneralFit& gfit)
+                            {return g.FitResidus(gfit);}
+  static inline GeneralFitData FitFunction(GeneralFitData const& g, GeneralFit& gfit)
+                            {return g.FitFunction(gfit);}
 };
 
@@ -42,5 +65,4 @@
 class  ArrayFitter {
 public:
-
   // Residus et fonction fittees sur matrix
   static TMatrix<T> FitResidus(TMatrix<T> const & mtx, GeneralFit& gfit,
@@ -48,5 +70,4 @@
   static TMatrix<T> FitFunction(TMatrix<T> const & mtx, GeneralFit& gfit,
 				double xorg=0.,double yorg=0.,double dx=1.,double dy=1.);
-
   // Residus et fonction fittees sur vecteurs
   static TVector<T> FitResidus(TVector<T> const & vec, GeneralFit& gfit,
@@ -54,5 +75,4 @@
   static TVector<T> FitFunction(TVector<T> const & vec, GeneralFit& gfit,
 				double xorg=0.,double dx=1.);
-  
 };
 
Index: trunk/SophyaLib/NTools/objlist.list
===================================================================
--- trunk/SophyaLib/NTools/objlist.list	(revision 1109)
+++ trunk/SophyaLib/NTools/objlist.list	(revision 1110)
@@ -17,5 +17,4 @@
 generaldata.o
 generalfit.o
-imageop.o
 integ.o
 matxop.o
@@ -29,5 +28,4 @@
 poly.o
 rk4cdifeq.o
-rzimage.o
 simplesort.o
 tabmath.o
