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.                  *
 **************************************************************************/


//-------------------------------------------------------
//          Implementation of the TPC tracker helper clasess
//  AliTPCtrackerRow
//  AliTPCtrackerSector
//
//   Origin: Marian Ivanov   Marian.Ivanov@cern.ch
// 
//  AliTPCtrakerMI -  parallel tracker helper clases
//

/* $Id: AliTPCtrackerSector.cxx 25837 2008-05-16 16:39:00Z marian $ */

#include "Riostream.h"
#include <TClonesArray.h>
#include "AliLog.h"
#include "AliComplexCluster.h"
//#include "AliTPCcluster.h"
#include "AliTPCclusterMI.h"
#include "AliTPCClustersRow.h"
#include "AliTPCParam.h"
#include "AliTPCReconstructor.h"
#include "AliTPCreco.h"
//
#include "AliTPCtrackerSector.h"
#include "TStopwatch.h"
#include "TTreeStream.h"

//

ClassImp(AliTPCtrackerRow)
ClassImp(AliTPCtrackerSector)



AliTPCtrackerRow::AliTPCtrackerRow():
  fDeadZone(0.),
  fClusters1(0),
  fN1(0),
  fClusters2(0),
  fN2(0),
  fFastCluster(),
  fN(0),
  fClusters(),
  fIndex(),
  fX(0.)  
{
  //
  // default constructor
  //
}

AliTPCtrackerRow::~AliTPCtrackerRow(){
  //
  delete fClusters1;
  delete fClusters2;
}



//_________________________________________________________________________
void 
AliTPCtrackerRow::InsertCluster(const AliTPCclusterMI* c, UInt_t index) {
  //-----------------------------------------------------------------------
  // Insert a cluster into this pad row in accordence with its y-coordinate
  //-----------------------------------------------------------------------
  if (!c) {
    AliError("Inserting Zerro cluster pointer");
    return;
  }
  if (fN==kMaxClusterPerRow) {
    //AliInfo("AliTPCtrackerRow::InsertCluster(): Too many clusters"); 
    return;
  }
  if (fN>=fN1+fN2) {
    //AliInfo("AliTPCtrackerRow::InsertCluster(): Too many clusters !");
  }

  if (fN==0) {fIndex[0]=index; fClusters[fN++]=c; return;}
  Int_t i=Find(c->GetZ());
  if (i>=0 && i<=kMaxClusterPerRow-2) {
    memmove(fClusters+i+1 ,fClusters+i,(fN-i)*sizeof(AliTPCclusterMI*));
    memmove(fIndex   +i+1 ,fIndex   +i,(fN-i)*sizeof(UInt_t));
  }
  fIndex[i]=index; fClusters[i]=c; fN++;
}

void AliTPCtrackerRow::ResetClusters() {
   //
   // reset clusters
   // MvL: Need to call destructors for AliTPCclusterMI, to delete fInfo
  if (fClusters1) fClusters1->Clear("C");
  if (fClusters2) fClusters2->Clear("C");

   fN  = 0; 
   fN1 = 0;
   fN2 = 0;
   //delete[] fClusterArray; 

   //fClusterArray=0;
}


//___________________________________________________________________
Int_t AliTPCtrackerRow::Find(Double_t z) const {
  //-----------------------------------------------------------------------
  // Return the index of the nearest cluster 
  //-----------------------------------------------------------------------
  if (fN==0) return 0;
  if (z <= fClusters[0]->GetZ()) return 0;
  if (z > fClusters[fN-1]->GetZ()) return fN;
  Int_t b=0, e=fN-1, m=(b+e)/2;
  for (; b<e; m=(b+e)/2) {
    if (z > fClusters[m]->GetZ()) b=m+1;
    else e=m; 
  }
  return m;
}



//___________________________________________________________________
AliTPCclusterMI * AliTPCtrackerRow::FindNearest(Double_t y, Double_t z, Double_t roady, Double_t roadz) const {
  //-----------------------------------------------------------------------
  // Return the index of the nearest cluster in z y 
  //-----------------------------------------------------------------------
  Float_t maxdistance = roady*roady + roadz*roadz;

  AliTPCclusterMI *cl =0;
  for (Int_t i=Find(z-roadz); i<fN; i++) {
      AliTPCclusterMI *c=(AliTPCclusterMI*)(fClusters[i]);
      if (c->GetZ() > z+roadz) break;
//       if ( (c->GetY()-y) >  roady ) continue; //JW: Why here not abs???
      if ( TMath::Abs(c->GetY()-y) >  roady ) continue;
      Float_t distance = (c->GetZ()-z)*(c->GetZ()-z)+(c->GetY()-y)*(c->GetY()-y);
      if (maxdistance>distance) {
	maxdistance = distance;
	cl=c;       
      }
  }
  return cl;      
}

AliTPCclusterMI * AliTPCtrackerRow::FindNearest2(Double_t y, Double_t z, Double_t roady, Double_t roadz,UInt_t & index) const 
{
  //-----------------------------------------------------------------------
  // Return the index of the nearest cluster in z y 
  //-----------------------------------------------------------------------
  Float_t maxdistance = roady*roady + roadz*roadz;
  AliTPCclusterMI *cl =0;

  //PH Check boundaries. 510 is the size of fFastCluster
  Int_t iz1 = Int_t(z-roadz+254.5);  
  if ( iz1>=510) return cl;
  if (iz1<0 ) iz1 = 0;
  iz1 = TMath::Max(GetFastCluster(iz1)-1,0);
  Int_t iz2 = Int_t(z+roadz+255.5);
  if (iz2<0 ) return cl;
  if ( iz2>=510) iz2 = 509;
  iz2 = TMath::Min(GetFastCluster(iz2)+1,fN);
  Bool_t skipUsed = !(AliTPCReconstructor::GetRecoParam()->GetClusterSharing());
  //FindNearest3(y,z,roady,roadz,index);
  //  for (Int_t i=Find(z-roadz); i<fN; i++) {
  for (Int_t i=iz1; i<iz2; i++) {
      AliTPCclusterMI *c=(AliTPCclusterMI*)(fClusters[i]);
      if (c->GetZ() > z+roadz) break;
      if ( c->GetY()-y >  roady ) continue;
      if ( y-c->GetY() >  roady ) continue;
      if (skipUsed && c->IsUsed(11)) continue;
      if (c->IsDisabled()) continue;
      Float_t distance = (c->GetZ()-z)*(c->GetZ()-z)+(c->GetY()-y)*(c->GetY()-y);
      if (maxdistance>distance) {
	maxdistance = distance;
	cl=c;       
	index =i;
	//roady = TMath::Sqrt(maxdistance);
      }
  }
  return cl;      
}


void AliTPCtrackerRow::SetFastCluster(Int_t i, Short_t cl){
  //
  // Set cluster info for fast navigation
  //
  if (i>=510|| i<0){
  }else{
    fFastCluster[i]=cl;
  }
}

Int_t  AliTPCtrackerSector::GetNClInSector(Int_t side) 
{
  // return number of all clusters in one sector; side =0 for A side and 1 for C side 

  Int_t nclSector=0;
  Int_t nrows = GetNRows();

  for (Int_t row=0;row<nrows;row++) {
    AliTPCtrackerRow&  tpcrow = (*this)[row];
    Int_t ncl =  (side==0)?(tpcrow.GetN1()):(tpcrow.GetN2());
    nclSector+=ncl;
  }
  
  return nclSector;
}




Int_t  AliTPCtrackerSector::GetRowNumber(Double_t x) const 
{
  //return pad row number for this x
  Double_t r;
  if (fN < 64){
    r=fRow[fN-1].GetX();
    if (x > r) return fN;
    r=fRow[0].GetX();
    if (x < r) return -1;
    return Int_t((x-r)/fPadPitchLength + 0.5);}
  else{    
    r=fRow[fN-1].GetX();
    if (x > r) return fN;
    r=fRow[0].GetX();
    if (x < r) return -1;
    Double_t r1=fRow[64].GetX();
    if(x<r1){       
      return Int_t((x-r)/f1PadPitchLength + 0.5);}
    else{
      return (Int_t((x-r1)/f2PadPitchLength + 0.5)+64);} 
  }
}


void AliTPCtrackerRow::SetCluster1(Int_t i, const AliTPCclusterMI &cl)
{
  // attach cluster
  if (!fClusters1) fClusters1 = new TClonesArray("AliTPCclusterMI",1000);
  if (i<=fClusters1->GetLast() && fClusters1->UncheckedAt(i)) fClusters1->RemoveAt(i);
  new( (*fClusters1)[fClusters1->GetEntriesFast()] ) AliTPCclusterMI(cl);
  //
}

void AliTPCtrackerRow::SetCluster2(Int_t i, const AliTPCclusterMI &cl)
{
  // attach cluster
  if (!fClusters2) fClusters2 = new TClonesArray("AliTPCclusterMI",1000);
  if (i<=fClusters2->GetLast() && fClusters2->UncheckedAt(i)) fClusters2->RemoveAt(i);
  new( (*fClusters2)[fClusters2->GetEntriesFast()] ) AliTPCclusterMI(cl);
  //
}


//_________________________________________________________________________
void AliTPCtrackerSector::Setup(const AliTPCParam *par, Int_t f) {
  //-----------------------------------------------------------------------
  // Setup inner sector
  //-----------------------------------------------------------------------
  if (f==0) {
     fAlpha=par->GetInnerAngle();
     fAlphaShift=par->GetInnerAngleShift();
     fPadPitchWidth=par->GetInnerPadPitchWidth();
     fPadPitchLength=par->GetInnerPadPitchLength();
     fN=par->GetNRowLow();
     if(fRow)delete [] fRow;fRow = 0;
     fRow=new AliTPCtrackerRow[fN];
     for (Int_t i=0; i<fN; i++) {
       fRow[i].SetX(par->GetPadRowRadiiLow(i));
       fRow[i].SetDeadZone(1.5);  //1.5 cm of dead zone
     }
  } else {
     fAlpha=par->GetOuterAngle();
     fAlphaShift=par->GetOuterAngleShift();
     fPadPitchWidth  = par->GetOuterPadPitchWidth();
     fPadPitchLength = par->GetOuter1PadPitchLength();
     f1PadPitchLength = par->GetOuter1PadPitchLength();
     f2PadPitchLength = par->GetOuter2PadPitchLength();
     fN=par->GetNRowUp();
     if(fRow)delete [] fRow;fRow = 0;
     fRow=new AliTPCtrackerRow[fN];
     for (Int_t i=0; i<fN; i++) {
       fRow[i].SetX(par->GetPadRowRadiiUp(i)); 
       fRow[i].SetDeadZone(1.5);  // 1.5 cm of dead zone
     }
  } 
}

//_________________________________________________________________________
void AliTPCtrackerSector::InsertCluster(AliTPCclusterMI *cl, Int_t size, const AliTPCParam *par) {
  //-----------------------------------------------------------------------
  // Insert cluster to the sector
  //-----------------------------------------------------------------------

  if(!cl) return; 

  const Int_t fkNIS = par->GetNInnerSector()/2;
  const Int_t fkNOS = par->GetNOuterSector()/2;
  Int_t row = cl->GetRow();
  Int_t sec = cl->GetDetector();

  // add cluster to the corresponding pad row
  AliTPCtrackerRow *tpcrow = 0x0;

  Int_t left=0;
  if (sec<fkNIS*2){
    left = sec/fkNIS;
  }
  else{
    left = (sec-fkNIS*2)/fkNOS;
  }
  //
  if (left ==0){
    tpcrow = fRow+row;
    if(!tpcrow->GetClusters1()) {
       tpcrow->SetN1(0);
    }
    if(size < kMaxClusterPerRow) {
      tpcrow->SetCluster1(tpcrow->GetN1(), *cl);
      //printf("inner: size %d, tpcrow->GetN1() %d  sec %d row %d tpcrow %p cl %p\n", size, tpcrow->GetN1(), sec, row, tpcrow, cl);

      tpcrow->IncrementN1();
    }
  }
  if (left ==1){
    tpcrow = fRow+row;
    if(!tpcrow->GetClusters2()) { 
      tpcrow->SetN2(0);
    }
    if(size < kMaxClusterPerRow)  { 
      tpcrow->SetCluster2(tpcrow->GetN2(), *cl);
      //printf("outer: size %d, tpcrow->GetN2() %d  sec %d row %d tpcrow %p cl %p\n", size, tpcrow->GetN2(), sec, row, tpcrow, cl);

      tpcrow->IncrementN2();
    }
  }
}

//_________________________________________________________________________
Int_t  AliTPCtrackerSector::GetNClInSector(Int_t side) const
{
  //return number of all clusters in one sector; side =0 for A side and 1 for C side 

  Int_t nclSector=0;
  Int_t nrows = GetNRows();

  for (Int_t row=0;row<nrows;row++) {
    AliTPCtrackerRow&  tpcrow = (*this)[row];
    Int_t ncl =  (side==0)?(tpcrow.GetN1()):(tpcrow.GetN2());
    nclSector+=ncl;
  }

  return nclSector;
}

//_________________________________________________________________________
Int_t  AliTPCtrackerSector::GetNClUsedInSector(Int_t side) const
{
  //return number of clusters used in tracking in one sector; side =0 for A side and 1 for C side 

  Int_t nclSector=0;
  Int_t nrows = GetNRows();

  for (Int_t row=0;row<nrows;row++) {
    AliTPCtrackerRow&  tpcrow = (*this)[row];
    Int_t nclusters = (side==0)?tpcrow.GetN1():tpcrow.GetN2();
    for (Int_t icluster=0; icluster<nclusters; icluster++)
    {
      AliTPCclusterMI* cluster = NULL;
      if (side==0) { cluster=tpcrow.GetCluster1(icluster); }
      else         { cluster=tpcrow.GetCluster2(icluster); }
      if (!cluster) continue;
      if (cluster->IsUsed(1)) nclSector++;
    }
  }

  return nclSector;
}

 AliTPCtrackerSector.cxx:1
 AliTPCtrackerSector.cxx:2
 AliTPCtrackerSector.cxx:3
 AliTPCtrackerSector.cxx:4
 AliTPCtrackerSector.cxx:5
 AliTPCtrackerSector.cxx:6
 AliTPCtrackerSector.cxx:7
 AliTPCtrackerSector.cxx:8
 AliTPCtrackerSector.cxx:9
 AliTPCtrackerSector.cxx:10
 AliTPCtrackerSector.cxx:11
 AliTPCtrackerSector.cxx:12
 AliTPCtrackerSector.cxx:13
 AliTPCtrackerSector.cxx:14
 AliTPCtrackerSector.cxx:15
 AliTPCtrackerSector.cxx:16
 AliTPCtrackerSector.cxx:17
 AliTPCtrackerSector.cxx:18
 AliTPCtrackerSector.cxx:19
 AliTPCtrackerSector.cxx:20
 AliTPCtrackerSector.cxx:21
 AliTPCtrackerSector.cxx:22
 AliTPCtrackerSector.cxx:23
 AliTPCtrackerSector.cxx:24
 AliTPCtrackerSector.cxx:25
 AliTPCtrackerSector.cxx:26
 AliTPCtrackerSector.cxx:27
 AliTPCtrackerSector.cxx:28
 AliTPCtrackerSector.cxx:29
 AliTPCtrackerSector.cxx:30
 AliTPCtrackerSector.cxx:31
 AliTPCtrackerSector.cxx:32
 AliTPCtrackerSector.cxx:33
 AliTPCtrackerSector.cxx:34
 AliTPCtrackerSector.cxx:35
 AliTPCtrackerSector.cxx:36
 AliTPCtrackerSector.cxx:37
 AliTPCtrackerSector.cxx:38
 AliTPCtrackerSector.cxx:39
 AliTPCtrackerSector.cxx:40
 AliTPCtrackerSector.cxx:41
 AliTPCtrackerSector.cxx:42
 AliTPCtrackerSector.cxx:43
 AliTPCtrackerSector.cxx:44
 AliTPCtrackerSector.cxx:45
 AliTPCtrackerSector.cxx:46
 AliTPCtrackerSector.cxx:47
 AliTPCtrackerSector.cxx:48
 AliTPCtrackerSector.cxx:49
 AliTPCtrackerSector.cxx:50
 AliTPCtrackerSector.cxx:51
 AliTPCtrackerSector.cxx:52
 AliTPCtrackerSector.cxx:53
 AliTPCtrackerSector.cxx:54
 AliTPCtrackerSector.cxx:55
 AliTPCtrackerSector.cxx:56
 AliTPCtrackerSector.cxx:57
 AliTPCtrackerSector.cxx:58
 AliTPCtrackerSector.cxx:59
 AliTPCtrackerSector.cxx:60
 AliTPCtrackerSector.cxx:61
 AliTPCtrackerSector.cxx:62
 AliTPCtrackerSector.cxx:63
 AliTPCtrackerSector.cxx:64
 AliTPCtrackerSector.cxx:65
 AliTPCtrackerSector.cxx:66
 AliTPCtrackerSector.cxx:67
 AliTPCtrackerSector.cxx:68
 AliTPCtrackerSector.cxx:69
 AliTPCtrackerSector.cxx:70
 AliTPCtrackerSector.cxx:71
 AliTPCtrackerSector.cxx:72
 AliTPCtrackerSector.cxx:73
 AliTPCtrackerSector.cxx:74
 AliTPCtrackerSector.cxx:75
 AliTPCtrackerSector.cxx:76
 AliTPCtrackerSector.cxx:77
 AliTPCtrackerSector.cxx:78
 AliTPCtrackerSector.cxx:79
 AliTPCtrackerSector.cxx:80
 AliTPCtrackerSector.cxx:81
 AliTPCtrackerSector.cxx:82
 AliTPCtrackerSector.cxx:83
 AliTPCtrackerSector.cxx:84
 AliTPCtrackerSector.cxx:85
 AliTPCtrackerSector.cxx:86
 AliTPCtrackerSector.cxx:87
 AliTPCtrackerSector.cxx:88
 AliTPCtrackerSector.cxx:89
 AliTPCtrackerSector.cxx:90
 AliTPCtrackerSector.cxx:91
 AliTPCtrackerSector.cxx:92
 AliTPCtrackerSector.cxx:93
 AliTPCtrackerSector.cxx:94
 AliTPCtrackerSector.cxx:95
 AliTPCtrackerSector.cxx:96
 AliTPCtrackerSector.cxx:97
 AliTPCtrackerSector.cxx:98
 AliTPCtrackerSector.cxx:99
 AliTPCtrackerSector.cxx:100
 AliTPCtrackerSector.cxx:101
 AliTPCtrackerSector.cxx:102
 AliTPCtrackerSector.cxx:103
 AliTPCtrackerSector.cxx:104
 AliTPCtrackerSector.cxx:105
 AliTPCtrackerSector.cxx:106
 AliTPCtrackerSector.cxx:107
 AliTPCtrackerSector.cxx:108
 AliTPCtrackerSector.cxx:109
 AliTPCtrackerSector.cxx:110
 AliTPCtrackerSector.cxx:111
 AliTPCtrackerSector.cxx:112
 AliTPCtrackerSector.cxx:113
 AliTPCtrackerSector.cxx:114
 AliTPCtrackerSector.cxx:115
 AliTPCtrackerSector.cxx:116
 AliTPCtrackerSector.cxx:117
 AliTPCtrackerSector.cxx:118
 AliTPCtrackerSector.cxx:119
 AliTPCtrackerSector.cxx:120
 AliTPCtrackerSector.cxx:121
 AliTPCtrackerSector.cxx:122
 AliTPCtrackerSector.cxx:123
 AliTPCtrackerSector.cxx:124
 AliTPCtrackerSector.cxx:125
 AliTPCtrackerSector.cxx:126
 AliTPCtrackerSector.cxx:127
 AliTPCtrackerSector.cxx:128
 AliTPCtrackerSector.cxx:129
 AliTPCtrackerSector.cxx:130
 AliTPCtrackerSector.cxx:131
 AliTPCtrackerSector.cxx:132
 AliTPCtrackerSector.cxx:133
 AliTPCtrackerSector.cxx:134
 AliTPCtrackerSector.cxx:135
 AliTPCtrackerSector.cxx:136
 AliTPCtrackerSector.cxx:137
 AliTPCtrackerSector.cxx:138
 AliTPCtrackerSector.cxx:139
 AliTPCtrackerSector.cxx:140
 AliTPCtrackerSector.cxx:141
 AliTPCtrackerSector.cxx:142
 AliTPCtrackerSector.cxx:143
 AliTPCtrackerSector.cxx:144
 AliTPCtrackerSector.cxx:145
 AliTPCtrackerSector.cxx:146
 AliTPCtrackerSector.cxx:147
 AliTPCtrackerSector.cxx:148
 AliTPCtrackerSector.cxx:149
 AliTPCtrackerSector.cxx:150
 AliTPCtrackerSector.cxx:151
 AliTPCtrackerSector.cxx:152
 AliTPCtrackerSector.cxx:153
 AliTPCtrackerSector.cxx:154
 AliTPCtrackerSector.cxx:155
 AliTPCtrackerSector.cxx:156
 AliTPCtrackerSector.cxx:157
 AliTPCtrackerSector.cxx:158
 AliTPCtrackerSector.cxx:159
 AliTPCtrackerSector.cxx:160
 AliTPCtrackerSector.cxx:161
 AliTPCtrackerSector.cxx:162
 AliTPCtrackerSector.cxx:163
 AliTPCtrackerSector.cxx:164
 AliTPCtrackerSector.cxx:165
 AliTPCtrackerSector.cxx:166
 AliTPCtrackerSector.cxx:167
 AliTPCtrackerSector.cxx:168
 AliTPCtrackerSector.cxx:169
 AliTPCtrackerSector.cxx:170
 AliTPCtrackerSector.cxx:171
 AliTPCtrackerSector.cxx:172
 AliTPCtrackerSector.cxx:173
 AliTPCtrackerSector.cxx:174
 AliTPCtrackerSector.cxx:175
 AliTPCtrackerSector.cxx:176
 AliTPCtrackerSector.cxx:177
 AliTPCtrackerSector.cxx:178
 AliTPCtrackerSector.cxx:179
 AliTPCtrackerSector.cxx:180
 AliTPCtrackerSector.cxx:181
 AliTPCtrackerSector.cxx:182
 AliTPCtrackerSector.cxx:183
 AliTPCtrackerSector.cxx:184
 AliTPCtrackerSector.cxx:185
 AliTPCtrackerSector.cxx:186
 AliTPCtrackerSector.cxx:187
 AliTPCtrackerSector.cxx:188
 AliTPCtrackerSector.cxx:189
 AliTPCtrackerSector.cxx:190
 AliTPCtrackerSector.cxx:191
 AliTPCtrackerSector.cxx:192
 AliTPCtrackerSector.cxx:193
 AliTPCtrackerSector.cxx:194
 AliTPCtrackerSector.cxx:195
 AliTPCtrackerSector.cxx:196
 AliTPCtrackerSector.cxx:197
 AliTPCtrackerSector.cxx:198
 AliTPCtrackerSector.cxx:199
 AliTPCtrackerSector.cxx:200
 AliTPCtrackerSector.cxx:201
 AliTPCtrackerSector.cxx:202
 AliTPCtrackerSector.cxx:203
 AliTPCtrackerSector.cxx:204
 AliTPCtrackerSector.cxx:205
 AliTPCtrackerSector.cxx:206
 AliTPCtrackerSector.cxx:207
 AliTPCtrackerSector.cxx:208
 AliTPCtrackerSector.cxx:209
 AliTPCtrackerSector.cxx:210
 AliTPCtrackerSector.cxx:211
 AliTPCtrackerSector.cxx:212
 AliTPCtrackerSector.cxx:213
 AliTPCtrackerSector.cxx:214
 AliTPCtrackerSector.cxx:215
 AliTPCtrackerSector.cxx:216
 AliTPCtrackerSector.cxx:217
 AliTPCtrackerSector.cxx:218
 AliTPCtrackerSector.cxx:219
 AliTPCtrackerSector.cxx:220
 AliTPCtrackerSector.cxx:221
 AliTPCtrackerSector.cxx:222
 AliTPCtrackerSector.cxx:223
 AliTPCtrackerSector.cxx:224
 AliTPCtrackerSector.cxx:225
 AliTPCtrackerSector.cxx:226
 AliTPCtrackerSector.cxx:227
 AliTPCtrackerSector.cxx:228
 AliTPCtrackerSector.cxx:229
 AliTPCtrackerSector.cxx:230
 AliTPCtrackerSector.cxx:231
 AliTPCtrackerSector.cxx:232
 AliTPCtrackerSector.cxx:233
 AliTPCtrackerSector.cxx:234
 AliTPCtrackerSector.cxx:235
 AliTPCtrackerSector.cxx:236
 AliTPCtrackerSector.cxx:237
 AliTPCtrackerSector.cxx:238
 AliTPCtrackerSector.cxx:239
 AliTPCtrackerSector.cxx:240
 AliTPCtrackerSector.cxx:241
 AliTPCtrackerSector.cxx:242
 AliTPCtrackerSector.cxx:243
 AliTPCtrackerSector.cxx:244
 AliTPCtrackerSector.cxx:245
 AliTPCtrackerSector.cxx:246
 AliTPCtrackerSector.cxx:247
 AliTPCtrackerSector.cxx:248
 AliTPCtrackerSector.cxx:249
 AliTPCtrackerSector.cxx:250
 AliTPCtrackerSector.cxx:251
 AliTPCtrackerSector.cxx:252
 AliTPCtrackerSector.cxx:253
 AliTPCtrackerSector.cxx:254
 AliTPCtrackerSector.cxx:255
 AliTPCtrackerSector.cxx:256
 AliTPCtrackerSector.cxx:257
 AliTPCtrackerSector.cxx:258
 AliTPCtrackerSector.cxx:259
 AliTPCtrackerSector.cxx:260
 AliTPCtrackerSector.cxx:261
 AliTPCtrackerSector.cxx:262
 AliTPCtrackerSector.cxx:263
 AliTPCtrackerSector.cxx:264
 AliTPCtrackerSector.cxx:265
 AliTPCtrackerSector.cxx:266
 AliTPCtrackerSector.cxx:267
 AliTPCtrackerSector.cxx:268
 AliTPCtrackerSector.cxx:269
 AliTPCtrackerSector.cxx:270
 AliTPCtrackerSector.cxx:271
 AliTPCtrackerSector.cxx:272
 AliTPCtrackerSector.cxx:273
 AliTPCtrackerSector.cxx:274
 AliTPCtrackerSector.cxx:275
 AliTPCtrackerSector.cxx:276
 AliTPCtrackerSector.cxx:277
 AliTPCtrackerSector.cxx:278
 AliTPCtrackerSector.cxx:279
 AliTPCtrackerSector.cxx:280
 AliTPCtrackerSector.cxx:281
 AliTPCtrackerSector.cxx:282
 AliTPCtrackerSector.cxx:283
 AliTPCtrackerSector.cxx:284
 AliTPCtrackerSector.cxx:285
 AliTPCtrackerSector.cxx:286
 AliTPCtrackerSector.cxx:287
 AliTPCtrackerSector.cxx:288
 AliTPCtrackerSector.cxx:289
 AliTPCtrackerSector.cxx:290
 AliTPCtrackerSector.cxx:291
 AliTPCtrackerSector.cxx:292
 AliTPCtrackerSector.cxx:293
 AliTPCtrackerSector.cxx:294
 AliTPCtrackerSector.cxx:295
 AliTPCtrackerSector.cxx:296
 AliTPCtrackerSector.cxx:297
 AliTPCtrackerSector.cxx:298
 AliTPCtrackerSector.cxx:299
 AliTPCtrackerSector.cxx:300
 AliTPCtrackerSector.cxx:301
 AliTPCtrackerSector.cxx:302
 AliTPCtrackerSector.cxx:303
 AliTPCtrackerSector.cxx:304
 AliTPCtrackerSector.cxx:305
 AliTPCtrackerSector.cxx:306
 AliTPCtrackerSector.cxx:307
 AliTPCtrackerSector.cxx:308
 AliTPCtrackerSector.cxx:309
 AliTPCtrackerSector.cxx:310
 AliTPCtrackerSector.cxx:311
 AliTPCtrackerSector.cxx:312
 AliTPCtrackerSector.cxx:313
 AliTPCtrackerSector.cxx:314
 AliTPCtrackerSector.cxx:315
 AliTPCtrackerSector.cxx:316
 AliTPCtrackerSector.cxx:317
 AliTPCtrackerSector.cxx:318
 AliTPCtrackerSector.cxx:319
 AliTPCtrackerSector.cxx:320
 AliTPCtrackerSector.cxx:321
 AliTPCtrackerSector.cxx:322
 AliTPCtrackerSector.cxx:323
 AliTPCtrackerSector.cxx:324
 AliTPCtrackerSector.cxx:325
 AliTPCtrackerSector.cxx:326
 AliTPCtrackerSector.cxx:327
 AliTPCtrackerSector.cxx:328
 AliTPCtrackerSector.cxx:329
 AliTPCtrackerSector.cxx:330
 AliTPCtrackerSector.cxx:331
 AliTPCtrackerSector.cxx:332
 AliTPCtrackerSector.cxx:333
 AliTPCtrackerSector.cxx:334
 AliTPCtrackerSector.cxx:335
 AliTPCtrackerSector.cxx:336
 AliTPCtrackerSector.cxx:337
 AliTPCtrackerSector.cxx:338
 AliTPCtrackerSector.cxx:339
 AliTPCtrackerSector.cxx:340
 AliTPCtrackerSector.cxx:341
 AliTPCtrackerSector.cxx:342
 AliTPCtrackerSector.cxx:343
 AliTPCtrackerSector.cxx:344
 AliTPCtrackerSector.cxx:345
 AliTPCtrackerSector.cxx:346
 AliTPCtrackerSector.cxx:347
 AliTPCtrackerSector.cxx:348
 AliTPCtrackerSector.cxx:349
 AliTPCtrackerSector.cxx:350
 AliTPCtrackerSector.cxx:351
 AliTPCtrackerSector.cxx:352
 AliTPCtrackerSector.cxx:353
 AliTPCtrackerSector.cxx:354
 AliTPCtrackerSector.cxx:355
 AliTPCtrackerSector.cxx:356
 AliTPCtrackerSector.cxx:357
 AliTPCtrackerSector.cxx:358
 AliTPCtrackerSector.cxx:359
 AliTPCtrackerSector.cxx:360
 AliTPCtrackerSector.cxx:361
 AliTPCtrackerSector.cxx:362
 AliTPCtrackerSector.cxx:363
 AliTPCtrackerSector.cxx:364
 AliTPCtrackerSector.cxx:365
 AliTPCtrackerSector.cxx:366
 AliTPCtrackerSector.cxx:367
 AliTPCtrackerSector.cxx:368
 AliTPCtrackerSector.cxx:369
 AliTPCtrackerSector.cxx:370
 AliTPCtrackerSector.cxx:371
 AliTPCtrackerSector.cxx:372
 AliTPCtrackerSector.cxx:373
 AliTPCtrackerSector.cxx:374
 AliTPCtrackerSector.cxx:375
 AliTPCtrackerSector.cxx:376
 AliTPCtrackerSector.cxx:377
 AliTPCtrackerSector.cxx:378
 AliTPCtrackerSector.cxx:379
 AliTPCtrackerSector.cxx:380
 AliTPCtrackerSector.cxx:381
 AliTPCtrackerSector.cxx:382
 AliTPCtrackerSector.cxx:383
 AliTPCtrackerSector.cxx:384
 AliTPCtrackerSector.cxx:385
 AliTPCtrackerSector.cxx:386
 AliTPCtrackerSector.cxx:387
 AliTPCtrackerSector.cxx:388
 AliTPCtrackerSector.cxx:389
 AliTPCtrackerSector.cxx:390
 AliTPCtrackerSector.cxx:391
 AliTPCtrackerSector.cxx:392
 AliTPCtrackerSector.cxx:393
 AliTPCtrackerSector.cxx:394