X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;ds=sidebyside;f=TRD%2FAliTRDdataArrayF.cxx;h=43c9e75afdd30c1b1756b8183e68d548bf10b129;hb=e0f71fb77c7cd08eb7f13697b22ee1aa2d49b17f;hp=96630e4aa5c8f8cd70fa8d33d56aed02df5446a8;hpb=793ff80c55ff5c109e52679681ffde680cc9ff22;p=u%2Fmrichter%2FAliRoot.git diff --git a/TRD/AliTRDdataArrayF.cxx b/TRD/AliTRDdataArrayF.cxx index 96630e4aa5c..43c9e75afdd 100644 --- a/TRD/AliTRDdataArrayF.cxx +++ b/TRD/AliTRDdataArrayF.cxx @@ -15,6 +15,12 @@ /* $Log$ +Revision 1.7 2000/11/20 08:56:07 cblume +Cleanup of data arrays + +Revision 1.6 2000/11/01 14:53:20 cblume +Merge with TRD-develop + Revision 1.1.2.3 2000/10/06 16:49:46 cblume Made Getters const @@ -71,6 +77,8 @@ AliTRDdataArrayF::AliTRDdataArrayF(Int_t nrow, Int_t ncol, Int_t ntime) // The row- and column dimensions are compressible. // + fElements = 0; + Allocate(nrow,ncol,ntime); } @@ -93,8 +101,7 @@ AliTRDdataArrayF::~AliTRDdataArrayF() // Destructor // - if (fElements) fElements->Delete(); - delete fElements; + if (fElements) delete fElements; } @@ -107,11 +114,10 @@ void AliTRDdataArrayF::Allocate(Int_t nrow, Int_t ncol, Int_t ntime) // The row- and column dimensions are compressible. // - if (fNelems < 0) AliTRDdataArray::Allocate(nrow,ncol,ntime); if (fElements) delete fElements; - fElements = new AliTRDarrayF; + fElements = new AliTRDarrayF(); fElements->Set(fNelems); } @@ -139,7 +145,7 @@ void AliTRDdataArrayF::Reset() // if (fElements) delete fElements; - fElements = new AliTRDarrayF; + fElements = new AliTRDarrayF(); fElements->Set(0); AliTRDdataArray::Reset(); @@ -156,7 +162,7 @@ Int_t AliTRDdataArrayF::GetSize() Int_t size = sizeof(this); if (fIndex) size += sizeof(fIndex) - + fIndex->GetSize() * sizeof(Float_t); + + fIndex->GetSize() * sizeof(Int_t); if (fElements) size += sizeof(fElements) + fElements->GetSize() * sizeof(Float_t); @@ -328,6 +334,7 @@ void AliTRDdataArrayF::Expand1() fNelems = fNdim1 * fNdim2; Float_t *buf = new Float_t[fNelems]; + memset(buf,0,fNelems*sizeof(Float_t)); fIndex->Set(fNdim2); @@ -341,10 +348,10 @@ void AliTRDdataArrayF::Expand1() // Negative sign counts the unwritten values (under threshold) if ((*fElements)[i] < 0) { - idx1 -= (Int_t) fElements->At(i); + idx1 -= TMath::Nint(fElements->At(i)); } else { - buf[(*fIndex)[idx2] + idx1] = fElements->At(i); + buf[(*fIndex)[idx2] + idx1] = (*fElements)[i]; idx1++; } if (idx1 == fNdim1) { @@ -370,17 +377,17 @@ void AliTRDdataArrayF::Compress1() // Compress a buffer of type 1 // - AliTRDarrayF buf; - buf.Set(fNelems); - AliTRDarrayI index; - index.Set(fNdim2); + AliTRDarrayF *buf = new AliTRDarrayF(); + buf->Set(fNelems); + AliTRDarrayI *index = new AliTRDarrayI(); + index->Set(fNdim2); Int_t icurrent = -1; Int_t izero; for (Int_t idx2 = 0; idx2 < fNdim2; idx2++){ // Set the idx2 pointer - index[idx2] = icurrent + 1; + (*index)[idx2] = icurrent + 1; // Reset the zero counter izero = 0; @@ -394,31 +401,33 @@ void AliTRDdataArrayF::Compress1() if (izero > 0) { // If we have currently izero counts under threshold icurrent++; - if (icurrent >= buf.fN) buf.Expand(icurrent*2); + if (icurrent >= buf->fN) buf->Expand(icurrent*2); // Store the number of entries below zero - buf[icurrent] = -izero; + (*buf)[icurrent] = -izero; izero = 0; } icurrent++; - if (icurrent >= buf.fN) buf.Expand(icurrent*2); - buf[icurrent] = GetDataFast(idx1,idx2); + if (icurrent >= buf->fN) buf->Expand(icurrent*2); + (*buf)[icurrent] = GetDataFast(idx1,idx2); } // If signal larger than threshold } // End of loop over idx1 if (izero > 0) { icurrent++; - if (icurrent >= buf.fN) buf.Expand(icurrent*2); + if (icurrent >= buf->fN) buf->Expand(icurrent*2); // Store the number of entries below zero - buf[icurrent] = -izero; + (*buf)[icurrent] = -izero; } } - buf.Expand(icurrent+1); - (*fElements) = buf; + buf->Expand(icurrent+1); + if (fElements) delete fElements; + fElements = buf; fNelems = fElements->fN; fBufType = 1; - (*fIndex) = index; + if (fIndex) delete fIndex; + fIndex = index; } @@ -430,7 +439,9 @@ void AliTRDdataArrayF::Expand2() // Int_t i, k; + Float_t *buf = new Float_t[fNelems]; + memset(buf,0,fNelems*sizeof(Float_t)); fNelems = fNdim1 * fNdim2; fIndex->Set(fNdim2); @@ -443,7 +454,8 @@ void AliTRDdataArrayF::Expand2() for (i = 0; i < n; i++){ // Negative sign counts the unwritten values (under threshold) if ((*fElements)[i] < 0) { - idx1 -= (Int_t) fElements->At(i); + //idx1 -= (Int_t) fElements->At(i); + idx1 -= TMath::Nint(fElements->At(i)); } else { buf[(*fIndex)[idx2]+idx1] = fElements->At(i); @@ -535,7 +547,8 @@ Bool_t AliTRDdataArrayF::First1() Int_t i; for (i = 0; i < fNelems; i++){ if (fElements->At(i) < 0) { - fCurrentIdx1 -= (Int_t) fElements->At(i); + //fCurrentIdx1 -= (Int_t) fElements->At(i); + fCurrentIdx1 -= TMath::Nint(fElements->At(i)); } else { fCurrentIdx1++; @@ -567,7 +580,8 @@ Bool_t AliTRDdataArrayF::Next1() Int_t i; for (i = fCurrentIndex + 1; i < fNelems; i++){ if (fElements->At(i) < 0) { - fCurrentIdx1 -= (Int_t) fElements->At(i); + //fCurrentIdx1 -= (Int_t) fElements->At(i); + fCurrentIdx1 -= TMath::Nint(fElements->At(i)); } else { fCurrentIdx1++; @@ -608,7 +622,8 @@ Float_t AliTRDdataArrayF::GetData1(Int_t idx1, Int_t idx2) const for (i = fIndex->At(idx2); ((i < n2) && (curidx1 < idx1)); i++){ if (fElements->At(i) < 0) { - curidx1 -= (Int_t) fElements->At(i); + //curidx1 -= (Int_t) fElements->At(i); + curidx1 -= TMath::Nint(fElements->At(i)); } else { curidx1++;