Index: /trunk/SophyaLib/HiStats/histos.cc
===================================================================
--- /trunk/SophyaLib/HiStats/histos.cc	(revision 1063)
+++ /trunk/SophyaLib/HiStats/histos.cc	(revision 1064)
@@ -1,4 +1,4 @@
 //
-// $Id: histos.cc,v 1.8 2000-07-07 09:44:15 ansari Exp $
+// $Id: histos.cc,v 1.9 2000-07-11 18:57:25 ansari Exp $
 //
 
@@ -326,6 +326,7 @@
 void Histo::PutValue(TVector<r_8> &v, int ierr)
 {
-if(v.NElts()<(uint_4) bins) THROW(sizeMismatchErr);
-for(int i=0;i<bins;i++) {
+//if(v.NElts()<(uint_4) bins) THROW(sizeMismatchErr);
+uint_4 n = (v.NElts()<(uint_4) bins) ? v.NElts(): (uint_4) bins;
+if(n>0) for(int i=0;i<n;i++) {
   data[i] = v(i);
   if(err2&&ierr) err2[i] = fabs(v(i));
@@ -339,6 +340,7 @@
 void Histo::PutValueAdd(TVector<r_8> &v, int ierr)
 {
-if(v.NElts()<(uint_4) bins) THROW(sizeMismatchErr);
-for(int i=0;i<bins;i++) {
+//if(v.NElts()<(uint_4) bins) THROW(sizeMismatchErr);
+uint_4 n = (v.NElts()<(uint_4) bins) ? v.NElts(): (uint_4) bins;
+if(n>0) for(int i=0;i<n;i++) {
   data[i] += v(i);
   if(err2 && ierr) err2[i] += fabs(v(i));
@@ -352,7 +354,10 @@
 void Histo::PutError2(TVector<r_8> &v)
 {
-if(v.NElts()<(uint_4) bins) THROW(sizeMismatchErr);
-if(!err2) Errors();
-for(int i=0;i<bins;i++) err2[i] = v(i);
+//if(v.NElts()<(uint_4) bins) THROW(sizeMismatchErr);
+uint_4 n = (v.NElts()<(uint_4) bins) ? v.NElts(): (uint_4) bins;
+if(n>0) {
+  if(!err2) Errors();
+  for(int i=0;i<n;i++) err2[i] = v(i);
+}
 return;
 }
@@ -363,7 +368,10 @@
 void Histo::PutError2Add(TVector<r_8> &v)
 {
-if(v.NElts()<(uint_4) bins) THROW(sizeMismatchErr);
-if(!err2) Errors();
-for(int i=0;i<bins;i++) if(v(i)>0.) err2[i] += v(i);
+//if(v.NElts()<(uint_4) bins) THROW(sizeMismatchErr);
+uint_4 n = (v.NElts()<(uint_4) bins) ? v.NElts(): (uint_4) bins;
+if(n>0) {
+  if(!err2) Errors();
+  for(int i=0;i<n;i++) if(v(i)>0.) err2[i] += v(i);
+}
 return;
 }
@@ -374,8 +382,11 @@
 void Histo::PutError(TVector<r_8> &v)
 {
-if(v.NElts()<(uint_4) bins) THROW(sizeMismatchErr);
-if(!err2) Errors();
-for(int i=0;i<bins;i++)
-  if(v(i)>0.) err2[i]=v(i)*v(i); else err2[i]=-v(i)*v(i);
+//if(v.NElts()<(uint_4) bins) THROW(sizeMismatchErr);
+uint_4 n = (v.NElts()<(uint_4) bins) ? v.NElts(): (uint_4) bins;
+if(n>0) {
+  if(!err2) Errors();
+  for(int i=0;i<n;i++)
+    if(v(i)>0.) err2[i]=v(i)*v(i); else err2[i]=-v(i)*v(i);
+}
 return;
 }
Index: /trunk/SophyaLib/HiStats/histos2.cc
===================================================================
--- /trunk/SophyaLib/HiStats/histos2.cc	(revision 1063)
+++ /trunk/SophyaLib/HiStats/histos2.cc	(revision 1064)
@@ -559,6 +559,8 @@
 {
 int i,j;
-if(v.NRows()!=(uint_4)nx || v.NCol()!=(uint_4)ny) THROW(sizeMismatchErr);
-for(i=0;i<nx;i++) for(j=0;j<ny;j++) {
+//if(v.NRows()!=(uint_4)nx || v.NCol()!=(uint_4)ny) THROW(sizeMismatchErr);
+uint_4 nnx = (v.NRows()<(uint_4)nx)? v.NRows(): (uint_4)nx;
+uint_4 nny = (v.NCol() <(uint_4)ny)? v.NCol() : (uint_4)ny;
+if(nnx>0 && nny>0) for(i=0;i<nnx;i++) for(j=0;j<nny;j++) {
   (*this)(i,j) = v(i,j);
   if(err2 && ierr) Error2(i,j) = fabs(v(i,j));
@@ -573,6 +575,8 @@
 {
 int i,j;
-if(v.NRows()!=(uint_4)nx || v.NCol()!=(uint_4)ny) THROW(sizeMismatchErr);
-for(i=0;i<nx;i++) for(j=0;j<ny;j++) {
+//if(v.NRows()!=(uint_4)nx || v.NCol()!=(uint_4)ny) THROW(sizeMismatchErr);
+uint_4 nnx = (v.NRows()<(uint_4)nx)? v.NRows(): (uint_4)nx;
+uint_4 nny = (v.NCol() <(uint_4)ny)? v.NCol() : (uint_4)ny;
+if(nnx>0 && nny>0) for(i=0;i<nnx;i++) for(j=0;j<nny;j++) {
   (*this)(i,j) += v(i,j);
   if(err2 && ierr) Error2(i,j) += fabs(v(i,j));
@@ -588,7 +592,11 @@
 {
 int i,j;
-if(v.NRows()!=(uint_4)nx || v.NCol()!=(uint_4)ny) THROW(sizeMismatchErr);
-if(!err2) Errors();
-for(i=0;i<nx;i++) for(j=0;j<ny;j++) Error2(i,j) = v(i,j);
+//if(v.NRows()!=(uint_4)nx || v.NCol()!=(uint_4)ny) THROW(sizeMismatchErr);
+uint_4 nnx = (v.NRows()<(uint_4)nx)? v.NRows(): (uint_4)nx;
+uint_4 nny = (v.NCol() <(uint_4)ny)? v.NCol() : (uint_4)ny;
+if(nnx>0 && nny>0) {
+  if(!err2) Errors();
+  for(i=0;i<nnx;i++) for(j=0;j<nny;j++) Error2(i,j) = v(i,j);
+}
 return;
 }
@@ -601,8 +609,12 @@
 {
 int i,j;
-if(v.NRows()!=(uint_4)nx || v.NCol()!=(uint_4)ny) THROW(sizeMismatchErr);
-if(!err2) Errors();
-for(i=0;i<nx;i++) for(j=0;j<ny;j++)
+//if(v.NRows()!=(uint_4)nx || v.NCol()!=(uint_4)ny) THROW(sizeMismatchErr);
+uint_4 nnx = (v.NRows()<(uint_4)nx)? v.NRows(): (uint_4)nx;
+uint_4 nny = (v.NCol() <(uint_4)ny)? v.NCol() : (uint_4)ny;
+if(nnx>0 && nny>0) {
+  if(!err2) Errors();
+  for(i=0;i<nnx;i++) for(j=0;j<nny;j++)
           if(v(i,j)>0.) Error2(i,j) += v(i,j);
+}
 return;
 }
@@ -614,8 +626,12 @@
 {
 int i,j;
-if(v.NRows()!=(uint_4)nx || v.NCol()!=(uint_4)ny) THROW(sizeMismatchErr);
-if(!err2) Errors();
-for(i=0;i<nx;i++) for(j=0;j<ny;j++)
-  if(v(i,j)>0.) Error2(i,j)=v(i,j)*v(i,j); else Error2(i,j)= -v(i,j)*v(i,j);
+//if(v.NRows()!=(uint_4)nx || v.NCol()!=(uint_4)ny) THROW(sizeMismatchErr);
+uint_4 nnx = (v.NRows()<(uint_4)nx)? v.NRows(): (uint_4)nx;
+uint_4 nny = (v.NCol() <(uint_4)ny)? v.NCol() : (uint_4)ny;
+if(nnx>0 && nny>0) {
+  if(!err2) Errors();
+  for(i=0;i<nnx;i++) for(j=0;j<nny;j++)
+    if(v(i,j)>0.) Error2(i,j)=v(i,j)*v(i,j); else Error2(i,j)= -v(i,j)*v(i,j);
+}
 return;
 }
