void AliITSVertexerZ::VertexZFinder(TTree *itsClusterTree){
// Defines the AliESDVertex for the current event
fCurrentVertex = 0;
- fIsPileup=kFALSE;
- fNTrpuv=-2;
- fZpuv=-99999.;
+ ResetVertex();
+
+ if(!GetDetTypeRec())AliFatal("DetTypeRec pointer has not been set");
TTree *tR = itsClusterTree;
fDetTypeRec->SetTreeAddressR(tR);
itsRec = fDetTypeRec->RecPoints();
TBranch *branch;
branch = tR->GetBranch("ITSRecPoints");
+ if(!branch){
+ AliWarning("Null pointer for RecPoints branch, vertex not calculated");
+ ResetHistograms();
+ fCurrentVertex = new AliESDVertex(0.,5.3,-2);
+ return;
+ }
Int_t nrpL1 = 0;
Int_t nrpL2 = 0;
fDetTypeRec->ResetRecPoints();
}
if(nrpL1 == 0 || nrpL2 == 0){
+ AliDebug(1,Form("No RecPoints in at least one SPD layer (%d %d)",nrpL1,nrpL2));
ResetHistograms();
fCurrentVertex = new AliESDVertex(0.,5.3,-2);
return;
niter++;
} while(niter<10 && TMath::Abs((zm-lim1)-(lim2-zm))>fTolerance);
fCurrentVertex = new AliESDVertex(zm,ezm,ncontr);
- fCurrentVertex->SetTitle("vertexer: B");
+ fCurrentVertex->SetTitle("vertexer: Z");
+ fNoVertices=1;
points.Clear();
if(ncontr>fMinTrackletsForPilup){
Float_t secPeakPos;
Int_t ncontr2=FindSecondPeak(fZCombc,binmin,binmax,secPeakPos);
if(ncontr2>=fMinTrackletsForPilup){
fIsPileup=kTRUE;
+ fNoVertices=2;
fZpuv=secPeakPos;
fNTrpuv=ncontr2;
+ AliESDVertex secondVert(secPeakPos,0.1,ncontr2);
+ fVertArray = new AliESDVertex[2];
+ fVertArray[0]=(*fCurrentVertex);
+ fVertArray[1]=secondVert;
}
}
+ if(fNoVertices==1){
+ fVertArray = new AliESDVertex[1];
+ fVertArray[0]=(*fCurrentVertex);
+ }
+
ResetHistograms();
return;
}