Changeset 3053 in Sophya for trunk/SophyaLib/HiStats/hisprof.cc
- Timestamp:
- Aug 12, 2006, 7:29:29 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/HiStats/hisprof.cc
r2868 r3053 18 18 */ 19 19 HProf::HProf() 20 : Histo() 21 , SumY(NULL), SumY2(NULL), SumW(NULL),Ok(false), YMin(1.), YMax(-1.), Opt(0)20 : Histo(), mSumY(NULL), mSumY2(NULL), mSumW(NULL) 21 , Ok(false), YMin(1.), YMax(-1.), Opt(0) 22 22 { 23 23 } … … 32 32 */ 33 33 HProf::HProf(r_8 xMin, r_8 xMax, int_4 nBin, r_8 yMin, r_8 yMax) 34 : Histo(xMin,xMax,nBin) 35 , SumY( (nBin>0) ? new r_8[nBin] : NULL) 36 , SumY2((nBin>0) ? new r_8[nBin] : NULL) 37 , SumW( (nBin>0) ? new r_8[nBin] : NULL) 38 , Ok(false), YMin(yMin), YMax(yMax), Opt(0) 39 { 40 Histo::Errors(); 41 Zero(); 34 : Histo(), mSumY(NULL), mSumY2(NULL), mSumW(NULL) 35 { 36 CreateOrResize(xMin,xMax,nBin,yMin,yMax); 42 37 } 43 38 … … 47 42 */ 48 43 HProf::HProf(r_4 xMin, r_4 xMax, int_4 nBin, r_4 yMin, r_4 yMax) 49 : Histo((r_8)xMin,(r_8)xMax,nBin) 50 , SumY( (nBin>0) ? new r_8[nBin] : NULL) 51 , SumY2((nBin>0) ? new r_8[nBin] : NULL) 52 , SumW( (nBin>0) ? new r_8[nBin] : NULL) 53 , Ok(false), YMin((r_8)yMin), YMax((r_8)yMax), Opt(0) 54 { 55 Histo::Errors(); 56 Zero(); 44 : Histo(), mSumY(NULL), mSumY2(NULL), mSumW(NULL) 45 { 46 CreateOrResize((r_8)xMin,(r_8)xMax,nBin,(r_8)yMin,(r_8)yMax); 57 47 } 58 48 … … 63 53 HProf::HProf(const HProf& H) 64 54 : Histo(H) 65 , SumY((H.mBins>0) ? new r_8[H.mBins] : NULL)66 , SumY2((H.mBins>0) ? new r_8[H.mBins] : NULL)67 , SumW((H.mBins>0) ? new r_8[H.mBins] : NULL)55 , mSumY((H.mBins>0) ? new r_8[H.mBins] : NULL) 56 , mSumY2((H.mBins>0) ? new r_8[H.mBins] : NULL) 57 , mSumW((H.mBins>0) ? new r_8[H.mBins] : NULL) 68 58 , Ok(H.Ok), YMin(H.YMin), YMax(H.YMax), Opt(H.Opt) 69 59 { 70 60 if(mBins>0) { 71 memcpy( SumY, H.SumY, mBins*sizeof(r_8));72 memcpy( SumY2, H.SumY2, mBins*sizeof(r_8));73 memcpy( SumW, H.SumW, mBins*sizeof(r_8));61 memcpy(mSumY, H.mSumY, mBins*sizeof(r_8)); 62 memcpy(mSumY2, H.mSumY2, mBins*sizeof(r_8)); 63 memcpy(mSumW, H.mSumW, mBins*sizeof(r_8)); 74 64 } 75 65 UpdateHisto(); … … 78 68 /********* Methode *********/ 79 69 /*! 70 allocation 71 */ 72 void HProf::CreateOrResize(r_8 xMin, r_8 xMax, int_4 nBin, r_8 yMin, r_8 yMax) 73 { 74 //cout<<"HProf::CreateOrResize()"<<endl; 75 Histo::CreateOrResize(xMin,xMax,nBin); 76 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; 88 } 89 90 /********* Methode *********/ 91 /*! 80 92 Des-allocation 81 93 */ 82 94 void HProf::Delete() 83 95 { 84 if( SumY != NULL ) { delete[] SumY; SumY = NULL;} 85 if( SumY2 != NULL ) { delete[] SumY2; SumY2 = NULL;} 86 if( SumW != NULL ) { delete[] SumW; SumW = NULL;} 96 //cout<<"HProf::Delete()"<<endl; 97 Histo::Delete(); 98 if(mSumY != NULL) {delete[] mSumY; mSumY = NULL;} 99 if(mSumY2!= NULL) {delete[] mSumY2; mSumY2 = NULL;} 100 if(mSumW != NULL) {delete[] mSumW; mSumW = NULL;} 87 101 Ok = false; 88 102 } … … 94 108 HProf::~HProf() 95 109 { 96 Delete();110 Delete(); 97 111 } 98 112 … … 112 126 void HProf::Zero() 113 127 { 114 memset(SumY, 0, mBins*sizeof(r_8)); 115 memset(SumY2, 0, mBins*sizeof(r_8)); 116 memset(SumW, 0, mBins*sizeof(r_8)); 128 Histo::Zero(); 129 memset(mSumY, 0, mBins*sizeof(r_8)); 130 memset(mSumY2, 0, mBins*sizeof(r_8)); 131 memset(mSumW, 0, mBins*sizeof(r_8)); 117 132 Ok = false; 118 Histo::Zero();119 133 } 120 134 … … 158 172 r_8 m,e2; 159 173 if(mBins>0) for(int_4 i=0;i<mBins;i++) { 160 if( SumW[i]<=0.) {174 if(mSumW[i]<=0.) { 161 175 m = e2 = 0.; 162 176 } else { 163 m = SumY[i]/SumW[i];164 e2 = SumY2[i]/SumW[i] - m*m;165 if(Opt) e2 /= SumW[i];177 m = mSumY[i]/mSumW[i]; 178 e2 = mSumY2[i]/mSumW[i] - m*m; 179 if(Opt) e2 /= mSumW[i]; 166 180 } 167 181 mData[i] = m; … … 187 201 else { 188 202 Ok = false; 189 SumY[numBin] += y*w;190 SumY2[numBin] += y*y*w;191 SumW[numBin] += w;203 mSumY[numBin] += y*w; 204 mSumY2[numBin] += y*y*w; 205 mSumW[numBin] += w; 192 206 nHist += w; 193 207 nEntries++; … … 206 220 else { 207 221 Ok = false; 208 SumY[numBin] += y*w;209 SumY2[numBin] += y*y*w;210 SumW[numBin] += w;222 mSumY[numBin] += y*w; 223 mSumY2[numBin] += y*y*w; 224 mSumW[numBin] += w; 211 225 nHist += w; 212 226 nEntries++; … … 224 238 Histo *hthis = (Histo *) this; 225 239 *hthis = (Histo) h; 226 if(! SumY)SumY = new r_8[mBins];227 if(! SumY2)SumY2 = new r_8[mBins];228 if(! SumW)SumW = new r_8[mBins];229 memcpy( SumY, h.SumY, mBins*sizeof(r_8));230 memcpy( SumY2, h.SumY2, mBins*sizeof(r_8));231 memcpy( SumW, h.SumW, mBins*sizeof(r_8));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)); 232 246 Ok = h.Ok; 233 247 YMin = h.YMin; … … 252 266 *hthis += (Histo) a; 253 267 if(mBins>0) for(int_4 i=0;i<mBins;i++) { 254 SumY[i] += a.SumY[i];255 SumY2[i] += a.SumY2[i];256 SumW[i] += a.SumW[i];268 mSumY[i] += a.mSumY[i]; 269 mSumY2[i] += a.mSumY2[i]; 270 mSumW[i] += a.mSumW[i]; 257 271 } 258 272 updatehisto(); … … 279 293 // Le nombre de bins est il plus grand ?? 280 294 if( mBins > binold ) { 281 delete [] SumY; SumY = new r_8[nbinew]; memset(SumY, 0,mBins*sizeof(r_8));282 delete [] SumY2; SumY2 = new r_8[nbinew]; memset(SumY2,0,mBins*sizeof(r_8));283 delete [] SumW; SumW = new r_8[nbinew]; memset(SumW, 0,mBins*sizeof(r_8));295 delete [] mSumY; mSumY = new r_8[nbinew]; memset(mSumY, 0,mBins*sizeof(r_8)); 296 delete [] mSumY2; mSumY2 = new r_8[nbinew]; memset(mSumY2,0,mBins*sizeof(r_8)); 297 delete [] mSumW; mSumW = new r_8[nbinew]; memset(mSumW, 0,mBins*sizeof(r_8)); 284 298 } 285 299 … … 294 308 r_8 wY = 0., wY2 = 0., wW = 0.; 295 309 if( ima == imi ) { 296 wY = H. SumY[imi] * binWidth/H.binWidth;297 wY2 = H. SumY2[imi] * binWidth/H.binWidth;298 wW = H. SumW[imi] * binWidth/H.binWidth;310 wY = H.mSumY[imi] * binWidth/H.binWidth; 311 wY2 = H.mSumY2[imi] * binWidth/H.binWidth; 312 wW = H.mSumW[imi] * binWidth/H.binWidth; 299 313 } else { 300 wY += H. SumY[imi] * (H.BinHighEdge(imi)-xmi)/H.binWidth;301 wY += H. SumY[ima] * (xma -H.BinLowEdge(ima))/H.binWidth;302 wY2 += H. SumY2[imi] * (H.BinHighEdge(imi)-xmi)/H.binWidth;303 wY2 += H. SumY2[ima] * (xma -H.BinLowEdge(ima))/H.binWidth;304 wW += H. SumW[imi] * (H.BinHighEdge(imi)-xmi)/H.binWidth;305 wW += H. SumW[ima] * (xma -H.BinLowEdge(ima))/H.binWidth;314 wY += H.mSumY[imi] * (H.BinHighEdge(imi)-xmi)/H.binWidth; 315 wY += H.mSumY[ima] * (xma -H.BinLowEdge(ima))/H.binWidth; 316 wY2 += H.mSumY2[imi] * (H.BinHighEdge(imi)-xmi)/H.binWidth; 317 wY2 += H.mSumY2[ima] * (xma -H.BinLowEdge(ima))/H.binWidth; 318 wW += H.mSumW[imi] * (H.BinHighEdge(imi)-xmi)/H.binWidth; 319 wW += H.mSumW[ima] * (xma -H.BinLowEdge(ima))/H.binWidth; 306 320 if(ima>imi+1) for(int_4 ii=imi+1;ii<ima;ii++) 307 {wY += H. SumY[ii]; wY2 += H.SumY2[ii]; wW += H.SumW[ii];}321 {wY += H.mSumY[ii]; wY2 += H.mSumY2[ii]; wW += H.mSumW[ii];} 308 322 } 309 SumY[i] += wY; SumY2[i] += wY2;SumW[i] += wW;310 } 311 // On synchronise les tableaux Sum?? et l'Histogramme323 mSumY[i] += wY; mSumY2[i] += wY2; mSumW[i] += wW; 324 } 325 // On synchronise les tableaux mSum?? et l'Histogramme 312 326 updatehisto(); 313 327 } … … 317 331 UpdateHisto(); 318 332 Histo::Show(os); 333 os <<" ymin="<<YMin<<" ymax="<<YMax<<" opt="<<Opt<< endl; 319 334 } 320 335 … … 346 361 // Lecture des donnees propres a l'histogramme de profil. 347 362 is.GetLine(strg,255); 348 dobj-> SumY = new r_8[dobj->mBins];349 dobj-> SumY2 = new r_8[dobj->mBins];350 dobj-> SumW = new r_8[dobj->mBins];351 is.Get(dobj-> SumY, dobj->mBins);352 is.Get(dobj-> SumY2, dobj->mBins);353 is.Get(dobj-> SumW, dobj->mBins);363 dobj->mSumY = new r_8[dobj->mBins]; 364 dobj->mSumY2 = new r_8[dobj->mBins]; 365 dobj->mSumW = new r_8[dobj->mBins]; 366 is.Get(dobj->mSumY, dobj->mBins); 367 is.Get(dobj->mSumY2, dobj->mBins); 368 is.Get(dobj->mSumW, dobj->mBins); 354 369 355 370 // Lecture de l'histogramme 356 371 is >> (Histo&)(*dobj); 372 357 373 return; 358 374 } … … 379 395 sprintf(strg,"HProf: SumY SumY2 SumW"); 380 396 os.PutLine(strg); 381 os.Put(dobj-> SumY, dobj->mBins);382 os.Put(dobj-> SumY2, dobj->mBins);383 os.Put(dobj-> SumW, dobj->mBins);397 os.Put(dobj->mSumY, dobj->mBins); 398 os.Put(dobj->mSumY2, dobj->mBins); 399 os.Put(dobj->mSumW, dobj->mBins); 384 400 385 401 // Ecriture de l'histogramme 386 // FIO_Histo fio_h((Histo&)*dobj);387 // fio_h.Write(os);388 402 os << (Histo&)(*dobj); 389 403
Note:
See TracChangeset
for help on using the changeset viewer.