// (Two iterations:
// 1st with 5*fNSigma*sigma(pt) cut w.r.t. to initial vertex;
// 2nd with fNSigma*sigma(pt) cut w.r.t. to vertex found in 1st iteration)
+// All ESD tracks with inside the beam pipe are then propagated to found vertex
//
fCurrentVertex = 0;
trkTree->Fill();
}
delete esdTrack;
+
// ITERATION 1
// propagate tracks to initVertex
if(fDebug) fCurrentVertex->PrintStatus();
if(fTrksToSkip) delete [] fTrksToSkip;
-
+
+ // propagate tracks to found vertex
+ if(TMath::Sqrt(fCurrentVertex->GetXv()*fCurrentVertex->GetXv()+fCurrentVertex->GetYv()*fCurrentVertex->GetYv())<3.) {
+ for(Int_t ii=0; ii<entr; ii++) {
+ AliESDtrack *et = esdEvent->GetTrack(ii);
+ if(!et->GetStatus()&AliESDtrack::kITSin) continue;
+ if(et->GetX()>3.) continue;
+ et->RelateToVertex(fCurrentVertex,GetField(),100.);
+ }
+ } else {
+ AliWarning("Found vertex outside beam pipe!");
+ }
+
return fCurrentVertex;
}
//----------------------------------------------------------------------------
static void GetStrLinDerivMatrix(Double_t *p0,Double_t *p1,Double_t *sigmasq,Double_t (*m)[3],Double_t *d);
protected:
- Double_t GetField() const { return AliTracker::GetBz();}
+ Double_t GetField() const {
+ if(!AliTracker::GetFieldMap())
+ AliFatal("Field map not set; use AliTracker::SetFieldMap()!");
+ return AliTracker::GetBz(); }
Int_t PrepareTracks(TTree &trkTree, Int_t OptImpParCut);
Double_t Sigmad0rphi(Double_t pt) const;
void VertexFinder(Int_t optUseWeights=0);