ROOT logo
#include "AliITSUClusterPix.h"
#include "AliITSUGeomTGeo.h"
#include "AliLog.h"
#include <TGeoMatrix.h>
#include <TString.h>

#include <cstdlib>

using namespace TMath;

ClassImp(AliITSUClusterPix)

AliITSUGeomTGeo* AliITSUClusterPix::fgGeom = 0;
UInt_t           AliITSUClusterPix::fgMode = 0;

//_____________________________________________________
AliITSUClusterPix::AliITSUClusterPix()
  : fCharge(0)
  , fRecoInfo(0)
  , fNxNzN(0)
#ifdef _ClusterTopology_
  ,fPatternNRows(0)
  ,fPatternNCols(0)
  ,fPatternMinRow(0)
  ,fPatternMinCol(0)
#endif
{
  // default constructor
#ifdef _ClusterTopology_
  memset(fPattern,0,kMaxPatternBytes*sizeof(UChar_t));
#endif

}

//_____________________________________________________
AliITSUClusterPix::~AliITSUClusterPix()
{
  // default destructor
}

//_____________________________________________________
AliITSUClusterPix::AliITSUClusterPix(const AliITSUClusterPix& cluster) 
  :AliCluster(cluster)
  ,fCharge(cluster.fCharge)
  ,fRecoInfo(cluster.fRecoInfo)
  ,fNxNzN(cluster.fNxNzN)
#ifdef _ClusterTopology_
  ,fPatternNRows(cluster.fPatternNRows)
  ,fPatternNCols(cluster.fPatternNCols)
  ,fPatternMinRow(cluster.fPatternMinRow)
  ,fPatternMinCol(cluster.fPatternMinCol)
#endif
{
  // copy constructor
#ifdef _ClusterTopology_
  memcpy(fPattern,cluster.fPattern,kMaxPatternBytes*sizeof(UChar_t));
#endif
}

//______________________________________________________________________________
AliITSUClusterPix& AliITSUClusterPix::operator=(const AliITSUClusterPix& cluster)
{
  // = op
  if(&cluster == this) return *this;
  fNxNzN = cluster.fNxNzN;
  fCharge = cluster.fCharge;
  fRecoInfo = cluster.fRecoInfo;
  //
#ifdef _ClusterTopology_
  memcpy(fPattern,cluster.fPattern,kMaxPatternBytes*sizeof(UChar_t));
  fPatternNRows = cluster.fPatternNRows;
  fPatternNCols = cluster.fPatternNCols;
  fPatternMinRow = cluster.fPatternMinRow;
  fPatternMinCol = cluster.fPatternMinCol;
#endif
  //
  TObject::operator=(cluster);
  AliCluster::operator=(cluster);
  return *this;
}

//______________________________________________________________________________
const TGeoHMatrix*  AliITSUClusterPix::GetTracking2LocalMatrix() const
{
  // get tracking to local matrix (sensor!!!)
  return (TGeoHMatrix*)fgGeom->GetMatrixT2L(GetVolumeId());
}

//______________________________________________________________________________
TGeoHMatrix* AliITSUClusterPix::GetMatrix(Bool_t ) const
{
  // get chip matrix (sensor!)
  return (TGeoHMatrix*)fgGeom->GetMatrixSens(GetVolumeId());
}

//______________________________________________________________________________
void AliITSUClusterPix::Print(Option_t* option) const
{
  // Print cluster information.
  TString str = option; 
  str.ToLower();
  printf("Cl.in mod %5d, nx:%3d nz:%3d n:%d |Err^2:%.3e %.3e %+.3e |",GetVolumeId(),GetNx(),GetNz(),
	 GetNPix(),GetSigmaY2(),GetSigmaZ2(),GetSigmaYZ());
  printf("XYZ: (%+.4e %+.4e %+.4e ",GetX(),GetY(),GetZ());
  if      (IsFrameLoc()) printf("LOC)");
  else if (IsFrameGlo()) printf("GLO)");
  else if (IsFrameTrk()) printf("TRK)");
  if (str.Contains("glo") && !IsFrameGlo() && fgGeom) {
    Float_t g[3];
    GetGlobalXYZ(g);
    printf(" (%+.4e %+.4e %+.4e GLO)",g[0],g[1],g[2]);
  }
  printf(" MClb:");
  for (int i=0;i<3;i++) printf(" %5d",GetLabel(i));
  if (TestBit(kSplit)) printf(" Spl");
  printf("\n");
  //
#ifdef _ClusterTopology_
  if (str.Contains("p")) { // print pattern
    int nr = GetPatternRowSpan();
    int nc = GetPatternColSpan();    
    printf("Pattern: %d rows from %d",nr,fPatternMinRow);
    if (IsPatternRowsTruncated()) printf("(truncated)");
    printf(", %d columns from %d",nc,fPatternMinCol);
    if (IsPatternColsTruncated()) printf("(truncated)");
    printf("\n");
    for (int ir=0;ir<nr;ir++) {
      for (int ic=0;ic<nc;ic++) printf("%c",TestPixel(ir,ic) ? '+':'-');
      printf("\n");
    }
  }
#endif
  //
}

#ifdef _ClusterTopology_
//______________________________________________________________________________
void AliITSUClusterPix::ResetPattern()
{
  // reset pixels pattern
  memset(fPattern,0,kMaxPatternBytes*sizeof(UChar_t));
}

//______________________________________________________________________________
Bool_t AliITSUClusterPix::TestPixel(UShort_t row,UShort_t col) const
{
  // test if pixel at relative row,col is fired
  int nbits = row*GetPatternColSpan()+col;
  if (nbits>=kMaxPatternBits) return kFALSE;
  int bytn = nbits>>3; // 1/8  
  int bitn = nbits%8;
  return (fPattern[bytn]&(0x1<<bitn))!=0;
  //
}

//______________________________________________________________________________
void AliITSUClusterPix::SetPixel(UShort_t row,UShort_t col, Bool_t fired) 
{
  // test if pixel at relative row,col is fired
  int nbits = row*GetPatternColSpan()+col;
  if (nbits>=kMaxPatternBits) return;
  int bytn = nbits>>3; // 1/8  
  int bitn = nbits%8;
  if (nbits>=kMaxPatternBits) exit(1);
  if (fired) fPattern[bytn] |= (0x1<<bitn);
  else       fPattern[bytn] &= (0xff ^ (0x1<<bitn));
  //
}

//______________________________________________________________________________
void AliITSUClusterPix::SetPatternRowSpan(UShort_t nr, Bool_t truncated)
{
  // set pattern span in rows, flag if truncated
  fPatternNRows = kSpanMask&nr;
  if (truncated) fPatternNRows |= kTruncateMask; 
}

//______________________________________________________________________________
void AliITSUClusterPix::SetPatternColSpan(UShort_t nc, Bool_t truncated)
{
  // set pattern span in columns, flag if truncated
  fPatternNCols = kSpanMask&nc;
  if (truncated) fPatternNCols |= kTruncateMask; 
}

#endif

//______________________________________________________________________________
Bool_t AliITSUClusterPix::GetGlobalXYZ(Float_t xyz[3]) const
{
  // Get the global coordinates of the cluster
  // All the needed information is taken only
  // from TGeo (single precision).
  if (IsFrameGlo()) {
    xyz[0] = GetX();
    xyz[1] = GetY();
    xyz[2] = GetZ();
    return kTRUE;
  }
  //
  Double_t lxyz[3] = {0, 0, 0};
  if (IsFrameTrk()) {
    const TGeoHMatrix *mt = GetTracking2LocalMatrix();
    if (!mt) return kFALSE;
    Double_t txyz[3] = {GetX(), GetY(), GetZ()};
    mt->LocalToMaster(txyz,lxyz);
  }
  else {
    lxyz[0] = GetX(); lxyz[1] = GetY(); lxyz[2] = GetZ();
  }
  //
  TGeoHMatrix *ml = GetMatrix();
  if (!ml) return kFALSE;
  Double_t gxyz[3] = {0, 0, 0};
  ml->LocalToMaster(lxyz,gxyz);
  xyz[0] = gxyz[0]; xyz[1] = gxyz[1]; xyz[2] = gxyz[2];
  return kTRUE;
}

//______________________________________________________________________________
Bool_t AliITSUClusterPix::GetGlobalXYZ(Double_t xyz[3]) const
{
  // Get the global coordinates of the cluster
  // All the needed information is taken only
  // from TGeo (double precision).
  if (IsFrameGlo()) {
    xyz[0] = GetX();
    xyz[1] = GetY();
    xyz[2] = GetZ();
    return kTRUE;
  }
  //
  Double_t lxyz[3] = {0, 0, 0};
  if (IsFrameTrk()) {
    const TGeoHMatrix *mt = GetTracking2LocalMatrix();
    if (!mt) return kFALSE;
    Double_t txyz[3] = {GetX(), GetY(), GetZ()};
    mt->LocalToMaster(txyz,lxyz);
  }
  else {
    lxyz[0] = GetX(); lxyz[1] = GetY(); lxyz[2] = GetZ();
  }
  //
  TGeoHMatrix *ml = GetMatrix();
  if (!ml) return kFALSE;
  ml->LocalToMaster(lxyz,xyz);
  return kTRUE;
}


//______________________________________________________________________________
Bool_t AliITSUClusterPix::GetGlobalCov(Float_t cov[6]) const
{
  // Get the global covariance matrix of the cluster coordinates
  // All the needed information is taken only
  // from TGeo.
  // Note: regardless on in which frame the coordinates are, the errors are always in tracking frame
  //
  return AliCluster::GetGlobalCov(cov);
}

//______________________________________________________________________________
Bool_t AliITSUClusterPix::GetXRefPlane(Float_t &xref) const
{
  // Get the distance between the origin and the ref.plane.
  // All the needed information is taken only from TGeo.
  return AliCluster::GetXRefPlane(xref);
}

//______________________________________________________________________________
void AliITSUClusterPix::GoToFrameGlo()
{
  // convert to global frame
  if (IsFrameGlo()) return;
  double loc[3],glo[3];
  //
  if (IsFrameTrk()) {
    double curr[3]={GetX(),GetY(),GetZ()};
    GetTracking2LocalMatrix()->LocalToMaster(curr,loc);
    ResetBit(kFrameTrk);
  }
  else {
    loc[0] = GetX(); loc[1] = GetY(); loc[2] = GetZ();
    ResetBit(kFrameLoc);
  }
  GetMatrix()->LocalToMaster(loc,glo);
  SetX(glo[0]);  
  SetY(glo[1]); 
  SetZ(glo[2]);
  SetBit(kFrameGlo);
  //
}

//______________________________________________________________________________
void AliITSUClusterPix::GoToFrameLoc()
{
  // convert to local frame
  if (IsFrameLoc()) return;
  //
  double loc[3],glo[3];
  if (IsFrameTrk()) {
    double curr[3]={GetX(),GetY(),GetZ()};
    GetTracking2LocalMatrix()->LocalToMaster(curr,loc);
    ResetBit(kFrameTrk);
  }
  else {
    glo[0] = GetX(); glo[1] = GetY(); glo[2] = GetZ();
    GetMatrix()->MasterToLocal(glo,loc);
    ResetBit(kFrameLoc);
  }
  SetBit(kFrameLoc);
  SetX(loc[0]); 
  SetY(loc[1]); 
  SetZ(loc[2]);
  //
}

//______________________________________________________________________________
void AliITSUClusterPix::GetLocalXYZ(Float_t xyz[3]) const
{
  // get local coordinates
  if (IsFrameLoc()) {
    xyz[0] = GetX(); xyz[1] = 0; xyz[2] = GetZ();
    return;
  }
  double loc[3],glo[3];
  if (IsFrameTrk()) {
    double curr[3]={GetX(),GetY(),GetZ()};
    GetTracking2LocalMatrix()->LocalToMaster(curr,loc);
  }
  else {
    glo[0] = GetX(); glo[1] = GetY(); glo[2] = GetZ();
    GetMatrix()->MasterToLocal(glo,loc);
  }
  for (int i=3;i--;) xyz[i] = loc[i];
  //
}

//______________________________________________________________________________
void AliITSUClusterPix::GoToFrameTrk()
{
  // convert to tracking frame
  if (IsFrameTrk()) return;
  //
  double loc[3],trk[3];
  if (IsFrameGlo()) {
    double glo[3]={GetX(),GetY(),GetZ()};
    GetMatrix()->MasterToLocal(glo,loc);
    ResetBit(kFrameGlo);
  }
  else {
    loc[0] = GetX(); loc[1] = GetY(); loc[2] = GetZ();
    ResetBit(kFrameLoc);    
  }
  // now in local frame
  GetTracking2LocalMatrix()->MasterToLocal(loc,trk);
  SetBit(kFrameTrk);
  SetX(trk[0]);  
  SetY(trk[1]); 
  SetZ(trk[2]);
  //
}

//______________________________________________________________________________
void AliITSUClusterPix::GetTrackingXYZ(Float_t xyz[3]) const
{
  // convert to tracking frame
  if (IsFrameTrk()) {
    xyz[0] = GetX(); xyz[1] = GetY(); xyz[2] = GetZ();
    return;
  }
  //
  double loc[3],trk[3];
  if (IsFrameGlo()) {
    double glo[3]={GetX(),GetY(),GetZ()};
    GetMatrix()->MasterToLocal(glo,loc);
  }
  else {
    loc[0] = GetX(); loc[1] = GetY(); loc[2] = GetZ();
  }
  // now in local frame
  GetTracking2LocalMatrix()->MasterToLocal(loc,trk);
  for (int i=3;i--;) xyz[i] = trk[i];
  //
}

//______________________________________________________________________________
Int_t AliITSUClusterPix::Compare(const TObject* obj)  const
{
  // compare clusters accodring to specific mode
  const AliITSUClusterPix* px = (const AliITSUClusterPix*)obj;
  float xyz[3],xyz1[3];
  if (fgMode & kSortIdLocXZ) { // sorting in local frame
    if (GetVolumeId()==px->GetVolumeId()) {
      GetLocalXYZ(xyz);
      px->GetLocalXYZ(xyz1);
      if (xyz[0]<xyz1[0]) return -1; // sort in X
      if (xyz[0]>xyz1[0]) return  1;
      if (xyz[2]<xyz1[2]) return -1; // then in Z
      if (xyz[2]>xyz1[2]) return  1;
      return 0;
    }
    return int(GetVolumeId())-int(px->GetVolumeId());
  }
  if (fgMode & kSortIdTrkYZ) { // sorting in tracking frame
    if (GetVolumeId()==px->GetVolumeId()) {
      GetTrackingXYZ(xyz);
      px->GetTrackingXYZ(xyz1);
      if (xyz[1]<xyz1[1]) return -1; // sort in Y
      if (xyz[1]>xyz1[1]) return  1;
      if (xyz[2]<xyz1[2]) return -1; // then in Z
      if (xyz[2]>xyz1[2]) return  1;
      return 0;    
    }
    return int(GetVolumeId())-int(px->GetVolumeId());    
  }
  AliFatal(Form("Unknown modr for sorting: %d",fgMode));
  return 0;
}

//______________________________________________________________________________
Bool_t AliITSUClusterPix::IsEqual(const TObject* obj)  const
{
  // compare clusters accodring to specific mode
  const AliITSUClusterPix* px = (const AliITSUClusterPix*)obj;
  const Float_t kTol = 1e-5;
  float xyz[3],xyz1[3];
  if (fgMode & kSortIdLocXZ) { // sorting in local frame
    if (GetVolumeId()!=px->GetVolumeId()) return kFALSE;
    GetLocalXYZ(xyz);
    px->GetLocalXYZ(xyz1);
    return (Abs(xyz[0]-xyz1[0])<kTol && Abs(xyz[2]-xyz1[2])<kTol) ? kTRUE : kFALSE;
  }
  if (fgMode & kSortIdTrkYZ) { // sorting in tracking frame
    if (GetVolumeId()!=px->GetVolumeId()) return kFALSE;
    GetTrackingXYZ(xyz);
    px->GetTrackingXYZ(xyz1);
    return (Abs(xyz[1]-xyz1[1])<kTol && Abs(xyz[2]-xyz1[2])<kTol) ? kTRUE : kFALSE;
  }
  AliFatal(Form("Unknown modr for sorting: %d",fgMode));
  return kFALSE;
}

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