26 #include <TDatabasePDG.h> 35 #include "TProfile2D.h" 36 #include "TProfile3D.h" 41 #include "AliAnalysisTask.h" 42 #include "AliAnalysisManager.h" 43 #include "AliAODInputHandler.h" 44 #include "AliAnalysisUtils.h" 45 #include "AliMultSelection.h" 46 #include "AliPIDResponse.h" 47 #include "AliPIDCombined.h" 50 #include "AliAODEvent.h" 51 #include "AliESDEvent.h" 52 #include "AliAODTrack.h" 54 #include "AliVTrack.h" 55 #include "AliESDpid.h" 82 fPDGMassPion(TDatabasePDG::Instance()->GetParticle(211)->Mass()),
83 fPDGMassKaon(TDatabasePDG::Instance()->GetParticle(321)->Mass()),
84 fPDGMassProton(TDatabasePDG::Instance()->GetParticle(2212)->Mass()),
287 fPDGMassPion(TDatabasePDG::Instance()->GetParticle(211)->Mass()),
288 fPDGMassKaon(TDatabasePDG::Instance()->GetParticle(321)->Mass()),
289 fPDGMassProton(TDatabasePDG::Instance()->GetParticle(2212)->Mass()),
481 fFlowVecPpos[iHarm][iPower][iPt] = TComplex(0,0,kFALSE);
482 fFlowVecPneg[iHarm][iPower][iPt] = TComplex(0,0,kFALSE);
483 fFlowVecS[iHarm][iPower][iPt] = TComplex(0,0,kFALSE);
599 DefineInput(0, TChain::Class());
600 DefineOutput(1, TList::Class());
601 DefineOutput(2, TList::Class());
602 DefineOutput(3, TList::Class());
603 DefineOutput(4, TList::Class());
604 DefineOutput(5, TList::Class());
605 DefineOutput(6, TList::Class());
606 DefineOutput(7, TList::Class());
685 const Short_t iEventCounterBins = 11;
686 TString sEventCounterLabel[iEventCounterBins] = {
"Input",
"Physics selection OK",
"Centr. Est. Consis. OK",
"PV OK",
"SPD Vtx OK",
"Pileup MV OK",
"Out-of-bunch Pileup OK",
"Vtx Consis. OK",
"PV #it{z} OK",
"ESD TPC Mult. Diff. OK",
"Selected"};
687 fhEventCounter =
new TH1D(
"fhEventCounter",
"Event Counter",iEventCounterBins,0,iEventCounterBins);
688 for(
Short_t i(0); i < iEventCounterBins; i++)
fhEventCounter->GetXaxis()->SetBinLabel(i+1, sEventCounterLabel[i].
Data() );
695 fh3BeforeNUAWeightsRefs =
new TH3D(
"fh3BeforeNUAWeightsRefs",
"Weights: Refs; #varphi; #eta; Prim. vtx_{z} (cm)", 100,0,TMath::TwoPi(), 151,-1.5,1.5, 20, -10,10);
698 fh3BeforeNUAWeightsCharged =
new TH3D(
"fh3BeforeNUAWeightsCharged",
"Weights: Charged; #varphi; #eta; Prim. vtx_{z} (cm)", 100,0,TMath::TwoPi(), 151,-1.5,1.5,20, -10,10);
701 fh3BeforeNUAWeightsPion =
new TH3D(
"fh3BeforeNUAWeightsPion",
"Weights: #pi; #varphi; #eta; Prim. vtx_{z} (cm)", 100,0,TMath::TwoPi(), 151,-1.5,1.5,20, -10,10);
704 fh3BeforeNUAWeightsKaon =
new TH3D(
"fh3BeforeNUAWeightsKaon",
"Weights: K; #varphi; #eta; Prim. vtx_{z} (cm)", 100,0,TMath::TwoPi(), 151,-1.5,1.5,20, -10,10);
707 fh3BeforeNUAWeightsProton =
new TH3D(
"fh3BeforeNUAWeightsProton",
"Weights: p; #varphi; #eta; Prim. vtx_{z} (cm)", 100,0,TMath::TwoPi(), 151,-1.5,1.5,20, -10,10);
730 fh3AfterNUAWeightsRefs =
new TH3D(
"fh3AfterNUAWeightsRefs",
"Weights: Refs; #varphi; #eta; Prim. vtx_{z} (cm)", 100,0,TMath::TwoPi(), 151,-1.5,1.5, 20, -10,10);
733 fh3AfterNUAWeightsCharged =
new TH3D(
"fh3AfterNUAWeightsCharged",
"Weights: Charged; #varphi; #eta; Prim. vtx_{z} (cm)", 100,0,TMath::TwoPi(), 151,-1.5,1.5,20, -10,10);
736 fh3AfterNUAWeightsPion =
new TH3D(
"fh3AfterNUAWeightsPion",
"Weights: #pi; #varphi; #eta; Prim. vtx_{z} (cm)", 100,0,TMath::TwoPi(), 151,-1.5,1.5,20, -10,10);
739 fh3AfterNUAWeightsKaon =
new TH3D(
"fh3AfterNUAWeightsKaon",
"Weights: K; #varphi; #eta; Prim. vtx_{z} (cm)", 100,0,TMath::TwoPi(), 151,-1.5,1.5,20, -10,10);
742 fh3AfterNUAWeightsProton =
new TH3D(
"fh3AfterNUAWeightsProton",
"Weights: p; #varphi; #eta; Prim. vtx_{z} (cm)", 100,0,TMath::TwoPi(), 151,-1.5,1.5,20, -10,10);
787 fpMixedChargedCor3Pos[iGap][iMixedHarm] =
new TProfile2D(Form(
"fp2Charged_<3>_MixedHarm%d_gap%02.2g_Pos",
fMixedHarmonics[iMixedHarm],10*
fEtaGap[iGap]),Form(
"Charged: <<3'>> | Gap %g | v%d | POIs pos; centrality/multiplicity; #it{p}_{T} (GeV/c)",
fEtaGap[iGap],
fMixedHarmonics[iMixedHarm]),
fFlowCentNumBins,
fFlowCentMin,
fFlowCentMax,
fFlowPOIsPtNumBins,
fFlowPOIsPtMin,
fFlowPOIsPtMax);
791 fpMixedChargedCor3Neg[iGap][iMixedHarm] =
new TProfile2D(Form(
"fp2Charged_<3>_MixedHarm%d_gap%02.2g_Neg",
fMixedHarmonics[iMixedHarm],10*
fEtaGap[iGap]),Form(
"Charged: <<3'>> | Gap %g | v%d | POIs neg; centrality/multiplicity; #it{p}_{T} (GeV/c)",
fEtaGap[iGap],
fMixedHarmonics[iMixedHarm]),
fFlowCentNumBins,
fFlowCentMin,
fFlowCentMax,
fFlowPOIsPtNumBins,
fFlowPOIsPtMin,
fFlowPOIsPtMax);
796 fpMixedChargedCor4Pos[iGap] =
new TProfile2D(Form(
"fp2Charged_<4>_MixedHarm%d_gap%02.2g_Pos",
fMixedHarmonics[iMixedHarm],10*
fEtaGap[iGap]),Form(
"Charged: <<4'>> | Gap %g | v%d | POIs pos; centrality/multiplicity; #it{p}_{T} (GeV/c)",
fEtaGap[iGap],
fMixedHarmonics[iMixedHarm]),
fFlowCentNumBins,
fFlowCentMin,
fFlowCentMax,
fFlowPOIsPtNumBins,
fFlowPOIsPtMin,
fFlowPOIsPtMax);
800 fpMixedChargedCor4Neg[iGap] =
new TProfile2D(Form(
"fp2Charged_<4>_MixedHarm%d_gap%02.2g_Neg",
fMixedHarmonics[iMixedHarm],10*
fEtaGap[iGap]),Form(
"Charged: <<4'>> | Gap %g | v%d | POIs neg; centrality/multiplicity; #it{p}_{T} (GeV/c)",
fEtaGap[iGap],
fMixedHarmonics[iMixedHarm]),
fFlowCentNumBins,
fFlowCentMin,
fFlowCentMax,
fFlowPOIsPtNumBins,
fFlowPOIsPtMin,
fFlowPOIsPtMax);
807 fpMixedPionCor3Pos[iGap][iMixedHarm] =
new TProfile2D(Form(
"fp2Pion_<3>_MixedHarm%d_gap%02.2g_Pos",
fMixedHarmonics[iMixedHarm],10*
fEtaGap[iGap]),Form(
"Pion: <<3'>> | Gap %g | v%d | POIs pos; centrality/multiplicity; #it{p}_{T} (GeV/c)",
fEtaGap[iGap],
fMixedHarmonics[iMixedHarm]),
fFlowCentNumBins,
fFlowCentMin,
fFlowCentMax,
fFlowPOIsPtNumBins,
fFlowPOIsPtMin,
fFlowPOIsPtMax);
811 fpMixedPionCor3Neg[iGap][iMixedHarm] =
new TProfile2D(Form(
"fp2Pion_<3>_MixedHarm%d_gap%02.2g_Neg",
fMixedHarmonics[iMixedHarm],10*
fEtaGap[iGap]),Form(
"Pion: <<3'>> | Gap %g | v%d | POIs neg; centrality/multiplicity; #it{p}_{T} (GeV/c)",
fEtaGap[iGap],
fMixedHarmonics[iMixedHarm]),
fFlowCentNumBins,
fFlowCentMin,
fFlowCentMax,
fFlowPOIsPtNumBins,
fFlowPOIsPtMin,
fFlowPOIsPtMax);
815 fpMixedKaonCor3Pos[iGap][iMixedHarm] =
new TProfile2D(Form(
"fp2Kaon_<3>_MixedHarm%d_gap%02.2g_Pos",
fMixedHarmonics[iMixedHarm],10*
fEtaGap[iGap]),Form(
"Pion: <<3'>> | Gap %g | v%d | POIs pos; centrality/multiplicity; #it{p}_{T} (GeV/c)",
fEtaGap[iGap],
fMixedHarmonics[iMixedHarm]),
fFlowCentNumBins,
fFlowCentMin,
fFlowCentMax,
fFlowPOIsPtNumBins,
fFlowPOIsPtMin,
fFlowPOIsPtMax);
819 fpMixedKaonCor3Neg[iGap][iMixedHarm] =
new TProfile2D(Form(
"fp2Kaon_<3>_MixedHarm%d_gap%02.2g_Neg",
fMixedHarmonics[iMixedHarm],10*
fEtaGap[iGap]),Form(
"Kaon: <<3'>> | Gap %g | v%d | POIs neg; centrality/multiplicity; #it{p}_{T} (GeV/c)",
fEtaGap[iGap],
fMixedHarmonics[iMixedHarm]),
fFlowCentNumBins,
fFlowCentMin,
fFlowCentMax,
fFlowPOIsPtNumBins,
fFlowPOIsPtMin,
fFlowPOIsPtMax);
823 fpMixedProtonCor3Pos[iGap][iMixedHarm] =
new TProfile2D(Form(
"fp2Proton_<3>_MixedHarm%d_gap%02.2g_Pos",
fMixedHarmonics[iMixedHarm],10*
fEtaGap[iGap]),Form(
"Proton: <<3'>> | Gap %g | v%d | POIs pos; centrality/multiplicity; #it{p}_{T} (GeV/c)",
fEtaGap[iGap],
fMixedHarmonics[iMixedHarm]),
fFlowCentNumBins,
fFlowCentMin,
fFlowCentMax,
fFlowPOIsPtNumBins,
fFlowPOIsPtMin,
fFlowPOIsPtMax);
827 fpMixedProtonCor3Neg[iGap][iMixedHarm] =
new TProfile2D(Form(
"fp2Proton_<3>_MixedHarm%d_gap%02.2g_Neg",
fMixedHarmonics[iMixedHarm],10*
fEtaGap[iGap]),Form(
"Proton: <<3'>> | Gap %g | v%d | POIs neg; centrality/multiplicity; #it{p}_{T} (GeV/c)",
fEtaGap[iGap],
fMixedHarmonics[iMixedHarm]),
fFlowCentNumBins,
fFlowCentMin,
fFlowCentMax,
fFlowPOIsPtNumBins,
fFlowPOIsPtMin,
fFlowPOIsPtMax);
832 fpMixedPionCor4Pos[iGap] =
new TProfile2D(Form(
"fp2Pion_<4>_MixedHarm%d_gap%02.2g_Pos",
fMixedHarmonics[iMixedHarm],10*
fEtaGap[iGap]),Form(
"Pion: <<4'>> | Gap %g | v%d | POIs pos; centrality/multiplicity; #it{p}_{T} (GeV/c)",
fEtaGap[iGap],
fMixedHarmonics[iMixedHarm]),
fFlowCentNumBins,
fFlowCentMin,
fFlowCentMax,
fFlowPOIsPtNumBins,
fFlowPOIsPtMin,
fFlowPOIsPtMax);
836 fpMixedPionCor4Neg[iGap] =
new TProfile2D(Form(
"fp2Pion_<4>_MixedHarm%d_gap%02.2g_Neg",
fMixedHarmonics[iMixedHarm],10*
fEtaGap[iGap]),Form(
"Pion: <<4'>> | Gap %g | v%d | POIs neg; centrality/multiplicity; #it{p}_{T} (GeV/c)",
fEtaGap[iGap],
fMixedHarmonics[iMixedHarm]),
fFlowCentNumBins,
fFlowCentMin,
fFlowCentMax,
fFlowPOIsPtNumBins,
fFlowPOIsPtMin,
fFlowPOIsPtMax);
840 fpMixedKaonCor4Pos[iGap] =
new TProfile2D(Form(
"fp2Kaon_<4>_MixedHarm%d_gap%02.2g_Pos",
fMixedHarmonics[iMixedHarm],10*
fEtaGap[iGap]),Form(
"Kaon: <<4'>> | Gap %g | v%d | POIs pos; centrality/multiplicity; #it{p}_{T} (GeV/c)",
fEtaGap[iGap],
fMixedHarmonics[iMixedHarm]),
fFlowCentNumBins,
fFlowCentMin,
fFlowCentMax,
fFlowPOIsPtNumBins,
fFlowPOIsPtMin,
fFlowPOIsPtMax);
844 fpMixedKaonCor4Neg[iGap] =
new TProfile2D(Form(
"fp2Kaon_<4>_MixedHarm%d_gap%02.2g_Neg",
fMixedHarmonics[iMixedHarm],10*
fEtaGap[iGap]),Form(
"Kaon: <<4'>> | Gap %g | v%d | POIs neg; centrality/multiplicity; #it{p}_{T} (GeV/c)",
fEtaGap[iGap],
fMixedHarmonics[iMixedHarm]),
fFlowCentNumBins,
fFlowCentMin,
fFlowCentMax,
fFlowPOIsPtNumBins,
fFlowPOIsPtMin,
fFlowPOIsPtMax);
848 fpMixedProtonCor4Pos[iGap] =
new TProfile2D(Form(
"fp2Proton_<4>_MixedHarm%d_gap%02.2g_Pos",
fMixedHarmonics[iMixedHarm],10*
fEtaGap[iGap]),Form(
"Proton: <<4'>> | Gap %g | v%d | POIs pos; centrality/multiplicity; #it{p}_{T} (GeV/c)",
fEtaGap[iGap],
fMixedHarmonics[iMixedHarm]),
fFlowCentNumBins,
fFlowCentMin,
fFlowCentMax,
fFlowPOIsPtNumBins,
fFlowPOIsPtMin,
fFlowPOIsPtMax);
852 fpMixedProtonCor4Neg[iGap] =
new TProfile2D(Form(
"fp2Proton_<4>_MixedHarm%d_gap%02.2g_Neg",
fMixedHarmonics[iMixedHarm],10*
fEtaGap[iGap]),Form(
"Proton: <<4'>> | Gap %g | v%d | POIs neg; centrality/multiplicity; #it{p}_{T} (GeV/c)",
fEtaGap[iGap],
fMixedHarmonics[iMixedHarm]),
fFlowCentNumBins,
fFlowCentMin,
fFlowCentMax,
fFlowPOIsPtNumBins,
fFlowPOIsPtMin,
fFlowPOIsPtMax);
873 fp2ChargedCor2Pos[iGap][iHarm] =
new TProfile2D(Form(
"fp2Charged_<2>_harm%d_gap%02.2g_Pos",
fHarmonics[iHarm],10*
fEtaGap[iGap]),Form(
"Charged: <<2'>> | Gap %g | n=%d | POIs pos; centrality/multiplicity; #it{p}_{T} (GeV/c)",
fEtaGap[iGap],
fHarmonics[iHarm]),
fFlowCentNumBins,
fFlowCentMin,
fFlowCentMax,
fFlowPOIsPtNumBins,
fFlowPOIsPtMin,
fFlowPOIsPtMax);
878 fp2ChargedCor2Neg[iGap][iHarm] =
new TProfile2D(Form(
"fp2Charged_<2>_harm%d_gap%02.2g_Neg",
fHarmonics[iHarm],10*
fEtaGap[iGap]),Form(
"Charged: <<2'>> | Gap %g | n=%d | POIs neg; centrality/multiplicity; #it{p}_{T} (GeV/c)",
fEtaGap[iGap],
fHarmonics[iHarm]),
fFlowCentNumBins,
fFlowCentMin,
fFlowCentMax,
fFlowPOIsPtNumBins,
fFlowPOIsPtMin,
fFlowPOIsPtMax);
886 fp2PionCor2Pos[iGap][iHarm] =
new TProfile2D(Form(
"fp2Pion_<2>_harm%d_gap%02.2g_Pos",
fHarmonics[iHarm],10*
fEtaGap[iGap]),Form(
"PID #pi: <<2'>> | Gap %g | n=%d | POIs pos; centrality/multiplicity; #it{p}_{T} (GeV/c)",
fEtaGap[iGap],
fHarmonics[iHarm]),
fFlowCentNumBins,
fFlowCentMin,
fFlowCentMax,
fFlowPOIsPtNumBins,
fFlowPOIsPtMin,
fFlowPOIsPtMax);
890 fp2KaonCor2Pos[iGap][iHarm] =
new TProfile2D(Form(
"fp2Kaon_<2>_harm%d_gap%02.2g_Pos",
fHarmonics[iHarm],10*
fEtaGap[iGap]),Form(
"PID K: <<2'>> | Gap %g | n=%d | POIs pos; centrality/multiplicity; #it{p}_{T} (GeV/c)",
fEtaGap[iGap],
fHarmonics[iHarm]),
fFlowCentNumBins,
fFlowCentMin,
fFlowCentMax,
fFlowPOIsPtNumBins,
fFlowPOIsPtMin,
fFlowPOIsPtMax);
894 fp2ProtonCor2Pos[iGap][iHarm] =
new TProfile2D(Form(
"fp2Proton_<2>_harm%d_gap%02.2g_Pos",
fHarmonics[iHarm],10*
fEtaGap[iGap]),Form(
"PID p: <<2'>> | Gap %g | n=%d | POIs pos; centrality/multiplicity; #it{p}_{T} (GeV/c)",
fEtaGap[iGap],
fHarmonics[iHarm]),
fFlowCentNumBins,
fFlowCentMin,
fFlowCentMax,
fFlowPOIsPtNumBins,
fFlowPOIsPtMin,
fFlowPOIsPtMax);
898 fp2PionCor2Neg[iGap][iHarm] =
new TProfile2D(Form(
"fp2Pion_<2>_harm%d_gap%02.2g_Neg",
fHarmonics[iHarm],10*
fEtaGap[iGap]),Form(
"PID #pi: <<2'>> | Gap %g | n=%d | POIs neg; centrality/multiplicity; #it{p}_{T} (GeV/c)",
fEtaGap[iGap],
fHarmonics[iHarm]),
fFlowCentNumBins,
fFlowCentMin,
fFlowCentMax,
fFlowPOIsPtNumBins,
fFlowPOIsPtMin,
fFlowPOIsPtMax);
902 fp2KaonCor2Neg[iGap][iHarm] =
new TProfile2D(Form(
"fp2Kaon_<2>_harm%d_gap%02.2g_Neg",
fHarmonics[iHarm],10*
fEtaGap[iGap]),Form(
"PID K: <<2'>> | Gap %g | n=%d | POIs neg; centrality/multiplicity; #it{p}_{T} (GeV/c)",
fEtaGap[iGap],
fHarmonics[iHarm]),
fFlowCentNumBins,
fFlowCentMin,
fFlowCentMax,
fFlowPOIsPtNumBins,
fFlowPOIsPtMin,
fFlowPOIsPtMax);
906 fp2ProtonCor2Neg[iGap][iHarm] =
new TProfile2D(Form(
"fp2Proton_<2>_harm%d_gap%02.2g_Neg",
fHarmonics[iHarm],10*
fEtaGap[iGap]),Form(
"PID p: <<2'>> | Gap %g | n=%d | POIs neg; centrality/multiplicity; #it{p}_{T} (GeV/c)",
fEtaGap[iGap],
fHarmonics[iHarm]),
fFlowCentNumBins,
fFlowCentMin,
fFlowCentMax,
fFlowPOIsPtNumBins,
fFlowPOIsPtMin,
fFlowPOIsPtMax);
926 TString sChargedCounterLabel[] = {
"Input",
"FB",
"#TPC-Cls",
"TPC-Chi2",
"DCA-z",
"DCA-xy",
"Eta",
"Selected"};
927 const Short_t iNBinsChargedCounter =
sizeof(sChargedCounterLabel)/
sizeof(sChargedCounterLabel[0]);
928 fhChargedCounter =
new TH1D(
"fhChargedCounter",
"Charged tracks: Counter",iNBinsChargedCounter,0,iNBinsChargedCounter);
969 fh2PIDPionTPCdEdx =
new TH2D(
"fh2PIDPionTPCdEdx",
"PID: #pi: TPC dE/dx; #it{p} (GeV/#it{c}); TPC dE/dx", 200,0,20, 131,-10,1000);
971 fh2PIDPionTOFbeta =
new TH2D(
"fh2PIDPionTOFbeta",
"PID: #pi: TOF #beta; #it{p} (GeV/#it{c});TOF #beta", 200,0,20, 101,-0.1,1.5);
973 fh2PIDKaonTPCdEdx =
new TH2D(
"fh2PIDKaonTPCdEdx",
"PID: K: TPC dE/dx; #it{p} (GeV/#it{c}); TPC dE/dx", 200,0,20, 131,-10,1000);
975 fh2PIDKaonTOFbeta =
new TH2D(
"fh2PIDKaonTOFbeta",
"PID: K: TOF #beta; #it{p} (GeV/#it{c});TOF #beta", 200,0,20, 101,-0.1,1.5);
977 fh2PIDProtonTPCdEdx =
new TH2D(
"fh2PIDProtonTPCdEdx",
"PID: p: TPC dE/dx; #it{p} (GeV/#it{c}); TPC dE/dx", 200,0,20, 131,-10,1000);
979 fh2PIDProtonTOFbeta =
new TH2D(
"fh2PIDProtonTOFbeta",
"PID: p: TOF #beta; #it{p} (GeV/#it{c});TOF #beta", 200,0,20, 101,-0.1,1.5);
981 fh2PIDPionTPCnSigmaPion =
new TH2D(
"fh2PIDPionTPCnSigmaPion",
"PID: #pi: TPC n#sigma (#pi hyp.); #it{p}_{T} (GeV/#it{c}); TPC n#sigma", 200,0,20, 42,-11,10);
983 fh2PIDPionTOFnSigmaPion =
new TH2D(
"fh2PIDPionTOFnSigmaPion",
"PID: #pi: TOF n#sigma (#pi hyp.); #it{p}_{T} (GeV/#it{c}); TOF n#sigma", 200,0,20, 42,-11,10);
985 fh2PIDPionTPCnSigmaKaon =
new TH2D(
"fh2PIDPionTPCnSigmaKaon",
"PID: #pi: TPC n#sigma (K hyp.); #it{p}_{T} (GeV/#it{c}); TPC n#sigma", 200,0,20, 42,-11,10);
987 fh2PIDPionTOFnSigmaKaon =
new TH2D(
"fh2PIDPionTOFnSigmaKaon",
"PID: #pi: TOF n#sigma (K hyp.); #it{p}_{T} (GeV/#it{c}); TOF n#sigma", 200,0,20, 42,-11,10);
989 fh2PIDPionTPCnSigmaProton =
new TH2D(
"fh2PIDPionTPCnSigmaProton",
"PID: #pi: TPC n#sigma (p hyp.); #it{p}_{T} (GeV/#it{c}); TPC n#sigma", 200,0,20, 42,-11,10);
991 fh2PIDPionTOFnSigmaProton =
new TH2D(
"fh2PIDPionTOFnSigmaProton",
"PID: #pi: TOF n#sigma (p hyp.); #it{p}_{T} (GeV/#it{c}); TOF n#sigma", 200,0,20, 42,-11,10);
993 fh2PIDKaonTPCnSigmaPion =
new TH2D(
"fh2PIDKaonTPCnSigmaPion",
"PID: K: TPC n#sigma (#pi hyp.); #it{p}_{T} (GeV/#it{c}); TPC n#sigma", 200,0,20, 42,-11,10);
995 fh2PIDKaonTOFnSigmaPion =
new TH2D(
"fh2PIDKaonTOFnSigmaPion",
"PID: K: TOF n#sigma (#pi hyp.); #it{p}_{T} (GeV/#it{c}); TOF n#sigma", 200,0,20, 42,-11,10);
997 fh2PIDKaonTPCnSigmaKaon =
new TH2D(
"fh2PIDKaonTPCnSigmaKaon",
"PID: K: TPC n#sigma (K hyp.); #it{p}_{T} (GeV/#it{c}); TPC n#sigma", 200,0,20, 42,-11,10);
999 fh2PIDKaonTOFnSigmaKaon =
new TH2D(
"fh2PIDKaonTOFnSigmaKaon",
"PID: K: TOF n#sigma (K hyp.); #it{p}_{T} (GeV/#it{c}); TOF n#sigma", 200,0,20, 42,-11,10);
1001 fh2PIDKaonTPCnSigmaProton =
new TH2D(
"fh2PIDKaonTPCnSigmaProton",
"PID: K: TPC n#sigma (p hyp.); #it{p}_{T} (GeV/#it{c}); TPC n#sigma", 200,0,20, 42,-11,10);
1003 fh2PIDKaonTOFnSigmaProton =
new TH2D(
"fh2PIDKaonTOFnSigmaProton",
"PID: K: TOF n#sigma (p hyp.); #it{p}_{T} (GeV/#it{c}); TOF n#sigma", 200,0,20, 42,-11,10);
1005 fh2PIDProtonTPCnSigmaPion =
new TH2D(
"fh2PIDProtonTPCnSigmaPion",
"PID: p: TPC n#sigma (#pi hyp.); #it{p}_{T} (GeV/#it{c}); TPC n#sigma", 200,0,20, 42,-11,10);
1007 fh2PIDProtonTOFnSigmaPion =
new TH2D(
"fh2PIDProtonTOFnSigmaPion",
"PID: p: TOF n#sigma (#pi hyp.); #it{p}_{T} (GeV/#it{c}); TOF n#sigma", 200,0,20, 42,-11,10);
1009 fh2PIDProtonTPCnSigmaKaon =
new TH2D(
"fh2PIDProtonTPCnSigmaKaon",
"PID: p: TPC n#sigma (K hyp.); #it{p}_{T} (GeV/#it{c}); TPC n#sigma", 200,0,20, 42,-11,10);
1011 fh2PIDProtonTOFnSigmaKaon =
new TH2D(
"fh2PIDProtonTOFnSigmaKaon",
"PID: p: TOF n#sigma (K hyp.); #it{p}_{T} (GeV/#it{c}); TOF n#sigma", 200,0,20, 42,-11,10);
1013 fh2PIDProtonTPCnSigmaProton =
new TH2D(
"fh2PIDProtonTPCnSigmaProton",
"PID: p: TPC n#sigma (p hyp.); #it{p}_{T} (GeV/#it{c}); TPC n#sigma", 200,0,20, 42,-11,10);
1015 fh2PIDProtonTOFnSigmaProton =
new TH2D(
"fh2PIDProtonTOFnSigmaProton",
"PID: p: TOF n#sigma (p hyp.); #it{p}_{T} (GeV/#it{c}); TOF n#sigma", 200,0,20, 42,-11,10);
1021 const Short_t iNBinsPIDstatus = 4;
1022 TString sPIDstatus[iNBinsPIDstatus] = {
"kDetNoSignal",
"kDetPidOk",
"kDetMismatch",
"kDetNoParams"};
1023 const Short_t iNFilterMapBinBins = 32;
1032 fhQAEventsPVz[iQA] =
new TH1D(Form(
"fhQAEventsPVz_%s",sQAindex[iQA].
Data()),
"QA Events: PV-#it{z}", 101,-50,50);
1034 fhQAEventsNumContrPV[iQA] =
new TH1D(Form(
"fhQAEventsNumContrPV_%s",sQAindex[iQA].
Data()),
"QA Events: Number of contributors to AOD PV", 20,0,20);
1040 fhQAEventsSPDresol[iQA] =
new TH1D(Form(
"fhQAEventsSPDresol_%s",sQAindex[iQA].
Data()),
"QA Events: SPD resolution", 150,0,15);
1043 fhQAEventsCentralityOutliers[iQA] =
new TH2D(Form(
"fhQAEventsCentralityOutliers_%s",sQAindex[iQA].
Data()),
"QA Events: Centrality distribution; centrality percentile (V0M);centrality percentile (CL1)",100,0,100,100,0,100);
1046 fhQAEventsPileUp[iQA] =
new TH2D(Form(
"fhQAEventsPileUp_%s",sQAindex[iQA].
Data()),
"QA Events: TPC vs. ESD multiplicity; TPC multiplicity; ESD multiplicity",500,0,6000,500,0,6000);
1048 fhEventsMultTOFFilterbit32[iQA] =
new TH2D(Form(
"fhEventsMultTOFFilterbit32_%s",sQAindex[iQA].
Data()),
"filterbit32 vs. TOF multiplicity; multiplicity(fb32);multiplicity(fb32+TOF)", 4000,0,4000,2000,0,2000);
1053 fhQAChargedMult[iQA] =
new TH1D(Form(
"fhQAChargedMult_%s",sQAindex[iQA].
Data()),
"QA Charged: Number of Charged in selected events; #it{N}^{Charged}", 1500,0,1500);
1055 fhQAChargedCharge[iQA] =
new TH1D(Form(
"fhQAChargedCharge_%s",sQAindex[iQA].
Data()),
"QA Charged: Track charge; charge;", 3,-1.5,1.5);
1057 fhQAChargedPt[iQA] =
new TH1D(Form(
"fhQAChargedPt_%s",sQAindex[iQA].
Data()),
"QA Charged: Track #it{p}_{T}; #it{p}_{T} (GeV/#it{c})", 300,0.,30.);
1059 fhQAChargedEta[iQA] =
new TH1D(Form(
"fhQAChargedEta_%s",sQAindex[iQA].
Data()),
"QA Charged: Track #it{#eta}; #it{#eta}", 151,-1.5,1.5);
1061 fhQAChargedPhi[iQA] =
new TH1D(Form(
"fhQAChargedPhi_%s",sQAindex[iQA].
Data()),
"QA Charged: Track #it{#varphi}; #it{#varphi}", 100,0.,TMath::TwoPi());
1063 fhQAChargedFilterBit[iQA] =
new TH1D(Form(
"fhQAChargedFilterBit_%s",sQAindex[iQA].
Data()),
"QA Charged: Filter bit",iNFilterMapBinBins,0,iNFilterMapBinBins);
1064 for(
Int_t j = 0x0; j < iNFilterMapBinBins; j++)
fhQAChargedFilterBit[iQA]->GetXaxis()->SetBinLabel(j+1, Form(
"%g",TMath::Power(2,j)));
1066 fhQAChargedNumTPCcls[iQA] =
new TH1D(Form(
"fhQAChargedNumTPCcls_%s",sQAindex[iQA].
Data()),
"QA Charged: Track number of TPC clusters; #it{N}^{TPC clusters}", 160,0,160);
1068 fhQAChargedDCAxy[iQA] =
new TH1D(Form(
"fhQAChargedDCAxy_%s",sQAindex[iQA].
Data()),
"QA Charged: Track DCA-xy; DCA_{#it{xy}} (cm)", 100,0.,10);
1070 fhQAChargedDCAz[iQA] =
new TH1D(Form(
"fhQAChargedDCAz_%s",sQAindex[iQA].
Data()),
"QA Charged: Track DCA-z; DCA_{#it{z}} (cm)", 200,-10.,10.);
1077 fhQAPIDTPCstatus[iQA] =
new TH1D(Form(
"fhQAPIDTPCstatus_%s",sQAindex[iQA].
Data()),
"QA PID: PID status: TPC;", iNBinsPIDstatus,0,iNBinsPIDstatus);
1079 fhQAPIDTPCdEdx[iQA] =
new TH2D(Form(
"fhQAPIDTPCdEdx_%s",sQAindex[iQA].
Data()),
"QA PID: TPC PID information; #it{p} (GeV/#it{c}); TPC dEdx (au)", 100,0,10, 131,-10,1000);
1081 fhQAPIDTOFstatus[iQA] =
new TH1D(Form(
"fhQAPIDTOFstatus_%s",sQAindex[iQA].
Data()),
"QA PID: PID status: TOF;", iNBinsPIDstatus,0,iNBinsPIDstatus);
1083 fhQAPIDTOFbeta[iQA] =
new TH2D(Form(
"fhQAPIDTOFbeta_%s",sQAindex[iQA].
Data()),
"QA PID: TOF #beta information; #it{p} (GeV/#it{c}); TOF #beta", 100,0,10, 101,-0.1,1.5);
1086 fh3PIDPionTPCTOFnSigmaPion[iQA] =
new TH3D(Form(
"fh3PIDPionTPCTOFnSigmaPion_%s",sQAindex[iQA].
Data()),
"QA PID: #pi: TPC-TOF n#sigma (#pi hyp.); n#sigma^{TPC}; n#sigma^{TOF}; #it{p}_{T}", 22,-11,10, 22,-11,10, 100,0,10);
1088 fh3PIDPionTPCTOFnSigmaKaon[iQA] =
new TH3D(Form(
"fh3PIDPionTPCTOFnSigmaKaon_%s",sQAindex[iQA].
Data()),
"QA PID: #pi: TPC-TOF n#sigma (K hyp.); n#sigma^{TPC}; n#sigma^{TOF}; #it{p}_{T}", 22,-11,10, 22,-11,10, 100,0,10);
1090 fh3PIDPionTPCTOFnSigmaProton[iQA] =
new TH3D(Form(
"fh3PIDPionTPCTOFnSigmaProton_%s",sQAindex[iQA].
Data()),
"QA PID: #pi: TPC-TOF n#sigma (p hyp.); n#sigma^{TPC}; n#sigma^{TOF}; #it{p}_{T}", 22,-11,10, 22,-11,10, 100,0,10);
1093 fh3PIDKaonTPCTOFnSigmaPion[iQA] =
new TH3D(Form(
"fh3PIDKaonTPCTOFnSigmaPion_%s",sQAindex[iQA].
Data()),
"QA PID: K: TPC-TOF n#sigma (#pi hyp.); n#sigma^{TPC}; n#sigma^{TOF}; #it{p}_{T}", 22,-11,10, 22,-11,10, 100,0,10);
1095 fh3PIDKaonTPCTOFnSigmaKaon[iQA] =
new TH3D(Form(
"fh3PIDKaonTPCTOFnSigmaKaon_%s",sQAindex[iQA].
Data()),
"QA PID: K: TPC-TOF n#sigma (K hyp.); n#sigma^{TPC}; n#sigma^{TOF}; #it{p}_{T}", 22,-11,10, 22,-11,10, 100,0,10);
1097 fh3PIDKaonTPCTOFnSigmaProton[iQA] =
new TH3D(Form(
"fh3PIDKaonTPCTOFnSigmaProton_%s",sQAindex[iQA].
Data()),
"QA PID: K: TPC-TOF n#sigma (p hyp.); n#sigma^{TPC}; n#sigma^{TOF}; #it{p}_{T}", 22,-11,10, 22,-11,10, 100,0,10);
1100 fh3PIDProtonTPCTOFnSigmaPion[iQA] =
new TH3D(Form(
"fh3PIDProtonTPCTOFnSigmaPion_%s",sQAindex[iQA].
Data()),
"QA PID: p: TPC-TOF n#sigma (#pi hyp.); n#sigma^{TPC}; n#sigma^{TOF}; #it{p}_{T}", 22,-11,10, 22,-11,10, 100,0,10);
1102 fh3PIDProtonTPCTOFnSigmaKaon[iQA] =
new TH3D(Form(
"fh3PIDProtonTPCTOFnSigmaKaon_%s",sQAindex[iQA].
Data()),
"QA PID: p: TPC-TOF n#sigma (K hyp.); n#sigma^{TPC}; n#sigma^{TOF}; #it{p}_{T}", 22,-11,10, 22,-11,10, 100,0,10);
1104 fh3PIDProtonTPCTOFnSigmaProton[iQA] =
new TH3D(Form(
"fh3PIDProtonTPCTOFnSigmaProton_%s",sQAindex[iQA].
Data()),
"QA PID: p: TPC-TOF n#sigma (p hyp.); n#sigma^{TPC}; n#sigma^{TOF}; #it{p}_{T}", 22,-11,10, 22,-11,10, 100,0,10);
1109 for(
Int_t j = 0x0; j < iNBinsPIDstatus; j++)
1134 printf(
"\n======= List of parameters ========================================\n");
1135 printf(
" -------- Analysis task ---------------------------------------\n");
1136 printf(
" fRunMode: (RunMode) %d\n",
fRunMode);
1137 printf(
" fAnalType: (AnalType) %d\n",
fAnalType);
1138 printf(
" fFillQA: (Bool_t) %s\n",
fFillQA ?
"kTRUE" :
"kFALSE");
1139 printf(
" fProcessCharged: (Bool_t) %s\n",
fProcessCharged ?
"kTRUE" :
"kFALSE");
1140 printf(
" fProcessPID: (Bool_t) %s\n",
fProcessPID ?
"kTRUE" :
"kFALSE");
1141 printf(
" -------- Flow related ----------------------------------------\n");
1145 printf(
" fFlowPOIsPtMin: (Float_t) %g (GeV/c)\n",
fFlowPOIsPtMin);
1146 printf(
" fFlowPOIsPtMax: (Float_t) %g (GeV/c)\n",
fFlowPOIsPtMax);
1148 printf(
" fFlowCentMin: (Int_t) %d (GeV/c)\n",
fFlowCentMin);
1149 printf(
" fFlowCentMax: (Int_t) %d (GeV/c)\n",
fFlowCentMax);
1150 printf(
" fFlowUseNUAWeights: (Bool_t) %s\n",
fFlowUseNUAWeights ?
"kTRUE" :
"kFALSE");
1151 printf(
" fFlowUseNUEWeights: (Bool_t) %s\n",
fFlowUseNUEWeights ?
"kTRUE" :
"kFALSE");
1158 printf(
" -------- Events ----------------------------------------------\n");
1159 printf(
" fTrigger: (Short_t) %d\n",
fTrigger);
1160 printf(
" fMultEstimator: (TString) '%s'\n",
fMultEstimator.Data());
1161 printf(
" fPVtxCutZ: (Double_t) %g (cm)\n",
fPVtxCutZ);
1162 printf(
" fFullCentralityRange: (Bool_t) runs over %s centrality range \n",
fFullCentralityRange ?
"0-100%" :
"50-100%");
1163 printf(
" -------- Charge tracks ---------------------------------------\n");
1171 printf(
" -------- PID (pi,K,p) tracks ---------------------------------\n");
1177 printf(
"=====================================================================\n\n");
1189 printf(
"====== InitializeTask AliAnalysisTaskFlowModes =========================\n");
1193 ::Error(
"InitializeTask",
"Analysis type not specified! Terminating!");
1199 ::Error(
"InitializeTask",
"Analysis type: ESD not implemented! Terminating!");
1205 ::Error(
"InitializeTask",
"Collisional system not specified! Terminating!");
1211 AliInputEventHandler* inputHandler = (AliInputEventHandler*)mgr->GetInputEventHandler();
1215 ::Error(
"InitializeTask",
"AliPIDResponse object not found! Terminating!");
1222 ::Error(
"InitializeTask",
"AliPIDCombined object not found! Terminating!");
1227 fPIDCombined->SetDetectorMask(AliPIDResponse::kDetTPC+AliPIDResponse::kDetTOF);
1230 ::Info(
"InitializeTask",
"Checking task parameters setting conflicts (ranges, etc)");
1233 ::Error(
"InitializeTask",
"Cut: RFPs Pt range wrong!");
1246 ::Error(
"InitializeTask",
"NUA flow weights file not found");
1255 ::Error(
"InitializeTask",
"NUE flow weights file not found");
1260 ::Info(
"InitializeTask",
"Initialization succesfull!");
1261 printf(
"======================================================================\n\n");
1301 Bool_t eventSelected = kFALSE;
1316 return eventSelected;
1329 AliInputEventHandler* inputHandler = (AliInputEventHandler*) mgr->GetInputEventHandler();
1330 UInt_t fSelectMask = inputHandler->IsEventSelected();
1332 Bool_t isTriggerSelected = kFALSE;
1336 isTriggerSelected = fSelectMask& AliVEvent::kINT7;
1340 isTriggerSelected = fSelectMask& AliVEvent::kHighMultV0;
1344 isTriggerSelected = fSelectMask& AliVEvent::kHighMultSPD;
1347 default: isTriggerSelected = kFALSE;
1349 if(!isTriggerSelected){
return kFALSE;}
1356 AliMultSelection* fMultSelection = 0x0;
1357 fMultSelection = (AliMultSelection*)
fEventAOD->FindListObject(
"MultSelection");
1358 Double_t centrV0M = fMultSelection->GetMultiplicityPercentile(
"V0M");
1359 Double_t centrCL1 = fMultSelection->GetMultiplicityPercentile(
"CL1");
1362 if(fabs(centrV0M-centrCL1)>7.5)
return kFALSE;
1367 const AliAODVertex* vtx =
dynamic_cast<const AliAODVertex*
>(
fEventAOD->GetPrimaryVertex());
1368 if(!vtx || vtx->GetNContributors() < 1){
return kFALSE;}
1372 const AliAODVertex* vtxSPD =
dynamic_cast<const AliAODVertex*
>(
fEventAOD->GetPrimaryVertexSPD());
1375 if (((AliAODHeader*)
fEventAOD->GetHeader())->GetRefMultiplicityComb08() < 0)
return kFALSE;
1377 if (
fEventAOD->IsIncompleteDAQ())
return kFALSE;
1379 if (vtx->GetNContributors() < 2 || vtxSPD->GetNContributors()<1)
return kFALSE;
1380 double cov[6]={0};
double covSPD[6]={0};
1381 vtx->GetCovarianceMatrix(cov);
1382 vtxSPD->GetCovarianceMatrix(covSPD);
1385 double zRes = TMath::Sqrt(covSPD[5]);
1386 double fMaxResol=0.25;
1387 if ( vtxSPD->IsFromVertexerZ() && (zRes>fMaxResol))
return kFALSE;
1418 AliAnalysisUtils utils;
1419 utils.SetMinPlpContribMV(5);
1420 utils.SetMaxPlpChi2MV(5);
1421 utils.SetMinWDistMV(15);
1422 utils.SetCheckPlpFromDifferentBCMV(kTRUE);
1426 if(isPileupFromMV)
return kFALSE;
1438 double dz = vtx->GetZ() - vtxSPD->GetZ();
1439 double errTot = TMath::Sqrt(cov[5]+covSPD[5]);
1440 double err = TMath::Sqrt(cov[5]);
1441 double nsigTot = dz/errTot;
1442 double nsig = dz/err;
1443 if (TMath::Abs(dz)>0.2 || TMath::Abs(nsigTot)>10 || TMath::Abs(nsig)>20)
return kFALSE;
1447 const Double_t aodVtxZ = vtx->GetZ();
1448 if( TMath::Abs(aodVtxZ) >
fPVtxCutZ ){
return kFALSE;}
1453 Int_t multEsd = ((AliAODHeader*)
fEventAOD->GetHeader())->GetNumberOfESDTracks();
1456 Int_t multTrkTOF = 0;
1458 for (
Int_t it = 0; it < nTracks; it++) {
1459 AliAODTrack* AODTrk = (AliAODTrack*)
fEventAOD->GetTrack(it);
1460 if (!AODTrk){
delete AODTrk;
continue; }
1461 if (AODTrk->TestFilterBit(128)) {multTPC++;}
1462 if (AODTrk->TestFilterBit(32)){
1464 if ( TMath::Abs(AODTrk->GetTOFsignalDz()) <= 10 && AODTrk->GetTOFsignal() >= 12000 && AODTrk->GetTOFsignal() <= 25000) multTrkTOF++;
1470 Double_t multESDTPCDif = multEsdn - multTPCn*3.38;
1472 if (multESDTPCDif > 15000.)
return kFALSE;
1479 if(
fExtraPileUp && multTrkTOFn< (-32+ 0.32*multTrkn+0.000037*multTrkn*multTrkn))
return kFALSE;
1480 if(
fExtraPileUp && multTrkTOFn> (13+0.46*multTrkn+0.000018*multTrkn*multTrkn))
return kFALSE;
1504 AliInputEventHandler* inputHandler = (AliInputEventHandler*) mgr->GetInputEventHandler();
1505 UInt_t fSelectMask = inputHandler->IsEventSelected();
1507 Bool_t isTriggerSelected = kFALSE;
1511 isTriggerSelected = fSelectMask& AliVEvent::kINT7;
1515 isTriggerSelected = fSelectMask& AliVEvent::kHighMultV0;
1519 isTriggerSelected = fSelectMask& AliVEvent::kHighMultSPD;
1522 default: isTriggerSelected = kFALSE;
1525 if(!isTriggerSelected)
1532 const AliAODVertex* vtx =
dynamic_cast<const AliAODVertex*
>(
fEventAOD->GetPrimaryVertex());
1533 if(!vtx || vtx->GetNContributors() < 1)
1538 const AliAODVertex* vtxSPD =
dynamic_cast<const AliAODVertex*
>(
fEventAOD->GetPrimaryVertexSPD());
1542 vtxSPD->GetCovarianceMatrix(cov);
1543 Double_t zRes = TMath::Sqrt(cov[5]);
1544 if ( vtxSPD->IsFromVertexerZ() && (zRes > dMaxResol))
return kFALSE;
1561 AliAnalysisUtils utils;
1562 utils.SetMinPlpContribMV(5);
1563 utils.SetMaxPlpChi2MV(5);
1564 utils.SetMinWDistMV(15);
1565 utils.SetCheckPlpFromDifferentBCMV(kFALSE);
1567 utils.SetCheckPlpFromDifferentBCMV(kTRUE);
1569 if(isPileupFromMV)
return kFALSE;
1599 const Double_t aodVtxZ = vtx->GetZ();
1615 const AliAODVertex* aodVtx =
fEventAOD->GetPrimaryVertex();
1616 const Double_t dVtxZ = aodVtx->GetZ();
1617 const Int_t iNumContr = aodVtx->GetNContributors();
1618 const AliAODVertex* spdVtx =
fEventAOD->GetPrimaryVertexSPD();
1619 const Int_t iNumContrSPD = spdVtx->GetNContributors();
1620 const Double_t spdVtxZ = spdVtx->GetZ();
1629 spdVtx->GetCovarianceMatrix(cov);
1630 Double_t zRes = TMath::Sqrt(cov[5]);
1633 AliMultSelection* fMultSelection = 0x0;
1634 fMultSelection = (AliMultSelection*)
fEventAOD->FindListObject(
"MultSelection");
1635 Double_t centrV0M = fMultSelection->GetMultiplicityPercentile(
"V0M");
1636 Double_t centrCL1 = fMultSelection->GetMultiplicityPercentile(
"CL1");
1641 Int_t multEsd = ((AliAODHeader*)
fEventAOD->GetHeader())->GetNumberOfESDTracks();
1644 Int_t multTrkTOF = 0;
1645 for (
Int_t it = 0; it < nTracks; it++) {
1646 AliAODTrack* AODTrk = (AliAODTrack*)
fEventAOD->GetTrack(it);
1647 if (!AODTrk){
delete AODTrk;
continue; }
1648 if (AODTrk->TestFilterBit(128)) {multTPC++;}
1649 if (AODTrk->TestFilterBit(32)){
1651 if ( TMath::Abs(AODTrk->GetTOFsignalDz()) <= 10 && AODTrk->GetTOFsignal() >= 12000 && AODTrk->GetTOFsignal() <= 25000) multTrkTOF++;
1709 if(iNumTracks < 1)
return;
1711 AliAODTrack* track = 0x0;
1716 for(
Short_t iTrack(0); iTrack < iNumTracks; iTrack++)
1718 track =
static_cast<AliAODTrack*
>(
fEventAOD->GetTrack(iTrack));
1719 if(!track)
continue;
1792 if(!track)
return kFALSE;
1805 chi2TPC = track->Chi2perNDF();
1816 const AliAODVertex* vertex =
fEventAOD->GetPrimaryVertex();
1817 if(!vertex)
return kFALSE;
1819 track->GetXYZ(dTrackXYZ);
1820 vertex->GetXYZ(dVertexXYZ);
1823 dDCAXYZ[i] = dTrackXYZ[i] - dVertexXYZ[i];
1847 if(iQAindex == 0)
return;
1863 for(
Short_t i(0); i < 32; i++)
1865 if(track->TestFilterBit(TMath::Power(2.,i)))
1876 Double_t dDCAXYZ[3] = {-999., -999., -999.};
1877 const AliAODVertex* vertex =
fEventAOD->GetPrimaryVertex();
1880 Double_t dTrackXYZ[3] = {-999., -999., -999.};
1881 Double_t dVertexXYZ[3] = {-999., -999., -999.};
1883 track->GetXYZ(dTrackXYZ);
1884 vertex->GetXYZ(dVertexXYZ);
1887 dDCAXYZ[i] = dTrackXYZ[i] - dVertexXYZ[i];
1889 fhQAChargedDCAxy[iQAindex]->Fill(TMath::Sqrt(dDCAXYZ[0]*dDCAXYZ[0] + dDCAXYZ[1]*dDCAXYZ[1]));
1909 if(iNumTracks < 1)
return;
1912 AliAODTrack* track = 0x0;
1916 for(
Short_t iTrack(0); iTrack < iNumTracks; iTrack++)
1918 track =
static_cast<AliAODTrack*
>(
fEventAOD->GetTrack(iTrack));
1919 if(!track)
continue;
2025 Bool_t bIsTPCok = (pidStatusTPC == AliPIDResponse::kDetPidOk);
2026 Bool_t bIsTOFok = ((pidStatusTOF == AliPIDResponse::kDetPidOk) && (track->GetStatus()& AliVTrack::kTOFout) && (track->GetStatus()& AliVTrack::kTIME) && (track->GetTOFsignal() > 12000) && (track->GetTOFsignal() < 100000));
2034 Double_t dNumSigmaTPC[5] = {-99,-99,-99,-99,-99};
2035 Double_t dNumSigmaTOF[5] = {-99,-99,-99,-99,-99};
2039 Float_t ProbBayes[5] = {0,0,0,0,0};
2041 Double_t probTPC[AliPID::kSPECIES]={0.};
2042 Double_t probTOF[AliPID::kSPECIES]={0.};
2043 Double_t probTPCTOF[AliPID::kSPECIES]={0.};
2049 dNumSigmaTPC[0] = TMath::Abs(
fPIDResponse->NumberOfSigmasTPC(track, AliPID::kElectron));
2050 dNumSigmaTPC[1] = TMath::Abs(
fPIDResponse->NumberOfSigmasTPC(track, AliPID::kMuon));
2051 dNumSigmaTPC[2] = TMath::Abs(
fPIDResponse->NumberOfSigmasTPC(track, AliPID::kPion));
2052 dNumSigmaTPC[3] = TMath::Abs(
fPIDResponse->NumberOfSigmasTPC(track, AliPID::kKaon));
2058 dNumSigmaTOF[0] = TMath::Abs(
fPIDResponse->NumberOfSigmasTOF(track, AliPID::kElectron));
2059 dNumSigmaTOF[1] = TMath::Abs(
fPIDResponse->NumberOfSigmasTOF(track, AliPID::kMuon));
2060 dNumSigmaTOF[2] = TMath::Abs(
fPIDResponse->NumberOfSigmasTOF(track, AliPID::kPion));
2061 dNumSigmaTOF[3] = TMath::Abs(
fPIDResponse->NumberOfSigmasTOF(track, AliPID::kKaon));
2076 Int_t ParticleFlag[]={0,0,0,0};
2077 fPIDCombined->SetDetectorMask(AliPIDResponse::kDetTPC);
2082 if(dP>0.2 && dP <= 0.5)
2085 Double_t dMinSigmasTPC = TMath::MinElement(5,dNumSigmaTPC);
2088 if(dMinSigmasTPC == dNumSigmaTPC[2] && TMath::Abs(dNumSigmaTPC[2]) <=
fCutPIDnSigmaPionMax) ParticleFlag[1] = 1;
2089 if(dMinSigmasTPC == dNumSigmaTPC[3] && TMath::Abs(dNumSigmaTPC[3]) <=
fCutPIDnSigmaKaonMax) ParticleFlag[2] = 1;
2090 if(dMinSigmasTPC == dNumSigmaTPC[4] && TMath::Abs(dNumSigmaTPC[4]) <=
fCutPIDnSigmaProtonMax) ParticleFlag[3] = 1;
2093 ProbBayes[0] = probTPC[0];
2094 ProbBayes[1] = probTPC[1];
2095 ProbBayes[2] = probTPC[2];
2096 ProbBayes[3] = probTPC[3];
2097 ProbBayes[4] = probTPC[4];
2099 Double_t dMaxBayesianProb = TMath::MaxElement(5,ProbBayes);
2102 if(dMaxBayesianProb == ProbBayes[2] && TMath::Abs(dNumSigmaTPC[2]) <=
fCutPIDnSigmaPionMax)ParticleFlag[1] = 1;
2103 if(dMaxBayesianProb == ProbBayes[3] && TMath::Abs(dNumSigmaTPC[3]) <=
fCutPIDnSigmaKaonMax)ParticleFlag[2] = 1;
2104 if(dMaxBayesianProb == ProbBayes[4] && TMath::Abs(dNumSigmaTPC[4]) <=
fCutPIDnSigmaProtonMax)ParticleFlag[3] = 1;
2127 fPIDCombined->SetDetectorMask(AliPIDResponse::kDetTOF|AliPIDResponse::kDetTPC);
2131 AliAODPid* pidObj = track->GetDetPid();
2132 if ((detUsed >= AliPIDResponse::kDetTOF) && (pidObj && pidObj->GetTOFsignal() < 99999)){
2137 Double_t dNumSigmaCombined[5] = {-99,-99,-99,-99,-99};
2145 if(bIsTOFok) { dNumSigmaCombined[i] = TMath::Sqrt(dNumSigmaTPC[i]*dNumSigmaTPC[i] + dNumSigmaTOF[i]*dNumSigmaTOF[i]); }
2146 else { dNumSigmaCombined[i] = dNumSigmaTPC[i]; }
2150 Double_t dMinSigmasCombined = TMath::MinElement(5,dNumSigmaCombined);
2153 if(dMinSigmasCombined == dNumSigmaCombined[0] && TMath::Abs(dNumSigmaCombined[0]) <=
fCutPIDnSigmaPionMax) ParticleFlag[0] = 1;
2158 if(dMinSigmasCombined == dNumSigmaCombined[2] && TMath::Abs(dNumSigmaCombined[2]) <= 3.) ParticleFlag[1] = 1;
2159 if(dMinSigmasCombined == dNumSigmaCombined[3] && TMath::Abs(dNumSigmaCombined[3]) <= 2.5) ParticleFlag[2] = 1;
2160 if(dMinSigmasCombined == dNumSigmaCombined[4] && TMath::Abs(dNumSigmaCombined[4]) <= 3.) ParticleFlag[3] = 1;
2164 if(dP < 2.5 && dMinSigmasCombined == dNumSigmaCombined[2] && TMath::Abs(dNumSigmaCombined[2]) <= 3.) ParticleFlag[1] = 1;
2165 if(dP > 2.5 && dMinSigmasCombined == dNumSigmaCombined[2] && TMath::Abs(dNumSigmaCombined[2]) <= 2.) ParticleFlag[1] = 1;
2167 if(dP < 2. && dMinSigmasCombined == dNumSigmaCombined[3] && TMath::Abs(dNumSigmaCombined[3]) <= 2.5) ParticleFlag[2] = 1;
2168 if(dP > 2. && dP < 3. && dMinSigmasCombined == dNumSigmaCombined[3] && TMath::Abs(dNumSigmaCombined[3]) <= 2.) ParticleFlag[2] = 1;
2169 if(dP > 3. && dMinSigmasCombined == dNumSigmaCombined[3] && TMath::Abs(dNumSigmaCombined[3]) <= 1.5) ParticleFlag[2] = 1;
2171 if(dP < 3. && dMinSigmasCombined == dNumSigmaCombined[4] && TMath::Abs(dNumSigmaCombined[4]) <= 3.) ParticleFlag[3] = 1;
2172 if(dP > 3. && dP < 5. && dMinSigmasCombined == dNumSigmaCombined[4] && TMath::Abs(dNumSigmaCombined[4]) <= 2.) ParticleFlag[3] = 1;
2173 if(dP > 5. && dMinSigmasCombined == dNumSigmaCombined[4] && TMath::Abs(dNumSigmaCombined[4]) <= 1.5) ParticleFlag[3] = 1;
2178 if(dP < 2.5 && dMinSigmasCombined == dNumSigmaCombined[2] && TMath::Abs(dNumSigmaCombined[2]) <= 3.) ParticleFlag[1] = 1;
2179 if(dP > 2.5 && dP < 4. && dMinSigmasCombined == dNumSigmaCombined[2] && TMath::Abs(dNumSigmaCombined[2]) <= 1.5) ParticleFlag[1] = 1;
2180 if(dP > 4. && dMinSigmasCombined == dNumSigmaCombined[2] && TMath::Abs(dNumSigmaCombined[2]) <= 1.) ParticleFlag[1] = 1;
2182 if(dP < 2. && dMinSigmasCombined == dNumSigmaCombined[3] && TMath::Abs(dNumSigmaCombined[3]) <= 2.5) ParticleFlag[2] = 1;
2183 if(dP > 2. && dP < 3. && dMinSigmasCombined == dNumSigmaCombined[3] && TMath::Abs(dNumSigmaCombined[3]) <= 1.5)ParticleFlag[2] = 1;
2184 if(dP > 3. && dMinSigmasCombined == dNumSigmaCombined[3] && TMath::Abs(dNumSigmaCombined[3]) <= 1.) ParticleFlag[2] = 1;
2186 if(dP < 3. && dMinSigmasCombined == dNumSigmaCombined[4] && TMath::Abs(dNumSigmaCombined[4]) <= 3.) ParticleFlag[3] = 1;
2187 if(dP > 3. && dP < 5. && dMinSigmasCombined == dNumSigmaCombined[4] && TMath::Abs(dNumSigmaCombined[4]) <= 2.) ParticleFlag[3] = 1;
2188 if(dP > 5. && dMinSigmasCombined == dNumSigmaCombined[4] && TMath::Abs(dNumSigmaCombined[4]) <= 1.) ParticleFlag[3] = 1;
2195 ProbBayes[0] = probTPCTOF[0];
2196 ProbBayes[1] = probTPCTOF[1];
2197 ProbBayes[2] = probTPCTOF[2];
2198 ProbBayes[3] = probTPCTOF[3];
2199 ProbBayes[4] = probTPCTOF[4];
2200 Double_t dMaxBayesianProb = TMath::MaxElement(5,ProbBayes);
2202 if(dMaxBayesianProb == ProbBayes[0] && TMath::Abs(dNumSigmaCombined[0]) <=
fCutPIDnSigmaPionMax) ParticleFlag[0] = 1;
2203 if(dMaxBayesianProb == ProbBayes[2] && TMath::Abs(dNumSigmaCombined[2]) <=
fCutPIDnSigmaPionMax) ParticleFlag[1] = 1;
2204 if(dMaxBayesianProb == ProbBayes[3] && TMath::Abs(dNumSigmaCombined[3]) <=
fCutPIDnSigmaKaonMax) ParticleFlag[2] = 1;
2205 if(dMaxBayesianProb == ProbBayes[4] && TMath::Abs(dNumSigmaCombined[4]) <=
fCutPIDnSigmaProtonMax) ParticleFlag[3] = 1;
2206 }
else{ParticleFlag[0] = 1;}
2233 if(!ParticleFlag[0] && ParticleFlag[1] && !ParticleFlag[2] && !ParticleFlag[3]){
2235 }
else if(!ParticleFlag[0] && !ParticleFlag[1] && ParticleFlag[2] && !ParticleFlag[3]){
2237 }
else if(!ParticleFlag[0] && !ParticleFlag[1] && !ParticleFlag[2] && ParticleFlag[3]){
2253 ::Error(
"FillPIDQA",
"AliPIDResponse or AliPIDCombined object not found!");
2264 Bool_t bIsTPCok = (pidStatusTPC == AliPIDResponse::kDetPidOk);
2267 Bool_t bIsTOFok = ((pidStatusTOF == AliPIDResponse::kDetPidOk) && (track->GetStatus()& AliVTrack::kTOFout) && (track->GetStatus()& AliVTrack::kTIME) && (track->GetTOFsignal() > 12000) && (track->GetTOFsignal() < 100000));
2281 dNumSigmaTPC[0] =
fPIDResponse->NumberOfSigmasTPC(track, AliPID::kElectron);
2282 dNumSigmaTPC[1] =
fPIDResponse->NumberOfSigmasTPC(track, AliPID::kMuon);
2283 dNumSigmaTPC[2] =
fPIDResponse->NumberOfSigmasTPC(track, AliPID::kPion);
2284 dNumSigmaTPC[3] =
fPIDResponse->NumberOfSigmasTPC(track, AliPID::kKaon);
2287 dTPCdEdx = track->GetTPCsignal();
2292 dNumSigmaTPC[0] = -11.;
2293 dNumSigmaTPC[1] = -11.;
2294 dNumSigmaTPC[2] = -11.;
2295 dNumSigmaTPC[3] = -11.;
2296 dNumSigmaTPC[4] = -11.;
2303 dNumSigmaTOF[0] =
fPIDResponse->NumberOfSigmasTOF(track, AliPID::kElectron);
2304 dNumSigmaTOF[1] =
fPIDResponse->NumberOfSigmasTOF(track, AliPID::kMuon);
2305 dNumSigmaTOF[2] =
fPIDResponse->NumberOfSigmasTOF(track, AliPID::kPion);
2306 dNumSigmaTOF[3] =
fPIDResponse->NumberOfSigmasTOF(track, AliPID::kKaon);
2310 track->GetIntegratedTimes(dTOF);
2311 dTOFbeta = dTOF[0] / track->GetTOFsignal();
2316 dNumSigmaTOF[0] = -11.;
2317 dNumSigmaTOF[1] = -11.;
2318 dNumSigmaTOF[2] = -11.;
2319 dNumSigmaTOF[3] = -11.;
2320 dNumSigmaTOF[4] = -11.;
2413 if(fRunNumber < 0 || fRunNumber != fEventAOD->
GetRunNumber() )
2420 if(!dirFlowNUAWeights) {::Error(
"ProcessEvent",
"TList from flow weights not found.");
return kFALSE; }
2449 TDirectory* dirFlowNUEWeights = 0x0;
2457 if(!dirFlowNUEWeights) {::Error(
"ProcessEvent",
"TDirectoy from NUE weights not found.");
return kFALSE; }
2531 TComplex vector = TComplex(0,0,kFALSE);
2543 vector =
TwoGap(iHarmonics,-iHarmonics);
2544 dValue = vector.Re()/Cn2;
2546 if( TMath::Abs(dValue < 1) )
2559 TComplex Four_2222_GapP =
FourGapPos(2, 2, -2, -2);
2560 double c4_2222_GapP = Four_2222_GapP.Re()/Dn4GapP;
2563 TComplex Four_3333_GapP =
FourGapPos(3, 3, -3, -3);
2564 double c4_3333_GapP = Four_3333_GapP.Re()/Dn4GapP;
2567 TComplex Four_3232_GapP =
FourGapPos(3, 2, -3, -2);
2568 double c4_3232_GapP = Four_3232_GapP.Re()/Dn4GapP;
2576 TComplex Six_222222_GapP =
SixGapPos(2, 2, 2, -2, -2, -2);
2577 double c6_222222_GapP = Six_222222_GapP.Re()/Dn6GapP;
2598 TComplex vector = TComplex(0,0,kFALSE);
2614 dValue = vector.Re()/Dn2;
2615 if( TMath::Abs(dValue < 1) )
2628 dValue = vector.Re()/Dn2;
2629 if( TMath::Abs(dValue < 1) )
2645 dValue = vector.Re()/DDn3GapP;
2646 if( TMath::Abs(dValue < 1) ){
2660 dValue = vector.Re()/DDn3GapP;
2661 if( TMath::Abs(dValue < 1) ){
2672 if( TMath::Abs(dValue < 1) ){
2681 if( TMath::Abs(dValue < 1) ){
2695 TProfile2D** profile2Pos = 0x0;
2696 TProfile2D** profile2Neg = 0x0;
2698 TProfile2D** profile3Pos = 0x0;
2699 TProfile2D** profile3Neg = 0x0;
2700 TProfile2D* profile4Pos = 0x0;
2701 TProfile2D* profile4Neg = 0x0;
2727 ::Error(
"DoFlowPID",
"Unexpected species! Terminating!");
2761 ::Error(
"DoFlowPID with mixed harmonics",
"Unexpected species! Terminating!");
2773 TComplex vector = TComplex(0,0,kFALSE);
2793 dValue = vector.Re()/Dn2;
2794 if( TMath::Abs(dValue < 1) )
2806 dValue = vector.Re()/Dn2;
2807 if( TMath::Abs(dValue < 1) )
2823 dValue = vector.Re()/DDn3GapP;
2824 if( TMath::Abs(dValue < 1) ){
2825 profile3Pos[iMixedHarm]->Fill(
fIndexCentrality,iPt*dPtBinWidth, dValue, DDn3GapP);
2838 dValue = vector.Re()/DDn3GapP;
2839 if( TMath::Abs(dValue < 1) ){
2840 profile3Neg[iMixedHarm]->Fill(
fIndexCentrality,iPt*dPtBinWidth, dValue, DDn3GapP);
2851 dValue = vector.Re()/DDn4GapP;
2852 if( TMath::Abs(dValue < 1) ){
2861 dValue = vector.Re()/DDn4GapP;
2862 if( TMath::Abs(dValue < 1) ){
2877 TH3D* h3NUAWeights = 0x0;
2878 TH1D* hNUEWeights = 0x0;
2887 Double_t dQcosPos, dQcosNeg, dQsinPos, dQsinNeg;
2899 ::Warning(
"FillRefsVectors",
"Unexpected part. species (%d) in selected sample (expected %d)",
part->species,
kCharged);
2907 if(!h3NUAWeights) { ::Error(
"FillRefsVectors",
"Histogram with NUA weights not found.");
continue; }
2915 if(!hNUEWeights) { ::Error(
"FillRefsVectors",
"Histogram with NUE weights not found.");
return; }
2933 dNUAWeight = h3NUAWeights->GetBinContent(h3NUAWeights->FindBin(
part->phi,
part->eta,
fEventAOD->GetPrimaryVertex()->GetZ()));
2934 if(dNUAWeight <= 0) dNUAWeight = 1.;
2939 dNUEWeight = hNUEWeights->GetBinContent(hNUEWeights->FindBin(
part->pt));
2940 if(dNUEWeight <= 0) dNUEWeight = 1.;
2946 if(
part->eta > dEtaGap / 2)
2952 dQcosPos = TMath::Power(dNUAWeight*dNUEWeight,iPower) * TMath::Cos(iHarm *
part->phi);
2953 dQsinPos = TMath::Power(dNUAWeight*dNUEWeight,iPower) * TMath::Sin(iHarm *
part->phi);
2954 fFlowVecQpos[iHarm][iPower] += TComplex(dQcosPos,dQsinPos,kFALSE);
2958 if(
part->eta < -dEtaGap / 2 )
2964 dQcosNeg = TMath::Power(dNUAWeight*dNUEWeight,iPower) * TMath::Cos(iHarm *
part->phi);
2965 dQsinNeg = TMath::Power(dNUAWeight*dNUEWeight,iPower) * TMath::Sin(iHarm *
part->phi);
2966 fFlowVecQneg[iHarm][iPower] += TComplex(dQcosNeg,dQsinNeg,kFALSE);
3000 std::vector<FlowPart>* vector = 0x0;
3003 TH3D* h3NUAWeights = 0x0;
3004 TH1D* hNUEWeights = 0x0;
3026 ::Error(
"FillPOIsVectors",
"Selected species unknown.");
3036 for (
auto part = vector->begin();
part != vector->end();
part++)
3087 ::Error(
"FillPOIsVectors",
"Selected species unknown.");
3091 if(
fFlowUseNUAWeights && !h3NUAWeights) { ::Error(
"FillPOIsVectors",
"Histogram with NUA weights not found.");
continue; }
3092 if(
fFlowUseNUEWeights && !hNUEWeights) { ::Error(
"FillPOIsVectors",
"Histogram with NUE weights not found.");
return; }
3095 if(
part->species != species)
3097 ::Warning(
"FillPOIsVectors",
"Unexpected part. species (%d) in selected sample (expected %d)",
part->species,species);
3113 dNUAWeight = h3NUAWeights->GetBinContent(h3NUAWeights->FindBin(
part->phi,
part->eta,
fEventAOD->GetPrimaryVertex()->GetZ()));
3114 if(dNUAWeight <= 0){ dNUAWeight = 1.;}
3115 if(iEtaGapIndex == 0){
3131 ::Error(
"Fill fh3AfterNUAWeights",
"Selected species unknown.");
3139 dNUEWeight = hNUEWeights->GetBinContent(hNUEWeights->FindBin(
part->pt));
3140 if(dNUEWeight <= 0) dNUEWeight = 1.;
3141 if(iEtaGapIndex == 0){
3157 ::Error(
"Fill fhAfterNUEWeights",
"Selected species unknown.");
3163 if(
part->eta > dEtaGap / 2 )
3169 dCos = TMath::Power(dNUAWeight*dNUEWeight,iPower) * TMath::Cos(iHarm *
part->phi);
3170 dSin = TMath::Power(dNUAWeight*dNUEWeight,iPower) * TMath::Sin(iHarm *
part->phi);
3171 fFlowVecPpos[iHarm][iPower][iPtBin] += TComplex(dCos,dSin,kFALSE);
3175 if(
part->eta < -dEtaGap / 2 ){
3180 dCos = TMath::Power(dNUAWeight*dNUEWeight,iPower) * TMath::Cos(iHarm *
part->phi);
3181 dSin = TMath::Power(dNUAWeight*dNUEWeight,iPower) * TMath::Sin(iHarm *
part->phi);
3182 fFlowVecPneg[iHarm][iPower][iPtBin] += TComplex(dCos,dSin,kFALSE);
3196 return (
Short_t) (pt / dPtBinWidth);
3205 array[iHarm][iPower] = TComplex(0,0,kFALSE);
3214 array[iHarm][iPower][iPt] = TComplex(0,0,kFALSE);
3222 printf(
" ### Listing (TComplex) flow vector array ###########################\n");
3225 printf(
"Harm %d (power):",iHarm);
3228 printf(
"|(%d) %g+%g(i)",iPower, array[iHarm][iPower].Re(), array[iHarm][iPower].Im());
3254 AliMultSelection* multSelection = 0x0;
3255 multSelection = (AliMultSelection*)
fEventAOD->FindListObject(
"MultSelection");
3256 if(!multSelection) { AliError(
"AliMultSelection object not found! Returning -1");
return -1;}
3258 dPercentile = multSelection->GetMultiplicityPercentile(
fMultEstimator.Data());
3262 if(dPercentile > 100 || dPercentile < 0) { AliWarning(
"Centrality percentile estimated not within 0-100 range. Returning -1");
return -1;}
3263 else {
return dPercentile;}
3266 if(dPercentile > 100 || dPercentile <50) { AliWarning(
"Centrality percentile estimated not within 50-100 range. Returning -1");
return -1;}
3267 else {
return dPercentile;}
3277 AliWarning(Form(
"Multiplicity estimator '%s' not supported. Returning -1\n",
fMultEstimator.Data()));
3288 printf(
"One of vertices is not valid\n");
3291 static TMatrixDSym vVb(3);
3293 double dx = v0->GetX()-v1->GetX();
3294 double dy = v0->GetY()-v1->GetY();
3295 double dz = v0->GetZ()-v1->GetZ();
3296 double cov0[6],cov1[6];
3297 v0->GetCovarianceMatrix(cov0);
3298 v1->GetCovarianceMatrix(cov1);
3299 vVb(0,0) = cov0[0]+cov1[0];
3300 vVb(1,1) = cov0[2]+cov1[2];
3301 vVb(2,2) = cov0[5]+cov1[5];
3302 vVb(1,0) = vVb(0,1) = cov0[1]+cov1[1];
3303 vVb(0,2) = vVb(1,2) = vVb(2,0) = vVb(2,1) = 0.;
3305 if (!vVb.IsValid()) {printf(
"Singular Matrix\n");
return dist;}
3306 dist = vVb(0,0)*dx*dx + vVb(1,1)*dy*dy + vVb(2,2)*dz*dz+2*vVb(0,1)*dx*dy + 2*vVb(0,2)*dx*dz + 2*vVb(1,2)*dy*dz;
3307 return dist>0 ? TMath::Sqrt(dist) : -1;
3326 if (n < 0)
return TComplex::Conjugate(
fFlowVecQpos[-n][p]);
3332 if (n < 0)
return TComplex::Conjugate(
fFlowVecQpos[-n][p]);
3338 if(n < 0)
return TComplex::Conjugate(
fFlowVecQneg[-n][p]);
3344 if(n < 0)
return TComplex::Conjugate(
fFlowVecPpos[-n][p][pt]);
3350 if(n < 0)
return TComplex::Conjugate(
fFlowVecPpos[-n][p][pt]);
3356 if(n < 0)
return TComplex::Conjugate(
fFlowVecPneg[-n][p][pt]);
3362 if(n < 0)
return TComplex::Conjugate(
fFlowVecS[-n][p][pt]);
3371 TComplex formula =
Q(n1,1)*
Q(n2,1) -
Q(n1+n2,2);
3383 TComplex formula =
P(n1,1,pt)*
Q(n2,1) -
S(n1+n2,1,pt);
3413 TComplex formula =
Q(n1,1)*
Q(n2,1)*
Q(n3,1)*
Q(n4,1)-
Q(n1+n2,2)*
Q(n3,1)*
Q(n4,1)-
Q(n2,1)*
Q(n1+n3,2)*
Q(n4,1)
3414 -
Q(n1,1)*
Q(n2+n3,2)*
Q(n4,1)+2.*
Q(n1+n2+n3,3)*
Q(n4,1)-
Q(n2,1)*
Q(n3,1)*
Q(n1+n4,2)
3415 +
Q(n2+n3,2)*
Q(n1+n4,2)-
Q(n1,1)*
Q(n3,1)*
Q(n2+n4,2)+
Q(n1+n3,2)*
Q(n2+n4,2)
3416 + 2.*
Q(n3,1)*
Q(n1+n2+n4,3)-
Q(n1,1)*
Q(n2,1)*
Q(n3+n4,2)+
Q(n1+n2,2)*
Q(n3+n4,2)
3417 + 2.*
Q(n2,1)*
Q(n1+n3+n4,3)+2.*
Q(n1,1)*
Q(n2+n3+n4,3)-6.*
Q(n1+n2+n3+n4,4);
3423 TComplex formula =
P(n1,1,pt)*
Q(n2,1)*
Q(n3,1)*
Q(n4,1)-
S(n1+n2,2,pt)*
Q(n3,1)*
Q(n4,1)-
Q(n2,1)*
S(n1+n3,2,pt)*
Q(n4,1)
3424 -
P(n1,1,pt)*
Q(n2+n3,2)*
Q(n4,1)+2.*
S(n1+n2+n3,3,pt)*
Q(n4,1)-
Q(n2,1)*
Q(n3,1)*
S(n1+n4,2,pt)
3425 +
Q(n2+n3,2)*
S(n1+n4,2,pt)-
P(n1,1,pt)*
Q(n3,1)*
Q(n2+n4,2)+
S(n1+n3,2,pt)*
Q(n2+n4,2)
3426 + 2.*
Q(n3,1)*
S(n1+n2+n4,3,pt)-
P(n1,1,pt)*
Q(n2,1)*
Q(n3+n4,2)+
S(n1+n2,2,pt)*
Q(n3+n4,2)
3427 + 2.*
Q(n2,1)*
S(n1+n3+n4,3,pt)+2.*
P(n1,1,pt)*
Q(n2+n3+n4,3)-6.*
S(n1+n2+n3+n4,4,pt);
3433 TComplex formula =
QGapPos(n1,1)*
QGapPos(n2,1)*
QGapNeg(n3,1)*
QGapNeg(n4,1)-
QGapPos(n1+n2,2)*
QGapNeg(n3,1)*
QGapNeg(n4,1)-
QGapPos(n1,1)*
QGapPos(n2,1)*
QGapNeg(n3+n4,2)+
QGapPos(n1+n2,2)*
QGapNeg(n3+n4,2);
3440 TComplex formula =
QGapNeg(n1,1)*
QGapNeg(n2,1)*
QGapPos(n3,1)*
QGapPos(n4,1)-
QGapNeg(n1+n2,2)*
QGapPos(n3,1)*
QGapPos(n4,1)-
QGapNeg(n1,1)*
QGapNeg(n2,1)*
QGapPos(n3+n4,2)+
QGapNeg(n1+n2,2)*
QGapPos(n3+n4,2);
3447 TComplex formula =
PGapPos(n1,1,pt)*
QGapNeg(n2,1)*
QGapNeg(n3,1)*
QGapNeg(n4,1)-
PGapPos(n1,1,pt)*
QGapNeg(n2+n3,2)*
QGapNeg(n4,1) -
PGapPos(n1,1,pt)*
QGapNeg(n2+n4,2)*
QGapNeg(n3,1) -
PGapPos(n1,1,pt)*
QGapNeg(n3+n4,2)*
QGapNeg(n2,1) + 2.*
PGapPos(n1,1,pt)*
QGapNeg(n2+n3+n4,3);
3453 TComplex formula =
PGapNeg(n1,1,pt)*
QGapPos(n2,1)*
QGapPos(n3,1)*
QGapPos(n4,1)-
PGapNeg(n1,1,pt)*
QGapPos(n2+n3,2)*
QGapPos(n4,1) -
PGapNeg(n1,1,pt)*
QGapPos(n2+n4,2)*
QGapPos(n3,1) -
PGapNeg(n1,1,pt)*
QGapPos(n3+n4,2)*
QGapPos(n2,1) + 2.*
PGapNeg(n1,1,pt)*
QGapPos(n2+n3+n4,3);
3459 TComplex formula =
QGapPos(n1,1)*
QGapPos(n2,1)*
QGapPos(n3,1)*
QGapNeg(n4,1)*
QGapNeg(n5,1)*
QGapNeg(n6,1) -
QGapPos(n1,1)*
QGapPos(n2,1)*
QGapPos(n3,1)*
QGapNeg(n4+n5,2)*
QGapNeg(n6,1) -
QGapPos(n1,1)*
QGapPos(n2,1)*
QGapPos(n3,1)*
QGapNeg(n4+n6,2)*
QGapNeg(n5,1) -
QGapPos(n1,1)*
QGapPos(n2,1)*
QGapPos(n3,1)*
QGapNeg(n5+n6,2)*
QGapNeg(n4,1) + 2.*
QGapPos(n1,1)*
QGapPos(n2,1)*
QGapPos(n3,1)*
QGapNeg(n4+n5+n6,3) -
QGapPos(n1+n2,2)*
QGapPos(n3,1)*
QGapNeg(n4,1)*
QGapNeg(n5,1)*
QGapNeg(n6,1) +
QGapPos(n1+n2,2)*
QGapPos(n3,1)*
QGapNeg(n4+n5,2)*
QGapNeg(n6,1) +
QGapPos(n1+n2,2)*
QGapPos(n3,1)*
QGapNeg(n4+n6,2)*
QGapNeg(n5,1) +
QGapPos(n1+n2,2)*
QGapPos(n3,1)*
QGapNeg(n5+n6,2)*
QGapNeg(n4,1) - 2.*
QGapPos(n1+n2,2)*
QGapPos(n3,1)*
QGapNeg(n4+n5+n6,3) -
QGapPos(n1+n3,2)*
QGapPos(n2,1)*
QGapNeg(n4,1)*
QGapNeg(n5,1)*
QGapNeg(n6,1) +
QGapPos(n1+n3,2)*
QGapPos(n2,1)*
QGapNeg(n4+n5,2)*
QGapNeg(n6,1) +
QGapPos(n1+n3,2)*
QGapPos(n2,1)*
QGapNeg(n4+n6,2)*
QGapNeg(n5,1) +
QGapPos(n1+n3,2)*
QGapPos(n2,1)*
QGapNeg(n5+n6,2)*
QGapNeg(n4,1) - 2.*
QGapPos(n1+n3,2)*
QGapPos(n2,1)*
QGapNeg(n4+n5+n6,3) -
QGapPos(n2+n3,2)*
QGapPos(n1,1)*
QGapNeg(n4,1)*
QGapNeg(n5,1)*
QGapNeg(n6,1) +
QGapPos(n2+n3,2)*
QGapPos(n1,1)*
QGapNeg(n4+n5,2)*
QGapNeg(n6,1) +
QGapPos(n2+n3,2)*
QGapPos(n1,1)*
QGapNeg(n4+n6,2)*
QGapNeg(n5,1) +
QGapPos(n2+n3,2)*
QGapPos(n1,1)*
QGapNeg(n5+n6,2)*
QGapNeg(n4,1) - 2.*
QGapPos(n2+n3,2)*
QGapPos(n1,1)*
QGapNeg(n4+n5+n6,3)+ 2.*
QGapPos(n1+n2+n3,3)*
QGapNeg(n4,1)*
QGapNeg(n5,1)*
QGapNeg(n6,1) - 2.*
QGapPos(n1+n2+n3,3)*
QGapNeg(n4+n5,2)*
QGapNeg(n6,1) - 2.*
QGapPos(n1+n2+n3,3)*
QGapNeg(n4+n6,2)*
QGapNeg(n5,1) - 2.*
QGapPos(n1+n2+n3,3)*
QGapNeg(n5+n6,2)*
QGapNeg(n4,1) + 4.*
QGapPos(n1+n2+n3,3)*
QGapNeg(n4+n5+n6,3);
3466 TComplex formula =
QGapNeg(n1,1)*
QGapNeg(n2,1)*
QGapNeg(n3,1)*
QGapPos(n4,1)*
QGapPos(n5,1)*
QGapPos(n6,1) -
QGapNeg(n1,1)*
QGapNeg(n2,1)*
QGapNeg(n3,1)*
QGapPos(n4+n5,2)*
QGapPos(n6,1) -
QGapNeg(n1,1)*
QGapNeg(n2,1)*
QGapNeg(n3,1)*
QGapPos(n4+n6,2)*
QGapPos(n5,1) -
QGapNeg(n1,1)*
QGapNeg(n2,1)*
QGapNeg(n3,1)*
QGapPos(n5+n6,2)*
QGapPos(n4,1) + 2.*
QGapNeg(n1,1)*
QGapNeg(n2,1)*
QGapNeg(n3,1)*
QGapPos(n4+n5+n6,3)-
QGapNeg(n1+n2,2)*
QGapNeg(n3,1)*
QGapPos(n4,1)*
QGapPos(n5,1)*
QGapPos(n6,1) +
QGapNeg(n1+n2,2)*
QGapNeg(n3,1)*
QGapPos(n4+n5,2)*
QGapPos(n6,1) +
QGapNeg(n1+n2,2)*
QGapNeg(n3,1)*
QGapPos(n4+n6,2)*
QGapPos(n5,1) +
QGapNeg(n1+n2,2)*
QGapNeg(n3,1)*
QGapPos(n5+n6,2)*
QGapPos(n4,1) - 2.*
QGapNeg(n1+n2,2)*
QGapNeg(n3,1)*
QGapPos(n4+n5+n6,3) -
QGapNeg(n1+n3,2)*
QGapNeg(n2,1)*
QGapPos(n4,1)*
QGapPos(n5,1)*
QGapPos(n6,1) +
QGapNeg(n1+n3,2)*
QGapNeg(n2,1)*
QGapPos(n4+n5,2)*
QGapPos(n6,1) +
QGapNeg(n1+n3,2)*
QGapNeg(n2,1)*
QGapPos(n4+n6,2)*
QGapPos(n5,1) +
QGapNeg(n1+n3,2)*
QGapNeg(n2,1)*
QGapPos(n5+n6,2)*
QGapPos(n4,1) - 2.*
QGapNeg(n1+n3,2)*
QGapNeg(n2,1)*
QGapPos(n4+n5+n6,3) -
QGapNeg(n2+n3,2)*
QGapNeg(n1,1)*
QGapPos(n4,1)*
QGapPos(n5,1)*
QGapPos(n6,1) +
QGapNeg(n2+n3,2)*
QGapNeg(n1,1)*
QGapPos(n4+n5,2)*
QGapPos(n6,1) +
QGapNeg(n2+n3,2)*
QGapNeg(n1,1)*
QGapPos(n4+n6,2)*
QGapPos(n5,1) +
QGapNeg(n2+n3,2)*
QGapNeg(n1,1)*
QGapPos(n5+n6,2)*
QGapPos(n4,1) - 2.*
QGapNeg(n2+n3,2)*
QGapNeg(n1,1)*
QGapPos(n4+n5+n6,3)+ 2.*
QGapNeg(n1+n2+n3,3)*
QGapPos(n4,1)*
QGapPos(n5,1)*
QGapPos(n6,1) -2.*
QGapNeg(n1+n2+n3,3)*
QGapPos(n4+n5,2)*
QGapPos(n6,1) - 2.*
QGapNeg(n1+n2+n3,3)*
QGapPos(n4+n6,2)*
QGapPos(n5,1) - 2.*
QGapNeg(n1+n2+n3,3)*
QGapPos(n5+n6,2)*
QGapPos(n4,1) + 4.*
QGapNeg(n1+n2+n3,3)*
QGapPos(n4+n5+n6,3);
3609 fC[i][0] =
fC[17][0];
3610 fC[i][1] =
fC[17][1];
3611 fC[i][2] =
fC[17][2];
3612 fC[i][3] =
fC[17][3];
3613 fC[i][4] =
fC[17][4];
3617 else if(centrCur < 20){
3727 fC[i][0] =
fC[17][0];
3728 fC[i][1] =
fC[17][1];
3729 fC[i][2] =
fC[17][2];
3730 fC[i][3] =
fC[17][3];
3731 fC[i][4] =
fC[17][4];
3735 else if(centrCur < 30){
3845 fC[i][0] =
fC[17][0];
3846 fC[i][1] =
fC[17][1];
3847 fC[i][2] =
fC[17][2];
3848 fC[i][3] =
fC[17][3];
3849 fC[i][4] =
fC[17][4];
3853 else if(centrCur < 40){
3963 fC[i][0] =
fC[17][0];
3964 fC[i][1] =
fC[17][1];
3965 fC[i][2] =
fC[17][2];
3966 fC[i][3] =
fC[17][3];
3967 fC[i][4] =
fC[17][4];
3971 else if(centrCur < 50){
4081 fC[i][0] =
fC[17][0];
4082 fC[i][1] =
fC[17][1];
4083 fC[i][2] =
fC[17][2];
4084 fC[i][3] =
fC[17][3];
4085 fC[i][4] =
fC[17][4];
4089 else if(centrCur < 60){
4199 fC[i][0] =
fC[17][0];
4200 fC[i][1] =
fC[17][1];
4201 fC[i][2] =
fC[17][2];
4202 fC[i][3] =
fC[17][3];
4203 fC[i][4] =
fC[17][4];
4207 else if(centrCur < 70){
4317 fC[i][0] =
fC[17][0];
4318 fC[i][1] =
fC[17][1];
4319 fC[i][2] =
fC[17][2];
4320 fC[i][3] =
fC[17][3];
4321 fC[i][4] =
fC[17][4];
4325 else if(centrCur < 80){
4435 fC[i][0] =
fC[17][0];
4436 fC[i][1] =
fC[17][1];
4437 fC[i][2] =
fC[17][2];
4438 fC[i][3] =
fC[17][3];
4439 fC[i][4] =
fC[17][4];