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"
87 fAliESDtrackCuts(NULL),
91 fCutMChasTrackReferences(kFALSE),
92 fCutMCprocessType(kFALSE),
93 fMCprocessType(kPNoProcess),
96 fCutMCfirstMotherPID(kFALSE),
98 fIgnoreSignInMCPID(kFALSE),
99 fCutMCisPrimary(kFALSE),
100 fRequireTransportBitForPrimaries(kTRUE),
101 fMCisPrimary(kFALSE),
102 fRequireCharge(kFALSE),
104 fCutSPDtrackletDeltaPhi(kFALSE),
105 fSPDtrackletDeltaPhiMax(FLT_MAX),
106 fSPDtrackletDeltaPhiMin(-FLT_MAX),
107 fIgnoreTPCzRange(kFALSE),
108 fIgnoreTPCzRangeMax(FLT_MAX),
109 fIgnoreTPCzRangeMin(-FLT_MAX),
110 fCutChi2PerClusterTPC(kFALSE),
111 fMaxChi2PerClusterTPC(FLT_MAX),
112 fMinChi2PerClusterTPC(-FLT_MAX),
113 fCutFracSharedTPCCluster(kFALSE),
114 fMaxFracSharedTPCCluster(FLT_MAX),
115 fCutCrossedTPCRows(kFALSE),
117 fMinCrossedRowsOverFindableClusters(2.),
118 fCutGoldenChi2(kFALSE),
119 fMaxGoldenChi2(FLT_MAX),
120 fRequireTOFSignal(kFALSE),
121 fCutNClustersTPC(kFALSE),
122 fNClustersTPCMax(INT_MAX),
123 fNClustersTPCMin(INT_MIN),
124 fCutNClustersITS(kFALSE),
125 fNClustersITSMax(INT_MAX),
126 fNClustersITSMin(INT_MIN),
127 fCutChi2PerClusterITS(kFALSE),
128 fCutITSClusterGlobal(kFALSE),
129 fMaxChi2PerClusterITS(FLT_MAX),
130 fUseAODFilterBit(kTRUE),
132 fCutDCAToVertexXY(kFALSE),
133 fCutDCAToVertexXYPtDepAOD(kFALSE),
134 fCutDCAToVertexXYAOD(kFALSE),
135 fMaxDCAxyAOD(FLT_MAX),
136 fCutDCAToVertexZAOD(kFALSE),
137 fMaxDCAzAOD(FLT_MAX),
138 fCutDCAToVertexZ(kFALSE),
139 fCutMinimalTPCdedx(kFALSE),
141 fCutTPCSecbound(kFALSE),
142 fCutTPCSecboundMinpt(0.2),
143 fCutTPCSecboundVar(kFALSE),
146 fLinearizeVZEROresponse(kFALSE),
147 fCentralityPercentileMin(0.),
148 fCentralityPercentileMax(5.),
154 fCutPmdNcell(kFALSE),
156 fMinKinkAngle(TMath::DegToRad()*2.),
157 fMinKinkRadius(130.),
158 fMaxKinkRadius(200.),
161 fMinKinkInvMassKmu(0.),
162 fMaxKinkInvMassKmu(0.6),
163 fForceTPCstandalone(kFALSE),
164 fRequireKinkDaughters(kFALSE),
175 fTrackLabel(INT_MIN),
181 fBayesianResponse(NULL),
185 fParticleID(AliPID::kUnknown),
186 fParticleProbability(.9),
187 fAllowTOFmismatchFlag(kFALSE),
188 fRequireStrictTOFTPCagreement(kFALSE),
189 fCutRejectElectronsWithTPCpid(kFALSE),
193 fVZEROgainEqualization(NULL),
194 fVZEROgainEqualizationCen(NULL),
195 fApplyRecentering(kFALSE),
196 fVZEROgainEqualizationPerRing(kFALSE),
204 fPurityFunctionsFile(0),
205 fPurityFunctionsList(0),
206 fCutITSclusterShared(kFALSE),
207 fMaxITSclusterShared(0),
219 fBayesianResponse->SetNewTrackParam();
220 for(
Int_t i(0); i < 4; i++) {
224 for(
Int_t i(0); i < 8; i++) fUseVZERORing[i] = kTRUE;
226 for(
Int_t i(0) ; i < 180; i++) {
227 fPurityFunction[i]=NULL;
230 fPhiCutLow =
new TF1(
"fPhiCutLow",
"0.1/x/x+pi/18.0-0.025", 0, 100);
231 fPhiCutHigh =
new TF1(
"fPhiCutHigh",
"0.12/x+pi/18.0+0.035", 0, 100);
237 fAliESDtrackCuts(NULL),
238 fMuonTrackCuts(NULL),
241 fCutMChasTrackReferences(kFALSE),
242 fCutMCprocessType(kFALSE),
243 fMCprocessType(kPNoProcess),
246 fCutMCfirstMotherPID(kFALSE),
247 fMCfirstMotherPID(0),
248 fIgnoreSignInMCPID(kFALSE),
249 fCutMCisPrimary(kFALSE),
250 fRequireTransportBitForPrimaries(kTRUE),
251 fMCisPrimary(kFALSE),
252 fRequireCharge(kFALSE),
254 fCutSPDtrackletDeltaPhi(kFALSE),
255 fSPDtrackletDeltaPhiMax(FLT_MAX),
256 fSPDtrackletDeltaPhiMin(-FLT_MAX),
257 fIgnoreTPCzRange(kFALSE),
258 fIgnoreTPCzRangeMax(FLT_MAX),
259 fIgnoreTPCzRangeMin(-FLT_MAX),
260 fCutChi2PerClusterTPC(kFALSE),
261 fMaxChi2PerClusterTPC(FLT_MAX),
262 fMinChi2PerClusterTPC(-FLT_MAX),
263 fCutFracSharedTPCCluster(kFALSE),
264 fMaxFracSharedTPCCluster(FLT_MAX),
265 fCutCrossedTPCRows(kFALSE),
267 fMinCrossedRowsOverFindableClusters(2.),
268 fCutGoldenChi2(kFALSE),
269 fMaxGoldenChi2(FLT_MAX),
270 fRequireTOFSignal(kFALSE),
271 fCutNClustersTPC(kFALSE),
272 fNClustersTPCMax(INT_MAX),
273 fNClustersTPCMin(INT_MIN),
274 fCutNClustersITS(kFALSE),
275 fNClustersITSMax(INT_MAX),
276 fNClustersITSMin(INT_MIN),
277 fCutChi2PerClusterITS(kFALSE),
278 fCutITSClusterGlobal(kFALSE),
279 fMaxChi2PerClusterITS(FLT_MAX),
280 fUseAODFilterBit(kTRUE),
282 fCutDCAToVertexXY(kFALSE),
283 fCutDCAToVertexXYPtDepAOD(kFALSE),
284 fCutDCAToVertexXYAOD(kFALSE),
285 fMaxDCAxyAOD(FLT_MAX),
286 fCutDCAToVertexZAOD(kFALSE),
287 fMaxDCAzAOD(FLT_MAX),
288 fCutDCAToVertexZ(kFALSE),
289 fCutMinimalTPCdedx(kFALSE),
291 fCutTPCSecbound(kFALSE),
292 fCutTPCSecboundMinpt(0.2),
293 fCutTPCSecboundVar(kFALSE),
296 fLinearizeVZEROresponse(kFALSE),
297 fCentralityPercentileMin(0.),
298 fCentralityPercentileMax(5.),
304 fCutPmdNcell(kFALSE),
306 fMinKinkAngle(TMath::DegToRad()*2.),
307 fMinKinkRadius(130.),
308 fMaxKinkRadius(200.),
311 fMinKinkInvMassKmu(0.0),
312 fMaxKinkInvMassKmu(0.6),
313 fForceTPCstandalone(kFALSE),
314 fRequireKinkDaughters(kFALSE),
325 fTrackLabel(INT_MIN),
331 fBayesianResponse(NULL),
335 fParticleID(AliPID::kUnknown),
336 fParticleProbability(.9),
337 fAllowTOFmismatchFlag(kFALSE),
338 fRequireStrictTOFTPCagreement(kFALSE),
339 fCutRejectElectronsWithTPCpid(kFALSE),
343 fVZEROgainEqualization(NULL),
344 fVZEROgainEqualizationCen(NULL),
345 fApplyRecentering(kFALSE),
346 fVZEROgainEqualizationPerRing(kFALSE),
354 fPurityFunctionsFile(0),
355 fPurityFunctionsList(0),
356 fCutITSclusterShared(kFALSE),
357 fMaxITSclusterShared(0),
363 SetTitle(
"AliFlowTrackCuts");
364 fESDpid.GetTPCResponse().SetBetheBlochParameters( 0.0283086,
373 for(
Int_t i(0); i < 4; i++) {
379 for(
int i=0;i<180;i++){
383 fPhiCutLow =
new TF1(
"fPhiCutLow",
"0.1/x/x+pi/18.0-0.025", 0, 100);
384 fPhiCutHigh =
new TF1(
"fPhiCutHigh",
"0.12/x+pi/18.0+0.035", 0, 100);
390 fAliESDtrackCuts(NULL),
391 fMuonTrackCuts(NULL),
394 fCutMChasTrackReferences(that.fCutMChasTrackReferences),
395 fCutMCprocessType(that.fCutMCprocessType),
396 fMCprocessType(that.fMCprocessType),
397 fCutMCPID(that.fCutMCPID),
399 fCutMCfirstMotherPID(that.fCutMCfirstMotherPID),
400 fMCfirstMotherPID(that.fMCfirstMotherPID),
401 fIgnoreSignInMCPID(that.fIgnoreSignInMCPID),
402 fCutMCisPrimary(that.fCutMCisPrimary),
403 fRequireTransportBitForPrimaries(that.fRequireTransportBitForPrimaries),
404 fMCisPrimary(that.fMCisPrimary),
405 fRequireCharge(that.fRequireCharge),
406 fFakesAreOK(that.fFakesAreOK),
407 fCutSPDtrackletDeltaPhi(that.fCutSPDtrackletDeltaPhi),
408 fSPDtrackletDeltaPhiMax(that.fSPDtrackletDeltaPhiMax),
409 fSPDtrackletDeltaPhiMin(that.fSPDtrackletDeltaPhiMin),
410 fIgnoreTPCzRange(that.fIgnoreTPCzRange),
411 fIgnoreTPCzRangeMax(that.fIgnoreTPCzRangeMax),
412 fIgnoreTPCzRangeMin(that.fIgnoreTPCzRangeMin),
413 fCutChi2PerClusterTPC(that.fCutChi2PerClusterTPC),
414 fMaxChi2PerClusterTPC(that.fMaxChi2PerClusterTPC),
415 fMinChi2PerClusterTPC(that.fMinChi2PerClusterTPC),
416 fCutFracSharedTPCCluster(that.fCutFracSharedTPCCluster),
417 fMaxFracSharedTPCCluster(that.fMaxFracSharedTPCCluster),
418 fCutCrossedTPCRows(that.fCutCrossedTPCRows),
419 fMinNCrossedRows(that.fMinNCrossedRows),
420 fMinCrossedRowsOverFindableClusters(that.fMinCrossedRowsOverFindableClusters),
421 fCutGoldenChi2(that.fCutGoldenChi2),
422 fMaxGoldenChi2(that.fMaxGoldenChi2),
423 fRequireTOFSignal(that.fRequireTOFSignal),
424 fCutNClustersTPC(that.fCutNClustersTPC),
425 fNClustersTPCMax(that.fNClustersTPCMax),
426 fNClustersTPCMin(that.fNClustersTPCMin),
427 fCutNClustersITS(that.fCutNClustersITS),
428 fNClustersITSMax(that.fNClustersITSMax),
429 fNClustersITSMin(that.fNClustersITSMin),
430 fCutChi2PerClusterITS(that.fCutChi2PerClusterITS),
431 fCutITSClusterGlobal(that.fCutITSClusterGlobal),
432 fMaxChi2PerClusterITS(that.fMaxChi2PerClusterITS),
433 fUseAODFilterBit(that.fUseAODFilterBit),
434 fAODFilterBit(that.fAODFilterBit),
435 fCutDCAToVertexXY(that.fCutDCAToVertexXY),
436 fCutDCAToVertexXYPtDepAOD(that.fCutDCAToVertexXYPtDepAOD),
437 fCutDCAToVertexXYAOD(that.fCutDCAToVertexXYAOD),
438 fMaxDCAxyAOD(that.fMaxDCAxyAOD),
439 fCutDCAToVertexZAOD(that.fCutDCAToVertexZAOD),
440 fMaxDCAzAOD(that.fMaxDCAzAOD),
441 fCutDCAToVertexZ(that.fCutDCAToVertexZ),
442 fCutMinimalTPCdedx(that.fCutMinimalTPCdedx),
443 fMinimalTPCdedx(that.fMinimalTPCdedx),
444 fCutTPCSecbound(that.fCutTPCSecbound),
445 fCutTPCSecboundMinpt(that.fCutTPCSecboundMinpt),
446 fCutTPCSecboundVar(that.fCutTPCSecboundVar),
449 fLinearizeVZEROresponse(that.fLinearizeVZEROresponse),
450 fCentralityPercentileMin(that.fCentralityPercentileMin),
451 fCentralityPercentileMax(that.fCentralityPercentileMax),
452 fPurityLevel(that.fPurityLevel),
453 fCutPmdDet(that.fCutPmdDet),
454 fPmdDet(that.fPmdDet),
455 fCutPmdAdc(that.fCutPmdAdc),
456 fPmdAdc(that.fPmdAdc),
457 fCutPmdNcell(that.fCutPmdNcell),
458 fPmdNcell(that.fPmdNcell),
459 fMinKinkAngle(that.fMinKinkAngle),
460 fMinKinkRadius(that.fMinKinkRadius),
461 fMaxKinkRadius(that.fMaxKinkRadius),
462 fMinKinkQt(that.fMinKinkQt),
463 fMaxKinkQt(that.fMaxKinkQt),
464 fMinKinkInvMassKmu(that.fMinKinkInvMassKmu),
465 fMaxKinkInvMassKmu(that.fMaxKinkInvMassKmu),
466 fForceTPCstandalone(that.fForceTPCstandalone),
467 fRequireKinkDaughters(that.fRequireKinkDaughters),
468 fParamType(that.fParamType),
469 fParamMix(that.fParamMix),
478 fTrackLabel(INT_MIN),
483 fESDpid(that.fESDpid),
484 fBayesianResponse(NULL),
485 fPIDsource(that.fPIDsource),
488 fParticleID(that.fParticleID),
489 fParticleProbability(that.fParticleProbability),
490 fAllowTOFmismatchFlag(that.fAllowTOFmismatchFlag),
491 fRequireStrictTOFTPCagreement(that.fRequireStrictTOFTPCagreement),
492 fCutRejectElectronsWithTPCpid(that.fCutRejectElectronsWithTPCpid),
495 fPtTOFPIDoff(that.fPtTOFPIDoff),
496 fVZEROgainEqualization(NULL),
497 fVZEROgainEqualizationCen(NULL),
498 fApplyRecentering(that.fApplyRecentering),
499 fVZEROgainEqualizationPerRing(that.fVZEROgainEqualizationPerRing),
500 fDivSigma(that.fDivSigma),
505 fPIDResponse(that.fPIDResponse),
506 fNsigmaCut2(that.fNsigmaCut2),
507 fPurityFunctionsFile(that.fPurityFunctionsFile),
508 fPurityFunctionsList(that.fPurityFunctionsList),
509 fCutITSclusterShared(kFALSE),
510 fMaxITSclusterShared(0),
529 fBayesianResponse->SetNewTrackParam();
535 for(
Int_t i(0); i < 4; i++) {
541 for(
Int_t i(0); i < 180; i++) {
545 fPhiCutLow =
new TF1(
"fPhiCutLow",
"0.1/x/x+pi/18.0-0.025", 0, 100);
546 fPhiCutHigh =
new TF1(
"fPhiCutHigh",
"0.12/x+pi/18.0+0.035", 0, 100);
553 if (
this==&that)
return *
this;
680 #if ROOT_VERSION_CODE < ROOT_VERSION(5,99,0)
689 for(
Int_t i(0); i < 4; i++) {
705 fPhiCutLow =
new TF1(
"fPhiCutLow",
"0.1/x/x+pi/18.0-0.025", 0, 100);
706 fPhiCutHigh =
new TF1(
"fPhiCutHigh",
"0.12/x+pi/18.0+0.035", 0, 100);
719 if (
fQA) {
fQA->SetOwner();
fQA->Delete();
delete fQA; }
748 for(
int i=0;i<180;i++){
772 AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
773 if(inputHandler)
fPIDResponse=inputHandler->GetPIDResponse();
787 fESDpid.SetTOFResponse(myESD,AliESDpid::kTOF_T0);
792 if(myAOD->GetTOFHeader()){
793 fESDpid.SetTOFResponse(myAOD,AliESDpid::kTOF_T0);
814 fESDpid.GetTPCResponse().SetBetheBlochParameters( 2.15898e+00/50.,
826 AliVParticle* vparticle =
dynamic_cast<AliVParticle*
>(obj);
835 AliMultiplicity* tracklets =
dynamic_cast<AliMultiplicity*
>(obj);
836 if (tracklets)
return PassesCuts(tracklets,
id);
837 AliAODTracklets* trkletAOD =
dynamic_cast<AliAODTracklets*
>(obj);
838 if (trkletAOD)
return PassesCuts(trkletAOD,
id);
839 AliESDPmdTrack* pmdtrack =
dynamic_cast<AliESDPmdTrack*
>(obj);
841 AliVVZERO* vvzero =
dynamic_cast<AliVVZERO*
>(obj);
843 AliESDkink* kink =
dynamic_cast<AliESDkink*
>(obj);
855 AliVParticle* vparticle =
dynamic_cast<AliVParticle*
>(obj);
860 AliMultiplicity* tracklets =
dynamic_cast<AliMultiplicity*
>(obj);
863 Int_t label0 = tracklets->GetLabel(
id,0);
864 Int_t label1 = tracklets->GetLabel(
id,1);
866 if (label0!=label1) label = -666;
887 if (
id<0)
return kFALSE;
895 if (
fCutEta) {
if ( fTrackEta < fEtaMin || fTrackEta >=
fEtaMax )
return kFALSE;}
896 if (
fCutPhi) {
if ( fTrackPhi < fPhiMin || fTrackPhi >=
fPhiMax )
return kFALSE;}
901 Int_t label0 = tracklet->GetLabel(
id,0);
902 Int_t label1 = tracklet->GetLabel(
id,1);
904 fTrackLabel = (label0==label1)?tracklet->GetLabel(
id,1):-1;
918 if (
id<0)
return kFALSE;
925 fTrackEta = -1.*TMath::Log(TMath::Tan(tracklet->GetTheta(
id)/2.));
927 if (
fCutEta) {
if ( fTrackEta < fEtaMin || fTrackEta >=
fEtaMax )
return kFALSE;}
928 if (
fCutPhi) {
if ( fTrackPhi < fPhiMin || fTrackPhi >=
fPhiMax )
return kFALSE;}
933 Int_t label0 = tracklet->GetLabel(
id,0);
934 Int_t label1 = tracklet->GetLabel(
id,1);
936 fTrackLabel = (label0==label1)?tracklet->GetLabel(
id,1):-1;
948 if (!mcEvent)
return kFALSE;
949 if (label<0)
return kFALSE;
950 AliMCParticle* mcparticle =
static_cast<AliMCParticle*
>(mcEvent->GetTrack(label));
951 if (!mcparticle) {AliError(
"no MC track");
return kFALSE;}
959 Int_t pdgCode = mcparticle->PdgCode();
962 if (TMath::Abs(
fMCPID) != TMath::Abs(pdgCode))
return kFALSE;
966 if (
fMCPID != pdgCode)
return kFALSE;
972 TParticle* tparticle=mcparticle->Particle();
973 Int_t firstMotherLabel = 0;
974 if (tparticle) { firstMotherLabel = tparticle->GetFirstMother(); }
975 AliVParticle* firstMotherParticle = mcEvent->GetTrack(firstMotherLabel);
976 Int_t pdgcodeFirstMother = 0;
977 if (firstMotherParticle) { pdgcodeFirstMother = firstMotherParticle->PdgCode(); }
982 TParticle* particle = mcparticle->Particle();
983 Int_t processID = particle->GetUniqueID();
988 if (mcparticle->GetNumberOfTrackReferences()<1)
return kFALSE;
1011 fV0 =
const_cast<AliESDv0*
>(v0);
1016 if (!v0->GetOnFlyStatus())
return kFALSE;
1017 const AliExternalTrackParam *negHelix=v0->GetParamN();
1018 const AliExternalTrackParam *posHelix=v0->GetParamP();
1019 AliVParticle *v0tracks[2];
1020 v0tracks[0] =
fEvent->GetTrack(v0->GetNindex());
1021 v0tracks[1] =
fEvent->GetTrack(v0->GetPindex());
1022 if( v0tracks[1]->Charge() < 0)
1024 v0tracks[1] =
fEvent->GetTrack(v0->GetNindex());
1025 v0tracks[0] =
fEvent->GetTrack(v0->GetPindex());
1026 negHelix=v0->GetParamP();
1027 posHelix=v0->GetParamN();
1030 int KalmanPidPairs[4][2] =
1041 AliKFParticle v0trackKFneg(*(negHelix),KalmanPidPairs[
id][0]);
1042 AliKFParticle v0trackKFpos(*(posHelix),KalmanPidPairs[
id][1]);
1043 AliKFParticle v0particleRefit;
1044 v0particleRefit += v0trackKFneg;
1045 v0particleRefit += v0trackKFpos;
1047 v0particleRefit.GetMass(
fTrackMass,invMassErr);
1050 fTrackPt = v0particleRefit.GetPt();
1051 fTrackPhi = TMath::Pi()+v0particleRefit.GetPhi();
1060 if ( v0tracks[0]->Charge() == v0tracks[1]->Charge() ) pass=kFALSE;
1061 if ( v0tracks[0]->Pt()<0.15 || v0tracks[1]->Pt()<0.15 ) pass=kFALSE;
1073 fKink=
const_cast<AliESDkink*
>(kink);
1077 Float_t kinkAngle = kink->GetAngle(2);
1079 Double_t kinkRadius = kink->GetR();
1080 if (kinkRadius<fMinKinkRadius || kinkRadius>
fMaxKinkRadius) pass = kFALSE;
1083 const TVector3 motherMfromKink(kink->GetMotherP());
1084 const TVector3 daughterMfromKink(kink->GetDaughterP());
1086 if ( qt < fMinKinkQt || qt >
fMaxKinkQt) pass = kFALSE;
1089 Float_t energyDaughterMu = TMath::Sqrt( daughterMfromKink.Mag()*daughterMfromKink.Mag()+
1090 0.105658*0.105658 );
1091 Float_t p1XM = motherMfromKink.Px();
1092 Float_t p1YM = motherMfromKink.Py();
1093 Float_t p1ZM = motherMfromKink.Pz();
1094 Float_t p2XM = daughterMfromKink.Px();
1095 Float_t p2YM = daughterMfromKink.Py();
1096 Float_t p2ZM = daughterMfromKink.Pz();
1097 Float_t p3Daughter = TMath::Sqrt( ((p1XM-p2XM)*(p1XM-p2XM))+((p1YM-p2YM)*(p1YM-p2YM))+
1098 ((p1ZM-p2ZM)*(p1ZM-p2ZM)) );
1099 Double_t invariantMassKmu = TMath::Sqrt( (energyDaughterMu+p3Daughter)*(energyDaughterMu+p3Daughter)-
1100 motherMfromKink.Mag()*motherMfromKink.Mag() );
1108 if (pass)
QAafter(13)->Fill(qt);
1109 QAbefore(14)->Fill(invariantMassKmu);
1110 if (pass)
QAafter(14)->Fill(invariantMassKmu);
1111 const Double_t* kinkPosition = kink->GetPosition();
1112 QAbefore(15)->Fill(kinkPosition[0],kinkPosition[1]);
1113 if (pass)
QAafter(15)->Fill(kinkPosition[0],kinkPosition[1]);
1114 QAbefore(16)->Fill(motherMfromKink.Mag(),kinkAngle*TMath::RadToDeg());
1115 if (pass)
QAafter(16)->Fill(motherMfromKink.Mag(),kinkAngle*TMath::RadToDeg());
1119 Int_t indexKinkMother = kink->GetIndex(0);
1120 AliESDtrack* motherTrack =
dynamic_cast<AliESDtrack*
>(
fEvent->GetTrack(indexKinkMother));
1121 if (!motherTrack)
return kFALSE;
1144 Bool_t isMCparticle = kFALSE;
1145 AliESDtrack* esdTrack =
dynamic_cast<AliESDtrack*
>(vparticle);
1146 AliAODTrack* aodTrack = NULL;
1157 isMCparticle = (
dynamic_cast<AliMCParticle*
>(
fTrack))!=NULL;
1158 aodTrack =
dynamic_cast<AliAODTrack*
>(vparticle);
1163 if (!
fTrack)
return kFALSE;
1165 if (esdTrack) esdTrack =
static_cast<AliESDtrack*
>(
fTrack);
1171 if (
fCutPt) {
if (pt < fPtMin || pt >=
fPtMax ) pass=kFALSE;}
1180 if (charge!=
fCharge) pass=kFALSE;
1188 if (esdTrack) {
if (!
PassesESDcuts(esdTrack)) { pass=kFALSE; } }
1189 if (aodTrack) {
if (!
PassesAODcuts(aodTrack,pass)) { pass=kFALSE; } }
1196 Int_t processID = tparticle->GetUniqueID();
1197 Int_t firstMotherLabel = tparticle->GetFirstMother();
1205 AliVParticle* firstMotherParticle =
fMCevent->GetTrack(firstMotherLabel);
1206 Int_t pdgcodeFirstMother = 0;
1207 if (firstMotherParticle) {pdgcodeFirstMother = firstMotherParticle->PdgCode();}
1210 switch (TMath::Abs(pdgcode))
1213 pdg = AliPID::kElectron + 0.5;
break;
1215 pdg = AliPID::kMuon + 0.5;
break;
1217 pdg = AliPID::kPion + 0.5;
break;
1219 pdg = AliPID::kKaon + 0.5;
break;
1223 pdg = AliPID::kUnknown + 0.5;
break;
1225 pdg = TMath::Sign(pdg,static_cast<Float_t>(pdgcode));
1228 switch (pdgcodeFirstMother)
1239 case 12:
case 14:
case 16:
1368 QAbefore(3)->Fill(p,primary?0.5:-0.5);
1369 QAbefore(4)->Fill(p,static_cast<Float_t>(processID));
1370 QAbefore(7)->Fill(p,geantCode+0.5);
1371 if (pass)
QAafter(2)->Fill(p,pdg);
1372 if (pass)
QAafter(3)->Fill(p,primary?0.5:-0.5);
1373 if (pass)
QAafter(4)->Fill(p,static_cast<Float_t>(processID));
1374 if (pass)
QAafter(7)->Fill(p,geantCode);
1391 Int_t ntpccls = track->GetTPCNcls();
1397 Int_t nitscls = track->GetITSNcls();
1403 Double_t chi2tpc = track->Chi2perNDF();
1409 Double_t chi2TIS = track->GetITSchi2()/track->GetITSNcls();
1416 for (
Int_t i=0; i<2; i++) {
1417 if(track->HasPointOnITSLayer(i)) bSPDCl = kTRUE;
1419 Bool_t bSDDCl = track->HasPointOnITSLayer(2);
1421 if (bSPDCl || (!bSPDCl && bSDDCl)) temppass = kTRUE;
1422 else temppass = kFALSE;
1423 if(!temppass) pass=kFALSE;
1428 Int_t ntpccls = track->GetTPCncls();
1430 Int_t ntpcclsS = track->GetTPCnclsS();
1431 Double_t fshtpccls = 1.*ntpcclsS/ntpccls;
1438 Int_t nCrossedRows = track->GetTPCNCrossedRows();
1440 Float_t CrossedRowsOverFindableClusters = track->GetTPCFoundFraction();
1446 Double_t GoldenChi2 = track->GetChi2TPCConstrainedVsGlobal();
1452 if(TMath::Abs(track->GetTOFsignalDz())>10.) pass=kFALSE;
1453 if(track->GetTOFsignal() < 12000.) pass=kFALSE;
1454 if(track->GetTOFsignal() > 25000.) pass=kFALSE;
1457 if (
GetRequireTPCRefit() && !(track->GetStatus() & AliESDtrack::kTPCrefit) ) pass=kFALSE;
1458 if (
GetRequireITSRefit() && !(track->GetStatus() & AliESDtrack::kITSrefit) ) pass=kFALSE;
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 AliAODTrack copy(*track);
1472 Double_t bCov[3] = {-99., -99., -99.};
1473 if(copy.PropagateToDCA(
fEvent->GetPrimaryVertex(),
fEvent->GetMagneticField(), 100., b, bCov)) {
1483 Double_t MaxDCAPtDep = 0.0182+0.0350/pow(track->Pt(),1.01);
1484 if (TMath::Abs(DCAxy)>MaxDCAPtDep) pass=kFALSE;
1490 Double_t dedx = track->GetTPCsignal();
1495 track->GetIntegratedTimes(time);
1498 Double_t xyz[3]={-9999.,-9999.,-9999.};
1499 const double r = 84.;
1500 if (!track->GetXYZatR(r,
fEvent->GetMagneticField(), xyz, NULL)) pass=kFALSE;
1501 Double_t cra = TMath::ATan2(xyz[1],xyz[0]);
1502 Double_t dpe = 3.*TMath::TwoPi()/360.;
1503 for(
Int_t nb=-9; nb<=9; nb++) {
1505 if(cra<bnp+dpe && cra>bnp-dpe) pass=kFALSE;
1510 if(
fEvent->GetMagneticField() < 0)
1511 phimod = TMath::TwoPi() - phimod;
1512 if(track->Charge() < 0)
1513 phimod = TMath::TwoPi() - phimod;
1515 cout <<
"Warning!!!!! phi < 0: " << phimod << endl;
1517 phimod += TMath::Pi()/18.0;
1518 phimod = fmod(phimod, TMath::Pi()/9.0);
1519 if(phimod < fPhiCutHigh->Eval(track->Pt()) && phimod >
fPhiCutLow->Eval(track->Pt()))
1530 Double_t momTPC = track->GetTPCmomentum();
1534 QAbefore( 5)->Fill(track->Pt(),DCAxy);
1535 QAbefore( 6)->Fill(track->Pt(),DCAz);
1536 if (pass)
QAafter( 1)->Fill(momTPC,dedx);
1537 if (pass)
QAafter( 5)->Fill(track->Pt(),DCAxy);
1538 if (pass)
QAafter( 6)->Fill(track->Pt(),DCAz);
1539 QAbefore( 8)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kElectron]));
1540 if (pass)
QAafter( 8)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kElectron]));
1541 QAbefore( 9)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kMuon]));
1542 if (pass)
QAafter( 9)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kMuon]));
1543 QAbefore(10)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kPion]));
1544 if (pass)
QAafter( 10)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kPion]));
1545 QAbefore(11)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kKaon]));
1546 if (pass)
QAafter( 11)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kKaon]));
1549 QAbefore(18)->Fill(track->P(),track->Chi2perNDF());
1550 if (pass)
QAafter( 18)->Fill(track->P(),track->Chi2perNDF());
1551 Int_t ntpccls = track->GetTPCncls();
1553 Int_t ntpcclsS = track->GetTPCnclsS();
1554 Double_t fshtpccls = 1.*ntpcclsS/ntpccls;
1555 QAbefore(19)->Fill(track->P(),fshtpccls);
1556 if (pass)
QAafter( 19)->Fill(track->P(),fshtpccls);
1571 track->GetImpactParameters(dcaxy,dcaz);
1572 const AliExternalTrackParam* pout = track->GetOuterParam();
1573 const AliExternalTrackParam* pin = track->GetInnerParam();
1581 if (zin*zout<0) pass=kFALSE;
1583 if (zout < fIgnoreTPCzRangeMin || zout > fIgnoreTPCzRangeMax) pass=kFALSE;
1588 track->GetTPCNclsIter1():track->GetTPCNcls();
1592 track->GetTPCchi2Iter1():track->GetTPCchi2();
1593 tpcchi2 = (ntpccls>0)?tpcchi2/ntpccls:-FLT_MAX;
1608 Int_t nitscls = track->GetNcls(0);
1625 if (pass)
QAbefore(0)->Fill(track->GetP(),beta);
1626 if (pass)
QAbefore(1)->Fill(pin->GetP(),dedx);
1637 track->GetTPCpid(pidTPC);
1652 if (pass)
QAafter(0)->Fill(track->GetP(),beta);
1653 if (pass)
QAafter(1)->Fill(pin->GetP(),dedx);
1662 if (pass)
QAafter(5)->Fill(pt,dcaxy);
1663 if (pass)
QAafter(6)->Fill(pt,dcaz);
1693 if (!track->FillTPCOnlyTrack(
fTPCtrack))
1709 if (!track->FillTPCOnlyTrack(
fTPCtrack))
1735 Int_t multiplicity = 0;
1745 for (
Int_t i=0; i<
event->GetNumberOfTracks(); i++)
1747 if (
IsSelected(event->GetTrack(i))) multiplicity++;
1750 return multiplicity;
1923 cuts->
fAliESDtrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2009(selPrimaries);
2033 trackCollection->AddAtAndExpand(flowtrack,trackIndex);
2036 TParticle *tmpTParticle=NULL;
2037 AliMCParticle* tmpAliMCParticle=NULL;
2038 AliExternalTrackParam* externalParams=NULL;
2039 AliESDtrack* esdtrack=NULL;
2061 tmpAliMCParticle =
static_cast<AliMCParticle*
>(
fMCevent->GetTrack(tmpTParticle->GetFirstMother()));
2062 flowtrack->
SetPt(tmpAliMCParticle->Pt());
2065 esdtrack =
dynamic_cast<AliESDtrack*
>(
fTrack);
2066 if (!esdtrack)
return NULL;
2067 externalParams =
const_cast<AliExternalTrackParam*
>(esdtrack->GetTPCInnerParam());
2068 if (!externalParams)
return NULL;
2069 flowtrack->
Set(externalParams);
2080 else if (dynamic_cast<AliESDtrack*>(
fTrack))
2083 flowtrack->
SetID(static_cast<AliVTrack*>(
fTrack)->GetID());
2085 else if (dynamic_cast<AliESDMuonTrack*>(
fTrack))
2088 flowtrack->
SetID((
Int_t)static_cast<AliESDMuonTrack*>(
fTrack)->GetUniqueID());
2090 else if (dynamic_cast<AliAODTrack*>(
fTrack))
2096 flowtrack->
SetID(static_cast<AliVTrack*>(
fTrack)->GetID());
2098 else if (dynamic_cast<AliMCParticle*>(
fTrack))
2101 flowtrack->
SetID(static_cast<AliVTrack*>(
fTrack)->GetID());
2108 flowtrack->
SetID(indexMother);
2131 trackCollection->AddAtAndExpand(flowtrack,trackIndex);
2137 trackCollection->RemoveAt(trackIndex);
2147 TParticle *tmpTParticle=NULL;
2148 AliMCParticle* tmpAliMCParticle=NULL;
2179 tmpAliMCParticle =
static_cast<AliMCParticle*
>(
fMCevent->GetTrack(tmpTParticle->GetFirstMother()));
2180 flowtrack->
SetPt(tmpAliMCParticle->Pt());
2208 trackCollection->AddAtAndExpand(flowtrack,trackIndex);
2214 trackCollection->RemoveAt(trackIndex);
2224 if (!
fTrack)
return kFALSE;
2225 TParticle *tmpTParticle=NULL;
2226 AliMCParticle* tmpAliMCParticle=NULL;
2227 AliExternalTrackParam* externalParams=NULL;
2228 AliESDtrack* esdtrack=NULL;
2250 tmpAliMCParticle =
static_cast<AliMCParticle*
>(
fMCevent->GetTrack(tmpTParticle->GetFirstMother()));
2251 flowtrack->
SetPt(tmpAliMCParticle->Pt());
2254 esdtrack =
dynamic_cast<AliESDtrack*
>(
fTrack);
2255 if (!esdtrack)
return kFALSE;
2256 externalParams =
const_cast<AliExternalTrackParam*
>(esdtrack->GetTPCInnerParam());
2257 if (!externalParams)
return kFALSE;
2258 flowtrack->
Set(externalParams);
2269 else if (dynamic_cast<AliESDtrack*>(
fTrack))
2272 flowtrack->
SetID(static_cast<AliVTrack*>(
fTrack)->GetID());
2274 else if (dynamic_cast<AliESDMuonTrack*>(
fTrack))
2277 flowtrack->
SetID((
Int_t)static_cast<AliESDMuonTrack*>(
fTrack)->GetUniqueID());
2279 else if (dynamic_cast<AliAODTrack*>(
fTrack))
2285 flowtrack->
SetID(static_cast<AliVTrack*>(
fTrack)->GetID());
2287 else if (dynamic_cast<AliMCParticle*>(
fTrack))
2290 flowtrack->
SetID(static_cast<AliVTrack*>(
fTrack)->GetID());
2612 Bool_t physprim=mcEvent->IsPhysicalPrimary(label);
2613 AliMCParticle* track =
static_cast<AliMCParticle*
>(mcEvent->GetTrack(label));
2614 if (!track)
return kFALSE;
2615 TParticle* particle = track->Particle();
2616 Bool_t transported = particle->TestBit(kTransportBit);
2619 return (physprim && (transported || !requiretransported));
2628 const Int_t kNbinsP=200;
2631 for(
int i=1; i<kNbinsP+1; i++)
2636 binsP[i]=binsP[i-1]+0.05;
2639 const Int_t nBinsDCA=1000;
2641 for(
int i=0; i<nBinsDCA+1; i++) {binsDCA[i]=0.01*i-5.;}
2644 Bool_t adddirstatus = TH1::AddDirectoryStatus();
2645 TH1::AddDirectory(kFALSE);
2647 fQA->SetName(Form(
"%s QA",GetName()));
2648 TList* before =
new TList(); before->SetOwner();
2649 before->SetName(
"before");
2650 TList* after =
new TList(); after->SetOwner();
2651 after->SetName(
"after");
2654 before->Add(
new TH2F(
"TOFbeta",
";p [GeV/c];#beta",kNbinsP,binsP,1000,0.4,1.1));
2655 after->Add(
new TH2F(
"TOFbeta",
";p [GeV/c];#beta",kNbinsP,binsP,1000,0.4,1.1));
2656 before->Add(
new TH2F(
"TPCdedx",
";p [GeV/c];dEdx",kNbinsP,binsP,500,0,500));
2657 after->Add(
new TH2F(
"TPCdedx",
";p [GeV/c];dEdx",kNbinsP,binsP,500,0,500));
2658 before->Add(
new TH2F(
"MC pid",
";p[GeV/c];species",kNbinsP,binsP,10,-5, 5));
2659 after->Add(
new TH2F(
"MC pid",
";p[GeV/c];species",kNbinsP,binsP,10,-5, 5));
2661 TH2F* hb =
new TH2F(
"MC primary",
";p[GeV/c];primary",kNbinsP,binsP,2,-1,1);
2662 TH2F* ha =
new TH2F(
"MC primary",
";p[GeV/c];primary",kNbinsP,binsP,2,-1,1);
2664 axis = hb->GetYaxis();
2665 axis->SetBinLabel(1,
"secondary");
2666 axis->SetBinLabel(2,
"primary");
2667 axis = ha->GetYaxis();
2668 axis->SetBinLabel(1,
"secondary");
2669 axis->SetBinLabel(2,
"primary");
2673 hb =
new TH2F(
"MC production process",
";p[GeV/c];",kNbinsP,binsP,kMaxMCProcess,
2674 -0.5, kMaxMCProcess-0.5);
2675 ha =
new TH2F(
"MC production process",
";p[GeV/c];",kNbinsP,binsP,kMaxMCProcess,
2676 -0.5, kMaxMCProcess-0.5);
2677 axis = hb->GetYaxis();
2678 for (
Int_t i=0; i<kMaxMCProcess; i++)
2680 axis->SetBinLabel(i+1,TMCProcessName[i]);
2682 axis = ha->GetYaxis();
2683 for (
Int_t i=0; i<kMaxMCProcess; i++)
2685 axis->SetBinLabel(i+1,TMCProcessName[i]);
2690 before->Add(
new TH2F(
"DCAxy",
";p_{t}[GeV/c];DCAxy[cm]", 100, 0., 10., nBinsDCA, binsDCA));
2691 after->Add(
new TH2F(
"DCAxy",
";p_{t}[GeV/c];DCAxy[cm]", 100, 0., 10., nBinsDCA, binsDCA));
2692 before->Add(
new TH2F(
"DCAz",
";p_{t}[GeV/c];DCAz[cm]", 100, 0., 10., nBinsDCA, binsDCA));
2693 after->Add(
new TH2F(
"DCAz",
";p_{t}[GeV/c];DCAz[cm]", 100, 0., 10., nBinsDCA, binsDCA));
2695 hb =
new TH2F(
"MC first mother",
";p[GeV/c];",kNbinsP,binsP,44,1.,45.);
2696 ha =
new TH2F(
"MC first mother",
";p[GeV/c];",kNbinsP,binsP,44,1.,45.);
2697 hb->GetYaxis()->SetBinLabel(1,
"#gamma");
2698 ha->GetYaxis()->SetBinLabel(1,
"#gamma");
2699 hb->GetYaxis()->SetBinLabel(2,
"e^{+}");
2700 ha->GetYaxis()->SetBinLabel(2,
"e^{+}");
2701 hb->GetYaxis()->SetBinLabel(3,
"e^{-}");
2702 ha->GetYaxis()->SetBinLabel(3,
"e^{-}");
2703 hb->GetYaxis()->SetBinLabel(4,
"#nu");
2704 ha->GetYaxis()->SetBinLabel(4,
"#nu");
2705 hb->GetYaxis()->SetBinLabel(5,
"#mu^{+}");
2706 ha->GetYaxis()->SetBinLabel(5,
"#mu^{+}");
2707 hb->GetYaxis()->SetBinLabel(6,
"#mu^{-}");
2708 ha->GetYaxis()->SetBinLabel(6,
"#mu^{-}");
2709 hb->GetYaxis()->SetBinLabel(7,
"#pi^{0}");
2710 ha->GetYaxis()->SetBinLabel(7,
"#pi^{0}");
2711 hb->GetYaxis()->SetBinLabel(8,
"#pi^{+}");
2712 ha->GetYaxis()->SetBinLabel(8,
"#pi^{+}");
2713 hb->GetYaxis()->SetBinLabel(9,
"#pi^{-}");
2714 ha->GetYaxis()->SetBinLabel(9,
"#pi^{-}");
2715 hb->GetYaxis()->SetBinLabel(10,
"K^{0}_{L}");
2716 ha->GetYaxis()->SetBinLabel(10,
"K^{0}_{L}");
2717 hb->GetYaxis()->SetBinLabel(11,
"K^{+}");
2718 ha->GetYaxis()->SetBinLabel(11,
"K^{+}");
2719 hb->GetYaxis()->SetBinLabel(12,
"K^{-}");
2720 ha->GetYaxis()->SetBinLabel(12,
"K^{-}");
2721 hb->GetYaxis()->SetBinLabel( 13,
"n");
2722 ha->GetYaxis()->SetBinLabel( 13,
"n");
2723 hb->GetYaxis()->SetBinLabel( 14,
"p");
2724 ha->GetYaxis()->SetBinLabel( 14,
"p");
2725 hb->GetYaxis()->SetBinLabel(15,
"#bar{p}");
2726 ha->GetYaxis()->SetBinLabel(15,
"#bar{p}");
2727 hb->GetYaxis()->SetBinLabel(16,
"K^{0}_{S}");
2728 ha->GetYaxis()->SetBinLabel(16,
"K^{0}_{S}");
2729 hb->GetYaxis()->SetBinLabel(17,
"#eta");
2730 ha->GetYaxis()->SetBinLabel(17,
"#eta");
2731 hb->GetYaxis()->SetBinLabel(18,
"#Lambda");
2732 ha->GetYaxis()->SetBinLabel(18,
"#Lambda");
2733 hb->GetYaxis()->SetBinLabel(19,
"#Sigma^{+}");
2734 ha->GetYaxis()->SetBinLabel(19,
"#Sigma^{+}");
2735 hb->GetYaxis()->SetBinLabel(20,
"#Sigma^{0}");
2736 ha->GetYaxis()->SetBinLabel(20,
"#Sigma^{0}");
2737 hb->GetYaxis()->SetBinLabel(21,
"#Sigma^{-}");
2738 ha->GetYaxis()->SetBinLabel(21,
"#Sigma^{-}");
2739 hb->GetYaxis()->SetBinLabel(22,
"#Theta^{0}");
2740 ha->GetYaxis()->SetBinLabel(22,
"#Theta^{0}");
2741 hb->GetYaxis()->SetBinLabel(23,
"#Theta^{-}");
2742 ha->GetYaxis()->SetBinLabel(23,
"#Theta^{-}");
2743 hb->GetYaxis()->SetBinLabel(24,
"#Omega^{-}");
2744 ha->GetYaxis()->SetBinLabel(24,
"#Omega^{-}");
2745 hb->GetYaxis()->SetBinLabel(25,
"#bar{n}");
2746 ha->GetYaxis()->SetBinLabel(25,
"#bar{n}");
2747 hb->GetYaxis()->SetBinLabel(26,
"#bar{#Lambda}");
2748 ha->GetYaxis()->SetBinLabel(26,
"#bar{#Lambda}");
2749 hb->GetYaxis()->SetBinLabel(27,
"#bar{#Sigma}^{-}");
2750 ha->GetYaxis()->SetBinLabel(27,
"#bar{#Sigma}^{-}");
2751 hb->GetYaxis()->SetBinLabel(28,
"#bar{#Sigma}^{0}");
2752 ha->GetYaxis()->SetBinLabel(28,
"#bar{#Sigma}^{0}");
2753 hb->GetYaxis()->SetBinLabel(29,
"#bar{#Sigma}^{+}");
2754 ha->GetYaxis()->SetBinLabel(29,
"#bar{#Sigma}^{+}");
2755 hb->GetYaxis()->SetBinLabel(30,
"#bar{#Theta}^{0}");
2756 ha->GetYaxis()->SetBinLabel(30,
"#bar{#Theta}^{0}");
2757 hb->GetYaxis()->SetBinLabel(31,
"#bar{#Theta}^{+}");
2758 ha->GetYaxis()->SetBinLabel(31,
"#bar{#Theta}^{+}");
2759 hb->GetYaxis()->SetBinLabel(32,
"#bar{#Omega}^{+}");
2760 ha->GetYaxis()->SetBinLabel(32,
"#bar{#Omega}^{+}");
2761 hb->GetYaxis()->SetBinLabel(33,
"#tau^{+}");
2762 ha->GetYaxis()->SetBinLabel(33,
"#tau^{+}");
2763 hb->GetYaxis()->SetBinLabel(34,
"#tau^{-}");
2764 ha->GetYaxis()->SetBinLabel(34,
"#tau^{-}");
2765 hb->GetYaxis()->SetBinLabel(35,
"D^{+}");
2766 ha->GetYaxis()->SetBinLabel(35,
"D^{+}");
2767 hb->GetYaxis()->SetBinLabel(36,
"D^{-}");
2768 ha->GetYaxis()->SetBinLabel(36,
"D^{-}");
2769 hb->GetYaxis()->SetBinLabel(37,
"D^{0}");
2770 ha->GetYaxis()->SetBinLabel(37,
"D^{0}");
2771 hb->GetYaxis()->SetBinLabel(38,
"#bar{D}^{0}");
2772 ha->GetYaxis()->SetBinLabel(38,
"#bar{D}^{0}");
2773 hb->GetYaxis()->SetBinLabel(39,
"D_{s}^{+}");
2774 ha->GetYaxis()->SetBinLabel(39,
"D_{s}^{+}");
2775 hb->GetYaxis()->SetBinLabel(40,
"#bar{D_{s}}^{-}");
2776 ha->GetYaxis()->SetBinLabel(40,
"#bar{D_{s}}^{-}");
2777 hb->GetYaxis()->SetBinLabel(41,
"#Lambda_{c}^{+}");
2778 ha->GetYaxis()->SetBinLabel(41,
"#Lambda_{c}^{+}");
2779 hb->GetYaxis()->SetBinLabel(42,
"W^{+}");
2780 ha->GetYaxis()->SetBinLabel(42,
"W^{+}");
2781 hb->GetYaxis()->SetBinLabel(43,
"W^{-}");
2782 ha->GetYaxis()->SetBinLabel(43,
"W^{-}");
2783 hb->GetYaxis()->SetBinLabel(44,
"Z^{0}");
2784 ha->GetYaxis()->SetBinLabel(44,
"Z^{0}");
2788 before->Add(
new TH2F(
"TOFkElectron",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2789 after->Add(
new TH2F(
"TOFkElectron",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2791 before->Add(
new TH2F(
"TOFkMuon",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2792 after->Add(
new TH2F(
"TOFkMuon",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2794 before->Add(
new TH2F(
"TOFkPion",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2795 after->Add(
new TH2F(
"TOFkPion",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2797 before->Add(
new TH2F(
"TOFkKaon",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2798 after->Add(
new TH2F(
"TOFkKaon",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2800 before->Add(
new TH2F(
"TOFkProton",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2801 after->Add(
new TH2F(
"TOFkProton",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2804 before->Add(
new TH1F(
"KinkQt",
";q_{t}[GeV/c];counts", 200, 0., 0.3));
2805 after->Add(
new TH1F(
"KinkQt",
";q_{t}[GeV/c];counts", 200, 0., 0.3));
2807 before->Add(
new TH1F(
"KinkMinv",
";m_{inv}(#mu#nu)[GeV/c^{2}];counts;Kink M_{inv}", 200, 0., 0.7));
2808 after->Add(
new TH1F(
"KinkMinv",
";m_{inv}(#mu#nu)[GeV/c^{2}];counts;Kink M_{inv}", 200, 0., 0.7));
2810 before->Add(
new TH2F(
"KinkVertex",
";x[cm];y[cm];Kink vertex position",250,-250.,250., 250,-250.,250.));
2811 after->Add(
new TH2F(
"KinkVertex",
";x[cm];y[cm];Kink vertex position",250,-250.,250., 250,-250.,250.));
2813 before->Add(
new TH2F(
"KinkAngleMp",
";p_{mother}[GeV/c];Kink decay angle [deg];", 100,0.,6., 100,0.,80.));
2814 after->Add(
new TH2F(
"KinkAngleMp",
";p_{mother}[GeV/c];Kink decay angle [deg];", 100,0.,6., 100,0.,80.));
2816 before->Add(
new TH1F(
"KinkIndex",
";Kink index;counts", 2, 0., 2.));
2817 after->Add(
new TH1F(
"KinkIndex",
";Kink index;counts", 2, 0., 2.));
2819 before->Add(
new TH2F(
"Chi2 per TPCCl",
";p[GeV/c];species",kNbinsP,binsP,50,0.,5.));
2820 after->Add(
new TH2F(
"Chi2 per TPCCl",
";p[GeV/c];species",kNbinsP,binsP,50,0.,5.));
2822 before->Add(
new TH2F(
"Shared TPCCl",
";p[GeV/c];species",kNbinsP,binsP,50,0.,1.));
2823 after->Add(
new TH2F(
"Shared TPCCl",
";p[GeV/c];species",kNbinsP,binsP,50,0.,1.));
2825 TH1::AddDirectory(adddirstatus);
2843 if (esd)
return esd->GetMultiplicity()->GetNumberOfTracklets();
2844 if (aod)
return aod->GetTracklets()->GetNumberOfTracklets();
2847 return fMCevent->GetNumberOfTracks();
2851 return esd->GetNumberOfPmdTracks();
2865 if (esd)
return esd->GetNumberOfMuonTracks();
2866 return fEvent->GetNumberOfTracks();
2870 return esd->GetNumberOfKinks();
2874 return esd->GetNumberOfV0s();
2877 return fEvent->GetNumberOfTracks();
2892 if (!
fEvent)
return NULL;
2897 if (esd)
return const_cast<AliMultiplicity*
>(esd->GetMultiplicity());
2898 if (aod)
return const_cast<AliAODTracklets*
>(aod->GetTracklets());
2904 if (!esd)
return NULL;
2905 return esd->GetPmdTrack(i);
2911 if(!aod)
return NULL;
2912 return aod->GetVZEROData();
2914 return esd->GetVZEROData();
2920 if(!aod)
return NULL;
2921 return aod->GetVZEROData();
2923 return esd->GetVZEROData();
2929 if(!aod)
return NULL;
2930 return aod->GetVZEROData();
2932 return esd->GetVZEROData();
2938 if(!aod)
return NULL;
2939 return aod->GetVZEROData();
2941 return esd->GetVZEROData();
2947 if(!aod)
return NULL;
2948 return aod->GetVZEROData();
2950 return esd->GetVZEROData();
2952 if (!
fEvent)
return NULL;
2954 if (esd)
return esd->GetMuonTrack(i);
2955 return fEvent->GetTrack(i);
2958 if (!esd)
return NULL;
2959 return esd->GetKink(i);
2962 if (!esd)
return NULL;
2963 return esd->GetV0(i);
2965 if (!
fEvent)
return NULL;
2966 return fEvent->GetTrack(i);
2998 if(!track->GetAODEvent()->GetTOFHeader()){
2999 AliAODPid *pidObj = track->GetDetPid();
3000 if (!pidObj)
fESDpid.GetTOFResponse().SetTimeResolution(84.);
3003 pidObj->GetTOFpidResolution(sigmaTOFPidInAOD);
3004 if(sigmaTOFPidInAOD[0] > 84.){
3005 fESDpid.GetTOFResponse().SetTimeResolution(sigmaTOFPidInAOD[0]);
3080 printf(
"AliFlowTrackCuts::PassesCuts() this should never be called!\n");
3091 Bool_t goodtrack = (track->GetStatus() & AliESDtrack::kTOFpid) &&
3092 (track->GetTOFsignal() > 12000) &&
3093 (track->GetTOFsignal() < 100000) &&
3094 (track->GetIntegratedLength() > 365);
3102 if (!goodtrack)
return kFALSE;
3104 const Float_t c = 2.99792457999999984e-02;
3106 Float_t l = track->GetIntegratedLength();
3108 Float_t timeTOF = track->GetTOFsignal()- trackT0;
3110 Double_t integratedTimes[9] = {-1.0,-1.0,-1.0,-1.0,-1.0, -1.0, -1.0, -1.0, -1.0};
3111 track->GetIntegratedTimes(integratedTimes);
3112 Float_t betaHypothesis[5] = {0.0,0.0,0.0,0.0,0.0};
3113 Float_t s[5] = {0.0,0.0,0.0,0.0,0.0};
3114 for (
Int_t i=0;i<5;i++)
3116 betaHypothesis[i] = l/integratedTimes[i]/
c;
3117 s[i] = beta-betaHypothesis[i];
3123 return ( (s[2]<0.015) && (s[2]>-0.015) &&
3127 return ( (s[3]<0.015) && (s[3]>-0.015) &&
3131 return ( (s[4]<0.015) && (s[4]>-0.015) &&
3144 Double_t integratedTimes[9] = {-1.0,-1.0,-1.0,-1.0,-1.0, -1.0, -1.0, -1.0, -1.0};
3145 track->GetIntegratedTimes(integratedTimes);
3147 const Float_t c = 2.99792457999999984e-02;
3151 Float_t timeTOF = track->GetTOFsignal()- trackT0;
3152 if(QAmode && timeTOF <= 0)
return -999;
3166 Bool_t goodtrack = (track->GetStatus() & AliESDtrack::kTOFpid) &&
3167 (track->GetTOFsignal() > 12000) &&
3168 (track->GetTOFsignal() < 100000);
3170 if (!goodtrack)
return kFALSE;
3172 const Float_t c = 2.99792457999999984e-02;
3173 Double_t integratedTimes[9] = {-1.0,-1.0,-1.0,-1.0,-1.0, -1.0, -1.0, -1.0, -1.0};
3174 track->GetIntegratedTimes(integratedTimes);
3177 goodtrack = goodtrack && (l > 365);
3179 if (!goodtrack)
return kFALSE;
3192 cout<<
"TOFbeta: fParticleID = "<<
fParticleID<<endl;
3210 Float_t betahypothesis = l/integratedTimes[pid]/
c;
3211 Float_t betadiff = beta-betahypothesis;
3215 if (col<0)
return kFALSE;
3216 Float_t min = (*fTOFpidCuts)(1,col);
3217 Float_t max = (*fTOFpidCuts)(2,col);
3219 Bool_t pass = (betadiff>min && betadiff<max);
3234 Bool_t goodtrack = (track->GetStatus() & AliESDtrack::kTOFpid) &&
3235 (track->GetTOFsignal() > 12000) &&
3236 (track->GetTOFsignal() < 100000) &&
3237 (track->GetIntegratedLength() > 365);
3241 if (!goodtrack)
return kFALSE;
3248 Double_t integratedTimes[9] = {-1.0,-1.0,-1.0,-1.0,-1.0, -1.0, -1.0, -1.0, -1.0};
3249 track->GetIntegratedTimes(integratedTimes);
3269 const Float_t c = 2.99792457999999984e-02;
3270 Float_t l = track->GetIntegratedLength();
3272 Float_t betahypothesis = l/integratedTimes[pid]/
c;
3273 Float_t betadiff = beta-betahypothesis;
3277 if (col<0)
return kFALSE;
3278 Float_t min = (*fTOFpidCuts)(1,col);
3279 Float_t max = (*fTOFpidCuts)(2,col);
3281 Bool_t pass = (betadiff>min && betadiff<max);
3291 track->GetTOFpid(pidTOF);
3301 track->GetTPCpid(pidTPC);
3306 probablity = pidTPC[AliPID::kPion] + pidTPC[AliPID::kMuon];
3319 return track->GetTPCsignal();
3332 const AliExternalTrackParam* tpcparam = track->GetInnerParam();
3333 if (!tpcparam)
return kFALSE;
3336 Float_t sigTPC = track->GetTPCsignal();
3337 Float_t s = (sigTPC-sigExp)/sigExp;
3341 Int_t col = TMath::BinarySearch( arrSize, arr, static_cast<Float_t>(p));
3342 if (col<0)
return kFALSE;
3343 Float_t min = (*fTPCpidCuts)(1,col);
3344 Float_t max = (*fTPCpidCuts)(2,col);
3347 return (s>min && s<max);
3359 t =
new TMatrixF(3,15);
3360 (*t)(0,0) = 0.20; (*t)(1,0) = -0.4; (*t)(2,0) = 0.0;
3361 (*t)(0,1) = 0.25; (*t)(1,1) = -0.4; (*t)(2,1) = 0.1;
3362 (*t)(0,2) = 0.30; (*t)(1,2) = -0.4; (*t)(2,2) = 0.2;
3363 (*t)(0,3) = 0.35; (*t)(1,3) = -0.4; (*t)(2,3) = 0.2;
3364 (*t)(0,4) = 0.40; (*t)(1,4) = -0.4; (*t)(2,4) = 0.3;
3365 (*t)(0,5) = 0.45; (*t)(1,5) = -0.4; (*t)(2,5) = 0.3;
3366 (*t)(0,6) = 0.50; (*t)(1,6) = -0.4; (*t)(2,6) = 0.25;
3367 (*t)(0,7) = 0.55; (*t)(1,7) = -0.4; (*t)(2,7) = 0.15;
3368 (*t)(0,8) = 0.60; (*t)(1,8) = -0.4; (*t)(2,8) = 0.1;
3369 (*t)(0,9) = 0.65; (*t)(1,9) = -0.4; (*t)(2,9) = 0.05;
3370 (*t)(0,10) = 0.70; (*t)(1,10) = -0.4; (*t)(2,10) = 0;
3371 (*t)(0,11) = 0.75; (*t)(1,11) = -0.4; (*t)(2,11) = 0;
3372 (*t)(0,12) = 0.80; (*t)(1,12) = -0.4; (*t)(2,12) = -0.05;
3373 (*t)(0,13) = 0.85; (*t)(1,13) = -0.4; (*t)(2,13) = -0.1;
3374 (*t)(0,14) = 0.90; (*t)(1,14) = 0; (*t)(2,14) = 0;
3379 t =
new TMatrixF(3,12);
3380 (*t)(0,0) = 0.20; (*t)(1,0) = -0.2; (*t)(2,0) = 0.2;
3381 (*t)(0,1) = 0.25; (*t)(1,1) = -0.2; (*t)(2,1) = 0.2;
3382 (*t)(0,2) = 0.30; (*t)(1,2) = -0.2; (*t)(2,2) = 0.2;
3383 (*t)(0,3) = 0.35; (*t)(1,3) = -0.2; (*t)(2,3) = 0.2;
3384 (*t)(0,4) = 0.40; (*t)(1,4) = -0.1; (*t)(2,4) = 0.2;
3385 (*t)(0,5) = 0.45; (*t)(1,5) = -0.1; (*t)(2,5) = 0.2;
3386 (*t)(0,6) = 0.50; (*t)(1,6) =-0.05; (*t)(2,6) = 0.2;
3387 (*t)(0,7) = 0.55; (*t)(1,7) = -0.1; (*t)(2,7) = 0.1;
3388 (*t)(0,8) = 0.60; (*t)(1,8) =-0.05; (*t)(2,8) = 0.1;
3389 (*t)(0,9) = 0.65; (*t)(1,9) = 0; (*t)(2,9) = 0.15;
3390 (*t)(0,10) = 0.70; (*t)(1,10) = 0.05; (*t)(2,10) = 0.2;
3391 (*t)(0,11) = 0.75; (*t)(1,11) = 0; (*t)(2,11) = 0;
3396 t =
new TMatrixF(3,9);
3397 (*t)(0,0) = 0.20; (*t)(1,0) = -0.1; (*t)(2,0) = 0.1;
3398 (*t)(0,1) = 0.25; (*t)(1,1) = -0.2; (*t)(2,1) = 0.2;
3399 (*t)(0,2) = 0.80; (*t)(1,2) = -0.1; (*t)(2,2) = 0.2;
3400 (*t)(0,3) = 0.85; (*t)(1,3) =-0.05; (*t)(2,3) = 0.2;
3401 (*t)(0,4) = 0.90; (*t)(1,4) =-0.05; (*t)(2,4) = 0.25;
3402 (*t)(0,5) = 0.95; (*t)(1,5) =-0.05; (*t)(2,5) = 0.25;
3403 (*t)(0,6) = 1.00; (*t)(1,6) = -0.1; (*t)(2,6) = 0.25;
3404 (*t)(0,7) = 1.10; (*t)(1,7) =-0.05; (*t)(2,7) = 0.3;
3405 (*t)(0,8) = 1.20; (*t)(1,8) = 0; (*t)(2,8) = 0;
3416 t =
new TMatrixF(3,61);
3417 (*t)(0,0) = 0.000; (*t)(1,0) = 0.000; (*t)(2,0) = 0.000;
3418 (*t)(0,1) = 0.050; (*t)(1,1) = 0.000; (*t)(2,1) = 0.000;
3419 (*t)(0,2) = 0.100; (*t)(1,2) = 0.000; (*t)(2,2) = 0.000;
3420 (*t)(0,3) = 0.150; (*t)(1,3) = 0.000; (*t)(2,3) = 0.000;
3421 (*t)(0,4) = 0.200; (*t)(1,4) = -0.030; (*t)(2,4) = 0.030;
3422 (*t)(0,5) = 0.250; (*t)(1,5) = -0.036; (*t)(2,5) = 0.032;
3423 (*t)(0,6) = 0.300; (*t)(1,6) = -0.038; (*t)(2,6) = 0.032;
3424 (*t)(0,7) = 0.350; (*t)(1,7) = -0.034; (*t)(2,7) = 0.032;
3425 (*t)(0,8) = 0.400; (*t)(1,8) = -0.032; (*t)(2,8) = 0.020;
3426 (*t)(0,9) = 0.450; (*t)(1,9) = -0.030; (*t)(2,9) = 0.020;
3427 (*t)(0,10) = 0.500; (*t)(1,10) = -0.030; (*t)(2,10) = 0.020;
3428 (*t)(0,11) = 0.550; (*t)(1,11) = -0.030; (*t)(2,11) = 0.020;
3429 (*t)(0,12) = 0.600; (*t)(1,12) = -0.030; (*t)(2,12) = 0.020;
3430 (*t)(0,13) = 0.650; (*t)(1,13) = -0.030; (*t)(2,13) = 0.020;
3431 (*t)(0,14) = 0.700; (*t)(1,14) = -0.030; (*t)(2,14) = 0.020;
3432 (*t)(0,15) = 0.750; (*t)(1,15) = -0.030; (*t)(2,15) = 0.020;
3433 (*t)(0,16) = 0.800; (*t)(1,16) = -0.030; (*t)(2,16) = 0.020;
3434 (*t)(0,17) = 0.850; (*t)(1,17) = -0.030; (*t)(2,17) = 0.020;
3435 (*t)(0,18) = 0.900; (*t)(1,18) = -0.030; (*t)(2,18) = 0.020;
3436 (*t)(0,19) = 0.950; (*t)(1,19) = -0.028; (*t)(2,19) = 0.028;
3437 (*t)(0,20) = 1.000; (*t)(1,20) = -0.028; (*t)(2,20) = 0.028;
3438 (*t)(0,21) = 1.100; (*t)(1,21) = -0.028; (*t)(2,21) = 0.028;
3439 (*t)(0,22) = 1.200; (*t)(1,22) = -0.026; (*t)(2,22) = 0.028;
3440 (*t)(0,23) = 1.300; (*t)(1,23) = -0.024; (*t)(2,23) = 0.028;
3441 (*t)(0,24) = 1.400; (*t)(1,24) = -0.020; (*t)(2,24) = 0.028;
3442 (*t)(0,25) = 1.500; (*t)(1,25) = -0.018; (*t)(2,25) = 0.028;
3443 (*t)(0,26) = 1.600; (*t)(1,26) = -0.016; (*t)(2,26) = 0.028;
3444 (*t)(0,27) = 1.700; (*t)(1,27) = -0.014; (*t)(2,27) = 0.028;
3445 (*t)(0,28) = 1.800; (*t)(1,28) = -0.012; (*t)(2,28) = 0.026;
3446 (*t)(0,29) = 1.900; (*t)(1,29) = -0.010; (*t)(2,29) = 0.026;
3447 (*t)(0,30) = 2.000; (*t)(1,30) = -0.008; (*t)(2,30) = 0.026;
3448 (*t)(0,31) = 2.100; (*t)(1,31) = -0.008; (*t)(2,31) = 0.024;
3449 (*t)(0,32) = 2.200; (*t)(1,32) = -0.006; (*t)(2,32) = 0.024;
3450 (*t)(0,33) = 2.300; (*t)(1,33) = -0.004; (*t)(2,33) = 0.024;
3451 (*t)(0,34) = 2.400; (*t)(1,34) = -0.004; (*t)(2,34) = 0.024;
3452 (*t)(0,35) = 2.500; (*t)(1,35) = -0.002; (*t)(2,35) = 0.024;
3453 (*t)(0,36) = 2.600; (*t)(1,36) = -0.002; (*t)(2,36) = 0.024;
3454 (*t)(0,37) = 2.700; (*t)(1,37) = 0.000; (*t)(2,37) = 0.024;
3455 (*t)(0,38) = 2.800; (*t)(1,38) = 0.000; (*t)(2,38) = 0.026;
3456 (*t)(0,39) = 2.900; (*t)(1,39) = 0.000; (*t)(2,39) = 0.024;
3457 (*t)(0,40) = 3.000; (*t)(1,40) = 0.002; (*t)(2,40) = 0.026;
3458 (*t)(0,41) = 3.100; (*t)(1,41) = 0.002; (*t)(2,41) = 0.026;
3459 (*t)(0,42) = 3.200; (*t)(1,42) = 0.002; (*t)(2,42) = 0.026;
3460 (*t)(0,43) = 3.300; (*t)(1,43) = 0.002; (*t)(2,43) = 0.026;
3461 (*t)(0,44) = 3.400; (*t)(1,44) = 0.002; (*t)(2,44) = 0.026;
3462 (*t)(0,45) = 3.500; (*t)(1,45) = 0.002; (*t)(2,45) = 0.026;
3463 (*t)(0,46) = 3.600; (*t)(1,46) = 0.002; (*t)(2,46) = 0.026;
3464 (*t)(0,47) = 3.700; (*t)(1,47) = 0.002; (*t)(2,47) = 0.026;
3465 (*t)(0,48) = 3.800; (*t)(1,48) = 0.002; (*t)(2,48) = 0.026;
3466 (*t)(0,49) = 3.900; (*t)(1,49) = 0.004; (*t)(2,49) = 0.024;
3467 (*t)(0,50) = 4.000; (*t)(1,50) = 0.004; (*t)(2,50) = 0.026;
3468 (*t)(0,51) = 4.100; (*t)(1,51) = 0.004; (*t)(2,51) = 0.026;
3469 (*t)(0,52) = 4.200; (*t)(1,52) = 0.004; (*t)(2,52) = 0.024;
3470 (*t)(0,53) = 4.300; (*t)(1,53) = 0.006; (*t)(2,53) = 0.024;
3471 (*t)(0,54) = 4.400; (*t)(1,54) = 0.000; (*t)(2,54) = 0.000;
3472 (*t)(0,55) = 4.500; (*t)(1,55) = 0.000; (*t)(2,55) = 0.000;
3473 (*t)(0,56) = 4.600; (*t)(1,56) = 0.000; (*t)(2,56) = 0.000;
3474 (*t)(0,57) = 4.700; (*t)(1,57) = 0.000; (*t)(2,57) = 0.000;
3475 (*t)(0,58) = 4.800; (*t)(1,58) = 0.000; (*t)(2,58) = 0.000;
3476 (*t)(0,59) = 4.900; (*t)(1,59) = 0.000; (*t)(2,59) = 0.000;
3477 (*t)(0,60) = 5.900; (*t)(1,60) = 0.000; (*t)(2,60) = 0.000;
3483 t =
new TMatrixF(3,61);
3484 (*t)(0,0) = 0.000; (*t)(1,0) = 0.000; (*t)(2,0) = 0.000;
3485 (*t)(0,1) = 0.050; (*t)(1,1) = 0.000; (*t)(2,1) = 0.000;
3486 (*t)(0,2) = 0.100; (*t)(1,2) = 0.000; (*t)(2,2) = 0.000;
3487 (*t)(0,3) = 0.150; (*t)(1,3) = 0.000; (*t)(2,3) = 0.000;
3488 (*t)(0,4) = 0.200; (*t)(1,4) = -0.07; (*t)(2,4) = 0.07;
3489 (*t)(0,5) = 0.200; (*t)(1,5) = -0.07; (*t)(2,5) = 0.07;
3490 (*t)(0,6) = 0.200; (*t)(1,6) = -0.07; (*t)(2,6) = 0.07;
3491 (*t)(0,7) = 0.200; (*t)(1,7) = -0.07; (*t)(2,7) = 0.07;
3492 (*t)(0,8) = 0.200; (*t)(1,8) = -0.07; (*t)(2,8) = 0.07;
3493 (*t)(0,9) = 0.200; (*t)(1,9) = -0.07; (*t)(2,9) = 0.07;
3494 (*t)(0,10) = 0.200; (*t)(1,10) = -0.07; (*t)(2,10) = 0.07;
3495 (*t)(0,11) = 0.200; (*t)(1,11) = -0.07; (*t)(2,11) = 0.07;
3496 (*t)(0,12) = 0.200; (*t)(1,12) = -0.07; (*t)(2,12) = 0.07;
3497 (*t)(0,13) = 0.200; (*t)(1,13) = -0.07; (*t)(2,13) = 0.07;
3498 (*t)(0,14) = 0.200; (*t)(1,14) = -0.07; (*t)(2,14) = 0.07;
3499 (*t)(0,15) = 0.200; (*t)(1,15) = -0.07; (*t)(2,15) = 0.07;
3500 (*t)(0,16) = 0.200; (*t)(1,16) = -0.07; (*t)(2,16) = 0.07;
3501 (*t)(0,17) = 0.850; (*t)(1,17) = -0.070; (*t)(2,17) = 0.070;
3502 (*t)(0,18) = 0.900; (*t)(1,18) = -0.072; (*t)(2,18) = 0.072;
3503 (*t)(0,19) = 0.950; (*t)(1,19) = -0.072; (*t)(2,19) = 0.072;
3504 (*t)(0,20) = 1.000; (*t)(1,20) = -0.074; (*t)(2,20) = 0.074;
3505 (*t)(0,21) = 1.100; (*t)(1,21) = -0.032; (*t)(2,21) = 0.032;
3506 (*t)(0,22) = 1.200; (*t)(1,22) = -0.026; (*t)(2,22) = 0.026;
3507 (*t)(0,23) = 1.300; (*t)(1,23) = -0.026; (*t)(2,23) = 0.026;
3508 (*t)(0,24) = 1.400; (*t)(1,24) = -0.024; (*t)(2,24) = 0.024;
3509 (*t)(0,25) = 1.500; (*t)(1,25) = -0.024; (*t)(2,25) = 0.024;
3510 (*t)(0,26) = 1.600; (*t)(1,26) = -0.026; (*t)(2,26) = 0.026;
3511 (*t)(0,27) = 1.700; (*t)(1,27) = -0.026; (*t)(2,27) = 0.026;
3512 (*t)(0,28) = 1.800; (*t)(1,28) = -0.026; (*t)(2,28) = 0.026;
3513 (*t)(0,29) = 1.900; (*t)(1,29) = -0.026; (*t)(2,29) = 0.026;
3514 (*t)(0,30) = 2.000; (*t)(1,30) = -0.026; (*t)(2,30) = 0.026;
3515 (*t)(0,31) = 2.100; (*t)(1,31) = -0.026; (*t)(2,31) = 0.026;
3516 (*t)(0,32) = 2.200; (*t)(1,32) = -0.026; (*t)(2,32) = 0.024;
3517 (*t)(0,33) = 2.300; (*t)(1,33) = -0.028; (*t)(2,33) = 0.022;
3518 (*t)(0,34) = 2.400; (*t)(1,34) = -0.028; (*t)(2,34) = 0.020;
3519 (*t)(0,35) = 2.500; (*t)(1,35) = -0.028; (*t)(2,35) = 0.018;
3520 (*t)(0,36) = 2.600; (*t)(1,36) = -0.028; (*t)(2,36) = 0.016;
3521 (*t)(0,37) = 2.700; (*t)(1,37) = -0.028; (*t)(2,37) = 0.016;
3522 (*t)(0,38) = 2.800; (*t)(1,38) = -0.030; (*t)(2,38) = 0.014;
3523 (*t)(0,39) = 2.900; (*t)(1,39) = -0.030; (*t)(2,39) = 0.012;
3524 (*t)(0,40) = 3.000; (*t)(1,40) = -0.030; (*t)(2,40) = 0.012;
3525 (*t)(0,41) = 3.100; (*t)(1,41) = -0.030; (*t)(2,41) = 0.010;
3526 (*t)(0,42) = 3.200; (*t)(1,42) = -0.030; (*t)(2,42) = 0.010;
3527 (*t)(0,43) = 3.300; (*t)(1,43) = -0.030; (*t)(2,43) = 0.010;
3528 (*t)(0,44) = 3.400; (*t)(1,44) = -0.030; (*t)(2,44) = 0.008;
3529 (*t)(0,45) = 3.500; (*t)(1,45) = -0.030; (*t)(2,45) = 0.008;
3530 (*t)(0,46) = 3.600; (*t)(1,46) = -0.030; (*t)(2,46) = 0.008;
3531 (*t)(0,47) = 3.700; (*t)(1,47) = -0.030; (*t)(2,47) = 0.006;
3532 (*t)(0,48) = 3.800; (*t)(1,48) = -0.030; (*t)(2,48) = 0.006;
3533 (*t)(0,49) = 3.900; (*t)(1,49) = -0.030; (*t)(2,49) = 0.006;
3534 (*t)(0,50) = 4.000; (*t)(1,50) = -0.028; (*t)(2,50) = 0.004;
3535 (*t)(0,51) = 4.100; (*t)(1,51) = -0.030; (*t)(2,51) = 0.004;
3536 (*t)(0,52) = 4.200; (*t)(1,52) = -0.030; (*t)(2,52) = 0.004;
3537 (*t)(0,53) = 4.300; (*t)(1,53) = -0.028; (*t)(2,53) = 0.002;
3538 (*t)(0,54) = 4.400; (*t)(1,54) = -0.030; (*t)(2,54) = 0.002;
3539 (*t)(0,55) = 4.500; (*t)(1,55) = -0.028; (*t)(2,55) = 0.002;
3540 (*t)(0,56) = 4.600; (*t)(1,56) = -0.028; (*t)(2,56) = 0.002;
3541 (*t)(0,57) = 4.700; (*t)(1,57) = -0.028; (*t)(2,57) = 0.000;
3542 (*t)(0,58) = 4.800; (*t)(1,58) = -0.028; (*t)(2,58) = 0.002;
3543 (*t)(0,59) = 4.900; (*t)(1,59) = 0.000; (*t)(2,59) = 0.000;
3544 (*t)(0,60) = 5.900; (*t)(1,60) = 0.000; (*t)(2,60) = 0.000;
3550 t =
new TMatrixF(3,61);
3551 (*t)(0,0) = 0.000; (*t)(1,0) = 0.000; (*t)(2,0) = 0.000;
3552 (*t)(0,1) = 0.050; (*t)(1,1) = 0.000; (*t)(2,1) = 0.000;
3553 (*t)(0,2) = 0.100; (*t)(1,2) = 0.000; (*t)(2,2) = 0.000;
3554 (*t)(0,3) = 0.150; (*t)(1,3) = 0.000; (*t)(2,3) = 0.000;
3555 (*t)(0,4) = 0.200; (*t)(1,4) = -0.05; (*t)(2,4) = 0.05;
3556 (*t)(0,5) = 0.200; (*t)(1,5) = -0.05; (*t)(2,5) = 0.05;
3557 (*t)(0,6) = 0.200; (*t)(1,6) = -0.05; (*t)(2,6) = 0.05;
3558 (*t)(0,7) = 0.200; (*t)(1,7) = -0.05; (*t)(2,7) = 0.05;
3559 (*t)(0,8) = 0.200; (*t)(1,8) = -0.05; (*t)(2,8) = 0.05;
3560 (*t)(0,9) = 0.200; (*t)(1,9) = -0.05; (*t)(2,9) = 0.05;
3561 (*t)(0,10) = 0.200; (*t)(1,10) = -0.05; (*t)(2,10) = 0.05;
3562 (*t)(0,11) = 0.550; (*t)(1,11) = -0.026; (*t)(2,11) = 0.026;
3563 (*t)(0,12) = 0.600; (*t)(1,12) = -0.026; (*t)(2,12) = 0.026;
3564 (*t)(0,13) = 0.650; (*t)(1,13) = -0.026; (*t)(2,13) = 0.026;
3565 (*t)(0,14) = 0.700; (*t)(1,14) = -0.026; (*t)(2,14) = 0.026;
3566 (*t)(0,15) = 0.750; (*t)(1,15) = -0.026; (*t)(2,15) = 0.026;
3567 (*t)(0,16) = 0.800; (*t)(1,16) = -0.026; (*t)(2,16) = 0.026;
3568 (*t)(0,17) = 0.850; (*t)(1,17) = -0.024; (*t)(2,17) = 0.024;
3569 (*t)(0,18) = 0.900; (*t)(1,18) = -0.024; (*t)(2,18) = 0.024;
3570 (*t)(0,19) = 0.950; (*t)(1,19) = -0.024; (*t)(2,19) = 0.024;
3571 (*t)(0,20) = 1.000; (*t)(1,20) = -0.024; (*t)(2,20) = 0.024;
3572 (*t)(0,21) = 1.100; (*t)(1,21) = -0.024; (*t)(2,21) = 0.024;
3573 (*t)(0,22) = 1.200; (*t)(1,22) = -0.024; (*t)(2,22) = 0.022;
3574 (*t)(0,23) = 1.300; (*t)(1,23) = -0.024; (*t)(2,23) = 0.020;
3575 (*t)(0,24) = 1.400; (*t)(1,24) = -0.026; (*t)(2,24) = 0.016;
3576 (*t)(0,25) = 1.500; (*t)(1,25) = -0.028; (*t)(2,25) = 0.014;
3577 (*t)(0,26) = 1.600; (*t)(1,26) = -0.028; (*t)(2,26) = 0.012;
3578 (*t)(0,27) = 1.700; (*t)(1,27) = -0.028; (*t)(2,27) = 0.010;
3579 (*t)(0,28) = 1.800; (*t)(1,28) = -0.028; (*t)(2,28) = 0.010;
3580 (*t)(0,29) = 1.900; (*t)(1,29) = -0.028; (*t)(2,29) = 0.008;
3581 (*t)(0,30) = 2.000; (*t)(1,30) = -0.028; (*t)(2,30) = 0.006;
3582 (*t)(0,31) = 2.100; (*t)(1,31) = -0.026; (*t)(2,31) = 0.006;
3583 (*t)(0,32) = 2.200; (*t)(1,32) = -0.024; (*t)(2,32) = 0.004;
3584 (*t)(0,33) = 2.300; (*t)(1,33) = -0.020; (*t)(2,33) = 0.002;
3585 (*t)(0,34) = 2.400; (*t)(1,34) = -0.020; (*t)(2,34) = 0.002;
3586 (*t)(0,35) = 2.500; (*t)(1,35) = -0.018; (*t)(2,35) = 0.000;
3587 (*t)(0,36) = 2.600; (*t)(1,36) = -0.016; (*t)(2,36) = 0.000;
3588 (*t)(0,37) = 2.700; (*t)(1,37) = -0.014; (*t)(2,37) = -0.002;
3589 (*t)(0,38) = 2.800; (*t)(1,38) = -0.014; (*t)(2,38) = -0.004;
3590 (*t)(0,39) = 2.900; (*t)(1,39) = -0.012; (*t)(2,39) = -0.004;
3591 (*t)(0,40) = 3.000; (*t)(1,40) = -0.010; (*t)(2,40) = -0.006;
3592 (*t)(0,41) = 3.100; (*t)(1,41) = 0.000; (*t)(2,41) = 0.000;
3593 (*t)(0,42) = 3.200; (*t)(1,42) = 0.000; (*t)(2,42) = 0.000;
3594 (*t)(0,43) = 3.300; (*t)(1,43) = 0.000; (*t)(2,43) = 0.000;
3595 (*t)(0,44) = 3.400; (*t)(1,44) = 0.000; (*t)(2,44) = 0.000;
3596 (*t)(0,45) = 3.500; (*t)(1,45) = 0.000; (*t)(2,45) = 0.000;
3597 (*t)(0,46) = 3.600; (*t)(1,46) = 0.000; (*t)(2,46) = 0.000;
3598 (*t)(0,47) = 3.700; (*t)(1,47) = 0.000; (*t)(2,47) = 0.000;
3599 (*t)(0,48) = 3.800; (*t)(1,48) = 0.000; (*t)(2,48) = 0.000;
3600 (*t)(0,49) = 3.900; (*t)(1,49) = 0.000; (*t)(2,49) = 0.000;
3601 (*t)(0,50) = 4.000; (*t)(1,50) = 0.000; (*t)(2,50) = 0.000;
3602 (*t)(0,51) = 4.100; (*t)(1,51) = 0.000; (*t)(2,51) = 0.000;
3603 (*t)(0,52) = 4.200; (*t)(1,52) = 0.000; (*t)(2,52) = 0.000;
3604 (*t)(0,53) = 4.300; (*t)(1,53) = 0.000; (*t)(2,53) = 0.000;
3605 (*t)(0,54) = 4.400; (*t)(1,54) = 0.000; (*t)(2,54) = 0.000;
3606 (*t)(0,55) = 4.500; (*t)(1,55) = 0.000; (*t)(2,55) = 0.000;
3607 (*t)(0,56) = 4.600; (*t)(1,56) = 0.000; (*t)(2,56) = 0.000;
3608 (*t)(0,57) = 4.700; (*t)(1,57) = 0.000; (*t)(2,57) = 0.000;
3609 (*t)(0,58) = 4.800; (*t)(1,58) = 0.000; (*t)(2,58) = 0.000;
3610 (*t)(0,59) = 4.900; (*t)(1,59) = 0.000; (*t)(2,59) = 0.000;
3611 (*t)(0,60) = 5.900; (*t)(1,60) = 0.000; (*t)(2,60) = 0.000;
3627 if(! kTPC)
return kFALSE;
3642 case AliPID::kElectron:
3648 case AliPID::kDeuteron:
3651 case AliPID::kTriton:
3682 if(! kTPC)
return kFALSE;
3708 case AliPID::kElectron:
3714 case AliPID::kDeuteron:
3717 case AliPID::kTriton:
3740 Bool_t goodtrack = (track->GetStatus() & AliESDtrack::kTOFout) &&
3741 (track->GetStatus() & AliESDtrack::kTIME) &&
3742 (track->GetTOFsignal() > 12000) &&
3743 (track->GetTOFsignal() < 100000);
3770 case AliPID::kElectron:
3776 case AliPID::kDeuteron:
3779 case AliPID::kTriton:
3803 Bool_t goodtrack = (track->GetStatus() & AliESDtrack::kTOFout) &&
3804 (track->GetStatus() & AliESDtrack::kTIME) &&
3805 (track->GetTOFsignal() > 12000) &&
3806 (track->GetTOFsignal() < 100000) &&
3807 (track->GetIntegratedLength() > 365);
3836 case AliPID::kElectron:
3842 case AliPID::kDeuteron:
3845 case AliPID::kTriton:
3875 if (!track->GetInnerParam())
3878 const AliExternalTrackParam* tpcTrack = track->GetInnerParam();
3880 Double_t ptotTPC = tpcTrack->GetP();
3881 Double_t sigTPC = track->GetTPCsignal();
3887 case AliPID::kDeuteron:
3889 dEdxBBA = AliExternalTrackParam::BetheBlochAleph(ptotTPC/1.8756,
3895 dSigma = (sigTPC - dEdxBBA)/dEdxBBA;
3897 if( ptotTPC<=1.1 && (dSigma < (0.5 - (0.1818*ptotTPC)) ) && (dSigma > ( (0.218*ptotTPC - 0.4) ) ) )
3901 case AliPID::kTriton:
3909 dEdxBBA = 4.0 * AliExternalTrackParam::BetheBlochAleph( (2.*ptotTPC)/2.8084,
3915 dSigma = (sigTPC - dEdxBBA)/dEdxBBA;
3916 if(ptotTPC<=5.0 && (dSigma >= (-0.03968*ptotTPC - 0.1)) && (dSigma <= (0.31 - 0.0217*ptotTPC)))
3939 if(!track)
return kFALSE;
3942 if ((track->GetStatus()&AliVTrack::kTOFout)==0)
return kFALSE;
3943 if ((track->GetStatus()&AliVTrack::kTIME)==0)
return kFALSE;
3946 if(track->GetTPCsignal() < 10)
return kFALSE;
3951 Float_t nsigma2 = nsigmaTPC*nsigmaTPC + nsigmaTOF*nsigmaTOF;
3963 if(!track)
return kFALSE;
3966 if ((track->GetStatus()&AliVTrack::kTOFout)==0)
return kFALSE;
3967 if ((track->GetStatus()&AliVTrack::kTIME)==0)
return kFALSE;
3970 if(track->GetTPCsignal() < 10)
return kFALSE;
3975 Float_t nsigma2 = nsigmaTPC*nsigmaTPC + nsigmaTOF*nsigmaTOF;
3987 if(!track)
return kFALSE;
3991 for(
int i=0;i<60;i++){
3993 if(track->P()>pInterval && track->P()<pInterval+0.1){p_int = i;}
4006 if ( (track->IsOn(AliAODTrack::kITSin))){
4007 if(p_int<2)
return kFALSE;
4009 if(!
fPurityFunction[index]){ cout<<
"fPurityFunction[index] does not exist"<<endl;
return kFALSE;}
4011 if((track->IsOn(AliAODTrack::kTOFpid))){
4013 if(TMath::Sqrt(TMath::Power(nsigmaTPC,2)+TMath::Power(nsigmaTOF,2))<3){
4162 else if(centrCur < 20){
4272 else if(centrCur < 30){
4382 else if(centrCur < 40){
4492 else if(centrCur < 50){
4602 else if(centrCur < 60){
4712 else if(centrCur < 70){
4822 else if(centrCur < 80){
5044 fC[i][0] =
fC[17][0];
5045 fC[i][1] =
fC[17][1];
5046 fC[i][2] =
fC[17][2];
5047 fC[i][3] =
fC[17][3];
5048 fC[i][4] =
fC[17][4];
5058 const Float_t c = 2.99792457999999984e-02;
5060 Float_t mass[5] = {5.10998909999999971e-04,1.05658000000000002e-01,1.39570000000000000e-01,4.93676999999999977e-01,9.38271999999999995e-01};
5064 track->GetIntegratedTimes(exptimes);
5066 Float_t dedx = track->GetTPCsignal();
5069 Float_t time = track->GetTOFsignal()-
fESDpid.GetTOFResponse().GetStartTime(p);
5072 Float_t betagammares =
fESDpid.GetTOFResponse().GetExpectedSigma(p, exptimes[4], mass[4]);
5074 Float_t betagamma1 = tl/(time-5 *betagammares) * 33.3564095198152043;
5078 if(betagamma1 < 0.1) betagamma1 = 0.1;
5080 if(betagamma1 < 0.99999) betagamma1 /= TMath::Sqrt(1-betagamma1*betagamma1);
5081 else betagamma1 = 100;
5083 Float_t betagamma2 = tl/(time+5 *betagammares) * 33.3564095198152043;
5086 if(betagamma2 < 0.1) betagamma2 = 0.1;
5088 if(betagamma2 < 0.99999) betagamma2 /= TMath::Sqrt(1-betagamma2*betagamma2);
5089 else betagamma2 = 100;
5092 Float_t momtpc=track->GetTPCmomentum();
5094 for(
Int_t i=0;i < 5;i++){
5095 Float_t resolutionTOF =
fESDpid.GetTOFResponse().GetExpectedSigma(p, exptimes[i], mass[i]);
5096 if(TMath::Abs(exptimes[i] - time) < 5 * resolutionTOF){
5098 if(i==0) dedxExp =
fESDpid.GetTPCResponse().GetExpectedSignal(momtpc,AliPID::kElectron);
5099 else if(i==1) dedxExp =
fESDpid.GetTPCResponse().GetExpectedSignal(momtpc,AliPID::kMuon);
5100 else if(i==2) dedxExp =
fESDpid.GetTPCResponse().GetExpectedSignal(momtpc,AliPID::kPion);
5101 else if(i==3) dedxExp =
fESDpid.GetTPCResponse().GetExpectedSignal(momtpc,AliPID::kKaon);
5105 if(i==0) resolutionTPC =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),AliPID::kElectron);
5106 else if(i==1) resolutionTPC =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),AliPID::kMuon);
5107 else if(i==2) resolutionTPC =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),AliPID::kPion);
5108 else if(i==3) resolutionTPC =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),AliPID::kKaon);
5109 else if(i==4) resolutionTPC =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),
AliPID::kProton);
5111 if(TMath::Abs(dedx - dedxExp) < 3 * resolutionTPC){
5119 Float_t bbM =
fESDpid.GetTPCResponse().Bethe((betagamma1+betagamma2)*0.5);
5124 Float_t resolutionTOFpr =
fESDpid.GetTOFResponse().GetExpectedSigma(p, exptimes[4], mass[4]);
5126 if(TMath::Abs(dedx-bb1) < resolutionTPCpr*3 && exptimes[4] < time-7*resolutionTOFpr){
5129 else if(TMath::Abs(dedx-bb2) < resolutionTPCpr*3 && exptimes[4] < time-7*resolutionTOFpr){
5132 else if(TMath::Abs(dedx-bbM) < resolutionTPCpr*3 && exptimes[4] < time-7*resolutionTOFpr){
5150 if(!track) pass = kFALSE;
5153 if(track->GetTPCsignal() < 10) pass = kFALSE;
5172 nsigma2 = nsigmaTPC*nsigmaTPC;
5175 if (((track->GetStatus()&AliVTrack::kTOFout)==0)&&((track->GetStatus()&AliVTrack::kTIME)==0)){
5179 nsigma2 = nsigmaTPC*nsigmaTPC + nsigmaTOF*nsigmaTOF;
5197 return "TPCbayesian";
5205 return "TOFbayesianPID";
5207 return "TOFbetaSimple";
5211 return "TPCTOFNsigma";
5213 return "TPCTOFNsigmaPurity";
5230 return "TPCstandalone";
5232 return "SPDtracklets";
5240 return "DeltaVZERO";
5242 return "KappaVZERO";
5261 Int_t det = track->GetDetector();
5263 Float_t clsX = track->GetClusterX();
5264 Float_t clsY = track->GetClusterY();
5265 Float_t clsZ = track->GetClusterZ();
5266 Float_t ncell = track->GetClusterCells();
5267 Float_t adc = track->GetClusterADC();
5278 if (
fCutEta) {
if ( fTrackEta < fEtaMin || fTrackEta >=
fEtaMax ) pass = kFALSE;}
5279 if (
fCutPhi) {
if ( fTrackPhi < fPhiMin || fTrackPhi >=
fPhiMax ) pass = kFALSE;}
5291 if (
id<0)
return kFALSE;
5296 fTrackPhi = TMath::PiOver4()*(0.5+
id%8);
5338 if(
fEvent->GetRunNumber() < 209122){
5341 EventCentrality =
fEvent->GetCentrality()->GetCentralityPercentile(
"V0M");
5358 if(CorrectionFactor) {
5363 AliMultSelection *MultSelection = 0x0;
5364 MultSelection = (AliMultSelection * )
fEvent->FindListObject(
"MultSelection");
5365 if( !MultSelection) {
5367 AliFatal(
"AliMultSelection not found, did you Run AliMultSelectionTask? \n");
5369 EventCentrality = MultSelection->GetMultiplicityPercentile(
"V0M");
5370 if(EventCentrality < 0 && EventCentrality > 100){
5371 AliWarning(
"No Correction Available for this Centrality \n");
5389 if(CorrectionFactor>0) {
5405 if (
fCutEta) {
if ( fTrackEta < fEtaMin || fTrackEta >=
fEtaMax ) pass = kFALSE;}
5406 if (
fCutPhi) {
if ( fTrackPhi < fPhiMin || fTrackPhi >=
fPhiMax ) pass = kFALSE;}
5420 AliESDMuonTrack *esdTrack =
dynamic_cast<AliESDMuonTrack*
>(vparticle);
5421 AliAODTrack *aodTrack =
dynamic_cast<AliAODTrack*
>(vparticle);
5422 if ((!esdTrack) && (!aodTrack))
return kFALSE;
5433 rpxpy = TMath::Sqrt(xPos*xPos + yPos*yPos);
5434 theta = TMath::ATan2(rpxpy,zPos);
5435 eta = -TMath::Log(TMath::Tan(0.5*theta));
5443 Float_t pybypx, phi = 0., phi1;
5446 if(yPos>0) phi = 90.;
5447 if(yPos<0) phi = 270.;
5452 if(pybypx < 0) pybypx = - pybypx;
5453 phi1 = TMath::ATan(pybypx)*180./3.14159;
5455 if(xPos > 0 && yPos > 0) phi = phi1;
5456 if(xPos < 0 && yPos > 0) phi = 180 - phi1;
5457 if(xPos < 0 && yPos < 0) phi = 180 + phi1;
5458 if(xPos > 0 && yPos < 0) phi = 360 - phi1;
5461 phi = phi*3.14159/180.;
5476 if (!
fQA || !list)
return 0;
5477 if (list->IsEmpty())
return 0;
5481 while ( (obj = dynamic_cast<AliFlowTrackCuts*>(next())) )
5483 if (obj==
this)
continue;
5484 tmplist.Add(obj->
GetQA());
5486 return fQA->Merge(&tmplist);
5496 printf(
"The purity functions file does not exist");
5502 TString species[3] = {
"pion",
"kaon",
"proton"};
5503 TList *Species_functions[3];
5505 for(ispecie = 0; ispecie < 3; ispecie++) {
5507 if(!Species_functions[ispecie]) {
5508 cout<<
"Purity functions for species: "<<species[ispecie]<<
" not found!!!"<<endl;
5513 for(
int i=0;i<180;i++){
5517 if(!
fPurityFunction[i]){printf(
"Purity function does not exist");
return;}
5523 Int_t counterForSharedCluster = 0;
5524 for(
int i =0;i<6;i++){
5525 Bool_t sharedITSCluster = track->HasSharedPointOnITSLayer(i);
5528 if(sharedITSCluster == 1) counterForSharedCluster++;
5532 return counterForSharedCluster;
5539 if(track->GetNcls(0) == 0)
return 999.;
5540 Double_t chi2perClusterITS = track->GetITSchi2()/track->GetNcls(0);
5546 return chi2perClusterITS;
Double_t fTrackPt
mass of the particle
Bool_t PassesESDcuts(AliESDtrack *track)