Index: trunk/SophyaLib/NTools/histos2.cc
===================================================================
--- trunk/SophyaLib/NTools/histos2.cc	(revision 308)
+++ trunk/SophyaLib/NTools/histos2.cc	(revision 490)
@@ -45,5 +45,5 @@
       , hprojx(NULL), hprojy(NULL)
 {
-DBASSERT(nxBin>0 && nyBin>0 && xMin<xMax && yMin<yMax);
+ASSERT(nxBin>0 && nyBin>0 && xMin<xMax && yMin<yMax);
 for(int i=0;i<3;i++) for(int j=0;j<3;j++) over[i][j]=0.;
 Zero();
@@ -663,8 +663,7 @@
 int i,j;
 v.Realloc(nx,ny);
-if(!err2) for(i=0;i<nx;i++)
-            for(j=0;j<ny;j++) { v(i,j) = 0.; return;}
-for(i=0;i<nx;i++)
-  for(j=0;j<ny;j++) v(i,j) = Error2(i,j);
+if(!err2)
+  {for(i=0;i<nx;i++) for(j=0;j<ny;j++) v(i,j) = 0.; return;}
+for(i=0;i<nx;i++) for(j=0;j<ny;j++) v(i,j) = Error2(i,j);
 return;
 }
@@ -678,8 +677,7 @@
 int i,j;
 v.Realloc(nx,ny);
-if(!err2) for(i=0;i<nx;i++)
-            for(j=0;j<ny;j++) { v(i,j) = 0.; return;}
-for(i=0;i<nx;i++)
-  for(j=0;j<ny;j++) v(i,j) = Error(i,j);
+if(!err2)
+  {for(i=0;i<nx;i++) for(j=0;j<ny;j++) v(i,j) = 0.; return;}
+for(i=0;i<nx;i++) for(j=0;j<ny;j++) v(i,j) = Error(i,j);
 return;
 }
@@ -1786,40 +1784,6 @@
 ///////////////////////////////////////////////////////////
 
-FIO_Histo2D::FIO_Histo2D()
-{
-dobj=new Histo2D;
-ownobj=true;
-}
-
-FIO_Histo2D::FIO_Histo2D(string const & filename) 
-{
-dobj=new Histo2D;
-ownobj=true; 
-Read(filename);
-}
-
-FIO_Histo2D::FIO_Histo2D(const Histo2D & obj) 
-{ 
-dobj = new Histo2D(obj);
-ownobj=true; 
-}
-
-FIO_Histo2D::FIO_Histo2D(Histo2D * obj) 
-{ 
-dobj = obj;
-ownobj=false; 
-}
-
-FIO_Histo2D::~FIO_Histo2D()
-{
-if (ownobj && dobj) delete dobj;
-}
-
-AnyDataObj* FIO_Histo2D::DataObj()
-{
-return(dobj);
-}
-
-void FIO_Histo2D::ReadSelf(PInPersist& is)
+
+void  ObjFileIO<Histo2D>::ReadSelf(PInPersist& is)
 {
 char strg[256];
@@ -1879,5 +1843,5 @@
   is.GetLine(strg, 255);
   dobj->SetProjX();
-  FIO_Histo fio_h(dobj->hprojx);
+  ObjFileIO<Histo> fio_h(dobj->hprojx);
   fio_h.Read(is);
 }
@@ -1885,5 +1849,5 @@
   is.GetLine(strg, 255);
   dobj->SetProjY();
-  FIO_Histo fio_h(dobj->hprojy);
+  ObjFileIO<Histo> fio_h(dobj->hprojy);
   fio_h.Read(is);
 }
@@ -1893,14 +1857,14 @@
   is.GetLine(strg, 255);
   dobj->SetSliX(nslix);
-  DBASSERT (nslix==dobj->NSliX());
+  ASSERT (nslix==dobj->NSliX());
   for(int j=0;j<dobj->NSliX();j++)
-    {FIO_Histo fio_h(dobj->HSliX(j)); fio_h.Read(is);}
+    {ObjFileIO<Histo> fio_h(dobj->HSliX(j)); fio_h.Read(is);}
 }
 if(nsliy>0) {
   is.GetLine(strg, 255);
   dobj->SetSliY(nsliy);
-  DBASSERT (nsliy==dobj->NSliY());
+  ASSERT (nsliy==dobj->NSliY());
   for(int j=0;j<dobj->NSliY();j++)
-    {FIO_Histo fio_h(dobj->HSliY(j)); fio_h.Read(is);}
+    {ObjFileIO<Histo> fio_h(dobj->HSliY(j)); fio_h.Read(is);}
 }
 
@@ -1912,7 +1876,7 @@
     dobj->SetBandX(min,max);
   }}
-  DBASSERT (nbanx==dobj->NBandX());
+  ASSERT (nbanx==dobj->NBandX());
   {for(int j=0; j<dobj->NBandX(); j++) {
-    FIO_Histo fio_h(dobj->HBandX(j));
+    ObjFileIO<Histo> fio_h(dobj->HBandX(j));
     fio_h.Read(is);
   }}
@@ -1924,7 +1888,7 @@
     dobj->SetBandY(min,max);
   }}
-  DBASSERT (nbany==dobj->NBandY());
+  ASSERT (nbany==dobj->NBandY());
   {for(int j=0; j<dobj->NBandY(); j++) {
-    FIO_Histo fio_h(dobj->HBandY(j));
+    ObjFileIO<Histo> fio_h(dobj->HBandY(j));
     fio_h.Read(is);
   }}
@@ -1934,5 +1898,5 @@
 }
 
-void FIO_Histo2D::WriteSelf(POutPersist& os) const
+void ObjFileIO<Histo2D>::WriteSelf(POutPersist& os) const
 {
 if (dobj == NULL)   return;
@@ -2010,10 +1974,10 @@
   sprintf(strg,"Histo2D: Projection X");
   os.PutLine(strg);
-  FIO_Histo fio_h(dobj->hprojx); fio_h.Write(os);
+  ObjFileIO<Histo> fio_h(dobj->hprojx); fio_h.Write(os);
 }
 if(projy) {
   sprintf(strg,"Histo2D: Projection Y");
   os.PutLine(strg);
-  FIO_Histo fio_h(dobj->hprojy); fio_h.Write(os);
+  ObjFileIO<Histo> fio_h(dobj->hprojy); fio_h.Write(os);
 }
 
@@ -2024,5 +1988,5 @@
   for(int j=0;j<nslix;j++) {
     Histo* h = dobj->HSliX(j);
-    FIO_Histo fio_h(h); fio_h.Write(os);
+    ObjFileIO<Histo> fio_h(h); fio_h.Write(os);
   }
 }
@@ -2032,5 +1996,5 @@
   for(int j=0;j<nsliy;j++) {
     Histo* h = dobj->HSliY(j);
-    FIO_Histo fio_h(h); fio_h.Write(os);
+    ObjFileIO<Histo> fio_h(h); fio_h.Write(os);
   }
 }
@@ -2047,5 +2011,5 @@
   for(it = dobj->lbandx.begin(); it != dobj->lbandx.end(); it++) {
     Histo* h = (*it).H;
-    FIO_Histo fio_h(h); fio_h.Write(os);
+    ObjFileIO<Histo> fio_h(h); fio_h.Write(os);
   }
 }
@@ -2060,5 +2024,5 @@
   for(it = dobj->lbandy.begin(); it != dobj->lbandy.end(); it++) {
     Histo* h = (*it).H;
-    FIO_Histo fio_h(h); fio_h.Write(os);
+    ObjFileIO<Histo> fio_h(h); fio_h.Write(os);
   }
 }
@@ -2066,2 +2030,11 @@
 return;
 }
+
+
+#ifdef __CXX_PRAGMA_TEMPLATES__
+#pragma define_template ObjFileIO<Histo2D>
+#endif
+
+#if defined(ANSI_TEMPLATES) || defined(GNU_TEMPLATES)
+template class ObjFileIO<Histo2D>;
+#endif
