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());
2412 Bool_t physprim=mcEvent->IsPhysicalPrimary(label);
2413 AliMCParticle* track =
static_cast<AliMCParticle*
>(mcEvent->GetTrack(label));
2414 if (!track)
return kFALSE;
2415 TParticle* particle = track->Particle();
2416 Bool_t transported = particle->TestBit(kTransportBit);
2419 return (physprim && (transported || !requiretransported));
2428 const Int_t kNbinsP=200;
2429 Double_t binsP[kNbinsP+1];
2431 for(
int i=1; i<kNbinsP+1; i++)
2436 binsP[i]=binsP[i-1]+0.05;
2439 const Int_t nBinsDCA=1000;
2440 Double_t binsDCA[nBinsDCA+1];
2441 for(
int i=0; i<nBinsDCA+1; i++) {binsDCA[i]=0.01*i-5.;}
2444 Bool_t adddirstatus = TH1::AddDirectoryStatus();
2445 TH1::AddDirectory(kFALSE);
2446 fQA=
new TList();
fQA->SetOwner();
2447 fQA->SetName(Form(
"%s QA",GetName()));
2448 TList* before =
new TList(); before->SetOwner();
2449 before->SetName(
"before");
2450 TList* after =
new TList(); after->SetOwner();
2451 after->SetName(
"after");
2454 before->Add(
new TH2F(
"TOFbeta",
";p [GeV/c];#beta",kNbinsP,binsP,1000,0.4,1.1));
2455 after->Add(
new TH2F(
"TOFbeta",
";p [GeV/c];#beta",kNbinsP,binsP,1000,0.4,1.1));
2456 before->Add(
new TH2F(
"TPCdedx",
";p [GeV/c];dEdx",kNbinsP,binsP,500,0,500));
2457 after->Add(
new TH2F(
"TPCdedx",
";p [GeV/c];dEdx",kNbinsP,binsP,500,0,500));
2458 before->Add(
new TH2F(
"MC pid",
";p[GeV/c];species",kNbinsP,binsP,10,-5, 5));
2459 after->Add(
new TH2F(
"MC pid",
";p[GeV/c];species",kNbinsP,binsP,10,-5, 5));
2461 TH2F* hb =
new TH2F(
"MC primary",
";p[GeV/c];primary",kNbinsP,binsP,2,-1,1);
2462 TH2F* ha =
new TH2F(
"MC primary",
";p[GeV/c];primary",kNbinsP,binsP,2,-1,1);
2464 axis = hb->GetYaxis();
2465 axis->SetBinLabel(1,
"secondary");
2466 axis->SetBinLabel(2,
"primary");
2467 axis = ha->GetYaxis();
2468 axis->SetBinLabel(1,
"secondary");
2469 axis->SetBinLabel(2,
"primary");
2473 hb =
new TH2F(
"MC production process",
";p[GeV/c];",kNbinsP,binsP,kMaxMCProcess,
2474 -0.5, kMaxMCProcess-0.5);
2475 ha =
new TH2F(
"MC production process",
";p[GeV/c];",kNbinsP,binsP,kMaxMCProcess,
2476 -0.5, kMaxMCProcess-0.5);
2477 axis = hb->GetYaxis();
2478 for (Int_t i=0; i<kMaxMCProcess; i++)
2480 axis->SetBinLabel(i+1,TMCProcessName[i]);
2482 axis = ha->GetYaxis();
2483 for (Int_t i=0; i<kMaxMCProcess; i++)
2485 axis->SetBinLabel(i+1,TMCProcessName[i]);
2490 before->Add(
new TH2F(
"DCAxy",
";p_{t}[GeV/c];DCAxy[cm]", 100, 0., 10., nBinsDCA, binsDCA));
2491 after->Add(
new TH2F(
"DCAxy",
";p_{t}[GeV/c];DCAxy[cm]", 100, 0., 10., nBinsDCA, binsDCA));
2492 before->Add(
new TH2F(
"DCAz",
";p_{t}[GeV/c];DCAz[cm]", 100, 0., 10., nBinsDCA, binsDCA));
2493 after->Add(
new TH2F(
"DCAz",
";p_{t}[GeV/c];DCAz[cm]", 100, 0., 10., nBinsDCA, binsDCA));
2495 hb =
new TH2F(
"MC first mother",
";p[GeV/c];",kNbinsP,binsP,44,1.,45.);
2496 ha =
new TH2F(
"MC first mother",
";p[GeV/c];",kNbinsP,binsP,44,1.,45.);
2497 hb->GetYaxis()->SetBinLabel(1,
"#gamma");
2498 ha->GetYaxis()->SetBinLabel(1,
"#gamma");
2499 hb->GetYaxis()->SetBinLabel(2,
"e^{+}");
2500 ha->GetYaxis()->SetBinLabel(2,
"e^{+}");
2501 hb->GetYaxis()->SetBinLabel(3,
"e^{-}");
2502 ha->GetYaxis()->SetBinLabel(3,
"e^{-}");
2503 hb->GetYaxis()->SetBinLabel(4,
"#nu");
2504 ha->GetYaxis()->SetBinLabel(4,
"#nu");
2505 hb->GetYaxis()->SetBinLabel(5,
"#mu^{+}");
2506 ha->GetYaxis()->SetBinLabel(5,
"#mu^{+}");
2507 hb->GetYaxis()->SetBinLabel(6,
"#mu^{-}");
2508 ha->GetYaxis()->SetBinLabel(6,
"#mu^{-}");
2509 hb->GetYaxis()->SetBinLabel(7,
"#pi^{0}");
2510 ha->GetYaxis()->SetBinLabel(7,
"#pi^{0}");
2511 hb->GetYaxis()->SetBinLabel(8,
"#pi^{+}");
2512 ha->GetYaxis()->SetBinLabel(8,
"#pi^{+}");
2513 hb->GetYaxis()->SetBinLabel(9,
"#pi^{-}");
2514 ha->GetYaxis()->SetBinLabel(9,
"#pi^{-}");
2515 hb->GetYaxis()->SetBinLabel(10,
"K^{0}_{L}");
2516 ha->GetYaxis()->SetBinLabel(10,
"K^{0}_{L}");
2517 hb->GetYaxis()->SetBinLabel(11,
"K^{+}");
2518 ha->GetYaxis()->SetBinLabel(11,
"K^{+}");
2519 hb->GetYaxis()->SetBinLabel(12,
"K^{-}");
2520 ha->GetYaxis()->SetBinLabel(12,
"K^{-}");
2521 hb->GetYaxis()->SetBinLabel( 13,
"n");
2522 ha->GetYaxis()->SetBinLabel( 13,
"n");
2523 hb->GetYaxis()->SetBinLabel( 14,
"p");
2524 ha->GetYaxis()->SetBinLabel( 14,
"p");
2525 hb->GetYaxis()->SetBinLabel(15,
"#bar{p}");
2526 ha->GetYaxis()->SetBinLabel(15,
"#bar{p}");
2527 hb->GetYaxis()->SetBinLabel(16,
"K^{0}_{S}");
2528 ha->GetYaxis()->SetBinLabel(16,
"K^{0}_{S}");
2529 hb->GetYaxis()->SetBinLabel(17,
"#eta");
2530 ha->GetYaxis()->SetBinLabel(17,
"#eta");
2531 hb->GetYaxis()->SetBinLabel(18,
"#Lambda");
2532 ha->GetYaxis()->SetBinLabel(18,
"#Lambda");
2533 hb->GetYaxis()->SetBinLabel(19,
"#Sigma^{+}");
2534 ha->GetYaxis()->SetBinLabel(19,
"#Sigma^{+}");
2535 hb->GetYaxis()->SetBinLabel(20,
"#Sigma^{0}");
2536 ha->GetYaxis()->SetBinLabel(20,
"#Sigma^{0}");
2537 hb->GetYaxis()->SetBinLabel(21,
"#Sigma^{-}");
2538 ha->GetYaxis()->SetBinLabel(21,
"#Sigma^{-}");
2539 hb->GetYaxis()->SetBinLabel(22,
"#Theta^{0}");
2540 ha->GetYaxis()->SetBinLabel(22,
"#Theta^{0}");
2541 hb->GetYaxis()->SetBinLabel(23,
"#Theta^{-}");
2542 ha->GetYaxis()->SetBinLabel(23,
"#Theta^{-}");
2543 hb->GetYaxis()->SetBinLabel(24,
"#Omega^{-}");
2544 ha->GetYaxis()->SetBinLabel(24,
"#Omega^{-}");
2545 hb->GetYaxis()->SetBinLabel(25,
"#bar{n}");
2546 ha->GetYaxis()->SetBinLabel(25,
"#bar{n}");
2547 hb->GetYaxis()->SetBinLabel(26,
"#bar{#Lambda}");
2548 ha->GetYaxis()->SetBinLabel(26,
"#bar{#Lambda}");
2549 hb->GetYaxis()->SetBinLabel(27,
"#bar{#Sigma}^{-}");
2550 ha->GetYaxis()->SetBinLabel(27,
"#bar{#Sigma}^{-}");
2551 hb->GetYaxis()->SetBinLabel(28,
"#bar{#Sigma}^{0}");
2552 ha->GetYaxis()->SetBinLabel(28,
"#bar{#Sigma}^{0}");
2553 hb->GetYaxis()->SetBinLabel(29,
"#bar{#Sigma}^{+}");
2554 ha->GetYaxis()->SetBinLabel(29,
"#bar{#Sigma}^{+}");
2555 hb->GetYaxis()->SetBinLabel(30,
"#bar{#Theta}^{0}");
2556 ha->GetYaxis()->SetBinLabel(30,
"#bar{#Theta}^{0}");
2557 hb->GetYaxis()->SetBinLabel(31,
"#bar{#Theta}^{+}");
2558 ha->GetYaxis()->SetBinLabel(31,
"#bar{#Theta}^{+}");
2559 hb->GetYaxis()->SetBinLabel(32,
"#bar{#Omega}^{+}");
2560 ha->GetYaxis()->SetBinLabel(32,
"#bar{#Omega}^{+}");
2561 hb->GetYaxis()->SetBinLabel(33,
"#tau^{+}");
2562 ha->GetYaxis()->SetBinLabel(33,
"#tau^{+}");
2563 hb->GetYaxis()->SetBinLabel(34,
"#tau^{-}");
2564 ha->GetYaxis()->SetBinLabel(34,
"#tau^{-}");
2565 hb->GetYaxis()->SetBinLabel(35,
"D^{+}");
2566 ha->GetYaxis()->SetBinLabel(35,
"D^{+}");
2567 hb->GetYaxis()->SetBinLabel(36,
"D^{-}");
2568 ha->GetYaxis()->SetBinLabel(36,
"D^{-}");
2569 hb->GetYaxis()->SetBinLabel(37,
"D^{0}");
2570 ha->GetYaxis()->SetBinLabel(37,
"D^{0}");
2571 hb->GetYaxis()->SetBinLabel(38,
"#bar{D}^{0}");
2572 ha->GetYaxis()->SetBinLabel(38,
"#bar{D}^{0}");
2573 hb->GetYaxis()->SetBinLabel(39,
"D_{s}^{+}");
2574 ha->GetYaxis()->SetBinLabel(39,
"D_{s}^{+}");
2575 hb->GetYaxis()->SetBinLabel(40,
"#bar{D_{s}}^{-}");
2576 ha->GetYaxis()->SetBinLabel(40,
"#bar{D_{s}}^{-}");
2577 hb->GetYaxis()->SetBinLabel(41,
"#Lambda_{c}^{+}");
2578 ha->GetYaxis()->SetBinLabel(41,
"#Lambda_{c}^{+}");
2579 hb->GetYaxis()->SetBinLabel(42,
"W^{+}");
2580 ha->GetYaxis()->SetBinLabel(42,
"W^{+}");
2581 hb->GetYaxis()->SetBinLabel(43,
"W^{-}");
2582 ha->GetYaxis()->SetBinLabel(43,
"W^{-}");
2583 hb->GetYaxis()->SetBinLabel(44,
"Z^{0}");
2584 ha->GetYaxis()->SetBinLabel(44,
"Z^{0}");
2588 before->Add(
new TH2F(
"TOFkElectron",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2589 after->Add(
new TH2F(
"TOFkElectron",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2591 before->Add(
new TH2F(
"TOFkMuon",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2592 after->Add(
new TH2F(
"TOFkMuon",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2594 before->Add(
new TH2F(
"TOFkPion",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2595 after->Add(
new TH2F(
"TOFkPion",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2597 before->Add(
new TH2F(
"TOFkKaon",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2598 after->Add(
new TH2F(
"TOFkKaon",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2600 before->Add(
new TH2F(
"TOFkProton",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2601 after->Add(
new TH2F(
"TOFkProton",
";p_{t}[GeV/c];TOF signal - IT", kNbinsP,binsP,1000,-2e4, 2e4));
2604 before->Add(
new TH1F(
"KinkQt",
";q_{t}[GeV/c];counts", 200, 0., 0.3));
2605 after->Add(
new TH1F(
"KinkQt",
";q_{t}[GeV/c];counts", 200, 0., 0.3));
2607 before->Add(
new TH1F(
"KinkMinv",
";m_{inv}(#mu#nu)[GeV/c^{2}];counts;Kink M_{inv}", 200, 0., 0.7));
2608 after->Add(
new TH1F(
"KinkMinv",
";m_{inv}(#mu#nu)[GeV/c^{2}];counts;Kink M_{inv}", 200, 0., 0.7));
2610 before->Add(
new TH2F(
"KinkVertex",
";x[cm];y[cm];Kink vertex position",250,-250.,250., 250,-250.,250.));
2611 after->Add(
new TH2F(
"KinkVertex",
";x[cm];y[cm];Kink vertex position",250,-250.,250., 250,-250.,250.));
2613 before->Add(
new TH2F(
"KinkAngleMp",
";p_{mother}[GeV/c];Kink decay angle [deg];", 100,0.,6., 100,0.,80.));
2614 after->Add(
new TH2F(
"KinkAngleMp",
";p_{mother}[GeV/c];Kink decay angle [deg];", 100,0.,6., 100,0.,80.));
2616 before->Add(
new TH1F(
"KinkIndex",
";Kink index;counts", 2, 0., 2.));
2617 after->Add(
new TH1F(
"KinkIndex",
";Kink index;counts", 2, 0., 2.));
2619 TH1::AddDirectory(adddirstatus);
2627 AliESDEvent* esd=NULL;
2628 AliAODEvent* aod=NULL;
2633 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2634 aod =
dynamic_cast<AliAODEvent*
>(
fEvent);
2637 if (esd)
return esd->GetMultiplicity()->GetNumberOfTracklets();
2638 if (aod)
return aod->GetTracklets()->GetNumberOfTracklets();
2641 return fMCevent->GetNumberOfTracks();
2643 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2645 return esd->GetNumberOfPmdTracks();
2654 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2655 if (esd)
return esd->GetNumberOfMuonTracks();
2656 return fEvent->GetNumberOfTracks();
2658 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2660 return esd->GetNumberOfKinks();
2662 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2664 return esd->GetNumberOfV0s();
2667 return fEvent->GetNumberOfTracks();
2677 AliESDEvent* esd=NULL;
2678 AliAODEvent* aod=NULL;
2682 if (!
fEvent)
return NULL;
2683 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2684 aod =
dynamic_cast<AliAODEvent*
>(
fEvent);
2687 if (esd)
return const_cast<AliMultiplicity*
>(esd->GetMultiplicity());
2688 if (aod)
return const_cast<AliAODTracklets*
>(aod->GetTracklets());
2693 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2694 if (!esd)
return NULL;
2695 return esd->GetPmdTrack(i);
2697 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2700 aod =
dynamic_cast<AliAODEvent*
>(
fEvent);
2701 if(!aod)
return NULL;
2702 return aod->GetVZEROData();
2704 return esd->GetVZEROData();
2706 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2709 aod =
dynamic_cast<AliAODEvent*
>(
fEvent);
2710 if(!aod)
return NULL;
2711 return aod->GetVZEROData();
2713 return esd->GetVZEROData();
2715 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2718 aod =
dynamic_cast<AliAODEvent*
>(
fEvent);
2719 if(!aod)
return NULL;
2720 return aod->GetVZEROData();
2722 return esd->GetVZEROData();
2724 if (!
fEvent)
return NULL;
2725 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2726 if (esd)
return esd->GetMuonTrack(i);
2727 return fEvent->GetTrack(i);
2729 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2730 if (!esd)
return NULL;
2731 return esd->GetKink(i);
2733 esd =
dynamic_cast<AliESDEvent*
>(
fEvent);
2734 if (!esd)
return NULL;
2735 return esd->GetV0(i);
2737 if (!
fEvent)
return NULL;
2738 return fEvent->GetTrack(i);
2770 if(!track->GetAODEvent()->GetTOFHeader()){
2771 AliAODPid *pidObj = track->GetDetPid();
2772 if (!pidObj)
fESDpid.GetTOFResponse().SetTimeResolution(84.);
2774 Double_t sigmaTOFPidInAOD[10];
2775 pidObj->GetTOFpidResolution(sigmaTOFPidInAOD);
2776 if(sigmaTOFPidInAOD[0] > 84.){
2777 fESDpid.GetTOFResponse().SetTimeResolution(sigmaTOFPidInAOD[0]);
2783 Bool_t pass = kTRUE;
2815 Bool_t pass = kTRUE;
2852 printf(
"AliFlowTrackCuts::PassesCuts() this should never be called!\n");
2863 Bool_t goodtrack = (track->GetStatus() & AliESDtrack::kTOFpid) &&
2864 (track->GetTOFsignal() > 12000) &&
2865 (track->GetTOFsignal() < 100000) &&
2866 (track->GetIntegratedLength() > 365);
2874 if (!goodtrack)
return kFALSE;
2876 const Float_t c = 2.99792457999999984e-02;
2877 Float_t p = track->GetP();
2878 Float_t l = track->GetIntegratedLength();
2879 Float_t trackT0 =
fESDpid.GetTOFResponse().GetStartTime(p);
2880 Float_t timeTOF = track->GetTOFsignal()- trackT0;
2881 Float_t beta = l/timeTOF/c;
2882 Double_t integratedTimes[9] = {-1.0,-1.0,-1.0,-1.0,-1.0, -1.0, -1.0, -1.0, -1.0};
2883 track->GetIntegratedTimes(integratedTimes);
2884 Float_t betaHypothesis[5] = {0.0,0.0,0.0,0.0,0.0};
2885 Float_t s[5] = {0.0,0.0,0.0,0.0,0.0};
2886 for (Int_t i=0;i<5;i++)
2888 betaHypothesis[i] = l/integratedTimes[i]/c;
2889 s[i] = beta-betaHypothesis[i];
2895 return ( (s[2]<0.015) && (s[2]>-0.015) &&
2899 return ( (s[3]<0.015) && (s[3]>-0.015) &&
2902 case AliPID::kProton:
2903 return ( (s[4]<0.015) && (s[4]>-0.015) &&
2916 Double_t integratedTimes[9] = {-1.0,-1.0,-1.0,-1.0,-1.0, -1.0, -1.0, -1.0, -1.0};
2917 track->GetIntegratedTimes(integratedTimes);
2919 const Float_t c = 2.99792457999999984e-02;
2920 Float_t p = track->P();
2921 Float_t l = integratedTimes[0]*c;
2922 Float_t trackT0 =
fESDpid.GetTOFResponse().GetStartTime(p);
2923 Float_t timeTOF = track->GetTOFsignal()- trackT0;
2924 if(QAmode && timeTOF <= 0)
return -999;
2938 Bool_t goodtrack = (track->GetStatus() & AliESDtrack::kTOFpid) &&
2939 (track->GetTOFsignal() > 12000) &&
2940 (track->GetTOFsignal() < 100000);
2942 if (!goodtrack)
return kFALSE;
2944 const Float_t c = 2.99792457999999984e-02;
2945 Double_t integratedTimes[9] = {-1.0,-1.0,-1.0,-1.0,-1.0, -1.0, -1.0, -1.0, -1.0};
2946 track->GetIntegratedTimes(integratedTimes);
2947 Float_t l = integratedTimes[0]*c;
2949 goodtrack = goodtrack && (l > 365);
2951 if (!goodtrack)
return kFALSE;
2960 Float_t beta =
GetBeta(track);
2964 cout<<
"TOFbeta: fParticleID = "<<
fParticleID<<endl;
2973 case AliPID::kProton:
2981 Float_t p = track->P();
2982 Float_t betahypothesis = l/integratedTimes[pid]/c;
2983 Float_t betadiff = beta-betahypothesis;
2986 Int_t col = TMath::BinarySearch(
fTOFpidCuts->GetNcols(),arr,
static_cast<Float_t
>(p));
2987 if (col<0)
return kFALSE;
2988 Float_t min = (*fTOFpidCuts)(1,col);
2989 Float_t max = (*fTOFpidCuts)(2,col);
2991 Bool_t pass = (betadiff>min && betadiff<max);
3006 Bool_t goodtrack = (track->GetStatus() & AliESDtrack::kTOFpid) &&
3007 (track->GetTOFsignal() > 12000) &&
3008 (track->GetTOFsignal() < 100000) &&
3009 (track->GetIntegratedLength() > 365);
3013 if (!goodtrack)
return kFALSE;
3019 Float_t beta =
GetBeta(track);
3020 Double_t integratedTimes[9] = {-1.0,-1.0,-1.0,-1.0,-1.0, -1.0, -1.0, -1.0, -1.0};
3021 track->GetIntegratedTimes(integratedTimes);
3033 case AliPID::kProton:
3041 const Float_t c = 2.99792457999999984e-02;
3042 Float_t l = track->GetIntegratedLength();
3043 Float_t p = track->GetP();
3044 Float_t betahypothesis = l/integratedTimes[pid]/c;
3045 Float_t betadiff = beta-betahypothesis;
3048 Int_t col = TMath::BinarySearch(
fTOFpidCuts->GetNcols(),arr,
static_cast<Float_t
>(p));
3049 if (col<0)
return kFALSE;
3050 Float_t min = (*fTOFpidCuts)(1,col);
3051 Float_t max = (*fTOFpidCuts)(2,col);
3053 Bool_t pass = (betadiff>min && betadiff<max);
3062 Double_t pidTOF[AliPID::kSPECIES];
3063 track->GetTOFpid(pidTOF);
3072 Double_t pidTPC[AliPID::kSPECIES];
3073 track->GetTPCpid(pidTPC);
3074 Double_t probablity = 0.;
3078 probablity = pidTPC[AliPID::kPion] + pidTPC[AliPID::kMuon];
3091 return track->GetTPCsignal();
3104 const AliExternalTrackParam* tpcparam = track->GetInnerParam();
3105 if (!tpcparam)
return kFALSE;
3106 Double_t p = tpcparam->GetP();
3108 Float_t sigTPC = track->GetTPCsignal();
3109 Float_t s = (sigTPC-sigExp)/sigExp;
3113 Int_t col = TMath::BinarySearch( arrSize, arr, static_cast<Float_t>(p));
3114 if (col<0)
return kFALSE;
3115 Float_t min = (*fTPCpidCuts)(1,col);
3116 Float_t max = (*fTPCpidCuts)(2,col);
3119 return (s>min && s<max);
3131 t =
new TMatrixF(3,15);
3132 (*t)(0,0) = 0.20; (*t)(1,0) = -0.4; (*t)(2,0) = 0.0;
3133 (*t)(0,1) = 0.25; (*t)(1,1) = -0.4; (*t)(2,1) = 0.1;
3134 (*t)(0,2) = 0.30; (*t)(1,2) = -0.4; (*t)(2,2) = 0.2;
3135 (*t)(0,3) = 0.35; (*t)(1,3) = -0.4; (*t)(2,3) = 0.2;
3136 (*t)(0,4) = 0.40; (*t)(1,4) = -0.4; (*t)(2,4) = 0.3;
3137 (*t)(0,5) = 0.45; (*t)(1,5) = -0.4; (*t)(2,5) = 0.3;
3138 (*t)(0,6) = 0.50; (*t)(1,6) = -0.4; (*t)(2,6) = 0.25;
3139 (*t)(0,7) = 0.55; (*t)(1,7) = -0.4; (*t)(2,7) = 0.15;
3140 (*t)(0,8) = 0.60; (*t)(1,8) = -0.4; (*t)(2,8) = 0.1;
3141 (*t)(0,9) = 0.65; (*t)(1,9) = -0.4; (*t)(2,9) = 0.05;
3142 (*t)(0,10) = 0.70; (*t)(1,10) = -0.4; (*t)(2,10) = 0;
3143 (*t)(0,11) = 0.75; (*t)(1,11) = -0.4; (*t)(2,11) = 0;
3144 (*t)(0,12) = 0.80; (*t)(1,12) = -0.4; (*t)(2,12) = -0.05;
3145 (*t)(0,13) = 0.85; (*t)(1,13) = -0.4; (*t)(2,13) = -0.1;
3146 (*t)(0,14) = 0.90; (*t)(1,14) = 0; (*t)(2,14) = 0;
3151 t =
new TMatrixF(3,12);
3152 (*t)(0,0) = 0.20; (*t)(1,0) = -0.2; (*t)(2,0) = 0.2;
3153 (*t)(0,1) = 0.25; (*t)(1,1) = -0.2; (*t)(2,1) = 0.2;
3154 (*t)(0,2) = 0.30; (*t)(1,2) = -0.2; (*t)(2,2) = 0.2;
3155 (*t)(0,3) = 0.35; (*t)(1,3) = -0.2; (*t)(2,3) = 0.2;
3156 (*t)(0,4) = 0.40; (*t)(1,4) = -0.1; (*t)(2,4) = 0.2;
3157 (*t)(0,5) = 0.45; (*t)(1,5) = -0.1; (*t)(2,5) = 0.2;
3158 (*t)(0,6) = 0.50; (*t)(1,6) =-0.05; (*t)(2,6) = 0.2;
3159 (*t)(0,7) = 0.55; (*t)(1,7) = -0.1; (*t)(2,7) = 0.1;
3160 (*t)(0,8) = 0.60; (*t)(1,8) =-0.05; (*t)(2,8) = 0.1;
3161 (*t)(0,9) = 0.65; (*t)(1,9) = 0; (*t)(2,9) = 0.15;
3162 (*t)(0,10) = 0.70; (*t)(1,10) = 0.05; (*t)(2,10) = 0.2;
3163 (*t)(0,11) = 0.75; (*t)(1,11) = 0; (*t)(2,11) = 0;
3168 t =
new TMatrixF(3,9);
3169 (*t)(0,0) = 0.20; (*t)(1,0) = -0.1; (*t)(2,0) = 0.1;
3170 (*t)(0,1) = 0.25; (*t)(1,1) = -0.2; (*t)(2,1) = 0.2;
3171 (*t)(0,2) = 0.80; (*t)(1,2) = -0.1; (*t)(2,2) = 0.2;
3172 (*t)(0,3) = 0.85; (*t)(1,3) =-0.05; (*t)(2,3) = 0.2;
3173 (*t)(0,4) = 0.90; (*t)(1,4) =-0.05; (*t)(2,4) = 0.25;
3174 (*t)(0,5) = 0.95; (*t)(1,5) =-0.05; (*t)(2,5) = 0.25;
3175 (*t)(0,6) = 1.00; (*t)(1,6) = -0.1; (*t)(2,6) = 0.25;
3176 (*t)(0,7) = 1.10; (*t)(1,7) =-0.05; (*t)(2,7) = 0.3;
3177 (*t)(0,8) = 1.20; (*t)(1,8) = 0; (*t)(2,8) = 0;
3188 t =
new TMatrixF(3,61);
3189 (*t)(0,0) = 0.000; (*t)(1,0) = 0.000; (*t)(2,0) = 0.000;
3190 (*t)(0,1) = 0.050; (*t)(1,1) = 0.000; (*t)(2,1) = 0.000;
3191 (*t)(0,2) = 0.100; (*t)(1,2) = 0.000; (*t)(2,2) = 0.000;
3192 (*t)(0,3) = 0.150; (*t)(1,3) = 0.000; (*t)(2,3) = 0.000;
3193 (*t)(0,4) = 0.200; (*t)(1,4) = -0.030; (*t)(2,4) = 0.030;
3194 (*t)(0,5) = 0.250; (*t)(1,5) = -0.036; (*t)(2,5) = 0.032;
3195 (*t)(0,6) = 0.300; (*t)(1,6) = -0.038; (*t)(2,6) = 0.032;
3196 (*t)(0,7) = 0.350; (*t)(1,7) = -0.034; (*t)(2,7) = 0.032;
3197 (*t)(0,8) = 0.400; (*t)(1,8) = -0.032; (*t)(2,8) = 0.020;
3198 (*t)(0,9) = 0.450; (*t)(1,9) = -0.030; (*t)(2,9) = 0.020;
3199 (*t)(0,10) = 0.500; (*t)(1,10) = -0.030; (*t)(2,10) = 0.020;
3200 (*t)(0,11) = 0.550; (*t)(1,11) = -0.030; (*t)(2,11) = 0.020;
3201 (*t)(0,12) = 0.600; (*t)(1,12) = -0.030; (*t)(2,12) = 0.020;
3202 (*t)(0,13) = 0.650; (*t)(1,13) = -0.030; (*t)(2,13) = 0.020;
3203 (*t)(0,14) = 0.700; (*t)(1,14) = -0.030; (*t)(2,14) = 0.020;
3204 (*t)(0,15) = 0.750; (*t)(1,15) = -0.030; (*t)(2,15) = 0.020;
3205 (*t)(0,16) = 0.800; (*t)(1,16) = -0.030; (*t)(2,16) = 0.020;
3206 (*t)(0,17) = 0.850; (*t)(1,17) = -0.030; (*t)(2,17) = 0.020;
3207 (*t)(0,18) = 0.900; (*t)(1,18) = -0.030; (*t)(2,18) = 0.020;
3208 (*t)(0,19) = 0.950; (*t)(1,19) = -0.028; (*t)(2,19) = 0.028;
3209 (*t)(0,20) = 1.000; (*t)(1,20) = -0.028; (*t)(2,20) = 0.028;
3210 (*t)(0,21) = 1.100; (*t)(1,21) = -0.028; (*t)(2,21) = 0.028;
3211 (*t)(0,22) = 1.200; (*t)(1,22) = -0.026; (*t)(2,22) = 0.028;
3212 (*t)(0,23) = 1.300; (*t)(1,23) = -0.024; (*t)(2,23) = 0.028;
3213 (*t)(0,24) = 1.400; (*t)(1,24) = -0.020; (*t)(2,24) = 0.028;
3214 (*t)(0,25) = 1.500; (*t)(1,25) = -0.018; (*t)(2,25) = 0.028;
3215 (*t)(0,26) = 1.600; (*t)(1,26) = -0.016; (*t)(2,26) = 0.028;
3216 (*t)(0,27) = 1.700; (*t)(1,27) = -0.014; (*t)(2,27) = 0.028;
3217 (*t)(0,28) = 1.800; (*t)(1,28) = -0.012; (*t)(2,28) = 0.026;
3218 (*t)(0,29) = 1.900; (*t)(1,29) = -0.010; (*t)(2,29) = 0.026;
3219 (*t)(0,30) = 2.000; (*t)(1,30) = -0.008; (*t)(2,30) = 0.026;
3220 (*t)(0,31) = 2.100; (*t)(1,31) = -0.008; (*t)(2,31) = 0.024;
3221 (*t)(0,32) = 2.200; (*t)(1,32) = -0.006; (*t)(2,32) = 0.024;
3222 (*t)(0,33) = 2.300; (*t)(1,33) = -0.004; (*t)(2,33) = 0.024;
3223 (*t)(0,34) = 2.400; (*t)(1,34) = -0.004; (*t)(2,34) = 0.024;
3224 (*t)(0,35) = 2.500; (*t)(1,35) = -0.002; (*t)(2,35) = 0.024;
3225 (*t)(0,36) = 2.600; (*t)(1,36) = -0.002; (*t)(2,36) = 0.024;
3226 (*t)(0,37) = 2.700; (*t)(1,37) = 0.000; (*t)(2,37) = 0.024;
3227 (*t)(0,38) = 2.800; (*t)(1,38) = 0.000; (*t)(2,38) = 0.026;
3228 (*t)(0,39) = 2.900; (*t)(1,39) = 0.000; (*t)(2,39) = 0.024;
3229 (*t)(0,40) = 3.000; (*t)(1,40) = 0.002; (*t)(2,40) = 0.026;
3230 (*t)(0,41) = 3.100; (*t)(1,41) = 0.002; (*t)(2,41) = 0.026;
3231 (*t)(0,42) = 3.200; (*t)(1,42) = 0.002; (*t)(2,42) = 0.026;
3232 (*t)(0,43) = 3.300; (*t)(1,43) = 0.002; (*t)(2,43) = 0.026;
3233 (*t)(0,44) = 3.400; (*t)(1,44) = 0.002; (*t)(2,44) = 0.026;
3234 (*t)(0,45) = 3.500; (*t)(1,45) = 0.002; (*t)(2,45) = 0.026;
3235 (*t)(0,46) = 3.600; (*t)(1,46) = 0.002; (*t)(2,46) = 0.026;
3236 (*t)(0,47) = 3.700; (*t)(1,47) = 0.002; (*t)(2,47) = 0.026;
3237 (*t)(0,48) = 3.800; (*t)(1,48) = 0.002; (*t)(2,48) = 0.026;
3238 (*t)(0,49) = 3.900; (*t)(1,49) = 0.004; (*t)(2,49) = 0.024;
3239 (*t)(0,50) = 4.000; (*t)(1,50) = 0.004; (*t)(2,50) = 0.026;
3240 (*t)(0,51) = 4.100; (*t)(1,51) = 0.004; (*t)(2,51) = 0.026;
3241 (*t)(0,52) = 4.200; (*t)(1,52) = 0.004; (*t)(2,52) = 0.024;
3242 (*t)(0,53) = 4.300; (*t)(1,53) = 0.006; (*t)(2,53) = 0.024;
3243 (*t)(0,54) = 4.400; (*t)(1,54) = 0.000; (*t)(2,54) = 0.000;
3244 (*t)(0,55) = 4.500; (*t)(1,55) = 0.000; (*t)(2,55) = 0.000;
3245 (*t)(0,56) = 4.600; (*t)(1,56) = 0.000; (*t)(2,56) = 0.000;
3246 (*t)(0,57) = 4.700; (*t)(1,57) = 0.000; (*t)(2,57) = 0.000;
3247 (*t)(0,58) = 4.800; (*t)(1,58) = 0.000; (*t)(2,58) = 0.000;
3248 (*t)(0,59) = 4.900; (*t)(1,59) = 0.000; (*t)(2,59) = 0.000;
3249 (*t)(0,60) = 5.900; (*t)(1,60) = 0.000; (*t)(2,60) = 0.000;
3255 t =
new TMatrixF(3,61);
3256 (*t)(0,0) = 0.000; (*t)(1,0) = 0.000; (*t)(2,0) = 0.000;
3257 (*t)(0,1) = 0.050; (*t)(1,1) = 0.000; (*t)(2,1) = 0.000;
3258 (*t)(0,2) = 0.100; (*t)(1,2) = 0.000; (*t)(2,2) = 0.000;
3259 (*t)(0,3) = 0.150; (*t)(1,3) = 0.000; (*t)(2,3) = 0.000;
3260 (*t)(0,4) = 0.200; (*t)(1,4) = -0.07; (*t)(2,4) = 0.07;
3261 (*t)(0,5) = 0.200; (*t)(1,5) = -0.07; (*t)(2,5) = 0.07;
3262 (*t)(0,6) = 0.200; (*t)(1,6) = -0.07; (*t)(2,6) = 0.07;
3263 (*t)(0,7) = 0.200; (*t)(1,7) = -0.07; (*t)(2,7) = 0.07;
3264 (*t)(0,8) = 0.200; (*t)(1,8) = -0.07; (*t)(2,8) = 0.07;
3265 (*t)(0,9) = 0.200; (*t)(1,9) = -0.07; (*t)(2,9) = 0.07;
3266 (*t)(0,10) = 0.200; (*t)(1,10) = -0.07; (*t)(2,10) = 0.07;
3267 (*t)(0,11) = 0.200; (*t)(1,11) = -0.07; (*t)(2,11) = 0.07;
3268 (*t)(0,12) = 0.200; (*t)(1,12) = -0.07; (*t)(2,12) = 0.07;
3269 (*t)(0,13) = 0.200; (*t)(1,13) = -0.07; (*t)(2,13) = 0.07;
3270 (*t)(0,14) = 0.200; (*t)(1,14) = -0.07; (*t)(2,14) = 0.07;
3271 (*t)(0,15) = 0.200; (*t)(1,15) = -0.07; (*t)(2,15) = 0.07;
3272 (*t)(0,16) = 0.200; (*t)(1,16) = -0.07; (*t)(2,16) = 0.07;
3273 (*t)(0,17) = 0.850; (*t)(1,17) = -0.070; (*t)(2,17) = 0.070;
3274 (*t)(0,18) = 0.900; (*t)(1,18) = -0.072; (*t)(2,18) = 0.072;
3275 (*t)(0,19) = 0.950; (*t)(1,19) = -0.072; (*t)(2,19) = 0.072;
3276 (*t)(0,20) = 1.000; (*t)(1,20) = -0.074; (*t)(2,20) = 0.074;
3277 (*t)(0,21) = 1.100; (*t)(1,21) = -0.032; (*t)(2,21) = 0.032;
3278 (*t)(0,22) = 1.200; (*t)(1,22) = -0.026; (*t)(2,22) = 0.026;
3279 (*t)(0,23) = 1.300; (*t)(1,23) = -0.026; (*t)(2,23) = 0.026;
3280 (*t)(0,24) = 1.400; (*t)(1,24) = -0.024; (*t)(2,24) = 0.024;
3281 (*t)(0,25) = 1.500; (*t)(1,25) = -0.024; (*t)(2,25) = 0.024;
3282 (*t)(0,26) = 1.600; (*t)(1,26) = -0.026; (*t)(2,26) = 0.026;
3283 (*t)(0,27) = 1.700; (*t)(1,27) = -0.026; (*t)(2,27) = 0.026;
3284 (*t)(0,28) = 1.800; (*t)(1,28) = -0.026; (*t)(2,28) = 0.026;
3285 (*t)(0,29) = 1.900; (*t)(1,29) = -0.026; (*t)(2,29) = 0.026;
3286 (*t)(0,30) = 2.000; (*t)(1,30) = -0.026; (*t)(2,30) = 0.026;
3287 (*t)(0,31) = 2.100; (*t)(1,31) = -0.026; (*t)(2,31) = 0.026;
3288 (*t)(0,32) = 2.200; (*t)(1,32) = -0.026; (*t)(2,32) = 0.024;
3289 (*t)(0,33) = 2.300; (*t)(1,33) = -0.028; (*t)(2,33) = 0.022;
3290 (*t)(0,34) = 2.400; (*t)(1,34) = -0.028; (*t)(2,34) = 0.020;
3291 (*t)(0,35) = 2.500; (*t)(1,35) = -0.028; (*t)(2,35) = 0.018;
3292 (*t)(0,36) = 2.600; (*t)(1,36) = -0.028; (*t)(2,36) = 0.016;
3293 (*t)(0,37) = 2.700; (*t)(1,37) = -0.028; (*t)(2,37) = 0.016;
3294 (*t)(0,38) = 2.800; (*t)(1,38) = -0.030; (*t)(2,38) = 0.014;
3295 (*t)(0,39) = 2.900; (*t)(1,39) = -0.030; (*t)(2,39) = 0.012;
3296 (*t)(0,40) = 3.000; (*t)(1,40) = -0.030; (*t)(2,40) = 0.012;
3297 (*t)(0,41) = 3.100; (*t)(1,41) = -0.030; (*t)(2,41) = 0.010;
3298 (*t)(0,42) = 3.200; (*t)(1,42) = -0.030; (*t)(2,42) = 0.010;
3299 (*t)(0,43) = 3.300; (*t)(1,43) = -0.030; (*t)(2,43) = 0.010;
3300 (*t)(0,44) = 3.400; (*t)(1,44) = -0.030; (*t)(2,44) = 0.008;
3301 (*t)(0,45) = 3.500; (*t)(1,45) = -0.030; (*t)(2,45) = 0.008;
3302 (*t)(0,46) = 3.600; (*t)(1,46) = -0.030; (*t)(2,46) = 0.008;
3303 (*t)(0,47) = 3.700; (*t)(1,47) = -0.030; (*t)(2,47) = 0.006;
3304 (*t)(0,48) = 3.800; (*t)(1,48) = -0.030; (*t)(2,48) = 0.006;
3305 (*t)(0,49) = 3.900; (*t)(1,49) = -0.030; (*t)(2,49) = 0.006;
3306 (*t)(0,50) = 4.000; (*t)(1,50) = -0.028; (*t)(2,50) = 0.004;
3307 (*t)(0,51) = 4.100; (*t)(1,51) = -0.030; (*t)(2,51) = 0.004;
3308 (*t)(0,52) = 4.200; (*t)(1,52) = -0.030; (*t)(2,52) = 0.004;
3309 (*t)(0,53) = 4.300; (*t)(1,53) = -0.028; (*t)(2,53) = 0.002;
3310 (*t)(0,54) = 4.400; (*t)(1,54) = -0.030; (*t)(2,54) = 0.002;
3311 (*t)(0,55) = 4.500; (*t)(1,55) = -0.028; (*t)(2,55) = 0.002;
3312 (*t)(0,56) = 4.600; (*t)(1,56) = -0.028; (*t)(2,56) = 0.002;
3313 (*t)(0,57) = 4.700; (*t)(1,57) = -0.028; (*t)(2,57) = 0.000;
3314 (*t)(0,58) = 4.800; (*t)(1,58) = -0.028; (*t)(2,58) = 0.002;
3315 (*t)(0,59) = 4.900; (*t)(1,59) = 0.000; (*t)(2,59) = 0.000;
3316 (*t)(0,60) = 5.900; (*t)(1,60) = 0.000; (*t)(2,60) = 0.000;
3322 t =
new TMatrixF(3,61);
3323 (*t)(0,0) = 0.000; (*t)(1,0) = 0.000; (*t)(2,0) = 0.000;
3324 (*t)(0,1) = 0.050; (*t)(1,1) = 0.000; (*t)(2,1) = 0.000;
3325 (*t)(0,2) = 0.100; (*t)(1,2) = 0.000; (*t)(2,2) = 0.000;
3326 (*t)(0,3) = 0.150; (*t)(1,3) = 0.000; (*t)(2,3) = 0.000;
3327 (*t)(0,4) = 0.200; (*t)(1,4) = -0.05; (*t)(2,4) = 0.05;
3328 (*t)(0,5) = 0.200; (*t)(1,5) = -0.05; (*t)(2,5) = 0.05;
3329 (*t)(0,6) = 0.200; (*t)(1,6) = -0.05; (*t)(2,6) = 0.05;
3330 (*t)(0,7) = 0.200; (*t)(1,7) = -0.05; (*t)(2,7) = 0.05;
3331 (*t)(0,8) = 0.200; (*t)(1,8) = -0.05; (*t)(2,8) = 0.05;
3332 (*t)(0,9) = 0.200; (*t)(1,9) = -0.05; (*t)(2,9) = 0.05;
3333 (*t)(0,10) = 0.200; (*t)(1,10) = -0.05; (*t)(2,10) = 0.05;
3334 (*t)(0,11) = 0.550; (*t)(1,11) = -0.026; (*t)(2,11) = 0.026;
3335 (*t)(0,12) = 0.600; (*t)(1,12) = -0.026; (*t)(2,12) = 0.026;
3336 (*t)(0,13) = 0.650; (*t)(1,13) = -0.026; (*t)(2,13) = 0.026;
3337 (*t)(0,14) = 0.700; (*t)(1,14) = -0.026; (*t)(2,14) = 0.026;
3338 (*t)(0,15) = 0.750; (*t)(1,15) = -0.026; (*t)(2,15) = 0.026;
3339 (*t)(0,16) = 0.800; (*t)(1,16) = -0.026; (*t)(2,16) = 0.026;
3340 (*t)(0,17) = 0.850; (*t)(1,17) = -0.024; (*t)(2,17) = 0.024;
3341 (*t)(0,18) = 0.900; (*t)(1,18) = -0.024; (*t)(2,18) = 0.024;
3342 (*t)(0,19) = 0.950; (*t)(1,19) = -0.024; (*t)(2,19) = 0.024;
3343 (*t)(0,20) = 1.000; (*t)(1,20) = -0.024; (*t)(2,20) = 0.024;
3344 (*t)(0,21) = 1.100; (*t)(1,21) = -0.024; (*t)(2,21) = 0.024;
3345 (*t)(0,22) = 1.200; (*t)(1,22) = -0.024; (*t)(2,22) = 0.022;
3346 (*t)(0,23) = 1.300; (*t)(1,23) = -0.024; (*t)(2,23) = 0.020;
3347 (*t)(0,24) = 1.400; (*t)(1,24) = -0.026; (*t)(2,24) = 0.016;
3348 (*t)(0,25) = 1.500; (*t)(1,25) = -0.028; (*t)(2,25) = 0.014;
3349 (*t)(0,26) = 1.600; (*t)(1,26) = -0.028; (*t)(2,26) = 0.012;
3350 (*t)(0,27) = 1.700; (*t)(1,27) = -0.028; (*t)(2,27) = 0.010;
3351 (*t)(0,28) = 1.800; (*t)(1,28) = -0.028; (*t)(2,28) = 0.010;
3352 (*t)(0,29) = 1.900; (*t)(1,29) = -0.028; (*t)(2,29) = 0.008;
3353 (*t)(0,30) = 2.000; (*t)(1,30) = -0.028; (*t)(2,30) = 0.006;
3354 (*t)(0,31) = 2.100; (*t)(1,31) = -0.026; (*t)(2,31) = 0.006;
3355 (*t)(0,32) = 2.200; (*t)(1,32) = -0.024; (*t)(2,32) = 0.004;
3356 (*t)(0,33) = 2.300; (*t)(1,33) = -0.020; (*t)(2,33) = 0.002;
3357 (*t)(0,34) = 2.400; (*t)(1,34) = -0.020; (*t)(2,34) = 0.002;
3358 (*t)(0,35) = 2.500; (*t)(1,35) = -0.018; (*t)(2,35) = 0.000;
3359 (*t)(0,36) = 2.600; (*t)(1,36) = -0.016; (*t)(2,36) = 0.000;
3360 (*t)(0,37) = 2.700; (*t)(1,37) = -0.014; (*t)(2,37) = -0.002;
3361 (*t)(0,38) = 2.800; (*t)(1,38) = -0.014; (*t)(2,38) = -0.004;
3362 (*t)(0,39) = 2.900; (*t)(1,39) = -0.012; (*t)(2,39) = -0.004;
3363 (*t)(0,40) = 3.000; (*t)(1,40) = -0.010; (*t)(2,40) = -0.006;
3364 (*t)(0,41) = 3.100; (*t)(1,41) = 0.000; (*t)(2,41) = 0.000;
3365 (*t)(0,42) = 3.200; (*t)(1,42) = 0.000; (*t)(2,42) = 0.000;
3366 (*t)(0,43) = 3.300; (*t)(1,43) = 0.000; (*t)(2,43) = 0.000;
3367 (*t)(0,44) = 3.400; (*t)(1,44) = 0.000; (*t)(2,44) = 0.000;
3368 (*t)(0,45) = 3.500; (*t)(1,45) = 0.000; (*t)(2,45) = 0.000;
3369 (*t)(0,46) = 3.600; (*t)(1,46) = 0.000; (*t)(2,46) = 0.000;
3370 (*t)(0,47) = 3.700; (*t)(1,47) = 0.000; (*t)(2,47) = 0.000;
3371 (*t)(0,48) = 3.800; (*t)(1,48) = 0.000; (*t)(2,48) = 0.000;
3372 (*t)(0,49) = 3.900; (*t)(1,49) = 0.000; (*t)(2,49) = 0.000;
3373 (*t)(0,50) = 4.000; (*t)(1,50) = 0.000; (*t)(2,50) = 0.000;
3374 (*t)(0,51) = 4.100; (*t)(1,51) = 0.000; (*t)(2,51) = 0.000;
3375 (*t)(0,52) = 4.200; (*t)(1,52) = 0.000; (*t)(2,52) = 0.000;
3376 (*t)(0,53) = 4.300; (*t)(1,53) = 0.000; (*t)(2,53) = 0.000;
3377 (*t)(0,54) = 4.400; (*t)(1,54) = 0.000; (*t)(2,54) = 0.000;
3378 (*t)(0,55) = 4.500; (*t)(1,55) = 0.000; (*t)(2,55) = 0.000;
3379 (*t)(0,56) = 4.600; (*t)(1,56) = 0.000; (*t)(2,56) = 0.000;
3380 (*t)(0,57) = 4.700; (*t)(1,57) = 0.000; (*t)(2,57) = 0.000;
3381 (*t)(0,58) = 4.800; (*t)(1,58) = 0.000; (*t)(2,58) = 0.000;
3382 (*t)(0,59) = 4.900; (*t)(1,59) = 0.000; (*t)(2,59) = 0.000;
3383 (*t)(0,60) = 5.900; (*t)(1,60) = 0.000; (*t)(2,60) = 0.000;
3399 if(! kTPC)
return kFALSE;
3411 case AliPID::kProton:
3414 case AliPID::kElectron:
3420 case AliPID::kDeuteron:
3423 case AliPID::kTriton:
3454 if(! kTPC)
return kFALSE;
3477 case AliPID::kProton:
3480 case AliPID::kElectron:
3486 case AliPID::kDeuteron:
3489 case AliPID::kTriton:
3512 Bool_t goodtrack = (track->GetStatus() & AliESDtrack::kTOFout) &&
3513 (track->GetStatus() & AliESDtrack::kTIME) &&
3514 (track->GetTOFsignal() > 12000) &&
3515 (track->GetTOFsignal() < 100000);
3539 case AliPID::kProton:
3542 case AliPID::kElectron:
3548 case AliPID::kDeuteron:
3551 case AliPID::kTriton:
3575 Bool_t goodtrack = (track->GetStatus() & AliESDtrack::kTOFout) &&
3576 (track->GetStatus() & AliESDtrack::kTIME) &&
3577 (track->GetTOFsignal() > 12000) &&
3578 (track->GetTOFsignal() < 100000) &&
3579 (track->GetIntegratedLength() > 365);
3605 case AliPID::kProton:
3608 case AliPID::kElectron:
3614 case AliPID::kDeuteron:
3617 case AliPID::kTriton:
3643 Bool_t select=kFALSE;
3647 if (!track->GetInnerParam())
3650 const AliExternalTrackParam* tpcTrack = track->GetInnerParam();
3652 Double_t ptotTPC = tpcTrack->GetP();
3653 Double_t sigTPC = track->GetTPCsignal();
3654 Double_t dEdxBBA = 0.;
3655 Double_t dSigma = 0.;
3659 case AliPID::kDeuteron:
3661 dEdxBBA = AliExternalTrackParam::BetheBlochAleph(ptotTPC/1.8756,
3667 dSigma = (sigTPC - dEdxBBA)/dEdxBBA;
3669 if( ptotTPC<=1.1 && (dSigma < (0.5 - (0.1818*ptotTPC)) ) && (dSigma > ( (0.218*ptotTPC - 0.4) ) ) )
3673 case AliPID::kTriton:
3681 dEdxBBA = 4.0 * AliExternalTrackParam::BetheBlochAleph( (2.*ptotTPC)/2.8084,
3687 dSigma = (sigTPC - dEdxBBA)/dEdxBBA;
3688 if(ptotTPC<=5.0 && (dSigma >= (-0.03968*ptotTPC - 0.1)) && (dSigma <= (0.31 - 0.0217*ptotTPC)))
3692 case AliPID::kAlpha:
3711 if(!track)
return kFALSE;
3714 if ((track->GetStatus()&AliVTrack::kTOFout)==0)
return kFALSE;
3715 if ((track->GetStatus()&AliVTrack::kTIME)==0)
return kFALSE;
3718 if(track->GetTPCsignal() < 10)
return kFALSE;
3723 Float_t nsigma2 = nsigmaTPC*nsigmaTPC + nsigmaTOF*nsigmaTOF;
3735 if(!track)
return kFALSE;
3738 if ((track->GetStatus()&AliVTrack::kTOFout)==0)
return kFALSE;
3739 if ((track->GetStatus()&AliVTrack::kTIME)==0)
return kFALSE;
3742 if(track->GetTPCsignal() < 10)
return kFALSE;
3747 Float_t nsigma2 = nsigmaTPC*nsigmaTPC + nsigmaTOF*nsigmaTOF;
3759 if(!track)
return kFALSE;
3762 Double_t pInterval=0;
3763 for(
int i=0;i<60;i++){
3765 if(track->P()>pInterval && track->P()<pInterval+0.1){p_int = i;}
3778 if ( (track->IsOn(AliAODTrack::kITSin))){
3779 if(p_int<2)
return kFALSE;
3781 if(!
fPurityFunction[index]){ cout<<
"fPurityFunction[index] does not exist"<<endl;
return kFALSE;}
3783 if((track->IsOn(AliAODTrack::kTOFpid))){
3785 if(TMath::Sqrt(TMath::Power(nsigmaTPC,2)+TMath::Power(nsigmaTOF,2))<3){
3934 else if(centrCur < 20){
4044 else if(centrCur < 30){
4154 else if(centrCur < 40){
4264 else if(centrCur < 50){
4374 else if(centrCur < 60){
4484 else if(centrCur < 70){
4594 else if(centrCur < 80){
4816 fC[i][0] =
fC[17][0];
4817 fC[i][1] =
fC[17][1];
4818 fC[i][2] =
fC[17][2];
4819 fC[i][3] =
fC[17][3];
4820 fC[i][4] =
fC[17][4];
4828 Bool_t status = kFALSE;
4830 const Float_t c = 2.99792457999999984e-02;
4832 Float_t
mass[5] = {5.10998909999999971e-04,1.05658000000000002e-01,1.39570000000000000e-01,4.93676999999999977e-01,9.38271999999999995e-01};
4835 Double_t exptimes[9];
4836 track->GetIntegratedTimes(exptimes);
4838 Float_t dedx = track->GetTPCsignal();
4840 Float_t p = track->P();
4841 Float_t time = track->GetTOFsignal()-
fESDpid.GetTOFResponse().GetStartTime(p);
4842 Float_t tl = exptimes[0]*c;
4844 Float_t betagammares =
fESDpid.GetTOFResponse().GetExpectedSigma(p, exptimes[4], mass[4]);
4846 Float_t betagamma1 = tl/(time-5 *betagammares) * 33.3564095198152043;
4850 if(betagamma1 < 0.1) betagamma1 = 0.1;
4852 if(betagamma1 < 0.99999) betagamma1 /= TMath::Sqrt(1-betagamma1*betagamma1);
4853 else betagamma1 = 100;
4855 Float_t betagamma2 = tl/(time+5 *betagammares) * 33.3564095198152043;
4858 if(betagamma2 < 0.1) betagamma2 = 0.1;
4860 if(betagamma2 < 0.99999) betagamma2 /= TMath::Sqrt(1-betagamma2*betagamma2);
4861 else betagamma2 = 100;
4864 Float_t momtpc=track->GetTPCmomentum();
4866 for(Int_t i=0;i < 5;i++){
4867 Float_t resolutionTOF =
fESDpid.GetTOFResponse().GetExpectedSigma(p, exptimes[i], mass[i]);
4868 if(TMath::Abs(exptimes[i] - time) < 5 * resolutionTOF){
4869 Float_t dedxExp = 0;
4870 if(i==0) dedxExp =
fESDpid.GetTPCResponse().GetExpectedSignal(momtpc,AliPID::kElectron);
4871 else if(i==1) dedxExp =
fESDpid.GetTPCResponse().GetExpectedSignal(momtpc,AliPID::kMuon);
4872 else if(i==2) dedxExp =
fESDpid.GetTPCResponse().GetExpectedSignal(momtpc,AliPID::kPion);
4873 else if(i==3) dedxExp =
fESDpid.GetTPCResponse().GetExpectedSignal(momtpc,AliPID::kKaon);
4874 else if(i==4) dedxExp =
fESDpid.GetTPCResponse().GetExpectedSignal(momtpc,AliPID::kProton);
4876 Float_t resolutionTPC = 2;
4877 if(i==0) resolutionTPC =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),AliPID::kElectron);
4878 else if(i==1) resolutionTPC =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),AliPID::kMuon);
4879 else if(i==2) resolutionTPC =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),AliPID::kPion);
4880 else if(i==3) resolutionTPC =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),AliPID::kKaon);
4881 else if(i==4) resolutionTPC =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),AliPID::kProton);
4883 if(TMath::Abs(dedx - dedxExp) < 3 * resolutionTPC){
4889 Float_t bb1 =
fESDpid.GetTPCResponse().Bethe(betagamma1);
4890 Float_t bb2 =
fESDpid.GetTPCResponse().Bethe(betagamma2);
4891 Float_t bbM =
fESDpid.GetTPCResponse().Bethe((betagamma1+betagamma2)*0.5);
4896 Float_t resolutionTOFpr =
fESDpid.GetTOFResponse().GetExpectedSigma(p, exptimes[4], mass[4]);
4897 Float_t resolutionTPCpr =
fESDpid.GetTPCResponse().GetExpectedSigma(momtpc,track->GetTPCsignalN(),AliPID::kProton);
4898 if(TMath::Abs(dedx-bb1) < resolutionTPCpr*3 && exptimes[4] < time-7*resolutionTOFpr){
4901 else if(TMath::Abs(dedx-bb2) < resolutionTPCpr*3 && exptimes[4] < time-7*resolutionTOFpr){
4904 else if(TMath::Abs(dedx-bbM) < resolutionTPCpr*3 && exptimes[4] < time-7*resolutionTOFpr){
4919 Bool_t pass = kTRUE;
4922 if(!track) pass = kFALSE;
4925 if(track->GetTPCsignal() < 10) pass = kFALSE;
4940 Double_t Pt = track->Pt();
4942 Float_t nsigma2 = 999.;
4944 nsigma2 = nsigmaTPC*nsigmaTPC;
4947 if (((track->GetStatus()&AliVTrack::kTOFout)==0)&&((track->GetStatus()&AliVTrack::kTIME)==0)){
4951 nsigma2 = nsigmaTPC*nsigmaTPC + nsigmaTOF*nsigmaTOF;
4969 return "TPCbayesian";
4977 return "TOFbayesianPID";
4979 return "TOFbetaSimple";
4983 return "TPCTOFNsigma";
4985 return "TPCTOFNsigmaPurity";
5002 return "TPCstandalone";
5004 return "SPDtracklets";
5012 return "DeltaVZERO";
5029 Int_t det = track->GetDetector();
5031 Float_t clsX = track->GetClusterX();
5032 Float_t clsY = track->GetClusterY();
5033 Float_t clsZ = track->GetClusterZ();
5034 Float_t ncell = track->GetClusterCells();
5035 Float_t adc = track->GetClusterADC();
5046 if (
fCutEta) {
if ( fTrackEta < fEtaMin || fTrackEta >=
fEtaMax ) pass = kFALSE;}
5047 if (
fCutPhi) {
if ( fTrackPhi < fPhiMin || fTrackPhi >=
fPhiMax ) pass = kFALSE;}
5059 if (
id<0)
return kFALSE;
5064 fTrackPhi = TMath::PiOver4()*(0.5+
id%8);
5105 Double_t EventCentrality = -999;
5106 if(
fEvent->GetRunNumber() < 209122){
5109 EventCentrality =
fEvent->GetCentrality()->GetCentralityPercentile(
"V0M");
5111 AliMultSelection *MultSelection = 0x0;
5112 MultSelection = (AliMultSelection * )
fEvent->FindListObject(
"MultSelection");
5113 if( !MultSelection) {
5115 AliWarning(
"AliMultSelection not found, did you Run AliMultSelectionTask? \n");
5117 EventCentrality = MultSelection->GetMultiplicityPercentile(
"V0M");
5136 if(CorrectionFactor) {
5146 AliESDUtils::GetCorrV0((AliESDEvent*)
fEvent,dummy,multVZERO);
5151 if (
fCutEta) {
if ( fTrackEta < fEtaMin || fTrackEta >=
fEtaMax ) pass = kFALSE;}
5152 if (
fCutPhi) {
if ( fTrackPhi < fPhiMin || fTrackPhi >=
fPhiMax ) pass = kFALSE;}
5166 AliESDMuonTrack *esdTrack =
dynamic_cast<AliESDMuonTrack*
>(vparticle);
5167 AliAODTrack *aodTrack =
dynamic_cast<AliAODTrack*
>(vparticle);
5168 if ((!esdTrack) && (!aodTrack))
return kFALSE;
5178 Float_t rpxpy, theta, eta;
5179 rpxpy = TMath::Sqrt(xPos*xPos + yPos*yPos);
5180 theta = TMath::ATan2(rpxpy,zPos);
5181 eta = -TMath::Log(TMath::Tan(0.5*theta));
5189 Float_t pybypx, phi = 0., phi1;
5192 if(yPos>0) phi = 90.;
5193 if(yPos<0) phi = 270.;
5198 if(pybypx < 0) pybypx = - pybypx;
5199 phi1 = TMath::ATan(pybypx)*180./3.14159;
5201 if(xPos > 0 && yPos > 0) phi = phi1;
5202 if(xPos < 0 && yPos > 0) phi = 180 - phi1;
5203 if(xPos < 0 && yPos < 0) phi = 180 + phi1;
5204 if(xPos > 0 && yPos < 0) phi = 360 - phi1;
5207 phi = phi*3.14159/180.;
5222 if (!
fQA || !list)
return 0;
5223 if (list->IsEmpty())
return 0;
5227 while ( (obj = dynamic_cast<AliFlowTrackCuts*>(next())) )
5229 if (obj==
this)
continue;
5230 tmplist.Add(obj->
GetQA());
5232 return fQA->Merge(&tmplist);
5242 printf(
"The purity functions file does not exist");
5248 TString species[3] = {
"pion",
"kaon",
"proton"};
5249 TList *Species_functions[3];
5251 for(ispecie = 0; ispecie < 3; ispecie++) {
5253 if(!Species_functions[ispecie]) {
5254 cout<<
"Purity functions for species: "<<species[ispecie]<<
" not found!!!"<<endl;
5259 for(
int i=0;i<180;i++){
5262 fPurityFunction[i] = (TF2*)Species_functions[ispecie]->FindObject(Form(
"PurityFunction_%d%d",iPbin,iPbin+1));
5263 if(!
fPurityFunction[i]){printf(
"Purity function does not exist");
return;}
5269 Int_t counterForSharedCluster = 0;
5270 for(
int i =0;i<6;i++){
5271 Bool_t sharedITSCluster = track->HasSharedPointOnITSLayer(i);
5274 if(sharedITSCluster == 1) counterForSharedCluster++;
5278 return counterForSharedCluster;
5285 if(track->GetNcls(0) == 0)
return 999.;
5286 Double_t chi2perClusterITS = track->GetITSchi2()/track->GetNcls(0);
5292 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
Bool_t fRequireKinkDaughters
static const char * PIDsourceName(PIDsource s)
void SetAcceptKinkDaughters(Bool_t a)
Bool_t fAllowTOFmismatchFlag
Bool_t PassesTOFbetaCut(const AliESDtrack *track)
Double_t fParticleProbability
Bool_t PassesVZEROcuts(Int_t id)
Bool_t fCutRejectElectronsWithTPCpid
void SetEvent(AliVEvent *event, AliMCEvent *mcEvent=NULL)
void SetWeight(Double_t weight)
Float_t GetMaxDCAToVertexXY() const
Bool_t fCutMChasTrackReferences
virtual ~AliFlowTrackCuts()
Float_t GetMaxDCAToVertexZ() const