Changeset 3057 in Sophya for trunk/SophyaLib/HiStats/histos2.cc
- Timestamp:
- Aug 13, 2006, 12:41:09 AM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/HiStats/histos2.cc
r3053 r3057 153 153 void Histo2D::CreateOrResize(r_8 xMin,r_8 xMax,int_4 nxBin,r_8 yMin,r_8 yMax,int_4 nyBin) 154 154 { 155 int_8 n = nxBin*nyBin; 156 if(mData!=NULL) {delete[] mData; mData = NULL;} 157 if(n>0) {mData = new r_8[n]; memset(mData, 0, n*sizeof(r_8));} 158 mNx = nxBin; mNy = nyBin; mNxy = nxBin*nyBin; 159 mXmin = xMin; mXmax = xMax; mYmin = yMin; mYmax = yMax; 160 mWBinx = (nxBin>0) ? (xMax - xMin)/nxBin: 0.; 161 mWBiny = (nyBin>0) ? (yMax - yMin)/nyBin: 0.; 162 nHist = 0; nEntries = 0; 163 for(int_4 i=0;i<3;i++) for(int_4 j=0;j<3;j++) mOver[i][j]=0.; 164 mB_s.H = NULL; 155 int_8 n = nxBin*nyBin; 156 bool samelen = (n==mNx*mNy)? true: false; 157 if(mData!=NULL && !samelen) {delete[] mData; mData=NULL;} 158 if(mErr2!=NULL) {delete[] mErr2; mErr2=NULL;} // On des-alloue toujours 159 if(n>0 && mData==NULL) mData = new r_8[n]; 160 if(mData) memset(mData, 0, n*sizeof(r_8)); 161 mNx = nxBin; mNy = nyBin; mNxy = nxBin*nyBin; 162 mXmin = xMin; mXmax = xMax; mYmin = yMin; mYmax = yMax; 163 mWBinx = (nxBin>0) ? (xMax - xMin)/nxBin: 0.; 164 mWBiny = (nyBin>0) ? (yMax - yMin)/nyBin: 0.; 165 nHist = 0; nEntries = 0; 166 for(int_4 i=0;i<3;i++) for(int_4 j=0;j<3;j++) mOver[i][j]=0.; 167 mB_s.H = NULL; 165 168 } 166 169 … … 230 233 Histo2D& Histo2D::operator = (const Histo2D& h) 231 234 { 232 int_4 i,j,nb;233 r_8 min,max;234 235 235 if(this == &h) return *this; 236 if( h.mNxy > mNxy ) Delete(); 237 if(!mData) mData = new r_8[h.mNxy]; 238 if( !h.mErr2 && mErr2 ) { delete [] mErr2; mErr2=NULL;} 239 if( h.mErr2 && !mErr2 ) mErr2 = new r_8[h.mNxy]; 240 241 for(i=0;i<3;i++) for(j=0;j<3;j++) mOver[i][j] = h.mOver[i][j]; 242 nHist = h.nHist; 243 nEntries = h.nEntries; 244 mNx = h.mNx; mNy = h.mNy; mNxy = h.mNxy; 245 mXmin = h.mXmin; mXmax = h.mXmax; mWBinx = h.mWBinx; 246 mYmin = h.mYmin; mYmax = h.mYmax; mWBiny = h.mWBiny; 247 248 memcpy(mData, h.mData, mNxy*sizeof(r_8)); 236 CreateOrResize(h.mXmin,h.mXmax,h.mNx,h.mYmin,h.mYmax,h.mNy); 237 if(h.mErr2) Errors(); 238 if(mData) memcpy(mData, h.mData, mNxy*sizeof(r_8)); 249 239 if(mErr2) memcpy(mErr2, h.mErr2, mNxy*sizeof(r_8)); 240 241 for(int i=0;i<3;i++) for(int j=0;j<3;j++) mOver[i][j] = h.mOver[i][j]; 242 nHist = h.nHist; nEntries = h.nEntries; 250 243 251 244 DelProjX(); … … 260 253 } 261 254 255 int_4 nb; 262 256 DelSliX(); 263 257 nb = h.NSliX(); 264 258 if(nb>0) { 265 259 SetSliX(nb); 266 for(i =0; i<NSliX();i++) *HSliX(i) = *(h.HSliX(i));260 for(int i=0; i<NSliX();i++) *HSliX(i) = *(h.HSliX(i)); 267 261 } 268 262 DelSliY(); … … 270 264 if(nb>0) { 271 265 SetSliY(nb); 272 for(i =0; i<NSliY();i++) *HSliY(i) = *(h.HSliY(i));266 for(int i=0; i<NSliY();i++) *HSliY(i) = *(h.HSliY(i)); 273 267 } 274 268 … … 276 270 nb = h.NBandX(); 277 271 if(nb>0) { 278 for(i=0; i<nb;i++) { 272 for(int i=0; i<nb;i++) { 273 r_8 min,max; 279 274 h.GetBandX(i,min,max); 280 275 SetBandX(min,max); 281 276 *HBandX(i) = *(h.HBandX(i)); 282 277 } 283 for(i =0; i<NBandX();i++) *HBandX(i) = *(h.HBandX(i));278 for(int i=0; i<NBandX();i++) *HBandX(i) = *(h.HBandX(i)); 284 279 } 285 280 DelBandY(); 286 281 nb = h.NBandY(); 287 282 if(nb>0) { 288 for(i=0; i<nb;i++) { 283 for(int i=0; i<nb;i++) { 284 r_8 min,max; 289 285 h.GetBandY(i,min,max); 290 286 SetBandY(min,max); 291 287 *HBandY(i) = *(h.HBandY(i)); 292 288 } 293 for(i =0; i<NBandY();i++) *HBandY(i) = *(h.HBandY(i));289 for(int i=0; i<NBandY();i++) *HBandY(i) = *(h.HBandY(i)); 294 290 } 295 291 … … 695 691 void Histo2D::IJMax(int_4& imax,int_4& jmax,int_4 il,int_4 ih,int_4 jl,int_4 jh) const 696 692 { 693 if(mNxy<=0) {imax = jmax = -1; return;} 697 694 if( il > ih ) { il = 0; ih = mNx-1; } 698 695 if( jl > jh ) { jl = 0; jh = mNy-1; } … … 716 713 void Histo2D::IJMin(int_4& imax,int_4& jmax,int_4 il,int_4 ih,int_4 jl,int_4 jh) const 717 714 { 715 if(mNxy<=0) {imax = jmax = -1; return;} 718 716 if( il > ih ) { il = 0; ih = mNx-1; } 719 717 if( jl > jh ) { jl = 0; jh = mNy-1; } … … 738 736 r_8 Histo2D::VMax(int_4 il,int_4 ih,int_4 jl,int_4 jh) const 739 737 { 738 if(mNxy<=0) return 0.; 740 739 if( il > ih ) { il = 0; ih = mNx-1; } 741 740 if( jl > jh ) { jl = 0; jh = mNy-1; } … … 758 757 r_8 Histo2D::VMin(int_4 il,int_4 ih,int_4 jl,int_4 jh) const 759 758 { 759 if(mNxy<=0) return 0.; 760 760 if( il > ih ) { il = 0; ih = mNx-1; } 761 761 if( jl > jh ) { jl = 0; jh = mNy-1; } … … 801 801 int_4 Histo2D::BinNonNul() const 802 802 { 803 if(mNxy<=0) return -1; 803 804 int_4 non=0; 804 805 for (int_4 i=0;i<mNxy;i++) if( mData[i] != 0. ) non++; … … 899 900 ,int_4 il,int_4 ih,int_4 jl,int_4 jh) const 900 901 { 902 if(mNxy<=0) return -1; 901 903 if( il > ih ) { il = 0; ih = mNx-1; } 902 904 if( jl > jh ) { jl = 0; jh = mNy-1; } … … 969 971 ,int_4 il,int_4 ih,int_4 jl,int_4 jh) const 970 972 { 973 if(mNxy<=0) return; 971 974 int_4 ns = 35; 972 975 const char *s = "+23456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
Note:
See TracChangeset
for help on using the changeset viewer.