ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id$ */

/*MI change -- for Rule checker
          -- added copy constructor and assignmet operator 
	  -- new GetSize return size of object in Bytes
          -- added GetDigitSize and GetOverTh function
	  -- added GetNRows, GetNCols function
          -- for Marek -I had it in my code  
*/ 

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//   Alice  digits array  object  AliDigits                                  //
//                                                                           //
//                                                                           //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////


#include "TClass.h"
#include <Riostream.h>
#include "TError.h"
#include "AliSegmentID.h"
#include "AliH2F.h"
#include <TArrayI.h>
#include <TArrayS.h>
#include "AliDigits.h"



//_____________________________________________________________________________
//_____________________________________________________________________________
//_____________________________________________________________________________
ClassImp(AliDigits)


 AliDigits::AliDigits()
           :AliSegmentID(),
            fNrows(0),
            fNcols(0),
	    fElements(0),
            fIndex(0),
            fBufType(0),
            fThreshold(0),
            fNelems(0),
            fCurrentRow(0),
            fCurrentCol(0),
            fCurrentIndex(0) 
{
  // 
  //default constructor
  //
  Invalidate();
}

AliDigits::AliDigits(const AliDigits& digits)
          :AliSegmentID(digits),
            fNrows(0),
            fNcols(0),
	    fElements(0),
            fIndex(0),
            fBufType(0),
            fThreshold(0),
            fNelems(0),
            fCurrentRow(0),
            fCurrentCol(0),
            fCurrentIndex(0)
{
  //
  //copy constructor
  //
  fNrows = digits.fNrows;
  fNcols = digits.fNcols;
  fElements = new TArrayS(*(digits.fElements));
  fIndex = new TArrayI(*(digits.fIndex));
  fBufType = digits.fBufType;
  fThreshold = digits.fThreshold;
  fNelems    = digits.fNelems;
}

AliDigits & AliDigits::operator =(const AliDigits & digits)
{
  //assignment operator
  if (this == &digits) return (*this); 

  fNrows = digits.fNrows;
  fNcols = digits.fNcols;
  if (fElements) delete fElements;
  fElements = new TArrayS(*(digits.fElements));
  if (fIndex) delete fIndex;
  fIndex = new TArrayI(*(digits.fIndex));
  fBufType = digits.fBufType;
  fThreshold = digits.fThreshold;
  fNelems    = digits.fNelems; 
  return (*this);
}

AliDigits::~AliDigits()
{
  //
  //default destructor
  if (fIndex !=0 ) {
    delete fIndex;
  }
  if (fElements != 0) {
    delete fElements;
  }
  
  
}


Bool_t AliDigits::OutOfBoundsError(const char *where, Int_t row, Int_t column) 
{
   // Generate an out-of-bounds error. Always returns false.
   ::Error(where, "row %d  col %d out of bounds (size: %d x %d, this: 0x%08lx)", 
	   row, column, fNrows, fNcols, (ULong_t) this);
   return kFALSE;
}


void AliDigits::Invalidate() 
{ 
  //
  //set default (invalid parameters)
  if (fIndex != 0)  delete  fIndex;
  fIndex = new TArrayI;
  
  if (fElements!= 0)     delete  fElements;
  
  fElements = new TArrayS;
  
  fNrows = fNcols =fNelems= -1; 
  fElements->Set(0); 
  fIndex->Set(0); 
  fBufType = -1;
}

void AliDigits::Allocate(Int_t rows, Int_t columns)
{
  //
  //construct empty buffer fDigits with size rows x columns
  Invalidate();
  if (rows <= 0) {
      Error("Allocate", "no of rows has to be positive");
      return;
   }
   if (columns <= 0) {
      Error("Allocate", "no of columns has to be positive");
      return;
   }
  fNrows = rows;
  fNcols=columns;
  fNelems = fNrows * fNcols;
  fElements->Set(fNelems);
  fIndex->Set(fNcols);
  for (Int_t i =0,k=0; i<fNcols;i++,k+=fNrows) 
  (*fIndex)[i]=k;
  fBufType =0;
}


Int_t AliDigits::GetSize()
{
  //
  //return size of object as represented in the memory
  //
  //  Int_t size = sizeof(this);
  Int_t size = 0;   // COVERITY consider the previous statment as bug 
                    // 
  if (fIndex!=0) size+= sizeof(fIndex)+fIndex->GetSize()*sizeof(Int_t);
  if (fElements!=0) size+= sizeof(fElements)+fElements->GetSize()*sizeof(Short_t);
  return size;
}

Int_t AliDigits::GetDigitSize() //return total size of pure digit
{
  //
  //return size of PURE DIGITS
  //
  if (fElements==0) return 0;
  else return sizeof(fElements)+fElements->GetSize()*sizeof(Short_t);
}

Int_t AliDigits::GetOverTh(Float_t threshold,Float_t x1, Float_t x2, Float_t y1, Float_t y2)
{
  //
  //return number of digits over threshold
  // 
 if ( (fElements==0) || (fElements->GetSize()<=0)) return 0;
 
 if (x1<=x2) {
    x1=0;
    x2=fNrows;
  }
  if (y1<=y2) {
     y1=0;
     y2=fNcols;
  }
  Int_t over=0;

  Bool_t cont=First();
  for ( cont=First(); cont==kTRUE;cont=Next()) {
    if ( (CurrentRow()<x1) || (CurrentRow()>x2)) continue;
    if ( (CurrentColumn()<y1) || (CurrentColumn()>y2)) continue;
    if (CurrentDigit()>threshold) over++;
  }
  return over;
}


Short_t AliDigits::GetDigit(Int_t row, Int_t column)
{
  //
  // return digit for given row and collumn
  if (fBufType ==0) return GetDigitFast(row,column);
  if (fBufType ==1) return GetDigit1(row,column);

  return 0;
}


void AliDigits::ExpandBuffer()
{  
  //
  //expand buffer to two dimensional array
  if (fBufType<0)  {
    Error("ExpandBuffer", "buffer doesn't exist");
    return;
  }
  if (fBufType==0)      return;
  
  //expanding of buffer type 1
  if (fBufType==1) ExpandBuffer1();
  
  fBufType = 0;
}

void AliDigits::CompresBuffer(Int_t bufferType,Int_t threshold)
{
  //
  //compres buffer according buffertype algorithm
  if (fBufType<0)  {
    Error("CompressBuffer", "buffer doesn't exist");
    return;
  }
  if (fBufType == bufferType) return;
  //
  if (fBufType>0) ExpandBuffer();
  if (fBufType !=0)  {
    Error("CompressBuffer", "buffer doesn't exist");
    return;
  }
  fThreshold = threshold;
  //compress buffer of type 1
  if ( bufferType == 1) CompresBuffer1();//end of compresing bufer of type 1 
}

Bool_t AliDigits::First()
{
  //adjust  first valid current digit
  if (fBufType ==0) return First0();
  if (fBufType ==1) return First1();
  return kFALSE;
}

Bool_t  AliDigits::Next()
{
  //addjust next valid current digit
  if (fBufType ==0) return Next0();
  if (fBufType ==1) return Next1();
  return kFALSE;
}
 
void AliDigits::AcceptHisto(AliH2F * his)
{
  //
  //make digits buffer with value according histograms values
  //for testing purpose  
  Int_t idim =his->GetNbinsX();
  Int_t jdim =his->GetNbinsY();
  if ( (idim<1)|| (jdim<1)) {
    return;
  }
  //allocate proper buffer size
  Allocate(idim,jdim);
  //set digits values
  for (Int_t i = 0; i<idim;i++)    
    for (Int_t j = 0; j<jdim;j++)
      {
        Int_t index = his->GetBin(i+1,j+1);     
        SetDigitFast((Short_t)his->GetBinContent(index),i,j);
      }   
}

AliH2F *  AliDigits::GenerHisto()
{
  //
  //make digits histo 
  char ch[30];
  snprintf(ch,30, "Segment_%d ",GetID());
  if ( (fNrows<1)|| (fNcols<1)) {
    return 0;
  }
  AliH2F * his  = new AliH2F("Digit histo",ch,fNrows,0,fNrows,fNcols,0,fNcols);
  ExpandBuffer();
  //set histogram  values
  for (Int_t i = 0; i<fNrows;i++)    
    for (Int_t j = 0; j<fNcols;j++)
        his->Fill(i,j,GetDigitFast(i,j));
  return his;
}

AliH2F *AliDigits::DrawDigits(const char *option,Float_t x1, Float_t x2, Float_t y1, Float_t y2)
{
  //
  //draw digits in given array
  //
  AliH2F *h2f = GenerHisto();
  if (x1>=0) {
      AliH2F *h2fsub = h2f->GetSubrange2d(x1,x2,y1,y2);
      delete h2f;
      h2f=h2fsub;
  }
  if (h2f==0) return 0;
  if (option!=0) h2f->Draw(option);
  else h2f->Draw();
  return h2f;  
}

void AliDigits::ExpandBuffer1()
{
  //
  //expand buffer of type to twodimensional array
  Int_t i,k;
  fNelems = fNrows*fNcols;
  Short_t * buf = new Short_t[fNelems];
  memset(buf,0,fNelems*sizeof(Short_t)); //MI change - 4.12.2000
  fIndex->Set(fNcols);
  for (i =0,k=0 ;i<fNcols;i++,k+=fNrows) (*fIndex)[i]=k;
  Int_t col=0;
  Int_t row = 0;
  Int_t n=fElements->fN;
  for (i=0;i<n;i++){
    //oposite signa means how many unwrited (under threshold) values
    if ((*fElements)[i]<0) row-=fElements->At(i); 
    else {
      buf[(*fIndex)[col]+row]=fElements->At(i);
      row++;
    }
    if (row==fNrows) {
      row=0;
      col++;
    }else 
      if (row>fNrows){
	Invalidate();
	delete [] buf;
	return;
      }      
  }
  fElements->Adopt(fNelems,buf);    
}

void AliDigits::CompresBuffer1()
{
  //
  //compres buffer according  algorithm 1
  //
  TArrayS  buf;  //lets have the nearly the "worst case"
  buf.Set(fNelems);
  TArrayI  index;
  index.Set(fNcols);
  Int_t icurrent=-1;
  Int_t izero;
  Short_t * cbuff = fElements->GetArray();  //MI change

  for (Int_t col = 0; col<fNcols; col++){      
    index[col]=icurrent+1;//set collumn pointer
    izero = 0;  //reset zer counter at the begining of the column
    for (Int_t row = 0; row< fNrows;row++){
      //if under threshold
      //if (GetDigitFast(row,col)<=fThreshold)  izero++;
      if (*cbuff<=fThreshold)  izero++;

      else{
	if (izero>0) {
	  //if we have currently izero count under threshold
	  icurrent++;	  
	  if (icurrent>=buf.fN) buf.Set(icurrent*2);
	  buf[icurrent]= -izero;  //write how many under zero
	  izero = 0;
	} //end of reseting izero
	icurrent++;
	if (icurrent>=buf.fN) buf.Set(icurrent*2);
	//buf[icurrent] = GetDigitFast(row,col);	    
	buf[icurrent] = *cbuff;	    
      }//if signal bigger then threshold	
       cbuff++;
    } //end of loop over rows
    if (izero>0) {
      icurrent++;	  
      if (icurrent>=buf.fN) buf.Set(icurrent*2);
      buf[icurrent]= -izero;  //write how many under zero
    }
  }//end of lopping over digits
  buf.Set(icurrent+1);
  (*fElements)=buf;
  fNelems = fElements->fN;
  fBufType = 1;
  (*fIndex) =index;
  //end of compresing bufer of type 1 
}



Bool_t AliDigits::First0()
{
  //
  //first for the buffer type 0
  fCurrentRow = -1;
  fCurrentCol = -1;
  fCurrentIndex = -1;
  Int_t i;
  for (i=0; (( i<fNelems) && (fElements->At(i)<=fThreshold));i++) {}  //MI1211
  if (i == fNelems) return kFALSE;
  fCurrentCol =i/fNrows;
  fCurrentRow =i%fNrows;
  fCurrentIndex = i;
  return kTRUE;	
}

Bool_t AliDigits::Next0()
{
  //
  //next for the buffer type 0
  //
  if (fCurrentIndex<0) return kFALSE;  // if we didn't adjust first 
  Int_t i;
  for (i=fCurrentIndex+1; ( (i<fNelems) && (fElements->At(i)<=fThreshold) ) ;i++) {}
  if (i >= fNelems)  {
    fCurrentIndex = -1;
    return kFALSE;
  }
  fCurrentCol =i/fNrows;
  fCurrentRow =i%fNrows;
  fCurrentIndex = i;
  return kTRUE;	
}

Bool_t AliDigits::First1()
{
  //
  //first for the buffer type 1
  fCurrentRow = -1;
  fCurrentCol = 0;
  fCurrentIndex = -1;
  Int_t i;
  for (i=0; i<fNelems; i++){
    if (fElements->At(i) < 0) fCurrentRow-=fElements->At(i);
    else      
      fCurrentRow++;
    if (fCurrentRow>=fNrows) {
       fCurrentCol++;
       fCurrentRow-=fNrows;
    }
    if (fElements->At(i)>fThreshold) break;
  }
  fCurrentIndex = i;
  if (fCurrentIndex>=0&&i<fNelems) return kTRUE;
  fCurrentRow =-1;
  fCurrentCol =-1;
  return kFALSE;	
}

Bool_t AliDigits::Next1()
{
  //
  //next for the buffer type 1
  if (fCurrentIndex<0) return kFALSE;  // if we didn't adjust first 
  Int_t i;
  for (i=fCurrentIndex+1; i<fNelems;i++){
    if (fElements->At(i) < 0) fCurrentRow-=fElements->At(i);
    else      
      fCurrentRow++;
    if (fCurrentRow>=fNrows) {
      fCurrentCol++;
      fCurrentRow-=fNrows;
    }
    if (fElements->At(i)>fThreshold) break;
  }
  fCurrentIndex = i;
  if ( (i>=0) && (i<fNelems) ) return kTRUE;
  fCurrentRow =-1;
  fCurrentCol =-1;
  return kFALSE;
}

Short_t AliDigits::GetDigit1(Int_t row, Int_t column)
{
  //
  //return digit for given row and column  the buffer type 1
  //no control performed
  
  Int_t i,n2;
  if ( (column+1)>=fNcols) n2 = fNelems;
  else
    n2 = fIndex->At(column+1);
  Int_t irow = 0; //current row    
 
  for (i=fIndex->At(column); ( (i<n2) && (irow<row) );i++){
    if (fElements->At(i) < 0) irow-=fElements->At(i);
    else      
      irow++;
  }
  if ( irow == row ) return fElements->At(i);
  return -1;
}

 AliDigits.cxx:1
 AliDigits.cxx:2
 AliDigits.cxx:3
 AliDigits.cxx:4
 AliDigits.cxx:5
 AliDigits.cxx:6
 AliDigits.cxx:7
 AliDigits.cxx:8
 AliDigits.cxx:9
 AliDigits.cxx:10
 AliDigits.cxx:11
 AliDigits.cxx:12
 AliDigits.cxx:13
 AliDigits.cxx:14
 AliDigits.cxx:15
 AliDigits.cxx:16
 AliDigits.cxx:17
 AliDigits.cxx:18
 AliDigits.cxx:19
 AliDigits.cxx:20
 AliDigits.cxx:21
 AliDigits.cxx:22
 AliDigits.cxx:23
 AliDigits.cxx:24
 AliDigits.cxx:25
 AliDigits.cxx:26
 AliDigits.cxx:27
 AliDigits.cxx:28
 AliDigits.cxx:29
 AliDigits.cxx:30
 AliDigits.cxx:31
 AliDigits.cxx:32
 AliDigits.cxx:33
 AliDigits.cxx:34
 AliDigits.cxx:35
 AliDigits.cxx:36
 AliDigits.cxx:37
 AliDigits.cxx:38
 AliDigits.cxx:39
 AliDigits.cxx:40
 AliDigits.cxx:41
 AliDigits.cxx:42
 AliDigits.cxx:43
 AliDigits.cxx:44
 AliDigits.cxx:45
 AliDigits.cxx:46
 AliDigits.cxx:47
 AliDigits.cxx:48
 AliDigits.cxx:49
 AliDigits.cxx:50
 AliDigits.cxx:51
 AliDigits.cxx:52
 AliDigits.cxx:53
 AliDigits.cxx:54
 AliDigits.cxx:55
 AliDigits.cxx:56
 AliDigits.cxx:57
 AliDigits.cxx:58
 AliDigits.cxx:59
 AliDigits.cxx:60
 AliDigits.cxx:61
 AliDigits.cxx:62
 AliDigits.cxx:63
 AliDigits.cxx:64
 AliDigits.cxx:65
 AliDigits.cxx:66
 AliDigits.cxx:67
 AliDigits.cxx:68
 AliDigits.cxx:69
 AliDigits.cxx:70
 AliDigits.cxx:71
 AliDigits.cxx:72
 AliDigits.cxx:73
 AliDigits.cxx:74
 AliDigits.cxx:75
 AliDigits.cxx:76
 AliDigits.cxx:77
 AliDigits.cxx:78
 AliDigits.cxx:79
 AliDigits.cxx:80
 AliDigits.cxx:81
 AliDigits.cxx:82
 AliDigits.cxx:83
 AliDigits.cxx:84
 AliDigits.cxx:85
 AliDigits.cxx:86
 AliDigits.cxx:87
 AliDigits.cxx:88
 AliDigits.cxx:89
 AliDigits.cxx:90
 AliDigits.cxx:91
 AliDigits.cxx:92
 AliDigits.cxx:93
 AliDigits.cxx:94
 AliDigits.cxx:95
 AliDigits.cxx:96
 AliDigits.cxx:97
 AliDigits.cxx:98
 AliDigits.cxx:99
 AliDigits.cxx:100
 AliDigits.cxx:101
 AliDigits.cxx:102
 AliDigits.cxx:103
 AliDigits.cxx:104
 AliDigits.cxx:105
 AliDigits.cxx:106
 AliDigits.cxx:107
 AliDigits.cxx:108
 AliDigits.cxx:109
 AliDigits.cxx:110
 AliDigits.cxx:111
 AliDigits.cxx:112
 AliDigits.cxx:113
 AliDigits.cxx:114
 AliDigits.cxx:115
 AliDigits.cxx:116
 AliDigits.cxx:117
 AliDigits.cxx:118
 AliDigits.cxx:119
 AliDigits.cxx:120
 AliDigits.cxx:121
 AliDigits.cxx:122
 AliDigits.cxx:123
 AliDigits.cxx:124
 AliDigits.cxx:125
 AliDigits.cxx:126
 AliDigits.cxx:127
 AliDigits.cxx:128
 AliDigits.cxx:129
 AliDigits.cxx:130
 AliDigits.cxx:131
 AliDigits.cxx:132
 AliDigits.cxx:133
 AliDigits.cxx:134
 AliDigits.cxx:135
 AliDigits.cxx:136
 AliDigits.cxx:137
 AliDigits.cxx:138
 AliDigits.cxx:139
 AliDigits.cxx:140
 AliDigits.cxx:141
 AliDigits.cxx:142
 AliDigits.cxx:143
 AliDigits.cxx:144
 AliDigits.cxx:145
 AliDigits.cxx:146
 AliDigits.cxx:147
 AliDigits.cxx:148
 AliDigits.cxx:149
 AliDigits.cxx:150
 AliDigits.cxx:151
 AliDigits.cxx:152
 AliDigits.cxx:153
 AliDigits.cxx:154
 AliDigits.cxx:155
 AliDigits.cxx:156
 AliDigits.cxx:157
 AliDigits.cxx:158
 AliDigits.cxx:159
 AliDigits.cxx:160
 AliDigits.cxx:161
 AliDigits.cxx:162
 AliDigits.cxx:163
 AliDigits.cxx:164
 AliDigits.cxx:165
 AliDigits.cxx:166
 AliDigits.cxx:167
 AliDigits.cxx:168
 AliDigits.cxx:169
 AliDigits.cxx:170
 AliDigits.cxx:171
 AliDigits.cxx:172
 AliDigits.cxx:173
 AliDigits.cxx:174
 AliDigits.cxx:175
 AliDigits.cxx:176
 AliDigits.cxx:177
 AliDigits.cxx:178
 AliDigits.cxx:179
 AliDigits.cxx:180
 AliDigits.cxx:181
 AliDigits.cxx:182
 AliDigits.cxx:183
 AliDigits.cxx:184
 AliDigits.cxx:185
 AliDigits.cxx:186
 AliDigits.cxx:187
 AliDigits.cxx:188
 AliDigits.cxx:189
 AliDigits.cxx:190
 AliDigits.cxx:191
 AliDigits.cxx:192
 AliDigits.cxx:193
 AliDigits.cxx:194
 AliDigits.cxx:195
 AliDigits.cxx:196
 AliDigits.cxx:197
 AliDigits.cxx:198
 AliDigits.cxx:199
 AliDigits.cxx:200
 AliDigits.cxx:201
 AliDigits.cxx:202
 AliDigits.cxx:203
 AliDigits.cxx:204
 AliDigits.cxx:205
 AliDigits.cxx:206
 AliDigits.cxx:207
 AliDigits.cxx:208
 AliDigits.cxx:209
 AliDigits.cxx:210
 AliDigits.cxx:211
 AliDigits.cxx:212
 AliDigits.cxx:213
 AliDigits.cxx:214
 AliDigits.cxx:215
 AliDigits.cxx:216
 AliDigits.cxx:217
 AliDigits.cxx:218
 AliDigits.cxx:219
 AliDigits.cxx:220
 AliDigits.cxx:221
 AliDigits.cxx:222
 AliDigits.cxx:223
 AliDigits.cxx:224
 AliDigits.cxx:225
 AliDigits.cxx:226
 AliDigits.cxx:227
 AliDigits.cxx:228
 AliDigits.cxx:229
 AliDigits.cxx:230
 AliDigits.cxx:231
 AliDigits.cxx:232
 AliDigits.cxx:233
 AliDigits.cxx:234
 AliDigits.cxx:235
 AliDigits.cxx:236
 AliDigits.cxx:237
 AliDigits.cxx:238
 AliDigits.cxx:239
 AliDigits.cxx:240
 AliDigits.cxx:241
 AliDigits.cxx:242
 AliDigits.cxx:243
 AliDigits.cxx:244
 AliDigits.cxx:245
 AliDigits.cxx:246
 AliDigits.cxx:247
 AliDigits.cxx:248
 AliDigits.cxx:249
 AliDigits.cxx:250
 AliDigits.cxx:251
 AliDigits.cxx:252
 AliDigits.cxx:253
 AliDigits.cxx:254
 AliDigits.cxx:255
 AliDigits.cxx:256
 AliDigits.cxx:257
 AliDigits.cxx:258
 AliDigits.cxx:259
 AliDigits.cxx:260
 AliDigits.cxx:261
 AliDigits.cxx:262
 AliDigits.cxx:263
 AliDigits.cxx:264
 AliDigits.cxx:265
 AliDigits.cxx:266
 AliDigits.cxx:267
 AliDigits.cxx:268
 AliDigits.cxx:269
 AliDigits.cxx:270
 AliDigits.cxx:271
 AliDigits.cxx:272
 AliDigits.cxx:273
 AliDigits.cxx:274
 AliDigits.cxx:275
 AliDigits.cxx:276
 AliDigits.cxx:277
 AliDigits.cxx:278
 AliDigits.cxx:279
 AliDigits.cxx:280
 AliDigits.cxx:281
 AliDigits.cxx:282
 AliDigits.cxx:283
 AliDigits.cxx:284
 AliDigits.cxx:285
 AliDigits.cxx:286
 AliDigits.cxx:287
 AliDigits.cxx:288
 AliDigits.cxx:289
 AliDigits.cxx:290
 AliDigits.cxx:291
 AliDigits.cxx:292
 AliDigits.cxx:293
 AliDigits.cxx:294
 AliDigits.cxx:295
 AliDigits.cxx:296
 AliDigits.cxx:297
 AliDigits.cxx:298
 AliDigits.cxx:299
 AliDigits.cxx:300
 AliDigits.cxx:301
 AliDigits.cxx:302
 AliDigits.cxx:303
 AliDigits.cxx:304
 AliDigits.cxx:305
 AliDigits.cxx:306
 AliDigits.cxx:307
 AliDigits.cxx:308
 AliDigits.cxx:309
 AliDigits.cxx:310
 AliDigits.cxx:311
 AliDigits.cxx:312
 AliDigits.cxx:313
 AliDigits.cxx:314
 AliDigits.cxx:315
 AliDigits.cxx:316
 AliDigits.cxx:317
 AliDigits.cxx:318
 AliDigits.cxx:319
 AliDigits.cxx:320
 AliDigits.cxx:321
 AliDigits.cxx:322
 AliDigits.cxx:323
 AliDigits.cxx:324
 AliDigits.cxx:325
 AliDigits.cxx:326
 AliDigits.cxx:327
 AliDigits.cxx:328
 AliDigits.cxx:329
 AliDigits.cxx:330
 AliDigits.cxx:331
 AliDigits.cxx:332
 AliDigits.cxx:333
 AliDigits.cxx:334
 AliDigits.cxx:335
 AliDigits.cxx:336
 AliDigits.cxx:337
 AliDigits.cxx:338
 AliDigits.cxx:339
 AliDigits.cxx:340
 AliDigits.cxx:341
 AliDigits.cxx:342
 AliDigits.cxx:343
 AliDigits.cxx:344
 AliDigits.cxx:345
 AliDigits.cxx:346
 AliDigits.cxx:347
 AliDigits.cxx:348
 AliDigits.cxx:349
 AliDigits.cxx:350
 AliDigits.cxx:351
 AliDigits.cxx:352
 AliDigits.cxx:353
 AliDigits.cxx:354
 AliDigits.cxx:355
 AliDigits.cxx:356
 AliDigits.cxx:357
 AliDigits.cxx:358
 AliDigits.cxx:359
 AliDigits.cxx:360
 AliDigits.cxx:361
 AliDigits.cxx:362
 AliDigits.cxx:363
 AliDigits.cxx:364
 AliDigits.cxx:365
 AliDigits.cxx:366
 AliDigits.cxx:367
 AliDigits.cxx:368
 AliDigits.cxx:369
 AliDigits.cxx:370
 AliDigits.cxx:371
 AliDigits.cxx:372
 AliDigits.cxx:373
 AliDigits.cxx:374
 AliDigits.cxx:375
 AliDigits.cxx:376
 AliDigits.cxx:377
 AliDigits.cxx:378
 AliDigits.cxx:379
 AliDigits.cxx:380
 AliDigits.cxx:381
 AliDigits.cxx:382
 AliDigits.cxx:383
 AliDigits.cxx:384
 AliDigits.cxx:385
 AliDigits.cxx:386
 AliDigits.cxx:387
 AliDigits.cxx:388
 AliDigits.cxx:389
 AliDigits.cxx:390
 AliDigits.cxx:391
 AliDigits.cxx:392
 AliDigits.cxx:393
 AliDigits.cxx:394
 AliDigits.cxx:395
 AliDigits.cxx:396
 AliDigits.cxx:397
 AliDigits.cxx:398
 AliDigits.cxx:399
 AliDigits.cxx:400
 AliDigits.cxx:401
 AliDigits.cxx:402
 AliDigits.cxx:403
 AliDigits.cxx:404
 AliDigits.cxx:405
 AliDigits.cxx:406
 AliDigits.cxx:407
 AliDigits.cxx:408
 AliDigits.cxx:409
 AliDigits.cxx:410
 AliDigits.cxx:411
 AliDigits.cxx:412
 AliDigits.cxx:413
 AliDigits.cxx:414
 AliDigits.cxx:415
 AliDigits.cxx:416
 AliDigits.cxx:417
 AliDigits.cxx:418
 AliDigits.cxx:419
 AliDigits.cxx:420
 AliDigits.cxx:421
 AliDigits.cxx:422
 AliDigits.cxx:423
 AliDigits.cxx:424
 AliDigits.cxx:425
 AliDigits.cxx:426
 AliDigits.cxx:427
 AliDigits.cxx:428
 AliDigits.cxx:429
 AliDigits.cxx:430
 AliDigits.cxx:431
 AliDigits.cxx:432
 AliDigits.cxx:433
 AliDigits.cxx:434
 AliDigits.cxx:435
 AliDigits.cxx:436
 AliDigits.cxx:437
 AliDigits.cxx:438
 AliDigits.cxx:439
 AliDigits.cxx:440
 AliDigits.cxx:441
 AliDigits.cxx:442
 AliDigits.cxx:443
 AliDigits.cxx:444
 AliDigits.cxx:445
 AliDigits.cxx:446
 AliDigits.cxx:447
 AliDigits.cxx:448
 AliDigits.cxx:449
 AliDigits.cxx:450
 AliDigits.cxx:451
 AliDigits.cxx:452
 AliDigits.cxx:453
 AliDigits.cxx:454
 AliDigits.cxx:455
 AliDigits.cxx:456
 AliDigits.cxx:457
 AliDigits.cxx:458
 AliDigits.cxx:459
 AliDigits.cxx:460
 AliDigits.cxx:461
 AliDigits.cxx:462
 AliDigits.cxx:463
 AliDigits.cxx:464
 AliDigits.cxx:465
 AliDigits.cxx:466
 AliDigits.cxx:467
 AliDigits.cxx:468
 AliDigits.cxx:469
 AliDigits.cxx:470
 AliDigits.cxx:471
 AliDigits.cxx:472
 AliDigits.cxx:473
 AliDigits.cxx:474
 AliDigits.cxx:475
 AliDigits.cxx:476
 AliDigits.cxx:477
 AliDigits.cxx:478
 AliDigits.cxx:479
 AliDigits.cxx:480
 AliDigits.cxx:481
 AliDigits.cxx:482
 AliDigits.cxx:483
 AliDigits.cxx:484
 AliDigits.cxx:485
 AliDigits.cxx:486
 AliDigits.cxx:487
 AliDigits.cxx:488
 AliDigits.cxx:489
 AliDigits.cxx:490
 AliDigits.cxx:491
 AliDigits.cxx:492
 AliDigits.cxx:493
 AliDigits.cxx:494
 AliDigits.cxx:495
 AliDigits.cxx:496
 AliDigits.cxx:497
 AliDigits.cxx:498
 AliDigits.cxx:499
 AliDigits.cxx:500
 AliDigits.cxx:501
 AliDigits.cxx:502
 AliDigits.cxx:503
 AliDigits.cxx:504
 AliDigits.cxx:505
 AliDigits.cxx:506
 AliDigits.cxx:507
 AliDigits.cxx:508
 AliDigits.cxx:509
 AliDigits.cxx:510
 AliDigits.cxx:511
 AliDigits.cxx:512
 AliDigits.cxx:513
 AliDigits.cxx:514
 AliDigits.cxx:515
 AliDigits.cxx:516
 AliDigits.cxx:517
 AliDigits.cxx:518
 AliDigits.cxx:519
 AliDigits.cxx:520
 AliDigits.cxx:521
 AliDigits.cxx:522
 AliDigits.cxx:523
 AliDigits.cxx:524
 AliDigits.cxx:525
 AliDigits.cxx:526
 AliDigits.cxx:527
 AliDigits.cxx:528
 AliDigits.cxx:529
 AliDigits.cxx:530
 AliDigits.cxx:531
 AliDigits.cxx:532
 AliDigits.cxx:533