Changeset 3057 in Sophya for trunk/SophyaLib/HiStats/histerr.cc


Ignore:
Timestamp:
Aug 13, 2006, 12:41:09 AM (19 years ago)
Author:
cmv
Message:
  • changement nom variables internes Histo...Histo2D
  • re-arrangement CreateOrResize et operator=
  • protection dans methodes (VMIN etc..) pour Histo 1d+2d vides

cmv 13/8/2006

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/HiStats/histerr.cc

    r3053 r3057  
    4949{
    5050  //cout<<"HistoErr::CreateOrResize()"<<endl;
     51  bool samelen = (nBin==mBins)? true: false;
    5152  Histo::CreateOrResize(xMin,xMax,nBin);
    5253  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));
    5457  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));
    6558}
    6659
     
    199192{
    200193  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));
    209200  mCorrel = h.mCorrel;
    210201
     
    244235// Lecture des donnees HistoErr
    245236is.Get(dobj->mBins);
    246   dobj->allocate_mNData(dobj->mBins);
     237if(dobj->mBins>0) dobj->mNData = new r_8[dobj->mBins];
    247238is.Get(dobj->mNData, dobj->mBins);
    248239
Note: See TracChangeset for help on using the changeset viewer.