24 #include "Riostream.h"
42 fUseInternalFlags(kFALSE),
47 fDumpThePoints(kFALSE),
48 fMaxNoEventsPerFile(100),
49 fSelectRandomlyRPs(kFALSE),
50 fnSelectedRandomlyRPs(-44),
51 fFillControlHistograms(kFALSE),
52 fFillKinematicsHist(kFALSE),
53 fFillMultDistributionsHist(kFALSE),
54 fFillMultCorrelationsHist(kFALSE),
55 fSkipSomeIntervals(kFALSE),
56 fCalculateQvector(kFALSE),
57 fCalculateDiffQvectors(kFALSE),
59 fCalculateCorrelations(kFALSE),
60 fCalculateIsotropic(kFALSE),
61 fCalculateSame(kFALSE),
62 fSkipZeroHarmonics(kFALSE),
63 fCalculateSameIsotropic(kFALSE),
64 fCalculateAll(kFALSE),
66 fCalculateOnlyForHarmonicQC(kFALSE),
67 fCalculateOnlyForSC(kFALSE),
68 fCalculateOnlyCos(kFALSE),
69 fCalculateOnlySin(kFALSE),
70 fCalculateEbECumulants(kFALSE),
71 fCrossCheckWithNestedLoops(kFALSE),
72 fCrossCheckDiffWithNestedLoops(kFALSE),
73 fCalculateStandardCandles(kFALSE),
74 fPropagateErrorSC(kTRUE),
75 fCalculateQcumulants(kFALSE),
77 fPropagateErrorQC(kTRUE),
78 fCalculateDiffCorrelations(kFALSE),
79 fCalculateDiffCos(kTRUE),
80 fCalculateDiffSin(kFALSE),
81 fCalculateDiffCorrelationsVsPt(kTRUE),
82 fUseDefaultBinning(kTRUE),
84 fRangesDiffBins(NULL),
85 fCalculateSymmetryPlanes(kFALSE),
86 fCalculateEtaGaps(kFALSE)
90 AliDebug(2,
"AliAnalysisTaskMultiparticleCorrelations::AliAnalysisTaskMultiparticleCorrelations(const char *name, Bool_t useParticleWeights)");
94 DefineInput(0, AliFlowEventSimple::Class());
96 if(useParticleWeights)
98 DefineInput(1, TList::Class());
102 DefineOutput(1, TList::Class());
105 for(
Int_t rp=0;rp<2;rp++)
107 for(
Int_t ppe=0;ppe<3;ppe++)
109 fUseWeights[rp][ppe] = kFALSE;
110 fWeightsHist[rp][ppe] = NULL;
114 fCrossCheckDiffCSCOBN[0] = 0;
115 fCrossCheckDiffCSCOBN[1] = 2;
116 fCrossCheckDiffCSCOBN[2] = 4;
118 fDontFill[0] = kFALSE;
119 fDontFill[1] = kFALSE;
120 fDontFill[2] = kFALSE;
137 fMax[0][0] = TMath::TwoPi();
140 fMax[1][0] = TMath::TwoPi();
145 fnBinsMult[0] = 3000;
146 fnBinsMult[1] = 3000;
147 fnBinsMult[2] = 3000;
157 for(
Int_t ppe=0;ppe<3;ppe++)
159 for(
Int_t i=0;i<10;i++)
161 fSkip[ppe][i] = -44.;
174 fUseInternalFlags(kFALSE),
179 fDumpThePoints(kFALSE),
180 fMaxNoEventsPerFile(0),
181 fSelectRandomlyRPs(kFALSE),
182 fnSelectedRandomlyRPs(-44),
183 fFillControlHistograms(kFALSE),
184 fFillKinematicsHist(kFALSE),
185 fFillMultDistributionsHist(kFALSE),
186 fFillMultCorrelationsHist(kFALSE),
187 fSkipSomeIntervals(kFALSE),
188 fCalculateQvector(kFALSE),
189 fCalculateDiffQvectors(kFALSE),
191 fCalculateCorrelations(kFALSE),
192 fCalculateIsotropic(kFALSE),
193 fCalculateSame(kFALSE),
194 fSkipZeroHarmonics(kFALSE),
195 fCalculateSameIsotropic(kFALSE),
196 fCalculateAll(kFALSE),
198 fCalculateOnlyForHarmonicQC(kFALSE),
199 fCalculateOnlyForSC(kFALSE),
200 fCalculateOnlyCos(kFALSE),
201 fCalculateOnlySin(kFALSE),
202 fCalculateEbECumulants(kFALSE),
203 fCrossCheckWithNestedLoops(kFALSE),
204 fCrossCheckDiffWithNestedLoops(kFALSE),
205 fCalculateStandardCandles(kFALSE),
206 fPropagateErrorSC(kFALSE),
207 fCalculateQcumulants(kFALSE),
209 fPropagateErrorQC(kFALSE),
210 fCalculateDiffCorrelations(kFALSE),
211 fCalculateDiffCos(kTRUE),
212 fCalculateDiffSin(kFALSE),
213 fCalculateDiffCorrelationsVsPt(kTRUE),
214 fUseDefaultBinning(kTRUE),
216 fRangesDiffBins(NULL),
217 fCalculateSymmetryPlanes(kFALSE),
218 fCalculateEtaGaps(kFALSE)
222 AliDebug(2,
"AliAnalysisTaskMultiparticleCorrelations::AliAnalysisTaskMultiparticleCorrelations()");
225 for(
Int_t rp=0;rp<2;rp++)
227 for(
Int_t ppe=0;ppe<3;ppe++)
257 fMax[0][0] = TMath::TwoPi();
260 fMax[1][0] = TMath::TwoPi();
277 for(
Int_t ppe=0;ppe<3;ppe++)
279 for(
Int_t i=0;i<10;i++)
281 fSkip[ppe][i] = -44.;
293 AliDebug(2,
"AliAnalysisTaskMultiparticleCorrelations::UserCreateOutputObjects()");
294 TString sMethodName =
"void AliAnalysisTaskMultiparticleCorrelations::UserCreateOutputObjects()";
346 TString type[2] = {
"RP",
"POI"};
347 TString variable[3] = {
"phi",
"pt",
"eta"};
348 for(
Int_t rp=0;rp<2;rp++)
350 for(
Int_t ppe=0;ppe<3;ppe++)
356 if(
fProduction.EqualTo(
"")){Fatal(sMethodName.Data(),
"fProduction is empty, for one reason or another...");}
361 Fatal(sMethodName.Data(),
"fWeightsHist[%d][%d]",rp,ppe);
371 for(
Int_t rp=0;rp<2;rp++)
373 for(
Int_t ppe=0;ppe<3;ppe++)
381 TString typeMult[3] = {
"RP",
"POI",
"REF"};
382 for(
Int_t rpr=0;rpr<3;rpr++)
406 Printf(
"ERROR: Could not retrieve histogram list (MPC, Task::UserCreateOutputObjects()) !!!!");
427 cout<<
" WARNING: No input data (MPC, Task::UserExec()) !!!!"<<endl;
452 cout<<
" WARNING: fHistList is NULL (MPC, Task::Terminate()) !!!!"<<endl;
464 TString sMethodName =
"void AliAnalysisTaskMultiparticleCorrelations::SetWeightsHist(TH1D* const hist, const char *type, const char *variable)";
467 if(!hist){Fatal(sMethodName.Data(),
"hist");}
468 if(!(
TString(type).EqualTo(
"RP") ||
TString(type).EqualTo(
"POI"))){Fatal(sMethodName.Data(),
"!(TString(type).EqualTo... type = %s ",type);}
469 if(!(
TString(variable).EqualTo(
"phi") ||
TString(variable).EqualTo(
"pt") ||
TString(variable).EqualTo(
"eta"))){Fatal(sMethodName.Data(),
"!(TString(variable).EqualTo... variable = %s ",variable);}
472 if(
TString(type).EqualTo(
"POI")){rp=1;}
475 if(
TString(variable).EqualTo(
"pt")){ppe=1;}
476 if(
TString(variable).EqualTo(
"eta")){ppe=2;}
479 hist->SetDirectory(0);
481 if(!
fWeightsHist[rp][ppe]){Fatal(sMethodName.Data(),
"fWeightsHist[%d][%d]",rp,ppe);}
493 TString sMethodName =
"void AliAnalysisTaskMultiparticleCorrelations::SetnBins(const char *type, const char *variable, Int_t nBins)";
496 if(!(
TString(type).EqualTo(
"RP") ||
TString(type).EqualTo(
"POI")))
498 cout<<
"Well, it would be better for you to use RP or POI here..."<<endl;
499 Fatal(sMethodName.Data(),
"!(TString(type).EqualTo... type = %s ",type);
501 if(!(
TString(variable).EqualTo(
"phi") ||
TString(variable).EqualTo(
"pt") ||
TString(variable).EqualTo(
"eta")))
503 cout<<
"phi, pt or eta, please!"<<endl;
504 Fatal(sMethodName.Data(),
"!(TString(variable).EqualTo... variable = %s ",variable);
508 if(
TString(type).EqualTo(
"POI")){rp=1;}
511 if(
TString(variable).EqualTo(
"pt")){ppe=1;}
512 if(
TString(variable).EqualTo(
"eta")){ppe=2;}
524 TString sMethodName =
"void AliAnalysisTaskMultiparticleCorrelations::SetMin(const char *type, const char *variable, Double_t min)";
527 if(!(
TString(type).EqualTo(
"RP") ||
TString(type).EqualTo(
"POI")))
529 cout<<
"Well, it would be better for you to use RP or POI here..."<<endl;
530 Fatal(sMethodName.Data(),
"!(TString(type).EqualTo... type = %s ",type);
532 if(!(
TString(variable).EqualTo(
"phi") ||
TString(variable).EqualTo(
"pt") ||
TString(variable).EqualTo(
"eta")))
534 cout<<
"phi, pt or eta, please!"<<endl;
535 Fatal(sMethodName.Data(),
"!(TString(variable).EqualTo... variable = %s ",variable);
539 if(
TString(type).EqualTo(
"POI")){rp=1;}
542 if(
TString(variable).EqualTo(
"pt")){ppe=1;}
543 if(
TString(variable).EqualTo(
"eta")){ppe=2;}
555 TString sMethodName =
"void AliAnalysisTaskMultiparticleCorrelations::SetMax(const char *type, const char *variable, Double_t max)";
558 if(!(
TString(type).EqualTo(
"RP") ||
TString(type).EqualTo(
"POI")))
560 cout<<
"Well, it would be better for you to use RP or POI here..."<<endl;
561 Fatal(sMethodName.Data(),
"!(TString(type).EqualTo... type = %s ",type);
563 if(!(
TString(variable).EqualTo(
"phi") ||
TString(variable).EqualTo(
"pt") ||
TString(variable).EqualTo(
"eta")))
565 cout<<
"phi, pt or eta, please!"<<endl;
566 Fatal(sMethodName.Data(),
"!(TString(variable).EqualTo... variable = %s ",variable);
570 if(
TString(type).EqualTo(
"POI")){rp=1;}
573 if(
TString(variable).EqualTo(
"pt")){ppe=1;}
574 if(
TString(variable).EqualTo(
"eta")){ppe=2;}
586 TString sMethodName =
"void AliAnalysisTaskMultiparticleCorrelations::SetnBinsMult(const char *type, Int_t nBinsMult)";
591 cout<<
"Well, it would be better for you to use RP, POI or REF here..."<<endl;
592 Fatal(sMethodName.Data(),
"!(TString(type).EqualTo... type = %s ",type);
596 if(
TString(type).EqualTo(
"POI")){rpr=1;}
597 else if(
TString(type).EqualTo(
"REF")){rpr=2;}
609 TString sMethodName =
"void AliAnalysisTaskMultiparticleCorrelations::SetMinMult(const char *type, Double_t minMult)";
614 cout<<
"Well, it would be better for you to use RP, POI or REF here..."<<endl;
615 Fatal(sMethodName.Data(),
"!(TString(type).EqualTo... type = %s ",type);
619 if(
TString(type).EqualTo(
"POI")){rpr=1;}
620 else if(
TString(type).EqualTo(
"REF")){rpr=2;}
632 TString sMethodName =
"void AliAnalysisTaskMultiparticleCorrelations::SetMaxMult(const char *type, Double_t maxMult)";
637 cout<<
"Well, it would be better for you to use RP, POI or REF here..."<<endl;
638 Fatal(sMethodName.Data(),
"!(TString(type).EqualTo... type = %s ",type);
642 if(
TString(type).EqualTo(
"POI")){rpr=1;}
643 else if(
TString(type).EqualTo(
"REF")){rpr=2;}
659 TString sMethodName =
"void AliAnalysisTaskMultiparticleCorrelations::SetIntervalsToSkip(const char *ppe, Int_t n, Double_t *boundaries)";
664 cout<<
"Well, could you perhaps try to use only Phi, Pt or Eta here..."<<endl;
665 Fatal(sMethodName.Data(),
"!(TString(ppe).EqualTo... type = %s ",ppe);
670 cout<<
"Maximum number of boundaries is hardwired to be 10 at the moment, sorry..."<<endl;
671 Fatal(sMethodName.Data(),
"nBoundaries = %d ",nBoundaries);
677 if(
TString(ppe).EqualTo(
"Phi"))
681 else if(
TString(ppe).EqualTo(
"Pt"))
690 for(
Int_t b=0;b<nBoundaries;b++)
692 fSkip[index][b] = boundaries[b];
703 TString sMethodName =
"void AliAnalysisTaskMultiparticleCorrelations::SetDiffHarmonics(Int_t order, Int_t *harmonics)";
706 order = harmonics[0];
707 if(order>44) harmonics[0] = -44;
AliAnalysisTaskMultiparticleCorrelations()
Bool_t fCalculateDiffCorrelationsVsPt
void SetCalculateStandardCandles(Bool_t csc)
void SetMin(const char *type, const char *variable, Double_t min)
Bool_t fCrossCheckDiffWithNestedLoops
void SetFillControlHistograms(Bool_t fch)
void SetMaxMult(const char *type, Double_t maxMult)
void SetCalculateOnlyCos(Bool_t coc)
Int_t fCrossCheckDiffCSCOBN[3]
void SetMax(const char *type, const char *variable, Double_t max)
void SetMin(const char *type, const char *variable, Double_t min)
Bool_t fCalculateOnlyForSC
void SetRangesDiffBins(Double_t *const rdb)
ClassImp(AliAnalysisTaskMultiparticleCorrelations) AliAnalysisTaskMultiparticleCorrelations
Bool_t fCalculateOnlyForHarmonicQC
void SetCrossCheckDiffCSCOBN(Int_t cs, Int_t co, Int_t bn)
void SetSelectRandomlyRPs(Int_t nSelectedRandomlyRPs)
void SetCalculateDiffQvectors(Bool_t cdqv)
AliFlowEventSimple * fEvent
void SetCalculateEtaGaps(Bool_t ceg)
void SetMinMult(const char *type, Double_t minMult)
void SetCalculateOnlyForSC(Bool_t cofsc)
void SetCrossCheckDiffWithNestedLoops(Bool_t ccdwnl)
void SetDumpThePoints(Bool_t dtp, Int_t max)
void SetCalculateAll(Bool_t ca)
Bool_t fCalculateDiffCorrelations
void SetSkipZeroHarmonics(Bool_t szh)
void SetCalculateSymmetryPlanes(Bool_t csp)
void SetCalculateOnlyForHarmonicQC(Bool_t cofhqc)
void SetPropagateErrorQC(Bool_t peqc)
Bool_t fCrossCheckWithNestedLoops
Bool_t fSelectRandomlyRPs
void SetUseDefaultBinning(Bool_t udb)
void SetWeightsHist(TH1D *const hist, const char *type, const char *variable)
Bool_t fCalculateSymmetryPlanes
void SetCalculateDiffCorrelations(Bool_t cdc)
void SetIntervalsToSkip(const char *ppe, Int_t n, Double_t *boundaries)
Bool_t fCalculateStandardCandles
Bool_t fFillControlHistograms
Bool_t fFillMultCorrelationsHist
void SetnBins(const char *type, const char *variable, Int_t nBins)
TH1D * GetHistogramWithWeights(const char *filePath, const char *listName, const char *type, const char *variable, const char *production)
void SetMinNoRPs(Int_t min)
Double_t * fRangesDiffBins
virtual void Make(AliFlowEventSimple *anEvent)
void SetCrossCheckWithNestedLoops(Bool_t ccwnl)
Bool_t fCalculateCorrelations
void SetnBinsMult(const char *type, Int_t nBinsMult)
Bool_t fFillKinematicsHist
Int_t fnSelectedRandomlyRPs
void SetMinMult(const char *type, Double_t minMult)
void SetCalculateSameIsotropic(Bool_t csi)
void SetWeightsHist(TH1D *const hist, const char *type, const char *variable)
void SetCalculateQcumulants(Bool_t cqc)
AliFlowAnalysisWithMultiparticleCorrelations * fMPC
void SetCalculateDiffCorrelationsVsPt(Bool_t cdcvspt)
void SetCalculateQvector(Bool_t cqv)
void SetCalculateOnlySin(Bool_t cos)
void SetFillKinematicsHist(Bool_t fkh)
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
Bool_t fCalculateIsotropic
Bool_t fCalculateDiffQvectors
void SetExactNoRPs(Int_t exact)
void SetCalculateCorrelations(Bool_t cc)
void SetDontGoBeyond(Int_t dgb)
virtual void UserExec(Option_t *option)
void SetAnalysisTag(const char *at)
void SetCalculateIsotropic(Bool_t ci)
void SetPropagateErrorSC(Bool_t pesc)
Bool_t fSkipZeroHarmonics
virtual void GetOutputHistograms(TList *histList)
void SetCalculateSame(Bool_t cs)
void SetMaxNoRPs(Int_t max)
void SetFillMultCorrelationsHist(Bool_t mch)
void SetHarmonicQC(Int_t hqc)
void SetMax(const char *type, const char *variable, Double_t max)
Bool_t fUseDefaultBinning
void SetCalculateEbECumulants(Bool_t cebec)
Bool_t fCalculateEbECumulants
void SetFillMultDistributionsHist(Bool_t mdh)
void SetnDiffBins(Int_t ndb)
void SetnBinsMult(const char *type, Int_t nBinsMult)
Bool_t fCalculateQcumulants
void SetIntervalsToSkip(const char *ppe, Int_t n, Double_t *boundaries)
TList * GetHistList() const
virtual void Terminate(Option_t *)
void SetCalculateDiffCos(Bool_t cdc)
void SetCalculateDiffSin(Bool_t cds)
Bool_t fSkipSomeIntervals
Bool_t fFillMultDistributionsHist
Bool_t fCalculateSameIsotropic
void SetDiffHarmonics(Int_t order, Int_t *harmonics)
virtual void UserCreateOutputObjects()
void SetMaxMult(const char *type, Double_t maxMult)
void SetnBins(const char *type, const char *variable, Int_t nBins)
TH1D * fWeightsHist[2][3]
void SetDontFill(const char *type)
Int_t fMaxNoEventsPerFile