ROOT logo
/************************************************************************* 
* Copyright(c) 1998-2008, 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: AliTRDarrayADC.cxx 25392 2008-04-23 19:40:29Z cblume $ */

////////////////////////////////////////////////////////
//                                                    //
// Container class for ADC values                     //
//                                                    //
// Author:                                            //
// Hermes Leon Vargas  (hleon@ikf.uni-frankfurt.de)   //
//                                                    // 
////////////////////////////////////////////////////////

#include "AliTRDarrayADC.h"
#include "Cal/AliTRDCalPadStatus.h"
#include "AliTRDfeeParam.h"
#include "AliTRDSignalIndex.h"
#include "AliLog.h"

ClassImp(AliTRDarrayADC)

Short_t *AliTRDarrayADC::fgLutPadNumbering = 0x0;

//____________________________________________________________________________________
AliTRDarrayADC::AliTRDarrayADC()
               :TObject()
               ,fNdet(0)
               ,fNrow(0)
               ,fNcol(0)
	       ,fNumberOfChannels(0)
               ,fNtime(0) 
               ,fNAdim(0)
               ,fADC(0)
{
  //
  // AliTRDarrayADC default constructor
  //

  CreateLut();

}

//____________________________________________________________________________________
AliTRDarrayADC::AliTRDarrayADC(Int_t nrow, Int_t ncol, Int_t ntime)
               :TObject()
	       ,fNdet(0)               
               ,fNrow(0)
               ,fNcol(0)
	       ,fNumberOfChannels(0)
               ,fNtime(0) 
               ,fNAdim(0)
               ,fADC(0)
{
  //
  // AliTRDarrayADC constructor
  //

  CreateLut();
  Allocate(nrow,ncol,ntime);

}

//____________________________________________________________________________________
AliTRDarrayADC::AliTRDarrayADC(const AliTRDarrayADC &b)
               :TObject(b)
	       ,fNdet(b.fNdet)
               ,fNrow(b.fNrow)
               ,fNcol(b.fNcol)
	       ,fNumberOfChannels(b.fNumberOfChannels)
               ,fNtime(b.fNtime) 
               ,fNAdim(b.fNAdim)
               ,fADC(0)	 
{
  //
  // AliTRDarrayADC copy constructor
  //

  fADC =  new Short_t[fNAdim];
  memcpy(fADC,b.fADC, fNAdim*sizeof(Short_t));  

}

//____________________________________________________________________________________
AliTRDarrayADC::~AliTRDarrayADC()
{
  //
  // AliTRDarrayADC destructor
  //

  delete [] fADC;
  fADC=0;

}

//____________________________________________________________________________________
AliTRDarrayADC &AliTRDarrayADC::operator=(const AliTRDarrayADC &b)
{
  //
  // Assignment operator
  //

  if(this==&b)
    {
      return *this;
    }
  if(fADC)
    {
      delete [] fADC;
    }
  TObject::operator=(b);
  fNdet=b.fNdet;
  fNrow=b.fNrow;
  fNcol=b.fNcol;
  fNumberOfChannels = b.fNumberOfChannels;
  fNtime=b.fNtime;
  fNAdim=b.fNAdim;
  fADC = new Short_t[fNAdim];
  memcpy(fADC,b.fADC, fNAdim*sizeof(Short_t));

  return *this;

}

//____________________________________________________________________________________
void AliTRDarrayADC::Allocate(Int_t nrow, Int_t ncol, Int_t ntime)
{
  //
  // Allocate memory for an AliTRDarrayADC array with dimensions
  // Row*NumberOfNecessaryMCMs*ADCchannelsInMCM*Time
  //
  
  fNrow=nrow;
  fNcol=ncol;
  fNtime=ntime;
  Int_t adcchannelspermcm = AliTRDfeeParam::GetNadcMcm(); 
  Int_t padspermcm = AliTRDfeeParam::GetNcolMcm(); 
  Int_t numberofmcms = fNcol/padspermcm; 
  fNumberOfChannels = numberofmcms*adcchannelspermcm; 
  fNAdim=nrow*fNumberOfChannels*ntime;

  if(fADC)
    {
      delete [] fADC;
    }
  
  fADC = new Short_t[fNAdim];
  memset(fADC,0,sizeof(Short_t)*fNAdim);

}

//____________________________________________________________________________________
Short_t AliTRDarrayADC::GetDataBits(Int_t row, Int_t col, Int_t time) const
{
  //
  // Get the ADC value for a given position: row, col, time
  // Taking bit masking into account
  //
  // Adapted from code of the class AliTRDclusterizer 
  //

  Short_t tempval = GetData(row,col,time);
  // Be aware of manipulations introduced by pad masking in the RawReader
  // Only output the manipulated Value
  CLRBIT(tempval, 10);
  CLRBIT(tempval, 11);
  CLRBIT(tempval, 12);
  return tempval;

}

//____________________________________________________________________________________
UChar_t AliTRDarrayADC::GetPadStatus(Int_t row, Int_t col, Int_t time) const
{
  // 
  // Returns the pad status stored in the pad signal
  //
  // Output is a UChar_t value
  // Status Codes:
  //               Noisy Masking:           2
  //               Bridged Left Masking     8
  //               Bridged Right Masking    8
  //               Not Connected Masking Digits
  //
  // Adapted from code of the class AliTRDclusterizer
  //

  UChar_t padstatus = 0;
  Short_t signal = GetData(row,col,time);
  if(signal > 0 && TESTBIT(signal, 10)){
    if(TESTBIT(signal, 11))
      if(TESTBIT(signal, 12))
	padstatus = AliTRDCalPadStatus::kPadBridgedRight;
      else
	padstatus = AliTRDCalPadStatus::kNotConnected;
    else
      if(TESTBIT(signal, 12))
	padstatus = AliTRDCalPadStatus::kPadBridgedLeft;
      else
	padstatus = AliTRDCalPadStatus::kMasked;
  }

  return padstatus;

}

//____________________________________________________________________________________
void AliTRDarrayADC::SetPadStatus(Int_t row, Int_t col, Int_t time, UChar_t status)
{
  //
  // Setting the pad status into the signal using the Bits 10 to 14 
  // (currently used: 10 to 12)
  //
  // Input codes (Unsigned char):
  //               Noisy Masking:           2
  //               Bridged Left Masking     8
  //               Bridged Right Masking    8
  //               Not Connected Masking    32
  //
  // Status codes: Any masking:             Bit 10(1)
  //               Noisy masking:           Bit 11(0), Bit 12(0)
  //               No Connection masking:   Bit 11(1), Bit 12(0)
  //               Bridged Left masking:    Bit 11(0), Bit 12(1)
  //               Bridged Right masking:   Bit 11(1), Bit 12(1)
  // 
  // Adapted from code of the class AliTRDclusterizer
  //

  Short_t signal = GetData(row,col,time);

  // Only set the Pad Status if the signal is > 0
  if(signal > 0)
    {
      switch(status)
	{
	case AliTRDCalPadStatus::kMasked:
	  SETBIT(signal, 10);
	  CLRBIT(signal, 11);
	  CLRBIT(signal, 12);
	  break;
	case AliTRDCalPadStatus::kNotConnected:
	  SETBIT(signal, 10);
	  SETBIT(signal, 11);
	  CLRBIT(signal, 12);
	  break;
	case AliTRDCalPadStatus::kPadBridgedLeft:
	  SETBIT(signal, 10);
	  CLRBIT(signal, 11);
	  SETBIT(signal, 12);
	  break;
	case AliTRDCalPadStatus::kPadBridgedRight:
	  SETBIT(signal, 10);
	  SETBIT(signal, 11);
	  SETBIT(signal, 12);
          break;
	default:
	  CLRBIT(signal, 10);
	  CLRBIT(signal, 11);
	  CLRBIT(signal, 12);
	}
      SetData(row, col, time, signal);
    }

}

//____________________________________________________________________________________
Bool_t AliTRDarrayADC::IsPadCorrupted(Int_t row, Int_t col, Int_t time)
{
  // 
  // Checks if the pad has any masking as corrupted (Bit 10 in signal set)
  // 
  // Adapted from code of the class AliTRDclusterizer
  //

  Short_t signal = GetData(row,col,time);
  return (signal > 0 && TESTBIT(signal, 10)) ? kTRUE : kFALSE;

}

//____________________________________________________________________________________
void AliTRDarrayADC::Compress()
{
  //
  // Compress the array
  //

  if(fNAdim!=fNrow*fNumberOfChannels*fNtime)
    {
      AliDebug(1,"The ADC array is already compressed");
      return;
    }

  Int_t counter=0;
  Int_t newDim=0;
  Int_t j;                  
  Int_t l;                  
  Int_t r=0;                
  Int_t s=0;                
  Int_t k=0;

  Int_t *longm = new Int_t[fNAdim];  
  Int_t *longz = new Int_t[fNAdim];

  if(longz && longm && fADC)
    {

      memset(longz,0,sizeof(Int_t)*fNAdim);
      memset(longm,0,sizeof(Int_t)*fNAdim);

      for(Int_t i=0;i<fNAdim; i++)
        {
          j=0;
          if(fADC[i]==-1)
	    {
	      for(k=i;k<fNAdim;k++)
	        {
	          if((fADC[k]==-1)&&(j<16000))   
		    {
		      j=j+1;
		      longm[r]=j;                
		    }
	          else
		    {
		      break;
		    }
	        }
	      r=r+1;            
	    }
          l=16001;
          if(fADC[i]==0)
	    {
	      for(k=i;k<fNAdim;k++)
	        {
	          if((fADC[k]==0)&&(l<32767))     
		    {                             
		      l=l+1;
		      longz[s]=l;                
		    }
	          else
		    {
		      break;
		    }
	        }
	      s=s+1;         
	    }
          if(fADC[i]>0)
	    {
	      i=i+1;
	    }
          i=i+j+(l-16001-1); 
        }

      //Calculate the size of the compressed array
      for(Int_t i=0; i<fNAdim;i++)
        {
          if(longm[i]!=0)   
	    {
	      counter=counter+longm[i]-1;
	    }
          if(longz[i]!=0)  
	    {
	      counter=counter+(longz[i]-16001)-1;
	    }
        }

      Int_t counterTwo=0;
      newDim = fNAdim-counter;   //Dimension of the compressed array
      Short_t* buffer = new Short_t[newDim];

      if(buffer)
        {

          //Fill the buffer of the compressed array
          Int_t g=0;
          Int_t h=0; 
          for(Int_t i=0; i<newDim; i++)
            {
              if(counterTwo<fNAdim)
	        {
	          if(fADC[counterTwo]>0)
	            {
	              buffer[i]=fADC[counterTwo];
	            }
	          if(fADC[counterTwo]==-1)
	            {
	              buffer[i]=-(longm[g]);
	              counterTwo=counterTwo+longm[g]-1;
	              g++;
	            }  
	          if(fADC[counterTwo]==0)
	            {
	              buffer[i]=-(longz[h]); 
	              counterTwo=counterTwo+(longz[h]-16001)-1;
	              h++;
	            }  
	          counterTwo++;
	        }
            }

          //Copy the buffer
          delete [] fADC;
          fADC=0;
          fADC = new Short_t[newDim];
          fNAdim = newDim;
          for(Int_t i=0; i<newDim; i++)
            {
              fADC[i] = buffer[i]; 
            }

          //Delete auxiliary arrays
          delete [] buffer;
          buffer=0;
        } 

    }

  if (longz)
    {
      delete [] longz;
      longz=0;
    }
  if (longm)
    {
      delete [] longm;
      longm=0;

    }

}

//____________________________________________________________________________________
void AliTRDarrayADC::Expand()
{
  //
  // Expand the array
  //

  if (fADC)
    {

      //Check if the array has not been already expanded
      Int_t verif=0;
      for(Int_t i=0; i<fNAdim; i++)
        {
          if(fADC[i]<-1)
 	    {
	      verif++;
	    }
        }
  
      if(verif==0)
        {
          AliDebug(1,"Nothing to expand");
          return;
        }

      Int_t dimexp=0;
      Int_t *longz = new Int_t[fNAdim];
      Int_t *longm = new Int_t[fNAdim];

      if (longz && longm)
	{

          //Initialize arrays
          memset(longz,0,sizeof(Int_t)*fNAdim);
          memset(longm,0,sizeof(Int_t)*fNAdim);
          Int_t r2=0; 
          Int_t r3=0; 
          for(Int_t i=0; i<fNAdim;i++)
            {
              if((fADC[i]<0)&&(fADC[i]>=-16000))      
	        {
	          longm[r2]=-fADC[i];
	          r2++;
	        }
              if(fADC[i]<-16000)  
	        {
	          longz[r3]=-fADC[i]-16001;  
	          r3++;
	        }
            }

          //Calculate the new dimensions of the array
          for(Int_t i=0; i<fNAdim;i++)
            {
              if(longm[i]!=0)       
	        {
	          dimexp=dimexp+longm[i]-1;
	        }
              if(longz[i]!=0)      
	        {
	          dimexp=dimexp+longz[i]-1;
	        }
            }
          dimexp=dimexp+fNAdim;   

          //Write in the buffer the new array
          Int_t contaexp =0;     
          Int_t h=0;
          Int_t l=0;  
          Short_t* bufferE = new Short_t[dimexp];
          if(bufferE)
	    {
              for(Int_t i=0; i<dimexp; i++)
                {
                  if(fADC[contaexp]>0)  
	            {
	              bufferE[i]=fADC[contaexp];
	            }
                  if((fADC[contaexp]<0)&&(fADC[contaexp]>=-16000))  
	            {
	              for(Int_t j=0; j<longm[h];j++)
	                {
	                  bufferE[i+j]=-1;
	                }
	              i=i+longm[h]-1;
	              h++;
	            }
                  if(fADC[contaexp]<-16000)  
	            {
	              for(Int_t j=0; j<longz[l];j++)
	                {
	                  bufferE[i+j]=0;  
	                }
	              i=i+longz[l]-1;
	              l++;
	            }
                  contaexp++;
                }
              //Copy the buffer
              delete [] fADC;
              fADC = new Short_t[dimexp];
              fNAdim = dimexp;
              for(Int_t i=0; i<dimexp; i++)
                {
                  fADC[i] = bufferE[i]; 
                }

              delete [] bufferE;

	    }

          //Delete auxiliary arrays
          delete [] longm;
          delete [] longz;

	}

    }

}
//____________________________________________________________________________________
void AliTRDarrayADC::DeleteNegatives()
{

  //
  //This method modifies the digits array, changing the negative values (-1)
  //Produced during digitization into zero.
  //

  for(Int_t a=0; a<fNAdim; a++)
    {
      if(fADC[a]==-1)
	{
	  fADC[a]=0;
	}
    }
}
//________________________________________________________________________________
void AliTRDarrayADC::Reset()
{
  //
  // Reset the array, the old contents are deleted
  // The array keeps the same dimensions as before
  //
 
  memset(fADC,0,sizeof(Short_t)*fNAdim);
}
//________________________________________________________________________________
void AliTRDarrayADC::ConditionalReset(AliTRDSignalIndex* idx)
{
  //
  // Reset the array, the old contents are deleted
  // The array keeps the same dimensions as before
  //
 
  if(idx->GetNoOfIndexes()>25)
    memset(fADC,0,sizeof(Short_t)*fNAdim);
  else
    {
      Int_t row, col;
      while(idx->NextRCIndex(row, col)){
	Int_t colnumb = fgLutPadNumbering[col];
	memset(&fADC[(row*fNumberOfChannels+colnumb)*fNtime],0,fNtime);
      }
    }

}

//________________________________________________________________________________
void AliTRDarrayADC::CreateLut()
{
  //
  // Initializes the Look Up Table to relate
  // pad numbering and mcm channel numbering
  //

  if(fgLutPadNumbering)  return;
  
   fgLutPadNumbering = new Short_t[AliTRDfeeParam::GetNcol()];
   memset(fgLutPadNumbering,0,sizeof(Short_t)*AliTRDfeeParam::GetNcol());

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