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);
396 fAliESDtrackCuts(NULL),
397 fMuonTrackCuts(NULL),
400 fCutMChasTrackReferences(that.fCutMChasTrackReferences),
401 fCutMCprocessType(that.fCutMCprocessType),
402 fMCprocessType(that.fMCprocessType),
403 fCutMCPID(that.fCutMCPID),
405 fCutMCfirstMotherPID(that.fCutMCfirstMotherPID),
406 fMCfirstMotherPID(that.fMCfirstMotherPID),
407 fIgnoreSignInMCPID(that.fIgnoreSignInMCPID),
408 fCutMCisPrimary(that.fCutMCisPrimary),
409 fRequireTransportBitForPrimaries(that.fRequireTransportBitForPrimaries),
410 fMCisPrimary(that.fMCisPrimary),
411 fRequireCharge(that.fRequireCharge),
412 fFakesAreOK(that.fFakesAreOK),
413 fCutSPDtrackletDeltaPhi(that.fCutSPDtrackletDeltaPhi),
414 fSPDtrackletDeltaPhiMax(that.fSPDtrackletDeltaPhiMax),
415 fSPDtrackletDeltaPhiMin(that.fSPDtrackletDeltaPhiMin),
416 fIgnoreTPCzRange(that.fIgnoreTPCzRange),
417 fIgnoreTPCzRangeMax(that.fIgnoreTPCzRangeMax),
418 fIgnoreTPCzRangeMin(that.fIgnoreTPCzRangeMin),
419 fCutChi2PerClusterTPC(that.fCutChi2PerClusterTPC),
420 fMaxChi2PerClusterTPC(that.fMaxChi2PerClusterTPC),
421 fMinChi2PerClusterTPC(that.fMinChi2PerClusterTPC),
422 fCutFracSharedTPCCluster(that.fCutFracSharedTPCCluster),
423 fMaxFracSharedTPCCluster(that.fMaxFracSharedTPCCluster),
424 fCutFracSharedITSCluster(that.fCutFracSharedITSCluster),
425 fMaxFracSharedITSCluster(that.fMaxFracSharedITSCluster),
426 fCutCrossedTPCRows(that.fCutCrossedTPCRows),
427 fMinNCrossedRows(that.fMinNCrossedRows),
428 fMinCrossedRowsOverFindableClusters(that.fMinCrossedRowsOverFindableClusters),
429 fCutGoldenChi2(that.fCutGoldenChi2),
430 fMaxGoldenChi2(that.fMaxGoldenChi2),
431 fRequireTOFSignal(that.fRequireTOFSignal),
432 fCutNClustersTPC(that.fCutNClustersTPC),
433 fNClustersTPCMax(that.fNClustersTPCMax),
434 fNClustersTPCMin(that.fNClustersTPCMin),
435 fCutNClustersITS(that.fCutNClustersITS),
436 fNClustersITSMax(that.fNClustersITSMax),
437 fNClustersITSMin(that.fNClustersITSMin),
438 fCutChi2PerClusterITS(that.fCutChi2PerClusterITS),
439 fCutITSClusterGlobal(that.fCutITSClusterGlobal),
440 fMaxChi2PerClusterITS(that.fMaxChi2PerClusterITS),
441 fUseAODFilterBit(that.fUseAODFilterBit),
442 fAODFilterBit(that.fAODFilterBit),
443 fCutDCAToVertexXY(that.fCutDCAToVertexXY),
444 fCutDCAToVertexXYPtDepAOD(that.fCutDCAToVertexXYPtDepAOD),
445 fCutDCAToVertexXYAOD(that.fCutDCAToVertexXYAOD),
446 fMaxDCAxyAOD(that.fMaxDCAxyAOD),
447 fCutDCAToVertexZAOD(that.fCutDCAToVertexZAOD),
448 fMaxDCAzAOD(that.fMaxDCAzAOD),
449 fCutDCAToVertexZ(that.fCutDCAToVertexZ),
450 fCutMinimalTPCdedx(that.fCutMinimalTPCdedx),
451 fMinimalTPCdedx(that.fMinimalTPCdedx),
452 fCutTPCSecbound(that.fCutTPCSecbound),
453 fCutTPCSecboundMinpt(that.fCutTPCSecboundMinpt),
454 fCutTPCSecboundVar(that.fCutTPCSecboundVar),
457 fLinearizeVZEROresponse(that.fLinearizeVZEROresponse),
458 fCentralityPercentileMin(that.fCentralityPercentileMin),
459 fCentralityPercentileMax(that.fCentralityPercentileMax),
460 fPurityLevel(that.fPurityLevel),
461 fCutPmdDet(that.fCutPmdDet),
462 fPmdDet(that.fPmdDet),
463 fCutPmdAdc(that.fCutPmdAdc),
464 fPmdAdc(that.fPmdAdc),
465 fCutPmdNcell(that.fCutPmdNcell),
466 fPmdNcell(that.fPmdNcell),
467 fMinKinkAngle(that.fMinKinkAngle),
468 fMinKinkRadius(that.fMinKinkRadius),
469 fMaxKinkRadius(that.fMaxKinkRadius),
470 fMinKinkQt(that.fMinKinkQt),
471 fMaxKinkQt(that.fMaxKinkQt),
472 fMinKinkInvMassKmu(that.fMinKinkInvMassKmu),
473 fMaxKinkInvMassKmu(that.fMaxKinkInvMassKmu),
474 fForceTPCstandalone(that.fForceTPCstandalone),
475 fRequireKinkDaughters(that.fRequireKinkDaughters),
476 fParamType(that.fParamType),
477 fParamMix(that.fParamMix),
486 fTrackLabel(INT_MIN),
491 fESDpid(that.fESDpid),
492 fBayesianResponse(NULL),
493 fPIDsource(that.fPIDsource),
496 fParticleID(that.fParticleID),
497 fParticleProbability(that.fParticleProbability),
498 fAllowTOFmismatchFlag(that.fAllowTOFmismatchFlag),
499 fRequireStrictTOFTPCagreement(that.fRequireStrictTOFTPCagreement),
500 fCutRejectElectronsWithTPCpid(that.fCutRejectElectronsWithTPCpid),
503 fPtTOFPIDoff(that.fPtTOFPIDoff),
504 fVZEROgainEqualization(NULL),
505 fVZEROgainEqualizationCen(NULL),
506 fApplyRecentering(that.fApplyRecentering),
507 fVZEROgainEqualizationPerRing(that.fVZEROgainEqualizationPerRing),
508 fDivSigma(that.fDivSigma),
513 fPIDResponse(that.fPIDResponse),
514 fNsigmaCut2(that.fNsigmaCut2),
515 fPurityFunctionsFile(that.fPurityFunctionsFile),
516 fPurityFunctionsList(that.fPurityFunctionsList),
517 fCutITSclusterShared(kFALSE),
518 fMaxITSclusterShared(0),
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");
5539 if(CorrectionFactor) {
5544 AliMultSelection *MultSelection = 0x0;
5545 MultSelection = (AliMultSelection * )
fEvent->FindListObject(
"MultSelection");
5546 if( !MultSelection) {
5548 AliFatal(
"AliMultSelection not found, did you Run AliMultSelectionTask? \n");
5550 EventCentrality = MultSelection->GetMultiplicityPercentile(
"V0M");
5551 if(EventCentrality < 0 && EventCentrality > 100){
5552 AliWarning(
"No Correction Available for this Centrality \n");