fConstraint(kFALSE),
fOnlyFitter(kFALSE),
fMinTracks(1),
-fMinITSClusters(5),
+fMinClusters(5),
fDCAcut(0.1),
fDCAcutIter0(0.1),
fNSigma(3.),
fMinDetFitter(100.),
fMaxTgl(1000.),
fITSrefit(kTRUE),
+fFiducialR(3.),
+fFiducialZ(30.),
fnSigmaForUi00(1.5),
fDebug(0),
fAlgo(1)
//
SetVtxStart();
SetVtxStartSigma();
- SetITSMode();
}
//----------------------------------------------------------------------------
AliVertexerTracks::AliVertexerTracks(Double_t fieldkG):
fConstraint(kFALSE),
fOnlyFitter(kFALSE),
fMinTracks(1),
-fMinITSClusters(5),
+fMinClusters(5),
fDCAcut(0.1),
fDCAcutIter0(0.1),
fNSigma(3.),
fMinDetFitter(100.),
fMaxTgl(1000.),
fITSrefit(kTRUE),
+fFiducialR(3.),
+fFiducialZ(30.),
fnSigmaForUi00(1.5),
fDebug(0),
fAlgo(1)
//
SetVtxStart();
SetVtxStartSigma();
- SetITSMode();
+ SetTPCMode();
}
//-----------------------------------------------------------------------------
AliVertexerTracks::~AliVertexerTracks()
}
if(skipThis) continue;
+ // check number of clusters in ITS or TPC
+ if(esdt->GetNcls(fMode) < fMinClusters) continue;
+
if(fMode==0) { // ITS mode
if(fITSrefit && !(esdt->GetStatus()&AliESDtrack::kITSrefit)) continue;
- // check number of clusters in ITS
- if(esdt->GetNcls(0)<fMinITSClusters) continue;
Double_t x,p[5],cov[15];
esdt->GetExternalParameters(x,p);
esdt->GetExternalCovariance(cov);
Int_t nTrksOrig = (Int_t)trkArrayOrig.GetEntriesFast();
Int_t nTrksSel = 0;
Double_t maxd0rphi;
- Double_t fiducialR = 3.0, fiducialZ = 20.0; // pipe and 1.5xSPD
Double_t sigmaCurr[3];
Double_t normdistx,normdisty;
Double_t d0z0[2],covd0z0[3];
sigmad0 = TMath::Sqrt(covd0z0[0]);
maxd0rphi = fNSigma*sigmad0;
if(optImpParCut==1) maxd0rphi *= 5.;
- maxd0rphi = TMath::Min(maxd0rphi,fiducialR);
+ maxd0rphi = TMath::Min(maxd0rphi,fFiducialR);
//sigmad0z0 = TMath::Sqrt(covd0z0[0]+covd0z0[2]); // for future improvement
//maxd0z0 = 10.*fNSigma*sigmad0z0;
//---- track selection based on impact parameters ----//
// always reject tracks outside fiducial volume
- if(TMath::Abs(d0z0[0])>fiducialR || TMath::Abs(d0z0[1])>fiducialZ) {
+ if(TMath::Abs(d0z0[0])>fFiducialR || TMath::Abs(d0z0[1])>fFiducialZ) {
if(fDebug) printf(" rejected\n");
delete track; continue;
}
void AliVertexerTracks::SetITSMode(Double_t dcacut,
Double_t dcacutIter0,
Double_t maxd0z0,
- Int_t minITScls,
+ Int_t minCls,
Int_t mintrks,
Double_t nsigma,
Double_t mindetfitter,
- Double_t maxtgl)
+ Double_t maxtgl,
+ Double_t fidR,
+ Double_t fidZ)
{
//
// Cut values for ITS mode
SetDCAcut(dcacut);
SetDCAcutIter0(dcacutIter0);
SetMaxd0z0(maxd0z0);
- SetMinITSClusters(minITScls);
+ SetMinClusters(minCls);
SetMinTracks(mintrks);
SetNSigmad0(nsigma);
SetMinDetFitter(mindetfitter);
SetMaxTgl(maxtgl);
+ SetFiducialRZ(fidR,fidZ);
return;
}
void AliVertexerTracks::SetTPCMode(Double_t dcacut,
Double_t dcacutIter0,
Double_t maxd0z0,
- Int_t minITScls,
+ Int_t minCls,
Int_t mintrks,
Double_t nsigma,
Double_t mindetfitter,
- Double_t maxtgl)
+ Double_t maxtgl,
+ Double_t fidR,
+ Double_t fidZ)
{
//
// Cut values for TPC mode
SetDCAcut(dcacut);
SetDCAcutIter0(dcacutIter0);
SetMaxd0z0(maxd0z0);
- SetMinITSClusters(minITScls);
+ SetMinClusters(minCls);
SetMinTracks(mintrks);
SetNSigmad0(nsigma);
SetMinDetFitter(mindetfitter);
SetMaxTgl(maxtgl);
+ SetFiducialRZ(fidR,fidZ);
return;
}
void SetITSMode(Double_t dcacut=0.1,
Double_t dcacutIter0=0.1,
Double_t maxd0z0=0.5,
- Int_t minITScls=5,
+ Int_t minCls=5,
Int_t mintrks=1,
Double_t nsigma=3.,
Double_t mindetfitter=100.,
- Double_t maxtgl=1000.);
+ Double_t maxtgl=1000.,
+ Double_t fidR=3.,
+ Double_t fidZ=30.);
void SetTPCMode(Double_t dcacut=0.1,
Double_t dcacutIter0=1.0,
Double_t maxd0z0=5.0,
- Int_t minITScls=0,
+ Int_t minCls=10,
Int_t mintrks=1,
Double_t nsigma=3.,
Double_t mindetfitter=0.1,
- Double_t maxtgl=1.5);
+ Double_t maxtgl=1.5,
+ Double_t fidR=3.,
+ Double_t fidZ=30.);
void SetConstraintOff() { fConstraint=kFALSE; return; }
void SetConstraintOn() { fConstraint=kTRUE; return; }
void SetDebug(Int_t optdebug=0) { fDebug=optdebug; return; }
void SetFinderAlgorithm(Int_t opt=1) { fAlgo=opt; return; }
void SetITSrefitRequired() { fITSrefit=kTRUE; return; }
void SetITSrefitNotRequired() { fITSrefit=kFALSE; return; }
+ void SetFiducialRZ(Double_t r=3,Double_t z=30) { fFiducialR=r; fFiducialZ=z; return; }
void SetMaxd0z0(Double_t maxd0z0=0.5) { fMaxd0z0=maxd0z0; return; }
- void SetMinITSClusters(Int_t n=5) { fMinITSClusters=n; return; }
+ void SetMinClusters(Int_t n=5) { fMinClusters=n; return; }
void SetMinTracks(Int_t n=1) { fMinTracks=n; return; }
void SetNSigmad0(Double_t n=3) { fNSigma=n; return; }
Double_t GetNSigmad0() const { return fNSigma; }
Bool_t fOnlyFitter; // primary with one fitter shot only
// (use only with beam constraint)
Int_t fMinTracks; // minimum number of tracks
- Int_t fMinITSClusters; // minimum number of ITS clusters per track
+ Int_t fMinClusters; // minimum number of ITS or TPC clusters per track
Double_t fDCAcut; // maximum DCA between 2 tracks used for vertex
Double_t fDCAcutIter0; // maximum DCA between 2 tracks used for vertex
Double_t fNSigma; // number of sigmas for d0 cut in PrepareTracks()
Double_t fMaxTgl; // maximum tgl of tracks
Bool_t fITSrefit; // if kTRUE (default), use only kITSrefit tracks
// if kFALSE, use all tracks (also TPC only)
+ Double_t fFiducialR; // radius of fiducial cylinder for tracks
+ Double_t fFiducialZ; // length of fiducial cylinder for tracks
Double_t fnSigmaForUi00; // n. sigmas from finder in TrackToPoint
Int_t fDebug; //! debug flag - verbose printing if >0
Int_t fAlgo; // option for vertex finding algorythm