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);
1387 Bool_t bHITs[6] = {kFALSE};
1389 Bool_t isSPD=kFALSE, isSDD=kFALSE, isSSD=kFALSE;
1390 for (
Int_t i=0; i<6; i++) {
1391 if(track->HasPointOnITSLayer(i)) {
1392 if(i<2) isSPD=kTRUE;
1393 if(i>2 && i<4) isSDD=kTRUE;
1394 if(i>4) isSSD=kTRUE;
1400 for (
Int_t i=0; i<6; i++) {
1401 if(bHITs[i]) ITStype = i+1;
1405 if(isSPD & !isSDD & !isSSD) ITStype = 7;
1406 if(isSPD & isSDD & !isSSD) ITStype = 8;
1407 if(isSPD & !isSDD & isSSD) ITStype = 9;
1408 if(!isSPD & isSDD & !isSSD) ITStype = 10;
1409 if(!isSPD & isSDD & isSSD) ITStype = 11;
1410 if(!isSPD & !isSDD & isSSD) ITStype = 12;
1411 if(isSPD & isSDD & isSSD) {
1412 if(bHITs[0] && !bHITs[1]) ITStype = 13;
1413 if(!bHITs[0] && bHITs[1]) ITStype = 14;
1414 if(bHITs[0] && bHITs[1]) ITStype = 15;
1429 Int_t ntpccls = track->GetTPCNcls();
1435 Int_t nitscls = track->GetITSNcls();
1441 Double_t chi2tpc = track->Chi2perNDF();
1447 Int_t nitscls = track->GetITSNcls();
1449 Double_t chi2TIS = track->GetITSchi2()/track->GetITSNcls();
1457 for (
Int_t i=0; i<2; i++) {
1458 if(track->HasPointOnITSLayer(i)) bSPDCl = kTRUE;
1460 Bool_t bSDDCl = track->HasPointOnITSLayer(2);
1462 if (bSPDCl || (!bSPDCl && bSDDCl)) temppass = kTRUE;
1463 else temppass = kFALSE;
1464 if(!temppass) pass=kFALSE;
1469 Int_t ntpccls = track->GetTPCncls();
1471 Int_t ntpcclsS = track->GetTPCnclsS();
1472 Double_t fshtpccls = 1.*ntpcclsS/ntpccls;
1479 Int_t nCrossedRows = track->GetTPCNCrossedRows();
1481 Float_t CrossedRowsOverFindableClusters = track->GetTPCFoundFraction();
1487 Double_t GoldenChi2 = track->GetChi2TPCConstrainedVsGlobal();
1493 if(TMath::Abs(track->GetTOFsignalDz())>10.) pass=kFALSE;
1494 if(track->GetTOFsignal() < 12000.) pass=kFALSE;
1495 if(track->GetTOFsignal() > 25000.) pass=kFALSE;
1498 if (
GetRequireTPCRefit() && !(track->GetStatus() & AliESDtrack::kTPCrefit) ) pass=kFALSE;
1499 if (
GetRequireITSRefit() && !(track->GetStatus() & AliESDtrack::kITSrefit) ) pass=kFALSE;
1505 if (std::abs((
Int_t)DCAxy)==999 || std::abs((
Int_t)DCAz)==999) {
1508 Double_t pos[3] = {-99., -99., -99.};
1509 track->GetPosition(pos);
1510 if(pos[0]*pos[0]+pos[1]*pos[1] <= 3.*3.) {
1511 AliAODTrack copy(*track);
1513 Double_t bCov[3] = {-99., -99., -99.};
1514 if(copy.PropagateToDCA(
fEvent->GetPrimaryVertex(),
fEvent->GetMagneticField(), 100., b, bCov)) {
1525 if (
fAODFilterBit!=128) MaxDCAPtDep = 0.0182+0.0350/pow(track->Pt(),1.01);
1526 else MaxDCAPtDep = 0.4+0.2/pow(track->Pt(),0.3);
1527 if (TMath::Abs(DCAxy)>MaxDCAPtDep) pass=kFALSE;
1533 Double_t dedx = track->GetTPCsignal();
1538 track->GetIntegratedTimes(time);
1541 Double_t xyz[3]={-9999.,-9999.,-9999.};
1542 const double r = 84.;
1543 if (!track->GetXYZatR(r,
fEvent->GetMagneticField(), xyz, NULL)) pass=kFALSE;
1544 Double_t cra = TMath::ATan2(xyz[1],xyz[0]);
1545 Double_t dpe = 3.*TMath::TwoPi()/360.;
1546 for(
Int_t nb=-9; nb<=9; nb++) {
1548 if(cra<bnp+dpe && cra>bnp-dpe) pass=kFALSE;
1553 if(
fEvent->GetMagneticField() < 0)
1554 phimod = TMath::TwoPi() - phimod;
1555 if(track->Charge() < 0)
1556 phimod = TMath::TwoPi() - phimod;
1558 cout <<
"Warning!!!!! phi < 0: " << phimod << endl;
1560 phimod += TMath::Pi()/18.0;
1561 phimod = fmod(phimod, TMath::Pi()/9.0);
1562 if(phimod < fPhiCutHigh->Eval(track->Pt()) && phimod >
fPhiCutLow->Eval(track->Pt()))
1573 Double_t momTPC = track->GetTPCmomentum();
1577 QAbefore( 5)->Fill(track->Pt(),DCAxy);
1578 QAbefore( 6)->Fill(track->Pt(),DCAz);
1579 if (pass)
QAafter( 1)->Fill(momTPC,dedx);
1580 if (pass)
QAafter( 5)->Fill(track->Pt(),DCAxy);
1581 if (pass)
QAafter( 6)->Fill(track->Pt(),DCAz);
1582 QAbefore( 8)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kElectron]));
1583 if (pass)
QAafter( 8)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kElectron]));
1584 QAbefore( 9)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kMuon]));
1585 if (pass)
QAafter( 9)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kMuon]));
1586 QAbefore(10)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kPion]));
1587 if (pass)
QAafter( 10)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kPion]));
1588 QAbefore(11)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kKaon]));
1589 if (pass)
QAafter( 11)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kKaon]));
1592 QAbefore(18)->Fill(track->P(),track->Chi2perNDF());
1593 if (pass)
QAafter( 18)->Fill(track->P(),track->Chi2perNDF());
1594 Int_t ntpccls = track->GetTPCncls();
1596 Int_t ntpcclsS = track->GetTPCnclsS();
1597 Double_t fshtpccls = 1.*ntpcclsS/ntpccls;
1598 QAbefore(19)->Fill(track->P(),fshtpccls);
1599 if (pass)
QAafter(19)->Fill(track->P(),fshtpccls);
1601 QAbefore(20)->Fill(track->P(),ntpccls);
1602 if (pass)
QAafter(20)->Fill(track->P(),ntpccls);
1603 Int_t nitscls = track->GetITSNcls();
1605 Double_t chi2TIS = track->GetITSchi2()/track->GetITSNcls();
1606 QAbefore(21)->Fill(track->P(),chi2TIS);
1607 if (pass)
QAafter(21)->Fill(track->P(),chi2TIS);
1621 track->GetImpactParameters(dcaxy,dcaz);
1622 const AliExternalTrackParam* pout = track->GetOuterParam();
1623 const AliExternalTrackParam* pin = track->GetInnerParam();
1631 if (zin*zout<0) pass=kFALSE;
1633 if (zout < fIgnoreTPCzRangeMin || zout > fIgnoreTPCzRangeMax) pass=kFALSE;
1638 track->GetTPCNclsIter1():track->GetTPCNcls();
1642 track->GetTPCchi2Iter1():track->GetTPCchi2();
1643 tpcchi2 = (ntpccls>0)?tpcchi2/ntpccls:-FLT_MAX;
1658 Int_t nitscls = track->GetNcls(0);
1675 if (pass)
QAbefore(0)->Fill(track->GetP(),beta);
1676 if (pass)
QAbefore(1)->Fill(pin->GetP(),dedx);
1687 track->GetTPCpid(pidTPC);
1702 if (pass)
QAafter(0)->Fill(track->GetP(),beta);
1703 if (pass)
QAafter(1)->Fill(pin->GetP(),dedx);
1712 if (pass)
QAafter(5)->Fill(pt,dcaxy);
1713 if (pass)
QAafter(6)->Fill(pt,dcaz);
1743 if (!track->FillTPCOnlyTrack(
fTPCtrack))
1759 if (!track->FillTPCOnlyTrack(
fTPCtrack))
1785 Int_t multiplicity = 0;
1795 for (
Int_t i=0; i<
event->GetNumberOfTracks(); i++)
1797 if (
IsSelected(event->GetTrack(i))) multiplicity++;
1800 return multiplicity;
1973 cuts->
fAliESDtrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2009(selPrimaries);
2083 trackCollection->AddAtAndExpand(flowtrack,trackIndex);
2086 TParticle *tmpTParticle=NULL;
2087 AliMCParticle* tmpAliMCParticle=NULL;
2088 AliExternalTrackParam* externalParams=NULL;
2089 AliESDtrack* esdtrack=NULL;
2111 tmpAliMCParticle =
static_cast<AliMCParticle*
>(
fMCevent->GetTrack(tmpTParticle->GetFirstMother()));
2112 flowtrack->
SetPt(tmpAliMCParticle->Pt());
2115 esdtrack =
dynamic_cast<AliESDtrack*
>(
fTrack);
2116 if (!esdtrack)
return NULL;
2117 externalParams =
const_cast<AliExternalTrackParam*
>(esdtrack->GetTPCInnerParam());
2118 if (!externalParams)
return NULL;
2119 flowtrack->
Set(externalParams);
2130 else if (dynamic_cast<AliESDtrack*>(
fTrack))
2133 flowtrack->
SetID(static_cast<AliVTrack*>(
fTrack)->GetID());
2135 else if (dynamic_cast<AliESDMuonTrack*>(
fTrack))
2138 flowtrack->
SetID((
Int_t)static_cast<AliESDMuonTrack*>(
fTrack)->GetUniqueID());
2140 else if (dynamic_cast<AliAODTrack*>(
fTrack))
2146 flowtrack->
SetID(static_cast<AliVTrack*>(
fTrack)->GetID());
2148 else if (dynamic_cast<AliMCParticle*>(
fTrack))
2151 flowtrack->
SetID(static_cast<AliVTrack*>(
fTrack)->GetID());
2158 flowtrack->
SetID(indexMother);
2181 trackCollection->AddAtAndExpand(flowtrack,trackIndex);
2187 trackCollection->RemoveAt(trackIndex);
2197 TParticle *tmpTParticle=NULL;
2198 AliMCParticle* tmpAliMCParticle=NULL;
2229 tmpAliMCParticle =
static_cast<AliMCParticle*
>(
fMCevent->GetTrack(tmpTParticle->GetFirstMother()));
2230 flowtrack->
SetPt(tmpAliMCParticle->Pt());
2258 trackCollection->AddAtAndExpand(flowtrack,trackIndex);
2264 trackCollection->RemoveAt(trackIndex);
2274 if (!
fTrack)
return kFALSE;
2275 TParticle *tmpTParticle=NULL;
2276 AliMCParticle* tmpAliMCParticle=NULL;
2277 AliExternalTrackParam* externalParams=NULL;
2278 AliESDtrack* esdtrack=NULL;
2300 tmpAliMCParticle =
static_cast<AliMCParticle*
>(
fMCevent->GetTrack(tmpTParticle->GetFirstMother()));
2301 flowtrack->
SetPt(tmpAliMCParticle->Pt());
2304 esdtrack =
dynamic_cast<AliESDtrack*
>(
fTrack);
2305 if (!esdtrack)
return kFALSE;
2306 externalParams =
const_cast<AliExternalTrackParam*
>(esdtrack->GetTPCInnerParam());
2307 if (!externalParams)
return kFALSE;
2308 flowtrack->
Set(externalParams);
2319 else if (dynamic_cast<AliESDtrack*>(
fTrack))
2322 flowtrack->
SetID(static_cast<AliVTrack*>(
fTrack)->GetID());
2324 else if (dynamic_cast<AliESDMuonTrack*>(
fTrack))
2327 flowtrack->
SetID((
Int_t)static_cast<AliESDMuonTrack*>(
fTrack)->GetUniqueID());
2329 else if (dynamic_cast<AliAODTrack*>(
fTrack))
2335 flowtrack->
SetID(static_cast<AliVTrack*>(
fTrack)->GetID());
2336 AliAODTrack* aodTrack =
dynamic_cast<AliAODTrack*
>(
fTrack);
2339 else if (dynamic_cast<AliMCParticle*>(
fTrack))
2342 flowtrack->
SetID(static_cast<AliVTrack*>(
fTrack)->GetID());
2664 Bool_t physprim=mcEvent->IsPhysicalPrimary(label);
2665 AliMCParticle* track =
static_cast<AliMCParticle*
>(mcEvent->GetTrack(label));
2666 if (!track)
return kFALSE;
2667 TParticle* particle = track->Particle();
2668 Bool_t transported = particle->TestBit(kTransportBit);
2671 return (physprim && (transported || !requiretransported));
2680 const Int_t kNbinsP=200;
2683 for(
int i=1; i<kNbinsP+1; i++)
2688 binsP[i]=binsP[i-1]+0.05;
2691 const Int_t nBinsDCA=1000;
2693 for(
int i=0; i<nBinsDCA+1; i++) {binsDCA[i]=0.01*i-5.;}
2696 Bool_t adddirstatus = TH1::AddDirectoryStatus();
2697 TH1::AddDirectory(kFALSE);
2699 fQA->SetName(Form(
"%s QA",GetName()));
2700 TList* before =
new TList(); before->SetOwner();
2701 before->SetName(
"before");
2702 TList* after =
new TList(); after->SetOwner();
2703 after->SetName(
"after");
2706 before->Add(
new TH2F(
"TOFbeta",
";p [GeV/c];#beta",kNbinsP,binsP,1000,0.4,1.1));
2707 after->Add(
new TH2F(
"TOFbeta",
";p [GeV/c];#beta",kNbinsP,binsP,1000,0.4,1.1));
2708 before->Add(
new TH2F(
"TPCdedx",
";p [GeV/c];dEdx",kNbinsP,binsP,500,0,500));
2709 after->Add(
new TH2F(
"TPCdedx",
";p [GeV/c];dEdx",kNbinsP,binsP,500,0,500));
2710 before->Add(
new TH2F(
"MC pid",
";p[GeV/c];species",kNbinsP,binsP,10,-5, 5));
2711 after->Add(
new TH2F(
"MC pid",
";p[GeV/c];species",kNbinsP,binsP,10,-5, 5));
2713 TH2F* hb =
new TH2F(
"MC primary",
";p[GeV/c];primary",kNbinsP,binsP,2,-1,1);
2714 TH2F* ha =
new TH2F(
"MC primary",
";p[GeV/c];primary",kNbinsP,binsP,2,-1,1);
2716 axis = hb->GetYaxis();
2717 axis->SetBinLabel(1,
"secondary");
2718 axis->SetBinLabel(2,
"primary");
2719 axis = ha->GetYaxis();
2720 axis->SetBinLabel(1,
"secondary");
2721 axis->SetBinLabel(2,
"primary");
2725 hb =
new TH2F(
"MC production process",
";p[GeV/c];",kNbinsP,binsP,kMaxMCProcess,
2726 -0.5, kMaxMCProcess-0.5);
2727 ha =
new TH2F(
"MC production process",
";p[GeV/c];",kNbinsP,binsP,kMaxMCProcess,
2728 -0.5, kMaxMCProcess-0.5);
2729 axis = hb->GetYaxis();
2730 for (
Int_t i=0; i<kMaxMCProcess; i++)
2732 axis->SetBinLabel(i+1,TMCProcessName[i]);
2734 axis = ha->GetYaxis();
2735 for (
Int_t i=0; i<kMaxMCProcess; i++)
2737 axis->SetBinLabel(i+1,TMCProcessName[i]);
2742 before->Add(
new TH2F(
"DCAxy",
";p_{t}[GeV/c];DCAxy[cm]", 100, 0., 10., nBinsDCA, binsDCA));
2743 after->Add(
new TH2F(
"DCAxy",
";p_{t}[GeV/c];DCAxy[cm]", 100, 0., 10., nBinsDCA, binsDCA));
2744 before->Add(
new TH2F(
"DCAz",
";p_{t}[GeV/c];DCAz[cm]", 100, 0., 10., nBinsDCA, binsDCA));
2745 after->Add(
new TH2F(
"DCAz",
";p_{t}[GeV/c];DCAz[cm]", 100, 0., 10., nBinsDCA, binsDCA));
2747 hb =
new TH2F(
"MC first mother",
";p[GeV/c];",kNbinsP,binsP,44,1.,45.);
2748 ha =
new TH2F(
"MC first mother",
";p[GeV/c];",kNbinsP,binsP,44,1.,45.);
2749 hb->GetYaxis()->SetBinLabel(1,
"#gamma");
2750 ha->GetYaxis()->SetBinLabel(1,
"#gamma");
2751 hb->GetYaxis()->SetBinLabel(2,
"e^{+}");
2752 ha->GetYaxis()->SetBinLabel(2,
"e^{+}");
2753 hb->GetYaxis()->SetBinLabel(3,
"e^{-}");
2754 ha->GetYaxis()->SetBinLabel(3,
"e^{-}");
2755 hb->GetYaxis()->SetBinLabel(4,
"#nu");
2756 ha->GetYaxis()->SetBinLabel(4,
"#nu");
2757 hb->GetYaxis()->SetBinLabel(5,
"#mu^{+}");
2758 ha->GetYaxis()->SetBinLabel(5,
"#mu^{+}");
2759 hb->GetYaxis()->SetBinLabel(6,
"#mu^{-}");
2760 ha->GetYaxis()->SetBinLabel(6,
"#mu^{-}");
2761 hb->GetYaxis()->SetBinLabel(7,
"#pi^{0}");
2762 ha->GetYaxis()->SetBinLabel(7,
"#pi^{0}");
2763 hb->GetYaxis()->SetBinLabel(8,
"#pi^{+}");
2764 ha->GetYaxis()->SetBinLabel(8,
"#pi^{+}");
2765 hb->GetYaxis()->SetBinLabel(9,
"#pi^{-}");
2766 ha->GetYaxis()->SetBinLabel(9,
"#pi^{-}");
2767 hb->GetYaxis()->SetBinLabel(10,
"K^{0}_{L}");
2768 ha->GetYaxis()->SetBinLabel(10,
"K^{0}_{L}");
2769 hb->GetYaxis()->SetBinLabel(11,
"K^{+}");
2770 ha->GetYaxis()->SetBinLabel(11,
"K^{+}");
2771 hb->GetYaxis()->SetBinLabel(12,
"K^{-}");
2772 ha->GetYaxis()->SetBinLabel(12,
"K^{-}");
2773 hb->GetYaxis()->SetBinLabel( 13,
"n");
2774 ha->GetYaxis()->SetBinLabel( 13,
"n");
2775 hb->GetYaxis()->SetBinLabel( 14,
"p");
2776 ha->GetYaxis()->SetBinLabel( 14,
"p");
2777 hb->GetYaxis()->SetBinLabel(15,
"#bar{p}");
2778 ha->GetYaxis()->SetBinLabel(15,
"#bar{p}");
2779 hb->GetYaxis()->SetBinLabel(16,
"K^{0}_{S}");
2780 ha->GetYaxis()->SetBinLabel(16,
"K^{0}_{S}");
2781 hb->GetYaxis()->SetBinLabel(17,
"#eta");
2782 ha->GetYaxis()->SetBinLabel(17,
"#eta");
2783 hb->GetYaxis()->SetBinLabel(18,
"#Lambda");
2784 ha->GetYaxis()->SetBinLabel(18,
"#Lambda");
2785 hb->GetYaxis()->SetBinLabel(19,
"#Sigma^{+}");
2786 ha->GetYaxis()->SetBinLabel(19,
"#Sigma^{+}");
2787 hb->GetYaxis()->SetBinLabel(20,
"#Sigma^{0}");
2788 ha->GetYaxis()->SetBinLabel(20,
"#Sigma^{0}");
2789 hb->GetYaxis()->SetBinLabel(21,
"#Sigma^{-}");
2790 ha->GetYaxis()->SetBinLabel(21,
"#Sigma^{-}");
2791 hb->GetYaxis()->SetBinLabel(22,
"#Theta^{0}");
2792 ha->GetYaxis()->SetBinLabel(22,
"#Theta^{0}");
2793 hb->GetYaxis()->SetBinLabel(23,
"#Theta^{-}");
2794 ha->GetYaxis()->SetBinLabel(23,
"#Theta^{-}");
2795 hb->GetYaxis()->SetBinLabel(24,
"#Omega^{-}");
2796 ha->GetYaxis()->SetBinLabel(24,
"#Omega^{-}");
2797 hb->GetYaxis()->SetBinLabel(25,
"#bar{n}");
2798 ha->GetYaxis()->SetBinLabel(25,
"#bar{n}");
2799 hb->GetYaxis()->SetBinLabel(26,
"#bar{#Lambda}");
2800 ha->GetYaxis()->SetBinLabel(26,
"#bar{#Lambda}");
2801 hb->GetYaxis()->SetBinLabel(27,
"#bar{#Sigma}^{-}");
2802 ha->GetYaxis()->SetBinLabel(27,
"#bar{#Sigma}^{-}");
2803 hb->GetYaxis()->SetBinLabel(28,
"#bar{#Sigma}^{0}");
2804 ha->GetYaxis()->SetBinLabel(28,
"#bar{#Sigma}^{0}");
2805 hb->GetYaxis()->SetBinLabel(29,
"#bar{#Sigma}^{+}");
2806 ha->GetYaxis()->SetBinLabel(29,
"#bar{#Sigma}^{+}");
2807 hb->GetYaxis()->SetBinLabel(30,
"#bar{#Theta}^{0}");
2808 ha->GetYaxis()->SetBinLabel(30,
"#bar{#Theta}^{0}");
2809 hb->GetYaxis()->SetBinLabel(31,
"#bar{#Theta}^{+}");
2810 ha->GetYaxis()->SetBinLabel(31,
"#bar{#Theta}^{+}");
2811 hb->GetYaxis()->SetBinLabel(32,
"#bar{#Omega}^{+}");
2812 ha->GetYaxis()->SetBinLabel(32,
"#bar{#Omega}^{+}");
2813 hb->GetYaxis()->SetBinLabel(33,
"#tau^{+}");
2814 ha->GetYaxis()->SetBinLabel(33,
"#tau^{+}");
2815 hb->GetYaxis()->SetBinLabel(34,
"#tau^{-}");
2816 ha->GetYaxis()->SetBinLabel(34,
"#tau^{-}");
2817 hb->GetYaxis()->SetBinLabel(35,
"D^{+}");
2818 ha->GetYaxis()->SetBinLabel(35,
"D^{+}");
2819 hb->GetYaxis()->SetBinLabel(36,
"D^{-}");
2820 ha->GetYaxis()->SetBinLabel(36,
"D^{-}");
2821 hb->GetYaxis()->SetBinLabel(37,
"D^{0}");
2822 ha->GetYaxis()->SetBinLabel(37,
"D^{0}");
2823 hb->GetYaxis()->SetBinLabel(38,
"#bar{D}^{0}");
2824 ha->GetYaxis()->SetBinLabel(38,
"#bar{D}^{0}");
2825 hb->GetYaxis()->SetBinLabel(39,
"D_{s}^{+}");
2826 ha->GetYaxis()->SetBinLabel(39,
"D_{s}^{+}");
2827 hb->GetYaxis()->SetBinLabel(40,
"#bar{D_{s}}^{-}");
2828 ha->GetYaxis()->SetBinLabel(40,
"#bar{D_{s}}^{-}");
2829 hb->GetYaxis()->SetBinLabel(41,
"#Lambda_{c}^{+}");
2830 ha->GetYaxis()->SetBinLabel(41,
"#Lambda_{c}^{+}");
2831 hb->GetYaxis()->SetBinLabel(42,
"W^{+}");
2832 ha->GetYaxis()->SetBinLabel(42,
"W^{+}");
2833 hb->GetYaxis()->SetBinLabel(43,
"W^{-}");
2834 ha->GetYaxis()->SetBinLabel(43,
"W^{-}");
2835 hb->GetYaxis()->SetBinLabel(44,
"Z^{0}");
2836 ha->GetYaxis()->SetBinLabel(44,
"Z^{0}");
2840 before->Add(
new TH2F(
"TOFkElectron",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2841 after->Add(
new TH2F(
"TOFkElectron",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2843 before->Add(
new TH2F(
"TOFkMuon",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2844 after->Add(
new TH2F(
"TOFkMuon",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2846 before->Add(
new TH2F(
"TOFkPion",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2847 after->Add(
new TH2F(
"TOFkPion",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2849 before->Add(
new TH2F(
"TOFkKaon",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2850 after->Add(
new TH2F(
"TOFkKaon",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2852 before->Add(
new TH2F(
"TOFkProton",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2853 after->Add(
new TH2F(
"TOFkProton",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2856 before->Add(
new TH1F(
"KinkQt",
";q_{t}[GeV/c];counts", 200, 0., 0.3));
2857 after->Add(
new TH1F(
"KinkQt",
";q_{t}[GeV/c];counts", 200, 0., 0.3));
2859 before->Add(
new TH1F(
"KinkMinv",
";m_{inv}(#mu#nu)[GeV/c^{2}];counts;Kink M_{inv}", 200, 0., 0.7));
2860 after->Add(
new TH1F(
"KinkMinv",
";m_{inv}(#mu#nu)[GeV/c^{2}];counts;Kink M_{inv}", 200, 0., 0.7));
2862 before->Add(
new TH2F(
"KinkVertex",
";x[cm];y[cm];Kink vertex position",250,-250.,250., 250,-250.,250.));
2863 after->Add(
new TH2F(
"KinkVertex",
";x[cm];y[cm];Kink vertex position",250,-250.,250., 250,-250.,250.));
2865 before->Add(
new TH2F(
"KinkAngleMp",
";p_{mother}[GeV/c];Kink decay angle [deg];", 100,0.,6., 100,0.,80.));
2866 after->Add(
new TH2F(
"KinkAngleMp",
";p_{mother}[GeV/c];Kink decay angle [deg];", 100,0.,6., 100,0.,80.));
2868 before->Add(
new TH1F(
"KinkIndex",
";Kink index;counts", 2, 0., 2.));
2869 after->Add(
new TH1F(
"KinkIndex",
";Kink index;counts", 2, 0., 2.));
2871 before->Add(
new TH2F(
"Chi2PerClusterTPC",
";p[GeV/c];species",kNbinsP,binsP,50,0.,5.));
2872 after->Add(
new TH2F(
"Chi2PerClusterTPC",
";p[GeV/c];species",kNbinsP,binsP,50,0.,5.));
2874 before->Add(
new TH2F(
"FractionSharedClusterTPC",
";p[GeV/c];species",kNbinsP,binsP,50,0.,1.));
2875 after->Add(
new TH2F(
"FractionSharedClusterTPC",
";p[GeV/c];species",kNbinsP,binsP,50,0.,1.));
2877 before->Add(
new TH2F(
"NClustersTPC",
";p[GeV/c];species",kNbinsP,binsP,150,50.,200.));
2878 after->Add(
new TH2F(
"NClustersTPC",
";p[GeV/c];species",kNbinsP,binsP,150,50.,200.));
2880 before->Add(
new TH2F(
"Chi2PerClusterITS",
";p[GeV/c];species",kNbinsP,binsP,100,0.,50.));
2881 after->Add(
new TH2F(
"Chi2PerClusterITS",
";p[GeV/c];species",kNbinsP,binsP,100,0.,50.));
2883 TH1::AddDirectory(adddirstatus);
2901 if (esd)
return esd->GetMultiplicity()->GetNumberOfTracklets();
2902 if (aod)
return aod->GetTracklets()->GetNumberOfTracklets();
2905 return fMCevent->GetNumberOfTracks();
2909 return esd->GetNumberOfPmdTracks();
2923 if (esd)
return esd->GetNumberOfMuonTracks();
2924 return fEvent->GetNumberOfTracks();
2928 return esd->GetNumberOfKinks();
2932 return esd->GetNumberOfV0s();
2935 return fEvent->GetNumberOfTracks();
2950 if (!
fEvent)
return NULL;
2955 if (esd)
return const_cast<AliMultiplicity*
>(esd->GetMultiplicity());
2956 if (aod)
return const_cast<AliAODTracklets*
>(aod->GetTracklets());
2962 if (!esd)
return NULL;
2963 return esd->GetPmdTrack(i);
2969 if(!aod)
return NULL;
2970 return aod->GetVZEROData();
2972 return esd->GetVZEROData();
2978 if(!aod)
return NULL;
2979 return aod->GetVZEROData();
2981 return esd->GetVZEROData();
2987 if(!aod)
return NULL;
2988 return aod->GetVZEROData();
2990 return esd->GetVZEROData();
2996 if(!aod)
return NULL;
2997 return aod->GetVZEROData();
2999 return esd->GetVZEROData();
3005 if(!aod)
return NULL;
3006 return aod->GetVZEROData();
3008 return esd->GetVZEROData();
3010 if (!
fEvent)
return NULL;
3012 if (esd)
return esd->GetMuonTrack(i);
3013 return fEvent->GetTrack(i);
3016 if (!esd)
return NULL;
3017 return esd->GetKink(i);
3020 if (!esd)
return NULL;
3021 return esd->GetV0(i);
3023 if (!
fEvent)
return NULL;
3024 return fEvent->GetTrack(i);
3056 if(!track->GetAODEvent()->GetTOFHeader()){
3057 AliAODPid *pidObj = track->GetDetPid();
3058 if (!pidObj)
fESDpid.GetTOFResponse().SetTimeResolution(84.);
3061 pidObj->GetTOFpidResolution(sigmaTOFPidInAOD);
3062 if(sigmaTOFPidInAOD[0] > 84.){
3063 fESDpid.GetTOFResponse().SetTimeResolution(sigmaTOFPidInAOD[0]);
3138 printf(
"AliFlowTrackCuts::PassesCuts() this should never be called!\n");
3149 Bool_t goodtrack = (track->GetStatus() & AliESDtrack::kTOFpid) &&
3150 (track->GetTOFsignal() > 12000) &&
3151 (track->GetTOFsignal() < 100000) &&
3152 (track->GetIntegratedLength() > 365);
3160 if (!goodtrack)
return kFALSE;
3162 const Float_t c = 2.99792457999999984e-02;
3164 Float_t l = track->GetIntegratedLength();
3166 Float_t timeTOF = track->GetTOFsignal()- trackT0;
3168 Double_t integratedTimes[9] = {-1.0,-1.0,-1.0,-1.0,-1.0, -1.0, -1.0, -1.0, -1.0};
3169 track->GetIntegratedTimes(integratedTimes);
3170 Float_t betaHypothesis[5] = {0.0,0.0,0.0,0.0,0.0};
3171 Float_t s[5] = {0.0,0.0,0.0,0.0,0.0};
3172 for (
Int_t i=0;i<5;i++)
3174 betaHypothesis[i] = l/integratedTimes[i]/
c;
3175 s[i] = beta-betaHypothesis[i];
3181 return ( (s[2]<0.015) && (s[2]>-0.015) &&
3185 return ( (s[3]<0.015) && (s[3]>-0.015) &&
3189 return ( (s[4]<0.015) && (s[4]>-0.015) &&
3202 Double_t integratedTimes[9] = {-1.0,-1.0,-1.0,-1.0,-1.0, -1.0, -1.0, -1.0, -1.0};
3203 track->GetIntegratedTimes(integratedTimes);
3205 const Float_t c = 2.99792457999999984e-02;
3209 Float_t timeTOF = track->GetTOFsignal()- trackT0;
3210 if(QAmode && timeTOF <= 0)
return -999;
3224 Bool_t goodtrack = (track->GetStatus() & AliESDtrack::kTOFpid) &&
3225 (track->GetTOFsignal() > 12000) &&
3226 (track->GetTOFsignal() < 100000);
3228 if (!goodtrack)
return kFALSE;
3230 const Float_t c = 2.99792457999999984e-02;
3231 Double_t integratedTimes[9] = {-1.0,-1.0,-1.0,-1.0,-1.0, -1.0, -1.0, -1.0, -1.0};
3232 track->GetIntegratedTimes(integratedTimes);
3235 goodtrack = goodtrack && (l > 365);
3237 if (!goodtrack)
return kFALSE;
3250 cout<<
"TOFbeta: fParticleID = "<<
fParticleID<<endl;
3268 Float_t betahypothesis = l/integratedTimes[pid]/
c;
3269 Float_t betadiff = beta-betahypothesis;
3273 if (col<0)
return kFALSE;
3274 Float_t min = (*fTOFpidCuts)(1,col);
3275 Float_t max = (*fTOFpidCuts)(2,col);
3277 Bool_t pass = (betadiff>min && betadiff<max);
3292 Bool_t goodtrack = (track->GetStatus() & AliESDtrack::kTOFpid) &&
3293 (track->GetTOFsignal() > 12000) &&
3294 (track->GetTOFsignal() < 100000) &&
3295 (track->GetIntegratedLength() > 365);
3299 if (!goodtrack)
return kFALSE;
3306 Double_t integratedTimes[9] = {-1.0,-1.0,-1.0,-1.0,-1.0, -1.0, -1.0, -1.0, -1.0};
3307 track->GetIntegratedTimes(integratedTimes);
3327 const Float_t c = 2.99792457999999984e-02;
3328 Float_t l = track->GetIntegratedLength();
3330 Float_t betahypothesis = l/integratedTimes[pid]/
c;
3331 Float_t betadiff = beta-betahypothesis;
3335 if (col<0)
return kFALSE;
3336 Float_t min = (*fTOFpidCuts)(1,col);
3337 Float_t max = (*fTOFpidCuts)(2,col);
3339 Bool_t pass = (betadiff>min && betadiff<max);
3349 track->GetTOFpid(pidTOF);
3359 track->GetTPCpid(pidTPC);
3364 probablity = pidTPC[AliPID::kPion] + pidTPC[AliPID::kMuon];
3377 return track->GetTPCsignal();
3390 const AliExternalTrackParam* tpcparam = track->GetInnerParam();
3391 if (!tpcparam)
return kFALSE;
3394 Float_t sigTPC = track->GetTPCsignal();
3395 Float_t s = (sigTPC-sigExp)/sigExp;
3399 Int_t col = TMath::BinarySearch( arrSize, arr, static_cast<Float_t>(p));
3400 if (col<0)
return kFALSE;
3401 Float_t min = (*fTPCpidCuts)(1,col);
3402 Float_t max = (*fTPCpidCuts)(2,col);
3405 return (s>min && s<max);
3417 t =
new TMatrixF(3,15);
3418 (*t)(0,0) = 0.20; (*t)(1,0) = -0.4; (*t)(2,0) = 0.0;
3419 (*t)(0,1) = 0.25; (*t)(1,1) = -0.4; (*t)(2,1) = 0.1;
3420 (*t)(0,2) = 0.30; (*t)(1,2) = -0.4; (*t)(2,2) = 0.2;
3421 (*t)(0,3) = 0.35; (*t)(1,3) = -0.4; (*t)(2,3) = 0.2;
3422 (*t)(0,4) = 0.40; (*t)(1,4) = -0.4; (*t)(2,4) = 0.3;
3423 (*t)(0,5) = 0.45; (*t)(1,5) = -0.4; (*t)(2,5) = 0.3;
3424 (*t)(0,6) = 0.50; (*t)(1,6) = -0.4; (*t)(2,6) = 0.25;
3425 (*t)(0,7) = 0.55; (*t)(1,7) = -0.4; (*t)(2,7) = 0.15;
3426 (*t)(0,8) = 0.60; (*t)(1,8) = -0.4; (*t)(2,8) = 0.1;
3427 (*t)(0,9) = 0.65; (*t)(1,9) = -0.4; (*t)(2,9) = 0.05;
3428 (*t)(0,10) = 0.70; (*t)(1,10) = -0.4; (*t)(2,10) = 0;
3429 (*t)(0,11) = 0.75; (*t)(1,11) = -0.4; (*t)(2,11) = 0;
3430 (*t)(0,12) = 0.80; (*t)(1,12) = -0.4; (*t)(2,12) = -0.05;
3431 (*t)(0,13) = 0.85; (*t)(1,13) = -0.4; (*t)(2,13) = -0.1;
3432 (*t)(0,14) = 0.90; (*t)(1,14) = 0; (*t)(2,14) = 0;
3437 t =
new TMatrixF(3,12);
3438 (*t)(0,0) = 0.20; (*t)(1,0) = -0.2; (*t)(2,0) = 0.2;
3439 (*t)(0,1) = 0.25; (*t)(1,1) = -0.2; (*t)(2,1) = 0.2;
3440 (*t)(0,2) = 0.30; (*t)(1,2) = -0.2; (*t)(2,2) = 0.2;
3441 (*t)(0,3) = 0.35; (*t)(1,3) = -0.2; (*t)(2,3) = 0.2;
3442 (*t)(0,4) = 0.40; (*t)(1,4) = -0.1; (*t)(2,4) = 0.2;
3443 (*t)(0,5) = 0.45; (*t)(1,5) = -0.1; (*t)(2,5) = 0.2;
3444 (*t)(0,6) = 0.50; (*t)(1,6) =-0.05; (*t)(2,6) = 0.2;
3445 (*t)(0,7) = 0.55; (*t)(1,7) = -0.1; (*t)(2,7) = 0.1;
3446 (*t)(0,8) = 0.60; (*t)(1,8) =-0.05; (*t)(2,8) = 0.1;
3447 (*t)(0,9) = 0.65; (*t)(1,9) = 0; (*t)(2,9) = 0.15;
3448 (*t)(0,10) = 0.70; (*t)(1,10) = 0.05; (*t)(2,10) = 0.2;
3449 (*t)(0,11) = 0.75; (*t)(1,11) = 0; (*t)(2,11) = 0;
3454 t =
new TMatrixF(3,9);
3455 (*t)(0,0) = 0.20; (*t)(1,0) = -0.1; (*t)(2,0) = 0.1;
3456 (*t)(0,1) = 0.25; (*t)(1,1) = -0.2; (*t)(2,1) = 0.2;
3457 (*t)(0,2) = 0.80; (*t)(1,2) = -0.1; (*t)(2,2) = 0.2;
3458 (*t)(0,3) = 0.85; (*t)(1,3) =-0.05; (*t)(2,3) = 0.2;
3459 (*t)(0,4) = 0.90; (*t)(1,4) =-0.05; (*t)(2,4) = 0.25;
3460 (*t)(0,5) = 0.95; (*t)(1,5) =-0.05; (*t)(2,5) = 0.25;
3461 (*t)(0,6) = 1.00; (*t)(1,6) = -0.1; (*t)(2,6) = 0.25;
3462 (*t)(0,7) = 1.10; (*t)(1,7) =-0.05; (*t)(2,7) = 0.3;
3463 (*t)(0,8) = 1.20; (*t)(1,8) = 0; (*t)(2,8) = 0;
3474 t =
new TMatrixF(3,61);
3475 (*t)(0,0) = 0.000; (*t)(1,0) = 0.000; (*t)(2,0) = 0.000;
3476 (*t)(0,1) = 0.050; (*t)(1,1) = 0.000; (*t)(2,1) = 0.000;
3477 (*t)(0,2) = 0.100; (*t)(1,2) = 0.000; (*t)(2,2) = 0.000;
3478 (*t)(0,3) = 0.150; (*t)(1,3) = 0.000; (*t)(2,3) = 0.000;
3479 (*t)(0,4) = 0.200; (*t)(1,4) = -0.030; (*t)(2,4) = 0.030;
3480 (*t)(0,5) = 0.250; (*t)(1,5) = -0.036; (*t)(2,5) = 0.032;
3481 (*t)(0,6) = 0.300; (*t)(1,6) = -0.038; (*t)(2,6) = 0.032;
3482 (*t)(0,7) = 0.350; (*t)(1,7) = -0.034; (*t)(2,7) = 0.032;
3483 (*t)(0,8) = 0.400; (*t)(1,8) = -0.032; (*t)(2,8) = 0.020;
3484 (*t)(0,9) = 0.450; (*t)(1,9) = -0.030; (*t)(2,9) = 0.020;
3485 (*t)(0,10) = 0.500; (*t)(1,10) = -0.030; (*t)(2,10) = 0.020;
3486 (*t)(0,11) = 0.550; (*t)(1,11) = -0.030; (*t)(2,11) = 0.020;
3487 (*t)(0,12) = 0.600; (*t)(1,12) = -0.030; (*t)(2,12) = 0.020;
3488 (*t)(0,13) = 0.650; (*t)(1,13) = -0.030; (*t)(2,13) = 0.020;
3489 (*t)(0,14) = 0.700; (*t)(1,14) = -0.030; (*t)(2,14) = 0.020;
3490 (*t)(0,15) = 0.750; (*t)(1,15) = -0.030; (*t)(2,15) = 0.020;
3491 (*t)(0,16) = 0.800; (*t)(1,16) = -0.030; (*t)(2,16) = 0.020;
3492 (*t)(0,17) = 0.850; (*t)(1,17) = -0.030; (*t)(2,17) = 0.020;
3493 (*t)(0,18) = 0.900; (*t)(1,18) = -0.030; (*t)(2,18) = 0.020;
3494 (*t)(0,19) = 0.950; (*t)(1,19) = -0.028; (*t)(2,19) = 0.028;
3495 (*t)(0,20) = 1.000; (*t)(1,20) = -0.028; (*t)(2,20) = 0.028;
3496 (*t)(0,21) = 1.100; (*t)(1,21) = -0.028; (*t)(2,21) = 0.028;
3497 (*t)(0,22) = 1.200; (*t)(1,22) = -0.026; (*t)(2,22) = 0.028;
3498 (*t)(0,23) = 1.300; (*t)(1,23) = -0.024; (*t)(2,23) = 0.028;
3499 (*t)(0,24) = 1.400; (*t)(1,24) = -0.020; (*t)(2,24) = 0.028;
3500 (*t)(0,25) = 1.500; (*t)(1,25) = -0.018; (*t)(2,25) = 0.028;
3501 (*t)(0,26) = 1.600; (*t)(1,26) = -0.016; (*t)(2,26) = 0.028;
3502 (*t)(0,27) = 1.700; (*t)(1,27) = -0.014; (*t)(2,27) = 0.028;
3503 (*t)(0,28) = 1.800; (*t)(1,28) = -0.012; (*t)(2,28) = 0.026;
3504 (*t)(0,29) = 1.900; (*t)(1,29) = -0.010; (*t)(2,29) = 0.026;
3505 (*t)(0,30) = 2.000; (*t)(1,30) = -0.008; (*t)(2,30) = 0.026;
3506 (*t)(0,31) = 2.100; (*t)(1,31) = -0.008; (*t)(2,31) = 0.024;
3507 (*t)(0,32) = 2.200; (*t)(1,32) = -0.006; (*t)(2,32) = 0.024;
3508 (*t)(0,33) = 2.300; (*t)(1,33) = -0.004; (*t)(2,33) = 0.024;
3509 (*t)(0,34) = 2.400; (*t)(1,34) = -0.004; (*t)(2,34) = 0.024;
3510 (*t)(0,35) = 2.500; (*t)(1,35) = -0.002; (*t)(2,35) = 0.024;
3511 (*t)(0,36) = 2.600; (*t)(1,36) = -0.002; (*t)(2,36) = 0.024;
3512 (*t)(0,37) = 2.700; (*t)(1,37) = 0.000; (*t)(2,37) = 0.024;
3513 (*t)(0,38) = 2.800; (*t)(1,38) = 0.000; (*t)(2,38) = 0.026;
3514 (*t)(0,39) = 2.900; (*t)(1,39) = 0.000; (*t)(2,39) = 0.024;
3515 (*t)(0,40) = 3.000; (*t)(1,40) = 0.002; (*t)(2,40) = 0.026;
3516 (*t)(0,41) = 3.100; (*t)(1,41) = 0.002; (*t)(2,41) = 0.026;
3517 (*t)(0,42) = 3.200; (*t)(1,42) = 0.002; (*t)(2,42) = 0.026;
3518 (*t)(0,43) = 3.300; (*t)(1,43) = 0.002; (*t)(2,43) = 0.026;
3519 (*t)(0,44) = 3.400; (*t)(1,44) = 0.002; (*t)(2,44) = 0.026;
3520 (*t)(0,45) = 3.500; (*t)(1,45) = 0.002; (*t)(2,45) = 0.026;
3521 (*t)(0,46) = 3.600; (*t)(1,46) = 0.002; (*t)(2,46) = 0.026;
3522 (*t)(0,47) = 3.700; (*t)(1,47) = 0.002; (*t)(2,47) = 0.026;
3523 (*t)(0,48) = 3.800; (*t)(1,48) = 0.002; (*t)(2,48) = 0.026;
3524 (*t)(0,49) = 3.900; (*t)(1,49) = 0.004; (*t)(2,49) = 0.024;
3525 (*t)(0,50) = 4.000; (*t)(1,50) = 0.004; (*t)(2,50) = 0.026;
3526 (*t)(0,51) = 4.100; (*t)(1,51) = 0.004; (*t)(2,51) = 0.026;
3527 (*t)(0,52) = 4.200; (*t)(1,52) = 0.004; (*t)(2,52) = 0.024;
3528 (*t)(0,53) = 4.300; (*t)(1,53) = 0.006; (*t)(2,53) = 0.024;
3529 (*t)(0,54) = 4.400; (*t)(1,54) = 0.000; (*t)(2,54) = 0.000;
3530 (*t)(0,55) = 4.500; (*t)(1,55) = 0.000; (*t)(2,55) = 0.000;
3531 (*t)(0,56) = 4.600; (*t)(1,56) = 0.000; (*t)(2,56) = 0.000;
3532 (*t)(0,57) = 4.700; (*t)(1,57) = 0.000; (*t)(2,57) = 0.000;
3533 (*t)(0,58) = 4.800; (*t)(1,58) = 0.000; (*t)(2,58) = 0.000;
3534 (*t)(0,59) = 4.900; (*t)(1,59) = 0.000; (*t)(2,59) = 0.000;
3535 (*t)(0,60) = 5.900; (*t)(1,60) = 0.000; (*t)(2,60) = 0.000;
3541 t =
new TMatrixF(3,61);
3542 (*t)(0,0) = 0.000; (*t)(1,0) = 0.000; (*t)(2,0) = 0.000;
3543 (*t)(0,1) = 0.050; (*t)(1,1) = 0.000; (*t)(2,1) = 0.000;
3544 (*t)(0,2) = 0.100; (*t)(1,2) = 0.000; (*t)(2,2) = 0.000;
3545 (*t)(0,3) = 0.150; (*t)(1,3) = 0.000; (*t)(2,3) = 0.000;
3546 (*t)(0,4) = 0.200; (*t)(1,4) = -0.07; (*t)(2,4) = 0.07;
3547 (*t)(0,5) = 0.200; (*t)(1,5) = -0.07; (*t)(2,5) = 0.07;
3548 (*t)(0,6) = 0.200; (*t)(1,6) = -0.07; (*t)(2,6) = 0.07;
3549 (*t)(0,7) = 0.200; (*t)(1,7) = -0.07; (*t)(2,7) = 0.07;
3550 (*t)(0,8) = 0.200; (*t)(1,8) = -0.07; (*t)(2,8) = 0.07;
3551 (*t)(0,9) = 0.200; (*t)(1,9) = -0.07; (*t)(2,9) = 0.07;
3552 (*t)(0,10) = 0.200; (*t)(1,10) = -0.07; (*t)(2,10) = 0.07;
3553 (*t)(0,11) = 0.200; (*t)(1,11) = -0.07; (*t)(2,11) = 0.07;
3554 (*t)(0,12) = 0.200; (*t)(1,12) = -0.07; (*t)(2,12) = 0.07;
3555 (*t)(0,13) = 0.200; (*t)(1,13) = -0.07; (*t)(2,13) = 0.07;
3556 (*t)(0,14) = 0.200; (*t)(1,14) = -0.07; (*t)(2,14) = 0.07;
3557 (*t)(0,15) = 0.200; (*t)(1,15) = -0.07; (*t)(2,15) = 0.07;
3558 (*t)(0,16) = 0.200; (*t)(1,16) = -0.07; (*t)(2,16) = 0.07;
3559 (*t)(0,17) = 0.850; (*t)(1,17) = -0.070; (*t)(2,17) = 0.070;
3560 (*t)(0,18) = 0.900; (*t)(1,18) = -0.072; (*t)(2,18) = 0.072;
3561 (*t)(0,19) = 0.950; (*t)(1,19) = -0.072; (*t)(2,19) = 0.072;
3562 (*t)(0,20) = 1.000; (*t)(1,20) = -0.074; (*t)(2,20) = 0.074;
3563 (*t)(0,21) = 1.100; (*t)(1,21) = -0.032; (*t)(2,21) = 0.032;
3564 (*t)(0,22) = 1.200; (*t)(1,22) = -0.026; (*t)(2,22) = 0.026;
3565 (*t)(0,23) = 1.300; (*t)(1,23) = -0.026; (*t)(2,23) = 0.026;
3566 (*t)(0,24) = 1.400; (*t)(1,24) = -0.024; (*t)(2,24) = 0.024;
3567 (*t)(0,25) = 1.500; (*t)(1,25) = -0.024; (*t)(2,25) = 0.024;
3568 (*t)(0,26) = 1.600; (*t)(1,26) = -0.026; (*t)(2,26) = 0.026;
3569 (*t)(0,27) = 1.700; (*t)(1,27) = -0.026; (*t)(2,27) = 0.026;
3570 (*t)(0,28) = 1.800; (*t)(1,28) = -0.026; (*t)(2,28) = 0.026;
3571 (*t)(0,29) = 1.900; (*t)(1,29) = -0.026; (*t)(2,29) = 0.026;
3572 (*t)(0,30) = 2.000; (*t)(1,30) = -0.026; (*t)(2,30) = 0.026;
3573 (*t)(0,31) = 2.100; (*t)(1,31) = -0.026; (*t)(2,31) = 0.026;
3574 (*t)(0,32) = 2.200; (*t)(1,32) = -0.026; (*t)(2,32) = 0.024;
3575 (*t)(0,33) = 2.300; (*t)(1,33) = -0.028; (*t)(2,33) = 0.022;
3576 (*t)(0,34) = 2.400; (*t)(1,34) = -0.028; (*t)(2,34) = 0.020;
3577 (*t)(0,35) = 2.500; (*t)(1,35) = -0.028; (*t)(2,35) = 0.018;
3578 (*t)(0,36) = 2.600; (*t)(1,36) = -0.028; (*t)(2,36) = 0.016;
3579 (*t)(0,37) = 2.700; (*t)(1,37) = -0.028; (*t)(2,37) = 0.016;
3580 (*t)(0,38) = 2.800; (*t)(1,38) = -0.030; (*t)(2,38) = 0.014;
3581 (*t)(0,39) = 2.900; (*t)(1,39) = -0.030; (*t)(2,39) = 0.012;
3582 (*t)(0,40) = 3.000; (*t)(1,40) = -0.030; (*t)(2,40) = 0.012;
3583 (*t)(0,41) = 3.100; (*t)(1,41) = -0.030; (*t)(2,41) = 0.010;
3584 (*t)(0,42) = 3.200; (*t)(1,42) = -0.030; (*t)(2,42) = 0.010;
3585 (*t)(0,43) = 3.300; (*t)(1,43) = -0.030; (*t)(2,43) = 0.010;
3586 (*t)(0,44) = 3.400; (*t)(1,44) = -0.030; (*t)(2,44) = 0.008;
3587 (*t)(0,45) = 3.500; (*t)(1,45) = -0.030; (*t)(2,45) = 0.008;
3588 (*t)(0,46) = 3.600; (*t)(1,46) = -0.030; (*t)(2,46) = 0.008;
3589 (*t)(0,47) = 3.700; (*t)(1,47) = -0.030; (*t)(2,47) = 0.006;
3590 (*t)(0,48) = 3.800; (*t)(1,48) = -0.030; (*t)(2,48) = 0.006;
3591 (*t)(0,49) = 3.900; (*t)(1,49) = -0.030; (*t)(2,49) = 0.006;
3592 (*t)(0,50) = 4.000; (*t)(1,50) = -0.028; (*t)(2,50) = 0.004;
3593 (*t)(0,51) = 4.100; (*t)(1,51) = -0.030; (*t)(2,51) = 0.004;
3594 (*t)(0,52) = 4.200; (*t)(1,52) = -0.030; (*t)(2,52) = 0.004;
3595 (*t)(0,53) = 4.300; (*t)(1,53) = -0.028; (*t)(2,53) = 0.002;
3596 (*t)(0,54) = 4.400; (*t)(1,54) = -0.030; (*t)(2,54) = 0.002;
3597 (*t)(0,55) = 4.500; (*t)(1,55) = -0.028; (*t)(2,55) = 0.002;
3598 (*t)(0,56) = 4.600; (*t)(1,56) = -0.028; (*t)(2,56) = 0.002;
3599 (*t)(0,57) = 4.700; (*t)(1,57) = -0.028; (*t)(2,57) = 0.000;
3600 (*t)(0,58) = 4.800; (*t)(1,58) = -0.028; (*t)(2,58) = 0.002;
3601 (*t)(0,59) = 4.900; (*t)(1,59) = 0.000; (*t)(2,59) = 0.000;
3602 (*t)(0,60) = 5.900; (*t)(1,60) = 0.000; (*t)(2,60) = 0.000;
3608 t =
new TMatrixF(3,61);
3609 (*t)(0,0) = 0.000; (*t)(1,0) = 0.000; (*t)(2,0) = 0.000;
3610 (*t)(0,1) = 0.050; (*t)(1,1) = 0.000; (*t)(2,1) = 0.000;
3611 (*t)(0,2) = 0.100; (*t)(1,2) = 0.000; (*t)(2,2) = 0.000;
3612 (*t)(0,3) = 0.150; (*t)(1,3) = 0.000; (*t)(2,3) = 0.000;
3613 (*t)(0,4) = 0.200; (*t)(1,4) = -0.05; (*t)(2,4) = 0.05;
3614 (*t)(0,5) = 0.200; (*t)(1,5) = -0.05; (*t)(2,5) = 0.05;
3615 (*t)(0,6) = 0.200; (*t)(1,6) = -0.05; (*t)(2,6) = 0.05;
3616 (*t)(0,7) = 0.200; (*t)(1,7) = -0.05; (*t)(2,7) = 0.05;
3617 (*t)(0,8) = 0.200; (*t)(1,8) = -0.05; (*t)(2,8) = 0.05;
3618 (*t)(0,9) = 0.200; (*t)(1,9) = -0.05; (*t)(2,9) = 0.05;
3619 (*t)(0,10) = 0.200; (*t)(1,10) = -0.05; (*t)(2,10) = 0.05;
3620 (*t)(0,11) = 0.550; (*t)(1,11) = -0.026; (*t)(2,11) = 0.026;
3621 (*t)(0,12) = 0.600; (*t)(1,12) = -0.026; (*t)(2,12) = 0.026;
3622 (*t)(0,13) = 0.650; (*t)(1,13) = -0.026; (*t)(2,13) = 0.026;
3623 (*t)(0,14) = 0.700; (*t)(1,14) = -0.026; (*t)(2,14) = 0.026;
3624 (*t)(0,15) = 0.750; (*t)(1,15) = -0.026; (*t)(2,15) = 0.026;
3625 (*t)(0,16) = 0.800; (*t)(1,16) = -0.026; (*t)(2,16) = 0.026;
3626 (*t)(0,17) = 0.850; (*t)(1,17) = -0.024; (*t)(2,17) = 0.024;
3627 (*t)(0,18) = 0.900; (*t)(1,18) = -0.024; (*t)(2,18) = 0.024;
3628 (*t)(0,19) = 0.950; (*t)(1,19) = -0.024; (*t)(2,19) = 0.024;
3629 (*t)(0,20) = 1.000; (*t)(1,20) = -0.024; (*t)(2,20) = 0.024;
3630 (*t)(0,21) = 1.100; (*t)(1,21) = -0.024; (*t)(2,21) = 0.024;
3631 (*t)(0,22) = 1.200; (*t)(1,22) = -0.024; (*t)(2,22) = 0.022;
3632 (*t)(0,23) = 1.300; (*t)(1,23) = -0.024; (*t)(2,23) = 0.020;
3633 (*t)(0,24) = 1.400; (*t)(1,24) = -0.026; (*t)(2,24) = 0.016;
3634 (*t)(0,25) = 1.500; (*t)(1,25) = -0.028; (*t)(2,25) = 0.014;
3635 (*t)(0,26) = 1.600; (*t)(1,26) = -0.028; (*t)(2,26) = 0.012;
3636 (*t)(0,27) = 1.700; (*t)(1,27) = -0.028; (*t)(2,27) = 0.010;
3637 (*t)(0,28) = 1.800; (*t)(1,28) = -0.028; (*t)(2,28) = 0.010;
3638 (*t)(0,29) = 1.900; (*t)(1,29) = -0.028; (*t)(2,29) = 0.008;
3639 (*t)(0,30) = 2.000; (*t)(1,30) = -0.028; (*t)(2,30) = 0.006;
3640 (*t)(0,31) = 2.100; (*t)(1,31) = -0.026; (*t)(2,31) = 0.006;
3641 (*t)(0,32) = 2.200; (*t)(1,32) = -0.024; (*t)(2,32) = 0.004;
3642 (*t)(0,33) = 2.300; (*t)(1,33) = -0.020; (*t)(2,33) = 0.002;
3643 (*t)(0,34) = 2.400; (*t)(1,34) = -0.020; (*t)(2,34) = 0.002;
3644 (*t)(0,35) = 2.500; (*t)(1,35) = -0.018; (*t)(2,35) = 0.000;
3645 (*t)(0,36) = 2.600; (*t)(1,36) = -0.016; (*t)(2,36) = 0.000;
3646 (*t)(0,37) = 2.700; (*t)(1,37) = -0.014; (*t)(2,37) = -0.002;
3647 (*t)(0,38) = 2.800; (*t)(1,38) = -0.014; (*t)(2,38) = -0.004;
3648 (*t)(0,39) = 2.900; (*t)(1,39) = -0.012; (*t)(2,39) = -0.004;
3649 (*t)(0,40) = 3.000; (*t)(1,40) = -0.010; (*t)(2,40) = -0.006;
3650 (*t)(0,41) = 3.100; (*t)(1,41) = 0.000; (*t)(2,41) = 0.000;
3651 (*t)(0,42) = 3.200; (*t)(1,42) = 0.000; (*t)(2,42) = 0.000;
3652 (*t)(0,43) = 3.300; (*t)(1,43) = 0.000; (*t)(2,43) = 0.000;
3653 (*t)(0,44) = 3.400; (*t)(1,44) = 0.000; (*t)(2,44) = 0.000;
3654 (*t)(0,45) = 3.500; (*t)(1,45) = 0.000; (*t)(2,45) = 0.000;
3655 (*t)(0,46) = 3.600; (*t)(1,46) = 0.000; (*t)(2,46) = 0.000;
3656 (*t)(0,47) = 3.700; (*t)(1,47) = 0.000; (*t)(2,47) = 0.000;
3657 (*t)(0,48) = 3.800; (*t)(1,48) = 0.000; (*t)(2,48) = 0.000;
3658 (*t)(0,49) = 3.900; (*t)(1,49) = 0.000; (*t)(2,49) = 0.000;
3659 (*t)(0,50) = 4.000; (*t)(1,50) = 0.000; (*t)(2,50) = 0.000;
3660 (*t)(0,51) = 4.100; (*t)(1,51) = 0.000; (*t)(2,51) = 0.000;
3661 (*t)(0,52) = 4.200; (*t)(1,52) = 0.000; (*t)(2,52) = 0.000;
3662 (*t)(0,53) = 4.300; (*t)(1,53) = 0.000; (*t)(2,53) = 0.000;
3663 (*t)(0,54) = 4.400; (*t)(1,54) = 0.000; (*t)(2,54) = 0.000;
3664 (*t)(0,55) = 4.500; (*t)(1,55) = 0.000; (*t)(2,55) = 0.000;
3665 (*t)(0,56) = 4.600; (*t)(1,56) = 0.000; (*t)(2,56) = 0.000;
3666 (*t)(0,57) = 4.700; (*t)(1,57) = 0.000; (*t)(2,57) = 0.000;
3667 (*t)(0,58) = 4.800; (*t)(1,58) = 0.000; (*t)(2,58) = 0.000;
3668 (*t)(0,59) = 4.900; (*t)(1,59) = 0.000; (*t)(2,59) = 0.000;
3669 (*t)(0,60) = 5.900; (*t)(1,60) = 0.000; (*t)(2,60) = 0.000;
3685 if(! kTPC)
return kFALSE;
3700 case AliPID::kElectron:
3706 case AliPID::kDeuteron:
3709 case AliPID::kTriton:
3740 if(! kTPC)
return kFALSE;
3766 case AliPID::kElectron:
3772 case AliPID::kDeuteron:
3775 case AliPID::kTriton:
3798 Bool_t goodtrack = (track->GetStatus() & AliESDtrack::kTOFout) &&
3799 (track->GetStatus() & AliESDtrack::kTIME) &&
3800 (track->GetTOFsignal() > 12000) &&
3801 (track->GetTOFsignal() < 100000);
3828 case AliPID::kElectron:
3834 case AliPID::kDeuteron:
3837 case AliPID::kTriton:
3861 Bool_t goodtrack = (track->GetStatus() & AliESDtrack::kTOFout) &&
3862 (track->GetStatus() & AliESDtrack::kTIME) &&
3863 (track->GetTOFsignal() > 12000) &&
3864 (track->GetTOFsignal() < 100000) &&
3865 (track->GetIntegratedLength() > 365);
3894 case AliPID::kElectron:
3900 case AliPID::kDeuteron:
3903 case AliPID::kTriton:
3933 if (!track->GetInnerParam())
3936 const AliExternalTrackParam* tpcTrack = track->GetInnerParam();
3938 Double_t ptotTPC = tpcTrack->GetP();
3939 Double_t sigTPC = track->GetTPCsignal();
3945 case AliPID::kDeuteron:
3947 dEdxBBA = AliExternalTrackParam::BetheBlochAleph(ptotTPC/1.8756,
3953 dSigma = (sigTPC - dEdxBBA)/dEdxBBA;
3955 if( ptotTPC<=1.1 && (dSigma < (0.5 - (0.1818*ptotTPC)) ) && (dSigma > ( (0.218*ptotTPC - 0.4) ) ) )
3959 case AliPID::kTriton:
3967 dEdxBBA = 4.0 * AliExternalTrackParam::BetheBlochAleph( (2.*ptotTPC)/2.8084,
3973 dSigma = (sigTPC - dEdxBBA)/dEdxBBA;
3974 if(ptotTPC<=5.0 && (dSigma >= (-0.03968*ptotTPC - 0.1)) && (dSigma <= (0.31 - 0.0217*ptotTPC)))
3997 if(!track)
return kFALSE;
4000 if ((track->GetStatus()&AliVTrack::kTOFout)==0)
return kFALSE;
4001 if ((track->GetStatus()&AliVTrack::kTIME)==0)
return kFALSE;
4004 if(track->GetTPCsignal() < 10)
return kFALSE;
4009 Float_t nsigma2 = nsigmaTPC*nsigmaTPC + nsigmaTOF*nsigmaTOF;
4021 if(!track)
return kFALSE;
4024 if ((track->GetStatus()&AliVTrack::kTOFout)==0)
return kFALSE;
4025 if ((track->GetStatus()&AliVTrack::kTIME)==0)
return kFALSE;
4028 if(track->GetTPCsignal() < 10)
return kFALSE;
4033 Float_t nsigma2 = nsigmaTPC*nsigmaTPC + nsigmaTOF*nsigmaTOF;
4045 if(!track)
return kFALSE;
4049 for(
int i=0;i<60;i++){
4051 if(track->P()>pInterval && track->P()<pInterval+0.1){p_int = i;}
4064 if ( (track->IsOn(AliAODTrack::kITSin))){
4065 if(p_int<2)
return kFALSE;
4067 if(!
fPurityFunction[index]){ cout<<
"fPurityFunction[index] does not exist"<<endl;
return kFALSE;}
4069 if((track->IsOn(AliAODTrack::kTOFpid))){
4071 if(TMath::Sqrt(TMath::Power(nsigmaTPC,2)+TMath::Power(nsigmaTOF,2))<3){
4220 else if(centrCur < 20){
4330 else if(centrCur < 30){
4440 else if(centrCur < 40){
4550 else if(centrCur < 50){
4660 else if(centrCur < 60){
4770 else if(centrCur < 70){
4880 else if(centrCur < 80){
5102 fC[i][0] =
fC[17][0];
5103 fC[i][1] =
fC[17][1];
5104 fC[i][2] =
fC[17][2];
5105 fC[i][3] =
fC[17][3];
5106 fC[i][4] =
fC[17][4];
5116 const Float_t c = 2.99792457999999984e-02;
5118 Float_t mass[5] = {5.10998909999999971e-04,1.05658000000000002e-01,1.39570000000000000e-01,4.93676999999999977e-01,9.38271999999999995e-01};
5122 track->GetIntegratedTimes(exptimes);
5124 Float_t dedx = track->GetTPCsignal();
5127 Float_t time = track->GetTOFsignal()-
fESDpid.GetTOFResponse().GetStartTime(p);
5130 Float_t betagammares =
fESDpid.GetTOFResponse().GetExpectedSigma(p, exptimes[4], mass[4]);
5132 Float_t betagamma1 = tl/(time-5 *betagammares) * 33.3564095198152043;
5136 if(betagamma1 < 0.1) betagamma1 = 0.1;
5138 if(betagamma1 < 0.99999) betagamma1 /= TMath::Sqrt(1-betagamma1*betagamma1);
5139 else betagamma1 = 100;
5141 Float_t betagamma2 = tl/(time+5 *betagammares) * 33.3564095198152043;
5144 if(betagamma2 < 0.1) betagamma2 = 0.1;
5146 if(betagamma2 < 0.99999) betagamma2 /= TMath::Sqrt(1-betagamma2*betagamma2);
5147 else betagamma2 = 100;
5150 Float_t momtpc=track->GetTPCmomentum();
5152 for(
Int_t i=0;i < 5;i++){
5153 Float_t resolutionTOF =
fESDpid.GetTOFResponse().GetExpectedSigma(p, exptimes[i], mass[i]);
5154 if(TMath::Abs(exptimes[i] - time) < 5 * resolutionTOF){
5156 if(i==0) dedxExp =
fESDpid.GetTPCResponse().GetExpectedSignal(momtpc,AliPID::kElectron);
5157 else if(i==1) dedxExp =
fESDpid.GetTPCResponse().GetExpectedSignal(momtpc,AliPID::kMuon);
5158 else if(i==2) dedxExp =
fESDpid.GetTPCResponse().GetExpectedSignal(momtpc,AliPID::kPion);
5159 else if(i==3) dedxExp =
fESDpid.GetTPCResponse().GetExpectedSignal(momtpc,AliPID::kKaon);
5163 if(i==0) resolutionTPC =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),AliPID::kElectron);
5164 else if(i==1) resolutionTPC =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),AliPID::kMuon);
5165 else if(i==2) resolutionTPC =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),AliPID::kPion);
5166 else if(i==3) resolutionTPC =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),AliPID::kKaon);
5167 else if(i==4) resolutionTPC =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),
AliPID::kProton);
5169 if(TMath::Abs(dedx - dedxExp) < 3 * resolutionTPC){
5177 Float_t bbM =
fESDpid.GetTPCResponse().Bethe((betagamma1+betagamma2)*0.5);
5182 Float_t resolutionTOFpr =
fESDpid.GetTOFResponse().GetExpectedSigma(p, exptimes[4], mass[4]);
5184 if(TMath::Abs(dedx-bb1) < resolutionTPCpr*3 && exptimes[4] < time-7*resolutionTOFpr){
5187 else if(TMath::Abs(dedx-bb2) < resolutionTPCpr*3 && exptimes[4] < time-7*resolutionTOFpr){
5190 else if(TMath::Abs(dedx-bbM) < resolutionTPCpr*3 && exptimes[4] < time-7*resolutionTOFpr){
5208 if(!track) pass = kFALSE;
5211 if(track->GetTPCsignal() < 10) pass = kFALSE;
5230 nsigma2 = nsigmaTPC*nsigmaTPC;
5233 if (((track->GetStatus()&AliVTrack::kTOFout)==0)&&((track->GetStatus()&AliVTrack::kTIME)==0)){
5237 nsigma2 = nsigmaTPC*nsigmaTPC + nsigmaTOF*nsigmaTOF;
5255 return "TPCbayesian";
5263 return "TOFbayesianPID";
5265 return "TOFbetaSimple";
5269 return "TPCTOFNsigma";
5271 return "TPCTOFNsigmaPurity";
5288 return "TPCstandalone";
5290 return "SPDtracklets";
5298 return "DeltaVZERO";
5300 return "KappaVZERO";
5319 Int_t det = track->GetDetector();
5321 Float_t clsX = track->GetClusterX();
5322 Float_t clsY = track->GetClusterY();
5323 Float_t clsZ = track->GetClusterZ();
5324 Float_t ncell = track->GetClusterCells();
5325 Float_t adc = track->GetClusterADC();
5336 if (
fCutEta) {
if ( fTrackEta < fEtaMin || fTrackEta >=
fEtaMax ) pass = kFALSE;}
5337 if (
fCutPhi) {
if ( fTrackPhi < fPhiMin || fTrackPhi >=
fPhiMax ) pass = kFALSE;}
5349 if (
id<0)
return kFALSE;
5354 fTrackPhi = TMath::PiOver4()*(0.5+
id%8);
5396 if(
fEvent->GetRunNumber() < 209122){
5399 EventCentrality =
fEvent->GetCentrality()->GetCentralityPercentile(
"V0M");
5416 if(CorrectionFactor) {
5421 AliMultSelection *MultSelection = 0x0;
5422 MultSelection = (AliMultSelection * )
fEvent->FindListObject(
"MultSelection");
5423 if( !MultSelection) {
5425 AliFatal(
"AliMultSelection not found, did you Run AliMultSelectionTask? \n");
5427 EventCentrality = MultSelection->GetMultiplicityPercentile(
"V0M");
5428 if(EventCentrality < 0 && EventCentrality > 100){
5429 AliWarning(
"No Correction Available for this Centrality \n");
5447 if(CorrectionFactor>0) {
5463 if (
fCutEta) {
if ( fTrackEta < fEtaMin || fTrackEta >=
fEtaMax ) pass = kFALSE;}
5464 if (
fCutPhi) {
if ( fTrackPhi < fPhiMin || fTrackPhi >=
fPhiMax ) pass = kFALSE;}
5478 AliESDMuonTrack *esdTrack =
dynamic_cast<AliESDMuonTrack*
>(vparticle);
5479 AliAODTrack *aodTrack =
dynamic_cast<AliAODTrack*
>(vparticle);
5480 if ((!esdTrack) && (!aodTrack))
return kFALSE;
5491 rpxpy = TMath::Sqrt(xPos*xPos + yPos*yPos);
5492 theta = TMath::ATan2(rpxpy,zPos);
5493 eta = -TMath::Log(TMath::Tan(0.5*theta));
5501 Float_t pybypx, phi = 0., phi1;
5504 if(yPos>0) phi = 90.;
5505 if(yPos<0) phi = 270.;
5510 if(pybypx < 0) pybypx = - pybypx;
5511 phi1 = TMath::ATan(pybypx)*180./3.14159;
5513 if(xPos > 0 && yPos > 0) phi = phi1;
5514 if(xPos < 0 && yPos > 0) phi = 180 - phi1;
5515 if(xPos < 0 && yPos < 0) phi = 180 + phi1;
5516 if(xPos > 0 && yPos < 0) phi = 360 - phi1;
5519 phi = phi*3.14159/180.;
5534 if (!
fQA || !list)
return 0;
5535 if (list->IsEmpty())
return 0;
5539 while ( (obj = dynamic_cast<AliFlowTrackCuts*>(next())) )
5541 if (obj==
this)
continue;
5542 tmplist.Add(obj->
GetQA());
5544 return fQA->Merge(&tmplist);
5554 printf(
"The purity functions file does not exist");
5560 TString species[3] = {
"pion",
"kaon",
"proton"};