#include <TGeoManager.h>
#include <TGeoVolume.h>
#include <TGeoBBox.h>
#include <TObjArray.h>
#include <TString.h>
#include <TSystem.h>
#include <TFile.h>
#include "AliITSUGeomTGeo.h"
#include "AliITSUSegmentationPix.h"
using namespace TMath;
ClassImp(AliITSUSegmentationPix)
const char* AliITSUSegmentationPix::fgkSegmListName = "ITSUSegmentations";
AliITSUSegmentationPix::AliITSUSegmentationPix(UInt_t id, int nchips,int ncol,int nrow,
float pitchX,float pitchZ,
float thickness,
float pitchLftC,float pitchRgtC,
float edgL,float edgR,float edgT,float edgB)
: AliITSsegmentation()
,fGuardLft(edgL)
,fGuardRgt(edgR)
,fGuardTop(edgT)
,fGuardBot(edgB)
,fShiftXLoc(0.5*(edgT-edgB))
,fShiftZLoc(0.5*(edgR-edgL))
,fDxActive(0)
,fDzActive(0)
,fPitchX(pitchX)
,fPitchZ(pitchZ)
,fPitchZLftCol(pitchLftC<0 ? pitchZ:pitchLftC)
,fPitchZRgtCol(pitchRgtC<0 ? pitchZ:pitchRgtC)
,fChipDZ(0)
,fNChips(nchips)
,fNColPerChip(nchips>0 ? ncol/nchips:0)
,fNRow(nrow)
,fNCol(ncol)
,fDiodShiftMatNCol(0)
,fDiodShiftMatNRow(0)
,fDiodShiftMatDim(0)
,fDiodShidtMatX(0)
,fDiodShidtMatZ(0)
{
if (nchips) SetUniqueID( AliITSUGeomTGeo::ComposeChipTypeID(id) );
fChipDZ = (fNColPerChip-2)*fPitchZ + fPitchZLftCol + fPitchZRgtCol;;
fDxActive = fNRow*fPitchX;
fDzActive = fNChips*fChipDZ;
SetDetSize( fDxActive + fGuardTop+fGuardBot,
fDzActive + fGuardLft+fGuardRgt,
thickness);
}
AliITSUSegmentationPix::~AliITSUSegmentationPix()
{
delete[] fDiodShidtMatX;
delete[] fDiodShidtMatZ;
}
void AliITSUSegmentationPix::GetPadIxz(Float_t x,Float_t z,Int_t &ix,Int_t &iz) const
{
ix = int(x/fPitchX);
iz = int(Z2Col(z));
if (iz<0) { AliWarning(Form("Z=%f gives col=%d ouside [%d:%d)",z,iz,0,fNCol)); iz=0; }
else if (iz >= fNCol) { AliWarning(Form("Z=%f gives col=%d ouside [%d:%d)",z,iz,0,fNCol)); iz= fNCol-1;}
if (ix<0) { AliWarning(Form("X=%f gives row=%d ouside [%d:%d)",x,ix,0,fNRow)); ix=0; }
else if (ix >= fNRow) { AliWarning(Form("X=%f gives row=%d ouside [%d:%d)",x,ix,0,fNRow)); ix= fNRow-1;}
}
void AliITSUSegmentationPix::GetPadTxz(Float_t &x,Float_t &z) const
{
x /= fPitchX;
z = Z2Col(z);
}
void AliITSUSegmentationPix::GetPadCxz(Int_t ix,Int_t iz,Float_t &x,Float_t&z) const
{
x = Float_t((ix+0.5)*fPitchX);
z = Col2Z(iz);
}
Float_t AliITSUSegmentationPix::Z2Col(Float_t z) const
{
int chip = int(z/fChipDZ);
float col = chip*fNColPerChip;
z -= chip*fChipDZ;
if (z>fPitchZLftCol) col += 1+(z-fPitchZLftCol)/fPitchZ;
return col;
}
Float_t AliITSUSegmentationPix::Col2Z(Int_t col) const
{
int nchip = col/fNColPerChip;
col %= fNColPerChip;
float z = nchip*fChipDZ;
if (col>0) {
if (col<fNColPerChip-1) z += fPitchZLftCol + (col-0.5)*fPitchZ;
else z += fChipDZ - fPitchZRgtCol/2;
}
else z += fPitchZLftCol/2;
return z;
}
AliITSUSegmentationPix& AliITSUSegmentationPix::operator=(const AliITSUSegmentationPix &src)
{
if(this==&src) return *this;
AliITSsegmentation::operator=(src);
fNCol = src.fNCol;
fNRow = src.fNRow;
fNColPerChip = src.fNColPerChip;
fNChips = src.fNChips;
fChipDZ = src.fChipDZ;
fPitchZRgtCol = src.fPitchZRgtCol;
fPitchZLftCol = src.fPitchZLftCol;
fPitchZ = src.fPitchZ;
fPitchX = src.fPitchX;
fShiftXLoc = src.fShiftXLoc;
fShiftZLoc = src.fShiftZLoc;
fDxActive = src.fDxActive;
fDzActive = src.fDzActive;
fGuardBot = src.fGuardBot;
fGuardTop = src.fGuardTop;
fGuardRgt = src.fGuardRgt;
fGuardLft = src.fGuardLft;
fDiodShiftMatNCol = src.fDiodShiftMatNCol;
fDiodShiftMatNRow = src.fDiodShiftMatNRow;
fDiodShiftMatDim = src.fDiodShiftMatDim;
delete fDiodShidtMatX; fDiodShidtMatX = 0;
delete fDiodShidtMatZ; fDiodShidtMatZ = 0;
if (fDiodShiftMatDim) {
fDiodShidtMatX = new Float_t[fDiodShiftMatDim];
fDiodShidtMatZ = new Float_t[fDiodShiftMatDim];
for (int i=fDiodShiftMatDim;i--;) {
fDiodShidtMatX[i] = src.fDiodShidtMatX[i];
fDiodShidtMatZ[i] = src.fDiodShidtMatZ[i];
}
}
return *this;
}
AliITSUSegmentationPix::AliITSUSegmentationPix(const AliITSUSegmentationPix &src) :
AliITSsegmentation(src)
,fGuardLft(src.fGuardLft)
,fGuardRgt(src.fGuardRgt)
,fGuardTop(src.fGuardTop)
,fGuardBot(src.fGuardBot)
,fShiftXLoc(src.fShiftXLoc)
,fShiftZLoc(src.fShiftZLoc)
,fDxActive(src.fDxActive)
,fDzActive(src.fDzActive)
,fPitchX(src.fPitchX)
,fPitchZ(src.fPitchZ)
,fPitchZLftCol(src.fPitchZLftCol)
,fPitchZRgtCol(src.fPitchZRgtCol)
,fChipDZ(src.fChipDZ)
,fNChips(src.fNChips)
,fNColPerChip(src.fNColPerChip)
,fNRow(src.fNRow)
,fNCol(src.fNCol)
,fDiodShiftMatNCol(src.fDiodShiftMatNCol)
,fDiodShiftMatNRow(src.fDiodShiftMatNRow)
,fDiodShiftMatDim(src.fDiodShiftMatDim)
,fDiodShidtMatX(0)
,fDiodShidtMatZ(0)
{
if (fDiodShiftMatDim) {
fDiodShidtMatX = new Float_t[fDiodShiftMatDim];
fDiodShidtMatZ = new Float_t[fDiodShiftMatDim];
for (int i=fDiodShiftMatDim;i--;) {
fDiodShidtMatX[i] = src.fDiodShidtMatX[i];
fDiodShidtMatZ[i] = src.fDiodShidtMatZ[i];
}
}
}
Float_t AliITSUSegmentationPix::Dpx(Int_t ) const
{
return fPitchX;
}
Float_t AliITSUSegmentationPix::Dpz(Int_t col) const
{
col %= fNColPerChip;
if (!col) return fPitchZLftCol;
if (col==fNColPerChip-1) return fPitchZRgtCol;
return fPitchZ;
}
void AliITSUSegmentationPix::Neighbours(Int_t iX, Int_t iZ, Int_t* nlist, Int_t xlist[8], Int_t zlist[8]) const
{
*nlist=8;
xlist[0]=xlist[1]=iX;
xlist[2]=iX-1;
xlist[3]=iX+1;
zlist[0]=iZ-1;
zlist[1]=iZ+1;
zlist[2]=zlist[3]=iZ;
xlist[4]=iX+1;
zlist[4]=iZ+1;
xlist[5]=iX-1;
zlist[5]=iZ-1;
xlist[6]=iX-1;
zlist[6]=iZ+1;
xlist[7]=iX+1;
zlist[7]=iZ-1;
}
Bool_t AliITSUSegmentationPix::LocalToDet(Float_t x,Float_t z,Int_t &ix,Int_t &iz) const
{
x += 0.5*DxActive() + fShiftXLoc;
z += 0.5*DzActive() + fShiftZLoc;
ix = iz = -1;
if(x<0 || x>DxActive()) return kFALSE;
if(z<0 || z>DzActive()) return kFALSE;
ix = int(x/fPitchX);
iz = Z2Col(z);
return kTRUE;
}
void AliITSUSegmentationPix::DetToLocal(Int_t ix,Int_t iz,Float_t &x,Float_t &z) const
{
x = -0.5*DxActive();
z = -0.5*DzActive();
if(ix<0 || ix>=fNRow) {AliWarning(Form("Obtained row %d is not in range [%d:%d)",ix,0,fNRow)); return;}
if(iz<0 || iz>=fNCol) {AliWarning(Form("Obtained col %d is not in range [%d:%d)",ix,0,fNCol)); return;}
x += (ix+0.5)*fPitchX - fShiftXLoc;
z += Col2Z(iz) - fShiftZLoc;
return;
}
void AliITSUSegmentationPix::CellBoundries(Int_t ix,Int_t iz,Double_t &xl,Double_t &xu,Double_t &zl,Double_t &zu) const
{
Float_t x,z;
DetToLocal(ix,iz,x,z);
if( ix<0 || ix>=fNRow || iz<0 || iz>=fNCol) {
xl = xu = -0.5*Dx();
zl = zu = -0.5*Dz();
return;
}
float zpitchH = Dpz(iz)*0.5;
float xpitchH = fPitchX*0.5;
xl -= xpitchH;
xu += xpitchH;
zl -= zpitchH;
zu += zpitchH;
return;
}
Int_t AliITSUSegmentationPix::GetChipFromChannel(Int_t, Int_t iz) const
{
if(iz>=fNCol || iz<0 ){
AliWarning("Bad cell number");
return -1;
}
return iz/fNColPerChip;
}
Int_t AliITSUSegmentationPix::GetChipFromLocal(Float_t, Float_t zloc) const
{
Int_t ix0,iz;
if (!LocalToDet(0,zloc,ix0,iz)) {
AliWarning("Bad local coordinate");
return -1;
}
return GetChipFromChannel(ix0,iz);
}
Int_t AliITSUSegmentationPix::GetChipsInLocalWindow(Int_t* array, Float_t zmin, Float_t zmax, Float_t, Float_t) const
{
if (zmin>zmax) {
AliWarning("Bad coordinate limits: zmin>zmax!");
return -1;
}
Int_t nChipInW = 0;
Float_t zminDet = -0.5*DzActive()-fShiftZLoc;
Float_t zmaxDet = 0.5*DzActive()-fShiftZLoc;
if(zmin<zminDet) zmin=zminDet;
if(zmax>zmaxDet) zmax=zmaxDet;
Int_t n1 = GetChipFromLocal(0,zmin);
array[nChipInW] = n1;
nChipInW++;
Int_t n2 = GetChipFromLocal(0,zmax);
if(n2!=n1){
Int_t imin=Min(n1,n2);
Int_t imax=Max(n1,n2);
for(Int_t ichip=imin; ichip<=imax; ichip++){
if(ichip==n1) continue;
array[nChipInW]=ichip;
nChipInW++;
}
}
return nChipInW;
}
void AliITSUSegmentationPix::Init()
{
}
Bool_t AliITSUSegmentationPix::Store(const char* outf)
{
TString fns = outf;
gSystem->ExpandPathName(fns);
if (fns.IsNull()) {AliFatal("No file name provided"); return kFALSE;}
TFile* fout = TFile::Open(fns.Data(),"update");
if (!fout) {AliFatal(Form("Failed to open output file %s",outf)); return kFALSE;}
TObjArray* arr = (TObjArray*)fout->Get(fgkSegmListName);
int id = GetUniqueID();
if (!arr) arr = new TObjArray();
else if (arr->At(id)) {AliFatal(Form("Segmenation %d already exists in file %s",id,outf));return kFALSE;}
arr->AddAtAndExpand(this,id);
arr->SetOwner(kTRUE);
fout->WriteObject(arr,fgkSegmListName,"kSingleKey");
fout->Close();
delete fout;
arr->RemoveAt(id);
delete arr;
AliInfo(Form("Stored segmentation %d in %s",id,outf));
return kTRUE;
}
AliITSUSegmentationPix* AliITSUSegmentationPix::LoadWithID(UInt_t id, const char* inpf)
{
TString fns = inpf;
gSystem->ExpandPathName(fns);
if (fns.IsNull()) {AliFatalGeneral("LoadWithID","No file name provided"); return 0;}
TFile* finp = TFile::Open(fns.Data());
if (!finp) {AliFatalGeneral("LoadWithID",Form("Failed to open file %s",inpf)); return 0;}
TObjArray* arr = (TObjArray*)finp->Get(fgkSegmListName);
if (!arr) {
AliFatalGeneral("LoadWithID",Form("Failed to find segmenation array %s in %s",fgkSegmListName,inpf));
return 0;
}
AliITSUSegmentationPix* segm = dynamic_cast<AliITSUSegmentationPix*>(arr->At(id));
if (!segm || segm->GetUniqueID()!=id) {AliFatalGeneral("LoadWithID",Form("Failed to find segmenation %d in %s",id,inpf)); return 0;}
arr->RemoveAt(id);
arr->SetOwner(kTRUE);
finp->Close();
delete finp;
delete arr;
return segm;
}
void AliITSUSegmentationPix::LoadSegmentations(TObjArray* dest, const char* inpf)
{
if (!dest) return;
TString fns = inpf;
gSystem->ExpandPathName(fns);
if (fns.IsNull()) AliFatalGeneral("LoadWithID","No file name provided");
TFile* finp = TFile::Open(fns.Data());
if (!finp) AliFatalGeneral("LoadWithID",Form("Failed to open file %s",inpf));
TObjArray* arr = (TObjArray*)finp->Get(fgkSegmListName);
if (!arr) AliFatalGeneral("LoadWithID",Form("Failed to find segmenation array %s in %s",fgkSegmListName,inpf));
int nent = arr->GetEntriesFast();
TObject *segm = 0;
for (int i=nent;i--;) if ((segm=arr->At(i))) dest->AddAtAndExpand(segm,segm->GetUniqueID());
AliInfoGeneral("LoadSegmentations",Form("Loaded %d segmantions from %s",arr->GetEntries(),inpf));
arr->SetOwner(kFALSE);
arr->Clear();
finp->Close();
delete finp;
delete arr;
}
void AliITSUSegmentationPix::SetDiodShiftMatrix(Int_t nrow,Int_t ncol, const Float_t *shiftX, const Float_t *shiftZ)
{
if (fDiodShiftMatDim) {
delete fDiodShidtMatX;
delete fDiodShidtMatZ;
fDiodShidtMatX = fDiodShidtMatZ = 0;
}
fDiodShiftMatNCol = ncol;
fDiodShiftMatNRow = nrow;
fDiodShiftMatDim = fDiodShiftMatNCol*fDiodShiftMatNRow;
if (fDiodShiftMatDim) {
fDiodShidtMatX = new Float_t[fDiodShiftMatDim];
fDiodShidtMatZ = new Float_t[fDiodShiftMatDim];
for (int ir=0;ir<fDiodShiftMatNRow;ir++) {
for (int ic=0;ic<fDiodShiftMatNCol;ic++) {
int cnt = ic+ir*fDiodShiftMatNCol;
fDiodShidtMatX[cnt] = shiftX ? shiftX[cnt] : 0.;
fDiodShidtMatZ[cnt] = shiftZ ? shiftZ[cnt] : 0.;
}
}
}
}
void AliITSUSegmentationPix::SetDiodShiftMatrix(Int_t nrow,Int_t ncol, const Double_t *shiftX, const Double_t *shiftZ)
{
if (fDiodShiftMatDim) {
delete fDiodShidtMatX;
delete fDiodShidtMatZ;
fDiodShidtMatX = fDiodShidtMatZ = 0;
}
fDiodShiftMatNCol = ncol;
fDiodShiftMatNRow = nrow;
fDiodShiftMatDim = fDiodShiftMatNCol*fDiodShiftMatNRow;
if (fDiodShiftMatDim) {
fDiodShidtMatX = new Float_t[fDiodShiftMatDim];
fDiodShidtMatZ = new Float_t[fDiodShiftMatDim];
for (int ir=0;ir<fDiodShiftMatNRow;ir++) {
for (int ic=0;ic<fDiodShiftMatNCol;ic++) {
int cnt = ic+ir*fDiodShiftMatNCol;
fDiodShidtMatX[cnt] = shiftX ? shiftX[cnt] : 0.;
fDiodShidtMatZ[cnt] = shiftZ ? shiftZ[cnt] : 0.;
}
}
}
}
void AliITSUSegmentationPix::Print(Option_t* ) const
{
const double kmc=1e4;
printf("Segmentation %d: Active Size: DX: %.1f DY: %.1f DZ: %.1f | Pitch: X:%.1f Z:%.1f\n",
GetUniqueID(),kmc*DxActive(),kmc*Dy(),kmc*DzActive(),kmc*Dpx(1),kmc*Dpz(1));
printf("Passive Edges: Bottom: %.1f Right: %.1f Top: %.1f Left: %.1f -> DX: %.1f DZ: %.1f Shift: x:%.1f z:%.1f\n",
kmc*fGuardBot,kmc*fGuardRgt,kmc*fGuardTop,kmc*fGuardLft,kmc*Dx(),kmc*Dz(),kmc*fShiftXLoc,kmc*fShiftZLoc);
printf("%d chips along Z: chip Ncol=%d Nrow=%d\n",fNChips, fNColPerChip,fNRow);
if (Abs(fPitchZLftCol-fPitchZ)>1e-5) printf("Special left column pitch: %.1f\n",fPitchZLftCol*kmc);
if (Abs(fPitchZRgtCol-fPitchZ)>1e-5) printf("Special right column pitch: %.1f\n",fPitchZRgtCol*kmc);
if (fDiodShiftMatDim) {
double dx,dz=0;
printf("Diod shift (fraction of pitch) periodicity pattern (X,Z[row][col])\n");
for (int irow=0;irow<fDiodShiftMatNRow;irow++) {
for (int icol=0;icol<fDiodShiftMatNCol;icol++) {
GetDiodShift(irow,icol,dx,dz);
printf("%.1f/%.1f |",dx,dz);
}
printf("\n");
}
}
}
void AliITSUSegmentationPix::GetDiodShift(Int_t row,Int_t col, Float_t &dx,Float_t &dz) const
{
if (!fDiodShiftMatDim) {dx=dz=0; return;}
int cnt = (col%fDiodShiftMatNCol) + (row%fDiodShiftMatNRow)*fDiodShiftMatNCol;
dx = fDiodShidtMatX[cnt];
dz = fDiodShidtMatZ[cnt];
}
AliITSUSegmentationPix.cxx:1 AliITSUSegmentationPix.cxx:2 AliITSUSegmentationPix.cxx:3 AliITSUSegmentationPix.cxx:4 AliITSUSegmentationPix.cxx:5 AliITSUSegmentationPix.cxx:6 AliITSUSegmentationPix.cxx:7 AliITSUSegmentationPix.cxx:8 AliITSUSegmentationPix.cxx:9 AliITSUSegmentationPix.cxx:10 AliITSUSegmentationPix.cxx:11 AliITSUSegmentationPix.cxx:12 AliITSUSegmentationPix.cxx:13 AliITSUSegmentationPix.cxx:14 AliITSUSegmentationPix.cxx:15 AliITSUSegmentationPix.cxx:16 AliITSUSegmentationPix.cxx:17 AliITSUSegmentationPix.cxx:18 AliITSUSegmentationPix.cxx:19 AliITSUSegmentationPix.cxx:20 AliITSUSegmentationPix.cxx:21 AliITSUSegmentationPix.cxx:22 AliITSUSegmentationPix.cxx:23 AliITSUSegmentationPix.cxx:24 AliITSUSegmentationPix.cxx:25 AliITSUSegmentationPix.cxx:26 AliITSUSegmentationPix.cxx:27 AliITSUSegmentationPix.cxx:28 AliITSUSegmentationPix.cxx:29 AliITSUSegmentationPix.cxx:30 AliITSUSegmentationPix.cxx:31 AliITSUSegmentationPix.cxx:32 AliITSUSegmentationPix.cxx:33 AliITSUSegmentationPix.cxx:34 AliITSUSegmentationPix.cxx:35 AliITSUSegmentationPix.cxx:36 AliITSUSegmentationPix.cxx:37 AliITSUSegmentationPix.cxx:38 AliITSUSegmentationPix.cxx:39 AliITSUSegmentationPix.cxx:40 AliITSUSegmentationPix.cxx:41 AliITSUSegmentationPix.cxx:42 AliITSUSegmentationPix.cxx:43 AliITSUSegmentationPix.cxx:44 AliITSUSegmentationPix.cxx:45 AliITSUSegmentationPix.cxx:46 AliITSUSegmentationPix.cxx:47 AliITSUSegmentationPix.cxx:48 AliITSUSegmentationPix.cxx:49 AliITSUSegmentationPix.cxx:50 AliITSUSegmentationPix.cxx:51 AliITSUSegmentationPix.cxx:52 AliITSUSegmentationPix.cxx:53 AliITSUSegmentationPix.cxx:54 AliITSUSegmentationPix.cxx:55 AliITSUSegmentationPix.cxx:56 AliITSUSegmentationPix.cxx:57 AliITSUSegmentationPix.cxx:58 AliITSUSegmentationPix.cxx:59 AliITSUSegmentationPix.cxx:60 AliITSUSegmentationPix.cxx:61 AliITSUSegmentationPix.cxx:62 AliITSUSegmentationPix.cxx:63 AliITSUSegmentationPix.cxx:64 AliITSUSegmentationPix.cxx:65 AliITSUSegmentationPix.cxx:66 AliITSUSegmentationPix.cxx:67 AliITSUSegmentationPix.cxx:68 AliITSUSegmentationPix.cxx:69 AliITSUSegmentationPix.cxx:70 AliITSUSegmentationPix.cxx:71 AliITSUSegmentationPix.cxx:72 AliITSUSegmentationPix.cxx:73 AliITSUSegmentationPix.cxx:74 AliITSUSegmentationPix.cxx:75 AliITSUSegmentationPix.cxx:76 AliITSUSegmentationPix.cxx:77 AliITSUSegmentationPix.cxx:78 AliITSUSegmentationPix.cxx:79 AliITSUSegmentationPix.cxx:80 AliITSUSegmentationPix.cxx:81 AliITSUSegmentationPix.cxx:82 AliITSUSegmentationPix.cxx:83 AliITSUSegmentationPix.cxx:84 AliITSUSegmentationPix.cxx:85 AliITSUSegmentationPix.cxx:86 AliITSUSegmentationPix.cxx:87 AliITSUSegmentationPix.cxx:88 AliITSUSegmentationPix.cxx:89 AliITSUSegmentationPix.cxx:90 AliITSUSegmentationPix.cxx:91 AliITSUSegmentationPix.cxx:92 AliITSUSegmentationPix.cxx:93 AliITSUSegmentationPix.cxx:94 AliITSUSegmentationPix.cxx:95 AliITSUSegmentationPix.cxx:96 AliITSUSegmentationPix.cxx:97 AliITSUSegmentationPix.cxx:98 AliITSUSegmentationPix.cxx:99 AliITSUSegmentationPix.cxx:100 AliITSUSegmentationPix.cxx:101 AliITSUSegmentationPix.cxx:102 AliITSUSegmentationPix.cxx:103 AliITSUSegmentationPix.cxx:104 AliITSUSegmentationPix.cxx:105 AliITSUSegmentationPix.cxx:106 AliITSUSegmentationPix.cxx:107 AliITSUSegmentationPix.cxx:108 AliITSUSegmentationPix.cxx:109 AliITSUSegmentationPix.cxx:110 AliITSUSegmentationPix.cxx:111 AliITSUSegmentationPix.cxx:112 AliITSUSegmentationPix.cxx:113 AliITSUSegmentationPix.cxx:114 AliITSUSegmentationPix.cxx:115 AliITSUSegmentationPix.cxx:116 AliITSUSegmentationPix.cxx:117 AliITSUSegmentationPix.cxx:118 AliITSUSegmentationPix.cxx:119 AliITSUSegmentationPix.cxx:120 AliITSUSegmentationPix.cxx:121 AliITSUSegmentationPix.cxx:122 AliITSUSegmentationPix.cxx:123 AliITSUSegmentationPix.cxx:124 AliITSUSegmentationPix.cxx:125 AliITSUSegmentationPix.cxx:126 AliITSUSegmentationPix.cxx:127 AliITSUSegmentationPix.cxx:128 AliITSUSegmentationPix.cxx:129 AliITSUSegmentationPix.cxx:130 AliITSUSegmentationPix.cxx:131 AliITSUSegmentationPix.cxx:132 AliITSUSegmentationPix.cxx:133 AliITSUSegmentationPix.cxx:134 AliITSUSegmentationPix.cxx:135 AliITSUSegmentationPix.cxx:136 AliITSUSegmentationPix.cxx:137 AliITSUSegmentationPix.cxx:138 AliITSUSegmentationPix.cxx:139 AliITSUSegmentationPix.cxx:140 AliITSUSegmentationPix.cxx:141 AliITSUSegmentationPix.cxx:142 AliITSUSegmentationPix.cxx:143 AliITSUSegmentationPix.cxx:144 AliITSUSegmentationPix.cxx:145 AliITSUSegmentationPix.cxx:146 AliITSUSegmentationPix.cxx:147 AliITSUSegmentationPix.cxx:148 AliITSUSegmentationPix.cxx:149 AliITSUSegmentationPix.cxx:150 AliITSUSegmentationPix.cxx:151 AliITSUSegmentationPix.cxx:152 AliITSUSegmentationPix.cxx:153 AliITSUSegmentationPix.cxx:154 AliITSUSegmentationPix.cxx:155 AliITSUSegmentationPix.cxx:156 AliITSUSegmentationPix.cxx:157 AliITSUSegmentationPix.cxx:158 AliITSUSegmentationPix.cxx:159 AliITSUSegmentationPix.cxx:160 AliITSUSegmentationPix.cxx:161 AliITSUSegmentationPix.cxx:162 AliITSUSegmentationPix.cxx:163 AliITSUSegmentationPix.cxx:164 AliITSUSegmentationPix.cxx:165 AliITSUSegmentationPix.cxx:166 AliITSUSegmentationPix.cxx:167 AliITSUSegmentationPix.cxx:168 AliITSUSegmentationPix.cxx:169 AliITSUSegmentationPix.cxx:170 AliITSUSegmentationPix.cxx:171 AliITSUSegmentationPix.cxx:172 AliITSUSegmentationPix.cxx:173 AliITSUSegmentationPix.cxx:174 AliITSUSegmentationPix.cxx:175 AliITSUSegmentationPix.cxx:176 AliITSUSegmentationPix.cxx:177 AliITSUSegmentationPix.cxx:178 AliITSUSegmentationPix.cxx:179 AliITSUSegmentationPix.cxx:180 AliITSUSegmentationPix.cxx:181 AliITSUSegmentationPix.cxx:182 AliITSUSegmentationPix.cxx:183 AliITSUSegmentationPix.cxx:184 AliITSUSegmentationPix.cxx:185 AliITSUSegmentationPix.cxx:186 AliITSUSegmentationPix.cxx:187 AliITSUSegmentationPix.cxx:188 AliITSUSegmentationPix.cxx:189 AliITSUSegmentationPix.cxx:190 AliITSUSegmentationPix.cxx:191 AliITSUSegmentationPix.cxx:192 AliITSUSegmentationPix.cxx:193 AliITSUSegmentationPix.cxx:194 AliITSUSegmentationPix.cxx:195 AliITSUSegmentationPix.cxx:196 AliITSUSegmentationPix.cxx:197 AliITSUSegmentationPix.cxx:198 AliITSUSegmentationPix.cxx:199 AliITSUSegmentationPix.cxx:200 AliITSUSegmentationPix.cxx:201 AliITSUSegmentationPix.cxx:202 AliITSUSegmentationPix.cxx:203 AliITSUSegmentationPix.cxx:204 AliITSUSegmentationPix.cxx:205 AliITSUSegmentationPix.cxx:206 AliITSUSegmentationPix.cxx:207 AliITSUSegmentationPix.cxx:208 AliITSUSegmentationPix.cxx:209 AliITSUSegmentationPix.cxx:210 AliITSUSegmentationPix.cxx:211 AliITSUSegmentationPix.cxx:212 AliITSUSegmentationPix.cxx:213 AliITSUSegmentationPix.cxx:214 AliITSUSegmentationPix.cxx:215 AliITSUSegmentationPix.cxx:216 AliITSUSegmentationPix.cxx:217 AliITSUSegmentationPix.cxx:218 AliITSUSegmentationPix.cxx:219 AliITSUSegmentationPix.cxx:220 AliITSUSegmentationPix.cxx:221 AliITSUSegmentationPix.cxx:222 AliITSUSegmentationPix.cxx:223 AliITSUSegmentationPix.cxx:224 AliITSUSegmentationPix.cxx:225 AliITSUSegmentationPix.cxx:226 AliITSUSegmentationPix.cxx:227 AliITSUSegmentationPix.cxx:228 AliITSUSegmentationPix.cxx:229 AliITSUSegmentationPix.cxx:230 AliITSUSegmentationPix.cxx:231 AliITSUSegmentationPix.cxx:232 AliITSUSegmentationPix.cxx:233 AliITSUSegmentationPix.cxx:234 AliITSUSegmentationPix.cxx:235 AliITSUSegmentationPix.cxx:236 AliITSUSegmentationPix.cxx:237 AliITSUSegmentationPix.cxx:238 AliITSUSegmentationPix.cxx:239 AliITSUSegmentationPix.cxx:240 AliITSUSegmentationPix.cxx:241 AliITSUSegmentationPix.cxx:242 AliITSUSegmentationPix.cxx:243 AliITSUSegmentationPix.cxx:244 AliITSUSegmentationPix.cxx:245 AliITSUSegmentationPix.cxx:246 AliITSUSegmentationPix.cxx:247 AliITSUSegmentationPix.cxx:248 AliITSUSegmentationPix.cxx:249 AliITSUSegmentationPix.cxx:250 AliITSUSegmentationPix.cxx:251 AliITSUSegmentationPix.cxx:252 AliITSUSegmentationPix.cxx:253 AliITSUSegmentationPix.cxx:254 AliITSUSegmentationPix.cxx:255 AliITSUSegmentationPix.cxx:256 AliITSUSegmentationPix.cxx:257 AliITSUSegmentationPix.cxx:258 AliITSUSegmentationPix.cxx:259 AliITSUSegmentationPix.cxx:260 AliITSUSegmentationPix.cxx:261 AliITSUSegmentationPix.cxx:262 AliITSUSegmentationPix.cxx:263 AliITSUSegmentationPix.cxx:264 AliITSUSegmentationPix.cxx:265 AliITSUSegmentationPix.cxx:266 AliITSUSegmentationPix.cxx:267 AliITSUSegmentationPix.cxx:268 AliITSUSegmentationPix.cxx:269 AliITSUSegmentationPix.cxx:270 AliITSUSegmentationPix.cxx:271 AliITSUSegmentationPix.cxx:272 AliITSUSegmentationPix.cxx:273 AliITSUSegmentationPix.cxx:274 AliITSUSegmentationPix.cxx:275 AliITSUSegmentationPix.cxx:276 AliITSUSegmentationPix.cxx:277 AliITSUSegmentationPix.cxx:278 AliITSUSegmentationPix.cxx:279 AliITSUSegmentationPix.cxx:280 AliITSUSegmentationPix.cxx:281 AliITSUSegmentationPix.cxx:282 AliITSUSegmentationPix.cxx:283 AliITSUSegmentationPix.cxx:284 AliITSUSegmentationPix.cxx:285 AliITSUSegmentationPix.cxx:286 AliITSUSegmentationPix.cxx:287 AliITSUSegmentationPix.cxx:288 AliITSUSegmentationPix.cxx:289 AliITSUSegmentationPix.cxx:290 AliITSUSegmentationPix.cxx:291 AliITSUSegmentationPix.cxx:292 AliITSUSegmentationPix.cxx:293 AliITSUSegmentationPix.cxx:294 AliITSUSegmentationPix.cxx:295 AliITSUSegmentationPix.cxx:296 AliITSUSegmentationPix.cxx:297 AliITSUSegmentationPix.cxx:298 AliITSUSegmentationPix.cxx:299 AliITSUSegmentationPix.cxx:300 AliITSUSegmentationPix.cxx:301 AliITSUSegmentationPix.cxx:302 AliITSUSegmentationPix.cxx:303 AliITSUSegmentationPix.cxx:304 AliITSUSegmentationPix.cxx:305 AliITSUSegmentationPix.cxx:306 AliITSUSegmentationPix.cxx:307 AliITSUSegmentationPix.cxx:308 AliITSUSegmentationPix.cxx:309 AliITSUSegmentationPix.cxx:310 AliITSUSegmentationPix.cxx:311 AliITSUSegmentationPix.cxx:312 AliITSUSegmentationPix.cxx:313 AliITSUSegmentationPix.cxx:314 AliITSUSegmentationPix.cxx:315 AliITSUSegmentationPix.cxx:316 AliITSUSegmentationPix.cxx:317 AliITSUSegmentationPix.cxx:318 AliITSUSegmentationPix.cxx:319 AliITSUSegmentationPix.cxx:320 AliITSUSegmentationPix.cxx:321 AliITSUSegmentationPix.cxx:322 AliITSUSegmentationPix.cxx:323 AliITSUSegmentationPix.cxx:324 AliITSUSegmentationPix.cxx:325 AliITSUSegmentationPix.cxx:326 AliITSUSegmentationPix.cxx:327 AliITSUSegmentationPix.cxx:328 AliITSUSegmentationPix.cxx:329 AliITSUSegmentationPix.cxx:330 AliITSUSegmentationPix.cxx:331 AliITSUSegmentationPix.cxx:332 AliITSUSegmentationPix.cxx:333 AliITSUSegmentationPix.cxx:334 AliITSUSegmentationPix.cxx:335 AliITSUSegmentationPix.cxx:336 AliITSUSegmentationPix.cxx:337 AliITSUSegmentationPix.cxx:338 AliITSUSegmentationPix.cxx:339 AliITSUSegmentationPix.cxx:340 AliITSUSegmentationPix.cxx:341 AliITSUSegmentationPix.cxx:342 AliITSUSegmentationPix.cxx:343 AliITSUSegmentationPix.cxx:344 AliITSUSegmentationPix.cxx:345 AliITSUSegmentationPix.cxx:346 AliITSUSegmentationPix.cxx:347 AliITSUSegmentationPix.cxx:348 AliITSUSegmentationPix.cxx:349 AliITSUSegmentationPix.cxx:350 AliITSUSegmentationPix.cxx:351 AliITSUSegmentationPix.cxx:352 AliITSUSegmentationPix.cxx:353 AliITSUSegmentationPix.cxx:354 AliITSUSegmentationPix.cxx:355 AliITSUSegmentationPix.cxx:356 AliITSUSegmentationPix.cxx:357 AliITSUSegmentationPix.cxx:358 AliITSUSegmentationPix.cxx:359 AliITSUSegmentationPix.cxx:360 AliITSUSegmentationPix.cxx:361 AliITSUSegmentationPix.cxx:362 AliITSUSegmentationPix.cxx:363 AliITSUSegmentationPix.cxx:364 AliITSUSegmentationPix.cxx:365 AliITSUSegmentationPix.cxx:366 AliITSUSegmentationPix.cxx:367 AliITSUSegmentationPix.cxx:368 AliITSUSegmentationPix.cxx:369 AliITSUSegmentationPix.cxx:370 AliITSUSegmentationPix.cxx:371 AliITSUSegmentationPix.cxx:372 AliITSUSegmentationPix.cxx:373 AliITSUSegmentationPix.cxx:374 AliITSUSegmentationPix.cxx:375 AliITSUSegmentationPix.cxx:376 AliITSUSegmentationPix.cxx:377 AliITSUSegmentationPix.cxx:378 AliITSUSegmentationPix.cxx:379 AliITSUSegmentationPix.cxx:380 AliITSUSegmentationPix.cxx:381 AliITSUSegmentationPix.cxx:382 AliITSUSegmentationPix.cxx:383 AliITSUSegmentationPix.cxx:384 AliITSUSegmentationPix.cxx:385 AliITSUSegmentationPix.cxx:386 AliITSUSegmentationPix.cxx:387 AliITSUSegmentationPix.cxx:388 AliITSUSegmentationPix.cxx:389 AliITSUSegmentationPix.cxx:390 AliITSUSegmentationPix.cxx:391 AliITSUSegmentationPix.cxx:392 AliITSUSegmentationPix.cxx:393 AliITSUSegmentationPix.cxx:394 AliITSUSegmentationPix.cxx:395 AliITSUSegmentationPix.cxx:396 AliITSUSegmentationPix.cxx:397 AliITSUSegmentationPix.cxx:398 AliITSUSegmentationPix.cxx:399 AliITSUSegmentationPix.cxx:400 AliITSUSegmentationPix.cxx:401 AliITSUSegmentationPix.cxx:402 AliITSUSegmentationPix.cxx:403 AliITSUSegmentationPix.cxx:404 AliITSUSegmentationPix.cxx:405 AliITSUSegmentationPix.cxx:406 AliITSUSegmentationPix.cxx:407 AliITSUSegmentationPix.cxx:408 AliITSUSegmentationPix.cxx:409 AliITSUSegmentationPix.cxx:410 AliITSUSegmentationPix.cxx:411 AliITSUSegmentationPix.cxx:412 AliITSUSegmentationPix.cxx:413 AliITSUSegmentationPix.cxx:414 AliITSUSegmentationPix.cxx:415 AliITSUSegmentationPix.cxx:416 AliITSUSegmentationPix.cxx:417 AliITSUSegmentationPix.cxx:418 AliITSUSegmentationPix.cxx:419 AliITSUSegmentationPix.cxx:420 AliITSUSegmentationPix.cxx:421 AliITSUSegmentationPix.cxx:422 AliITSUSegmentationPix.cxx:423 AliITSUSegmentationPix.cxx:424 AliITSUSegmentationPix.cxx:425 AliITSUSegmentationPix.cxx:426 AliITSUSegmentationPix.cxx:427 AliITSUSegmentationPix.cxx:428 AliITSUSegmentationPix.cxx:429 AliITSUSegmentationPix.cxx:430 AliITSUSegmentationPix.cxx:431 AliITSUSegmentationPix.cxx:432 AliITSUSegmentationPix.cxx:433 AliITSUSegmentationPix.cxx:434 AliITSUSegmentationPix.cxx:435 AliITSUSegmentationPix.cxx:436 AliITSUSegmentationPix.cxx:437 AliITSUSegmentationPix.cxx:438 AliITSUSegmentationPix.cxx:439 AliITSUSegmentationPix.cxx:440 AliITSUSegmentationPix.cxx:441 AliITSUSegmentationPix.cxx:442 AliITSUSegmentationPix.cxx:443 AliITSUSegmentationPix.cxx:444 AliITSUSegmentationPix.cxx:445 AliITSUSegmentationPix.cxx:446 AliITSUSegmentationPix.cxx:447 AliITSUSegmentationPix.cxx:448 AliITSUSegmentationPix.cxx:449 AliITSUSegmentationPix.cxx:450 AliITSUSegmentationPix.cxx:451 AliITSUSegmentationPix.cxx:452 AliITSUSegmentationPix.cxx:453 AliITSUSegmentationPix.cxx:454 AliITSUSegmentationPix.cxx:455 AliITSUSegmentationPix.cxx:456 AliITSUSegmentationPix.cxx:457 AliITSUSegmentationPix.cxx:458 AliITSUSegmentationPix.cxx:459 AliITSUSegmentationPix.cxx:460 AliITSUSegmentationPix.cxx:461 AliITSUSegmentationPix.cxx:462 AliITSUSegmentationPix.cxx:463 AliITSUSegmentationPix.cxx:464 AliITSUSegmentationPix.cxx:465 AliITSUSegmentationPix.cxx:466 AliITSUSegmentationPix.cxx:467 AliITSUSegmentationPix.cxx:468 AliITSUSegmentationPix.cxx:469 AliITSUSegmentationPix.cxx:470 AliITSUSegmentationPix.cxx:471 AliITSUSegmentationPix.cxx:472 AliITSUSegmentationPix.cxx:473 AliITSUSegmentationPix.cxx:474 AliITSUSegmentationPix.cxx:475 AliITSUSegmentationPix.cxx:476 AliITSUSegmentationPix.cxx:477 AliITSUSegmentationPix.cxx:478 AliITSUSegmentationPix.cxx:479 AliITSUSegmentationPix.cxx:480 AliITSUSegmentationPix.cxx:481 AliITSUSegmentationPix.cxx:482 AliITSUSegmentationPix.cxx:483 AliITSUSegmentationPix.cxx:484 AliITSUSegmentationPix.cxx:485 AliITSUSegmentationPix.cxx:486 AliITSUSegmentationPix.cxx:487 AliITSUSegmentationPix.cxx:488 AliITSUSegmentationPix.cxx:489 AliITSUSegmentationPix.cxx:490 AliITSUSegmentationPix.cxx:491 AliITSUSegmentationPix.cxx:492 AliITSUSegmentationPix.cxx:493 AliITSUSegmentationPix.cxx:494 AliITSUSegmentationPix.cxx:495 AliITSUSegmentationPix.cxx:496 AliITSUSegmentationPix.cxx:497 AliITSUSegmentationPix.cxx:498 AliITSUSegmentationPix.cxx:499 AliITSUSegmentationPix.cxx:500 AliITSUSegmentationPix.cxx:501 AliITSUSegmentationPix.cxx:502 AliITSUSegmentationPix.cxx:503 AliITSUSegmentationPix.cxx:504 AliITSUSegmentationPix.cxx:505 AliITSUSegmentationPix.cxx:506 AliITSUSegmentationPix.cxx:507 AliITSUSegmentationPix.cxx:508 AliITSUSegmentationPix.cxx:509 AliITSUSegmentationPix.cxx:510 AliITSUSegmentationPix.cxx:511 AliITSUSegmentationPix.cxx:512 AliITSUSegmentationPix.cxx:513 AliITSUSegmentationPix.cxx:514 AliITSUSegmentationPix.cxx:515 AliITSUSegmentationPix.cxx:516 AliITSUSegmentationPix.cxx:517 AliITSUSegmentationPix.cxx:518 AliITSUSegmentationPix.cxx:519 AliITSUSegmentationPix.cxx:520 AliITSUSegmentationPix.cxx:521 AliITSUSegmentationPix.cxx:522 AliITSUSegmentationPix.cxx:523 AliITSUSegmentationPix.cxx:524 AliITSUSegmentationPix.cxx:525 AliITSUSegmentationPix.cxx:526 AliITSUSegmentationPix.cxx:527 AliITSUSegmentationPix.cxx:528 AliITSUSegmentationPix.cxx:529 AliITSUSegmentationPix.cxx:530 AliITSUSegmentationPix.cxx:531 AliITSUSegmentationPix.cxx:532 AliITSUSegmentationPix.cxx:533 AliITSUSegmentationPix.cxx:534 AliITSUSegmentationPix.cxx:535 AliITSUSegmentationPix.cxx:536 AliITSUSegmentationPix.cxx:537 AliITSUSegmentationPix.cxx:538 AliITSUSegmentationPix.cxx:539 AliITSUSegmentationPix.cxx:540 AliITSUSegmentationPix.cxx:541 AliITSUSegmentationPix.cxx:542 AliITSUSegmentationPix.cxx:543 AliITSUSegmentationPix.cxx:544 AliITSUSegmentationPix.cxx:545 AliITSUSegmentationPix.cxx:546 AliITSUSegmentationPix.cxx:547 AliITSUSegmentationPix.cxx:548 AliITSUSegmentationPix.cxx:549 AliITSUSegmentationPix.cxx:550 AliITSUSegmentationPix.cxx:551 AliITSUSegmentationPix.cxx:552 AliITSUSegmentationPix.cxx:553 AliITSUSegmentationPix.cxx:554 AliITSUSegmentationPix.cxx:555 AliITSUSegmentationPix.cxx:556 AliITSUSegmentationPix.cxx:557 AliITSUSegmentationPix.cxx:558 AliITSUSegmentationPix.cxx:559 AliITSUSegmentationPix.cxx:560 AliITSUSegmentationPix.cxx:561 AliITSUSegmentationPix.cxx:562 AliITSUSegmentationPix.cxx:563 AliITSUSegmentationPix.cxx:564 AliITSUSegmentationPix.cxx:565 AliITSUSegmentationPix.cxx:566 AliITSUSegmentationPix.cxx:567 AliITSUSegmentationPix.cxx:568 AliITSUSegmentationPix.cxx:569 AliITSUSegmentationPix.cxx:570 AliITSUSegmentationPix.cxx:571 AliITSUSegmentationPix.cxx:572 AliITSUSegmentationPix.cxx:573 AliITSUSegmentationPix.cxx:574 AliITSUSegmentationPix.cxx:575 AliITSUSegmentationPix.cxx:576 AliITSUSegmentationPix.cxx:577 AliITSUSegmentationPix.cxx:578 AliITSUSegmentationPix.cxx:579 AliITSUSegmentationPix.cxx:580 AliITSUSegmentationPix.cxx:581 AliITSUSegmentationPix.cxx:582 AliITSUSegmentationPix.cxx:583 AliITSUSegmentationPix.cxx:584 AliITSUSegmentationPix.cxx:585 AliITSUSegmentationPix.cxx:586 AliITSUSegmentationPix.cxx:587 AliITSUSegmentationPix.cxx:588 AliITSUSegmentationPix.cxx:589 AliITSUSegmentationPix.cxx:590 AliITSUSegmentationPix.cxx:591 AliITSUSegmentationPix.cxx:592 AliITSUSegmentationPix.cxx:593 AliITSUSegmentationPix.cxx:594 AliITSUSegmentationPix.cxx:595 AliITSUSegmentationPix.cxx:596