#include <TTree.h>
#include <TFile.h>
#include <TObjArray.h>
#include <TParticle.h>
#include <TMath.h>
#include "AliRun.h"
#include "AliLog.h"
#include "AliMC.h"
#include <AliITSUSegmentationPix.h>
#include "AliITSUClusterizer.h"
#include "AliITSUGeomTGeo.h"
#include "AliITSUSegmentationPix.h"
#include "AliITSUDigitPix.h"
#include "AliITSURecoParam.h"
#include "AliITSUAux.h"
using namespace TMath;
using namespace AliITSUAux;
ClassImp(AliITSUClusterizer)
AliITSUClusterizer::AliITSUClusterizer(Int_t initNRow)
: fVolID(-1)
,fAllowDiagonalClusterization(kFALSE)
,fSegm(0)
,fRecoParam(0)
,fInputDigits(0)
,fInputDigitsReadIndex(0)
,fLayerID(0)
,fNLabels(0)
,fRawData(kFALSE)
,fLorAngCorrection(0)
,fOutputClusters(0)
,fDigitFreelist(0)
,fPartFreelist(0)
,fCandFreelist(0)
,fDigitFreelistBptrFirst(0)
,fDigitFreelistBptrLast(0)
,fPartFreelistBptr(0)
,fCandFreelistBptr(0)
#ifdef _ClusterTopology_
,fTopology(0)
,fMinCol(0)
,fMinRow(0)
#endif //_ClusterTopology_
{
SetUniqueID(0);
SetNRow(initNRow);
#ifdef _ClusterTopology_
AliInfo("*********************************************************************");
AliInfo("ATTENTION: YOU ARE RUNNING IN SPECIAL MODE OF STORING CLUSTER PATTERN");
AliInfo("*********************************************************************");
#endif //_ClusterTopology_
}
void AliITSUClusterizer::SetSegmentation(const AliITSUSegmentationPix *segm)
{
fSegm = segm;
SetNRow(fSegm->GetNRow());
}
void AliITSUClusterizer::SetNRow(Int_t nr)
{
int nrOld = GetUniqueID();
if (nrOld>=nr) return;
SetUniqueID(nr);
while (fDigitFreelistBptrFirst) {
AliITSUClusterizerClusterDigit *next = fDigitFreelistBptrFirst[kDigitChunkSize-1].fNext;
delete[] fDigitFreelistBptrFirst;
fDigitFreelistBptrFirst=next;
}
delete[] fPartFreelistBptr;
delete[] fCandFreelistBptr;
fPartFreelist=fPartFreelistBptr = new AliITSUClusterizerClusterPart[nr+1];
fCandFreelist=fCandFreelistBptr = new AliITSUClusterizerClusterCand[nr+1];
for (int i=0;i<nr;++i) {
fPartFreelistBptr[i].fNextInRow = &fPartFreelistBptr[i+1];
fCandFreelistBptr[i].fNext = &fCandFreelistBptr[i+1];
}
}
AliITSUClusterizer::~AliITSUClusterizer()
{
while (fDigitFreelistBptrFirst) {
AliITSUClusterizerClusterDigit *next = fDigitFreelistBptrFirst[kDigitChunkSize-1].fNext;
delete[] fDigitFreelistBptrFirst;
fDigitFreelistBptrFirst=next;
}
delete[] fPartFreelistBptr;
delete[] fCandFreelistBptr;
}
AliITSUClusterizer::AliITSUClusterizerClusterDigit* AliITSUClusterizer::AllocDigitFreelist()
{
AliITSUClusterizerClusterDigit *tmp = new AliITSUClusterizerClusterDigit[kDigitChunkSize];
for (int i=0;i<kDigitChunkSize-2;++i) tmp[i].fNext=&tmp[i+1];
tmp[kDigitChunkSize-2].fNext=0;
tmp[kDigitChunkSize-1].fNext=0;
if (!fDigitFreelistBptrFirst) fDigitFreelistBptrFirst=tmp;
else fDigitFreelistBptrLast[kDigitChunkSize-1].fNext=tmp;
fDigitFreelistBptrLast=tmp;
return tmp;
}
AliITSUClusterizer::AliITSUClusterizerClusterDigit* AliITSUClusterizer::NextDigit()
{
while (fInputDigitsReadIndex<fInputDigits->GetEntriesFast()) {
AliITSUDigitPix *tmp=static_cast<AliITSUDigitPix*>(fInputDigits->UncheckedAt(fInputDigitsReadIndex++));
if (TMath::Abs(tmp->GetROCycle())>=fRecoParam->GetMaxROCycle()) continue;
AliITSUClusterizerClusterDigit *digit=AllocDigit();
digit->fDigit=tmp;
return digit;
}
return 0;
}
void AliITSUClusterizer::AttachPartToCand(AliITSUClusterizerClusterCand *cand,AliITSUClusterizerClusterPart *part)
{
part->fParent = cand;
part->fPrevInCluster = 0;
part->fNextInCluster = cand->fFirstPart;
if (cand->fFirstPart) cand->fFirstPart->fPrevInCluster = part;
cand->fFirstPart=part;
}
void AliITSUClusterizer::MergeCands(AliITSUClusterizerClusterCand *a,AliITSUClusterizerClusterCand *b)
{
AliITSUClusterizerClusterPart *ipart=b->fFirstPart;
AliITSUClusterizerClusterPart *jpart;
do {
jpart=ipart;
jpart->fParent=a;
} while ((ipart=ipart->fNextInCluster));
jpart->fNextInCluster=a->fFirstPart;
jpart->fNextInCluster->fPrevInCluster=jpart;
a->fFirstPart=b->fFirstPart;
b->fLastDigit->fNext=a->fFirstDigit;
a->fFirstDigit=b->fFirstDigit;
}
void AliITSUClusterizer::Transform(AliITSUClusterPix *cluster,AliITSUClusterizerClusterCand *cand)
{
const double k1to12 = 1./12;
static int maxLbinDigit = AliITSdigit::GetNTracks();
fNLabels = 0;
Int_t n=0;
cand->fLastDigit->fNext=0;
double x=0,z=0,xmn=1e9,xmx=-1e9,zmn=1e9,zmx=-1e9,px=0,pz=0;
float cx,cz;
int charge=0;
for (AliITSUClusterizerClusterDigit *idigit=cand->fFirstDigit;idigit;idigit=idigit->fNext) {
AliITSdigit* dig = idigit->fDigit;
fSegm->DetToLocal(dig->GetCoord2(),dig->GetCoord1(),cx,cz);
double ddx,ddz, dx=fSegm->Dpx(dig->GetCoord2()), dz=fSegm->Dpz(dig->GetCoord1());
fSegm->GetDiodShift(dig->GetCoord2(),dig->GetCoord1(),ddx,ddz);
charge += dig->GetSignal();
x += cx;
z += cz;
if (cx<xmn) xmn=cx;
if (cx>xmx) xmx=cx;
if (cz<zmn) zmn=cz;
if (cz>zmx) zmx=cz;
x += ddx*dx;
z += ddz*dz;
px += dx;
pz += dz;
if (!fRawData) {
for(Int_t dlab=0;dlab<maxLbinDigit;dlab++){
Int_t digitlab = (dig->GetTracks())[dlab];
if(digitlab<0) continue;
AddLabel(digitlab);
}
}
++n;
}
Int_t nx=1,nz=1;
double dx = xmx-xmn, dz = zmx-zmn;
if (n>1) {
double fac=1./n;
x *= fac;
z *= fac;
px *= fac;
pz *= fac;
nx = 1+Nint(dx/px);
nz = 1+Nint(dz/pz);
}
x -= fLorAngCorrection;
cluster->SetX(x);
cluster->SetZ(z);
cluster->SetY(0);
cluster->SetSigmaZ2(nz>1 ? dz*dz*k1to12 : pz*pz*k1to12);
cluster->SetSigmaY2(nx>1 ? dx*dx*k1to12 : px*px*k1to12);
cluster->SetSigmaYZ(0);
cluster->SetFrameLoc();
if (n>AliITSUClusterPix::kMaskNPix) n = AliITSUClusterPix::kMaskNPix;
cluster->SetNxNzN(nx>AliITSUClusterPix::kMaskNX ? AliITSUClusterPix::kMaskNX : nx,
nz>AliITSUClusterPix::kMaskNZ ? AliITSUClusterPix::kMaskNZ : nz,
n>AliITSUClusterPix::kMaskNPix ? AliITSUClusterPix::kMaskNPix : n);
cluster->SetQ(charge);
if (!fRawData) {
CheckLabels();
int nl = Min(kMaxLabInCluster,fNLabels);
for (int i=nl;i--;) cluster->SetLabel(fCurrLabels[i],i);
}
cluster->SetVolumeId(fVolID);
#ifdef _ClusterTopology_
FillClusterTopology(cand,cluster);
#endif //_ClusterTopology_
}
void AliITSUClusterizer::CloseCand(AliITSUClusterizerClusterCand *cand)
{
AliITSUClusterPix *cluster = (AliITSUClusterPix*)NextCluster();
Transform(cluster,cand);
DeallocDigits(cand->fFirstDigit,cand->fLastDigit);
DeallocCand(cand);
}
void AliITSUClusterizer::ClosePart(AliITSUClusterizerClusterPart *part)
{
AliITSUClusterizerClusterCand *cand=part->fParent;
DetachPartFromCand(cand,part);
DeallocPart(part);
if (!cand->fFirstPart) CloseCand(cand);
}
void AliITSUClusterizer::CloseRemainingParts(AliITSUClusterizerClusterPart *part)
{
while (part) {
AliITSUClusterizerClusterPart *next=part->fNextInRow;
ClosePart(part);
part=next;
}
}
void AliITSUClusterizer::Clusterize()
{
SetRawData(kFALSE);
AliITSUClusterizerClusterDigit *iDigit=NextDigit();
AliITSUClusterizerClusterPart *iPrevRowBegin=0;
AliITSUClusterizerClusterPart *iNextRowBegin=0;
AliITSUClusterizerClusterPart *iPrevRow=0;
AliITSUClusterizerClusterPart *iNextRow=0;
Int_t lastV=0;
while (iDigit) {
if (iDigit->fDigit->GetCoord2()!=lastV) {
if (iNextRow) iNextRow->fNextInRow=0;
if (iPrevRowBegin) CloseRemainingParts(iPrevRowBegin);
if (iDigit->fDigit->GetCoord2()==lastV+1) {
iPrevRowBegin=iNextRowBegin;
iPrevRow =iNextRowBegin;
}
else {
CloseRemainingParts(iNextRowBegin);
iPrevRowBegin=0;
iPrevRow =0;
}
iNextRowBegin=0;
iNextRow =0;
lastV=iDigit->fDigit->GetCoord2();
}
int limCol = iDigit->fDigit->GetCoord1()-fAllowDiagonalClusterization;
while (iPrevRow && iPrevRow->fUEnd < limCol) {
iPrevRow=iPrevRow->fNextInRow;
}
AliITSUClusterizerClusterCand *cand=AllocCand();
AliITSUClusterizerClusterDigit *pDigit=iDigit;
AliITSUClusterizerClusterDigit *jDigit=NextDigit();
cand->fFirstPart=0;
cand->fFirstDigit=cand->fLastDigit=iDigit;
iDigit->fNext=0;
Int_t lastU =iDigit->fDigit->GetCoord1();
Int_t lastU1=lastU+1;
while (jDigit && jDigit->fDigit->GetCoord1()==lastU1 && jDigit->fDigit->GetCoord2()==lastV) {
pDigit=jDigit;
jDigit=NextDigit();
AttachDigitToCand(cand,pDigit);
++lastU1;
}
if (!fAllowDiagonalClusterization) --lastU1;
AliITSUClusterizerClusterPart *part=AllocPart();
part->fUBegin=lastU ;
part->fUEnd =lastU1;
AttachPartToCand(cand,part);
AliITSUClusterizerClusterPart *jPrevRow=iPrevRow;
while (jPrevRow && jPrevRow->fUBegin<=lastU1) {
if (jPrevRow->fParent!=cand) {
MergeCands(jPrevRow->fParent,cand);
DeallocCand(cand);
cand=jPrevRow->fParent;
}
iPrevRow=jPrevRow;
jPrevRow=jPrevRow->fNextInRow;
}
if (iNextRow)
iNextRow->fNextInRow=part;
else
iNextRowBegin=part;
iNextRow=part;
iDigit=jDigit;
}
CloseRemainingParts(iPrevRowBegin);
if (iNextRow) iNextRow->fNextInRow=0;
CloseRemainingParts(iNextRowBegin);
return;
}
void AliITSUClusterizer::PrepareLorentzAngleCorrection(Double_t bz)
{
fLorAngCorrection = 0.5*fRecoParam->GetTanLorentzAngle(fLayerID)*bz/kNominalBz*fSegm->Dy();
}
void AliITSUClusterizer::CheckLabels()
{
if (fNLabels<1) return;
AliRunLoader *rl = AliRunLoader::Instance();
if(!rl) return;
TTree *trK=(TTree*)rl->TreeK();
if (!trK) return;
static int labS[kMaxLabels];
static float kine[kMaxLabels];
Int_t nlabels = fNLabels;
Int_t ntracks = gAlice->GetMCApp()->GetNtrack();
for (Int_t i=fNLabels;i--;) labS[i] = fCurrLabels[i];
for (Int_t i=0;i<nlabels;i++) {
Int_t label = labS[i];
if (label>=ntracks) continue;
TParticle *part=(TParticle*)gAlice->GetMCApp()->Particle(label);
kine[i] = part->Energy() - part->GetCalcMass();
if (kine[i] < 0.001) {
Int_t m=part->GetFirstMother();
if (m<0) continue;
if (part->GetStatusCode()>0) continue;
for (int j=0;j<nlabels;j++) if (labS[j]==m) { labS[i] = m; break;}
}
}
if (nlabels>kMaxLabInCluster) {
static int ind[kMaxLabels],labSS[kMaxLabels];
TMath::Sort(nlabels,kine,ind);
for (int i=nlabels;i--;) labSS[i] = labS[i];
for (int i=nlabels;i--;) labS[i] = labSS[ind[i]];
}
for (Int_t i=0;i<nlabels;i++) fCurrLabels[i]=-2;
fNLabels = 0;
int j=0;
for (int i=0;i<nlabels;i++) {
for (j=fNLabels;j--;) if (labS[i]==fCurrLabels[j]) break;
if (j<0) fCurrLabels[fNLabels++] = labS[i];
}
}
#ifdef _ClusterTopology_
void AliITSUClusterizer::FillClusterTopology(const AliITSUClusterizerClusterCand *cand, AliITSUClusterPix* cl) const
{
UShort_t mnCol=0xffff,mxCol=0,mnRow=0xffff,mxRow=0;
for (AliITSUClusterizerClusterDigit *idigit=cand->fFirstDigit;idigit;idigit=idigit->fNext) {
AliITSdigit* dig = idigit->fDigit;
if (mnCol>dig->GetCoord1()) mnCol = (UShort_t)dig->GetCoord1();
if (mxCol<dig->GetCoord1()) mxCol = (UShort_t)dig->GetCoord1();
if (mnRow>dig->GetCoord2()) mnRow = (UShort_t)dig->GetCoord2();
if (mxRow<dig->GetCoord2()) mxRow = (UShort_t)dig->GetCoord2();
}
UShort_t nColSpan = UShort_t(mxCol-mnCol+1);
UShort_t nRowSpan = UShort_t(mxRow-mnRow+1);
UShort_t nColSpanW = nColSpan;
UShort_t nRowSpanW = nRowSpan;
if (nColSpan*nRowSpan>AliITSUClusterPix::kMaxPatternBits) {
if (nColSpan>nRowSpan) {
if ( (nColSpanW=AliITSUClusterPix::kMaxPatternBits/nRowSpan)==0 ) {
nColSpanW = 1;
nRowSpanW = AliITSUClusterPix::kMaxPatternBits;
}
}
else {
if ( (nRowSpanW=AliITSUClusterPix::kMaxPatternBits/nColSpan)==0 ) {
nRowSpanW = 1;
nColSpanW = AliITSUClusterPix::kMaxPatternBits;
}
}
}
cl->ResetPattern();
cl->SetPatternRowSpan(nRowSpanW,nRowSpanW<nRowSpan);
cl->SetPatternColSpan(nColSpanW,nColSpanW<nColSpan);
cl->SetPatternMinRow(mnRow);
cl->SetPatternMinCol(mnCol);
for (AliITSUClusterizerClusterDigit *idigit=cand->fFirstDigit;idigit;idigit=idigit->fNext) {
AliITSdigit* dig = idigit->fDigit;
UInt_t ir = dig->GetCoord2()-mnRow;
UInt_t ic = dig->GetCoord1()-mnCol;
if (ir<nRowSpanW && ic<nColSpanW) cl->SetPixel(ir,ic);
}
}
#endif //_ClusterTopology_
AliITSUClusterizer.cxx:10 AliITSUClusterizer.cxx:11 AliITSUClusterizer.cxx:12 AliITSUClusterizer.cxx:13 AliITSUClusterizer.cxx:14 AliITSUClusterizer.cxx:15 AliITSUClusterizer.cxx:16 AliITSUClusterizer.cxx:17 AliITSUClusterizer.cxx:18 AliITSUClusterizer.cxx:19 AliITSUClusterizer.cxx:20 AliITSUClusterizer.cxx:21 AliITSUClusterizer.cxx:22 AliITSUClusterizer.cxx:23 AliITSUClusterizer.cxx:24 AliITSUClusterizer.cxx:25 AliITSUClusterizer.cxx:26 AliITSUClusterizer.cxx:27 AliITSUClusterizer.cxx:28 AliITSUClusterizer.cxx:29 AliITSUClusterizer.cxx:30 AliITSUClusterizer.cxx:31 AliITSUClusterizer.cxx:32 AliITSUClusterizer.cxx:33 AliITSUClusterizer.cxx:34 AliITSUClusterizer.cxx:35 AliITSUClusterizer.cxx:36 AliITSUClusterizer.cxx:37 AliITSUClusterizer.cxx:38 AliITSUClusterizer.cxx:39 AliITSUClusterizer.cxx:40 AliITSUClusterizer.cxx:41 AliITSUClusterizer.cxx:42 AliITSUClusterizer.cxx:43 AliITSUClusterizer.cxx:44 AliITSUClusterizer.cxx:45 AliITSUClusterizer.cxx:46 AliITSUClusterizer.cxx:47 AliITSUClusterizer.cxx:48 AliITSUClusterizer.cxx:49 AliITSUClusterizer.cxx:50 AliITSUClusterizer.cxx:51 AliITSUClusterizer.cxx:52 AliITSUClusterizer.cxx:53 AliITSUClusterizer.cxx:54 AliITSUClusterizer.cxx:55 AliITSUClusterizer.cxx:56 AliITSUClusterizer.cxx:57 AliITSUClusterizer.cxx:58 AliITSUClusterizer.cxx:59 AliITSUClusterizer.cxx:60 AliITSUClusterizer.cxx:61 AliITSUClusterizer.cxx:62 AliITSUClusterizer.cxx:63 AliITSUClusterizer.cxx:64 AliITSUClusterizer.cxx:65 AliITSUClusterizer.cxx:66 AliITSUClusterizer.cxx:67 AliITSUClusterizer.cxx:68 AliITSUClusterizer.cxx:69 AliITSUClusterizer.cxx:70 AliITSUClusterizer.cxx:71 AliITSUClusterizer.cxx:72 AliITSUClusterizer.cxx:73 AliITSUClusterizer.cxx:74 AliITSUClusterizer.cxx:75 AliITSUClusterizer.cxx:76 AliITSUClusterizer.cxx:77 AliITSUClusterizer.cxx:78 AliITSUClusterizer.cxx:79 AliITSUClusterizer.cxx:80 AliITSUClusterizer.cxx:81 AliITSUClusterizer.cxx:82 AliITSUClusterizer.cxx:83 AliITSUClusterizer.cxx:84 AliITSUClusterizer.cxx:85 AliITSUClusterizer.cxx:86 AliITSUClusterizer.cxx:87 AliITSUClusterizer.cxx:88 AliITSUClusterizer.cxx:89 AliITSUClusterizer.cxx:90 AliITSUClusterizer.cxx:91 AliITSUClusterizer.cxx:92 AliITSUClusterizer.cxx:93 AliITSUClusterizer.cxx:94 AliITSUClusterizer.cxx:95 AliITSUClusterizer.cxx:96 AliITSUClusterizer.cxx:97 AliITSUClusterizer.cxx:98 AliITSUClusterizer.cxx:99 AliITSUClusterizer.cxx:100 AliITSUClusterizer.cxx:101 AliITSUClusterizer.cxx:102 AliITSUClusterizer.cxx:103 AliITSUClusterizer.cxx:104 AliITSUClusterizer.cxx:105 AliITSUClusterizer.cxx:106 AliITSUClusterizer.cxx:107 AliITSUClusterizer.cxx:108 AliITSUClusterizer.cxx:109 AliITSUClusterizer.cxx:110 AliITSUClusterizer.cxx:111 AliITSUClusterizer.cxx:112 AliITSUClusterizer.cxx:113 AliITSUClusterizer.cxx:114 AliITSUClusterizer.cxx:115 AliITSUClusterizer.cxx:116 AliITSUClusterizer.cxx:117 AliITSUClusterizer.cxx:118 AliITSUClusterizer.cxx:119 AliITSUClusterizer.cxx:120 AliITSUClusterizer.cxx:121 AliITSUClusterizer.cxx:122 AliITSUClusterizer.cxx:123 AliITSUClusterizer.cxx:124 AliITSUClusterizer.cxx:125 AliITSUClusterizer.cxx:126 AliITSUClusterizer.cxx:127 AliITSUClusterizer.cxx:128 AliITSUClusterizer.cxx:129 AliITSUClusterizer.cxx:130 AliITSUClusterizer.cxx:131 AliITSUClusterizer.cxx:132 AliITSUClusterizer.cxx:133 AliITSUClusterizer.cxx:134 AliITSUClusterizer.cxx:135 AliITSUClusterizer.cxx:136 AliITSUClusterizer.cxx:137 AliITSUClusterizer.cxx:138 AliITSUClusterizer.cxx:139 AliITSUClusterizer.cxx:140 AliITSUClusterizer.cxx:141 AliITSUClusterizer.cxx:142 AliITSUClusterizer.cxx:143 AliITSUClusterizer.cxx:144 AliITSUClusterizer.cxx:145 AliITSUClusterizer.cxx:146 AliITSUClusterizer.cxx:147 AliITSUClusterizer.cxx:148 AliITSUClusterizer.cxx:149 AliITSUClusterizer.cxx:150 AliITSUClusterizer.cxx:151 AliITSUClusterizer.cxx:152 AliITSUClusterizer.cxx:153 AliITSUClusterizer.cxx:154 AliITSUClusterizer.cxx:155 AliITSUClusterizer.cxx:156 AliITSUClusterizer.cxx:157 AliITSUClusterizer.cxx:158 AliITSUClusterizer.cxx:159 AliITSUClusterizer.cxx:160 AliITSUClusterizer.cxx:161 AliITSUClusterizer.cxx:162 AliITSUClusterizer.cxx:163 AliITSUClusterizer.cxx:164 AliITSUClusterizer.cxx:165 AliITSUClusterizer.cxx:166 AliITSUClusterizer.cxx:167 AliITSUClusterizer.cxx:168 AliITSUClusterizer.cxx:169 AliITSUClusterizer.cxx:170 AliITSUClusterizer.cxx:171 AliITSUClusterizer.cxx:172 AliITSUClusterizer.cxx:173 AliITSUClusterizer.cxx:174 AliITSUClusterizer.cxx:175 AliITSUClusterizer.cxx:176 AliITSUClusterizer.cxx:177 AliITSUClusterizer.cxx:178 AliITSUClusterizer.cxx:179 AliITSUClusterizer.cxx:180 AliITSUClusterizer.cxx:181 AliITSUClusterizer.cxx:182 AliITSUClusterizer.cxx:183 AliITSUClusterizer.cxx:184 AliITSUClusterizer.cxx:185 AliITSUClusterizer.cxx:186 AliITSUClusterizer.cxx:187 AliITSUClusterizer.cxx:188 AliITSUClusterizer.cxx:189 AliITSUClusterizer.cxx:190 AliITSUClusterizer.cxx:191 AliITSUClusterizer.cxx:192 AliITSUClusterizer.cxx:193 AliITSUClusterizer.cxx:194 AliITSUClusterizer.cxx:195 AliITSUClusterizer.cxx:196 AliITSUClusterizer.cxx:197 AliITSUClusterizer.cxx:198 AliITSUClusterizer.cxx:199 AliITSUClusterizer.cxx:200 AliITSUClusterizer.cxx:201 AliITSUClusterizer.cxx:202 AliITSUClusterizer.cxx:203 AliITSUClusterizer.cxx:204 AliITSUClusterizer.cxx:205 AliITSUClusterizer.cxx:206 AliITSUClusterizer.cxx:207 AliITSUClusterizer.cxx:208 AliITSUClusterizer.cxx:209 AliITSUClusterizer.cxx:210 AliITSUClusterizer.cxx:211 AliITSUClusterizer.cxx:212 AliITSUClusterizer.cxx:213 AliITSUClusterizer.cxx:214 AliITSUClusterizer.cxx:215 AliITSUClusterizer.cxx:216 AliITSUClusterizer.cxx:217 AliITSUClusterizer.cxx:218 AliITSUClusterizer.cxx:219 AliITSUClusterizer.cxx:220 AliITSUClusterizer.cxx:221 AliITSUClusterizer.cxx:222 AliITSUClusterizer.cxx:223 AliITSUClusterizer.cxx:224 AliITSUClusterizer.cxx:225 AliITSUClusterizer.cxx:226 AliITSUClusterizer.cxx:227 AliITSUClusterizer.cxx:228 AliITSUClusterizer.cxx:229 AliITSUClusterizer.cxx:230 AliITSUClusterizer.cxx:231 AliITSUClusterizer.cxx:232 AliITSUClusterizer.cxx:233 AliITSUClusterizer.cxx:234 AliITSUClusterizer.cxx:235 AliITSUClusterizer.cxx:236 AliITSUClusterizer.cxx:237 AliITSUClusterizer.cxx:238 AliITSUClusterizer.cxx:239 AliITSUClusterizer.cxx:240 AliITSUClusterizer.cxx:241 AliITSUClusterizer.cxx:242 AliITSUClusterizer.cxx:243 AliITSUClusterizer.cxx:244 AliITSUClusterizer.cxx:245 AliITSUClusterizer.cxx:246 AliITSUClusterizer.cxx:247 AliITSUClusterizer.cxx:248 AliITSUClusterizer.cxx:249 AliITSUClusterizer.cxx:250 AliITSUClusterizer.cxx:251 AliITSUClusterizer.cxx:252 AliITSUClusterizer.cxx:253 AliITSUClusterizer.cxx:254 AliITSUClusterizer.cxx:255 AliITSUClusterizer.cxx:256 AliITSUClusterizer.cxx:257 AliITSUClusterizer.cxx:258 AliITSUClusterizer.cxx:259 AliITSUClusterizer.cxx:260 AliITSUClusterizer.cxx:261 AliITSUClusterizer.cxx:262 AliITSUClusterizer.cxx:263 AliITSUClusterizer.cxx:264 AliITSUClusterizer.cxx:265 AliITSUClusterizer.cxx:266 AliITSUClusterizer.cxx:267 AliITSUClusterizer.cxx:268 AliITSUClusterizer.cxx:269 AliITSUClusterizer.cxx:270 AliITSUClusterizer.cxx:271 AliITSUClusterizer.cxx:272 AliITSUClusterizer.cxx:273 AliITSUClusterizer.cxx:274 AliITSUClusterizer.cxx:275 AliITSUClusterizer.cxx:276 AliITSUClusterizer.cxx:277 AliITSUClusterizer.cxx:278 AliITSUClusterizer.cxx:279 AliITSUClusterizer.cxx:280 AliITSUClusterizer.cxx:281 AliITSUClusterizer.cxx:282 AliITSUClusterizer.cxx:283 AliITSUClusterizer.cxx:284 AliITSUClusterizer.cxx:285 AliITSUClusterizer.cxx:286 AliITSUClusterizer.cxx:287 AliITSUClusterizer.cxx:288 AliITSUClusterizer.cxx:289 AliITSUClusterizer.cxx:290 AliITSUClusterizer.cxx:291 AliITSUClusterizer.cxx:292 AliITSUClusterizer.cxx:293 AliITSUClusterizer.cxx:294 AliITSUClusterizer.cxx:295 AliITSUClusterizer.cxx:296 AliITSUClusterizer.cxx:297 AliITSUClusterizer.cxx:298 AliITSUClusterizer.cxx:299 AliITSUClusterizer.cxx:300 AliITSUClusterizer.cxx:301 AliITSUClusterizer.cxx:302 AliITSUClusterizer.cxx:303 AliITSUClusterizer.cxx:304 AliITSUClusterizer.cxx:305 AliITSUClusterizer.cxx:306 AliITSUClusterizer.cxx:307 AliITSUClusterizer.cxx:308 AliITSUClusterizer.cxx:309 AliITSUClusterizer.cxx:310 AliITSUClusterizer.cxx:311 AliITSUClusterizer.cxx:312 AliITSUClusterizer.cxx:313 AliITSUClusterizer.cxx:314 AliITSUClusterizer.cxx:315 AliITSUClusterizer.cxx:316 AliITSUClusterizer.cxx:317 AliITSUClusterizer.cxx:318 AliITSUClusterizer.cxx:319 AliITSUClusterizer.cxx:320 AliITSUClusterizer.cxx:321 AliITSUClusterizer.cxx:322 AliITSUClusterizer.cxx:323 AliITSUClusterizer.cxx:324 AliITSUClusterizer.cxx:325 AliITSUClusterizer.cxx:326 AliITSUClusterizer.cxx:327 AliITSUClusterizer.cxx:328 AliITSUClusterizer.cxx:329 AliITSUClusterizer.cxx:330 AliITSUClusterizer.cxx:331 AliITSUClusterizer.cxx:332 AliITSUClusterizer.cxx:333 AliITSUClusterizer.cxx:334 AliITSUClusterizer.cxx:335 AliITSUClusterizer.cxx:336 AliITSUClusterizer.cxx:337 AliITSUClusterizer.cxx:338 AliITSUClusterizer.cxx:339 AliITSUClusterizer.cxx:340 AliITSUClusterizer.cxx:341 AliITSUClusterizer.cxx:342 AliITSUClusterizer.cxx:343 AliITSUClusterizer.cxx:344 AliITSUClusterizer.cxx:345 AliITSUClusterizer.cxx:346 AliITSUClusterizer.cxx:347 AliITSUClusterizer.cxx:348 AliITSUClusterizer.cxx:349 AliITSUClusterizer.cxx:350 AliITSUClusterizer.cxx:351 AliITSUClusterizer.cxx:352 AliITSUClusterizer.cxx:353 AliITSUClusterizer.cxx:354 AliITSUClusterizer.cxx:355 AliITSUClusterizer.cxx:356 AliITSUClusterizer.cxx:357 AliITSUClusterizer.cxx:358 AliITSUClusterizer.cxx:359 AliITSUClusterizer.cxx:360 AliITSUClusterizer.cxx:361 AliITSUClusterizer.cxx:362 AliITSUClusterizer.cxx:363 AliITSUClusterizer.cxx:364 AliITSUClusterizer.cxx:365 AliITSUClusterizer.cxx:366 AliITSUClusterizer.cxx:367 AliITSUClusterizer.cxx:368 AliITSUClusterizer.cxx:369 AliITSUClusterizer.cxx:370 AliITSUClusterizer.cxx:371 AliITSUClusterizer.cxx:372 AliITSUClusterizer.cxx:373 AliITSUClusterizer.cxx:374 AliITSUClusterizer.cxx:375 AliITSUClusterizer.cxx:376 AliITSUClusterizer.cxx:377 AliITSUClusterizer.cxx:378 AliITSUClusterizer.cxx:379 AliITSUClusterizer.cxx:380 AliITSUClusterizer.cxx:381 AliITSUClusterizer.cxx:382 AliITSUClusterizer.cxx:383 AliITSUClusterizer.cxx:384 AliITSUClusterizer.cxx:385 AliITSUClusterizer.cxx:386 AliITSUClusterizer.cxx:387 AliITSUClusterizer.cxx:388 AliITSUClusterizer.cxx:389 AliITSUClusterizer.cxx:390 AliITSUClusterizer.cxx:391 AliITSUClusterizer.cxx:392 AliITSUClusterizer.cxx:393 AliITSUClusterizer.cxx:394 AliITSUClusterizer.cxx:395 AliITSUClusterizer.cxx:396 AliITSUClusterizer.cxx:397 AliITSUClusterizer.cxx:398 AliITSUClusterizer.cxx:399 AliITSUClusterizer.cxx:400 AliITSUClusterizer.cxx:401 AliITSUClusterizer.cxx:402 AliITSUClusterizer.cxx:403 AliITSUClusterizer.cxx:404 AliITSUClusterizer.cxx:405 AliITSUClusterizer.cxx:406 AliITSUClusterizer.cxx:407 AliITSUClusterizer.cxx:408 AliITSUClusterizer.cxx:409 AliITSUClusterizer.cxx:410 AliITSUClusterizer.cxx:411 AliITSUClusterizer.cxx:412 AliITSUClusterizer.cxx:413 AliITSUClusterizer.cxx:414 AliITSUClusterizer.cxx:415 AliITSUClusterizer.cxx:416 AliITSUClusterizer.cxx:417 AliITSUClusterizer.cxx:418 AliITSUClusterizer.cxx:419 AliITSUClusterizer.cxx:420 AliITSUClusterizer.cxx:421 AliITSUClusterizer.cxx:422 AliITSUClusterizer.cxx:423 AliITSUClusterizer.cxx:424 AliITSUClusterizer.cxx:425 AliITSUClusterizer.cxx:426 AliITSUClusterizer.cxx:427 AliITSUClusterizer.cxx:428 AliITSUClusterizer.cxx:429 AliITSUClusterizer.cxx:430 AliITSUClusterizer.cxx:431 AliITSUClusterizer.cxx:432 AliITSUClusterizer.cxx:433 AliITSUClusterizer.cxx:434 AliITSUClusterizer.cxx:435 AliITSUClusterizer.cxx:436 AliITSUClusterizer.cxx:437 AliITSUClusterizer.cxx:438 AliITSUClusterizer.cxx:439 AliITSUClusterizer.cxx:440 AliITSUClusterizer.cxx:441 AliITSUClusterizer.cxx:442 AliITSUClusterizer.cxx:443 AliITSUClusterizer.cxx:444 AliITSUClusterizer.cxx:445 AliITSUClusterizer.cxx:446 AliITSUClusterizer.cxx:447 AliITSUClusterizer.cxx:448 AliITSUClusterizer.cxx:449 AliITSUClusterizer.cxx:450 AliITSUClusterizer.cxx:451 AliITSUClusterizer.cxx:452 AliITSUClusterizer.cxx:453 AliITSUClusterizer.cxx:454 AliITSUClusterizer.cxx:455 AliITSUClusterizer.cxx:456 AliITSUClusterizer.cxx:457 AliITSUClusterizer.cxx:458 AliITSUClusterizer.cxx:459 AliITSUClusterizer.cxx:460 AliITSUClusterizer.cxx:461 AliITSUClusterizer.cxx:462 AliITSUClusterizer.cxx:463 AliITSUClusterizer.cxx:464 AliITSUClusterizer.cxx:465 AliITSUClusterizer.cxx:466 AliITSUClusterizer.cxx:467 AliITSUClusterizer.cxx:468 AliITSUClusterizer.cxx:469 AliITSUClusterizer.cxx:470 AliITSUClusterizer.cxx:471 AliITSUClusterizer.cxx:472 AliITSUClusterizer.cxx:473 AliITSUClusterizer.cxx:474 AliITSUClusterizer.cxx:475 AliITSUClusterizer.cxx:476 AliITSUClusterizer.cxx:477 AliITSUClusterizer.cxx:478 AliITSUClusterizer.cxx:479 AliITSUClusterizer.cxx:480