Changeset 2619 in Sophya for trunk/SophyaLib/HiStats/histos.cc


Ignore:
Timestamp:
Sep 15, 2004, 5:36:54 PM (21 years ago)
Author:
cmv
Message:

correc bug HistoErr::operator=() + remise en forme createur/destructeur Histos cmv 15/9/04

File:
1 edited

Legend:

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

    r2615 r2619  
    11//
    2 // $Id: histos.cc,v 1.18 2004-09-10 09:52:19 cmv Exp $
     2// $Id: histos.cc,v 1.19 2004-09-15 15:36:54 cmv Exp $
    33//
    44
     
    5757Histo::Histo(const Histo& H)
    5858: mData((H.mBins>0)? new r_8[H.mBins] : NULL),
    59   mErr2(NULL),
     59  mErr2((H.mBins>0 && H.mErr2!=NULL)? new r_8[H.mBins]: NULL),
    6060  mUnder(H.mUnder), mOver(H.mOver), nHist(H.nHist), nEntries(H.nEntries),
    6161  mBins(H.mBins), mMin(H.mMin), mMax(H.mMax),
    6262  binWidth(H.binWidth)
    6363{
    64   if(mBins>0) {
    65     memcpy(mData, H.mData, mBins*sizeof(r_8));
    66     if( H.mErr2 != NULL ) {
    67       mErr2 = new r_8[mBins];
    68       memcpy(mErr2, H.mErr2, mBins*sizeof(r_8));
    69     }
    70   }
     64  if(mBins<=0) return;
     65  memcpy(mData,H.mData,mBins*sizeof(r_8));
     66  if(H.mErr2) memcpy(mErr2, H.mErr2, mBins*sizeof(r_8));
    7167}
    7268
     
    9591void Histo::Zero()
    9692{
    97   if(mBins<=0) return;
    98   memset(mData, 0, mBins*sizeof(r_8));
     93  if(mBins<=0 || mData==NULL) return;
     94  memset(mData,0,mBins*sizeof(r_8));
    9995  mUnder = mOver = 0;
    10096  nHist = 0;
    10197  nEntries = 0;
    102   if( mErr2 != NULL ) memset(mErr2, 0, mBins*sizeof(r_8));
     98  if(mErr2) memset(mErr2, 0, mBins*sizeof(r_8));
    10399}
    104100
     
    111107 if(mBins<=0) return;
    112108 if(mErr2==NULL) mErr2 = new r_8[mBins];
    113  memset(mErr2, 0, mBins*sizeof(r_8));
     109 memset(mErr2,0,mBins*sizeof(r_8));
    114110}
    115111
     
    121117{
    122118  if(this == &h) return *this;
    123   if( h.mBins <= 0 ) {Delete(); return *this;}
    124   if( h.mBins > mBins ) Delete();
    125   if(!h.mErr2 && mErr2 ) { delete [] mErr2; mErr2=NULL;}
    126   if(!mData) mData = new r_8[h.mBins];
    127   if(h.mErr2 && !mErr2 ) mErr2 = new r_8[h.mBins];
    128 
     119  Delete();
     120  if(h.mBins<=0 || h.mData==NULL) return *this;
     121
     122  mData = new r_8[h.mBins];
     123  if(h.mErr2) mErr2 = new r_8[h.mBins];
    129124  mUnder = h.mUnder;
    130125  mOver = h.mOver;
     
    136131  binWidth = h.binWidth;
    137132 
    138   memcpy(mData, h.mData, mBins*sizeof(r_8));
    139   if(mErr2) memcpy(mErr2, h.mErr2, mBins*sizeof(r_8));
     133  memcpy(mData,h.mData,mBins*sizeof(r_8));
     134  if(mErr2) memcpy(mErr2,h.mErr2,mBins*sizeof(r_8));
    140135
    141136  return *this;
Note: See TracChangeset for help on using the changeset viewer.