Changeset 3057 in Sophya
- Timestamp:
- Aug 13, 2006, 12:41:09 AM (19 years ago)
- Location:
- trunk/SophyaLib/HiStats
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/HiStats/hisprof.cc
r3053 r3057 19 19 HProf::HProf() 20 20 : Histo(), mSumY(NULL), mSumY2(NULL), mSumW(NULL) 21 , Ok(false), YMin(1.), YMax(-1.),Opt(0)21 , mOk(false), mYMin(1.), mYMax(-1.), mOpt(0) 22 22 { 23 23 } … … 56 56 , mSumY2((H.mBins>0) ? new r_8[H.mBins] : NULL) 57 57 , mSumW((H.mBins>0) ? new r_8[H.mBins] : NULL) 58 , Ok(H.Ok), YMin(H.YMin), YMax(H.YMax), Opt(H.Opt)58 , mOk(H.mOk), mYMin(H.mYMin), mYMax(H.mYMax), mOpt(H.mOpt) 59 59 { 60 60 if(mBins>0) { … … 73 73 { 74 74 //cout<<"HProf::CreateOrResize()"<<endl; 75 bool samelen = (nBin==mBins)? true: false; 75 76 Histo::CreateOrResize(xMin,xMax,nBin); 76 77 Histo::Errors(); 77 if(mSumY !=NULL) {delete[] mSumY; mSumY = NULL;} 78 if(mSumY2!=NULL) {delete[] mSumY2; mSumY2= NULL;} 79 if(mSumW !=NULL) {delete[] mSumW; mSumW = NULL;} 80 if(nBin>0) { 81 mSumY = new r_8[nBin]; memset(mSumY, 0, nBin*sizeof(r_8)); 82 mSumY2 = new r_8[nBin]; memset(mSumY2,0, nBin*sizeof(r_8)); 83 mSumW = new r_8[nBin]; memset(mSumW, 0, nBin*sizeof(r_8)); 84 } 85 YMin = yMin; YMax = yMax; 86 Ok = false; 87 Opt = 0; 78 if(mSumW!=NULL && !samelen) { //si un est alloue alors les autres aussi 79 delete[] mSumY; mSumY = NULL; 80 delete[] mSumY2; mSumY2= NULL; 81 delete[] mSumW; mSumW = NULL; 82 } 83 if(nBin>0 && mSumW==NULL) { 84 mSumY = new r_8[nBin]; 85 mSumY2 = new r_8[nBin]; 86 mSumW = new r_8[nBin]; 87 } 88 if(mSumW) { 89 memset(mSumY, 0, nBin*sizeof(r_8)); 90 memset(mSumY2,0, nBin*sizeof(r_8)); 91 memset(mSumW, 0, nBin*sizeof(r_8)); 92 } 93 mYMin = yMin; mYMax = yMax; 94 mOk = false; 95 mOpt = 0; 88 96 } 89 97 … … 99 107 if(mSumY2!= NULL) {delete[] mSumY2; mSumY2 = NULL;} 100 108 if(mSumW != NULL) {delete[] mSumW; mSumW = NULL;} 101 Ok = false;109 mOk = false; 102 110 } 103 111 … … 117 125 void HProf::UpdateHisto(bool force) const 118 126 { 119 if(! Ok || force) updatehisto();127 if(!mOk || force) updatehisto(); 120 128 } 121 129 … … 130 138 memset(mSumY2, 0, mBins*sizeof(r_8)); 131 139 memset(mSumW, 0, mBins*sizeof(r_8)); 132 Ok = false;140 mOk = false; 133 141 } 134 142 … … 153 161 { 154 162 uint_2 opt = (spread) ? 0 : 1; 155 if(opt!= Opt) {Opt=opt;Ok=false;}163 if(opt!=mOpt) {mOpt=opt; mOk=false;} 156 164 } 157 165 … … 177 185 m = mSumY[i]/mSumW[i]; 178 186 e2 = mSumY2[i]/mSumW[i] - m*m; 179 if( Opt) e2 /= mSumW[i];187 if(mOpt) e2 /= mSumW[i]; 180 188 } 181 189 mData[i] = m; 182 190 mErr2[i] = e2; 183 191 } 184 Ok = true;192 mOk = true; 185 193 // Attention, a cause de "WriteSelf const" updatehisto doit etre "const". 186 // Comme on veut modifier Ok, on est oblige de faire cette entourloupe:194 // Comme on veut modifier mOk, on est oblige de faire cette entourloupe: 187 195 HProf *buff = (HProf *) this; 188 buff-> Ok = true;196 buff->mOk = true; 189 197 } 190 198 … … 195 203 void HProf::Add(r_8 x, r_8 y, r_8 w) 196 204 { 197 if( YMax>YMin && (y<YMin ||YMax<y)) return;205 if(mYMax>mYMin && (y<mYMin || mYMax<y)) return; 198 206 int_4 numBin = FindBin(x); 199 207 if (numBin<0) mUnder += w; 200 208 else if (numBin>=mBins) mOver += w; 201 209 else { 202 Ok = false;210 mOk = false; 203 211 mSumY[numBin] += y*w; 204 212 mSumY2[numBin] += y*y*w; … … 215 223 void HProf::AddBin(int_4 numBin, r_8 y, r_8 w) 216 224 { 217 if( YMax>YMin && (y<YMin ||YMax<y)) return;225 if(mYMax>mYMin && (y<mYMin || mYMax<y)) return; 218 226 if (numBin<0) mUnder += w; 219 227 else if (numBin>=mBins) mOver += w; 220 228 else { 221 Ok = false;229 mOk = false; 222 230 mSumY[numBin] += y*w; 223 231 mSumY2[numBin] += y*y*w; … … 234 242 HProf& HProf::operator = (const HProf& h) 235 243 { 236 if(this == &h) return *this; 237 if( h.mBins > mBins ) Delete(); 238 Histo *hthis = (Histo *) this; 239 *hthis = (Histo) h; 240 if(!mSumY) mSumY = new r_8[mBins]; 241 if(!mSumY2) mSumY2 = new r_8[mBins]; 242 if(!mSumW) mSumW = new r_8[mBins]; 243 memcpy(mSumY, h.mSumY, mBins*sizeof(r_8)); 244 memcpy(mSumY2, h.mSumY2, mBins*sizeof(r_8)); 245 memcpy(mSumW, h.mSumW, mBins*sizeof(r_8)); 246 Ok = h.Ok; 247 YMin = h.YMin; 248 YMax = h.YMax; 249 Opt = h.Opt; 250 251 return *this; 244 if(this == &h) return *this; 245 CreateOrResize(h.mMin,h.mMax,h.mBins,h.mYMin,h.mYMax); 246 if(mData) memcpy(mData,h.mData,mBins*sizeof(r_8)); 247 if(mErr2) memcpy(mErr2,h.mErr2,mBins*sizeof(r_8)); 248 mUnder = h.mUnder; mOver = h.mOver; 249 nHist = h.nHist; nEntries = h.nEntries; 250 if(mSumY) memcpy(mSumY, h.mSumY, mBins*sizeof(r_8)); 251 if(mSumY2) memcpy(mSumY2, h.mSumY2, mBins*sizeof(r_8)); 252 if(mSumW) memcpy(mSumW, h.mSumW, mBins*sizeof(r_8)); 253 mOk = h.mOk; 254 mOpt = h.mOpt; 255 256 return *this; 252 257 } 253 258 … … 331 336 UpdateHisto(); 332 337 Histo::Show(os); 333 os <<" ymin="<< YMin<<" ymax="<<YMax<<" opt="<<Opt<< endl;338 os <<" ymin="<<mYMin<<" ymax="<<mYMax<<" opt="<<mOpt<< endl; 334 339 } 335 340 … … 354 359 // Lecture des valeurs 355 360 is.Get(dobj->mBins); 356 is.Get(dobj-> YMin);357 is.Get(dobj-> YMax);358 is.Get(dobj-> Opt);359 dobj-> Ok = true;361 is.Get(dobj->mYMin); 362 is.Get(dobj->mYMax); 363 is.Get(dobj->mOpt); 364 dobj->mOk = true; 360 365 361 366 // Lecture des donnees propres a l'histogramme de profil. 362 367 is.GetLine(strg,255); 363 dobj->mSumY = new r_8[dobj->mBins]; 364 dobj->mSumY2 = new r_8[dobj->mBins]; 365 dobj->mSumW = new r_8[dobj->mBins]; 368 if(dobj->mBins>0) { 369 dobj->mSumY = new r_8[dobj->mBins]; 370 dobj->mSumY2 = new r_8[dobj->mBins]; 371 dobj->mSumW = new r_8[dobj->mBins]; 372 } 366 373 is.Get(dobj->mSumY, dobj->mBins); 367 374 is.Get(dobj->mSumY2, dobj->mBins); … … 383 390 384 391 // Ecriture entete pour identifier facilement 385 sprintf(strg,"HProf: YMin=%f YMax=%f Opt=%1d",dobj-> YMin,dobj->YMax,dobj->Opt);392 sprintf(strg,"HProf: YMin=%f YMax=%f Opt=%1d",dobj->mYMin,dobj->mYMax,dobj->mOpt); 386 393 os.PutLine(strg); 387 394 388 395 // Ecriture des valeurs 389 396 os.Put(dobj->mBins); 390 os.Put(dobj-> YMin);391 os.Put(dobj-> YMax);392 os.Put(dobj-> Opt);397 os.Put(dobj->mYMin); 398 os.Put(dobj->mYMax); 399 os.Put(dobj->mOpt); 393 400 394 401 // Ecriture des donnees propres a l'histogramme de profil. -
trunk/SophyaLib/HiStats/hisprof.h
r3053 r3057 81 81 r_8* mSumY2; //!< somme des carres 82 82 r_8* mSumW; //!< somme des poids 83 mutable bool Ok; //!< true if update fait84 r_8 YMin; //!< limite minimum Y pour somme85 r_8 YMax; //!< limite maximum Y pour somme86 uint_2 Opt; //!< options pour les erreurs83 mutable bool mOk; //!< true if update fait 84 r_8 mYMin; //!< limite minimum Y pour somme 85 r_8 mYMax; //!< limite maximum Y pour somme 86 uint_2 mOpt; //!< options pour les erreurs 87 87 }; 88 88 -
trunk/SophyaLib/HiStats/histerr.cc
r3053 r3057 49 49 { 50 50 //cout<<"HistoErr::CreateOrResize()"<<endl; 51 bool samelen = (nBin==mBins)? true: false; 51 52 Histo::CreateOrResize(xMin,xMax,nBin); 52 53 Histo::Errors(); 53 allocate_mNData(nBin); 54 if(mNData!=NULL && !samelen) {delete [] mNData; mNData=NULL;} 55 if(nBin>0 && mNData==NULL) mNData = new r_8[nBin]; 56 if(mNData) memset(mNData,0,nBin*sizeof(r_8)); 54 57 mCorrel = 0; 55 }56 57 /********* Methode *********/58 /*! Allocation du tableau mNData */59 void HistoErr::allocate_mNData(int nbin)60 {61 if(mNData) {delete [] mNData; mNData=NULL;}62 if(nbin<=0) return;63 mNData = new r_8[nbin];64 memset(mNData,0,nbin*sizeof(r_8));65 58 } 66 59 … … 199 192 { 200 193 if(this==&h) return *this; 201 Delete(); 202 if(h.mBins<=0) return *this; 203 204 // Copy the "Histo" part 205 (Histo)(*this) = Histo::operator=(h); 206 // Copy the "entries by bin" table 207 allocate_mNData(h.mBins); 208 memcpy(mNData,h.mNData,mBins*sizeof(r_8)); 194 CreateOrResize(h.mMin,h.mMax,h.mBins); 195 if(mData) memcpy(mData,h.mData,mBins*sizeof(r_8)); 196 if(mErr2) memcpy(mErr2,h.mErr2,mBins*sizeof(r_8)); 197 mUnder = h.mUnder; mOver = h.mOver; 198 nHist = h.nHist; nEntries = h.nEntries; 199 if(mNData) memcpy(mNData,h.mNData,mBins*sizeof(r_8)); 209 200 mCorrel = h.mCorrel; 210 201 … … 244 235 // Lecture des donnees HistoErr 245 236 is.Get(dobj->mBins); 246 dobj->allocate_mNData(dobj->mBins);237 if(dobj->mBins>0) dobj->mNData = new r_8[dobj->mBins]; 247 238 is.Get(dobj->mNData, dobj->mBins); 248 239 -
trunk/SophyaLib/HiStats/histerr.h
r3053 r3057 83 83 84 84 protected: 85 void allocate_mNData(int nbin);86 85 void CreateOrResize(r_8 xMin, r_8 xMax, int_4 nBin); 87 86 void Delete(void); -
trunk/SophyaLib/HiStats/histos.cc
r3053 r3057 1 1 // 2 // $Id: histos.cc,v 1.2 3 2006-08-12 17:29:29cmv Exp $2 // $Id: histos.cc,v 1.24 2006-08-12 22:41:08 cmv Exp $ 3 3 // 4 4 … … 70 70 { 71 71 //cout<<"Histo::CreateOrResize()"<<endl; 72 if(mData != NULL) {delete[] mData; mData = NULL;} 73 if(mErr2 != NULL) {delete[] mErr2; mErr2 = NULL;} 74 if(nBin>0) {mData = new r_8[nBin]; memset(mData,0,nBin*sizeof(r_8));} 72 bool samelen = (nBin==mBins)? true: false; 73 if(mData!=NULL && !samelen) {delete[] mData; mData = NULL;} 74 if(mErr2!=NULL) {delete[] mErr2; mErr2 = NULL;} // On des-alloue toujours 75 if(nBin>0 && mData==NULL) mData = new r_8[nBin]; 76 if(mData) memset(mData,0,nBin*sizeof(r_8)); 75 77 mBins = nBin; 76 78 mMin = xMin; mMax = xMax; … … 142 144 { 143 145 if(this == &h) return *this; 144 Delete(); 145 if(h.mBins<=0 || h.mData==NULL) return *this; 146 147 mData = new r_8[h.mBins]; 148 if(h.mErr2) mErr2 = new r_8[h.mBins]; 146 CreateOrResize(h.mMin,h.mMax,h.mBins); 147 if(h.mErr2) Errors(); 148 if(mData) memcpy(mData,h.mData,mBins*sizeof(r_8)); 149 if(mErr2) memcpy(mErr2,h.mErr2,mBins*sizeof(r_8)); 149 150 mUnder = h.mUnder; mOver = h.mOver; 150 nHist = h.nHist; 151 nEntries = h.nEntries; 152 mBins = h.mBins; 153 mMin = h.mMin; mMax = h.mMax; 154 binWidth = h.binWidth; 155 156 memcpy(mData,h.mData,mBins*sizeof(r_8)); 157 if(mErr2) memcpy(mErr2,h.mErr2,mBins*sizeof(r_8)); 158 151 nHist = h.nHist; nEntries = h.nEntries; 159 152 return *this; 160 153 } … … 532 525 int_4 Histo::IMax() const 533 526 { 527 if(mBins<=0) return 0; 534 528 int_4 imx=0; 535 529 if(mBins==1) return imx; … … 546 540 int_4 Histo::IMin() const 547 541 { 542 if(mBins<=0) return 0; 548 543 int_4 imx=0; 549 544 if(mBins==1) return imx; … … 560 555 r_8 Histo::VMax() const 561 556 { 557 if(mBins<=0) return 0.; 562 558 r_8 mx=mData[0]; 563 559 if(mBins==1) return mx; … … 572 568 r_8 Histo::VMin() const 573 569 { 570 if(mBins<=0) return 0.; 574 571 r_8 mx=mData[0]; 575 572 if(mBins==1) return mx; … … 584 581 r_8 Histo::Mean() const 585 582 { 583 if(mBins<=0) return 0.; 586 584 r_8 n = 0; 587 585 r_8 sx = 0; … … 600 598 r_8 Histo::Sigma() const 601 599 { 600 if(mBins<=0) return 0.; 602 601 r_8 n = 0; 603 602 r_8 sx = 0; … … 622 621 r_8 Histo::MeanLH(int_4 il,int_4 ih) const 623 622 { 623 if(mBins<=0) return 0.; 624 624 if( ih < il ) { il = 0; ih = mBins-1; } 625 625 if( il < 0 ) il = 0; … … 641 641 r_8 Histo::SigmaLH(int_4 il,int_4 ih) const 642 642 { 643 if(mBins<=0) return 0.; 643 644 if( ih < il ) { il = 0; ih = mBins - 1; } 644 645 if( il < 0 ) il = 0; … … 665 666 r_8 Histo::Mean(r_8 x0, r_8 dx) const 666 667 { 668 if(mBins<=0) return 0.; 667 669 r_8 sdata = 0; 668 670 r_8 sx = 0; … … 685 687 r_8 Histo::Sigma(r_8 x0, r_8 dx) const 686 688 { 689 if(mBins<=0) return 0.; 687 690 r_8 sx = 0; 688 691 r_8 sx2= 0; … … 708 711 r_8 Histo::CleanedMean(r_8& sigma) const 709 712 { 713 if(mBins<=0) return 0.; 710 714 if (!nHist) return 0; 711 715 // on fait ca de facon bete, on pourra raffiner apres... … … 728 732 r_8 Histo::CleanedMean() const 729 733 { 734 if(mBins<=0) return 0.; 730 735 if (!nHist) return 0; 731 736 r_8 s=0; … … 739 744 int_4 Histo::BinNonNul() const 740 745 { 746 if(mBins<=0) return -1; 741 747 int_4 non=0; 742 748 for (int_4 i=0;i<mBins;i++) if( mData[i] != 0. ) non++; … … 763 769 int_4 Histo::BinPercent(r_8 per) const 764 770 { 771 if(mBins<=0) return -1; 765 772 r_8 n = nHist*per; 766 773 r_8 s = 0.; … … 789 796 int_4 Histo::BinPercent(r_8 x,r_8 per,int_4& imin,int_4& imax) const 790 797 { 798 if(mBins<=0) return -3; 791 799 imin = imax = -1; 792 800 if( per <= 0. ) return -1; … … 926 934 int_4 Histo::MaxiLocal(r_8& maxi,int_4& imax,r_8& maxn,int_4& imaxn) const 927 935 { 936 if(mBins<=0) return -1; 928 937 int_4 nml = 0; 929 938 imax = imaxn = -1; … … 964 973 r_8 Histo::FitMax(int_4 degree, r_8 frac, int_4 debug) const 965 974 { 975 if(mBins<=0) return mMin; 966 976 if (degree < 2 || degree > 3) degree = 3; 967 977 if (frac <= 0. || frac >= 1.) frac = 0.5; … … 1099 1109 r_8 Histo::FindWidth(r_8 frac, int_4 debug) const 1100 1110 { 1111 if(mBins<=0) return 0; 1101 1112 r_8 xmax = BinCenter( IMax() ); 1102 1113 return FindWidth(xmax,frac,debug); … … 1110 1121 r_8 Histo::FindWidth(r_8 xmax,r_8 frac, int_4 debug) const 1111 1122 { 1123 if(mBins<=0) return 0; 1112 1124 if (frac <= 0 || frac >= 1.) frac = 0.5; 1113 1125 … … 1205 1217 int_4 Histo::EstimeMax(int_4& im,r_8& xm,int_4 SzPav) const 1206 1218 { 1219 if(mBins<=0) return -1; 1207 1220 xm = 0; 1208 1221 if( SzPav <= 0 ) return -1; … … 1237 1250 void Histo::EstimeWidthS(r_8 frac,r_8& widthG,r_8& widthD) const 1238 1251 { 1252 if(mBins<=0) {frac=0.; return;} 1239 1253 int_4 i; 1240 1254 widthG = widthD = -1.; … … 1308 1322 { 1309 1323 1324 if(mBins<=0) return; 1310 1325 if( il > ih ) { il = 0; ih = mBins-1; } 1311 1326 if( il < 0 ) il = 0; … … 1490 1505 1491 1506 // Lecture des donnees Histo 1D 1492 dobj->mData = new r_8[dobj->mBins];1493 1507 is.GetLine(strg, 255); 1508 if(dobj->mBins>0) dobj->mData = new r_8[dobj->mBins]; 1494 1509 is.Get(dobj->mData, dobj->mBins); 1495 1510 … … 1497 1512 if(errok) { 1498 1513 is.GetLine(strg, 255); 1499 dobj->mErr2 = new r_8[dobj->mBins];1514 if(dobj->mBins>0) dobj->mErr2 = new r_8[dobj->mBins]; 1500 1515 is.Get(dobj->mErr2, dobj->mBins); 1501 1516 } -
trunk/SophyaLib/HiStats/histos.h
r3053 r3057 1 1 // This may look like C code, but it is really -*- C++ -*- 2 2 // 3 // $Id: histos.h,v 1.2 3 2006-08-12 17:29:29cmv Exp $3 // $Id: histos.h,v 1.24 2006-08-12 22:41:08 cmv Exp $ 4 4 // 5 5 -
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.