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 fCutNClustersTPC(kFALSE),
114 fNClustersTPCMax(INT_MAX),
115 fNClustersTPCMin(INT_MIN),
116 fCutNClustersITS(kFALSE),
117 fNClustersITSMax(INT_MAX),
118 fNClustersITSMin(INT_MIN),
119 fUseAODFilterBit(kTRUE),
121 fCutDCAToVertexXY(kFALSE),
122 fCutDCAToVertexZ(kFALSE),
123 fCutMinimalTPCdedx(kFALSE),
125 fLinearizeVZEROresponse(kFALSE),
126 fCentralityPercentileMin(0.),
127 fCentralityPercentileMax(5.),
133 fCutPmdNcell(kFALSE),
135 fMinKinkAngle(TMath::DegToRad()*2.),
136 fMinKinkRadius(130.),
137 fMaxKinkRadius(200.),
140 fMinKinkInvMassKmu(0.),
141 fMaxKinkInvMassKmu(0.6),
142 fForceTPCstandalone(kFALSE),
143 fRequireKinkDaughters(kFALSE),
154 fTrackLabel(INT_MIN),
160 fBayesianResponse(NULL),
164 fParticleID(AliPID::kUnknown),
165 fParticleProbability(.9),
166 fAllowTOFmismatchFlag(kFALSE),
167 fRequireStrictTOFTPCagreement(kFALSE),
168 fCutRejectElectronsWithTPCpid(kFALSE),
172 fVZEROgainEqualization(NULL),
173 fVZEROgainEqualizationCen(NULL),
174 fApplyRecentering(kFALSE),
175 fVZEROgainEqualizationPerRing(kFALSE),
183 fPurityFunctionsFile(0),
184 fPurityFunctionsList(0),
185 fCutITSclusterShared(kFALSE),
186 fMaxITSclusterShared(0),
198 fBayesianResponse->SetNewTrackParam();
199 for(Int_t i(0); i < 4; i++) {
203 for(Int_t i(0); i < 8; i++) fUseVZERORing[i] = kTRUE;
205 for(Int_t i(0) ; i < 180; i++) {
206 fPurityFunction[i]=NULL;
214 fAliESDtrackCuts(NULL),
215 fMuonTrackCuts(NULL),
218 fCutMChasTrackReferences(kFALSE),
219 fCutMCprocessType(kFALSE),
220 fMCprocessType(kPNoProcess),
223 fCutMCfirstMotherPID(kFALSE),
224 fMCfirstMotherPID(0),
225 fIgnoreSignInMCPID(kFALSE),
226 fCutMCisPrimary(kFALSE),
227 fRequireTransportBitForPrimaries(kTRUE),
228 fMCisPrimary(kFALSE),
229 fRequireCharge(kFALSE),
231 fCutSPDtrackletDeltaPhi(kFALSE),
232 fSPDtrackletDeltaPhiMax(FLT_MAX),
233 fSPDtrackletDeltaPhiMin(-FLT_MAX),
234 fIgnoreTPCzRange(kFALSE),
235 fIgnoreTPCzRangeMax(FLT_MAX),
236 fIgnoreTPCzRangeMin(-FLT_MAX),
237 fCutChi2PerClusterTPC(kFALSE),
238 fMaxChi2PerClusterTPC(FLT_MAX),
239 fMinChi2PerClusterTPC(-FLT_MAX),
240 fCutNClustersTPC(kFALSE),
241 fNClustersTPCMax(INT_MAX),
242 fNClustersTPCMin(INT_MIN),
243 fCutNClustersITS(kFALSE),
244 fNClustersITSMax(INT_MAX),
245 fNClustersITSMin(INT_MIN),
246 fUseAODFilterBit(kTRUE),
248 fCutDCAToVertexXY(kFALSE),
249 fCutDCAToVertexZ(kFALSE),
250 fCutMinimalTPCdedx(kFALSE),
252 fLinearizeVZEROresponse(kFALSE),
253 fCentralityPercentileMin(0.),
254 fCentralityPercentileMax(5.),
260 fCutPmdNcell(kFALSE),
262 fMinKinkAngle(TMath::DegToRad()*2.),
263 fMinKinkRadius(130.),
264 fMaxKinkRadius(200.),
267 fMinKinkInvMassKmu(0.0),
268 fMaxKinkInvMassKmu(0.6),
269 fForceTPCstandalone(kFALSE),
270 fRequireKinkDaughters(kFALSE),
281 fTrackLabel(INT_MIN),
287 fBayesianResponse(NULL),
291 fParticleID(AliPID::kUnknown),
292 fParticleProbability(.9),
293 fAllowTOFmismatchFlag(kFALSE),
294 fRequireStrictTOFTPCagreement(kFALSE),
295 fCutRejectElectronsWithTPCpid(kFALSE),
299 fVZEROgainEqualization(NULL),
300 fVZEROgainEqualizationCen(NULL),
301 fApplyRecentering(kFALSE),
302 fVZEROgainEqualizationPerRing(kFALSE),
310 fPurityFunctionsFile(0),
311 fPurityFunctionsList(0),
312 fCutITSclusterShared(kFALSE),
313 fMaxITSclusterShared(0),
319 SetTitle(
"AliFlowTrackCuts");
320 fESDpid.GetTPCResponse().SetBetheBlochParameters( 0.0283086,
329 for(Int_t i(0); i < 4; i++) {
335 for(
int i=0;i<180;i++){
344 fAliESDtrackCuts(NULL),
345 fMuonTrackCuts(NULL),
348 fCutMChasTrackReferences(that.fCutMChasTrackReferences),
349 fCutMCprocessType(that.fCutMCprocessType),
350 fMCprocessType(that.fMCprocessType),
351 fCutMCPID(that.fCutMCPID),
353 fCutMCfirstMotherPID(that.fCutMCfirstMotherPID),
354 fMCfirstMotherPID(that.fMCfirstMotherPID),
355 fIgnoreSignInMCPID(that.fIgnoreSignInMCPID),
356 fCutMCisPrimary(that.fCutMCisPrimary),
357 fRequireTransportBitForPrimaries(that.fRequireTransportBitForPrimaries),
358 fMCisPrimary(that.fMCisPrimary),
359 fRequireCharge(that.fRequireCharge),
360 fFakesAreOK(that.fFakesAreOK),
361 fCutSPDtrackletDeltaPhi(that.fCutSPDtrackletDeltaPhi),
362 fSPDtrackletDeltaPhiMax(that.fSPDtrackletDeltaPhiMax),
363 fSPDtrackletDeltaPhiMin(that.fSPDtrackletDeltaPhiMin),
364 fIgnoreTPCzRange(that.fIgnoreTPCzRange),
365 fIgnoreTPCzRangeMax(that.fIgnoreTPCzRangeMax),
366 fIgnoreTPCzRangeMin(that.fIgnoreTPCzRangeMin),
367 fCutChi2PerClusterTPC(that.fCutChi2PerClusterTPC),
368 fMaxChi2PerClusterTPC(that.fMaxChi2PerClusterTPC),
369 fMinChi2PerClusterTPC(that.fMinChi2PerClusterTPC),
370 fCutNClustersTPC(that.fCutNClustersTPC),
371 fNClustersTPCMax(that.fNClustersTPCMax),
372 fNClustersTPCMin(that.fNClustersTPCMin),
373 fCutNClustersITS(that.fCutNClustersITS),
374 fNClustersITSMax(that.fNClustersITSMax),
375 fNClustersITSMin(that.fNClustersITSMin),
376 fUseAODFilterBit(that.fUseAODFilterBit),
377 fAODFilterBit(that.fAODFilterBit),
378 fCutDCAToVertexXY(that.fCutDCAToVertexXY),
379 fCutDCAToVertexZ(that.fCutDCAToVertexZ),
380 fCutMinimalTPCdedx(that.fCutMinimalTPCdedx),
381 fMinimalTPCdedx(that.fMinimalTPCdedx),
382 fLinearizeVZEROresponse(that.fLinearizeVZEROresponse),
383 fCentralityPercentileMin(that.fCentralityPercentileMin),
384 fCentralityPercentileMax(that.fCentralityPercentileMax),
385 fPurityLevel(that.fPurityLevel),
386 fCutPmdDet(that.fCutPmdDet),
387 fPmdDet(that.fPmdDet),
388 fCutPmdAdc(that.fCutPmdAdc),
389 fPmdAdc(that.fPmdAdc),
390 fCutPmdNcell(that.fCutPmdNcell),
391 fPmdNcell(that.fPmdNcell),
392 fMinKinkAngle(that.fMinKinkAngle),
393 fMinKinkRadius(that.fMinKinkRadius),
394 fMaxKinkRadius(that.fMaxKinkRadius),
395 fMinKinkQt(that.fMinKinkQt),
396 fMaxKinkQt(that.fMaxKinkQt),
397 fMinKinkInvMassKmu(that.fMinKinkInvMassKmu),
398 fMaxKinkInvMassKmu(that.fMaxKinkInvMassKmu),
399 fForceTPCstandalone(that.fForceTPCstandalone),
400 fRequireKinkDaughters(that.fRequireKinkDaughters),
401 fParamType(that.fParamType),
402 fParamMix(that.fParamMix),
411 fTrackLabel(INT_MIN),
416 fESDpid(that.fESDpid),
417 fBayesianResponse(NULL),
418 fPIDsource(that.fPIDsource),
421 fParticleID(that.fParticleID),
422 fParticleProbability(that.fParticleProbability),
423 fAllowTOFmismatchFlag(that.fAllowTOFmismatchFlag),
424 fRequireStrictTOFTPCagreement(that.fRequireStrictTOFTPCagreement),
425 fCutRejectElectronsWithTPCpid(that.fCutRejectElectronsWithTPCpid),
428 fPtTOFPIDoff(that.fPtTOFPIDoff),
429 fVZEROgainEqualization(NULL),
430 fVZEROgainEqualizationCen(NULL),
431 fApplyRecentering(that.fApplyRecentering),
432 fVZEROgainEqualizationPerRing(that.fVZEROgainEqualizationPerRing),
433 fDivSigma(that.fDivSigma),
438 fPIDResponse(that.fPIDResponse),
439 fNsigmaCut2(that.fNsigmaCut2),
440 fPurityFunctionsFile(that.fPurityFunctionsFile),
441 fPurityFunctionsList(that.fPurityFunctionsList),
442 fCutITSclusterShared(kFALSE),
443 fMaxITSclusterShared(0),
462 fBayesianResponse->SetNewTrackParam();
468 for(Int_t i(0); i < 4; i++) {
474 for(Int_t i(0); i < 180; i++) {
484 if (
this==&that)
return *
this;
590 #if ROOT_VERSION_CODE < ROOT_VERSION(5,99,0)
599 for(Int_t i(0); i < 4; i++) {
626 if (
fQA) {
fQA->SetOwner();
fQA->Delete();
delete fQA; }
655 for(
int i=0;i<180;i++){
677 AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
679 AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
680 if(inputHandler)
fPIDResponse=inputHandler->GetPIDResponse();
684 AliESDEvent* myESD =
dynamic_cast<AliESDEvent*
>(event);
685 AliAODEvent* myAOD =
dynamic_cast<AliAODEvent*
>(event);
694 fESDpid.SetTOFResponse(myESD,AliESDpid::kTOF_T0);
699 if(myAOD->GetTOFHeader()){
700 fESDpid.SetTOFResponse(myAOD,AliESDpid::kTOF_T0);
721 fESDpid.GetTPCResponse().SetBetheBlochParameters( 2.15898e+00/50.,
733 AliVParticle* vparticle =
dynamic_cast<AliVParticle*
>(obj);
742 AliMultiplicity* tracklets =
dynamic_cast<AliMultiplicity*
>(obj);
743 if (tracklets)
return PassesCuts(tracklets,
id);
744 AliAODTracklets* trkletAOD =
dynamic_cast<AliAODTracklets*
>(obj);
745 if (trkletAOD)
return PassesCuts(trkletAOD,
id);
746 AliESDPmdTrack* pmdtrack =
dynamic_cast<AliESDPmdTrack*
>(obj);
748 AliVVZERO* vvzero =
dynamic_cast<AliVVZERO*
>(obj);
750 AliESDkink* kink =
dynamic_cast<AliESDkink*
>(obj);
762 AliVParticle* vparticle =
dynamic_cast<AliVParticle*
>(obj);
767 AliMultiplicity* tracklets =
dynamic_cast<AliMultiplicity*
>(obj);
770 Int_t label0 = tracklets->GetLabel(
id,0);
771 Int_t label1 = tracklets->GetLabel(
id,1);
772 Int_t label = (
fFakesAreOK)?TMath::Abs(label0):label0;
773 if (label0!=label1) label = -666;
794 if (
id<0)
return kFALSE;
802 if (
fCutEta) {
if ( fTrackEta < fEtaMin || fTrackEta >=
fEtaMax )
return kFALSE;}
803 if (
fCutPhi) {
if ( fTrackPhi < fPhiMin || fTrackPhi >=
fPhiMax )
return kFALSE;}
808 Int_t label0 = tracklet->GetLabel(
id,0);
809 Int_t label1 = tracklet->GetLabel(
id,1);
811 fTrackLabel = (label0==label1)?tracklet->GetLabel(
id,1):-1;
825 if (
id<0)
return kFALSE;
832 fTrackEta = -1.*TMath::Log(TMath::Tan(tracklet->GetTheta(
id)/2.));
834 if (
fCutEta) {
if ( fTrackEta < fEtaMin || fTrackEta >=
fEtaMax )
return kFALSE;}
835 if (
fCutPhi) {
if ( fTrackPhi < fPhiMin || fTrackPhi >=
fPhiMax )
return kFALSE;}
840 Int_t label0 = tracklet->GetLabel(
id,0);
841 Int_t label1 = tracklet->GetLabel(
id,1);
843 fTrackLabel = (label0==label1)?tracklet->GetLabel(
id,1):-1;
855 if (!mcEvent)
return kFALSE;
856 if (label<0)
return kFALSE;
857 AliMCParticle* mcparticle =
static_cast<AliMCParticle*
>(mcEvent->GetTrack(label));
858 if (!mcparticle) {AliError(
"no MC track");
return kFALSE;}
866 Int_t pdgCode = mcparticle->PdgCode();
869 if (TMath::Abs(
fMCPID) != TMath::Abs(pdgCode))
return kFALSE;
873 if (
fMCPID != pdgCode)
return kFALSE;
879 TParticle* tparticle=mcparticle->Particle();
880 Int_t firstMotherLabel = 0;
881 if (tparticle) { firstMotherLabel = tparticle->GetFirstMother(); }
882 AliVParticle* firstMotherParticle = mcEvent->GetTrack(firstMotherLabel);
883 Int_t pdgcodeFirstMother = 0;
884 if (firstMotherParticle) { pdgcodeFirstMother = firstMotherParticle->PdgCode(); }
889 TParticle* particle = mcparticle->Particle();
890 Int_t processID = particle->GetUniqueID();
895 if (mcparticle->GetNumberOfTrackReferences()<1)
return kFALSE;
918 fV0 =
const_cast<AliESDv0*
>(v0);
923 if (!v0->GetOnFlyStatus())
return kFALSE;
924 const AliExternalTrackParam *negHelix=v0->GetParamN();
925 const AliExternalTrackParam *posHelix=v0->GetParamP();
926 AliVParticle *v0tracks[2];
927 v0tracks[0] =
fEvent->GetTrack(v0->GetNindex());
928 v0tracks[1] =
fEvent->GetTrack(v0->GetPindex());
929 if( v0tracks[1]->Charge() < 0)
931 v0tracks[1] =
fEvent->GetTrack(v0->GetNindex());
932 v0tracks[0] =
fEvent->GetTrack(v0->GetPindex());
933 negHelix=v0->GetParamP();
934 posHelix=v0->GetParamN();
937 int KalmanPidPairs[4][2] =
948 AliKFParticle v0trackKFneg(*(negHelix),KalmanPidPairs[
id][0]);
949 AliKFParticle v0trackKFpos(*(posHelix),KalmanPidPairs[
id][1]);
950 AliKFParticle v0particleRefit;
951 v0particleRefit += v0trackKFneg;
952 v0particleRefit += v0trackKFpos;
953 Double_t invMassErr= -999;
954 v0particleRefit.GetMass(
fTrackMass,invMassErr);
958 fTrackPhi = TMath::Pi()+v0particleRefit.GetPhi();
967 if ( v0tracks[0]->Charge() == v0tracks[1]->Charge() ) pass=kFALSE;
968 if ( v0tracks[0]->Pt()<0.15 || v0tracks[1]->Pt()<0.15 ) pass=kFALSE;
980 fKink=
const_cast<AliESDkink*
>(kink);
984 Float_t kinkAngle = kink->GetAngle(2);
986 Double_t kinkRadius = kink->GetR();
987 if (kinkRadius<fMinKinkRadius || kinkRadius>
fMaxKinkRadius) pass = kFALSE;
990 const TVector3 motherMfromKink(kink->GetMotherP());
991 const TVector3 daughterMfromKink(kink->GetDaughterP());
992 Float_t qt=kink->GetQt();
993 if ( qt < fMinKinkQt || qt >
fMaxKinkQt) pass = kFALSE;
996 Float_t energyDaughterMu = TMath::Sqrt( daughterMfromKink.Mag()*daughterMfromKink.Mag()+
998 Float_t p1XM = motherMfromKink.Px();
999 Float_t p1YM = motherMfromKink.Py();
1000 Float_t p1ZM = motherMfromKink.Pz();
1001 Float_t p2XM = daughterMfromKink.Px();
1002 Float_t p2YM = daughterMfromKink.Py();
1003 Float_t p2ZM = daughterMfromKink.Pz();
1004 Float_t p3Daughter = TMath::Sqrt( ((p1XM-p2XM)*(p1XM-p2XM))+((p1YM-p2YM)*(p1YM-p2YM))+
1005 ((p1ZM-p2ZM)*(p1ZM-p2ZM)) );
1006 Double_t invariantMassKmu = TMath::Sqrt( (energyDaughterMu+p3Daughter)*(energyDaughterMu+p3Daughter)-
1007 motherMfromKink.Mag()*motherMfromKink.Mag() );
1015 if (pass)
QAafter(13)->Fill(qt);
1016 QAbefore(14)->Fill(invariantMassKmu);
1017 if (pass)
QAafter(14)->Fill(invariantMassKmu);
1018 const Double_t* kinkPosition = kink->GetPosition();
1019 QAbefore(15)->Fill(kinkPosition[0],kinkPosition[1]);
1020 if (pass)
QAafter(15)->Fill(kinkPosition[0],kinkPosition[1]);
1021 QAbefore(16)->Fill(motherMfromKink.Mag(),kinkAngle*TMath::RadToDeg());
1022 if (pass)
QAafter(16)->Fill(motherMfromKink.Mag(),kinkAngle*TMath::RadToDeg());
1026 Int_t indexKinkMother = kink->GetIndex(0);
1027 AliESDtrack* motherTrack =
dynamic_cast<AliESDtrack*
>(
fEvent->GetTrack(indexKinkMother));
1028 if (!motherTrack)
return kFALSE;
1051 Bool_t isMCparticle = kFALSE;
1052 AliESDtrack* esdTrack =
dynamic_cast<AliESDtrack*
>(vparticle);
1053 AliAODTrack* aodTrack = NULL;
1064 isMCparticle = (
dynamic_cast<AliMCParticle*
>(
fTrack))!=NULL;
1065 aodTrack =
dynamic_cast<AliAODTrack*
>(vparticle);
1070 if (!
fTrack)
return kFALSE;
1072 if (esdTrack) esdTrack =
static_cast<AliESDtrack*
>(
fTrack);
1075 Double_t pt =
fTrack->Pt();
1076 Double_t p =
fTrack->P();
1078 if (
fCutPt) {
if (pt < fPtMin || pt >=
fPtMax ) pass=kFALSE;}
1087 if (charge!=
fCharge) pass=kFALSE;
1095 if (esdTrack) {
if (!
PassesESDcuts(esdTrack)) { pass=kFALSE; } }
1096 if (aodTrack) {
if (!
PassesAODcuts(aodTrack,pass)) { pass=kFALSE; } }
1103 Int_t processID = tparticle->GetUniqueID();
1104 Int_t firstMotherLabel = tparticle->GetFirstMother();
1112 AliVParticle* firstMotherParticle =
fMCevent->GetTrack(firstMotherLabel);
1113 Int_t pdgcodeFirstMother = 0;
1114 if (firstMotherParticle) {pdgcodeFirstMother = firstMotherParticle->PdgCode();}
1117 switch (TMath::Abs(pdgcode))
1120 pdg = AliPID::kElectron + 0.5;
break;
1122 pdg = AliPID::kMuon + 0.5;
break;
1124 pdg = AliPID::kPion + 0.5;
break;
1126 pdg = AliPID::kKaon + 0.5;
break;
1128 pdg = AliPID::kProton + 0.5;
break;
1130 pdg = AliPID::kUnknown + 0.5;
break;
1132 pdg = TMath::Sign(pdg,static_cast<Float_t>(pdgcode));
1134 Float_t geantCode = 0;
1135 switch (pdgcodeFirstMother)
1146 case 12:
case 14:
case 16:
1275 QAbefore(3)->Fill(p,primary?0.5:-0.5);
1276 QAbefore(4)->Fill(p,static_cast<Float_t>(processID));
1277 QAbefore(7)->Fill(p,geantCode+0.5);
1278 if (pass)
QAafter(2)->Fill(p,pdg);
1279 if (pass)
QAafter(3)->Fill(p,primary?0.5:-0.5);
1280 if (pass)
QAafter(4)->Fill(p,static_cast<Float_t>(processID));
1281 if (pass)
QAafter(7)->Fill(p,geantCode);
1293 Bool_t pass = passedFid;
1298 Int_t ntpccls = track->GetTPCNcls();
1304 Int_t nitscls = track->GetITSNcls();
1310 Double_t chi2tpc = track->Chi2perNDF();
1314 if (
GetRequireTPCRefit() && !(track->GetStatus() & AliESDtrack::kTPCrefit) ) pass=kFALSE;
1315 if (
GetRequireITSRefit() && !(track->GetStatus() & AliESDtrack::kITSrefit) ) pass=kFALSE;
1323 Double_t dedx = track->GetTPCsignal();
1328 track->GetIntegratedTimes(time);
1336 Double_t momTPC = track->GetTPCmomentum();
1340 QAbefore( 5)->Fill(track->Pt(),track->DCA());
1341 QAbefore( 6)->Fill(track->Pt(),track->ZAtDCA());
1342 if (pass)
QAafter( 1)->Fill(momTPC,dedx);
1345 AliAODTrack copy(*track);
1346 Double_t b[2] = {-99. -99.};
1347 Double_t bCov[3] = {-99., -99., -99.};
1348 if(copy.PropagateToDCA(
fEvent->GetPrimaryVertex(),
fEvent->GetMagneticField(), 100., b, bCov)) {
1349 QAafter( 5)->Fill(track->Pt(),b[0]);
1350 QAafter( 6)->Fill(track->Pt(),b[1]);
1353 if (pass)
QAafter( 5)->Fill(track->Pt(),track->DCA());
1354 if (pass)
QAafter( 6)->Fill(track->Pt(),track->ZAtDCA());
1356 QAbefore( 8)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kElectron]));
1357 if (pass)
QAafter( 8)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kElectron]));
1358 QAbefore( 9)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kMuon]));
1359 if (pass)
QAafter( 9)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kMuon]));
1360 QAbefore(10)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kPion]));
1361 if (pass)
QAafter( 10)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kPion]));
1362 QAbefore(11)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kKaon]));
1363 if (pass)
QAafter( 11)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kKaon]));
1364 QAbefore(12)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kProton]));
1365 if (pass)
QAafter( 12)->Fill(track->P(),(track->GetTOFsignal()-time[AliPID::kProton]));
1379 track->GetImpactParameters(dcaxy,dcaz);
1380 const AliExternalTrackParam* pout = track->GetOuterParam();
1381 const AliExternalTrackParam* pin = track->GetInnerParam();
1387 Double_t zin = pin->GetZ();
1388 Double_t zout = pout->GetZ();
1389 if (zin*zout<0) pass=kFALSE;
1391 if (zout < fIgnoreTPCzRangeMin || zout > fIgnoreTPCzRangeMax) pass=kFALSE;
1396 track->GetTPCNclsIter1():track->GetTPCNcls();
1400 track->GetTPCchi2Iter1():track->GetTPCchi2();
1401 tpcchi2 = (ntpccls>0)?tpcchi2/ntpccls:-FLT_MAX;
1416 Int_t nitscls = track->GetNcls(0);
1429 Double_t beta =
GetBeta(track);
1430 Double_t dedx =
Getdedx(track);
1433 if (pass)
QAbefore(0)->Fill(track->GetP(),beta);
1434 if (pass)
QAbefore(1)->Fill(pin->GetP(),dedx);
1444 Double_t pidTPC[AliPID::kSPECIES];
1445 track->GetTPCpid(pidTPC);
1460 if (pass)
QAafter(0)->Fill(track->GetP(),beta);
1461 if (pass)
QAafter(1)->Fill(pin->GetP(),dedx);
1467 Double_t pt = track->Pt();
1470 if (pass)
QAafter(5)->Fill(pt,dcaxy);
1471 if (pass)
QAafter(6)->Fill(pt,dcaz);
1472 QAbefore(17)->Fill(Float_t(track->GetKinkIndex(0)));
1473 if (pass)
QAafter(17)->Fill(Float_t(track->GetKinkIndex(0)));
1501 if (!track->FillTPCOnlyTrack(
fTPCtrack))
1517 if (!track->FillTPCOnlyTrack(
fTPCtrack))
1543 Int_t multiplicity = 0;
1553 for (Int_t i=0; i<
event->GetNumberOfTracks(); i++)
1555 if (
IsSelected(event->GetTrack(i))) multiplicity++;
1558 return multiplicity;
1731 cuts->
fAliESDtrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2009(selPrimaries);
1841 trackCollection->AddAtAndExpand(flowtrack,trackIndex);
1844 TParticle *tmpTParticle=NULL;
1845 AliMCParticle* tmpAliMCParticle=NULL;
1846 AliExternalTrackParam* externalParams=NULL;
1847 AliESDtrack* esdtrack=NULL;
1869 tmpAliMCParticle =
static_cast<AliMCParticle*
>(
fMCevent->GetTrack(tmpTParticle->GetFirstMother()));
1870 flowtrack->
SetPt(tmpAliMCParticle->Pt());
1873 esdtrack =
dynamic_cast<AliESDtrack*
>(
fTrack);
1874 if (!esdtrack)
return NULL;
1875 externalParams =
const_cast<AliExternalTrackParam*
>(esdtrack->GetTPCInnerParam());
1876 if (!externalParams)
return NULL;
1877 flowtrack->
Set(externalParams);
1888 else if (dynamic_cast<AliESDtrack*>(
fTrack))
1891 flowtrack->
SetID(static_cast<AliVTrack*>(
fTrack)->GetID());
1893 else if (dynamic_cast<AliESDMuonTrack*>(
fTrack))
1896 flowtrack->
SetID((Int_t)static_cast<AliESDMuonTrack*>(
fTrack)->GetUniqueID());
1898 else if (dynamic_cast<AliAODTrack*>(
fTrack))
1904 flowtrack->
SetID(static_cast<AliVTrack*>(
fTrack)->GetID());
1906 else if (dynamic_cast<AliMCParticle*>(
fTrack))
1909 flowtrack->
SetID(static_cast<AliVTrack*>(
fTrack)->GetID());
1914 Int_t indexMother =
fKink->GetIndex(0);
1915 Int_t indexDaughter =
fKink->GetIndex(1);
1916 flowtrack->
SetID(indexMother);
1939 trackCollection->AddAtAndExpand(flowtrack,trackIndex);
1945 trackCollection->RemoveAt(trackIndex);
1955 TParticle *tmpTParticle=NULL;
1956 AliMCParticle* tmpAliMCParticle=NULL;
1987 tmpAliMCParticle =
static_cast<AliMCParticle*
>(
fMCevent->GetTrack(tmpTParticle->GetFirstMother()));
1988 flowtrack->
SetPt(tmpAliMCParticle->Pt());
2016 trackCollection->AddAtAndExpand(flowtrack,trackIndex);
2022 trackCollection->RemoveAt(trackIndex);
2032 if (!
fTrack)
return kFALSE;
2033 TParticle *tmpTParticle=NULL;
2034 AliMCParticle* tmpAliMCParticle=NULL;
2035 AliExternalTrackParam* externalParams=NULL;
2036 AliESDtrack* esdtrack=NULL;
2058 tmpAliMCParticle =
static_cast<AliMCParticle*
>(
fMCevent->GetTrack(tmpTParticle->GetFirstMother()));
2059 flowtrack->
SetPt(tmpAliMCParticle->Pt());
2062 esdtrack =
dynamic_cast<AliESDtrack*
>(
fTrack);
2063 if (!esdtrack)
return kFALSE;
2064 externalParams =
const_cast<AliExternalTrackParam*
>(esdtrack->GetTPCInnerParam());
2065 if (!externalParams)
return kFALSE;
2066 flowtrack->
Set(externalParams);
2077 else if (dynamic_cast<AliESDtrack*>(
fTrack))
2080 flowtrack->
SetID(static_cast<AliVTrack*>(
fTrack)->GetID());
2082 else if (dynamic_cast<AliESDMuonTrack*>(
fTrack))
2085 flowtrack->
SetID((Int_t)static_cast<AliESDMuonTrack*>(
fTrack)->GetUniqueID());
2087 else if (dynamic_cast<AliAODTrack*>(
fTrack))
2093 flowtrack->
SetID(static_cast<AliVTrack*>(
fTrack)->GetID());
2095 else if (dynamic_cast<AliMCParticle*>(
fTrack))
2098 flowtrack->
SetID(static_cast<AliVTrack*>(
fTrack)->GetID());
2416 Bool_t physprim=mcEvent->IsPhysicalPrimary(label);
2417 AliMCParticle* track =
static_cast<AliMCParticle*
>(mcEvent->GetTrack(label));
2418 if (!track)
return kFALSE;
2419 TParticle* particle = track->Particle();
2420 Bool_t transported = particle->TestBit(kTransportBit);
2423 return (physprim && (transported || !requiretransported));
2432 const Int_t kNbinsP=200;
2433 Double_t binsP[kNbinsP+1];
2435 for(
int i=1; i<kNbinsP+1; i++)
2440 binsP[i]=binsP[i-1]+0.05;
2443 const Int_t nBinsDCA=1000;
2444 Double_t binsDCA[nBinsDCA+1];
2445 for(
int i=0; i<nBinsDCA+1; i++) {binsDCA[i]=0.01*i-5.;}
2448 Bool_t adddirstatus = TH1::AddDirectoryStatus();
2449 TH1::AddDirectory(kFALSE);
2450 fQA=
new TList();
fQA->SetOwner();
2451 fQA->SetName(Form(
"%s QA",GetName()));
2452 TList* before =
new TList(); before->SetOwner();
2453 before->SetName(
"before");
2454 TList* after =
new TList(); after->SetOwner();
2455 after->SetName(
"after");
2458 before->Add(
new TH2F(
"TOFbeta",
";p [GeV/c];#beta",kNbinsP,binsP,1000,0.4,1.1));
2459 after->Add(
new TH2F(
"TOFbeta",
";p [GeV/c];#beta",kNbinsP,binsP,1000,0.4,1.1));
2460 before->Add(
new TH2F(
"TPCdedx",
";p [GeV/c];dEdx",kNbinsP,binsP,500,0,500));
2461 after->Add(
new TH2F(
"TPCdedx",
";p [GeV/c];dEdx",kNbinsP,binsP,500,0,500));
2462 before->Add(
new TH2F(
"MC pid",
";p[GeV/c];species",kNbinsP,binsP,10,-5, 5));
2463 after->Add(
new TH2F(
"MC pid",
";p[GeV/c];species",kNbinsP,binsP,10,-5, 5));
2465 TH2F* hb =
new TH2F(
"MC primary",
";p[GeV/c];primary",kNbinsP,binsP,2,-1,1);
2466 TH2F* ha =
new TH2F(
"MC primary",
";p[GeV/c];primary",kNbinsP,binsP,2,-1,1);
2468 axis = hb->GetYaxis();
2469 axis->SetBinLabel(1,
"secondary");
2470 axis->SetBinLabel(2,
"primary");
2471 axis = ha->GetYaxis();
2472 axis->SetBinLabel(1,
"secondary");
2473 axis->SetBinLabel(2,
"primary");
2477 hb =
new TH2F(
"MC production process",
";p[GeV/c];",kNbinsP,binsP,kMaxMCProcess,
2478 -0.5, kMaxMCProcess-0.5);
2479 ha =
new TH2F(
"MC production process",
";p[GeV/c];",kNbinsP,binsP,kMaxMCProcess,
2480 -0.5, kMaxMCProcess-0.5);
2481 axis = hb->GetYaxis();
2482 for (Int_t i=0; i<kMaxMCProcess; i++)
2484 axis->SetBinLabel(i+1,TMCProcessName[i]);
2486 axis = ha->GetYaxis();
2487 for (Int_t i=0; i<kMaxMCProcess; i++)
2489 axis->SetBinLabel(i+1,TMCProcessName[i]);
2494 before->Add(
new TH2F(
"DCAxy",
";p_{t}[GeV/c];DCAxy[cm]", 100, 0., 10., nBinsDCA, binsDCA));
2495 after->Add(
new TH2F(
"DCAxy",
";p_{t}[GeV/c];DCAxy[cm]", 100, 0., 10., nBinsDCA, binsDCA));
2496 before->Add(
new TH2F(
"DCAz",
";p_{t}[GeV/c];DCAz[cm]", 100, 0., 10., nBinsDCA, binsDCA));
2497 after->Add(
new TH2F(
"DCAz",
";p_{t}[GeV/c];DCAz[cm]", 100, 0., 10., nBinsDCA, binsDCA));
2499 hb =
new TH2F(
"MC first mother",
";p[GeV/c];",kNbinsP,binsP,44,1.,45.);
2500 ha =
new TH2F(
"MC first mother",
";p[GeV/c];",kNbinsP,binsP,44,1.,45.);
2501 hb->GetYaxis()->SetBinLabel(1,
"#gamma");
2502 ha->GetYaxis()->SetBinLabel(1,
"#gamma");
2503 hb->GetYaxis()->SetBinLabel(2,
"e^{+}");
2504 ha->GetYaxis()->SetBinLabel(2,
"e^{+}");
2505 hb->GetYaxis()->SetBinLabel(3,
"e^{-}");
2506 ha->GetYaxis()->SetBinLabel(3,
"e^{-}");
2507 hb->GetYaxis()->SetBinLabel(4,
"#nu");
2508 ha->GetYaxis()->SetBinLabel(4,
"#nu");
2509 hb->GetYaxis()->SetBinLabel(5,
"#mu^{+}");
2510 ha->GetYaxis()->SetBinLabel(5,
"#mu^{+}");
2511 hb->GetYaxis()->SetBinLabel(6,
"#mu^{-}");
2512 ha->GetYaxis()->SetBinLabel(6,
"#mu^{-}");
2513 hb->GetYaxis()->SetBinLabel(7,
"#pi^{0}");
2514 ha->GetYaxis()->SetBinLabel(7,
"#pi^{0}");
2515 hb->GetYaxis()->SetBinLabel(8,
"#pi^{+}");
2516 ha->GetYaxis()->SetBinLabel(8,
"#pi^{+}");
2517 hb->GetYaxis()->SetBinLabel(9,
"#pi^{-}");
2518 ha->GetYaxis()->SetBinLabel(9,
"#pi^{-}");
2519 hb->GetYaxis()->SetBinLabel(10,
"K^{0}_{L}");
2520 ha->GetYaxis()->SetBinLabel(10,
"K^{0}_{L}");
2521 hb->GetYaxis()->SetBinLabel(11,
"K^{+}");
2522 ha->GetYaxis()->SetBinLabel(11,
"K^{+}");
2523 hb->GetYaxis()->SetBinLabel(12,
"K^{-}");
2524 ha->GetYaxis()->SetBinLabel(12,
"K^{-}");
2525 hb->GetYaxis()->SetBinLabel( 13,
"n");
2526 ha->GetYaxis()->SetBinLabel( 13,
"n");
2527 hb->GetYaxis()->SetBinLabel( 14,
"p");
2528 ha->GetYaxis()->SetBinLabel( 14,
"p");
2529 hb->GetYaxis()->SetBinLabel(15,
"#bar{p}");
2530 ha->GetYaxis()->SetBinLabel(15,
"#bar{p}");
2531 hb->GetYaxis()->SetBinLabel(16,
"K^{0}_{S}");
2532 ha->GetYaxis()->SetBinLabel(16,
"K^{0}_{S}");
2533 hb->GetYaxis()->SetBinLabel(17,
"#eta");
2534 ha->GetYaxis()->SetBinLabel(17,
"#eta");
2535 hb->GetYaxis()->SetBinLabel(18,
"#Lambda");
2536 ha->GetYaxis()->SetBinLabel(18,
"#Lambda");
2537 hb->GetYaxis()->SetBinLabel(19,
"#Sigma^{+}");
2538 ha->GetYaxis()->SetBinLabel(19,
"#Sigma^{+}");
2539 hb->GetYaxis()->SetBinLabel(20,
"#Sigma^{0}");
2540 ha->GetYaxis()->SetBinLabel(20,
"#Sigma^{0}");
2541 hb->GetYaxis()->SetBinLabel(21,
"#Sigma^{-}");
2542 ha->GetYaxis()->SetBinLabel(21,
"#Sigma^{-}");
2543 hb->GetYaxis()->SetBinLabel(22,
"#Theta^{0}");
2544 ha->GetYaxis()->SetBinLabel(22,
"#Theta^{0}");
2545 hb->GetYaxis()->SetBinLabel(23,
"#Theta^{-}");
2546 ha->GetYaxis()->SetBinLabel(23,
"#Theta^{-}");
2547 hb->GetYaxis()->SetBinLabel(24,
"#Omega^{-}");
2548 ha->GetYaxis()->SetBinLabel(24,
"#Omega^{-}");
2549 hb->GetYaxis()->SetBinLabel(25,
"#bar{n}");
2550 ha->GetYaxis()->SetBinLabel(25,
"#bar{n}");
2551 hb->GetYaxis()->SetBinLabel(26,
"#bar{#Lambda}");
2552 ha->GetYaxis()->SetBinLabel(26,
"#bar{#Lambda}");
2553 hb->GetYaxis()->SetBinLabel(27,
"#bar{#Sigma}^{-}");
2554 ha->GetYaxis()->SetBinLabel(27,
"#bar{#Sigma}^{-}");
2555 hb->GetYaxis()->SetBinLabel(28,
"#bar{#Sigma}^{0}");
2556 ha->GetYaxis()->SetBinLabel(28,
"#bar{#Sigma}^{0}");
2557 hb->GetYaxis()->SetBinLabel(29,
"#bar{#Sigma}^{+}");
2558 ha->GetYaxis()->SetBinLabel(29,
"#bar{#Sigma}^{+}");
2559 hb->GetYaxis()->SetBinLabel(30,
"#bar{#Theta}^{0}");
2560 ha->GetYaxis()->SetBinLabel(30,
"#bar{#Theta}^{0}");
2561 hb->GetYaxis()->SetBinLabel(31,
"#bar{#Theta}^{+}");
2562 ha->GetYaxis()->SetBinLabel(31,
"#bar{#Theta}^{+}");
2563 hb->GetYaxis()->SetBinLabel(32,
"#bar{#Omega}^{+}");
2564 ha->GetYaxis()->SetBinLabel(32,
"#bar{#Omega}^{+}");
2565 hb->GetYaxis()->SetBinLabel(33,
"#tau^{+}");
2566 ha->GetYaxis()->SetBinLabel(33,
"#tau^{+}");
2567 hb->GetYaxis()->SetBinLabel(34,
"#tau^{-}");
2568 ha->GetYaxis()->SetBinLabel(34,
"#tau^{-}");
2569 hb->GetYaxis()->SetBinLabel(35,
"D^{+}");
2570 ha->GetYaxis()->SetBinLabel(35,
"D^{+}");
2571 hb->GetYaxis()->SetBinLabel(36,
"D^{-}");
2572 ha->GetYaxis()->SetBinLabel(36,
"D^{-}");
2573 hb->GetYaxis()->SetBinLabel(37,
"D^{0}");
2574 ha->GetYaxis()->SetBinLabel(37,
"D^{0}");
2575 hb->GetYaxis()->SetBinLabel(38,
"#bar{D}^{0}");
2576 ha->GetYaxis()->SetBinLabel(38,
"#bar{D}^{0}");
2577 hb->GetYaxis()->SetBinLabel(39,
"D_{s}^{+}");
2578 ha->GetYaxis()->SetBinLabel(39,
"D_{s}^{+}");
2579 hb->GetYaxis()->SetBinLabel(40,
"#bar{D_{s}}^{-}");
2580 ha->GetYaxis()->SetBinLabel(40,
"#bar{D_{s}}^{-}");
2581 hb->GetYaxis()->SetBinLabel(41,
"#Lambda_{c}^{+}");
2582 ha->GetYaxis()->SetBinLabel(41,
"#Lambda_{c}^{+}");
2583 hb->GetYaxis()->SetBinLabel(42,
"W^{+}");
2584 ha->GetYaxis()->SetBinLabel(42,
"W^{+}");
2585 hb->GetYaxis()->SetBinLabel(43,
"W^{-}");
2586 ha->GetYaxis()->SetBinLabel(43,
"W^{-}");
2587 hb->GetYaxis()->SetBinLabel(44,
"Z^{0}");
2588 ha->GetYaxis()->SetBinLabel(44,
"Z^{0}");
2592 before->Add(
new TH2F(
"TOFkElectron",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2593 after->Add(
new TH2F(
"TOFkElectron",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2595 before->Add(
new TH2F(
"TOFkMuon",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2596 after->Add(
new TH2F(
"TOFkMuon",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2598 before->Add(
new TH2F(
"TOFkPion",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2599 after->Add(
new TH2F(
"TOFkPion",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2601 before->Add(
new TH2F(
"TOFkKaon",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2602 after->Add(
new TH2F(
"TOFkKaon",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2604 before->Add(
new TH2F(
"TOFkProton",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2605 after->Add(
new TH2F(
"TOFkProton",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2608 before->Add(
new TH1F(
"KinkQt",
";q_{t}[GeV/c];counts", 200, 0., 0.3));
2609 after->Add(
new TH1F(
"KinkQt",
";q_{t}[GeV/c];counts", 200, 0., 0.3));
2611 before->Add(
new TH1F(
"KinkMinv",
";m_{inv}(#mu#nu)[GeV/c^{2}];counts;Kink M_{inv}", 200, 0., 0.7));
2612 after->Add(
new TH1F(
"KinkMinv",
";m_{inv}(#mu#nu)[GeV/c^{2}];counts;Kink M_{inv}", 200, 0., 0.7));
2614 before->Add(
new TH2F(
"KinkVertex",
";x[cm];y[cm];Kink vertex position",250,-250.,250., 250,-250.,250.));
2615 after->Add(
new TH2F(
"KinkVertex",
";x[cm];y[cm];Kink vertex position",250,-250.,250., 250,-250.,250.));
2617 before->Add(
new TH2F(
"KinkAngleMp",
";p_{mother}[GeV/c];Kink decay angle [deg];", 100,0.,6., 100,0.,80.));
2618 after->Add(
new TH2F(
"KinkAngleMp",
";p_{mother}[GeV/c];Kink decay angle [deg];", 100,0.,6., 100,0.,80.));
2620 before->Add(
new TH1F(
"KinkIndex",
";Kink index;counts", 2, 0., 2.));
2621 after->Add(
new TH1F(
"KinkIndex",
";Kink index;counts", 2, 0., 2.));
2623 TH1::AddDirectory(adddirstatus);
2631 AliESDEvent* esd=NULL;
2632 AliAODEvent* aod=NULL;
2637 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2638 aod =
dynamic_cast<AliAODEvent*
>(
fEvent);
2641 if (esd)
return esd->GetMultiplicity()->GetNumberOfTracklets();
2642 if (aod)
return aod->GetTracklets()->GetNumberOfTracklets();
2645 return fMCevent->GetNumberOfTracks();
2647 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2649 return esd->GetNumberOfPmdTracks();
2660 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2661 if (esd)
return esd->GetNumberOfMuonTracks();
2662 return fEvent->GetNumberOfTracks();
2664 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2666 return esd->GetNumberOfKinks();
2668 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2670 return esd->GetNumberOfV0s();
2673 return fEvent->GetNumberOfTracks();
2683 AliESDEvent* esd=NULL;
2684 AliAODEvent* aod=NULL;
2688 if (!
fEvent)
return NULL;
2689 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2690 aod =
dynamic_cast<AliAODEvent*
>(
fEvent);
2693 if (esd)
return const_cast<AliMultiplicity*
>(esd->GetMultiplicity());
2694 if (aod)
return const_cast<AliAODTracklets*
>(aod->GetTracklets());
2699 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2700 if (!esd)
return NULL;
2701 return esd->GetPmdTrack(i);
2703 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2706 aod =
dynamic_cast<AliAODEvent*
>(
fEvent);
2707 if(!aod)
return NULL;
2708 return aod->GetVZEROData();
2710 return esd->GetVZEROData();
2712 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2715 aod =
dynamic_cast<AliAODEvent*
>(
fEvent);
2716 if(!aod)
return NULL;
2717 return aod->GetVZEROData();
2719 return esd->GetVZEROData();
2721 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2724 aod =
dynamic_cast<AliAODEvent*
>(
fEvent);
2725 if(!aod)
return NULL;
2726 return aod->GetVZEROData();
2728 return esd->GetVZEROData();
2730 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2733 aod =
dynamic_cast<AliAODEvent*
>(
fEvent);
2734 if(!aod)
return NULL;
2735 return aod->GetVZEROData();
2737 return esd->GetVZEROData();
2739 if (!
fEvent)
return NULL;
2740 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2741 if (esd)
return esd->GetMuonTrack(i);
2742 return fEvent->GetTrack(i);
2744 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2745 if (!esd)
return NULL;
2746 return esd->GetKink(i);
2748 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2749 if (!esd)
return NULL;
2750 return esd->GetV0(i);
2752 if (!
fEvent)
return NULL;
2753 return fEvent->GetTrack(i);
2785 if(!track->GetAODEvent()->GetTOFHeader()){
2786 AliAODPid *pidObj = track->GetDetPid();
2787 if (!pidObj)
fESDpid.GetTOFResponse().SetTimeResolution(84.);
2789 Double_t sigmaTOFPidInAOD[10];
2790 pidObj->GetTOFpidResolution(sigmaTOFPidInAOD);
2791 if(sigmaTOFPidInAOD[0] > 84.){
2792 fESDpid.GetTOFResponse().SetTimeResolution(sigmaTOFPidInAOD[0]);
2798 Bool_t pass = kTRUE;
2830 Bool_t pass = kTRUE;
2867 printf(
"AliFlowTrackCuts::PassesCuts() this should never be called!\n");
2878 Bool_t goodtrack = (track->GetStatus() & AliESDtrack::kTOFpid) &&
2879 (track->GetTOFsignal() > 12000) &&
2880 (track->GetTOFsignal() < 100000) &&
2881 (track->GetIntegratedLength() > 365);
2889 if (!goodtrack)
return kFALSE;
2891 const Float_t c = 2.99792457999999984e-02;
2892 Float_t p = track->GetP();
2893 Float_t l = track->GetIntegratedLength();
2894 Float_t trackT0 =
fESDpid.GetTOFResponse().GetStartTime(p);
2895 Float_t timeTOF = track->GetTOFsignal()- trackT0;
2896 Float_t beta = l/timeTOF/c;
2897 Double_t integratedTimes[9] = {-1.0,-1.0,-1.0,-1.0,-1.0, -1.0, -1.0, -1.0, -1.0};
2898 track->GetIntegratedTimes(integratedTimes);
2899 Float_t betaHypothesis[5] = {0.0,0.0,0.0,0.0,0.0};
2900 Float_t s[5] = {0.0,0.0,0.0,0.0,0.0};
2901 for (Int_t i=0;i<5;i++)
2903 betaHypothesis[i] = l/integratedTimes[i]/c;
2904 s[i] = beta-betaHypothesis[i];
2910 return ( (s[2]<0.015) && (s[2]>-0.015) &&
2914 return ( (s[3]<0.015) && (s[3]>-0.015) &&
2917 case AliPID::kProton:
2918 return ( (s[4]<0.015) && (s[4]>-0.015) &&
2931 Double_t integratedTimes[9] = {-1.0,-1.0,-1.0,-1.0,-1.0, -1.0, -1.0, -1.0, -1.0};
2932 track->GetIntegratedTimes(integratedTimes);
2934 const Float_t c = 2.99792457999999984e-02;
2935 Float_t p = track->P();
2936 Float_t l = integratedTimes[0]*c;
2937 Float_t trackT0 =
fESDpid.GetTOFResponse().GetStartTime(p);
2938 Float_t timeTOF = track->GetTOFsignal()- trackT0;
2939 if(QAmode && timeTOF <= 0)
return -999;
2953 Bool_t goodtrack = (track->GetStatus() & AliESDtrack::kTOFpid) &&
2954 (track->GetTOFsignal() > 12000) &&
2955 (track->GetTOFsignal() < 100000);
2957 if (!goodtrack)
return kFALSE;
2959 const Float_t c = 2.99792457999999984e-02;
2960 Double_t integratedTimes[9] = {-1.0,-1.0,-1.0,-1.0,-1.0, -1.0, -1.0, -1.0, -1.0};
2961 track->GetIntegratedTimes(integratedTimes);
2962 Float_t l = integratedTimes[0]*c;
2964 goodtrack = goodtrack && (l > 365);
2966 if (!goodtrack)
return kFALSE;
2975 Float_t beta =
GetBeta(track);
2979 cout<<
"TOFbeta: fParticleID = "<<
fParticleID<<endl;
2988 case AliPID::kProton:
2996 Float_t p = track->P();
2997 Float_t betahypothesis = l/integratedTimes[pid]/c;
2998 Float_t betadiff = beta-betahypothesis;
3001 Int_t col = TMath::BinarySearch(
fTOFpidCuts->GetNcols(),arr,
static_cast<Float_t
>(p));
3002 if (col<0)
return kFALSE;
3003 Float_t min = (*fTOFpidCuts)(1,col);
3004 Float_t max = (*fTOFpidCuts)(2,col);
3006 Bool_t pass = (betadiff>min && betadiff<max);
3021 Bool_t goodtrack = (track->GetStatus() & AliESDtrack::kTOFpid) &&
3022 (track->GetTOFsignal() > 12000) &&
3023 (track->GetTOFsignal() < 100000) &&
3024 (track->GetIntegratedLength() > 365);
3028 if (!goodtrack)
return kFALSE;
3034 Float_t beta =
GetBeta(track);
3035 Double_t integratedTimes[9] = {-1.0,-1.0,-1.0,-1.0,-1.0, -1.0, -1.0, -1.0, -1.0};
3036 track->GetIntegratedTimes(integratedTimes);
3048 case AliPID::kProton:
3056 const Float_t c = 2.99792457999999984e-02;
3057 Float_t l = track->GetIntegratedLength();
3058 Float_t p = track->GetP();
3059 Float_t betahypothesis = l/integratedTimes[pid]/c;
3060 Float_t betadiff = beta-betahypothesis;
3063 Int_t col = TMath::BinarySearch(
fTOFpidCuts->GetNcols(),arr,
static_cast<Float_t
>(p));
3064 if (col<0)
return kFALSE;
3065 Float_t min = (*fTOFpidCuts)(1,col);
3066 Float_t max = (*fTOFpidCuts)(2,col);
3068 Bool_t pass = (betadiff>min && betadiff<max);
3077 Double_t pidTOF[AliPID::kSPECIES];
3078 track->GetTOFpid(pidTOF);
3087 Double_t pidTPC[AliPID::kSPECIES];
3088 track->GetTPCpid(pidTPC);
3089 Double_t probablity = 0.;
3093 probablity = pidTPC[AliPID::kPion] + pidTPC[AliPID::kMuon];
3106 return track->GetTPCsignal();
3119 const AliExternalTrackParam* tpcparam = track->GetInnerParam();
3120 if (!tpcparam)
return kFALSE;
3121 Double_t p = tpcparam->GetP();
3123 Float_t sigTPC = track->GetTPCsignal();
3124 Float_t s = (sigTPC-sigExp)/sigExp;
3128 Int_t col = TMath::BinarySearch( arrSize, arr, static_cast<Float_t>(p));
3129 if (col<0)
return kFALSE;
3130 Float_t min = (*fTPCpidCuts)(1,col);
3131 Float_t max = (*fTPCpidCuts)(2,col);
3134 return (s>min && s<max);
3146 t =
new TMatrixF(3,15);
3147 (*t)(0,0) = 0.20; (*t)(1,0) = -0.4; (*t)(2,0) = 0.0;
3148 (*t)(0,1) = 0.25; (*t)(1,1) = -0.4; (*t)(2,1) = 0.1;
3149 (*t)(0,2) = 0.30; (*t)(1,2) = -0.4; (*t)(2,2) = 0.2;
3150 (*t)(0,3) = 0.35; (*t)(1,3) = -0.4; (*t)(2,3) = 0.2;
3151 (*t)(0,4) = 0.40; (*t)(1,4) = -0.4; (*t)(2,4) = 0.3;
3152 (*t)(0,5) = 0.45; (*t)(1,5) = -0.4; (*t)(2,5) = 0.3;
3153 (*t)(0,6) = 0.50; (*t)(1,6) = -0.4; (*t)(2,6) = 0.25;
3154 (*t)(0,7) = 0.55; (*t)(1,7) = -0.4; (*t)(2,7) = 0.15;
3155 (*t)(0,8) = 0.60; (*t)(1,8) = -0.4; (*t)(2,8) = 0.1;
3156 (*t)(0,9) = 0.65; (*t)(1,9) = -0.4; (*t)(2,9) = 0.05;
3157 (*t)(0,10) = 0.70; (*t)(1,10) = -0.4; (*t)(2,10) = 0;
3158 (*t)(0,11) = 0.75; (*t)(1,11) = -0.4; (*t)(2,11) = 0;
3159 (*t)(0,12) = 0.80; (*t)(1,12) = -0.4; (*t)(2,12) = -0.05;
3160 (*t)(0,13) = 0.85; (*t)(1,13) = -0.4; (*t)(2,13) = -0.1;
3161 (*t)(0,14) = 0.90; (*t)(1,14) = 0; (*t)(2,14) = 0;
3166 t =
new TMatrixF(3,12);
3167 (*t)(0,0) = 0.20; (*t)(1,0) = -0.2; (*t)(2,0) = 0.2;
3168 (*t)(0,1) = 0.25; (*t)(1,1) = -0.2; (*t)(2,1) = 0.2;
3169 (*t)(0,2) = 0.30; (*t)(1,2) = -0.2; (*t)(2,2) = 0.2;
3170 (*t)(0,3) = 0.35; (*t)(1,3) = -0.2; (*t)(2,3) = 0.2;
3171 (*t)(0,4) = 0.40; (*t)(1,4) = -0.1; (*t)(2,4) = 0.2;
3172 (*t)(0,5) = 0.45; (*t)(1,5) = -0.1; (*t)(2,5) = 0.2;
3173 (*t)(0,6) = 0.50; (*t)(1,6) =-0.05; (*t)(2,6) = 0.2;
3174 (*t)(0,7) = 0.55; (*t)(1,7) = -0.1; (*t)(2,7) = 0.1;
3175 (*t)(0,8) = 0.60; (*t)(1,8) =-0.05; (*t)(2,8) = 0.1;
3176 (*t)(0,9) = 0.65; (*t)(1,9) = 0; (*t)(2,9) = 0.15;
3177 (*t)(0,10) = 0.70; (*t)(1,10) = 0.05; (*t)(2,10) = 0.2;
3178 (*t)(0,11) = 0.75; (*t)(1,11) = 0; (*t)(2,11) = 0;
3183 t =
new TMatrixF(3,9);
3184 (*t)(0,0) = 0.20; (*t)(1,0) = -0.1; (*t)(2,0) = 0.1;
3185 (*t)(0,1) = 0.25; (*t)(1,1) = -0.2; (*t)(2,1) = 0.2;
3186 (*t)(0,2) = 0.80; (*t)(1,2) = -0.1; (*t)(2,2) = 0.2;
3187 (*t)(0,3) = 0.85; (*t)(1,3) =-0.05; (*t)(2,3) = 0.2;
3188 (*t)(0,4) = 0.90; (*t)(1,4) =-0.05; (*t)(2,4) = 0.25;
3189 (*t)(0,5) = 0.95; (*t)(1,5) =-0.05; (*t)(2,5) = 0.25;
3190 (*t)(0,6) = 1.00; (*t)(1,6) = -0.1; (*t)(2,6) = 0.25;
3191 (*t)(0,7) = 1.10; (*t)(1,7) =-0.05; (*t)(2,7) = 0.3;
3192 (*t)(0,8) = 1.20; (*t)(1,8) = 0; (*t)(2,8) = 0;
3203 t =
new TMatrixF(3,61);
3204 (*t)(0,0) = 0.000; (*t)(1,0) = 0.000; (*t)(2,0) = 0.000;
3205 (*t)(0,1) = 0.050; (*t)(1,1) = 0.000; (*t)(2,1) = 0.000;
3206 (*t)(0,2) = 0.100; (*t)(1,2) = 0.000; (*t)(2,2) = 0.000;
3207 (*t)(0,3) = 0.150; (*t)(1,3) = 0.000; (*t)(2,3) = 0.000;
3208 (*t)(0,4) = 0.200; (*t)(1,4) = -0.030; (*t)(2,4) = 0.030;
3209 (*t)(0,5) = 0.250; (*t)(1,5) = -0.036; (*t)(2,5) = 0.032;
3210 (*t)(0,6) = 0.300; (*t)(1,6) = -0.038; (*t)(2,6) = 0.032;
3211 (*t)(0,7) = 0.350; (*t)(1,7) = -0.034; (*t)(2,7) = 0.032;
3212 (*t)(0,8) = 0.400; (*t)(1,8) = -0.032; (*t)(2,8) = 0.020;
3213 (*t)(0,9) = 0.450; (*t)(1,9) = -0.030; (*t)(2,9) = 0.020;
3214 (*t)(0,10) = 0.500; (*t)(1,10) = -0.030; (*t)(2,10) = 0.020;
3215 (*t)(0,11) = 0.550; (*t)(1,11) = -0.030; (*t)(2,11) = 0.020;
3216 (*t)(0,12) = 0.600; (*t)(1,12) = -0.030; (*t)(2,12) = 0.020;
3217 (*t)(0,13) = 0.650; (*t)(1,13) = -0.030; (*t)(2,13) = 0.020;
3218 (*t)(0,14) = 0.700; (*t)(1,14) = -0.030; (*t)(2,14) = 0.020;
3219 (*t)(0,15) = 0.750; (*t)(1,15) = -0.030; (*t)(2,15) = 0.020;
3220 (*t)(0,16) = 0.800; (*t)(1,16) = -0.030; (*t)(2,16) = 0.020;
3221 (*t)(0,17) = 0.850; (*t)(1,17) = -0.030; (*t)(2,17) = 0.020;
3222 (*t)(0,18) = 0.900; (*t)(1,18) = -0.030; (*t)(2,18) = 0.020;
3223 (*t)(0,19) = 0.950; (*t)(1,19) = -0.028; (*t)(2,19) = 0.028;
3224 (*t)(0,20) = 1.000; (*t)(1,20) = -0.028; (*t)(2,20) = 0.028;
3225 (*t)(0,21) = 1.100; (*t)(1,21) = -0.028; (*t)(2,21) = 0.028;
3226 (*t)(0,22) = 1.200; (*t)(1,22) = -0.026; (*t)(2,22) = 0.028;
3227 (*t)(0,23) = 1.300; (*t)(1,23) = -0.024; (*t)(2,23) = 0.028;
3228 (*t)(0,24) = 1.400; (*t)(1,24) = -0.020; (*t)(2,24) = 0.028;
3229 (*t)(0,25) = 1.500; (*t)(1,25) = -0.018; (*t)(2,25) = 0.028;
3230 (*t)(0,26) = 1.600; (*t)(1,26) = -0.016; (*t)(2,26) = 0.028;
3231 (*t)(0,27) = 1.700; (*t)(1,27) = -0.014; (*t)(2,27) = 0.028;
3232 (*t)(0,28) = 1.800; (*t)(1,28) = -0.012; (*t)(2,28) = 0.026;
3233 (*t)(0,29) = 1.900; (*t)(1,29) = -0.010; (*t)(2,29) = 0.026;
3234 (*t)(0,30) = 2.000; (*t)(1,30) = -0.008; (*t)(2,30) = 0.026;
3235 (*t)(0,31) = 2.100; (*t)(1,31) = -0.008; (*t)(2,31) = 0.024;
3236 (*t)(0,32) = 2.200; (*t)(1,32) = -0.006; (*t)(2,32) = 0.024;
3237 (*t)(0,33) = 2.300; (*t)(1,33) = -0.004; (*t)(2,33) = 0.024;
3238 (*t)(0,34) = 2.400; (*t)(1,34) = -0.004; (*t)(2,34) = 0.024;
3239 (*t)(0,35) = 2.500; (*t)(1,35) = -0.002; (*t)(2,35) = 0.024;
3240 (*t)(0,36) = 2.600; (*t)(1,36) = -0.002; (*t)(2,36) = 0.024;
3241 (*t)(0,37) = 2.700; (*t)(1,37) = 0.000; (*t)(2,37) = 0.024;
3242 (*t)(0,38) = 2.800; (*t)(1,38) = 0.000; (*t)(2,38) = 0.026;
3243 (*t)(0,39) = 2.900; (*t)(1,39) = 0.000; (*t)(2,39) = 0.024;
3244 (*t)(0,40) = 3.000; (*t)(1,40) = 0.002; (*t)(2,40) = 0.026;
3245 (*t)(0,41) = 3.100; (*t)(1,41) = 0.002; (*t)(2,41) = 0.026;
3246 (*t)(0,42) = 3.200; (*t)(1,42) = 0.002; (*t)(2,42) = 0.026;
3247 (*t)(0,43) = 3.300; (*t)(1,43) = 0.002; (*t)(2,43) = 0.026;
3248 (*t)(0,44) = 3.400; (*t)(1,44) = 0.002; (*t)(2,44) = 0.026;
3249 (*t)(0,45) = 3.500; (*t)(1,45) = 0.002; (*t)(2,45) = 0.026;
3250 (*t)(0,46) = 3.600; (*t)(1,46) = 0.002; (*t)(2,46) = 0.026;
3251 (*t)(0,47) = 3.700; (*t)(1,47) = 0.002; (*t)(2,47) = 0.026;
3252 (*t)(0,48) = 3.800; (*t)(1,48) = 0.002; (*t)(2,48) = 0.026;
3253 (*t)(0,49) = 3.900; (*t)(1,49) = 0.004; (*t)(2,49) = 0.024;
3254 (*t)(0,50) = 4.000; (*t)(1,50) = 0.004; (*t)(2,50) = 0.026;
3255 (*t)(0,51) = 4.100; (*t)(1,51) = 0.004; (*t)(2,51) = 0.026;
3256 (*t)(0,52) = 4.200; (*t)(1,52) = 0.004; (*t)(2,52) = 0.024;
3257 (*t)(0,53) = 4.300; (*t)(1,53) = 0.006; (*t)(2,53) = 0.024;
3258 (*t)(0,54) = 4.400; (*t)(1,54) = 0.000; (*t)(2,54) = 0.000;
3259 (*t)(0,55) = 4.500; (*t)(1,55) = 0.000; (*t)(2,55) = 0.000;
3260 (*t)(0,56) = 4.600; (*t)(1,56) = 0.000; (*t)(2,56) = 0.000;
3261 (*t)(0,57) = 4.700; (*t)(1,57) = 0.000; (*t)(2,57) = 0.000;
3262 (*t)(0,58) = 4.800; (*t)(1,58) = 0.000; (*t)(2,58) = 0.000;
3263 (*t)(0,59) = 4.900; (*t)(1,59) = 0.000; (*t)(2,59) = 0.000;
3264 (*t)(0,60) = 5.900; (*t)(1,60) = 0.000; (*t)(2,60) = 0.000;
3270 t =
new TMatrixF(3,61);
3271 (*t)(0,0) = 0.000; (*t)(1,0) = 0.000; (*t)(2,0) = 0.000;
3272 (*t)(0,1) = 0.050; (*t)(1,1) = 0.000; (*t)(2,1) = 0.000;
3273 (*t)(0,2) = 0.100; (*t)(1,2) = 0.000; (*t)(2,2) = 0.000;
3274 (*t)(0,3) = 0.150; (*t)(1,3) = 0.000; (*t)(2,3) = 0.000;
3275 (*t)(0,4) = 0.200; (*t)(1,4) = -0.07; (*t)(2,4) = 0.07;
3276 (*t)(0,5) = 0.200; (*t)(1,5) = -0.07; (*t)(2,5) = 0.07;
3277 (*t)(0,6) = 0.200; (*t)(1,6) = -0.07; (*t)(2,6) = 0.07;
3278 (*t)(0,7) = 0.200; (*t)(1,7) = -0.07; (*t)(2,7) = 0.07;
3279 (*t)(0,8) = 0.200; (*t)(1,8) = -0.07; (*t)(2,8) = 0.07;
3280 (*t)(0,9) = 0.200; (*t)(1,9) = -0.07; (*t)(2,9) = 0.07;
3281 (*t)(0,10) = 0.200; (*t)(1,10) = -0.07; (*t)(2,10) = 0.07;
3282 (*t)(0,11) = 0.200; (*t)(1,11) = -0.07; (*t)(2,11) = 0.07;
3283 (*t)(0,12) = 0.200; (*t)(1,12) = -0.07; (*t)(2,12) = 0.07;
3284 (*t)(0,13) = 0.200; (*t)(1,13) = -0.07; (*t)(2,13) = 0.07;
3285 (*t)(0,14) = 0.200; (*t)(1,14) = -0.07; (*t)(2,14) = 0.07;
3286 (*t)(0,15) = 0.200; (*t)(1,15) = -0.07; (*t)(2,15) = 0.07;
3287 (*t)(0,16) = 0.200; (*t)(1,16) = -0.07; (*t)(2,16) = 0.07;
3288 (*t)(0,17) = 0.850; (*t)(1,17) = -0.070; (*t)(2,17) = 0.070;
3289 (*t)(0,18) = 0.900; (*t)(1,18) = -0.072; (*t)(2,18) = 0.072;
3290 (*t)(0,19) = 0.950; (*t)(1,19) = -0.072; (*t)(2,19) = 0.072;
3291 (*t)(0,20) = 1.000; (*t)(1,20) = -0.074; (*t)(2,20) = 0.074;
3292 (*t)(0,21) = 1.100; (*t)(1,21) = -0.032; (*t)(2,21) = 0.032;
3293 (*t)(0,22) = 1.200; (*t)(1,22) = -0.026; (*t)(2,22) = 0.026;
3294 (*t)(0,23) = 1.300; (*t)(1,23) = -0.026; (*t)(2,23) = 0.026;
3295 (*t)(0,24) = 1.400; (*t)(1,24) = -0.024; (*t)(2,24) = 0.024;
3296 (*t)(0,25) = 1.500; (*t)(1,25) = -0.024; (*t)(2,25) = 0.024;
3297 (*t)(0,26) = 1.600; (*t)(1,26) = -0.026; (*t)(2,26) = 0.026;
3298 (*t)(0,27) = 1.700; (*t)(1,27) = -0.026; (*t)(2,27) = 0.026;
3299 (*t)(0,28) = 1.800; (*t)(1,28) = -0.026; (*t)(2,28) = 0.026;
3300 (*t)(0,29) = 1.900; (*t)(1,29) = -0.026; (*t)(2,29) = 0.026;
3301 (*t)(0,30) = 2.000; (*t)(1,30) = -0.026; (*t)(2,30) = 0.026;
3302 (*t)(0,31) = 2.100; (*t)(1,31) = -0.026; (*t)(2,31) = 0.026;
3303 (*t)(0,32) = 2.200; (*t)(1,32) = -0.026; (*t)(2,32) = 0.024;
3304 (*t)(0,33) = 2.300; (*t)(1,33) = -0.028; (*t)(2,33) = 0.022;
3305 (*t)(0,34) = 2.400; (*t)(1,34) = -0.028; (*t)(2,34) = 0.020;
3306 (*t)(0,35) = 2.500; (*t)(1,35) = -0.028; (*t)(2,35) = 0.018;
3307 (*t)(0,36) = 2.600; (*t)(1,36) = -0.028; (*t)(2,36) = 0.016;
3308 (*t)(0,37) = 2.700; (*t)(1,37) = -0.028; (*t)(2,37) = 0.016;
3309 (*t)(0,38) = 2.800; (*t)(1,38) = -0.030; (*t)(2,38) = 0.014;
3310 (*t)(0,39) = 2.900; (*t)(1,39) = -0.030; (*t)(2,39) = 0.012;
3311 (*t)(0,40) = 3.000; (*t)(1,40) = -0.030; (*t)(2,40) = 0.012;
3312 (*t)(0,41) = 3.100; (*t)(1,41) = -0.030; (*t)(2,41) = 0.010;
3313 (*t)(0,42) = 3.200; (*t)(1,42) = -0.030; (*t)(2,42) = 0.010;
3314 (*t)(0,43) = 3.300; (*t)(1,43) = -0.030; (*t)(2,43) = 0.010;
3315 (*t)(0,44) = 3.400; (*t)(1,44) = -0.030; (*t)(2,44) = 0.008;
3316 (*t)(0,45) = 3.500; (*t)(1,45) = -0.030; (*t)(2,45) = 0.008;
3317 (*t)(0,46) = 3.600; (*t)(1,46) = -0.030; (*t)(2,46) = 0.008;
3318 (*t)(0,47) = 3.700; (*t)(1,47) = -0.030; (*t)(2,47) = 0.006;
3319 (*t)(0,48) = 3.800; (*t)(1,48) = -0.030; (*t)(2,48) = 0.006;
3320 (*t)(0,49) = 3.900; (*t)(1,49) = -0.030; (*t)(2,49) = 0.006;
3321 (*t)(0,50) = 4.000; (*t)(1,50) = -0.028; (*t)(2,50) = 0.004;
3322 (*t)(0,51) = 4.100; (*t)(1,51) = -0.030; (*t)(2,51) = 0.004;
3323 (*t)(0,52) = 4.200; (*t)(1,52) = -0.030; (*t)(2,52) = 0.004;
3324 (*t)(0,53) = 4.300; (*t)(1,53) = -0.028; (*t)(2,53) = 0.002;
3325 (*t)(0,54) = 4.400; (*t)(1,54) = -0.030; (*t)(2,54) = 0.002;
3326 (*t)(0,55) = 4.500; (*t)(1,55) = -0.028; (*t)(2,55) = 0.002;
3327 (*t)(0,56) = 4.600; (*t)(1,56) = -0.028; (*t)(2,56) = 0.002;
3328 (*t)(0,57) = 4.700; (*t)(1,57) = -0.028; (*t)(2,57) = 0.000;
3329 (*t)(0,58) = 4.800; (*t)(1,58) = -0.028; (*t)(2,58) = 0.002;
3330 (*t)(0,59) = 4.900; (*t)(1,59) = 0.000; (*t)(2,59) = 0.000;
3331 (*t)(0,60) = 5.900; (*t)(1,60) = 0.000; (*t)(2,60) = 0.000;
3337 t =
new TMatrixF(3,61);
3338 (*t)(0,0) = 0.000; (*t)(1,0) = 0.000; (*t)(2,0) = 0.000;
3339 (*t)(0,1) = 0.050; (*t)(1,1) = 0.000; (*t)(2,1) = 0.000;
3340 (*t)(0,2) = 0.100; (*t)(1,2) = 0.000; (*t)(2,2) = 0.000;
3341 (*t)(0,3) = 0.150; (*t)(1,3) = 0.000; (*t)(2,3) = 0.000;
3342 (*t)(0,4) = 0.200; (*t)(1,4) = -0.05; (*t)(2,4) = 0.05;
3343 (*t)(0,5) = 0.200; (*t)(1,5) = -0.05; (*t)(2,5) = 0.05;
3344 (*t)(0,6) = 0.200; (*t)(1,6) = -0.05; (*t)(2,6) = 0.05;
3345 (*t)(0,7) = 0.200; (*t)(1,7) = -0.05; (*t)(2,7) = 0.05;
3346 (*t)(0,8) = 0.200; (*t)(1,8) = -0.05; (*t)(2,8) = 0.05;
3347 (*t)(0,9) = 0.200; (*t)(1,9) = -0.05; (*t)(2,9) = 0.05;
3348 (*t)(0,10) = 0.200; (*t)(1,10) = -0.05; (*t)(2,10) = 0.05;
3349 (*t)(0,11) = 0.550; (*t)(1,11) = -0.026; (*t)(2,11) = 0.026;
3350 (*t)(0,12) = 0.600; (*t)(1,12) = -0.026; (*t)(2,12) = 0.026;
3351 (*t)(0,13) = 0.650; (*t)(1,13) = -0.026; (*t)(2,13) = 0.026;
3352 (*t)(0,14) = 0.700; (*t)(1,14) = -0.026; (*t)(2,14) = 0.026;
3353 (*t)(0,15) = 0.750; (*t)(1,15) = -0.026; (*t)(2,15) = 0.026;
3354 (*t)(0,16) = 0.800; (*t)(1,16) = -0.026; (*t)(2,16) = 0.026;
3355 (*t)(0,17) = 0.850; (*t)(1,17) = -0.024; (*t)(2,17) = 0.024;
3356 (*t)(0,18) = 0.900; (*t)(1,18) = -0.024; (*t)(2,18) = 0.024;
3357 (*t)(0,19) = 0.950; (*t)(1,19) = -0.024; (*t)(2,19) = 0.024;
3358 (*t)(0,20) = 1.000; (*t)(1,20) = -0.024; (*t)(2,20) = 0.024;
3359 (*t)(0,21) = 1.100; (*t)(1,21) = -0.024; (*t)(2,21) = 0.024;
3360 (*t)(0,22) = 1.200; (*t)(1,22) = -0.024; (*t)(2,22) = 0.022;
3361 (*t)(0,23) = 1.300; (*t)(1,23) = -0.024; (*t)(2,23) = 0.020;
3362 (*t)(0,24) = 1.400; (*t)(1,24) = -0.026; (*t)(2,24) = 0.016;
3363 (*t)(0,25) = 1.500; (*t)(1,25) = -0.028; (*t)(2,25) = 0.014;
3364 (*t)(0,26) = 1.600; (*t)(1,26) = -0.028; (*t)(2,26) = 0.012;
3365 (*t)(0,27) = 1.700; (*t)(1,27) = -0.028; (*t)(2,27) = 0.010;
3366 (*t)(0,28) = 1.800; (*t)(1,28) = -0.028; (*t)(2,28) = 0.010;
3367 (*t)(0,29) = 1.900; (*t)(1,29) = -0.028; (*t)(2,29) = 0.008;
3368 (*t)(0,30) = 2.000; (*t)(1,30) = -0.028; (*t)(2,30) = 0.006;
3369 (*t)(0,31) = 2.100; (*t)(1,31) = -0.026; (*t)(2,31) = 0.006;
3370 (*t)(0,32) = 2.200; (*t)(1,32) = -0.024; (*t)(2,32) = 0.004;
3371 (*t)(0,33) = 2.300; (*t)(1,33) = -0.020; (*t)(2,33) = 0.002;
3372 (*t)(0,34) = 2.400; (*t)(1,34) = -0.020; (*t)(2,34) = 0.002;
3373 (*t)(0,35) = 2.500; (*t)(1,35) = -0.018; (*t)(2,35) = 0.000;
3374 (*t)(0,36) = 2.600; (*t)(1,36) = -0.016; (*t)(2,36) = 0.000;
3375 (*t)(0,37) = 2.700; (*t)(1,37) = -0.014; (*t)(2,37) = -0.002;
3376 (*t)(0,38) = 2.800; (*t)(1,38) = -0.014; (*t)(2,38) = -0.004;
3377 (*t)(0,39) = 2.900; (*t)(1,39) = -0.012; (*t)(2,39) = -0.004;
3378 (*t)(0,40) = 3.000; (*t)(1,40) = -0.010; (*t)(2,40) = -0.006;
3379 (*t)(0,41) = 3.100; (*t)(1,41) = 0.000; (*t)(2,41) = 0.000;
3380 (*t)(0,42) = 3.200; (*t)(1,42) = 0.000; (*t)(2,42) = 0.000;
3381 (*t)(0,43) = 3.300; (*t)(1,43) = 0.000; (*t)(2,43) = 0.000;
3382 (*t)(0,44) = 3.400; (*t)(1,44) = 0.000; (*t)(2,44) = 0.000;
3383 (*t)(0,45) = 3.500; (*t)(1,45) = 0.000; (*t)(2,45) = 0.000;
3384 (*t)(0,46) = 3.600; (*t)(1,46) = 0.000; (*t)(2,46) = 0.000;
3385 (*t)(0,47) = 3.700; (*t)(1,47) = 0.000; (*t)(2,47) = 0.000;
3386 (*t)(0,48) = 3.800; (*t)(1,48) = 0.000; (*t)(2,48) = 0.000;
3387 (*t)(0,49) = 3.900; (*t)(1,49) = 0.000; (*t)(2,49) = 0.000;
3388 (*t)(0,50) = 4.000; (*t)(1,50) = 0.000; (*t)(2,50) = 0.000;
3389 (*t)(0,51) = 4.100; (*t)(1,51) = 0.000; (*t)(2,51) = 0.000;
3390 (*t)(0,52) = 4.200; (*t)(1,52) = 0.000; (*t)(2,52) = 0.000;
3391 (*t)(0,53) = 4.300; (*t)(1,53) = 0.000; (*t)(2,53) = 0.000;
3392 (*t)(0,54) = 4.400; (*t)(1,54) = 0.000; (*t)(2,54) = 0.000;
3393 (*t)(0,55) = 4.500; (*t)(1,55) = 0.000; (*t)(2,55) = 0.000;
3394 (*t)(0,56) = 4.600; (*t)(1,56) = 0.000; (*t)(2,56) = 0.000;
3395 (*t)(0,57) = 4.700; (*t)(1,57) = 0.000; (*t)(2,57) = 0.000;
3396 (*t)(0,58) = 4.800; (*t)(1,58) = 0.000; (*t)(2,58) = 0.000;
3397 (*t)(0,59) = 4.900; (*t)(1,59) = 0.000; (*t)(2,59) = 0.000;
3398 (*t)(0,60) = 5.900; (*t)(1,60) = 0.000; (*t)(2,60) = 0.000;
3414 if(! kTPC)
return kFALSE;
3426 case AliPID::kProton:
3429 case AliPID::kElectron:
3435 case AliPID::kDeuteron:
3438 case AliPID::kTriton:
3469 if(! kTPC)
return kFALSE;
3492 case AliPID::kProton:
3495 case AliPID::kElectron:
3501 case AliPID::kDeuteron:
3504 case AliPID::kTriton:
3527 Bool_t goodtrack = (track->GetStatus() & AliESDtrack::kTOFout) &&
3528 (track->GetStatus() & AliESDtrack::kTIME) &&
3529 (track->GetTOFsignal() > 12000) &&
3530 (track->GetTOFsignal() < 100000);
3554 case AliPID::kProton:
3557 case AliPID::kElectron:
3563 case AliPID::kDeuteron:
3566 case AliPID::kTriton:
3590 Bool_t goodtrack = (track->GetStatus() & AliESDtrack::kTOFout) &&
3591 (track->GetStatus() & AliESDtrack::kTIME) &&
3592 (track->GetTOFsignal() > 12000) &&
3593 (track->GetTOFsignal() < 100000) &&
3594 (track->GetIntegratedLength() > 365);
3620 case AliPID::kProton:
3623 case AliPID::kElectron:
3629 case AliPID::kDeuteron:
3632 case AliPID::kTriton:
3658 Bool_t select=kFALSE;
3662 if (!track->GetInnerParam())
3665 const AliExternalTrackParam* tpcTrack = track->GetInnerParam();
3667 Double_t ptotTPC = tpcTrack->GetP();
3668 Double_t sigTPC = track->GetTPCsignal();
3669 Double_t dEdxBBA = 0.;
3670 Double_t dSigma = 0.;
3674 case AliPID::kDeuteron:
3676 dEdxBBA = AliExternalTrackParam::BetheBlochAleph(ptotTPC/1.8756,
3682 dSigma = (sigTPC - dEdxBBA)/dEdxBBA;
3684 if( ptotTPC<=1.1 && (dSigma < (0.5 - (0.1818*ptotTPC)) ) && (dSigma > ( (0.218*ptotTPC - 0.4) ) ) )
3688 case AliPID::kTriton:
3696 dEdxBBA = 4.0 * AliExternalTrackParam::BetheBlochAleph( (2.*ptotTPC)/2.8084,
3702 dSigma = (sigTPC - dEdxBBA)/dEdxBBA;
3703 if(ptotTPC<=5.0 && (dSigma >= (-0.03968*ptotTPC - 0.1)) && (dSigma <= (0.31 - 0.0217*ptotTPC)))
3707 case AliPID::kAlpha:
3726 if(!track)
return kFALSE;
3729 if ((track->GetStatus()&AliVTrack::kTOFout)==0)
return kFALSE;
3730 if ((track->GetStatus()&AliVTrack::kTIME)==0)
return kFALSE;
3733 if(track->GetTPCsignal() < 10)
return kFALSE;
3738 Float_t nsigma2 = nsigmaTPC*nsigmaTPC + nsigmaTOF*nsigmaTOF;
3750 if(!track)
return kFALSE;
3753 if ((track->GetStatus()&AliVTrack::kTOFout)==0)
return kFALSE;
3754 if ((track->GetStatus()&AliVTrack::kTIME)==0)
return kFALSE;
3757 if(track->GetTPCsignal() < 10)
return kFALSE;
3762 Float_t nsigma2 = nsigmaTPC*nsigmaTPC + nsigmaTOF*nsigmaTOF;
3774 if(!track)
return kFALSE;
3777 Double_t pInterval=0;
3778 for(
int i=0;i<60;i++){
3780 if(track->P()>pInterval && track->P()<pInterval+0.1){p_int = i;}
3793 if ( (track->IsOn(AliAODTrack::kITSin))){
3794 if(p_int<2)
return kFALSE;
3796 if(!
fPurityFunction[index]){ cout<<
"fPurityFunction[index] does not exist"<<endl;
return kFALSE;}
3798 if((track->IsOn(AliAODTrack::kTOFpid))){
3800 if(TMath::Sqrt(TMath::Power(nsigmaTPC,2)+TMath::Power(nsigmaTOF,2))<3){
3949 else if(centrCur < 20){
4059 else if(centrCur < 30){
4169 else if(centrCur < 40){
4279 else if(centrCur < 50){
4389 else if(centrCur < 60){
4499 else if(centrCur < 70){
4609 else if(centrCur < 80){
4831 fC[i][0] =
fC[17][0];
4832 fC[i][1] =
fC[17][1];
4833 fC[i][2] =
fC[17][2];
4834 fC[i][3] =
fC[17][3];
4835 fC[i][4] =
fC[17][4];
4843 Bool_t status = kFALSE;
4845 const Float_t c = 2.99792457999999984e-02;
4847 Float_t
mass[5] = {5.10998909999999971e-04,1.05658000000000002e-01,1.39570000000000000e-01,4.93676999999999977e-01,9.38271999999999995e-01};
4850 Double_t exptimes[9];
4851 track->GetIntegratedTimes(exptimes);
4853 Float_t dedx = track->GetTPCsignal();
4855 Float_t p = track->P();
4856 Float_t time = track->GetTOFsignal()-
fESDpid.GetTOFResponse().GetStartTime(p);
4857 Float_t tl = exptimes[0]*c;
4859 Float_t betagammares =
fESDpid.GetTOFResponse().GetExpectedSigma(p, exptimes[4], mass[4]);
4861 Float_t betagamma1 = tl/(time-5 *betagammares) * 33.3564095198152043;
4865 if(betagamma1 < 0.1) betagamma1 = 0.1;
4867 if(betagamma1 < 0.99999) betagamma1 /= TMath::Sqrt(1-betagamma1*betagamma1);
4868 else betagamma1 = 100;
4870 Float_t betagamma2 = tl/(time+5 *betagammares) * 33.3564095198152043;
4873 if(betagamma2 < 0.1) betagamma2 = 0.1;
4875 if(betagamma2 < 0.99999) betagamma2 /= TMath::Sqrt(1-betagamma2*betagamma2);
4876 else betagamma2 = 100;
4879 Float_t momtpc=track->GetTPCmomentum();
4881 for(Int_t i=0;i < 5;i++){
4882 Float_t resolutionTOF =
fESDpid.GetTOFResponse().GetExpectedSigma(p, exptimes[i], mass[i]);
4883 if(TMath::Abs(exptimes[i] - time) < 5 * resolutionTOF){
4884 Float_t dedxExp = 0;
4885 if(i==0) dedxExp =
fESDpid.GetTPCResponse().GetExpectedSignal(momtpc,AliPID::kElectron);
4886 else if(i==1) dedxExp =
fESDpid.GetTPCResponse().GetExpectedSignal(momtpc,AliPID::kMuon);
4887 else if(i==2) dedxExp =
fESDpid.GetTPCResponse().GetExpectedSignal(momtpc,AliPID::kPion);
4888 else if(i==3) dedxExp =
fESDpid.GetTPCResponse().GetExpectedSignal(momtpc,AliPID::kKaon);
4889 else if(i==4) dedxExp =
fESDpid.GetTPCResponse().GetExpectedSignal(momtpc,AliPID::kProton);
4891 Float_t resolutionTPC = 2;
4892 if(i==0) resolutionTPC =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),AliPID::kElectron);
4893 else if(i==1) resolutionTPC =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),AliPID::kMuon);
4894 else if(i==2) resolutionTPC =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),AliPID::kPion);
4895 else if(i==3) resolutionTPC =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),AliPID::kKaon);
4896 else if(i==4) resolutionTPC =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),AliPID::kProton);
4898 if(TMath::Abs(dedx - dedxExp) < 3 * resolutionTPC){
4904 Float_t bb1 =
fESDpid.GetTPCResponse().Bethe(betagamma1);
4905 Float_t bb2 =
fESDpid.GetTPCResponse().Bethe(betagamma2);
4906 Float_t bbM =
fESDpid.GetTPCResponse().Bethe((betagamma1+betagamma2)*0.5);
4911 Float_t resolutionTOFpr =
fESDpid.GetTOFResponse().GetExpectedSigma(p, exptimes[4], mass[4]);
4912 Float_t resolutionTPCpr =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),AliPID::kProton);
4913 if(TMath::Abs(dedx-bb1) < resolutionTPCpr*3 && exptimes[4] < time-7*resolutionTOFpr){
4916 else if(TMath::Abs(dedx-bb2) < resolutionTPCpr*3 && exptimes[4] < time-7*resolutionTOFpr){
4919 else if(TMath::Abs(dedx-bbM) < resolutionTPCpr*3 && exptimes[4] < time-7*resolutionTOFpr){
4934 Bool_t pass = kTRUE;
4937 if(!track) pass = kFALSE;
4940 if(track->GetTPCsignal() < 10) pass = kFALSE;
4955 Double_t Pt = track->Pt();
4957 Float_t nsigma2 = 999.;
4959 nsigma2 = nsigmaTPC*nsigmaTPC;
4962 if (((track->GetStatus()&AliVTrack::kTOFout)==0)&&((track->GetStatus()&AliVTrack::kTIME)==0)){
4966 nsigma2 = nsigmaTPC*nsigmaTPC + nsigmaTOF*nsigmaTOF;
4984 return "TPCbayesian";
4992 return "TOFbayesianPID";
4994 return "TOFbetaSimple";
4998 return "TPCTOFNsigma";
5000 return "TPCTOFNsigmaPurity";
5017 return "TPCstandalone";
5019 return "SPDtracklets";
5027 return "DeltaVZERO";
5029 return "KappaVZERO";
5046 Int_t det = track->GetDetector();
5048 Float_t clsX = track->GetClusterX();
5049 Float_t clsY = track->GetClusterY();
5050 Float_t clsZ = track->GetClusterZ();
5051 Float_t ncell = track->GetClusterCells();
5052 Float_t adc = track->GetClusterADC();
5063 if (
fCutEta) {
if ( fTrackEta < fEtaMin || fTrackEta >=
fEtaMax ) pass = kFALSE;}
5064 if (
fCutPhi) {
if ( fTrackPhi < fPhiMin || fTrackPhi >=
fPhiMax ) pass = kFALSE;}
5076 if (
id<0)
return kFALSE;
5081 fTrackPhi = TMath::PiOver4()*(0.5+
id%8);
5122 Double_t EventCentrality = -999;
5123 if(
fEvent->GetRunNumber() < 209122){
5126 EventCentrality =
fEvent->GetCentrality()->GetCentralityPercentile(
"V0M");
5143 if(CorrectionFactor) {
5147 Double_t CorrectionFactor = -1.;
5148 AliMultSelection *MultSelection = 0x0;
5149 MultSelection = (AliMultSelection * )
fEvent->FindListObject(
"MultSelection");
5150 if( !MultSelection) {
5152 AliFatal(
"AliMultSelection not found, did you Run AliMultSelectionTask? \n");
5154 EventCentrality = MultSelection->GetMultiplicityPercentile(
"V0M");
5155 if(EventCentrality < 0 && EventCentrality > 100){
5156 AliWarning(
"No Correction Available for this Centrality \n");
5174 if(CorrectionFactor>0) {
5185 AliESDUtils::GetCorrV0((AliESDEvent*)
fEvent,dummy,multVZERO);
5190 if (
fCutEta) {
if ( fTrackEta < fEtaMin || fTrackEta >=
fEtaMax ) pass = kFALSE;}
5191 if (
fCutPhi) {
if ( fTrackPhi < fPhiMin || fTrackPhi >=
fPhiMax ) pass = kFALSE;}
5205 AliESDMuonTrack *esdTrack =
dynamic_cast<AliESDMuonTrack*
>(vparticle);
5206 AliAODTrack *aodTrack =
dynamic_cast<AliAODTrack*
>(vparticle);
5207 if ((!esdTrack) && (!aodTrack))
return kFALSE;
5217 Float_t rpxpy, theta, eta;
5218 rpxpy = TMath::Sqrt(xPos*xPos + yPos*yPos);
5219 theta = TMath::ATan2(rpxpy,zPos);
5220 eta = -TMath::Log(TMath::Tan(0.5*theta));
5228 Float_t pybypx, phi = 0., phi1;
5231 if(yPos>0) phi = 90.;
5232 if(yPos<0) phi = 270.;
5237 if(pybypx < 0) pybypx = - pybypx;
5238 phi1 = TMath::ATan(pybypx)*180./3.14159;
5240 if(xPos > 0 && yPos > 0) phi = phi1;
5241 if(xPos < 0 && yPos > 0) phi = 180 - phi1;
5242 if(xPos < 0 && yPos < 0) phi = 180 + phi1;
5243 if(xPos > 0 && yPos < 0) phi = 360 - phi1;
5246 phi = phi*3.14159/180.;
5261 if (!
fQA || !list)
return 0;
5262 if (list->IsEmpty())
return 0;
5266 while ( (obj = dynamic_cast<AliFlowTrackCuts*>(next())) )
5268 if (obj==
this)
continue;
5269 tmplist.Add(obj->
GetQA());
5271 return fQA->Merge(&tmplist);
5281 printf(
"The purity functions file does not exist");
5287 TString species[3] = {
"pion",
"kaon",
"proton"};
5288 TList *Species_functions[3];
5290 for(ispecie = 0; ispecie < 3; ispecie++) {
5292 if(!Species_functions[ispecie]) {
5293 cout<<
"Purity functions for species: "<<species[ispecie]<<
" not found!!!"<<endl;
5298 for(
int i=0;i<180;i++){
5301 fPurityFunction[i] = (TF2*)Species_functions[ispecie]->FindObject(Form(
"PurityFunction_%d%d",iPbin,iPbin+1));
5302 if(!
fPurityFunction[i]){printf(
"Purity function does not exist");
return;}
5308 Int_t counterForSharedCluster = 0;
5309 for(
int i =0;i<6;i++){
5310 Bool_t sharedITSCluster = track->HasSharedPointOnITSLayer(i);
5313 if(sharedITSCluster == 1) counterForSharedCluster++;
5317 return counterForSharedCluster;
5324 if(track->GetNcls(0) == 0)
return 999.;
5325 Double_t chi2perClusterITS = track->GetITSchi2()/track->GetNcls(0);
5331 return chi2perClusterITS;
Double_t fTrackPt
mass of the particle
Bool_t PassesESDcuts(AliESDtrack *track)
Double_t fIgnoreTPCzRangeMax
static AliFlowTrackCuts * GetStandardVZEROOnlyTrackCuts2011()
void SetDCAToVertex2D(Bool_t a)
void SetStandardMuonTrackCuts()
AliPID::EParticleType fParticleID
void SetMaxChi2PerClusterTPC(Float_t a)
void SetEta(Double_t eta)
void SetMaxDCAToVertexZ(Float_t a)
virtual void Clear(Option_t *o="")
virtual Bool_t IsSelectedMCtruth(TObject *obj, Int_t id=-666)
TObject * GetInputObject(Int_t i)
TFile * fPurityFunctionsFile
void SetApplyRecentering(Bool_t r)
virtual void AddDaughter(Int_t)
Bool_t fForceTPCstandalone
void SetIsMuonMC(Bool_t isMC)
static AliFlowTrackCuts * GetStandardITSTPCTrackCuts2009(Bool_t selPrimaries=kTRUE)
Float_t GetTOFMismProb() const
static AliFlowTrackCuts * GetStandardGlobalTrackCuts2010()
void Set(const AliVParticle *p)
Double_t MaxChi2perITSClusterCuts(AliESDtrack *track)
Bool_t FillFlowTrackVParticle(AliFlowTrack *t) const
Bool_t GetRequireITSRefit() const
AliMuonTrackCuts * fMuonTrackCuts
Bool_t PassesPMDcuts(const AliESDPmdTrack *track)
void ComputeProb(const AliESDtrack *t, Float_t)
Float_t fMinChi2PerClusterTPC
static const Int_t fgkNumberOfVZEROtracks
static AliFlowTrackCuts * GetAODTrackCutsForFilterBit(UInt_t bit=1, TString suffix="")
Bool_t PassesNucleiSelection(const AliESDtrack *track)
TH1 * fVZEROgainEqualization
void SetPhiMin(Double_t min)
void SetMass(Double_t mass)
Int_t Count(AliVEvent *event=NULL)
virtual Bool_t IsSelected(TObject *obj, Int_t id=-666)
void SetParamType(trackParameterType paramType)
void SetMaxDCAToVertexXY(Float_t a)
static AliFlowTrackCuts * GetStandardVZEROOnlyTrackCuts2010()
Bool_t PassesCuts(const AliFlowTrackSimple *track) const
void SetDetResponse(AliESDEvent *esd, Float_t centrality=-1.0, EStartTimeType_t flagStart=AliESDpid::kTOF_T0, Bool_t=kFALSE)
AliFlowTrackSimpleCuts & operator=(const AliFlowTrackSimpleCuts &)
AliESDpid fESDpid
placeholder for TPC only track to avoid new/delete on every track
Int_t fTrackLabel
track weight
Double_t GetPmdEta(Float_t xPos, Float_t yPos, Float_t zPos)
void HandleESDtrack(AliESDtrack *track)
TDirectory * fPurityFunctionsList
purity functions file
Double_t fTrackPhi
track pt
void Clear(Option_t *option="")
AliESDv0 * fV0
placeholder for the current kink
AliESDtrackCuts * fAliESDtrackCuts
Bool_t fCutMinimalTPCdedx
void SetAODfilterBit(UInt_t a)
Float_t GetBeta(const AliVTrack *t, Bool_t QAmode=kFALSE)
Double_t fSPDtrackletDeltaPhiMax
Bool_t PassesAODcuts(const AliAODTrack *track, Bool_t passFid=kTRUE)
Float_t fMaxChi2PerClusterTPC
void SetRequireTPCRefit(Bool_t a)
Bool_t fCutChi2PerClusterTPC
Bool_t PassesTOFbayesianCut(const AliAODTrack *track)
void SetMinNClustersITS(Int_t a)
AliFlowBayesianPID * fBayesianResponse
Bool_t PassesTOFpidCut(const AliESDtrack *track) const
static const char * GetParamTypeName(trackParameterType type)
Bool_t fRequireStrictTOFTPCagreement
Bool_t TPCTOFagree(const AliVTrack *track)
void HandleVParticle(AliVParticle *track)
Long64_t Merge(TCollection *list)
static AliFlowTrackCuts * GetStandardMuonTrackCuts(Bool_t isMC=kFALSE, Int_t passN=2)
Bool_t PassesTPCpidCut(const AliESDtrack *track) const
Int_t GetNumberOfInputObjects() const
void SetPtRange(Float_t r1, Float_t r2)
Bool_t fRequireTransportBitForPrimaries
void SetVZEROgainEqualizationPerRing(Bool_t s)
Bool_t PassesTPCbayesianCut(const AliESDtrack *track)
Bool_t fVZEROgainEqualizationPerRing
Bool_t fIgnoreSignInMCPID
Bool_t PassesCuts(AliVParticle *track)
void SetMinimalTPCdedx(Double_t d=10.)
static AliFlowTrackCuts * GetStandardTPCStandaloneTrackCuts()
Int_t fCentralityPercentileMax
Int_t fCentralityPercentileMin
Float_t Getdedx(const AliESDtrack *t) const
Bool_t FillFlowTrack(AliFlowTrack *track) const
Double_t fMinKinkInvMassKmu
AliVEvent * fEvent
mc particle
void SetRequireITSRefit(Bool_t a)
Bool_t GetCurrentMask(Int_t idet) const
void SetEtaGap(Double_t min, Double_t max)
Bool_t PassesMuonCuts(AliVParticle *track)
static AliFlowTrackCuts * GetStandardTPCStandaloneTrackCuts2010()
Bool_t fUseVZERORing[8]
calibration info per ring
Float_t fNsigmaCut2
Pid reponse to manage Nsigma cuts.
Float_t fVZEROCpol[4]
calibration info per ring
trackParameterMix fParamMix
static const Int_t fgkPIDptBin
Bool_t PassesESDpidCut(const AliESDtrack *track)
TMCProcess fMCprocessType
PIDsource fPIDsource
Baysian response with all the TOF tuning (using fESDpid)
void SetDetAND(Int_t idet)
Bool_t IsPhysicalPrimary() const
void ResetDetOR(Int_t idet)
Bool_t fLinearizeVZEROresponse
Double_t fTrackWeight
track eta
Bool_t fCutMCfirstMotherPID
Bool_t GetRequireTPCRefit() const
Bool_t PassesTPCTOFNsigmaCut(const AliAODTrack *track)
AliPIDResponse * fPIDResponse
void SetSource(trackSource s)
Bool_t PassesTOFbetaSimpleCut(const AliESDtrack *track)
AliMCEvent * fMCevent
track label, or its absolute value if FakesAreOK
void SetMuonPassNumber(Int_t passN)
Bool_t PassesAODpidCut(const AliAODTrack *track)
void SetPhi(Double_t phi)
Bool_t PassesTPCdedxCut(const AliESDtrack *track)
AliFlowTrack * FillFlowTrackKink(TObjArray *trackCollection, Int_t trackIndex) const
trackParameterType fParamType
Bool_t fCutITSclusterShared