Changeset 2619 in Sophya for trunk/SophyaLib/HiStats
- Timestamp:
- Sep 15, 2004, 5:36:54 PM (21 years ago)
- Location:
- trunk/SophyaLib/HiStats
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/HiStats/histerr.cc
r2615 r2619 44 44 HistoErr::~HistoErr(void) 45 45 { 46 if(mNData) {delete [] mNData; mNData=NULL;} 47 } 46 Delete(); 47 } 48 48 49 /********* Methode *********/ 49 50 /*! Allocation du tableau mNData */ … … 56 57 57 58 /********* Methode *********/ 59 /*! Delete des tableaux */ 60 void HistoErr::Delete(void) 61 { 62 Histo::Delete(); 63 if(mNData) {delete [] mNData; mNData=NULL;} 64 } 65 66 /********* Methode *********/ 58 67 /*! 59 68 Remise a zero … … 61 70 void HistoErr::Zero(void) 62 71 { 63 if(mNData != NULL) memset(mNData,0,mBins*sizeof(uint_4));64 72 Histo::Zero(); 73 if(mNData) memset(mNData,0,mBins*sizeof(uint_4)); 65 74 } 66 75 … … 172 181 } 173 182 183 /********* Methode *********/ 184 /*! 185 Operateur egal HistoErr = HistoErr 186 */ 187 HistoErr& HistoErr::operator = (const HistoErr& h) 188 { 189 if(this==&h) return *this; 190 Delete(); 191 if(h.mBins<=0) return *this; 192 193 // Copy the "Histo" part 194 (Histo)(*this) = Histo::operator=(h); 195 // Copy the "entries by bin" table 196 allocate_mNData(h.mBins); 197 memcpy(mNData,h.mNData,mBins*sizeof(uint_4)); 198 199 return *this; 200 } 201 174 202 /////////////////////////////////////////////////////////// 175 203 // -------------------------------------------------------- -
trunk/SophyaLib/HiStats/histerr.h
r2608 r2619 44 44 void ToCorrel(void); 45 45 46 // Operators 47 HistoErr& operator = (const HistoErr& h); 48 46 49 protected: 47 50 void allocate_mNData(int nbin); 51 void Delete(void); 52 48 53 uint_4* mNData; //!< nombre d'entrees dans chaque bin 49 54 }; -
trunk/SophyaLib/HiStats/histos.cc
r2615 r2619 1 1 // 2 // $Id: histos.cc,v 1.1 8 2004-09-10 09:52:19cmv Exp $2 // $Id: histos.cc,v 1.19 2004-09-15 15:36:54 cmv Exp $ 3 3 // 4 4 … … 57 57 Histo::Histo(const Histo& H) 58 58 : 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), 60 60 mUnder(H.mUnder), mOver(H.mOver), nHist(H.nHist), nEntries(H.nEntries), 61 61 mBins(H.mBins), mMin(H.mMin), mMax(H.mMax), 62 62 binWidth(H.binWidth) 63 63 { 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)); 71 67 } 72 68 … … 95 91 void Histo::Zero() 96 92 { 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)); 99 95 mUnder = mOver = 0; 100 96 nHist = 0; 101 97 nEntries = 0; 102 if( mErr2 != NULL) memset(mErr2, 0, mBins*sizeof(r_8));98 if(mErr2) memset(mErr2, 0, mBins*sizeof(r_8)); 103 99 } 104 100 … … 111 107 if(mBins<=0) return; 112 108 if(mErr2==NULL) mErr2 = new r_8[mBins]; 113 memset(mErr2, 0,mBins*sizeof(r_8));109 memset(mErr2,0,mBins*sizeof(r_8)); 114 110 } 115 111 … … 121 117 { 122 118 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]; 129 124 mUnder = h.mUnder; 130 125 mOver = h.mOver; … … 136 131 binWidth = h.binWidth; 137 132 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)); 140 135 141 136 return *this;
Note:
See TracChangeset
for help on using the changeset viewer.