+ FindPrimaryVertex(&trkArrayOrig,idOrig);
+
+ trkArrayOrig.Delete();
+ delete [] idOrig; idOrig=NULL;
+ f.Close();
+ gSystem->Unlink("VertexerTracks.root");
+ olddir->cd();
+
+ return fCurrentVertex;
+}
+//----------------------------------------------------------------------------
+AliESDVertex* AliVertexerTracks::FindPrimaryVertex(TObjArray *trkArrayOrig,
+ UShort_t *idOrig)
+{
+//
+// Primary vertex using the AliExternalTrackParam's in the TObjArray.
+// idOrig must contain the track IDs from AliESDtrack::GetID()
+// (Two iterations:
+// 1st with 5*fNSigma*sigma cut w.r.t. to initial vertex
+// + cut on sqrt(d0d0+z0z0) if fConstraint=kFALSE
+// 2nd with fNSigma*sigma cut w.r.t. to vertex found in 1st iteration)
+//
+ fCurrentVertex = 0;
+
+ // accept 1-track case only if constraint is available
+ if(!fConstraint && fMinTracks==1) fMinTracks=2;
+
+ // read tracks from ESD
+ Int_t nTrksOrig = (Int_t)trkArrayOrig->GetEntriesFast();
+ if(fDebug) printf("Initial number of tracks: %d\n",nTrksOrig);
+ if(nTrksOrig<=0) {
+ if(fDebug) printf("TooFewTracks\n");
+ TooFewTracks();
+ return fCurrentVertex;
+ }
+