// Assignment operator
//
- if (this != &a) ((AliTRDSignalIndex &) a).Copy(*this);
+ if (this == &a) {
+ return *this;
+ }
+
+ fDet = a.fDet;
+ fLayer = a.fLayer;
+ fStack = a.fStack;
+ fSM = a.fSM;
+ fMaxLimit = a.fMaxLimit;
+ fPositionRC = a.fPositionRC;
+ fCountRC = a.fCountRC;
+ fSortedWasInit = a.fSortedWasInit;
+ fCurrRow = a.fCurrRow;
+ fCurrCol = a.fCurrCol;
+ fCurrTbin = a.fCurrTbin;
+ fNrows = a.fNrows;
+ fNcols = a.fNcols;
+ fNtbins = a.fNtbins;
+
+ if (fBoolIndex) {
+ delete [] fBoolIndex;
+ }
+ fBoolIndex = new Bool_t[fMaxLimit];
+ memcpy(fBoolIndex, fBoolIndex, fMaxLimit*sizeof(Bool_t));
+
+ if (fSortedIndex) {
+ delete [] fSortedIndex;
+ }
+ fSortedIndex = new RowCol[fMaxLimit+1];
+ memcpy(fSortedIndex, fSortedIndex, (fMaxLimit+1)*sizeof(RowCol));
+
+ ResetCounters();
+
return *this;
}
//_____________________________________________________________________________
void AliTRDSignalIndex::ResetArrays()
{
+ if (!IsAllocated())
+ return;
memset(fBoolIndex,0x00,sizeof(Bool_t)*fMaxLimit);
memset(fSortedIndex,0xFF,sizeof(RowCol)*fCountRC);
fSortedWasInit = kFALSE;
}
//_____________________________________________________________________________
-Bool_t AliTRDSignalIndex::NextRCIndex(Int_t &row, Int_t &col)
+Bool_t AliTRDSignalIndex::CheckSorting(Int_t &row, Int_t &col)
{
//
- // Returns next used RC combination
+ // Check whether array was read to end or it was not sorted until now
//
- if(fSortedIndex[fPositionRC].rc>-1){
- row = fCurrRow = fSortedIndex[fPositionRC].s.row;
- col = fCurrCol = fSortedIndex[fPositionRC].s.col;
- fPositionRC++;
- return kTRUE;
- }
- else {
- if(fSortedWasInit || fCountRC==1)
- { //we already reached the end of the array
- ResetCounters();
- row = fCurrRow;
- col = fCurrCol;
- return kFALSE;
- }
- else
- { //we have not created the sorted array up to now, let's do so
- InitSortedIndex();
- return NextRCIndex(row, col);
- }
- }
-
+ if(fSortedWasInit || fCountRC==1)
+ { //we already reached the end of the array
+ ResetCounters();
+ row = fCurrRow;
+ col = fCurrCol;
+ return kFALSE;
+ }
+ else
+ { //we have not sorted the array up to now, let's do so
+ InitSortedIndex();
+ return NextRCIndex(row, col);
+ }
}
//_____________________________________________________________________________