* provided "as is" without express or implied warranty. *
**************************************************************************/
-/*
-$Log$
-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
-
-Revision 1.1.2.2 2000/10/04 16:34:58 cblume
-Replace include files by forward declarations
-
-Revision 1.5 2000/06/27 13:08:50 cblume
-Changed to Copy(TObject &A) to appease the HP-compiler
-
-Revision 1.4 2000/06/09 11:10:07 cblume
-Compiler warnings and coding conventions, next round
-
-Revision 1.3 2000/06/08 18:32:58 cblume
-Make code compliant to coding conventions
-
-Revision 1.2 2000/05/08 16:17:27 cblume
-Merge TRD-develop
-
-Revision 1.1.2.1 2000/05/08 15:14:34 cblume
-Add new data array classes
-
-*/
+/* $Id$ */
///////////////////////////////////////////////////////////////////////////////
// //
}
//_____________________________________________________________________________
-AliTRDdataArrayI::AliTRDdataArrayI(const AliTRDdataArrayI &a)
+AliTRDdataArrayI::AliTRDdataArrayI(const AliTRDdataArrayI &a):AliTRDdataArray(a)
{
//
// AliTRDdataArrayI copy constructor
}
//_____________________________________________________________________________
-Int_t AliTRDdataArrayI::GetSize()
+Int_t AliTRDdataArrayI::GetSize() const
{
//
// Returns the size of the complete object
}
//_____________________________________________________________________________
-Int_t AliTRDdataArrayI::GetDataSize()
+Int_t AliTRDdataArrayI::GetDataSize() const
{
//
// Returns the size of only the data part
Int_t over = 0;
for (Bool_t cont = First(); cont == kTRUE; cont = Next()) {
- if ((fCurrentIdx1 < 0) || (fCurrentIdx1 > fNdim1)) continue;
- if ((fCurrentIdx2 < 0) || (fCurrentIdx2 > fNdim2)) continue;
+ if ((fCurrentIdx1 < 0) || (fCurrentIdx1 >= fNdim1)) continue;
+ if ((fCurrentIdx2 < 0) || (fCurrentIdx2 >= fNdim2)) continue;
if (fElements->At(fCurrentIndex) > threshold) over++;
}
}
+//_____________________________________________________________________________
+Int_t AliTRDdataArrayI::GetDataFast(Int_t idx1, Int_t idx2) const
+{
+ //
+ // Returns the data value at a given position of the array
+ // No boundary checking
+ //
+
+ return fElements->At(fIndex->At(idx2)+idx1);
+
+}
+
//_____________________________________________________________________________
void AliTRDdataArrayI::Compress(Int_t bufferType, Int_t threshold)
{
fNelems = fNdim1 * fNdim2;
Int_t *buf = new Int_t[fNelems];
+ memset(buf,0,fNelems*sizeof(Int_t));
fIndex->Set(fNdim2);
// Negative sign counts the unwritten values (under threshold)
if ((*fElements)[i] < 0) {
- idx1 -= fElements->At(i);
+ idx1 -= (*fElements)[i];
}
else {
- buf[(*fIndex)[idx2] + idx1] = fElements->At(i);
+ buf[(*fIndex)[idx2] + idx1] = (*fElements)[i];
idx1++;
}
if (idx1 == fNdim1) {
// Compress a buffer of type 1
//
- //AliTRDarrayI buf;
- //buf.Set(fNelems);
- //AliTRDarrayI index;
- //index.Set(fNdim2);
AliTRDarrayI *buf = new AliTRDarrayI();
buf->Set(fNelems);
AliTRDarrayI *index = new AliTRDarrayI();
for (Int_t idx2 = 0; idx2 < fNdim2; idx2++){
// Set the idx2 pointer
- //index[idx2] = icurrent + 1;
(*index)[idx2] = icurrent + 1;
// Reset the zero counter
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);
if (icurrent >= buf->fN) buf->Expand(icurrent*2);
- //buf[icurrent] = GetDataFast(idx1,idx2);
(*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;
- //fNelems = fElements->fN;
- //fBufType = 1;
- //(*fIndex) = index;
buf->Expand(icurrent+1);
if (fElements) delete fElements;
fElements = buf;
//
Int_t i, k;
+
Int_t *buf = new Int_t[fNelems];
+ memset(buf,0,fNelems*sizeof(Int_t));
fNelems = fNdim1 * fNdim2;
fIndex->Set(fNdim2);
}
-//_____________________________________________________________________________
-Int_t AliTRDdataArrayI::GetDataFast(Int_t idx1, Int_t idx2) const
-{
- //
- // Returns the value at a given position in the array
- //
-
- return fElements->At(fIndex->At(idx2) + idx1);
-
-}
-
//_____________________________________________________________________________
void AliTRDdataArrayI::SetData(Int_t row, Int_t col, Int_t time, Int_t value)
{
}
//_____________________________________________________________________________
-void AliTRDdataArrayI::SetDataFast(Int_t idx1, Int_t idx2, Int_t value)
+void AliTRDdataArrayI::SetDataFast(Int_t idx1, Int_t idx2, Int_t value)
{
//
- // Set the value at a given position in the array
+ // Sets the data value at a given position of the array
+ // No boundary checking
//
- if ((idx1 < 0) || (idx1 >= fNdim1) ||
- (idx2 < 0) || (idx2 >= fNdim2)) {
- TObject::Error("SetDataFast"
- ,"idx1 %d idx2 %d out of bounds (size: %d x %d, this: 0x%08x)"
- ,idx1,idx2,fNdim1,fNdim2,this);
- }
-
- (*fElements)[fIndex->fArray[idx2] + idx1] = value;
+ (*fElements)[fIndex->fArray[idx2]+idx1] = value;
}