ROOT logo
#include <Riostream.h>
#include "TMath.h"
#include "AliITSUSuze02.h"

//*******************************************************************
//
//  Simulation of the SUZE02 readout
//  Origin: Serhiy.Senuykov@cern.ch
//  
//*******************************************************************

using std::cout;
using std::endl;

ClassImp(AliITSUSuze02)

AliITSUSuze02::AliITSUSuze02(Int_t Nrows, Int_t Ncols):
  fNRowsChip(Nrows),
  fNColsChip(Ncols),
  fChip(new TMatrixF(Nrows,Ncols)), 
  fTestColumnSize(2),
  fTestRowSize(2),
  fNWindowsPer32colsMax(0),
  fNWindowsPerHalfFSBBMax(0),
  fNWindowsPerFSBBMax(0),
  fNDigitsEncoded(0), 
  fNEncodedWindows(0),
  fNDigitsLost(0),
  fNLostWindows(0),
  fDataSizePerChip(0),
  fNWindowsPer32colsMin(0),
  fNWindowsPerHalfFSBBMin(0),
  fNWindowsPerFSBBMin(0)
{
  if (Ncols%(kNumberOfFSBB*kNumberOfHalfFSBB) != 0) {
    printf("Number of columns should be multiple of %d. SUZE matrix wasn't created\n",kNumberOfFSBB*kNumberOfHalfFSBB);
  }
}  
  
AliITSUSuze02::AliITSUSuze02(const AliITSUSuze02& suze): 
  fNRowsChip(suze.fNRowsChip),
  fNColsChip(suze.fNColsChip),
  fChip(new TMatrixF(*suze.fChip)), 
  fTestColumnSize(suze.fTestColumnSize),
  fTestRowSize(suze.fTestRowSize),
  fNWindowsPer32colsMax(suze.fNWindowsPer32colsMax),
  fNWindowsPerHalfFSBBMax(suze.fNWindowsPerHalfFSBBMax),
  fNWindowsPerFSBBMax(suze.fNWindowsPerFSBBMax),
  fNDigitsEncoded(suze.fNDigitsEncoded), 
  fNEncodedWindows(suze.fNEncodedWindows),
  fNDigitsLost(suze.fNDigitsLost),
  fNLostWindows(suze.fNLostWindows),
  fDataSizePerChip(suze.fDataSizePerChip),
  fNWindowsPer32colsMin(suze.fNWindowsPer32colsMin),
  fNWindowsPerHalfFSBBMin(suze.fNWindowsPerHalfFSBBMin),
  fNWindowsPerFSBBMin(suze.fNWindowsPerFSBBMin)
{
}

AliITSUSuze02 &AliITSUSuze02::operator=(const AliITSUSuze02& suze) {
  if (&suze == this) return *this;

  fNRowsChip = suze.fNRowsChip;
  fNColsChip = suze.fNColsChip;
  fChip = new TMatrixF(*suze.fChip);  
  fTestColumnSize = suze.fTestColumnSize;
  fTestRowSize = suze.fTestRowSize;
  fNWindowsPer32colsMax = suze.fNWindowsPer32colsMax;
  fNWindowsPerHalfFSBBMax = suze.fNWindowsPerHalfFSBBMax;
  fNWindowsPerFSBBMax = suze.fNWindowsPerFSBBMax;
  fNDigitsEncoded = suze.fNDigitsEncoded;
  fNEncodedWindows = suze.fNEncodedWindows;
  fNDigitsLost = suze.fNDigitsLost;
  fNLostWindows = suze.fNLostWindows;
  fDataSizePerChip = suze.fDataSizePerChip;
  fNWindowsPer32colsMin = suze.fNWindowsPer32colsMin;
  fNWindowsPerHalfFSBBMin = suze.fNWindowsPerHalfFSBBMin;
  fNWindowsPerFSBBMin = suze.fNWindowsPerFSBBMin;

  return *this;
}

AliITSUSuze02::~AliITSUSuze02() {
  if(fChip) delete fChip;
}

void AliITSUSuze02::SetEncodingWindowSize(Int_t Wrows, Int_t Wcols){
  fTestColumnSize=Wrows;
  fTestRowSize=Wcols;
}

void AliITSUSuze02::SetQuotas(Int_t q32, Int_t qHalfFSBB, Int_t qFSBB){
  fNWindowsPer32colsMax=q32;
  fNWindowsPerHalfFSBBMax=qHalfFSBB;
  fNWindowsPerFSBBMax=qFSBB;
}

void AliITSUSuze02::AddDigit(Int_t row, Int_t col){
  (*fChip)(row,col)++;
}

//void AliITSUSuze02::Process(Bool_t Verbose){  
void AliITSUSuze02::Process(TH1F* OverflowCodes, TH1F* NDigitsPerEncodingWindowDist, Bool_t Verbose) {

  //cout<<"Processing"<<endl;
  //fChip->Print(); 
  
  Int_t NRowsFSBB=fNRowsChip;
  Int_t NColsFSBB=fNColsChip/kNumberOfFSBB;
  TMatrixF FSBB(NRowsFSBB,NColsFSBB);
  
  Int_t NRowsSuperLine=fTestColumnSize;
  Int_t NColsSuperLine=NColsFSBB;   
  TMatrixF SuperLineUp(NRowsSuperLine,NColsSuperLine);
  TMatrixF SuperLineDown(NRowsSuperLine,NColsSuperLine);
  
  Int_t NRowsSuperLineX2=NRowsSuperLine*2; 
  Int_t NColsSuperLineX2=NColsSuperLine; //SuperLineX2 and SuperLine size in columns is equal to FSBB.
  TMatrixF SuperLineX2(NRowsSuperLineX2,NColsSuperLineX2); 
  
  TMatrixF TestRow(1,fTestRowSize);
  TMatrixF TestColumn(fTestColumnSize,1);      
  Int_t TestRowSum=0;
  TMatrixF EncodingWindow(fTestColumnSize,fTestRowSize);
  
  Int_t EncodingWindowStartRow=0;
  Int_t EncodingWindowStopRow=0;
  Int_t EncodingWindowStartCol=0;
  Int_t EncodingWindowStopCol=0;
  
  Int_t nMasks=fTestRowSize-1;
  Int_t MaskSize=NRowsSuperLineX2-1;
  TMatrixF Masks(MaskSize,nMasks);

   //parameters for internal data size calculation
  Int_t DataSizePerWindowInRow=8+fTestColumnSize*fTestRowSize+TMath::Ceil(TMath::Log2(fTestColumnSize));
  Int_t DataSizePerSuperLineX2Header=30;   
  
  Int_t DataSizePerSuperLineX2=0;
  
  Bool_t Overflow32=kFALSE;
  Bool_t OverflowHalfFSBB=kFALSE;
  Bool_t OverflowFSBB=kFALSE;
  
  Int_t nWindowsPer32cols=fNWindowsPer32colsMax;
  Int_t nWindowsPerHalfFSBB=fNWindowsPerHalfFSBBMax;
  Int_t nWindowsPerFSBB=fNWindowsPerFSBBMax; 
  
  fNWindowsPer32colsMin=fNWindowsPer32colsMax;
  fNWindowsPerHalfFSBBMin=fNWindowsPerHalfFSBBMax;
  fNWindowsPerFSBBMin=fNWindowsPerFSBBMax;  
  
  fNEncodedWindows=0;
  fNDigitsEncoded=0;
  fNLostWindows=0;
  fNDigitsLost=0;
  fDataSizePerChip=0;    
  
  for(Int_t FSBBindex=0; FSBBindex<kNumberOfFSBB; FSBBindex++){
    FSBB=fChip->GetSub(0,NRowsFSBB-1,FSBBindex*NColsFSBB,(FSBBindex+1)*NColsFSBB-1);
    SuperLineDown=FSBB.GetSub(0,NRowsSuperLine-1,0,NColsSuperLine-1);
    for(Int_t SuperLineX2StartRow=0; SuperLineX2StartRow<NRowsFSBB; SuperLineX2StartRow+=NRowsSuperLine){
      if(nWindowsPerFSBB<fNWindowsPerFSBBMin) {fNWindowsPerFSBBMin=nWindowsPerFSBB;} //saving the lowest number of remaining windows
      nWindowsPerFSBB=fNWindowsPerFSBBMax; //Reset number of available encoding windows for the new double SuperLine
      OverflowFSBB=kFALSE;
      SuperLineUp=SuperLineDown;
      if(SuperLineX2StartRow+NRowsSuperLineX2<=NRowsFSBB){
        SuperLineDown=FSBB.GetSub(SuperLineX2StartRow+NRowsSuperLine,SuperLineX2StartRow+NRowsSuperLineX2-1,0,NColsSuperLine-1);
      }
      else if(SuperLineX2StartRow+NRowsSuperLine<NRowsFSBB){
        SuperLineDown.Zero();
        SuperLineDown.SetSub(0,0,FSBB.GetSub(SuperLineX2StartRow+NRowsSuperLine,NRowsFSBB-1,0,NColsSuperLine-1));
      } 
      else{
        SuperLineDown.Zero();
      }
      if(SuperLineUp.Sum()>0){
        DataSizePerSuperLineX2=0; 
        SuperLineX2.SetSub(0,0,SuperLineUp);
        SuperLineX2.SetSub(NRowsSuperLine,0,SuperLineDown);
        for(Int_t HalfFSBBindex=0; HalfFSBBindex<kNumberOfHalfFSBB; HalfFSBBindex++){
          if(nWindowsPerHalfFSBB<fNWindowsPerHalfFSBBMin) {fNWindowsPerHalfFSBBMin=nWindowsPerHalfFSBB;}  
          nWindowsPerHalfFSBB=fNWindowsPerHalfFSBBMax; //reset counter per HalfFSBB
          OverflowHalfFSBB=kFALSE;
          for(Int_t i=0; i<MaskSize; i++){ //reset masks to 1111111
            for(Int_t j=0; j<nMasks; j++){
              Masks(i,j)=1;
            }
          }
          
          for(Int_t TestRowStartCol=HalfFSBBindex*NColsSuperLineX2/kNumberOfHalfFSBB; TestRowStartCol<(HalfFSBBindex+1)*NColsSuperLineX2/kNumberOfHalfFSBB; TestRowStartCol++){
            if(TestRowStartCol%32==0){
	            if(nWindowsPer32cols<fNWindowsPer32colsMin) fNWindowsPer32colsMin=nWindowsPer32cols;
              nWindowsPer32cols=fNWindowsPer32colsMax; //reset nWindowsPer32cols counter every 32 columns
              Overflow32=kFALSE;
            }
            //apply masks
            for(Int_t RowIndex=0; RowIndex<MaskSize; RowIndex++){
              for(Int_t MaskIndex=0; MaskIndex<nMasks; MaskIndex++){
                if(Masks(RowIndex,MaskIndex)==0){
                  // cout<<"Mask has zero bit at pos:"<<RowIndex<<":"<<MaskIndex<<endl;
                  // cout<<"will clean the pixels at row:"<<RowIndex<<" from pos.:"<<TestRowStartCol<<" till "<< TestRowStartCol+(nMasks-MaskIndex)<<endl;
                  for(Int_t ColIndex=TestRowStartCol; ColIndex<TestRowStartCol+(nMasks-MaskIndex); ColIndex++){
                    if(ColIndex<(HalfFSBBindex+1)*NColsSuperLineX2/kNumberOfHalfFSBB){
                      SuperLineX2(RowIndex,ColIndex)=0;
                      // cout<<"Mask has zero bit. Cleaning at pos:"<<RowIndex<<":"<<ColIndex<<endl;
                      if(RowIndex>=fTestColumnSize){
                        SuperLineDown(RowIndex-fTestColumnSize,ColIndex)=0;
                      }
                    }
                  }
                  break;
                }
              }
            }
            //shift masks
            for(Int_t RowIndex=0; RowIndex<MaskSize; RowIndex++){
              for(Int_t MaskIndex=nMasks-1; MaskIndex>0; MaskIndex--){
                Masks(RowIndex,MaskIndex)=Masks(RowIndex,MaskIndex-1);
              }
              Masks(RowIndex,0)=1;
            }  
            
            for(Int_t TestRowStartRow=0; TestRowStartRow<fTestColumnSize; TestRowStartRow++){
              TestRowSum=0;
              for(Int_t TestRowIndex=0; TestRowIndex<fTestRowSize; TestRowIndex++){
                if(TestRowStartCol+TestRowIndex<(HalfFSBBindex+1)*NColsSuperLineX2/kNumberOfHalfFSBB){
                  TestRowSum+=SuperLineX2(TestRowStartRow,TestRowStartCol+TestRowIndex);
                }
                if(TestRowSum>0){
                  //cout<<"TestR at col n."<<TestRowStartCol<<" and row n."<<TestRowStartRow<<" has a hit"<<endl;
                  break;
                }
              }
              if(TestRowSum>0){
                TestColumn=SuperLineX2.GetSub(TestRowStartRow,TestRowStartRow+fTestColumnSize-1,TestRowStartCol,TestRowStartCol);   
                if(TestColumn.Sum()>0){
                  EncodingWindowStartRow=TestRowStartRow;
                  EncodingWindowStopRow=EncodingWindowStartRow+fTestColumnSize-1;
                  EncodingWindowStartCol=TestRowStartCol; 
                  
                  if(TestRowStartCol+fTestRowSize>(HalfFSBBindex+1)*NColsSuperLineX2/kNumberOfHalfFSBB){
                    EncodingWindowStopCol=((HalfFSBBindex+1)*NColsSuperLineX2/kNumberOfHalfFSBB)-1;
                  }
                  else{
                    EncodingWindowStopCol=EncodingWindowStartCol+fTestRowSize-1;
                  }

                  EncodingWindow.Zero();
                  EncodingWindow.SetSub(0,0,SuperLineX2.GetSub(EncodingWindowStartRow,EncodingWindowStopRow,EncodingWindowStartCol,EncodingWindowStopCol));
                  
                  if(nWindowsPer32cols && nWindowsPerHalfFSBB && nWindowsPerFSBB){
                    //cout<<"Will encode window starting at "<<TestRowStartRow<<":"<<TestRowStartCol<<endl;
                    fNDigitsEncoded+=EncodingWindow.Sum();
                    fNEncodedWindows++;
                    OverflowCodes->Fill(0);
		                NDigitsPerEncodingWindowDist->Fill(EncodingWindow.Sum());
                    nWindowsPerFSBB--;
                    nWindowsPerHalfFSBB--;
                    nWindowsPer32cols--;
                    DataSizePerSuperLineX2+=DataSizePerWindowInRow;
                    //cout<<"Windows left:"<<nWindowsPerFSBB<<":"<<nWindowsPerHalfFSBB<<":"<<nWindowsPer32cols<<endl;
                  }
                  else{
                    fNDigitsLost+=EncodingWindow.Sum();
                    fNLostWindows++;
                    //cout<<"------ No encoding at col.:"<<TestRowStartCol<<" at SuperLineX2 that starts at row:"<<SuperLineX2StartRow<<endl;
                    if(!nWindowsPer32cols) Overflow32=kTRUE;
                    if(!nWindowsPerHalfFSBB) OverflowHalfFSBB=kTRUE;
                    if(!nWindowsPerFSBB) OverflowFSBB=kTRUE;
                    OverflowCodes->Fill(Overflow32+2*OverflowHalfFSBB+4*OverflowFSBB);
                  } 
                  for(Int_t k=TestRowStartRow;k<TestRowStartRow+fTestColumnSize; k++){
                    Masks(k,0)=0;
                    //cout<<"Setting Mask to 0 at "<<k<<endl;
                    //Setting to 0 the first column of the encoding window. This part if probably present in the real SUZE.
                    SuperLineX2(k,TestRowStartCol)=0;
                    if(k>=fTestColumnSize){
                      SuperLineDown(k-fTestColumnSize,TestRowStartCol)=0;
                    }
                  }
                }  
                break;
              }
            }
          }
        }
        fDataSizePerChip+=(DataSizePerSuperLineX2+DataSizePerSuperLineX2Header);
      }
    }
  }
  if(Verbose){
    cout<<fNDigitsEncoded<<" digits encoded in "<<fNEncodedWindows<<" windows"<<endl;
    cout<<fNDigitsLost<<" digits lost in "<<fNLostWindows<<" windows"<<endl;
  }
}

void AliITSUSuze02::GetResults(){
  
}
/*
void AliITSUSuze02::InitHistos(){
  fOverflowCodes = new TH1F("OverflowCodes","Overflow codes",8,0,8);
  if(fNRowsChip*fNColsChip){
    fNDigitsPerEncodingWindowDist = new TH1F("nDigitsPerEncodingWindowPerChip","nDigitsPerEncodingWindowPerChip",fTestColumnSize*fTestRowSize,1,fTestColumnSize*fTestRowSize+1);
  }
  else{
    printf("Run AliITSUSuze02::SetEncodingWindowSize first\n");
  }
}
*/
void AliITSUSuze02::ResetChip(){
  fChip->Zero();
}
 AliITSUSuze02.cxx:1
 AliITSUSuze02.cxx:2
 AliITSUSuze02.cxx:3
 AliITSUSuze02.cxx:4
 AliITSUSuze02.cxx:5
 AliITSUSuze02.cxx:6
 AliITSUSuze02.cxx:7
 AliITSUSuze02.cxx:8
 AliITSUSuze02.cxx:9
 AliITSUSuze02.cxx:10
 AliITSUSuze02.cxx:11
 AliITSUSuze02.cxx:12
 AliITSUSuze02.cxx:13
 AliITSUSuze02.cxx:14
 AliITSUSuze02.cxx:15
 AliITSUSuze02.cxx:16
 AliITSUSuze02.cxx:17
 AliITSUSuze02.cxx:18
 AliITSUSuze02.cxx:19
 AliITSUSuze02.cxx:20
 AliITSUSuze02.cxx:21
 AliITSUSuze02.cxx:22
 AliITSUSuze02.cxx:23
 AliITSUSuze02.cxx:24
 AliITSUSuze02.cxx:25
 AliITSUSuze02.cxx:26
 AliITSUSuze02.cxx:27
 AliITSUSuze02.cxx:28
 AliITSUSuze02.cxx:29
 AliITSUSuze02.cxx:30
 AliITSUSuze02.cxx:31
 AliITSUSuze02.cxx:32
 AliITSUSuze02.cxx:33
 AliITSUSuze02.cxx:34
 AliITSUSuze02.cxx:35
 AliITSUSuze02.cxx:36
 AliITSUSuze02.cxx:37
 AliITSUSuze02.cxx:38
 AliITSUSuze02.cxx:39
 AliITSUSuze02.cxx:40
 AliITSUSuze02.cxx:41
 AliITSUSuze02.cxx:42
 AliITSUSuze02.cxx:43
 AliITSUSuze02.cxx:44
 AliITSUSuze02.cxx:45
 AliITSUSuze02.cxx:46
 AliITSUSuze02.cxx:47
 AliITSUSuze02.cxx:48
 AliITSUSuze02.cxx:49
 AliITSUSuze02.cxx:50
 AliITSUSuze02.cxx:51
 AliITSUSuze02.cxx:52
 AliITSUSuze02.cxx:53
 AliITSUSuze02.cxx:54
 AliITSUSuze02.cxx:55
 AliITSUSuze02.cxx:56
 AliITSUSuze02.cxx:57
 AliITSUSuze02.cxx:58
 AliITSUSuze02.cxx:59
 AliITSUSuze02.cxx:60
 AliITSUSuze02.cxx:61
 AliITSUSuze02.cxx:62
 AliITSUSuze02.cxx:63
 AliITSUSuze02.cxx:64
 AliITSUSuze02.cxx:65
 AliITSUSuze02.cxx:66
 AliITSUSuze02.cxx:67
 AliITSUSuze02.cxx:68
 AliITSUSuze02.cxx:69
 AliITSUSuze02.cxx:70
 AliITSUSuze02.cxx:71
 AliITSUSuze02.cxx:72
 AliITSUSuze02.cxx:73
 AliITSUSuze02.cxx:74
 AliITSUSuze02.cxx:75
 AliITSUSuze02.cxx:76
 AliITSUSuze02.cxx:77
 AliITSUSuze02.cxx:78
 AliITSUSuze02.cxx:79
 AliITSUSuze02.cxx:80
 AliITSUSuze02.cxx:81
 AliITSUSuze02.cxx:82
 AliITSUSuze02.cxx:83
 AliITSUSuze02.cxx:84
 AliITSUSuze02.cxx:85
 AliITSUSuze02.cxx:86
 AliITSUSuze02.cxx:87
 AliITSUSuze02.cxx:88
 AliITSUSuze02.cxx:89
 AliITSUSuze02.cxx:90
 AliITSUSuze02.cxx:91
 AliITSUSuze02.cxx:92
 AliITSUSuze02.cxx:93
 AliITSUSuze02.cxx:94
 AliITSUSuze02.cxx:95
 AliITSUSuze02.cxx:96
 AliITSUSuze02.cxx:97
 AliITSUSuze02.cxx:98
 AliITSUSuze02.cxx:99
 AliITSUSuze02.cxx:100
 AliITSUSuze02.cxx:101
 AliITSUSuze02.cxx:102
 AliITSUSuze02.cxx:103
 AliITSUSuze02.cxx:104
 AliITSUSuze02.cxx:105
 AliITSUSuze02.cxx:106
 AliITSUSuze02.cxx:107
 AliITSUSuze02.cxx:108
 AliITSUSuze02.cxx:109
 AliITSUSuze02.cxx:110
 AliITSUSuze02.cxx:111
 AliITSUSuze02.cxx:112
 AliITSUSuze02.cxx:113
 AliITSUSuze02.cxx:114
 AliITSUSuze02.cxx:115
 AliITSUSuze02.cxx:116
 AliITSUSuze02.cxx:117
 AliITSUSuze02.cxx:118
 AliITSUSuze02.cxx:119
 AliITSUSuze02.cxx:120
 AliITSUSuze02.cxx:121
 AliITSUSuze02.cxx:122
 AliITSUSuze02.cxx:123
 AliITSUSuze02.cxx:124
 AliITSUSuze02.cxx:125
 AliITSUSuze02.cxx:126
 AliITSUSuze02.cxx:127
 AliITSUSuze02.cxx:128
 AliITSUSuze02.cxx:129
 AliITSUSuze02.cxx:130
 AliITSUSuze02.cxx:131
 AliITSUSuze02.cxx:132
 AliITSUSuze02.cxx:133
 AliITSUSuze02.cxx:134
 AliITSUSuze02.cxx:135
 AliITSUSuze02.cxx:136
 AliITSUSuze02.cxx:137
 AliITSUSuze02.cxx:138
 AliITSUSuze02.cxx:139
 AliITSUSuze02.cxx:140
 AliITSUSuze02.cxx:141
 AliITSUSuze02.cxx:142
 AliITSUSuze02.cxx:143
 AliITSUSuze02.cxx:144
 AliITSUSuze02.cxx:145
 AliITSUSuze02.cxx:146
 AliITSUSuze02.cxx:147
 AliITSUSuze02.cxx:148
 AliITSUSuze02.cxx:149
 AliITSUSuze02.cxx:150
 AliITSUSuze02.cxx:151
 AliITSUSuze02.cxx:152
 AliITSUSuze02.cxx:153
 AliITSUSuze02.cxx:154
 AliITSUSuze02.cxx:155
 AliITSUSuze02.cxx:156
 AliITSUSuze02.cxx:157
 AliITSUSuze02.cxx:158
 AliITSUSuze02.cxx:159
 AliITSUSuze02.cxx:160
 AliITSUSuze02.cxx:161
 AliITSUSuze02.cxx:162
 AliITSUSuze02.cxx:163
 AliITSUSuze02.cxx:164
 AliITSUSuze02.cxx:165
 AliITSUSuze02.cxx:166
 AliITSUSuze02.cxx:167
 AliITSUSuze02.cxx:168
 AliITSUSuze02.cxx:169
 AliITSUSuze02.cxx:170
 AliITSUSuze02.cxx:171
 AliITSUSuze02.cxx:172
 AliITSUSuze02.cxx:173
 AliITSUSuze02.cxx:174
 AliITSUSuze02.cxx:175
 AliITSUSuze02.cxx:176
 AliITSUSuze02.cxx:177
 AliITSUSuze02.cxx:178
 AliITSUSuze02.cxx:179
 AliITSUSuze02.cxx:180
 AliITSUSuze02.cxx:181
 AliITSUSuze02.cxx:182
 AliITSUSuze02.cxx:183
 AliITSUSuze02.cxx:184
 AliITSUSuze02.cxx:185
 AliITSUSuze02.cxx:186
 AliITSUSuze02.cxx:187
 AliITSUSuze02.cxx:188
 AliITSUSuze02.cxx:189
 AliITSUSuze02.cxx:190
 AliITSUSuze02.cxx:191
 AliITSUSuze02.cxx:192
 AliITSUSuze02.cxx:193
 AliITSUSuze02.cxx:194
 AliITSUSuze02.cxx:195
 AliITSUSuze02.cxx:196
 AliITSUSuze02.cxx:197
 AliITSUSuze02.cxx:198
 AliITSUSuze02.cxx:199
 AliITSUSuze02.cxx:200
 AliITSUSuze02.cxx:201
 AliITSUSuze02.cxx:202
 AliITSUSuze02.cxx:203
 AliITSUSuze02.cxx:204
 AliITSUSuze02.cxx:205
 AliITSUSuze02.cxx:206
 AliITSUSuze02.cxx:207
 AliITSUSuze02.cxx:208
 AliITSUSuze02.cxx:209
 AliITSUSuze02.cxx:210
 AliITSUSuze02.cxx:211
 AliITSUSuze02.cxx:212
 AliITSUSuze02.cxx:213
 AliITSUSuze02.cxx:214
 AliITSUSuze02.cxx:215
 AliITSUSuze02.cxx:216
 AliITSUSuze02.cxx:217
 AliITSUSuze02.cxx:218
 AliITSUSuze02.cxx:219
 AliITSUSuze02.cxx:220
 AliITSUSuze02.cxx:221
 AliITSUSuze02.cxx:222
 AliITSUSuze02.cxx:223
 AliITSUSuze02.cxx:224
 AliITSUSuze02.cxx:225
 AliITSUSuze02.cxx:226
 AliITSUSuze02.cxx:227
 AliITSUSuze02.cxx:228
 AliITSUSuze02.cxx:229
 AliITSUSuze02.cxx:230
 AliITSUSuze02.cxx:231
 AliITSUSuze02.cxx:232
 AliITSUSuze02.cxx:233
 AliITSUSuze02.cxx:234
 AliITSUSuze02.cxx:235
 AliITSUSuze02.cxx:236
 AliITSUSuze02.cxx:237
 AliITSUSuze02.cxx:238
 AliITSUSuze02.cxx:239
 AliITSUSuze02.cxx:240
 AliITSUSuze02.cxx:241
 AliITSUSuze02.cxx:242
 AliITSUSuze02.cxx:243
 AliITSUSuze02.cxx:244
 AliITSUSuze02.cxx:245
 AliITSUSuze02.cxx:246
 AliITSUSuze02.cxx:247
 AliITSUSuze02.cxx:248
 AliITSUSuze02.cxx:249
 AliITSUSuze02.cxx:250
 AliITSUSuze02.cxx:251
 AliITSUSuze02.cxx:252
 AliITSUSuze02.cxx:253
 AliITSUSuze02.cxx:254
 AliITSUSuze02.cxx:255
 AliITSUSuze02.cxx:256
 AliITSUSuze02.cxx:257
 AliITSUSuze02.cxx:258
 AliITSUSuze02.cxx:259
 AliITSUSuze02.cxx:260
 AliITSUSuze02.cxx:261
 AliITSUSuze02.cxx:262
 AliITSUSuze02.cxx:263
 AliITSUSuze02.cxx:264
 AliITSUSuze02.cxx:265
 AliITSUSuze02.cxx:266
 AliITSUSuze02.cxx:267
 AliITSUSuze02.cxx:268
 AliITSUSuze02.cxx:269
 AliITSUSuze02.cxx:270
 AliITSUSuze02.cxx:271
 AliITSUSuze02.cxx:272
 AliITSUSuze02.cxx:273
 AliITSUSuze02.cxx:274
 AliITSUSuze02.cxx:275
 AliITSUSuze02.cxx:276
 AliITSUSuze02.cxx:277
 AliITSUSuze02.cxx:278
 AliITSUSuze02.cxx:279
 AliITSUSuze02.cxx:280
 AliITSUSuze02.cxx:281
 AliITSUSuze02.cxx:282
 AliITSUSuze02.cxx:283
 AliITSUSuze02.cxx:284
 AliITSUSuze02.cxx:285
 AliITSUSuze02.cxx:286
 AliITSUSuze02.cxx:287
 AliITSUSuze02.cxx:288
 AliITSUSuze02.cxx:289
 AliITSUSuze02.cxx:290
 AliITSUSuze02.cxx:291
 AliITSUSuze02.cxx:292
 AliITSUSuze02.cxx:293
 AliITSUSuze02.cxx:294
 AliITSUSuze02.cxx:295
 AliITSUSuze02.cxx:296
 AliITSUSuze02.cxx:297
 AliITSUSuze02.cxx:298
 AliITSUSuze02.cxx:299
 AliITSUSuze02.cxx:300
 AliITSUSuze02.cxx:301
 AliITSUSuze02.cxx:302
 AliITSUSuze02.cxx:303
 AliITSUSuze02.cxx:304
 AliITSUSuze02.cxx:305
 AliITSUSuze02.cxx:306
 AliITSUSuze02.cxx:307
 AliITSUSuze02.cxx:308
 AliITSUSuze02.cxx:309
 AliITSUSuze02.cxx:310
 AliITSUSuze02.cxx:311
 AliITSUSuze02.cxx:312
 AliITSUSuze02.cxx:313
 AliITSUSuze02.cxx:314