42 #include "TMCProcess.h" 43 #include "TParticle.h" 48 #include "AliMCEvent.h" 49 #include "AliESDEvent.h" 50 #include "AliAODEvent.h" 51 #include "AliVParticle.h" 52 #include "AliVVZERO.h" 53 #include "AliMCParticle.h" 54 #include "AliESDkink.h" 56 #include "AliESDtrack.h" 57 #include "AliESDMuonTrack.h" 58 #include "AliMultiplicity.h" 59 #include "AliMultSelection.h" 60 #include "AliAODTrack.h" 61 #include "AliAODTracklets.h" 66 #include "AliESDpid.h" 67 #include "AliESDPmdTrack.h" 68 #include "AliESDUtils.h" 71 #include "AliKFParticle.h" 72 #include "AliESDVZERO.h" 74 #include "AliAnalysisManager.h" 75 #include "AliPIDResponse.h" 77 #include "AliNanoAODHeader.h" 78 #include "AliNanoAODTrack.h" 89 fAliESDtrackCuts(NULL),
93 fCutMChasTrackReferences(kFALSE),
94 fCutMCprocessType(kFALSE),
95 fMCprocessType(kPNoProcess),
98 fCutMCfirstMotherPID(kFALSE),
100 fIgnoreSignInMCPID(kFALSE),
101 fCutMCisPrimary(kFALSE),
102 fRequireTransportBitForPrimaries(kTRUE),
103 fMCisPrimary(kFALSE),
104 fRequireCharge(kFALSE),
106 fCutSPDtrackletDeltaPhi(kFALSE),
107 fSPDtrackletDeltaPhiMax(FLT_MAX),
108 fSPDtrackletDeltaPhiMin(-FLT_MAX),
109 fIgnoreTPCzRange(kFALSE),
110 fIgnoreTPCzRangeMax(FLT_MAX),
111 fIgnoreTPCzRangeMin(-FLT_MAX),
112 fCutChi2PerClusterTPC(kFALSE),
113 fMaxChi2PerClusterTPC(FLT_MAX),
114 fMinChi2PerClusterTPC(-FLT_MAX),
115 fCutFracSharedTPCCluster(kFALSE),
116 fMaxFracSharedTPCCluster(FLT_MAX),
117 fCutFracSharedITSCluster(kFALSE),
118 fMaxFracSharedITSCluster(FLT_MAX),
119 fCutCrossedTPCRows(kFALSE),
121 fMinCrossedRowsOverFindableClusters(2.),
122 fCutGoldenChi2(kFALSE),
123 fMaxGoldenChi2(FLT_MAX),
124 fRequireTOFSignal(kFALSE),
125 fCutNClustersTPC(kFALSE),
126 fNClustersTPCMax(INT_MAX),
127 fNClustersTPCMin(INT_MIN),
128 fCutNClustersITS(kFALSE),
129 fNClustersITSMax(INT_MAX),
130 fNClustersITSMin(INT_MIN),
131 fCutChi2PerClusterITS(kFALSE),
132 fCutITSClusterGlobal(kFALSE),
133 fMaxChi2PerClusterITS(FLT_MAX),
134 fUseAODFilterBit(kTRUE),
136 fCutDCAToVertexXY(kFALSE),
137 fCutDCAToVertexXYPtDepAOD(kFALSE),
138 fCutDCAToVertexXYAOD(kFALSE),
139 fMaxDCAxyAOD(FLT_MAX),
140 fCutDCAToVertexZAOD(kFALSE),
141 fMaxDCAzAOD(FLT_MAX),
142 fCutDCAToVertexZ(kFALSE),
143 fCutMinimalTPCdedx(kFALSE),
145 fCutTPCSecbound(kFALSE),
146 fCutTPCSecboundMinpt(0.2),
147 fCutTPCSecboundVar(kFALSE),
150 fLinearizeVZEROresponse(kFALSE),
151 fCentralityPercentileMin(0.),
152 fCentralityPercentileMax(5.),
158 fCutPmdNcell(kFALSE),
160 fMinKinkAngle(TMath::DegToRad()*2.),
161 fMinKinkRadius(130.),
162 fMaxKinkRadius(200.),
165 fMinKinkInvMassKmu(0.),
166 fMaxKinkInvMassKmu(0.6),
167 fForceTPCstandalone(kFALSE),
168 fRequireKinkDaughters(kFALSE),
179 fTrackLabel(INT_MIN),
185 fBayesianResponse(NULL),
189 fParticleID(AliPID::kUnknown),
190 fParticleProbability(.9),
191 fAllowTOFmismatchFlag(kFALSE),
192 fRequireStrictTOFTPCagreement(kFALSE),
193 fCutRejectElectronsWithTPCpid(kFALSE),
197 fVZEROgainEqualization(NULL),
198 fVZEROgainEqualizationCen(NULL),
199 fApplyRecentering(kFALSE),
200 fVZEROgainEqualizationPerRing(kFALSE),
208 fPurityFunctionsFile(0),
209 fPurityFunctionsList(0),
210 fCutITSclusterShared(kFALSE),
211 fMaxITSclusterShared(0),
223 fBayesianResponse->SetNewTrackParam();
224 for(
Int_t i(0); i < 4; i++) {
228 for(
Int_t i(0); i < 8; i++) fUseVZERORing[i] = kTRUE;
230 for(
Int_t i(0) ; i < 180; i++) {
231 fPurityFunction[i]=NULL;
234 fPhiCutLow =
new TF1(
"fPhiCutLow",
"0.1/x/x+pi/18.0-0.025", 0, 100);
235 fPhiCutHigh =
new TF1(
"fPhiCutHigh",
"0.12/x+pi/18.0+0.035", 0, 100);
241 fAliESDtrackCuts(NULL),
242 fMuonTrackCuts(NULL),
245 fCutMChasTrackReferences(kFALSE),
246 fCutMCprocessType(kFALSE),
247 fMCprocessType(kPNoProcess),
250 fCutMCfirstMotherPID(kFALSE),
251 fMCfirstMotherPID(0),
252 fIgnoreSignInMCPID(kFALSE),
253 fCutMCisPrimary(kFALSE),
254 fRequireTransportBitForPrimaries(kTRUE),
255 fMCisPrimary(kFALSE),
256 fRequireCharge(kFALSE),
258 fCutSPDtrackletDeltaPhi(kFALSE),
259 fSPDtrackletDeltaPhiMax(FLT_MAX),
260 fSPDtrackletDeltaPhiMin(-FLT_MAX),
261 fIgnoreTPCzRange(kFALSE),
262 fIgnoreTPCzRangeMax(FLT_MAX),
263 fIgnoreTPCzRangeMin(-FLT_MAX),
264 fCutChi2PerClusterTPC(kFALSE),
265 fMaxChi2PerClusterTPC(FLT_MAX),
266 fMinChi2PerClusterTPC(-FLT_MAX),
267 fCutFracSharedTPCCluster(kFALSE),
268 fMaxFracSharedTPCCluster(FLT_MAX),
269 fCutFracSharedITSCluster(kFALSE),
270 fMaxFracSharedITSCluster(FLT_MAX),
271 fCutCrossedTPCRows(kFALSE),
273 fMinCrossedRowsOverFindableClusters(2.),
274 fCutGoldenChi2(kFALSE),
275 fMaxGoldenChi2(FLT_MAX),
276 fRequireTOFSignal(kFALSE),
277 fCutNClustersTPC(kFALSE),
278 fNClustersTPCMax(INT_MAX),
279 fNClustersTPCMin(INT_MIN),
280 fCutNClustersITS(kFALSE),
281 fNClustersITSMax(INT_MAX),
282 fNClustersITSMin(INT_MIN),
283 fCutChi2PerClusterITS(kFALSE),
284 fCutITSClusterGlobal(kFALSE),
285 fMaxChi2PerClusterITS(FLT_MAX),
286 fUseAODFilterBit(kTRUE),
288 fCutDCAToVertexXY(kFALSE),
289 fCutDCAToVertexXYPtDepAOD(kFALSE),
290 fCutDCAToVertexXYAOD(kFALSE),
291 fMaxDCAxyAOD(FLT_MAX),
292 fCutDCAToVertexZAOD(kFALSE),
293 fMaxDCAzAOD(FLT_MAX),
294 fCutDCAToVertexZ(kFALSE),
295 fCutMinimalTPCdedx(kFALSE),
297 fCutTPCSecbound(kFALSE),
298 fCutTPCSecboundMinpt(0.2),
299 fCutTPCSecboundVar(kFALSE),
302 fLinearizeVZEROresponse(kFALSE),
303 fCentralityPercentileMin(0.),
304 fCentralityPercentileMax(5.),
310 fCutPmdNcell(kFALSE),
312 fMinKinkAngle(TMath::DegToRad()*2.),
313 fMinKinkRadius(130.),
314 fMaxKinkRadius(200.),
317 fMinKinkInvMassKmu(0.0),
318 fMaxKinkInvMassKmu(0.6),
319 fForceTPCstandalone(kFALSE),
320 fRequireKinkDaughters(kFALSE),
331 fTrackLabel(INT_MIN),
337 fBayesianResponse(NULL),
341 fParticleID(AliPID::kUnknown),
342 fParticleProbability(.9),
343 fAllowTOFmismatchFlag(kFALSE),
344 fRequireStrictTOFTPCagreement(kFALSE),
345 fCutRejectElectronsWithTPCpid(kFALSE),
349 fVZEROgainEqualization(NULL),
350 fVZEROgainEqualizationCen(NULL),
351 fApplyRecentering(kFALSE),
352 fVZEROgainEqualizationPerRing(kFALSE),
360 fPurityFunctionsFile(0),
361 fPurityFunctionsList(0),
362 fCutITSclusterShared(kFALSE),
363 fMaxITSclusterShared(0),
369 SetTitle(
"AliFlowTrackCuts");
370 fESDpid.GetTPCResponse().SetBetheBlochParameters( 0.0283086,
379 for(
Int_t i(0); i < 4; i++) {
385 for(
int i=0;i<180;i++){
389 fPhiCutLow =
new TF1(
"fPhiCutLow",
"0.1/x/x+pi/18.0-0.025", 0, 100);
390 fPhiCutHigh =
new TF1(
"fPhiCutHigh",
"0.12/x+pi/18.0+0.035", 0, 100);
537 fBayesianResponse->SetNewTrackParam();
543 for(
Int_t i(0); i < 4; i++) {
549 for(
Int_t i(0); i < 180; i++) {
553 fPhiCutLow =
new TF1(
"fPhiCutLow",
"0.1/x/x+pi/18.0-0.025", 0, 100);
554 fPhiCutHigh =
new TF1(
"fPhiCutHigh",
"0.12/x+pi/18.0+0.035", 0, 100);
561 if (
this==&that)
return *
this;
690 #if ROOT_VERSION_CODE < ROOT_VERSION(5,99,0) 699 for(
Int_t i(0); i < 4; i++) {
715 fPhiCutLow =
new TF1(
"fPhiCutLow",
"0.1/x/x+pi/18.0-0.025", 0, 100);
716 fPhiCutHigh =
new TF1(
"fPhiCutHigh",
"0.12/x+pi/18.0+0.035", 0, 100);
729 if (
fQA) {
fQA->SetOwner();
fQA->Delete();
delete fQA; }
758 for(
int i=0;i<180;i++){
782 AliVEventHandler* inputHandler = man->GetInputEventHandler();
783 if(inputHandler)
fPIDResponse=inputHandler->GetPIDResponse();
797 fESDpid.SetTOFResponse(myESD,AliESDpid::kTOF_T0);
802 if(myAOD->GetTOFHeader()){
803 fESDpid.SetTOFResponse(myAOD,AliESDpid::kTOF_T0);
824 fESDpid.GetTPCResponse().SetBetheBlochParameters( 2.15898e+00/50.,
836 AliVParticle* vparticle =
dynamic_cast<AliVParticle*
>(obj);
845 AliMultiplicity* tracklets =
dynamic_cast<AliMultiplicity*
>(obj);
846 if (tracklets)
return PassesCuts(tracklets,
id);
847 AliAODTracklets* trkletAOD =
dynamic_cast<AliAODTracklets*
>(obj);
848 if (trkletAOD)
return PassesCuts(trkletAOD,
id);
849 AliESDPmdTrack* pmdtrack =
dynamic_cast<AliESDPmdTrack*
>(obj);
851 AliVVZERO* vvzero =
dynamic_cast<AliVVZERO*
>(obj);
853 AliESDkink* kink =
dynamic_cast<AliESDkink*
>(obj);
865 AliVParticle* vparticle =
dynamic_cast<AliVParticle*
>(obj);
870 AliMultiplicity* tracklets =
dynamic_cast<AliMultiplicity*
>(obj);
873 Int_t label0 = tracklets->GetLabel(
id,0);
874 Int_t label1 = tracklets->GetLabel(
id,1);
876 if (label0!=label1) label = -666;
897 if (
id<0)
return kFALSE;
905 if (
fCutEta) {
if ( fTrackEta < fEtaMin || fTrackEta >=
fEtaMax )
return kFALSE;}
906 if (
fCutPhi) {
if ( fTrackPhi < fPhiMin || fTrackPhi >=
fPhiMax )
return kFALSE;}
911 Int_t label0 = tracklet->GetLabel(
id,0);
912 Int_t label1 = tracklet->GetLabel(
id,1);
914 fTrackLabel = (label0==label1)?tracklet->GetLabel(
id,1):-1;
928 if (
id<0)
return kFALSE;
935 fTrackEta = -1.*TMath::Log(TMath::Tan(tracklet->GetTheta(
id)/2.));
937 if (
fCutEta) {
if ( fTrackEta < fEtaMin || fTrackEta >=
fEtaMax )
return kFALSE;}
938 if (
fCutPhi) {
if ( fTrackPhi < fPhiMin || fTrackPhi >=
fPhiMax )
return kFALSE;}
943 Int_t label0 = tracklet->GetLabel(
id,0);
944 Int_t label1 = tracklet->GetLabel(
id,1);
946 fTrackLabel = (label0==label1)?tracklet->GetLabel(
id,1):-1;
958 if (!mcEvent)
return kFALSE;
959 if (label<0)
return kFALSE;
960 AliMCParticle* mcparticle =
static_cast<AliMCParticle*
>(mcEvent->GetTrack(label));
961 if (!mcparticle) {AliError(
"no MC track");
return kFALSE;}
969 Int_t pdgCode = mcparticle->PdgCode();
972 if (TMath::Abs(
fMCPID) != TMath::Abs(pdgCode))
return kFALSE;
976 if (
fMCPID != pdgCode)
return kFALSE;
982 TParticle* tparticle=mcparticle->Particle();
983 Int_t firstMotherLabel = 0;
984 if (tparticle) { firstMotherLabel = tparticle->GetFirstMother(); }
985 AliVParticle* firstMotherParticle = mcEvent->GetTrack(firstMotherLabel);
986 Int_t pdgcodeFirstMother = 0;
987 if (firstMotherParticle) { pdgcodeFirstMother = firstMotherParticle->PdgCode(); }
992 TParticle* particle = mcparticle->Particle();
993 Int_t processID = particle->GetUniqueID();
998 if (mcparticle->GetNumberOfTrackReferences()<1)
return kFALSE;
1021 fV0 =
const_cast<AliESDv0*
>(v0);
1026 if (!v0->GetOnFlyStatus())
return kFALSE;
1027 const AliExternalTrackParam *negHelix=v0->GetParamN();
1028 const AliExternalTrackParam *posHelix=v0->GetParamP();
1029 AliVParticle *v0tracks[2];
1030 v0tracks[0] =
fEvent->GetTrack(v0->GetNindex());
1031 v0tracks[1] =
fEvent->GetTrack(v0->GetPindex());
1032 if( v0tracks[1]->Charge() < 0)
1034 v0tracks[1] =
fEvent->GetTrack(v0->GetNindex());
1035 v0tracks[0] =
fEvent->GetTrack(v0->GetPindex());
1036 negHelix=v0->GetParamP();
1037 posHelix=v0->GetParamN();
1040 int KalmanPidPairs[4][2] =
1051 AliKFParticle v0trackKFneg(*(negHelix),KalmanPidPairs[
id][0]);
1052 AliKFParticle v0trackKFpos(*(posHelix),KalmanPidPairs[
id][1]);
1053 AliKFParticle v0particleRefit;
1054 v0particleRefit += v0trackKFneg;
1055 v0particleRefit += v0trackKFpos;
1057 v0particleRefit.GetMass(
fTrackMass,invMassErr);
1060 fTrackPt = v0particleRefit.GetPt();
1061 fTrackPhi = TMath::Pi()+v0particleRefit.GetPhi();
1070 if ( v0tracks[0]->Charge() == v0tracks[1]->Charge() ) pass=kFALSE;
1071 if ( v0tracks[0]->Pt()<0.15 || v0tracks[1]->Pt()<0.15 ) pass=kFALSE;
1083 fKink=
const_cast<AliESDkink*
>(kink);
1087 Float_t kinkAngle = kink->GetAngle(2);
1089 Double_t kinkRadius = kink->GetR();
1090 if (kinkRadius<fMinKinkRadius || kinkRadius>
fMaxKinkRadius) pass = kFALSE;
1093 const TVector3 motherMfromKink(kink->GetMotherP());
1094 const TVector3 daughterMfromKink(kink->GetDaughterP());
1096 if ( qt < fMinKinkQt || qt >
fMaxKinkQt) pass = kFALSE;
1099 Float_t energyDaughterMu = TMath::Sqrt( daughterMfromKink.Mag()*daughterMfromKink.Mag()+
1100 0.105658*0.105658 );
1101 Float_t p1XM = motherMfromKink.Px();
1102 Float_t p1YM = motherMfromKink.Py();
1103 Float_t p1ZM = motherMfromKink.Pz();
1104 Float_t p2XM = daughterMfromKink.Px();
1105 Float_t p2YM = daughterMfromKink.Py();
1106 Float_t p2ZM = daughterMfromKink.Pz();
1107 Float_t p3Daughter = TMath::Sqrt( ((p1XM-p2XM)*(p1XM-p2XM))+((p1YM-p2YM)*(p1YM-p2YM))+
1108 ((p1ZM-p2ZM)*(p1ZM-p2ZM)) );
1109 Double_t invariantMassKmu = TMath::Sqrt( (energyDaughterMu+p3Daughter)*(energyDaughterMu+p3Daughter)-
1110 motherMfromKink.Mag()*motherMfromKink.Mag() );
1118 if (pass)
QAafter(13)->Fill(qt);
1119 QAbefore(14)->Fill(invariantMassKmu);
1120 if (pass)
QAafter(14)->Fill(invariantMassKmu);
1121 const Double_t* kinkPosition = kink->GetPosition();
1122 QAbefore(15)->Fill(kinkPosition[0],kinkPosition[1]);
1123 if (pass)
QAafter(15)->Fill(kinkPosition[0],kinkPosition[1]);
1124 QAbefore(16)->Fill(motherMfromKink.Mag(),kinkAngle*TMath::RadToDeg());
1125 if (pass)
QAafter(16)->Fill(motherMfromKink.Mag(),kinkAngle*TMath::RadToDeg());
1129 Int_t indexKinkMother = kink->GetIndex(0);
1130 AliESDtrack* motherTrack =
dynamic_cast<AliESDtrack*
>(
fEvent->GetTrack(indexKinkMother));
1131 if (!motherTrack)
return kFALSE;
1154 Bool_t isMCparticle = kFALSE;
1155 AliESDtrack* esdTrack =
dynamic_cast<AliESDtrack*
>(vparticle);
1156 AliAODTrack* aodTrack = NULL;
1157 AliNanoAODTrack* aodNanoTrack = NULL;
1168 isMCparticle = (
dynamic_cast<AliMCParticle*
>(
fTrack))!=NULL;
1169 aodTrack =
dynamic_cast<AliAODTrack*
>(vparticle);
1170 if (!aodTrack) aodNanoTrack =
dynamic_cast<AliNanoAODTrack*
>(vparticle);
1175 if (!
fTrack)
return kFALSE;
1177 if (esdTrack) esdTrack =
static_cast<AliESDtrack*
>(
fTrack);
1183 if (
fCutPt) {
if (pt < fPtMin || pt >=
fPtMax ) pass=kFALSE;}
1192 if (charge!=
fCharge) pass=kFALSE;
1200 if (esdTrack) {
if (!
PassesESDcuts(esdTrack)) { pass=kFALSE; } }
1201 if (aodTrack) {
if (!
PassesAODcuts(aodTrack,pass)) { pass=kFALSE; } }
1202 if (aodNanoTrack) {
if (!
PassesNanoAODcuts(aodNanoTrack,pass)) { pass=kFALSE; } }
1209 Int_t processID = tparticle->GetUniqueID();
1210 Int_t firstMotherLabel = tparticle->GetFirstMother();
1218 AliVParticle* firstMotherParticle =
fMCevent->GetTrack(firstMotherLabel);
1219 Int_t pdgcodeFirstMother = 0;
1220 if (firstMotherParticle) {pdgcodeFirstMother = firstMotherParticle->PdgCode();}
1223 switch (TMath::Abs(pdgcode))
1226 pdg = AliPID::kElectron + 0.5;
break;
1228 pdg = AliPID::kMuon + 0.5;
break;
1230 pdg = AliPID::kPion + 0.5;
break;
1232 pdg = AliPID::kKaon + 0.5;
break;
1236 pdg = AliPID::kUnknown + 0.5;
break;
1238 pdg = TMath::Sign(pdg,static_cast<Float_t>(pdgcode));
1241 switch (pdgcodeFirstMother)
1252 case 12:
case 14:
case 16:
1381 QAbefore(3)->Fill(p,primary?0.5:-0.5);
1382 QAbefore(4)->Fill(p,static_cast<Float_t>(processID));
1383 QAbefore(7)->Fill(p,geantCode+0.5);
1384 if (pass)
QAafter(2)->Fill(p,pdg);
1385 if (pass)
QAafter(3)->Fill(p,primary?0.5:-0.5);
1386 if (pass)
QAafter(4)->Fill(p,static_cast<Float_t>(processID));
1387 if (pass)
QAafter(7)->Fill(p,geantCode);
1400 Bool_t bHITs[6] = {kFALSE};
1402 Bool_t isSPD=kFALSE, isSDD=kFALSE, isSSD=kFALSE;
1403 for (
Int_t i=0; i<6; i++) {
1404 if(track->HasPointOnITSLayer(i)) {
1405 if(i<2) isSPD=kTRUE;
1406 if(i>2 && i<4) isSDD=kTRUE;
1407 if(i>4) isSSD=kTRUE;
1413 for (
Int_t i=0; i<6; i++) {
1414 if(bHITs[i]) ITStype = i+1;
1418 if(isSPD & !isSDD & !isSSD) ITStype = 7;
1419 if(isSPD & isSDD & !isSSD) ITStype = 8;
1420 if(isSPD & !isSDD & isSSD) ITStype = 9;
1421 if(!isSPD & isSDD & !isSSD) ITStype = 10;
1422 if(!isSPD & isSDD & isSSD) ITStype = 11;
1423 if(!isSPD & !isSDD & isSSD) ITStype = 12;
1424 if(isSPD & isSDD & isSSD) {
1425 if(bHITs[0] && !bHITs[1]) ITStype = 13;
1426 if(!bHITs[0] && bHITs[1]) ITStype = 14;
1427 if(bHITs[0] && bHITs[1]) ITStype = 15;
1438 AliNanoAODHeader * nanoHeader = (AliNanoAODHeader*)
fEvent->GetHeader();
1442 Int_t ntpccls = track->GetTPCNcls();
1451 chi2tpc = track->Chi2perNDF();
1455 Double_t dedx = track->GetTPCsignal();
1464 if (std::abs((
Int_t)DCAxy)==999 || std::abs((
Int_t)DCAz)==999) {
1467 Double_t pos[3] = {-99., -99., -99.};
1468 track->GetPosition(pos);
1469 if(pos[0]*pos[0]+pos[1]*pos[1] <= 3.*3.) {
1470 AliNanoAODTrack copy(*track);
1472 Double_t bCov[3] = {-99., -99., -99.};
1473 if(copy.PropagateToDCA(
fEvent->GetPrimaryVertex(), nanoHeader->GetMagneticField(), 100., b, bCov)) {
1484 if (
fAODFilterBit!=128) MaxDCAPtDep = 0.0182+0.0350/pow(track->Pt(),1.01);
1485 else MaxDCAPtDep = 0.4+0.2/pow(track->Pt(),0.3);
1486 if (TMath::Abs(DCAxy)>MaxDCAPtDep) pass=kFALSE;
1495 ntpccls = track->GetTPCncls();
1497 Int_t ntpcclsS = track->GetTPCnclsS();
1498 Double_t fshtpccls = 1.*ntpcclsS/ntpccls;
1505 Double_t momTPC = track->GetTPCmomentum();
1509 QAbefore( 5)->Fill(track->Pt(),DCAxy);
1510 QAbefore( 6)->Fill(track->Pt(),DCAz);
1511 if (pass)
QAafter( 1)->Fill(momTPC,dedx);
1512 if (pass)
QAafter( 5)->Fill(track->Pt(),DCAxy);
1513 if (pass)
QAafter( 6)->Fill(track->Pt(),DCAz);
1525 QAbefore(18)->Fill(track->Pt(),chi2tpc);
1526 if (pass)
QAafter( 18)->Fill(track->Pt(),chi2tpc);
1551 Int_t ntpccls = track->GetTPCNcls();
1557 Int_t nitscls = track->GetITSNcls();
1565 chi2tpc = track->Chi2perNDF();
1572 chi2its = track->GetITSchi2()/track->GetITSNcls();
1578 for (
Int_t i=0; i<2; i++) {
1579 if(track->HasPointOnITSLayer(i)) bSPDCl = kTRUE;
1581 Bool_t bSDDCl = track->HasPointOnITSLayer(2);
1583 if (bSPDCl || (!bSPDCl && bSDDCl)) temppass = kTRUE;
1584 else temppass = kFALSE;
1585 if(!temppass) pass=kFALSE;
1591 Int_t ntpcclsS = track->GetTPCnclsS();
1592 fshtpccls = 1.*ntpcclsS/ntpccls;
1600 for (
Int_t i=0; i<6; i++) {
1601 if(track->HasSharedPointOnITSLayer(i)) nshcl++;
1603 fshitscls = 1.*nshcl/nitscls;
1609 Int_t nCrossedRows = track->GetTPCNCrossedRows();
1611 Float_t CrossedRowsOverFindableClusters = track->GetTPCFoundFraction();
1616 Double_t GoldenChi2 = track->GetChi2TPCConstrainedVsGlobal();
1621 if(TMath::Abs(track->GetTOFsignalDz())>10.) pass=kFALSE;
1622 if(track->GetTOFsignal() < 12000.) pass=kFALSE;
1623 if(track->GetTOFsignal() > 25000.) pass=kFALSE;
1626 if (
GetRequireTPCRefit() && !(track->GetStatus() & AliESDtrack::kTPCrefit) ) pass=kFALSE;
1627 if (
GetRequireITSRefit() && !(track->GetStatus() & AliESDtrack::kITSrefit) ) pass=kFALSE;
1633 if (std::abs((
Int_t)DCAxy)==999 || std::abs((
Int_t)DCAz)==999) {
1636 Double_t pos[3] = {-99., -99., -99.};
1637 track->GetPosition(pos);
1638 if(pos[0]*pos[0]+pos[1]*pos[1] <= 3.*3.) {
1639 AliAODTrack copy(*track);
1641 Double_t bCov[3] = {-99., -99., -99.};
1642 if(copy.PropagateToDCA(
fEvent->GetPrimaryVertex(),
fEvent->GetMagneticField(), 100., b, bCov)) {
1653 if (
fAODFilterBit!=128) MaxDCAPtDep = 0.0182+0.0350/pow(track->Pt(),1.01);
1654 else MaxDCAPtDep = 0.4+0.2/pow(track->Pt(),0.3);
1655 if (TMath::Abs(DCAxy)>MaxDCAPtDep) pass=kFALSE;
1661 Double_t dedx = track->GetTPCsignal();
1666 track->GetIntegratedTimes(time);
1669 Double_t xyz[3]={-9999.,-9999.,-9999.};
1670 const double r = 84.;
1671 if (!track->GetXYZatR(r,
fEvent->GetMagneticField(), xyz, NULL)) pass=kFALSE;
1672 Double_t cra = TMath::ATan2(xyz[1],xyz[0]);
1673 Double_t dpe = 3.*TMath::TwoPi()/360.;
1674 for(
Int_t nb=-9; nb<=9; nb++) {
1676 if(cra<bnp+dpe && cra>bnp-dpe) pass=kFALSE;
1681 if(
fEvent->GetMagneticField() < 0)
1682 phimod = TMath::TwoPi() - phimod;
1683 if(track->Charge() < 0)
1684 phimod = TMath::TwoPi() - phimod;
1686 cout <<
"Warning!!!!! phi < 0: " << phimod << endl;
1688 phimod += TMath::Pi()/18.0;
1689 phimod = fmod(phimod, TMath::Pi()/9.0);
1690 if(phimod < fPhiCutHigh->Eval(track->Pt()) && phimod >
fPhiCutLow->Eval(track->Pt()))
1701 Double_t momTPC = track->GetTPCmomentum();
1705 QAbefore( 5)->Fill(track->Pt(),DCAxy);
1706 QAbefore( 6)->Fill(track->Pt(),DCAz);
1707 if (pass)
QAafter( 1)->Fill(momTPC,dedx);
1708 if (pass)
QAafter( 5)->Fill(track->Pt(),DCAxy);
1709 if (pass)
QAafter( 6)->Fill(track->Pt(),DCAz);
1710 QAbefore( 8)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kElectron]));
1711 if (pass)
QAafter( 8)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kElectron]));
1712 QAbefore( 9)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kMuon]));
1713 if (pass)
QAafter( 9)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kMuon]));
1714 QAbefore(10)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kPion]));
1715 if (pass)
QAafter( 10)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kPion]));
1716 QAbefore(11)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kKaon]));
1717 if (pass)
QAafter( 11)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kKaon]));
1721 QAbefore(18)->Fill(track->Pt(),chi2tpc);
1722 if (pass)
QAafter( 18)->Fill(track->Pt(),chi2tpc);
1723 QAbefore(19)->Fill(track->Pt(),fshtpccls);
1724 if (pass)
QAafter(19)->Fill(track->Pt(),fshtpccls);
1727 QAbefore(20)->Fill(track->Pt(),chi2its);
1728 if (pass)
QAafter(20)->Fill(track->Pt(),chi2its);
1729 QAbefore(21)->Fill(track->Pt(),fshitscls);
1730 if (pass)
QAafter(21)->Fill(track->Pt(),fshitscls);
1744 track->GetImpactParameters(dcaxy,dcaz);
1745 const AliExternalTrackParam* pout = track->GetOuterParam();
1746 const AliExternalTrackParam* pin = track->GetInnerParam();
1754 if (zin*zout<0) pass=kFALSE;
1756 if (zout < fIgnoreTPCzRangeMin || zout > fIgnoreTPCzRangeMax) pass=kFALSE;
1761 track->GetTPCNclsIter1():track->GetTPCNcls();
1765 track->GetTPCchi2Iter1():track->GetTPCchi2();
1766 tpcchi2 = (ntpccls>0)?tpcchi2/ntpccls:-FLT_MAX;
1781 Int_t nitscls = track->GetNcls(0);
1798 if (pass)
QAbefore(0)->Fill(track->GetP(),beta);
1799 if (pass)
QAbefore(1)->Fill(pin->GetP(),dedx);
1810 track->GetTPCpid(pidTPC);
1825 if (pass)
QAafter(0)->Fill(track->GetP(),beta);
1826 if (pass)
QAafter(1)->Fill(pin->GetP(),dedx);
1835 if (pass)
QAafter(5)->Fill(pt,dcaxy);
1836 if (pass)
QAafter(6)->Fill(pt,dcaz);
1866 if (!track->FillTPCOnlyTrack(
fTPCtrack))
1882 if (!track->FillTPCOnlyTrack(
fTPCtrack))
1908 Int_t multiplicity = 0;
1918 for (
Int_t i=0; i<
event->GetNumberOfTracks(); i++)
1920 if (
IsSelected(event->GetTrack(i))) multiplicity++;
1923 return multiplicity;
2096 cuts->
fAliESDtrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2009(selPrimaries);
2206 trackCollection->AddAtAndExpand(flowtrack,trackIndex);
2209 TParticle *tmpTParticle=NULL;
2210 AliMCParticle* tmpAliMCParticle=NULL;
2211 AliExternalTrackParam* externalParams=NULL;
2212 AliESDtrack* esdtrack=NULL;
2234 tmpAliMCParticle =
static_cast<AliMCParticle*
>(
fMCevent->GetTrack(tmpTParticle->GetFirstMother()));
2235 flowtrack->
SetPt(tmpAliMCParticle->Pt());
2238 esdtrack =
dynamic_cast<AliESDtrack*
>(
fTrack);
2239 if (!esdtrack)
return NULL;
2240 externalParams =
const_cast<AliExternalTrackParam*
>(esdtrack->GetTPCInnerParam());
2241 if (!externalParams)
return NULL;
2242 flowtrack->
Set(externalParams);
2253 else if (dynamic_cast<AliESDtrack*>(
fTrack))
2256 flowtrack->
SetID(static_cast<AliVTrack*>(
fTrack)->GetID());
2258 else if (dynamic_cast<AliESDMuonTrack*>(
fTrack))
2261 flowtrack->
SetID((
Int_t)static_cast<AliESDMuonTrack*>(
fTrack)->GetUniqueID());
2263 else if (dynamic_cast<AliAODTrack*>(
fTrack))
2269 flowtrack->
SetID(static_cast<AliVTrack*>(
fTrack)->GetID());
2271 else if (dynamic_cast<AliMCParticle*>(
fTrack))
2274 flowtrack->
SetID(static_cast<AliVTrack*>(
fTrack)->GetID());
2281 flowtrack->
SetID(indexMother);
2304 trackCollection->AddAtAndExpand(flowtrack,trackIndex);
2310 trackCollection->RemoveAt(trackIndex);
2320 TParticle *tmpTParticle=NULL;
2321 AliMCParticle* tmpAliMCParticle=NULL;
2352 tmpAliMCParticle =
static_cast<AliMCParticle*
>(
fMCevent->GetTrack(tmpTParticle->GetFirstMother()));
2353 flowtrack->
SetPt(tmpAliMCParticle->Pt());
2381 trackCollection->AddAtAndExpand(flowtrack,trackIndex);
2387 trackCollection->RemoveAt(trackIndex);
2397 if (!
fTrack)
return kFALSE;
2398 TParticle *tmpTParticle=NULL;
2399 AliMCParticle* tmpAliMCParticle=NULL;
2400 AliExternalTrackParam* externalParams=NULL;
2401 AliESDtrack* esdtrack=NULL;
2423 tmpAliMCParticle =
static_cast<AliMCParticle*
>(
fMCevent->GetTrack(tmpTParticle->GetFirstMother()));
2424 flowtrack->
SetPt(tmpAliMCParticle->Pt());
2427 esdtrack =
dynamic_cast<AliESDtrack*
>(
fTrack);
2428 if (!esdtrack)
return kFALSE;
2429 externalParams =
const_cast<AliExternalTrackParam*
>(esdtrack->GetTPCInnerParam());
2430 if (!externalParams)
return kFALSE;
2431 flowtrack->
Set(externalParams);
2442 else if (dynamic_cast<AliESDtrack*>(
fTrack))
2445 flowtrack->
SetID(static_cast<AliVTrack*>(
fTrack)->GetID());
2447 else if (dynamic_cast<AliESDMuonTrack*>(
fTrack))
2450 flowtrack->
SetID((
Int_t)static_cast<AliESDMuonTrack*>(
fTrack)->GetUniqueID());
2452 else if (dynamic_cast<AliAODTrack*>(
fTrack))
2458 flowtrack->
SetID(static_cast<AliVTrack*>(
fTrack)->GetID());
2459 AliAODTrack* aodTrack =
dynamic_cast<AliAODTrack*
>(
fTrack);
2462 else if (dynamic_cast<AliMCParticle*>(
fTrack))
2465 flowtrack->
SetID(static_cast<AliVTrack*>(
fTrack)->GetID());
2787 Bool_t physprim=mcEvent->IsPhysicalPrimary(label);
2788 AliMCParticle* track =
static_cast<AliMCParticle*
>(mcEvent->GetTrack(label));
2789 if (!track)
return kFALSE;
2790 TParticle* particle = track->Particle();
2791 Bool_t transported = particle->TestBit(kTransportBit);
2794 return (physprim && (transported || !requiretransported));
2803 const Int_t kNbinsP=200;
2806 for(
int i=1; i<kNbinsP+1; i++)
2811 binsP[i]=binsP[i-1]+0.05;
2814 const Int_t nBinsDCA=1000;
2816 for(
int i=0; i<nBinsDCA+1; i++) {binsDCA[i]=0.01*i-5.;}
2819 Bool_t adddirstatus = TH1::AddDirectoryStatus();
2820 TH1::AddDirectory(kFALSE);
2822 fQA->SetName(Form(
"%s QA",GetName()));
2823 TList* before =
new TList(); before->SetOwner();
2824 before->SetName(
"before");
2825 TList* after =
new TList(); after->SetOwner();
2826 after->SetName(
"after");
2829 before->Add(
new TH2F(
"TOFbeta",
";p [GeV/c];#beta",kNbinsP,binsP,1000,0.4,1.1));
2830 after->Add(
new TH2F(
"TOFbeta",
";p [GeV/c];#beta",kNbinsP,binsP,1000,0.4,1.1));
2831 before->Add(
new TH2F(
"TPCdedx",
";p [GeV/c];dEdx",kNbinsP,binsP,500,0,500));
2832 after->Add(
new TH2F(
"TPCdedx",
";p [GeV/c];dEdx",kNbinsP,binsP,500,0,500));
2833 before->Add(
new TH2F(
"MC pid",
";p[GeV/c];species",kNbinsP,binsP,10,-5, 5));
2834 after->Add(
new TH2F(
"MC pid",
";p[GeV/c];species",kNbinsP,binsP,10,-5, 5));
2836 TH2F* hb =
new TH2F(
"MC primary",
";p[GeV/c];primary",kNbinsP,binsP,2,-1,1);
2837 TH2F* ha =
new TH2F(
"MC primary",
";p[GeV/c];primary",kNbinsP,binsP,2,-1,1);
2839 axis = hb->GetYaxis();
2840 axis->SetBinLabel(1,
"secondary");
2841 axis->SetBinLabel(2,
"primary");
2842 axis = ha->GetYaxis();
2843 axis->SetBinLabel(1,
"secondary");
2844 axis->SetBinLabel(2,
"primary");
2848 hb =
new TH2F(
"MC production process",
";p[GeV/c];",kNbinsP,binsP,kMaxMCProcess,
2849 -0.5, kMaxMCProcess-0.5);
2850 ha =
new TH2F(
"MC production process",
";p[GeV/c];",kNbinsP,binsP,kMaxMCProcess,
2851 -0.5, kMaxMCProcess-0.5);
2852 axis = hb->GetYaxis();
2853 for (
Int_t i=0; i<kMaxMCProcess; i++)
2855 axis->SetBinLabel(i+1,TMCProcessName[i]);
2857 axis = ha->GetYaxis();
2858 for (
Int_t i=0; i<kMaxMCProcess; i++)
2860 axis->SetBinLabel(i+1,TMCProcessName[i]);
2865 before->Add(
new TH2F(
"DCAxy",
";p_{t}[GeV/c];DCAxy[cm]", 100, 0., 10., nBinsDCA, binsDCA));
2866 after->Add(
new TH2F(
"DCAxy",
";p_{t}[GeV/c];DCAxy[cm]", 100, 0., 10., nBinsDCA, binsDCA));
2867 before->Add(
new TH2F(
"DCAz",
";p_{t}[GeV/c];DCAz[cm]", 100, 0., 10., nBinsDCA, binsDCA));
2868 after->Add(
new TH2F(
"DCAz",
";p_{t}[GeV/c];DCAz[cm]", 100, 0., 10., nBinsDCA, binsDCA));
2870 hb =
new TH2F(
"MC first mother",
";p[GeV/c];",kNbinsP,binsP,44,1.,45.);
2871 ha =
new TH2F(
"MC first mother",
";p[GeV/c];",kNbinsP,binsP,44,1.,45.);
2872 hb->GetYaxis()->SetBinLabel(1,
"#gamma");
2873 ha->GetYaxis()->SetBinLabel(1,
"#gamma");
2874 hb->GetYaxis()->SetBinLabel(2,
"e^{+}");
2875 ha->GetYaxis()->SetBinLabel(2,
"e^{+}");
2876 hb->GetYaxis()->SetBinLabel(3,
"e^{-}");
2877 ha->GetYaxis()->SetBinLabel(3,
"e^{-}");
2878 hb->GetYaxis()->SetBinLabel(4,
"#nu");
2879 ha->GetYaxis()->SetBinLabel(4,
"#nu");
2880 hb->GetYaxis()->SetBinLabel(5,
"#mu^{+}");
2881 ha->GetYaxis()->SetBinLabel(5,
"#mu^{+}");
2882 hb->GetYaxis()->SetBinLabel(6,
"#mu^{-}");
2883 ha->GetYaxis()->SetBinLabel(6,
"#mu^{-}");
2884 hb->GetYaxis()->SetBinLabel(7,
"#pi^{0}");
2885 ha->GetYaxis()->SetBinLabel(7,
"#pi^{0}");
2886 hb->GetYaxis()->SetBinLabel(8,
"#pi^{+}");
2887 ha->GetYaxis()->SetBinLabel(8,
"#pi^{+}");
2888 hb->GetYaxis()->SetBinLabel(9,
"#pi^{-}");
2889 ha->GetYaxis()->SetBinLabel(9,
"#pi^{-}");
2890 hb->GetYaxis()->SetBinLabel(10,
"K^{0}_{L}");
2891 ha->GetYaxis()->SetBinLabel(10,
"K^{0}_{L}");
2892 hb->GetYaxis()->SetBinLabel(11,
"K^{+}");
2893 ha->GetYaxis()->SetBinLabel(11,
"K^{+}");
2894 hb->GetYaxis()->SetBinLabel(12,
"K^{-}");
2895 ha->GetYaxis()->SetBinLabel(12,
"K^{-}");
2896 hb->GetYaxis()->SetBinLabel( 13,
"n");
2897 ha->GetYaxis()->SetBinLabel( 13,
"n");
2898 hb->GetYaxis()->SetBinLabel( 14,
"p");
2899 ha->GetYaxis()->SetBinLabel( 14,
"p");
2900 hb->GetYaxis()->SetBinLabel(15,
"#bar{p}");
2901 ha->GetYaxis()->SetBinLabel(15,
"#bar{p}");
2902 hb->GetYaxis()->SetBinLabel(16,
"K^{0}_{S}");
2903 ha->GetYaxis()->SetBinLabel(16,
"K^{0}_{S}");
2904 hb->GetYaxis()->SetBinLabel(17,
"#eta");
2905 ha->GetYaxis()->SetBinLabel(17,
"#eta");
2906 hb->GetYaxis()->SetBinLabel(18,
"#Lambda");
2907 ha->GetYaxis()->SetBinLabel(18,
"#Lambda");
2908 hb->GetYaxis()->SetBinLabel(19,
"#Sigma^{+}");
2909 ha->GetYaxis()->SetBinLabel(19,
"#Sigma^{+}");
2910 hb->GetYaxis()->SetBinLabel(20,
"#Sigma^{0}");
2911 ha->GetYaxis()->SetBinLabel(20,
"#Sigma^{0}");
2912 hb->GetYaxis()->SetBinLabel(21,
"#Sigma^{-}");
2913 ha->GetYaxis()->SetBinLabel(21,
"#Sigma^{-}");
2914 hb->GetYaxis()->SetBinLabel(22,
"#Theta^{0}");
2915 ha->GetYaxis()->SetBinLabel(22,
"#Theta^{0}");
2916 hb->GetYaxis()->SetBinLabel(23,
"#Theta^{-}");
2917 ha->GetYaxis()->SetBinLabel(23,
"#Theta^{-}");
2918 hb->GetYaxis()->SetBinLabel(24,
"#Omega^{-}");
2919 ha->GetYaxis()->SetBinLabel(24,
"#Omega^{-}");
2920 hb->GetYaxis()->SetBinLabel(25,
"#bar{n}");
2921 ha->GetYaxis()->SetBinLabel(25,
"#bar{n}");
2922 hb->GetYaxis()->SetBinLabel(26,
"#bar{#Lambda}");
2923 ha->GetYaxis()->SetBinLabel(26,
"#bar{#Lambda}");
2924 hb->GetYaxis()->SetBinLabel(27,
"#bar{#Sigma}^{-}");
2925 ha->GetYaxis()->SetBinLabel(27,
"#bar{#Sigma}^{-}");
2926 hb->GetYaxis()->SetBinLabel(28,
"#bar{#Sigma}^{0}");
2927 ha->GetYaxis()->SetBinLabel(28,
"#bar{#Sigma}^{0}");
2928 hb->GetYaxis()->SetBinLabel(29,
"#bar{#Sigma}^{+}");
2929 ha->GetYaxis()->SetBinLabel(29,
"#bar{#Sigma}^{+}");
2930 hb->GetYaxis()->SetBinLabel(30,
"#bar{#Theta}^{0}");
2931 ha->GetYaxis()->SetBinLabel(30,
"#bar{#Theta}^{0}");
2932 hb->GetYaxis()->SetBinLabel(31,
"#bar{#Theta}^{+}");
2933 ha->GetYaxis()->SetBinLabel(31,
"#bar{#Theta}^{+}");
2934 hb->GetYaxis()->SetBinLabel(32,
"#bar{#Omega}^{+}");
2935 ha->GetYaxis()->SetBinLabel(32,
"#bar{#Omega}^{+}");
2936 hb->GetYaxis()->SetBinLabel(33,
"#tau^{+}");
2937 ha->GetYaxis()->SetBinLabel(33,
"#tau^{+}");
2938 hb->GetYaxis()->SetBinLabel(34,
"#tau^{-}");
2939 ha->GetYaxis()->SetBinLabel(34,
"#tau^{-}");
2940 hb->GetYaxis()->SetBinLabel(35,
"D^{+}");
2941 ha->GetYaxis()->SetBinLabel(35,
"D^{+}");
2942 hb->GetYaxis()->SetBinLabel(36,
"D^{-}");
2943 ha->GetYaxis()->SetBinLabel(36,
"D^{-}");
2944 hb->GetYaxis()->SetBinLabel(37,
"D^{0}");
2945 ha->GetYaxis()->SetBinLabel(37,
"D^{0}");
2946 hb->GetYaxis()->SetBinLabel(38,
"#bar{D}^{0}");
2947 ha->GetYaxis()->SetBinLabel(38,
"#bar{D}^{0}");
2948 hb->GetYaxis()->SetBinLabel(39,
"D_{s}^{+}");
2949 ha->GetYaxis()->SetBinLabel(39,
"D_{s}^{+}");
2950 hb->GetYaxis()->SetBinLabel(40,
"#bar{D_{s}}^{-}");
2951 ha->GetYaxis()->SetBinLabel(40,
"#bar{D_{s}}^{-}");
2952 hb->GetYaxis()->SetBinLabel(41,
"#Lambda_{c}^{+}");
2953 ha->GetYaxis()->SetBinLabel(41,
"#Lambda_{c}^{+}");
2954 hb->GetYaxis()->SetBinLabel(42,
"W^{+}");
2955 ha->GetYaxis()->SetBinLabel(42,
"W^{+}");
2956 hb->GetYaxis()->SetBinLabel(43,
"W^{-}");
2957 ha->GetYaxis()->SetBinLabel(43,
"W^{-}");
2958 hb->GetYaxis()->SetBinLabel(44,
"Z^{0}");
2959 ha->GetYaxis()->SetBinLabel(44,
"Z^{0}");
2963 before->Add(
new TH2F(
"TOFkElectron",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2964 after->Add(
new TH2F(
"TOFkElectron",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2966 before->Add(
new TH2F(
"TOFkMuon",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2967 after->Add(
new TH2F(
"TOFkMuon",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2969 before->Add(
new TH2F(
"TOFkPion",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2970 after->Add(
new TH2F(
"TOFkPion",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2972 before->Add(
new TH2F(
"TOFkKaon",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2973 after->Add(
new TH2F(
"TOFkKaon",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2975 before->Add(
new TH2F(
"TOFkProton",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2976 after->Add(
new TH2F(
"TOFkProton",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2979 before->Add(
new TH1F(
"KinkQt",
";q_{t}[GeV/c];counts", 200, 0., 0.3));
2980 after->Add(
new TH1F(
"KinkQt",
";q_{t}[GeV/c];counts", 200, 0., 0.3));
2982 before->Add(
new TH1F(
"KinkMinv",
";m_{inv}(#mu#nu)[GeV/c^{2}];counts;Kink M_{inv}", 200, 0., 0.7));
2983 after->Add(
new TH1F(
"KinkMinv",
";m_{inv}(#mu#nu)[GeV/c^{2}];counts;Kink M_{inv}", 200, 0., 0.7));
2985 before->Add(
new TH2F(
"KinkVertex",
";x[cm];y[cm];Kink vertex position",250,-250.,250., 250,-250.,250.));
2986 after->Add(
new TH2F(
"KinkVertex",
";x[cm];y[cm];Kink vertex position",250,-250.,250., 250,-250.,250.));
2988 before->Add(
new TH2F(
"KinkAngleMp",
";p_{mother}[GeV/c];Kink decay angle [deg];", 100,0.,6., 100,0.,80.));
2989 after->Add(
new TH2F(
"KinkAngleMp",
";p_{mother}[GeV/c];Kink decay angle [deg];", 100,0.,6., 100,0.,80.));
2991 before->Add(
new TH1F(
"KinkIndex",
";Kink index;counts", 2, 0., 2.));
2992 after->Add(
new TH1F(
"KinkIndex",
";Kink index;counts", 2, 0., 2.));
2994 before->Add(
new TH2F(
"Chi2PerClusterTPC",
";p_{t}[GeV/c];#chi^{2}/N_{cl} (TPC)",kNbinsP,binsP,50,0.,5.));
2995 after->Add(
new TH2F(
"Chi2PerClusterTPC",
";p_{t}[GeV/c];#chi^{2}/N_{cl} (TPC)",kNbinsP,binsP,50,0.,5.));
2997 before->Add(
new TH2F(
"FractionSharedClusterTPC",
";p_{t}[GeV/c];frac. shared cl (TPC)",kNbinsP,binsP,50,0.,1.));
2998 after->Add(
new TH2F(
"FractionSharedClusterTPC",
";p_{t}[GeV/c];frac. shared cl (TPC)",kNbinsP,binsP,50,0.,1.));
3000 before->Add(
new TH2F(
"Chi2PerClusterITS",
";p_{t}[GeV/c];#chi^{2}/N_{cl} (ITS)",kNbinsP,binsP,100,0.,50.));
3001 after->Add(
new TH2F(
"Chi2PerClusterITS",
";p_{t}[GeV/c];#chi^{2}/N_{cl} (ITS)",kNbinsP,binsP,100,0.,50.));
3003 before->Add(
new TH2F(
"FractionSharedClusterITS",
";p_{t}[GeV/c];frac. shared cl (ITS)",kNbinsP,binsP,50,0.,1.));
3004 after->Add(
new TH2F(
"FractionSharedClusterITS",
";p_{t}[GeV/c];frac. shared cl (ITS)",kNbinsP,binsP,50,0.,1.));
3006 TH1::AddDirectory(adddirstatus);
3024 if (esd)
return esd->GetMultiplicity()->GetNumberOfTracklets();
3025 if (aod)
return aod->GetTracklets()->GetNumberOfTracklets();
3028 return fMCevent->GetNumberOfTracks();
3032 return esd->GetNumberOfPmdTracks();
3046 if (esd)
return esd->GetNumberOfMuonTracks();
3047 return fEvent->GetNumberOfTracks();
3051 return esd->GetNumberOfKinks();
3055 return esd->GetNumberOfV0s();
3058 return fEvent->GetNumberOfTracks();
3073 if (!
fEvent)
return NULL;
3078 if (esd)
return const_cast<AliMultiplicity*
>(esd->GetMultiplicity());
3079 if (aod)
return const_cast<AliAODTracklets*
>(aod->GetTracklets());
3085 if (!esd)
return NULL;
3086 return esd->GetPmdTrack(i);
3092 if(!aod)
return NULL;
3093 return aod->GetVZEROData();
3095 return esd->GetVZEROData();
3101 if(!aod)
return NULL;
3102 return aod->GetVZEROData();
3104 return esd->GetVZEROData();
3110 if(!aod)
return NULL;
3111 return aod->GetVZEROData();
3113 return esd->GetVZEROData();
3119 if(!aod)
return NULL;
3120 return aod->GetVZEROData();
3122 return esd->GetVZEROData();
3128 if(!aod)
return NULL;
3129 return aod->GetVZEROData();
3131 return esd->GetVZEROData();
3133 if (!
fEvent)
return NULL;
3135 if (esd)
return esd->GetMuonTrack(i);
3136 return fEvent->GetTrack(i);
3139 if (!esd)
return NULL;
3140 return esd->GetKink(i);
3143 if (!esd)
return NULL;
3144 return esd->GetV0(i);
3146 if (!
fEvent)
return NULL;
3147 return fEvent->GetTrack(i);
3179 if(!track->GetAODEvent()->GetTOFHeader()){
3180 AliAODPid *pidObj = track->GetDetPid();
3181 if (!pidObj)
fESDpid.GetTOFResponse().SetTimeResolution(84.);
3184 pidObj->GetTOFpidResolution(sigmaTOFPidInAOD);
3185 if(sigmaTOFPidInAOD[0] > 84.){
3186 fESDpid.GetTOFResponse().SetTimeResolution(sigmaTOFPidInAOD[0]);
3261 printf(
"AliFlowTrackCuts::PassesCuts() this should never be called!\n");
3272 Bool_t goodtrack = (track->GetStatus() & AliESDtrack::kTOFpid) &&
3273 (track->GetTOFsignal() > 12000) &&
3274 (track->GetTOFsignal() < 100000) &&
3275 (track->GetIntegratedLength() > 365);
3283 if (!goodtrack)
return kFALSE;
3285 const Float_t c = 2.99792457999999984e-02;
3287 Float_t l = track->GetIntegratedLength();
3289 Float_t timeTOF = track->GetTOFsignal()- trackT0;
3291 Double_t integratedTimes[9] = {-1.0,-1.0,-1.0,-1.0,-1.0, -1.0, -1.0, -1.0, -1.0};
3292 track->GetIntegratedTimes(integratedTimes);
3293 Float_t betaHypothesis[5] = {0.0,0.0,0.0,0.0,0.0};
3294 Float_t s[5] = {0.0,0.0,0.0,0.0,0.0};
3295 for (
Int_t i=0;i<5;i++)
3297 betaHypothesis[i] = l/integratedTimes[i]/
c;
3298 s[i] = beta-betaHypothesis[i];
3304 return ( (s[2]<0.015) && (s[2]>-0.015) &&
3308 return ( (s[3]<0.015) && (s[3]>-0.015) &&
3312 return ( (s[4]<0.015) && (s[4]>-0.015) &&
3325 Double_t integratedTimes[9] = {-1.0,-1.0,-1.0,-1.0,-1.0, -1.0, -1.0, -1.0, -1.0};
3326 track->GetIntegratedTimes(integratedTimes);
3328 const Float_t c = 2.99792457999999984e-02;
3332 Float_t timeTOF = track->GetTOFsignal()- trackT0;
3333 if(QAmode && timeTOF <= 0)
return -999;
3347 Bool_t goodtrack = (track->GetStatus() & AliESDtrack::kTOFpid) &&
3348 (track->GetTOFsignal() > 12000) &&
3349 (track->GetTOFsignal() < 100000);
3351 if (!goodtrack)
return kFALSE;
3353 const Float_t c = 2.99792457999999984e-02;
3354 Double_t integratedTimes[9] = {-1.0,-1.0,-1.0,-1.0,-1.0, -1.0, -1.0, -1.0, -1.0};
3355 track->GetIntegratedTimes(integratedTimes);
3358 goodtrack = goodtrack && (l > 365);
3360 if (!goodtrack)
return kFALSE;
3373 cout<<
"TOFbeta: fParticleID = "<<
fParticleID<<endl;
3391 Float_t betahypothesis = l/integratedTimes[pid]/
c;
3392 Float_t betadiff = beta-betahypothesis;
3396 if (col<0)
return kFALSE;
3397 Float_t min = (*fTOFpidCuts)(1,col);
3398 Float_t max = (*fTOFpidCuts)(2,col);
3400 Bool_t pass = (betadiff>min && betadiff<max);
3415 Bool_t goodtrack = (track->GetStatus() & AliESDtrack::kTOFpid) &&
3416 (track->GetTOFsignal() > 12000) &&
3417 (track->GetTOFsignal() < 100000) &&
3418 (track->GetIntegratedLength() > 365);
3422 if (!goodtrack)
return kFALSE;
3429 Double_t integratedTimes[9] = {-1.0,-1.0,-1.0,-1.0,-1.0, -1.0, -1.0, -1.0, -1.0};
3430 track->GetIntegratedTimes(integratedTimes);
3450 const Float_t c = 2.99792457999999984e-02;
3451 Float_t l = track->GetIntegratedLength();
3453 Float_t betahypothesis = l/integratedTimes[pid]/
c;
3454 Float_t betadiff = beta-betahypothesis;
3458 if (col<0)
return kFALSE;
3459 Float_t min = (*fTOFpidCuts)(1,col);
3460 Float_t max = (*fTOFpidCuts)(2,col);
3462 Bool_t pass = (betadiff>min && betadiff<max);
3472 track->GetTOFpid(pidTOF);
3482 track->GetTPCpid(pidTPC);
3487 probablity = pidTPC[AliPID::kPion] + pidTPC[AliPID::kMuon];
3500 return track->GetTPCsignal();
3513 const AliExternalTrackParam* tpcparam = track->GetInnerParam();
3514 if (!tpcparam)
return kFALSE;
3517 Float_t sigTPC = track->GetTPCsignal();
3518 Float_t s = (sigTPC-sigExp)/sigExp;
3522 Int_t col = TMath::BinarySearch( arrSize, arr, static_cast<Float_t>(p));
3523 if (col<0)
return kFALSE;
3524 Float_t min = (*fTPCpidCuts)(1,col);
3525 Float_t max = (*fTPCpidCuts)(2,col);
3528 return (s>min && s<max);
3540 t =
new TMatrixF(3,15);
3541 (*t)(0,0) = 0.20; (*t)(1,0) = -0.4; (*t)(2,0) = 0.0;
3542 (*t)(0,1) = 0.25; (*t)(1,1) = -0.4; (*t)(2,1) = 0.1;
3543 (*t)(0,2) = 0.30; (*t)(1,2) = -0.4; (*t)(2,2) = 0.2;
3544 (*t)(0,3) = 0.35; (*t)(1,3) = -0.4; (*t)(2,3) = 0.2;
3545 (*t)(0,4) = 0.40; (*t)(1,4) = -0.4; (*t)(2,4) = 0.3;
3546 (*t)(0,5) = 0.45; (*t)(1,5) = -0.4; (*t)(2,5) = 0.3;
3547 (*t)(0,6) = 0.50; (*t)(1,6) = -0.4; (*t)(2,6) = 0.25;
3548 (*t)(0,7) = 0.55; (*t)(1,7) = -0.4; (*t)(2,7) = 0.15;
3549 (*t)(0,8) = 0.60; (*t)(1,8) = -0.4; (*t)(2,8) = 0.1;
3550 (*t)(0,9) = 0.65; (*t)(1,9) = -0.4; (*t)(2,9) = 0.05;
3551 (*t)(0,10) = 0.70; (*t)(1,10) = -0.4; (*t)(2,10) = 0;
3552 (*t)(0,11) = 0.75; (*t)(1,11) = -0.4; (*t)(2,11) = 0;
3553 (*t)(0,12) = 0.80; (*t)(1,12) = -0.4; (*t)(2,12) = -0.05;
3554 (*t)(0,13) = 0.85; (*t)(1,13) = -0.4; (*t)(2,13) = -0.1;
3555 (*t)(0,14) = 0.90; (*t)(1,14) = 0; (*t)(2,14) = 0;
3560 t =
new TMatrixF(3,12);
3561 (*t)(0,0) = 0.20; (*t)(1,0) = -0.2; (*t)(2,0) = 0.2;
3562 (*t)(0,1) = 0.25; (*t)(1,1) = -0.2; (*t)(2,1) = 0.2;
3563 (*t)(0,2) = 0.30; (*t)(1,2) = -0.2; (*t)(2,2) = 0.2;
3564 (*t)(0,3) = 0.35; (*t)(1,3) = -0.2; (*t)(2,3) = 0.2;
3565 (*t)(0,4) = 0.40; (*t)(1,4) = -0.1; (*t)(2,4) = 0.2;
3566 (*t)(0,5) = 0.45; (*t)(1,5) = -0.1; (*t)(2,5) = 0.2;
3567 (*t)(0,6) = 0.50; (*t)(1,6) =-0.05; (*t)(2,6) = 0.2;
3568 (*t)(0,7) = 0.55; (*t)(1,7) = -0.1; (*t)(2,7) = 0.1;
3569 (*t)(0,8) = 0.60; (*t)(1,8) =-0.05; (*t)(2,8) = 0.1;
3570 (*t)(0,9) = 0.65; (*t)(1,9) = 0; (*t)(2,9) = 0.15;
3571 (*t)(0,10) = 0.70; (*t)(1,10) = 0.05; (*t)(2,10) = 0.2;
3572 (*t)(0,11) = 0.75; (*t)(1,11) = 0; (*t)(2,11) = 0;
3577 t =
new TMatrixF(3,9);
3578 (*t)(0,0) = 0.20; (*t)(1,0) = -0.1; (*t)(2,0) = 0.1;
3579 (*t)(0,1) = 0.25; (*t)(1,1) = -0.2; (*t)(2,1) = 0.2;
3580 (*t)(0,2) = 0.80; (*t)(1,2) = -0.1; (*t)(2,2) = 0.2;
3581 (*t)(0,3) = 0.85; (*t)(1,3) =-0.05; (*t)(2,3) = 0.2;
3582 (*t)(0,4) = 0.90; (*t)(1,4) =-0.05; (*t)(2,4) = 0.25;
3583 (*t)(0,5) = 0.95; (*t)(1,5) =-0.05; (*t)(2,5) = 0.25;
3584 (*t)(0,6) = 1.00; (*t)(1,6) = -0.1; (*t)(2,6) = 0.25;
3585 (*t)(0,7) = 1.10; (*t)(1,7) =-0.05; (*t)(2,7) = 0.3;
3586 (*t)(0,8) = 1.20; (*t)(1,8) = 0; (*t)(2,8) = 0;
3597 t =
new TMatrixF(3,61);
3598 (*t)(0,0) = 0.000; (*t)(1,0) = 0.000; (*t)(2,0) = 0.000;
3599 (*t)(0,1) = 0.050; (*t)(1,1) = 0.000; (*t)(2,1) = 0.000;
3600 (*t)(0,2) = 0.100; (*t)(1,2) = 0.000; (*t)(2,2) = 0.000;
3601 (*t)(0,3) = 0.150; (*t)(1,3) = 0.000; (*t)(2,3) = 0.000;
3602 (*t)(0,4) = 0.200; (*t)(1,4) = -0.030; (*t)(2,4) = 0.030;
3603 (*t)(0,5) = 0.250; (*t)(1,5) = -0.036; (*t)(2,5) = 0.032;
3604 (*t)(0,6) = 0.300; (*t)(1,6) = -0.038; (*t)(2,6) = 0.032;
3605 (*t)(0,7) = 0.350; (*t)(1,7) = -0.034; (*t)(2,7) = 0.032;
3606 (*t)(0,8) = 0.400; (*t)(1,8) = -0.032; (*t)(2,8) = 0.020;
3607 (*t)(0,9) = 0.450; (*t)(1,9) = -0.030; (*t)(2,9) = 0.020;
3608 (*t)(0,10) = 0.500; (*t)(1,10) = -0.030; (*t)(2,10) = 0.020;
3609 (*t)(0,11) = 0.550; (*t)(1,11) = -0.030; (*t)(2,11) = 0.020;
3610 (*t)(0,12) = 0.600; (*t)(1,12) = -0.030; (*t)(2,12) = 0.020;
3611 (*t)(0,13) = 0.650; (*t)(1,13) = -0.030; (*t)(2,13) = 0.020;
3612 (*t)(0,14) = 0.700; (*t)(1,14) = -0.030; (*t)(2,14) = 0.020;
3613 (*t)(0,15) = 0.750; (*t)(1,15) = -0.030; (*t)(2,15) = 0.020;
3614 (*t)(0,16) = 0.800; (*t)(1,16) = -0.030; (*t)(2,16) = 0.020;
3615 (*t)(0,17) = 0.850; (*t)(1,17) = -0.030; (*t)(2,17) = 0.020;
3616 (*t)(0,18) = 0.900; (*t)(1,18) = -0.030; (*t)(2,18) = 0.020;
3617 (*t)(0,19) = 0.950; (*t)(1,19) = -0.028; (*t)(2,19) = 0.028;
3618 (*t)(0,20) = 1.000; (*t)(1,20) = -0.028; (*t)(2,20) = 0.028;
3619 (*t)(0,21) = 1.100; (*t)(1,21) = -0.028; (*t)(2,21) = 0.028;
3620 (*t)(0,22) = 1.200; (*t)(1,22) = -0.026; (*t)(2,22) = 0.028;
3621 (*t)(0,23) = 1.300; (*t)(1,23) = -0.024; (*t)(2,23) = 0.028;
3622 (*t)(0,24) = 1.400; (*t)(1,24) = -0.020; (*t)(2,24) = 0.028;
3623 (*t)(0,25) = 1.500; (*t)(1,25) = -0.018; (*t)(2,25) = 0.028;
3624 (*t)(0,26) = 1.600; (*t)(1,26) = -0.016; (*t)(2,26) = 0.028;
3625 (*t)(0,27) = 1.700; (*t)(1,27) = -0.014; (*t)(2,27) = 0.028;
3626 (*t)(0,28) = 1.800; (*t)(1,28) = -0.012; (*t)(2,28) = 0.026;
3627 (*t)(0,29) = 1.900; (*t)(1,29) = -0.010; (*t)(2,29) = 0.026;
3628 (*t)(0,30) = 2.000; (*t)(1,30) = -0.008; (*t)(2,30) = 0.026;
3629 (*t)(0,31) = 2.100; (*t)(1,31) = -0.008; (*t)(2,31) = 0.024;
3630 (*t)(0,32) = 2.200; (*t)(1,32) = -0.006; (*t)(2,32) = 0.024;
3631 (*t)(0,33) = 2.300; (*t)(1,33) = -0.004; (*t)(2,33) = 0.024;
3632 (*t)(0,34) = 2.400; (*t)(1,34) = -0.004; (*t)(2,34) = 0.024;
3633 (*t)(0,35) = 2.500; (*t)(1,35) = -0.002; (*t)(2,35) = 0.024;
3634 (*t)(0,36) = 2.600; (*t)(1,36) = -0.002; (*t)(2,36) = 0.024;
3635 (*t)(0,37) = 2.700; (*t)(1,37) = 0.000; (*t)(2,37) = 0.024;
3636 (*t)(0,38) = 2.800; (*t)(1,38) = 0.000; (*t)(2,38) = 0.026;
3637 (*t)(0,39) = 2.900; (*t)(1,39) = 0.000; (*t)(2,39) = 0.024;
3638 (*t)(0,40) = 3.000; (*t)(1,40) = 0.002; (*t)(2,40) = 0.026;
3639 (*t)(0,41) = 3.100; (*t)(1,41) = 0.002; (*t)(2,41) = 0.026;
3640 (*t)(0,42) = 3.200; (*t)(1,42) = 0.002; (*t)(2,42) = 0.026;
3641 (*t)(0,43) = 3.300; (*t)(1,43) = 0.002; (*t)(2,43) = 0.026;
3642 (*t)(0,44) = 3.400; (*t)(1,44) = 0.002; (*t)(2,44) = 0.026;
3643 (*t)(0,45) = 3.500; (*t)(1,45) = 0.002; (*t)(2,45) = 0.026;
3644 (*t)(0,46) = 3.600; (*t)(1,46) = 0.002; (*t)(2,46) = 0.026;
3645 (*t)(0,47) = 3.700; (*t)(1,47) = 0.002; (*t)(2,47) = 0.026;
3646 (*t)(0,48) = 3.800; (*t)(1,48) = 0.002; (*t)(2,48) = 0.026;
3647 (*t)(0,49) = 3.900; (*t)(1,49) = 0.004; (*t)(2,49) = 0.024;
3648 (*t)(0,50) = 4.000; (*t)(1,50) = 0.004; (*t)(2,50) = 0.026;
3649 (*t)(0,51) = 4.100; (*t)(1,51) = 0.004; (*t)(2,51) = 0.026;
3650 (*t)(0,52) = 4.200; (*t)(1,52) = 0.004; (*t)(2,52) = 0.024;
3651 (*t)(0,53) = 4.300; (*t)(1,53) = 0.006; (*t)(2,53) = 0.024;
3652 (*t)(0,54) = 4.400; (*t)(1,54) = 0.000; (*t)(2,54) = 0.000;
3653 (*t)(0,55) = 4.500; (*t)(1,55) = 0.000; (*t)(2,55) = 0.000;
3654 (*t)(0,56) = 4.600; (*t)(1,56) = 0.000; (*t)(2,56) = 0.000;
3655 (*t)(0,57) = 4.700; (*t)(1,57) = 0.000; (*t)(2,57) = 0.000;
3656 (*t)(0,58) = 4.800; (*t)(1,58) = 0.000; (*t)(2,58) = 0.000;
3657 (*t)(0,59) = 4.900; (*t)(1,59) = 0.000; (*t)(2,59) = 0.000;
3658 (*t)(0,60) = 5.900; (*t)(1,60) = 0.000; (*t)(2,60) = 0.000;
3664 t =
new TMatrixF(3,61);
3665 (*t)(0,0) = 0.000; (*t)(1,0) = 0.000; (*t)(2,0) = 0.000;
3666 (*t)(0,1) = 0.050; (*t)(1,1) = 0.000; (*t)(2,1) = 0.000;
3667 (*t)(0,2) = 0.100; (*t)(1,2) = 0.000; (*t)(2,2) = 0.000;
3668 (*t)(0,3) = 0.150; (*t)(1,3) = 0.000; (*t)(2,3) = 0.000;
3669 (*t)(0,4) = 0.200; (*t)(1,4) = -0.07; (*t)(2,4) = 0.07;
3670 (*t)(0,5) = 0.200; (*t)(1,5) = -0.07; (*t)(2,5) = 0.07;
3671 (*t)(0,6) = 0.200; (*t)(1,6) = -0.07; (*t)(2,6) = 0.07;
3672 (*t)(0,7) = 0.200; (*t)(1,7) = -0.07; (*t)(2,7) = 0.07;
3673 (*t)(0,8) = 0.200; (*t)(1,8) = -0.07; (*t)(2,8) = 0.07;
3674 (*t)(0,9) = 0.200; (*t)(1,9) = -0.07; (*t)(2,9) = 0.07;
3675 (*t)(0,10) = 0.200; (*t)(1,10) = -0.07; (*t)(2,10) = 0.07;
3676 (*t)(0,11) = 0.200; (*t)(1,11) = -0.07; (*t)(2,11) = 0.07;
3677 (*t)(0,12) = 0.200; (*t)(1,12) = -0.07; (*t)(2,12) = 0.07;
3678 (*t)(0,13) = 0.200; (*t)(1,13) = -0.07; (*t)(2,13) = 0.07;
3679 (*t)(0,14) = 0.200; (*t)(1,14) = -0.07; (*t)(2,14) = 0.07;
3680 (*t)(0,15) = 0.200; (*t)(1,15) = -0.07; (*t)(2,15) = 0.07;
3681 (*t)(0,16) = 0.200; (*t)(1,16) = -0.07; (*t)(2,16) = 0.07;
3682 (*t)(0,17) = 0.850; (*t)(1,17) = -0.070; (*t)(2,17) = 0.070;
3683 (*t)(0,18) = 0.900; (*t)(1,18) = -0.072; (*t)(2,18) = 0.072;
3684 (*t)(0,19) = 0.950; (*t)(1,19) = -0.072; (*t)(2,19) = 0.072;
3685 (*t)(0,20) = 1.000; (*t)(1,20) = -0.074; (*t)(2,20) = 0.074;
3686 (*t)(0,21) = 1.100; (*t)(1,21) = -0.032; (*t)(2,21) = 0.032;
3687 (*t)(0,22) = 1.200; (*t)(1,22) = -0.026; (*t)(2,22) = 0.026;
3688 (*t)(0,23) = 1.300; (*t)(1,23) = -0.026; (*t)(2,23) = 0.026;
3689 (*t)(0,24) = 1.400; (*t)(1,24) = -0.024; (*t)(2,24) = 0.024;
3690 (*t)(0,25) = 1.500; (*t)(1,25) = -0.024; (*t)(2,25) = 0.024;
3691 (*t)(0,26) = 1.600; (*t)(1,26) = -0.026; (*t)(2,26) = 0.026;
3692 (*t)(0,27) = 1.700; (*t)(1,27) = -0.026; (*t)(2,27) = 0.026;
3693 (*t)(0,28) = 1.800; (*t)(1,28) = -0.026; (*t)(2,28) = 0.026;
3694 (*t)(0,29) = 1.900; (*t)(1,29) = -0.026; (*t)(2,29) = 0.026;
3695 (*t)(0,30) = 2.000; (*t)(1,30) = -0.026; (*t)(2,30) = 0.026;
3696 (*t)(0,31) = 2.100; (*t)(1,31) = -0.026; (*t)(2,31) = 0.026;
3697 (*t)(0,32) = 2.200; (*t)(1,32) = -0.026; (*t)(2,32) = 0.024;
3698 (*t)(0,33) = 2.300; (*t)(1,33) = -0.028; (*t)(2,33) = 0.022;
3699 (*t)(0,34) = 2.400; (*t)(1,34) = -0.028; (*t)(2,34) = 0.020;
3700 (*t)(0,35) = 2.500; (*t)(1,35) = -0.028; (*t)(2,35) = 0.018;
3701 (*t)(0,36) = 2.600; (*t)(1,36) = -0.028; (*t)(2,36) = 0.016;
3702 (*t)(0,37) = 2.700; (*t)(1,37) = -0.028; (*t)(2,37) = 0.016;
3703 (*t)(0,38) = 2.800; (*t)(1,38) = -0.030; (*t)(2,38) = 0.014;
3704 (*t)(0,39) = 2.900; (*t)(1,39) = -0.030; (*t)(2,39) = 0.012;
3705 (*t)(0,40) = 3.000; (*t)(1,40) = -0.030; (*t)(2,40) = 0.012;
3706 (*t)(0,41) = 3.100; (*t)(1,41) = -0.030; (*t)(2,41) = 0.010;
3707 (*t)(0,42) = 3.200; (*t)(1,42) = -0.030; (*t)(2,42) = 0.010;
3708 (*t)(0,43) = 3.300; (*t)(1,43) = -0.030; (*t)(2,43) = 0.010;
3709 (*t)(0,44) = 3.400; (*t)(1,44) = -0.030; (*t)(2,44) = 0.008;
3710 (*t)(0,45) = 3.500; (*t)(1,45) = -0.030; (*t)(2,45) = 0.008;
3711 (*t)(0,46) = 3.600; (*t)(1,46) = -0.030; (*t)(2,46) = 0.008;
3712 (*t)(0,47) = 3.700; (*t)(1,47) = -0.030; (*t)(2,47) = 0.006;
3713 (*t)(0,48) = 3.800; (*t)(1,48) = -0.030; (*t)(2,48) = 0.006;
3714 (*t)(0,49) = 3.900; (*t)(1,49) = -0.030; (*t)(2,49) = 0.006;
3715 (*t)(0,50) = 4.000; (*t)(1,50) = -0.028; (*t)(2,50) = 0.004;
3716 (*t)(0,51) = 4.100; (*t)(1,51) = -0.030; (*t)(2,51) = 0.004;
3717 (*t)(0,52) = 4.200; (*t)(1,52) = -0.030; (*t)(2,52) = 0.004;
3718 (*t)(0,53) = 4.300; (*t)(1,53) = -0.028; (*t)(2,53) = 0.002;
3719 (*t)(0,54) = 4.400; (*t)(1,54) = -0.030; (*t)(2,54) = 0.002;
3720 (*t)(0,55) = 4.500; (*t)(1,55) = -0.028; (*t)(2,55) = 0.002;
3721 (*t)(0,56) = 4.600; (*t)(1,56) = -0.028; (*t)(2,56) = 0.002;
3722 (*t)(0,57) = 4.700; (*t)(1,57) = -0.028; (*t)(2,57) = 0.000;
3723 (*t)(0,58) = 4.800; (*t)(1,58) = -0.028; (*t)(2,58) = 0.002;
3724 (*t)(0,59) = 4.900; (*t)(1,59) = 0.000; (*t)(2,59) = 0.000;
3725 (*t)(0,60) = 5.900; (*t)(1,60) = 0.000; (*t)(2,60) = 0.000;
3731 t =
new TMatrixF(3,61);
3732 (*t)(0,0) = 0.000; (*t)(1,0) = 0.000; (*t)(2,0) = 0.000;
3733 (*t)(0,1) = 0.050; (*t)(1,1) = 0.000; (*t)(2,1) = 0.000;
3734 (*t)(0,2) = 0.100; (*t)(1,2) = 0.000; (*t)(2,2) = 0.000;
3735 (*t)(0,3) = 0.150; (*t)(1,3) = 0.000; (*t)(2,3) = 0.000;
3736 (*t)(0,4) = 0.200; (*t)(1,4) = -0.05; (*t)(2,4) = 0.05;
3737 (*t)(0,5) = 0.200; (*t)(1,5) = -0.05; (*t)(2,5) = 0.05;
3738 (*t)(0,6) = 0.200; (*t)(1,6) = -0.05; (*t)(2,6) = 0.05;
3739 (*t)(0,7) = 0.200; (*t)(1,7) = -0.05; (*t)(2,7) = 0.05;
3740 (*t)(0,8) = 0.200; (*t)(1,8) = -0.05; (*t)(2,8) = 0.05;
3741 (*t)(0,9) = 0.200; (*t)(1,9) = -0.05; (*t)(2,9) = 0.05;
3742 (*t)(0,10) = 0.200; (*t)(1,10) = -0.05; (*t)(2,10) = 0.05;
3743 (*t)(0,11) = 0.550; (*t)(1,11) = -0.026; (*t)(2,11) = 0.026;
3744 (*t)(0,12) = 0.600; (*t)(1,12) = -0.026; (*t)(2,12) = 0.026;
3745 (*t)(0,13) = 0.650; (*t)(1,13) = -0.026; (*t)(2,13) = 0.026;
3746 (*t)(0,14) = 0.700; (*t)(1,14) = -0.026; (*t)(2,14) = 0.026;
3747 (*t)(0,15) = 0.750; (*t)(1,15) = -0.026; (*t)(2,15) = 0.026;
3748 (*t)(0,16) = 0.800; (*t)(1,16) = -0.026; (*t)(2,16) = 0.026;
3749 (*t)(0,17) = 0.850; (*t)(1,17) = -0.024; (*t)(2,17) = 0.024;
3750 (*t)(0,18) = 0.900; (*t)(1,18) = -0.024; (*t)(2,18) = 0.024;
3751 (*t)(0,19) = 0.950; (*t)(1,19) = -0.024; (*t)(2,19) = 0.024;
3752 (*t)(0,20) = 1.000; (*t)(1,20) = -0.024; (*t)(2,20) = 0.024;
3753 (*t)(0,21) = 1.100; (*t)(1,21) = -0.024; (*t)(2,21) = 0.024;
3754 (*t)(0,22) = 1.200; (*t)(1,22) = -0.024; (*t)(2,22) = 0.022;
3755 (*t)(0,23) = 1.300; (*t)(1,23) = -0.024; (*t)(2,23) = 0.020;
3756 (*t)(0,24) = 1.400; (*t)(1,24) = -0.026; (*t)(2,24) = 0.016;
3757 (*t)(0,25) = 1.500; (*t)(1,25) = -0.028; (*t)(2,25) = 0.014;
3758 (*t)(0,26) = 1.600; (*t)(1,26) = -0.028; (*t)(2,26) = 0.012;
3759 (*t)(0,27) = 1.700; (*t)(1,27) = -0.028; (*t)(2,27) = 0.010;
3760 (*t)(0,28) = 1.800; (*t)(1,28) = -0.028; (*t)(2,28) = 0.010;
3761 (*t)(0,29) = 1.900; (*t)(1,29) = -0.028; (*t)(2,29) = 0.008;
3762 (*t)(0,30) = 2.000; (*t)(1,30) = -0.028; (*t)(2,30) = 0.006;
3763 (*t)(0,31) = 2.100; (*t)(1,31) = -0.026; (*t)(2,31) = 0.006;
3764 (*t)(0,32) = 2.200; (*t)(1,32) = -0.024; (*t)(2,32) = 0.004;
3765 (*t)(0,33) = 2.300; (*t)(1,33) = -0.020; (*t)(2,33) = 0.002;
3766 (*t)(0,34) = 2.400; (*t)(1,34) = -0.020; (*t)(2,34) = 0.002;
3767 (*t)(0,35) = 2.500; (*t)(1,35) = -0.018; (*t)(2,35) = 0.000;
3768 (*t)(0,36) = 2.600; (*t)(1,36) = -0.016; (*t)(2,36) = 0.000;
3769 (*t)(0,37) = 2.700; (*t)(1,37) = -0.014; (*t)(2,37) = -0.002;
3770 (*t)(0,38) = 2.800; (*t)(1,38) = -0.014; (*t)(2,38) = -0.004;
3771 (*t)(0,39) = 2.900; (*t)(1,39) = -0.012; (*t)(2,39) = -0.004;
3772 (*t)(0,40) = 3.000; (*t)(1,40) = -0.010; (*t)(2,40) = -0.006;
3773 (*t)(0,41) = 3.100; (*t)(1,41) = 0.000; (*t)(2,41) = 0.000;
3774 (*t)(0,42) = 3.200; (*t)(1,42) = 0.000; (*t)(2,42) = 0.000;
3775 (*t)(0,43) = 3.300; (*t)(1,43) = 0.000; (*t)(2,43) = 0.000;
3776 (*t)(0,44) = 3.400; (*t)(1,44) = 0.000; (*t)(2,44) = 0.000;
3777 (*t)(0,45) = 3.500; (*t)(1,45) = 0.000; (*t)(2,45) = 0.000;
3778 (*t)(0,46) = 3.600; (*t)(1,46) = 0.000; (*t)(2,46) = 0.000;
3779 (*t)(0,47) = 3.700; (*t)(1,47) = 0.000; (*t)(2,47) = 0.000;
3780 (*t)(0,48) = 3.800; (*t)(1,48) = 0.000; (*t)(2,48) = 0.000;
3781 (*t)(0,49) = 3.900; (*t)(1,49) = 0.000; (*t)(2,49) = 0.000;
3782 (*t)(0,50) = 4.000; (*t)(1,50) = 0.000; (*t)(2,50) = 0.000;
3783 (*t)(0,51) = 4.100; (*t)(1,51) = 0.000; (*t)(2,51) = 0.000;
3784 (*t)(0,52) = 4.200; (*t)(1,52) = 0.000; (*t)(2,52) = 0.000;
3785 (*t)(0,53) = 4.300; (*t)(1,53) = 0.000; (*t)(2,53) = 0.000;
3786 (*t)(0,54) = 4.400; (*t)(1,54) = 0.000; (*t)(2,54) = 0.000;
3787 (*t)(0,55) = 4.500; (*t)(1,55) = 0.000; (*t)(2,55) = 0.000;
3788 (*t)(0,56) = 4.600; (*t)(1,56) = 0.000; (*t)(2,56) = 0.000;
3789 (*t)(0,57) = 4.700; (*t)(1,57) = 0.000; (*t)(2,57) = 0.000;
3790 (*t)(0,58) = 4.800; (*t)(1,58) = 0.000; (*t)(2,58) = 0.000;
3791 (*t)(0,59) = 4.900; (*t)(1,59) = 0.000; (*t)(2,59) = 0.000;
3792 (*t)(0,60) = 5.900; (*t)(1,60) = 0.000; (*t)(2,60) = 0.000;
3808 if(! kTPC)
return kFALSE;
3823 case AliPID::kElectron:
3829 case AliPID::kDeuteron:
3832 case AliPID::kTriton:
3863 if(! kTPC)
return kFALSE;
3889 case AliPID::kElectron:
3895 case AliPID::kDeuteron:
3898 case AliPID::kTriton:
3921 Bool_t goodtrack = (track->GetStatus() & AliESDtrack::kTOFout) &&
3922 (track->GetStatus() & AliESDtrack::kTIME) &&
3923 (track->GetTOFsignal() > 12000) &&
3924 (track->GetTOFsignal() < 100000);
3951 case AliPID::kElectron:
3957 case AliPID::kDeuteron:
3960 case AliPID::kTriton:
3984 Bool_t goodtrack = (track->GetStatus() & AliESDtrack::kTOFout) &&
3985 (track->GetStatus() & AliESDtrack::kTIME) &&
3986 (track->GetTOFsignal() > 12000) &&
3987 (track->GetTOFsignal() < 100000) &&
3988 (track->GetIntegratedLength() > 365);
4017 case AliPID::kElectron:
4023 case AliPID::kDeuteron:
4026 case AliPID::kTriton:
4056 if (!track->GetInnerParam())
4059 const AliExternalTrackParam* tpcTrack = track->GetInnerParam();
4061 Double_t ptotTPC = tpcTrack->GetP();
4062 Double_t sigTPC = track->GetTPCsignal();
4068 case AliPID::kDeuteron:
4070 dEdxBBA = AliExternalTrackParam::BetheBlochAleph(ptotTPC/1.8756,
4076 dSigma = (sigTPC - dEdxBBA)/dEdxBBA;
4078 if( ptotTPC<=1.1 && (dSigma < (0.5 - (0.1818*ptotTPC)) ) && (dSigma > ( (0.218*ptotTPC - 0.4) ) ) )
4082 case AliPID::kTriton:
4090 dEdxBBA = 4.0 * AliExternalTrackParam::BetheBlochAleph( (2.*ptotTPC)/2.8084,
4096 dSigma = (sigTPC - dEdxBBA)/dEdxBBA;
4097 if(ptotTPC<=5.0 && (dSigma >= (-0.03968*ptotTPC - 0.1)) && (dSigma <= (0.31 - 0.0217*ptotTPC)))
4120 if(!track)
return kFALSE;
4123 if ((track->GetStatus()&AliVTrack::kTOFout)==0)
return kFALSE;
4124 if ((track->GetStatus()&AliVTrack::kTIME)==0)
return kFALSE;
4127 if(track->GetTPCsignal() < 10)
return kFALSE;
4132 Float_t nsigma2 = nsigmaTPC*nsigmaTPC + nsigmaTOF*nsigmaTOF;
4144 if(!track)
return kFALSE;
4147 if ((track->GetStatus()&AliVTrack::kTOFout)==0)
return kFALSE;
4148 if ((track->GetStatus()&AliVTrack::kTIME)==0)
return kFALSE;
4151 if(track->GetTPCsignal() < 10)
return kFALSE;
4156 Float_t nsigma2 = nsigmaTPC*nsigmaTPC + nsigmaTOF*nsigmaTOF;
4168 if(!track)
return kFALSE;
4172 for(
int i=0;i<60;i++){
4174 if(track->P()>pInterval && track->P()<pInterval+0.1){p_int = i;}
4187 if ( (track->IsOn(AliAODTrack::kITSin))){
4188 if(p_int<2)
return kFALSE;
4190 if(!
fPurityFunction[index]){ cout<<
"fPurityFunction[index] does not exist"<<endl;
return kFALSE;}
4192 if((track->IsOn(AliAODTrack::kTOFpid))){
4194 if(TMath::Sqrt(TMath::Power(nsigmaTPC,2)+TMath::Power(nsigmaTOF,2))<3){
4343 else if(centrCur < 20){
4453 else if(centrCur < 30){
4563 else if(centrCur < 40){
4673 else if(centrCur < 50){
4783 else if(centrCur < 60){
4893 else if(centrCur < 70){
5003 else if(centrCur < 80){
5225 fC[i][0] =
fC[17][0];
5226 fC[i][1] =
fC[17][1];
5227 fC[i][2] =
fC[17][2];
5228 fC[i][3] =
fC[17][3];
5229 fC[i][4] =
fC[17][4];
5239 const Float_t c = 2.99792457999999984e-02;
5241 Float_t mass[5] = {5.10998909999999971e-04,1.05658000000000002e-01,1.39570000000000000e-01,4.93676999999999977e-01,9.38271999999999995e-01};
5245 track->GetIntegratedTimes(exptimes);
5247 Float_t dedx = track->GetTPCsignal();
5250 Float_t time = track->GetTOFsignal()-
fESDpid.GetTOFResponse().GetStartTime(p);
5253 Float_t betagammares =
fESDpid.GetTOFResponse().GetExpectedSigma(p, exptimes[4], mass[4]);
5255 Float_t betagamma1 = tl/(time-5 *betagammares) * 33.3564095198152043;
5259 if(betagamma1 < 0.1) betagamma1 = 0.1;
5261 if(betagamma1 < 0.99999) betagamma1 /= TMath::Sqrt(1-betagamma1*betagamma1);
5262 else betagamma1 = 100;
5264 Float_t betagamma2 = tl/(time+5 *betagammares) * 33.3564095198152043;
5267 if(betagamma2 < 0.1) betagamma2 = 0.1;
5269 if(betagamma2 < 0.99999) betagamma2 /= TMath::Sqrt(1-betagamma2*betagamma2);
5270 else betagamma2 = 100;
5273 Float_t momtpc=track->GetTPCmomentum();
5275 for(
Int_t i=0;i < 5;i++){
5276 Float_t resolutionTOF =
fESDpid.GetTOFResponse().GetExpectedSigma(p, exptimes[i], mass[i]);
5277 if(TMath::Abs(exptimes[i] - time) < 5 * resolutionTOF){
5279 if(i==0) dedxExp =
fESDpid.GetTPCResponse().GetExpectedSignal(momtpc,AliPID::kElectron);
5280 else if(i==1) dedxExp =
fESDpid.GetTPCResponse().GetExpectedSignal(momtpc,AliPID::kMuon);
5281 else if(i==2) dedxExp =
fESDpid.GetTPCResponse().GetExpectedSignal(momtpc,AliPID::kPion);
5282 else if(i==3) dedxExp =
fESDpid.GetTPCResponse().GetExpectedSignal(momtpc,AliPID::kKaon);
5286 if(i==0) resolutionTPC =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),AliPID::kElectron);
5287 else if(i==1) resolutionTPC =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),AliPID::kMuon);
5288 else if(i==2) resolutionTPC =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),AliPID::kPion);
5289 else if(i==3) resolutionTPC =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),AliPID::kKaon);
5290 else if(i==4) resolutionTPC =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),
AliPID::kProton);
5292 if(TMath::Abs(dedx - dedxExp) < 3 * resolutionTPC){
5300 Float_t bbM =
fESDpid.GetTPCResponse().Bethe((betagamma1+betagamma2)*0.5);
5305 Float_t resolutionTOFpr =
fESDpid.GetTOFResponse().GetExpectedSigma(p, exptimes[4], mass[4]);
5307 if(TMath::Abs(dedx-bb1) < resolutionTPCpr*3 && exptimes[4] < time-7*resolutionTOFpr){
5310 else if(TMath::Abs(dedx-bb2) < resolutionTPCpr*3 && exptimes[4] < time-7*resolutionTOFpr){
5313 else if(TMath::Abs(dedx-bbM) < resolutionTPCpr*3 && exptimes[4] < time-7*resolutionTOFpr){
5331 if(!track) pass = kFALSE;
5334 if(track->GetTPCsignal() < 10) pass = kFALSE;
5353 nsigma2 = nsigmaTPC*nsigmaTPC;
5356 if (((track->GetStatus()&AliVTrack::kTOFout)==0)&&((track->GetStatus()&AliVTrack::kTIME)==0)){
5360 nsigma2 = nsigmaTPC*nsigmaTPC + nsigmaTOF*nsigmaTOF;
5378 return "TPCbayesian";
5386 return "TOFbayesianPID";
5388 return "TOFbetaSimple";
5392 return "TPCTOFNsigma";
5394 return "TPCTOFNsigmaPurity";
5411 return "TPCstandalone";
5413 return "SPDtracklets";
5421 return "DeltaVZERO";
5423 return "KappaVZERO";
5442 Int_t det = track->GetDetector();
5444 Float_t clsX = track->GetClusterX();
5445 Float_t clsY = track->GetClusterY();
5446 Float_t clsZ = track->GetClusterZ();
5447 Float_t ncell = track->GetClusterCells();
5448 Float_t adc = track->GetClusterADC();
5459 if (
fCutEta) {
if ( fTrackEta < fEtaMin || fTrackEta >=
fEtaMax ) pass = kFALSE;}
5460 if (
fCutPhi) {
if ( fTrackPhi < fPhiMin || fTrackPhi >=
fPhiMax ) pass = kFALSE;}
5472 if (
id<0)
return kFALSE;
5477 fTrackPhi = TMath::PiOver4()*(0.5+
id%8);
5519 if(
fEvent->GetRunNumber() < 209122){
5522 EventCentrality =
fEvent->GetCentrality()->GetCentralityPercentile(
"V0M");