30 #include <TDirectory.h> 42 "require TPC standalone",
46 "#Chi^{2}/cluster TPC",
47 "#Chi^{2}/cluster ITS",
63 "trk-to-vtx max dca 2D absolute",
64 "trk-to-vtx max dca xy absolute",
65 "trk-to-vtx max dca z absolute",
66 "trk-to-vtx min dca 2D absolute",
67 "trk-to-vtx min dca xy absolute",
68 "trk-to-vtx min dca z absolute",
69 "SPD cluster requirement",
70 "SDD cluster requirement",
71 "SSD cluster requirement",
72 "require ITS stand-alone",
73 "rel 1/pt uncertainty",
74 "TPC n shared clusters",
75 "TPC rel shared clusters",
78 "n crossed rows / n findable clusters",
80 "#Chi^{2} TPC constrained vs. global",
83 "min length in active volume TPC",
84 "n-geometrical+n-crossed-row and n-clusters cut",
85 "track is in distorted TPC region" 94 fCutMinNClusterTPC(0),
95 fCutMinNClusterITS(0),
96 fCutMinNCrossedRowsTPC(0),
97 fCutMinRatioCrossedRowsOverFindableClustersTPC(0),
98 f1CutMinNClustersTPCPtDep(0x0),
99 fCutMaxPtDepNClustersTPC(0),
100 fCutMinLengthActiveVolumeTPC(0),
102 fCutGeoNcrNclLength(0),
103 fCutGeoNcrNclGeom1Pt(0),
104 fCutGeoNcrNclFractionNcr(0),
105 fCutGeoNcrNclFractionNcl(0),
106 fCutOutDistortedRegionTPC(kFALSE),
107 fCutMaxChi2PerClusterTPC(0),
108 fCutMaxChi2PerClusterITS(0),
109 fCutMaxChi2TPCConstrainedVsGlobal(0),
110 fCutMaxChi2TPCConstrainedVsGlobalVertexType(kVertexTracks | kVertexSPD),
111 fCutMaxMissingITSPoints(0),
117 fCutMaxRel1PtUncertainty(0),
118 fCutAcceptKinkDaughters(0),
119 fCutAcceptSharedTPCClusters(0),
120 fCutMaxFractionSharedTPCClusters(0),
121 fCutRequireTPCRefit(0),
122 fCutRequireTPCStandAlone(0),
123 fCutRequireITSRefit(0),
124 fCutRequireITSPid(0),
125 fCutRequireITSStandAlone(0),
126 fCutRequireITSpureSA(0),
127 fCutNsigmaToVertex(0),
128 fCutSigmaToVertexRequired(0),
129 fCutMaxDCAToVertexXY(0),
130 fCutMaxDCAToVertexZ(0),
131 fCutMinDCAToVertexXY(0),
132 fCutMinDCAToVertexZ(0),
133 fCutMaxDCAToVertexXYPtDep(
""),
134 fCutMaxDCAToVertexZPtDep(
""),
135 fCutMinDCAToVertexXYPtDep(
""),
136 fCutMinDCAToVertexZPtDep(
""),
137 f1CutMaxDCAToVertexXYPtDep(0x0),
138 f1CutMaxDCAToVertexZPtDep(0x0),
139 f1CutMinDCAToVertexXYPtDep(0x0),
140 f1CutMinDCAToVertexZPtDep(0x0),
141 fCutDCAToVertex2D(0),
156 fCutRequireTOFout(kFALSE),
157 fFlagCutTOFdistance(kFALSE),
293 for (Int_t i=0; i<2; i++) {
390 for (Int_t i = 0; i < 3; i++)
452 for (Int_t i=0; i<2; ++i)
535 for (Int_t i = 0; i < 3; i++)
597 for (Int_t i=0; i<2; ++i)
652 TIterator* iter = list->MakeIterator();
657 while ((obj = iter->Next())) {
666 for (Int_t i=0; i<2; i++) {
718 if(o->IsA() == AliESDtrack::Class())
return AcceptTrack(static_cast<AliESDtrack *>(o));
719 else if(o->InheritsFrom(AliVTrack::Class()))
return AcceptVTrack(static_cast<AliVTrack *>(o));
734 void AliESDtrackCuts::SetCutGeoNcrNcl(Float_t deadZoneWidth,Float_t cutGeoNcrNclLength, Float_t cutGeoNcrNclGeom1Pt, Float_t cutGeoNcrNclFractionNcr, Float_t cutGeoNcrNclFractionNcl){
778 AliInfoClass(
"Creating track cuts for ITS+TPC (2009 definition).");
815 AliInfoClass(
"Creating track cuts for ITS+TPC (2011 definition).");
821 else if (clusterCut == 1) {
826 AliWarningClass(Form(
"Wrong value of the clusterCut parameter (%d), using cut on Nclusters",clusterCut));
857 AliInfoClass(
"Creating track cuts for ITS+TPC (2015 Pb-Pb run definition).");
858 AliWarningClass(
"THIS TRACK-CUT SET HAS NOT YET BEEN VALIDATED AND IS NOT YET FROZEN. TO BE USED FOR TESTING PURPOSES ONLY.");
864 else if (clusterCut == 1) {
869 AliWarningClass(Form(
"Wrong value of the clusterCut parameter (%d), using cut on Nclusters",clusterCut));
873 if (cutAcceptanceEdges) esdTrackCuts->
SetCutGeoNcrNcl(2., 130., 1.5, 0.0, 0.0);
908 AliInfoClass(
"Creating track cuts for ITS+TPC (2010 definition).");
914 else if (clusterCut == 1) {
919 AliWarningClass(Form(
"Wrong value of the clusterCut parameter (%d), using cut on Nclusters",clusterCut));
1010 return esdTrackCuts;
1034 return esdTrackCuts;
1045 return esdTrackCuts;
1057 return esdTrackCuts;
1072 Double_t eta = esdTrack->
Eta();
1076 if (1.32 < phiIn && phiIn < 1.48)
return kTRUE;
1077 if (2.00 < phiIn && phiIn < 2.15)
return kTRUE;
1078 if (3.07 < phiIn && phiIn < 3.21)
return kTRUE;
1080 if (0.40 < phiIn && phiIn < 0.86)
return kTRUE;
1081 if (2.10 < phiIn && phiIn < 2.34)
return kTRUE;
1082 if (3.90 < phiIn && phiIn < 4.32)
return kTRUE;
1127 if (bCov[0]<=0 || bCov[2]<=0) {
1128 AliDebugClass(1,
"Estimated b resolution lower or equal zero!");
1129 bCov[0]=0; bCov[2]=0;
1131 bRes[0] = TMath::Sqrt(bCov[0]);
1132 bRes[1] = TMath::Sqrt(bCov[2]);
1145 if (bRes[0] == 0 || bRes[1] ==0)
1148 Float_t d = TMath::Sqrt(TMath::Power(b[0]/bRes[0],2) + TMath::Power(b[1]/bRes[1],2));
1153 if (TMath::Exp(-d * d / 2) < 1e-15)
1156 Float_t nSigma = TMath::ErfInverse(1 - TMath::Exp(-d * d / 2)) * TMath::Sqrt(2);
1168 Float_t
b[2] = {0.,0.};
1169 Float_t bRes[2] = {0.,0.};
1170 Float_t bCov[3] = {0.,0.,0.};
1173 if (bCov[0]<=0 || bCov[2]<=0) {
1174 AliDebugClass(1,
"Estimated b resolution lower or equal zero!");
1175 bCov[0]=0; bCov[2]=0;
1177 bRes[0] = TMath::Sqrt(bCov[0]);
1178 bRes[1] = TMath::Sqrt(bCov[2]);
1191 if (bRes[0] == 0 || bRes[1] ==0)
1194 Float_t d = TMath::Sqrt(TMath::Power(b[0]/bRes[0],2) + TMath::Power(b[1]/bRes[1],2));
1199 if (TMath::Exp(-d * d / 2) < 1e-15)
1202 Float_t nSigma = TMath::ErfInverse(1 - TMath::Exp(-d * d / 2)) * TMath::Sqrt(2);
1211 tree->SetBranchStatus(
"fTracks.fFlags", 1);
1212 tree->SetBranchStatus(
"fTracks.fITSncls", 1);
1213 tree->SetBranchStatus(
"fTracks.fTPCncls", 1);
1214 tree->SetBranchStatus(
"fTracks.fITSchi2", 1);
1215 tree->SetBranchStatus(
"fTracks.fTPCchi2", 1);
1216 tree->SetBranchStatus(
"fTracks.fC*", 1);
1217 tree->SetBranchStatus(
"fTracks.fD", 1);
1218 tree->SetBranchStatus(
"fTracks.fZ", 1);
1219 tree->SetBranchStatus(
"fTracks.fCdd", 1);
1220 tree->SetBranchStatus(
"fTracks.fCdz", 1);
1221 tree->SetBranchStatus(
"fTracks.fCzz", 1);
1222 tree->SetBranchStatus(
"fTracks.fP*", 1);
1223 tree->SetBranchStatus(
"fTracks.fR*", 1);
1224 tree->SetBranchStatus(
"fTracks.fKinkIndexes*", 1);
1255 ULong64_t status = esdTrack->
GetStatus();
1259 Int_t nClustersTPC = -1;
1276 Float_t ratioCrossedRowsOverFindableClustersTPC = 1.0;
1278 ratioCrossedRowsOverFindableClustersTPC = nCrossedRowsTPC / esdTrack->
GetTPCNclsF();
1281 Int_t nClustersTPCShared = esdTrack->
GetTPCnclsS();
1282 Float_t fracClustersTPCShared = -1.;
1284 Float_t chi2PerClusterITS = -1;
1285 Float_t chi2PerClusterTPC = -1;
1286 if (nClustersITS!=0)
1287 chi2PerClusterITS = esdTrack->
GetITSchi2()/Float_t(nClustersITS);
1288 if (nClustersTPC!=0) {
1290 chi2PerClusterTPC = esdTrack->
GetTPCchi2Iter1()/Float_t(nClustersTPC);
1292 chi2PerClusterTPC = esdTrack->
GetTPCchi2()/Float_t(nClustersTPC);
1294 fracClustersTPCShared = Float_t(nClustersTPCShared)/Float_t(nClustersTPC);
1297 Double_t extCov[15];
1303 if (bCov[0]<=0 || bCov[2]<=0) {
1304 AliDebug(1,
"Estimated b resolution lower or equal zero!");
1305 bCov[0]=0; bCov[2]=0;
1313 Float_t dcaToVertexXY = b[0];
1314 Float_t dcaToVertexZ = b[1];
1316 Float_t dcaToVertex = -1;
1323 dcaToVertex = TMath::Sqrt(dcaToVertexXY*dcaToVertexXY + dcaToVertexZ*dcaToVertexZ);
1332 Double_t momentum = TMath::Sqrt(p[0]*p[0] + p[1]*p[1] + p[2]*p[2]);
1333 Double_t pt = TMath::Sqrt(p[0]*p[0] + p[1]*p[1]);
1334 Double_t mass = esdTrack->
GetMass();
1335 Double_t energy = TMath::Sqrt(mass*mass + momentum*momentum);
1338 Float_t eta = -100.;
1340 if((momentum != TMath::Abs(p[2]))&&(momentum != 0))
1341 eta = 0.5*TMath::Log((momentum + p[2])/(momentum - p[2]));
1342 if((energy != TMath::Abs(p[2]))&&(energy != 0))
1343 y = 0.5*TMath::Log((energy + p[2])/(energy - p[2]));
1347 AliWarning(Form(
"GetSigma1Pt2() returns negative value for external covariance matrix element fC[14]: %f. Corrupted track information, track will not be accepted!", extCov[14]));
1350 Float_t relUncertainty1Pt = TMath::Sqrt(extCov[14])*pt;
1356 for (Int_t i=0; i<
kNCuts; i++) cuts[i]=kFALSE;
1416 for (Int_t i = 0; i < 3; i++) {
1452 Int_t nITSPointsForPid=0;
1454 for(Int_t i=2; i<6; i++){
1455 if(clumap&(1<<i)) ++nITSPointsForPid;
1465 Int_t nMissITSpts=0;
1466 Int_t idet,statusLay;
1468 for(Int_t iLay=0; iLay<6; iLay++){
1470 if(retc && statusLay==5) ++nMissITSpts;
1479 Float_t dxTOF = 999.;
1480 Float_t dzTOF = 999.;
1488 AliDebug(2,Form(
"Beam type from ESD event = %s",beamTypeESD.Data()));
1489 if (beamTypeESD.CompareTo(
"A-A",TString::kIgnoreCase) == 0){
1497 AliFatal(
"Beam type not available, but it is needed to apply the TOF cut!");
1502 Float_t radiusTOF = TMath::Sqrt(dxTOF*dxTOF + dzTOF*dzTOF);
1503 AliDebug(3,Form(
"TOF check (with fCutTOFdistance = %f) --> dx = %f, dz = %f, radius = %f",
fCutTOFdistance, dxTOF, dzTOF, radiusTOF));
1505 AliDebug(2, Form(
"************* the radius is outside the range! %f > %f, the track will be skipped", radiusTOF,
fCutTOFdistance));
1512 for (Int_t i=0; i<
kNCuts; i++)
1513 if (cuts[i]) {cut = kTRUE;}
1516 Double_t chi2TPCConstrainedVsGlobal = -2;
1517 Float_t nSigmaToVertex = -2;
1543 AliFatal(
"fCutMaxChi2TPCConstrainedVsGlobal set but ESD event not set in AliESDTrack. Use AliESDTrack::SetESDEvent before calling AliESDtrackCuts.");
1567 Float_t lengthInActiveZoneTPC = -1;
1571 const Double_t kMaxZ=220;
1581 if (lengthInActiveZoneTPC<cutGeoNcrNclLength) isOK=kFALSE;
1610 for (Int_t i=0; i<
kNCuts; i++) {
1617 for (Int_t j=i; j<
kNCuts; j++) {
1618 if (cuts[i] && cuts[j]) {
1630 for (Int_t
id = 0;
id < 2;
id++)
1648 fhC11[id]->Fill(extCov[0]);
1649 fhC22[id]->Fill(extCov[2]);
1650 fhC33[id]->Fill(extCov[5]);
1651 fhC44[id]->Fill(extCov[9]);
1652 fhC55[id]->Fill(extCov[14]);
1657 fhEta[id]->Fill(eta);
1661 bRes[0] = TMath::Sqrt(bCov[0]);
1662 bRes[1] = TMath::Sqrt(bCov[2]);
1664 fhDZ[id]->Fill(b[1]);
1665 fhDXY[id]->Fill(b[0]);
1666 fhDXYDZ[id]->Fill(dcaToVertex);
1669 if (bRes[0]!=0 && bRes[1]!=0) {
1722 if(
const AliESDtrack *esdTrack = dynamic_cast<const AliESDtrack*>(vTrack)){
1729 if(vTrack->IsA() == AliAODTrack::Class()){
1788 Float_t ratioCrossedRowsOverFindableClustersTPC = 1.0;
1794 Int_t nClustersTPCShared = -1;
1798 Float_t chi2PerClusterITS = -1;
1799 Float_t chi2PerClusterTPC = -1;
1811 Double_t extCov[15];
1812 for(
int i=0; i<15; i++) extCov[i]=0.;
1818 if (bCov[0]<=0 || bCov[2]<=0) {
1819 AliDebug(1,
"Estimated b resolution lower or equal zero!");
1820 bCov[0]=0; bCov[2]=0;
1828 Float_t dcaToVertexXY = b[0];
1829 Float_t dcaToVertexZ = b[1];
1831 Float_t dcaToVertex = -1;
1838 dcaToVertex = TMath::Sqrt(dcaToVertexXY*dcaToVertexXY + dcaToVertexZ*dcaToVertexZ);
1848 Double_t momentum = TMath::Sqrt(p[0]*p[0] + p[1]*p[1] + p[2]*p[2]);
1849 Double_t pt = TMath::Sqrt(p[0]*p[0] + p[1]*p[1]);
1860 Float_t eta = vTrack->
Eta();
1861 Float_t y = vTrack->
Y();
1868 Float_t relUncertainty1Pt = TMath::Sqrt(extCov[14])*pt;
1874 for (Int_t i=0; i<
kNCuts; i++) cuts[i]=kFALSE;
1970 Int_t nITSPointsForPid=0;
1972 for(Int_t i=2; i<6; i++){
1973 if(clumap&(1<<i)) ++nITSPointsForPid;
1983 Int_t nMissITSpts=0;
2030 for (Int_t i=0; i<
kNCuts; i++)
2031 if (cuts[i]) {cut = kTRUE;}
2034 Double_t chi2TPCConstrainedVsGlobal = -2;
2035 Float_t nSigmaToVertex = -2;
2107 for (Int_t i=0; i<
kNCuts; i++) {
2114 for (Int_t j=i; j<
kNCuts; j++) {
2115 if (cuts[i] && cuts[j]) {
2127 for (Int_t
id = 0;
id < 2;
id++)
2145 fhC11[id]->Fill(extCov[0]);
2146 fhC22[id]->Fill(extCov[2]);
2147 fhC33[id]->Fill(extCov[5]);
2148 fhC44[id]->Fill(extCov[9]);
2149 fhC55[id]->Fill(extCov[14]);
2154 fhEta[id]->Fill(eta);
2158 bRes[0] = TMath::Sqrt(bCov[0]);
2159 bRes[1] = TMath::Sqrt(bCov[2]);
2161 fhDZ[id]->Fill(b[1]);
2162 fhDXY[id]->Fill(b[0]);
2163 fhDXYDZ[id]->Fill(dcaToVertex);
2166 if (bRes[0]!=0 && bRes[1]!=0) {
2195 case kOff:
return kTRUE;
2196 case kNone:
return !clusterL1 && !clusterL2;
2197 case kAny:
return clusterL1 || clusterL2;
2198 case kFirst:
return clusterL1;
2199 case kOnlyFirst:
return clusterL1 && !clusterL2;
2200 case kSecond:
return clusterL2;
2202 case kBoth:
return clusterL1 && clusterL2;
2263 if (!vParticle)
return 0;
2266 if(!esdTrack)
return 0;
2302 acceptedTracks->Add(tpcTrack);
2311 acceptedTracks->Add(track);
2314 if(bTPC)acceptedTracks->SetOwner(kTRUE);
2315 return acceptedTracks;
2341 Bool_t oldStatus = TH1::AddDirectoryStatus();
2342 TH1::AddDirectory(kFALSE);
2354 for (Int_t i=0; i<
kNCuts; i++) {
2365 for (Int_t i=0; i<2; i++) {
2377 fhC11[i] =
new TH1F(
"covMatrixDiagonal11",
"",2000,0,20);
2378 fhC22[i] =
new TH1F(
"covMatrixDiagonal22",
"",2000,0,20);
2379 fhC33[i] =
new TH1F(
"covMatrixDiagonal33",
"",1000,0,0.1);
2380 fhC44[i] =
new TH1F(
"covMatrixDiagonal44",
"",1000,0,0.1);
2381 fhC55[i] =
new TH1F(
"covMatrixDiagonal55",
"",1000,0,5);
2385 fhDXY[i] =
new TH1F(
"dXY" ,
"",500,-10,10);
2386 fhDZ[i] =
new TH1F(
"dZ" ,
"",500,-10,10);
2387 fhDXYDZ[i] =
new TH1F(
"dXYDZ" ,
"",500,0,10);
2388 fhDXYvsDZ[i] =
new TH2F(
"dXYvsDZ",
"",200,-10,10,200,-10,10);
2396 fhPt[i] =
new TH1F(
"pt" ,
"p_{T} distribution;p_{T} (GeV/c)", 800, 0.0, 10.0);
2397 fhEta[i] =
new TH1F(
"eta" ,
"#eta distribution;#eta",40,-2.0,2.0);
2398 fhTOFdistance[i] =
new TH2F(
"TOFdistance" ,
"TOF distance;dx (cm};dz (cm)", 150, -15, 15, 150, -15, 15);
2409 fhC11[i]->SetTitle(
"cov 11 : #sigma_{y}^{2} [cm^{2}]");
2410 fhC22[i]->SetTitle(
"cov 22 : #sigma_{z}^{2} [cm^{2}]");
2411 fhC33[i]->SetTitle(
"cov 33 : #sigma_{sin(#phi)}^{2}");
2412 fhC44[i]->SetTitle(
"cov 44 : #sigma_{tan(#theta_{dip})}^{2}");
2413 fhC55[i]->SetTitle(
"cov 55 : #sigma_{1/p_{T}}^{2} [(c/GeV)^2]");
2417 fhDXY[i]->SetXTitle(
"transverse impact parameter (cm)");
2418 fhDZ[i]->SetXTitle(
"longitudinal impact parameter (cm)");
2419 fhDXYDZ[i]->SetTitle(
"absolute impact parameter;sqrt(dXY**2 + dZ**2) (cm)");
2420 fhDXYvsDZ[i]->SetXTitle(
"longitudinal impact parameter (cm)");
2421 fhDXYvsDZ[i]->SetYTitle(
"transverse impact parameter (cm)");
2423 fhDXYNormalized[i]->SetTitle(
"normalized trans impact par (n#sigma)");
2424 fhDZNormalized[i]->SetTitle(
"normalized long impact par (n#sigma)");
2438 fhC11[i]->SetLineColor(color);
fhC11[i]->SetLineWidth(2);
2439 fhC22[i]->SetLineColor(color);
fhC22[i]->SetLineWidth(2);
2440 fhC33[i]->SetLineColor(color);
fhC33[i]->SetLineWidth(2);
2441 fhC44[i]->SetLineColor(color);
fhC44[i]->SetLineWidth(2);
2442 fhC55[i]->SetLineColor(color);
fhC55[i]->SetLineWidth(2);
2446 fhDXY[i]->SetLineColor(color);
fhDXY[i]->SetLineWidth(2);
2447 fhDZ[i]->SetLineColor(color);
fhDZ[i]->SetLineWidth(2);
2456 ffDTheoretical =
new TF1(
"nSigmaToVertexTheoretical",
"([0]/2.506628274)*exp(-(x**2)/2)",0,50);
2459 TH1::AddDirectory(oldStatus);
2471 if (!gDirectory->cd(dir))
2474 ffDTheoretical =
dynamic_cast<TF1*
> (gDirectory->Get(
"nSigmaToVertexTheory"));
2476 fhCutStatistics =
dynamic_cast<TH1F*
> (gDirectory->Get(
"cut_statistics"));
2477 fhCutCorrelation =
dynamic_cast<TH2F*
> (gDirectory->Get(
"cut_correlation"));
2479 for (Int_t i=0; i<2; i++) {
2482 gDirectory->cd(
"before_cuts");
2485 gDirectory->cd(
"after_cuts");
2487 fhNClustersITS[i] =
dynamic_cast<TH1F*
> (gDirectory->Get(
"nClustersITS" ));
2488 fhNClustersTPC[i] =
dynamic_cast<TH1F*
> (gDirectory->Get(
"nClustersTPC" ));
2490 fhNCrossedRowsTPC[i] =
dynamic_cast<TH1F*
> (gDirectory->Get(
"nCrossedRowsTPC" ));
2498 fhC11[i] =
dynamic_cast<TH1F*
> (gDirectory->Get(
"covMatrixDiagonal11"));
2499 fhC22[i] =
dynamic_cast<TH1F*
> (gDirectory->Get(
"covMatrixDiagonal22"));
2500 fhC33[i] =
dynamic_cast<TH1F*
> (gDirectory->Get(
"covMatrixDiagonal33"));
2501 fhC44[i] =
dynamic_cast<TH1F*
> (gDirectory->Get(
"covMatrixDiagonal44"));
2502 fhC55[i] =
dynamic_cast<TH1F*
> (gDirectory->Get(
"covMatrixDiagonal55"));
2506 fhDXY[i] =
dynamic_cast<TH1F*
> (gDirectory->Get(
"dXY" ));
2507 fhDZ[i] =
dynamic_cast<TH1F*
> (gDirectory->Get(
"dZ" ));
2508 fhDXYDZ[i] =
dynamic_cast<TH1F*
> (gDirectory->Get(
"dXYDZ"));
2509 fhDXYvsDZ[i] =
dynamic_cast<TH2F*
> (gDirectory->Get(
"dXYvsDZ"));
2511 fhDXYNormalized[i] =
dynamic_cast<TH1F*
> (gDirectory->Get(
"dXYNormalized" ));
2512 fhDZNormalized[i] =
dynamic_cast<TH1F*
> (gDirectory->Get(
"dZNormalized" ));
2514 fhNSigmaToVertex[i] =
dynamic_cast<TH1F*
> (gDirectory->Get(
"nSigmaToVertex"));
2516 fhPt[i] =
dynamic_cast<TH1F*
> (gDirectory->Get(
"pt"));
2517 fhEta[i] =
dynamic_cast<TH1F*
> (gDirectory->Get(
"eta"));
2518 fhTOFdistance[i] =
dynamic_cast<TH2F*
> (gDirectory->Get(
"TOFdistance"));
2520 gDirectory->cd(
"../");
2523 gDirectory->cd(
"..");
2533 AliDebug(0,
"Histograms not on - cannot save histograms!!!");
2540 gDirectory->mkdir(dir);
2541 gDirectory->cd(dir);
2543 gDirectory->mkdir(
"before_cuts");
2544 gDirectory->mkdir(
"after_cuts");
2553 for (Int_t i=0; i<2; i++) {
2555 gDirectory->cd(
"before_cuts");
2557 gDirectory->cd(
"after_cuts");
2592 gDirectory->cd(
"../");
2595 gDirectory->cd(
"../");
2603 TCanvas* canvas1 =
new TCanvas(Form(
"%s_1", GetName()),
"Track Quality Results1", 800, 800);
2604 canvas1->Divide(2, 2);
2619 canvas1->SaveAs(Form(
"%s_%s.gif", GetName(), canvas1->GetName()));
2621 TCanvas* canvas2 =
new TCanvas(Form(
"%s_2", GetName()),
"Track Quality Results2", 1200, 800);
2622 canvas2->Divide(3, 2);
2625 fhC11[0]->SetStats(kFALSE);
2630 fhC22[0]->SetStats(kFALSE);
2635 fhC33[0]->SetStats(kFALSE);
2640 fhC44[0]->SetStats(kFALSE);
2645 fhC55[0]->SetStats(kFALSE);
2654 canvas2->SaveAs(Form(
"%s_%s.gif", GetName(), canvas2->GetName()));
2656 TCanvas* canvas3 =
new TCanvas(Form(
"%s_3", GetName()),
"Track Quality Results3", 1200, 800);
2657 canvas3->Divide(3, 2);
2660 fhDXY[0]->SetStats(kFALSE);
2665 fhDZ[0]->SetStats(kFALSE);
2672 gPad->SetRightMargin(0.15);
2688 gPad->SetRightMargin(0.15);
2691 canvas3->SaveAs(Form(
"%s_%s.gif", GetName(), canvas3->GetName()));
2693 TCanvas* canvas4 =
new TCanvas(Form(
"%s_4", GetName()),
"Track Quality Results4", 800, 500);
2694 canvas4->Divide(2, 1);
2699 gPad->SetBottomMargin(0.3);
2705 gPad->SetBottomMargin(0.3);
2706 gPad->SetLeftMargin(0.3);
2709 canvas4->SaveAs(Form(
"%s_%s.gif", GetName(), canvas4->GetName()));
2761 Bool_t retval=kTRUE;
2763 if(!dist.Contains(
"pt")) {
2764 if(print)
AliError(
"string must contain \"pt\"");
2783 tmp.ReplaceAll(
"pt",
"x");
2801 tmp.ReplaceAll(
"pt",
"x");
2821 tmp.ReplaceAll(
"pt",
"x");
2840 tmp.ReplaceAll(
"pt",
"x");
2907 if (!vertices[0]->GetStatus())
2913 if (vertices[0]->IsFromVertexerZ() && vertices[0]->GetDispersion() > 0.02)
2919 Int_t multiplicityEstimate = 0;
2925 if (!spdmult)
return 0;
2928 if (TMath::Abs(spdmult->
GetEta(i)-etaCent) > etaRange)
2930 multiplicityEstimate++;
2932 return multiplicityEstimate;
2935 if (!vertices[1]->GetStatus())
2942 const Float_t maxDisplacement = 0.5;
2944 Double_t displacement = TMath::Abs(vertices[0]->GetZ() - vertices[1]->GetZ());
2945 if (displacement > maxDisplacement)
2952 float etaMin = etaCent - etaRange, etaMax = etaCent + etaRange;
2959 Int_t tracksITSTPC = 0;
2960 Int_t tracksITSSA = 0;
2961 Int_t tracksITSTPCSA_complementary = 0;
2962 Int_t trackletsITSTPC_complementary = 0;
2963 Int_t trackletsITSSA_complementary = 0;
2968 const Int_t kRejBit = BIT(15);
2969 const Int_t kSecBit = BIT(16);
2971 for(Int_t itracks=0; itracks < nESDTracks; itracks++) {
2972 if (!esd->
GetTrack(itracks))
continue;
2973 esd->
GetTrack(itracks)->ResetBit(kSecBit|kRejBit);
2975 const Int_t maxid = nESDTracks;
2978 TBits globalBits(maxid), pureITSBits(maxid);
2988 for(Int_t itracks = 0; itracks < nESDTracks; itracks++) {
2990 if (!track)
continue;
2994 track->SetBit(kSecBit);
3013 globalBits.SetBitNumber(itracks);
3015 else track->SetBit(kSecBit);
3017 else track->SetBit(kRejBit);
3023 tracksITSTPCSA_complementary++;
3024 globalBits.SetBitNumber(itracks);
3026 else track->SetBit(kSecBit);
3028 else track->SetBit(kRejBit);
3036 pureITSBits.SetBitNumber(itracks);
3038 else track->SetBit(kSecBit);
3040 else track->SetBit(kRejBit);
3049 if (TMath::Abs(spdmult->
GetEta(i)-etaCent) > etaRange)
continue;
3052 Int_t id1, id2, id3, id4;
3057 if ( ( id1 != id2 && id1 >= 0 && id2 >= 0 ) || ( id3 != id4 && id3 >= 0 && id4 >= 0 ) )
continue;
3066 Int_t bUsedInGlobal(-1);
3067 if ( id1 != -1 ) bUsedInGlobal = globalBits.TestBitNumber(id1) ? id1 : -1;
3068 else if ( id2 != -1) bUsedInGlobal = globalBits.TestBitNumber(id2) ? id2 : -1;
3069 Int_t bUsedInPureITS(-1);
3070 if ( id3 != -1 ) bUsedInPureITS = pureITSBits.TestBitNumber(id3) ? id3 : -1;
3071 else if ( id4 != -1) bUsedInPureITS = pureITSBits.TestBitNumber(id4) ? id4 : -1;
3081 if ( ( tr_global && !tr_global->TestBit ( kSecBit ) ) && ( tr_global && tr_global->TestBit ( kRejBit ) ) ) {
3082 globalBits.SetBitNumber( bUsedInGlobal );
3083 ++trackletsITSTPC_complementary;
3086 if ( bUsedInGlobal < 0 ) ++trackletsITSTPC_complementary;
3090 if ( ( tr_itssa && !tr_itssa->TestBit ( kSecBit ) ) && ( tr_itssa && tr_itssa->TestBit ( kRejBit ) ) ) {
3091 pureITSBits.SetBitNumber( bUsedInPureITS );
3092 ++trackletsITSSA_complementary;
3095 if ( bUsedInPureITS < 0 ) ++trackletsITSSA_complementary;
3102 multiplicityEstimate = tracksITSTPC + tracksITSTPCSA_complementary + trackletsITSTPC_complementary;
3104 multiplicityEstimate = tracksITSSA + trackletsITSSA_complementary;
3106 return multiplicityEstimate;
TFormula * f1CutMaxDCAToVertexXYPtDep
pt-dep track-to-vertex cut in max absolute distance in xy-plane
Int_t fCutMinNClusterITS
min number of its clusters
Bool_t GetITSModuleIndexInfo(Int_t ilayer, Int_t &idet, Int_t &status, Float_t &xloc, Float_t &zloc) const
virtual const AliVVertex * GetPrimaryVertexTPC() const
virtual Double_t Y() const =0
Int_t CountAcceptedTracks(const AliESDEvent *const esd)
void SetMaxFractionSharedTPCClusters(Float_t max=1e10)
static AliESDtrackCuts * GetStandardITSSATrackCutsPbPb2010(Bool_t selPrimaries=kTRUE, Bool_t useForPid=kTRUE)
virtual Int_t GetNumberOfITSClusters() const
void ResetTrackParamIp(const AliExternalTrackParam *p)
Double_t GetMagneticField() const
UShort_t GetTPCnclsS(Int_t i0=0, Int_t i1=159) const
static AliESDtrackCuts * GetStandardITSPureSATrackCuts2009(Bool_t selPrimaries=kTRUE, Bool_t useForPid=kTRUE)
void SetPxRange(Float_t r1=-1e10, Float_t r2=1e10)
void SetMinNClustersTPC(Int_t min=-1)
static AliESDtrackCuts * GetStandardITSTPCTrackCuts2010(Bool_t selPrimaries=kTRUE, Int_t clusterCut=0)
void SetRequireSigmaToVertex(Bool_t b=kTRUE)
Int_t fCutMaxChi2TPCConstrainedVsGlobalVertexType
vertex type for max chi2 TPC track constrained with vtx vs. global track (can be configured to accept...
void SetPyRange(Float_t r1=-1e10, Float_t r2=1e10)
UShort_t GetTPCclusters(Int_t *idx) const
Float_t fCutMaxRel1PtUncertainty
max relative uncertainty of 1/pt
const AliExternalTrackParam * GetInnerParam() const
void SetMinDCAToVertexXY(Float_t dist=0.)
virtual void GetImpactParameters(Float_t[], Float_t[]) const
Double_t GetEta(Int_t i) const
virtual Bool_t LoadHistograms(const Char_t *dir=0)
TFormula * f1CutMinDCAToVertexZPtDep
pt-dep track-to-vertex cut on min absolute distance in z-plane
TH1F * fhChi2PerClusterTPC[2]
Float_t fCutMaxC33
max cov. matrix diag. elements (res. sin(phi)^2)
Float_t fCutMinRatioCrossedRowsOverFindableClustersTPC
min ratio crossed rows / findable clusters
Bool_t fCutRequireTOFout
require TOF out
virtual void Copy(TObject &c) const
Int_t fCutMaxMissingITSPoints
max n. of missing ITS points
Float_t fCutMinNCrossedRowsTPC
min number of tpc crossed rows
virtual Bool_t PxPyPz(Double_t p[3]) const =0
TFormula * f1CutMinDCAToVertexXYPtDep
pt-dep track-to-vertex cut on min absolute distance in xy-plane
void SetMinDCAToVertexZ(Float_t dist=0.)
Float_t fRapMax
definition of the range of the y
Bool_t fCutRequireITSpureSA
require ITS pure standalone tracks (found using all ITS clusters)
TH1F * fhDXYDZ[2]
absolute distance sqrt(dxy**2 + dz**2) to vertex; if 2D cut is set, normalized to given values ...
Float_t fPtMax
definition of the range of the Pt
void SetMaxDCAToVertexZPtDep(const char *dist="")
void SetMaxRel1PtUncertainty(Float_t max=1e10)
TH1F * fhNSharedClustersTPC[2]
void SetRequireTPCStandAlone(Bool_t b=kFALSE)
void SetMaxDCAToVertexXYPtDep(const char *dist="")
void SetFlagCutTOFdistance(Bool_t flagTOFcut)
void SetMaxChi2TPCConstrainedGlobal(Float_t max=1e10)
Bool_t FillTPCOnlyTrack(AliESDtrack &track)
Float_t fCutMaxChi2PerClusterTPC
max tpc fit chi2 per tpc cluster
void SetRequireITSPid(Bool_t b=kFALSE)
TFormula * f1CutMaxDCAToVertexZPtDep
pt-dep track-to-vertex cut in max absolute distance in z-plane
TH2F * fhCutCorrelation
2d statistics plot
TH1F * fhChi2TPCConstrainedVsGlobal[2]
TH1F * fhDXYNormalized[2]
void SetRequireTPCRefit(Bool_t b=kFALSE)
void SetMaxChi2PerClusterITS(Float_t max=1e10)
void SetRequireITSStandAlone(Bool_t b=kFALSE)
Bool_t HasPointOnITSLayer(Int_t i) const
Float_t fEtaMax
definition of the range of the eta
Float_t fCutMaxC55
max cov. matrix diag. elements (res. 1/pt^2)
Float_t fCutMaxChi2PerClusterITS
max its fit chi2 per its cluster
Bool_t fCutRequireITSRefit
require ITS refit
Double_t GetTOFsignalDz() const
Float_t fDeadZoneWidth
width of the TPC dead zone (missing pads + PRF +ExB)
void DefineHistograms(Int_t color=1)
Float_t fCutGeoNcrNclLength
cut on the geometical length condition Ngeom(cm)>cutGeoNcrNclLength default=130
TH1F * fhNCrossedRowsTPC[2]
#define AliInfoClass(message)
virtual Bool_t GetStatus() const
#define AliWarning(message)
Char_t GetITSclusters(Int_t *idx) const
virtual UShort_t GetTPCNcls() const
Int_t GetKinkIndex(Int_t i) const
Bool_t CheckITSClusterRequirement(ITSClusterRequirement req, Bool_t clusterL1, Bool_t clusterL2)
const AliESDVertex * GetPrimaryVertexTracks() const
Float_t fCutMaxC22
max cov. matrix diag. elements (res. z^2)
TString fCutMaxDCAToVertexZPtDep
pt-dep track-to-vertex cut in max absolute distance in z-plane
Bool_t fCutRequireITSPid
require ITS pid
Float_t fPyMax
definition of the range of the Py
void SetCutGeoNcrNcl(Float_t deadZoneWidth=2, Float_t cutGeoNcrNclLength=130, Float_t cutGeoNcrNclGeom1Pt=1.5, Float_t cutGeoNcrNclFractionNcr=0.9, Float_t cutGeoNcrNclFractionNcl=0.70)
void SetMaxChi2PerClusterTPC(Float_t max=1e10)
void CopyFromVTrack(const AliVTrack *vTrack)
void SetMaxChi2TPCConstrainedGlobalVertexType(Int_t vertexType=kVertexTracks|kVertexSPD)
Float_t fCutMaxFractionSharedTPCClusters
Maximum fraction of shared clusters in TPC.
static Float_t GetSigmaToVertex(const AliESDtrack *const esdTrack)
static AliESDtrackCuts * GetStandardITSTPCTrackCuts2009(Bool_t selPrimaries=kTRUE)
#define AliErrorClass(message)
void SetMinNClustersTPCPtDep(TFormula *f1=0x0, Float_t ptmax=0.)
Class for handling of ESD track cuts.
void SetPzRange(Float_t r1=-1e10, Float_t r2=1e10)
UShort_t GetTPCNclsIter1() const
void SetMaxDCAToVertexXY(Float_t dist=1e10)
#define AliDebugClass(logLevel, message)
const AliESDVertex * GetPrimaryVertexTPC() const
static void EnableNeededBranches(TTree *tree)
static AliESDtrackCuts * GetStandardITSSATrackCuts2009(Bool_t selPrimaries=kTRUE, Bool_t useForPid=kTRUE)
Bool_t IsOn(ULong64_t mask) const
virtual AliVParticle * GetTrack(Int_t i) const =0
void SetPRange(Float_t r1=0, Float_t r2=1e10)
TString fCutMinDCAToVertexZPtDep
pt-dep track-to-vertex cut on min absolute distance in z-plane
Double_t GetSigned1Pt() const
Bool_t fCutRequireTPCRefit
require TPC refit
Bool_t GetTrackletTrackIDs(Int_t i, Int_t mode, Int_t &spd1, Int_t &spd2) const
static Bool_t IsTrackInDistortedTpcRegion(const AliESDtrack *esdTrack)
Double_t GetTPCchi2Iter1() const
static AliESDtrackCuts * GetStandardITSPureSATrackCuts2010(Bool_t selPrimaries=kTRUE, Bool_t useForPid=kTRUE)
Bool_t fFlagCutTOFdistance
cut on TOFdistance? –> yes by default!
Bool_t fCutAcceptSharedTPCClusters
accepting shared clusters in TPC?
Bool_t fCutAcceptKinkDaughters
accepting kink daughters?
TH1F * fhCutStatistics
statistics of what cuts the tracks did not survive
void SetRequireStandardTOFmatchCuts()
Float_t fCutMaxPtDepNClustersTPC
maximum pt for pt dependend TPC cluster cut. For pt=>ptmax NClusterMin = f1CutMinNClustersTPCPtDep->E...
Double_t GetITSchi2() const
Float_t GetTPCCrossedRows() const
Double_t GetChi2TPCConstrainedVsGlobal(const AliESDVertex *vtx) const
Bool_t fCutDCAToVertex2D
if true a 2D DCA cut is made. Tracks are accepted if sqrt((DCAXY / fCutMaxDCAToVertexXY)^2 + (DCAZ / ...
Bool_t fCutRequireTPCStandAlone
require TPC standalone tracks
Float_t fCutTOFdistance
value of the cut on TOFdistance
TH1F * fhChi2PerClusterITS[2]
Float_t fCutMaxC44
max cov. matrix diag. elements (res. tan(theta_dip)^2)
void SetMinRatioCrossedRowsOverFindableClustersTPC(Float_t min=-1)
static Int_t GetReferenceMultiplicity(const AliESDEvent *esd, Bool_t tpcOnly)
Bool_t CheckPtDepDCA(TString dist, Bool_t print=kFALSE) const
TH1F * fhRatioCrossedRowsOverFindableClustersTPC[2]
static AliESDtrackCuts * GetStandardITSTPCTrackCuts2011(Bool_t selPrimaries=kTRUE, Int_t clusterCut=1)
void SetRequireITSRefit(Bool_t b=kFALSE)
Float_t fPzMax
definition of the range of the Pz
void SetMaxNOfMissingITSPoints(Int_t max=6)
static AliESDtrackCuts * GetStandardITSTPCTrackCuts2015PbPb(Bool_t selPrimaries=kTRUE, Int_t clusterCut=1, Bool_t cutAcceptanceEdges=kTRUE, Bool_t removeDistortedRegions=kFALSE)
#define AliWarningClass(message)
Bool_t fHistogramsOn
histograms on/off
TH2F * fhDXYvsDZNormalized[2]
TH2F * fhTOFdistance[2]
TOF signal distance dx vs dz.
AliMultiplicity * GetMultiplicity() const
void SetCutOutDistortedRegionsTPC(Bool_t cutOutDistortedRegionTPC=kTRUE)
Base class for analysis cuts.
Double_t GetTPCchi2() const
Float_t fCutMinLengthActiveVolumeTPC
mininum length (in cm) over which the track is sampled in the active volume of the TPC (outside bound...
ULong64_t GetStatus() const
void SetAcceptKinkDaughters(Bool_t b=kTRUE)
static const Char_t * fgkCutNames[kNCuts]
! names of cuts (for internal use)
Bool_t GetPxPyPz(Double_t *p) const
static Char_t fgBeamTypeFlag
-1 –> no check done on the beam type yet
void SetPtDepDCACuts(Double_t pt)
TH1F * fhPt[2]
pt of esd tracks
Double_t GetMass(Bool_t tpcOnly=kFALSE) const
void SetHistogramsOn(Bool_t b=kFALSE)
TH1F * fhNSigmaToVertex[2]
void SetMaxDCAToVertexZ(Float_t dist=1e10)
ITSClusterRequirement fCutClusterRequirementITS[3]
detailed ITS cluster requirements for (SPD, SDD, SSD)
Bool_t fCutOutDistortedRegionTPC
flag if distorted regions in the TPC should be cut out
void SetEtaRange(Float_t r1=-1e10, Float_t r2=1e10)
static AliESDtrackCuts * GetStandardTPCOnlyTrackCuts()
Float_t fCutMaxC11
max cov. matrix diag. elements (res. y^2)
static Double_t GetLengthInActiveZone(const AliExternalTrackParam *paramT, Double_t deltaY, Double_t deltaZ, Double_t bz, Double_t exbPhi=0, TTreeSRedirector *pcstream=0)
void SetMinDCAToVertexXYPtDep(const char *dist="")
static AliESDtrackCuts * fgMultEstTrackCuts[kNMultEstTrackCuts]
! track cuts used for the multiplicity estimate
#define AliFatal(message)
virtual Double_t Pt() const =0
Float_t fCutMaxChi2TPCConstrainedVsGlobal
max chi2 TPC track constrained with vtx vs. global track
virtual Long64_t Merge(TCollection *list)
virtual Bool_t IsSelected(TObject *obj)
Double_t GetTOFsignalDx() const
Double_t GetChi2TPCConstrainedVsGlobal() const
Golden chi2.
void SetAcceptSharedTPCClusters(Bool_t b=kTRUE)
TString fCutMinDCAToVertexXYPtDep
pt-dep track-to-vertex cut on min absolute distance in xy-plane
Bool_t fCutRequireITSStandAlone
require ITS standalone tracks (remove pure SA)
#define AliDebug(logLevel, message)
void SetESDEvent(const AliESDEvent *evt)
Float_t fCutMaxDCAToVertexZ
track-to-vertex cut in max absolute distance in z-plane
TH1F * fhEta[2]
eta of esd tracks
const char * GetBeamType() const
TF1 * ffDTheoretical
theoretical distance to vertex normalized (2d gauss)
Float_t fCutGeoNcrNclFractionNcr
relative fraction cut Ncr condition Ncr>cutGeoNcrNclFractionNcr*fCutGeoNcrNclLength ...
Float_t fCutMaxDCAToVertexXY
track-to-vertex cut in max absolute distance in xy-plane
void SetMinDCAToVertexZPtDep(const char *dist="")
UShort_t GetTPCNclsF() const
Bool_t AcceptVTrack(const AliVTrack *vTrack)
TH1F * fhNMissingITSPoints[2]
number of missing ITS points
TString fCutMaxDCAToVertexXYPtDep
pt-dep track-to-vertex cut in max absolute distance in xy-plane
const AliESDVertex * GetPrimaryVertexSPD() const
TObjArray * GetAcceptedTracks(const AliESDEvent *esd, Bool_t bTPC=kFALSE)
AliESDtrackCuts(const Char_t *name="AliESDtrackCuts", const Char_t *title="")
virtual void GetImpactParameters(Float_t &xy, Float_t &z) const
AliAODVertex * GetProdVertex() const
static AliESDtrackCuts * GetStandardITSSATrackCuts2010(Bool_t selPrimaries=kTRUE, Bool_t useForPid=kTRUE)
TFormula * f1CutMinNClustersTPCPtDep
pt dependent tpc clusters cut
Int_t GetNumberOfTracks() const
AliESDtrack * GetTrack(Int_t i) const
void SetDCAToVertex2D(Bool_t b=kFALSE)
void SetPtRange(Float_t r1=0, Float_t r2=1e10)
virtual ~AliESDtrackCuts()
Float_t fPMax
definition of the range of the P
static AliESDtrack * GetTPCOnlyTrackFromVEvent(const AliVEvent *vEvent, Int_t iTrack)
void SetMinNCrossedRowsTPC(Float_t min=-1)
virtual Bool_t GetStatus() const
void SetRequireITSPureStandAlone(Bool_t b=kFALSE)
#define AliError(message)
Float_t fCutGeoNcrNclFractionNcl
ralative fraction cut Ncr condition Ncl>cutGeoNcrNclFractionNcl
static Float_t GetSigmaToVertexVTrack(const AliVTrack *const vTrack)
void SetCutTOFdistance(Float_t cut)
virtual Double_t Eta() const =0
void SaveHistograms(const Char_t *dir=0)
TH1F * fhRel1PtUncertainty[2]
rel. uncertainty of 1/pt
Bool_t AcceptTrack(const AliESDtrack *esdTrack)
AliESDtrackCuts & operator=(const AliESDtrackCuts &c)
TH1F * fhNClustersForITSPID[2]
number of points in SDD+SSD (ITS PID selection)
UChar_t GetITSClusterMap() const
Float_t fCutMinDCAToVertexXY
track-to-vertex cut on min absolute distance in xy-plane
virtual const AliVEvent * GetEvent() const
void SetRapRange(Float_t r1=-1e10, Float_t r2=1e10)
void SetMaxCovDiagonalElements(Float_t c1=1e10, Float_t c2=1e10, Float_t c3=1e10, Float_t c4=1e10, Float_t c5=1e10)
Bool_t fCutSigmaToVertexRequired
cut track if sigma from track-to-vertex could not be calculated
Float_t fCutGeoNcrNclGeom1Pt
1/pt dependence slope cutGeoNcrNclLength:=fCutGeoNcrNclLength-abs(1/pt)^fCutGeoNcrNclGeom1Pt ...
static AliESDtrackCuts * GetMultEstTrackCuts(MultEstTrackCuts cut)
const AliESDEvent * GetESDEvent() const
virtual Float_t GetTPCCrossedRows() const
AOD track implementation of AliVTrack.
void SetMaxNsigmaToVertex(Float_t sigma=1e10)
void SetRequireTOFout(Bool_t b=kFALSE)
Float_t fCutMinDCAToVertexZ
track-to-vertex cut on min absolute distance in z-plane
virtual ULong64_t GetStatus() const =0
UShort_t GetTPCncls(Int_t row0=0, Int_t row1=159) const
Int_t fCutMinNClusterTPC
min number of tpc clusters
void SetMinNClustersITS(Int_t min=-1)
static AliESDtrack * GetTPCOnlyTrack(const AliESDEvent *esd, Int_t iTrack)
static AliESDtrackCuts * GetStandardV0DaughterCuts()
void SetClusterRequirementITS(Detector det, ITSClusterRequirement req=kOff)
void GetExternalCovariance(Double_t cov[15]) const
virtual UChar_t GetITSClusterMap() const =0
virtual Int_t GetNumberOfTracklets() const
Float_t fPxMax
definition of the range of the Px
Float_t fCutNsigmaToVertex
max number of estimated sigma from track-to-vertex