1 /*************************************************************************
2 * Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 /****************************************
17 * analysis task for flow analysis with *
18 * multi-particle correlations *
20 * author: Ante Bilandzic *
21 * (abilandzic@gmail.com) *
22 ***************************************/
24 #include "Riostream.h"
25 #include "AliFlowEventSimple.h"
26 #include "AliAnalysisTaskMultiparticleCorrelations.h"
27 #include "AliFlowAnalysisWithMultiparticleCorrelations.h"
33 ClassImp(AliAnalysisTaskMultiparticleCorrelations)
35 //================================================================================================================
37 AliAnalysisTaskMultiparticleCorrelations::AliAnalysisTaskMultiparticleCorrelations(const char *name, Bool_t useParticleWeights):
38 AliAnalysisTaskSE(name),
42 fUseInternalFlags(kFALSE),
47 fDumpThePoints(kFALSE),
48 fMaxNoEventsPerFile(100),
49 fFillControlHistograms(kFALSE),
50 fFillKinematicsHist(kFALSE),
51 fFillMultDistributionsHist(kFALSE),
52 fFillMultCorrelationsHist(kFALSE),
53 fCalculateQvector(kFALSE),
54 fCalculateDiffQvectors(kFALSE),
56 fCalculateCorrelations(kFALSE),
57 fCalculateIsotropic(kFALSE),
58 fCalculateSame(kFALSE),
59 fSkipZeroHarmonics(kFALSE),
60 fCalculateSameIsotropic(kFALSE),
61 fCalculateAll(kFALSE),
63 fCalculateOnlyForHarmonicQC(kFALSE),
64 fCalculateOnlyForSC(kFALSE),
65 fCalculateOnlyCos(kFALSE),
66 fCalculateOnlySin(kFALSE),
67 fCalculateEbECumulants(kFALSE),
68 fCrossCheckWithNestedLoops(kFALSE),
69 fCrossCheckDiffWithNestedLoops(kFALSE),
70 fCalculateStandardCandles(kFALSE),
71 fPropagateErrorSC(kTRUE),
72 fCalculateQcumulants(kFALSE),
74 fPropagateErrorQC(kTRUE),
75 fCalculateDiffCorrelations(kFALSE),
76 fCalculateDiffCos(kTRUE),
77 fCalculateDiffSin(kFALSE),
78 fCalculateDiffCorrelationsVsPt(kTRUE),
79 fUseDefaultBinning(kTRUE),
85 AliDebug(2,"AliAnalysisTaskMultiparticleCorrelations::AliAnalysisTaskMultiparticleCorrelations(const char *name, Bool_t useParticleWeights)");
87 // Define input and output slots here
88 // Input slot #0 works with an AliFlowEventSimple
89 DefineInput(0, AliFlowEventSimple::Class());
90 // Input slot #1 is needed for the weights input file:
91 if(useParticleWeights)
93 DefineInput(1, TList::Class());
95 // Output slot #0 is reserved
96 // Output slot #1 writes into a TList container
97 DefineOutput(1, TList::Class());
99 // Initialize all arrays:
100 for(Int_t rp=0;rp<2;rp++) // [RP,POI]
102 for(Int_t ppe=0;ppe<3;ppe++) // [phi,pt,eta]
104 fUseWeights[rp][ppe] = kFALSE;
105 fWeightsHist[rp][ppe] = NULL;
108 // For nested loops arrays:
109 fCrossCheckDiffCSCOBN[0] = 0; // cos/sin
110 fCrossCheckDiffCSCOBN[1] = 2; // correlator order
111 fCrossCheckDiffCSCOBN[2] = 4; // bin number
112 // Initialize default vaulues for fDontFill[3]:
113 fDontFill[0] = kFALSE;
114 fDontFill[1] = kFALSE;
115 fDontFill[2] = kFALSE;
116 // Initialize default binning values for fKinematicsHist[2][3]:
118 fnBins[0][0] = 360; // [RP][phi]
119 fnBins[0][1] = 1000; // [RP][pt]
120 fnBins[0][2] = 1000; // [RP][eta]
121 fnBins[1][0] = 360; // [POI][phi]
122 fnBins[1][1] = 1000; // [POI][pt]
123 fnBins[1][2] = 1000; // [POI][eta]
125 fMin[0][0] = 0.; // [RP][phi]
126 fMin[0][1] = 0.; // [RP][pt]
127 fMin[0][2] = -1.; // [RP][eta]
128 fMin[1][0] = 0.; // [POI][phi]
129 fMin[1][1] = 0.; // [POI][pt]
130 fMin[1][2] = -1.; // [POI][eta]
132 fMax[0][0] = TMath::TwoPi(); // [RP][phi]
133 fMax[0][1] = 10.; // [RP][pt]
134 fMax[0][2] = 1.; // [RP][eta]
135 fMax[1][0] = TMath::TwoPi(); // [POI][phi]
136 fMax[1][1] = 10.; // [POI][pt]
137 fMax[1][2] = 1.; // [POI][eta]
138 // Initialize default binning values for fMultCorrelationsHist[3]:
140 fnBinsMult[0] = 3000; // [RP]
141 fnBinsMult[1] = 3000; // [POI]
142 fnBinsMult[2] = 3000; // [REF]
144 fMinMult[0] = 0.; // [RP]
145 fMinMult[1] = 0.; // [POI]
146 fMinMult[2] = 0.; // [REF]
148 fMaxMult[0] = 3000.; // [RP]
149 fMaxMult[1] = 3000.; // [POI]
150 fMaxMult[2] = 3000.; // [REF]
152 } // AliAnalysisTaskMultiparticleCorrelations::AliAnalysisTaskMultiparticleCorrelations(const char *name, Bool_t useParticleWeights):
154 //================================================================================================================
156 AliAnalysisTaskMultiparticleCorrelations::AliAnalysisTaskMultiparticleCorrelations():
161 fUseInternalFlags(kFALSE),
166 fDumpThePoints(kFALSE),
167 fMaxNoEventsPerFile(0),
168 fFillControlHistograms(kFALSE),
169 fFillKinematicsHist(kFALSE),
170 fFillMultDistributionsHist(kFALSE),
171 fFillMultCorrelationsHist(kFALSE),
172 fCalculateQvector(kFALSE),
173 fCalculateDiffQvectors(kFALSE),
175 fCalculateCorrelations(kFALSE),
176 fCalculateIsotropic(kFALSE),
177 fCalculateSame(kFALSE),
178 fSkipZeroHarmonics(kFALSE),
179 fCalculateSameIsotropic(kFALSE),
180 fCalculateAll(kFALSE),
182 fCalculateOnlyForHarmonicQC(kFALSE),
183 fCalculateOnlyForSC(kFALSE),
184 fCalculateOnlyCos(kFALSE),
185 fCalculateOnlySin(kFALSE),
186 fCalculateEbECumulants(kFALSE),
187 fCrossCheckWithNestedLoops(kFALSE),
188 fCrossCheckDiffWithNestedLoops(kFALSE),
189 fCalculateStandardCandles(kFALSE),
190 fPropagateErrorSC(kFALSE),
191 fCalculateQcumulants(kFALSE),
193 fPropagateErrorQC(kFALSE),
194 fCalculateDiffCorrelations(kFALSE),
195 fCalculateDiffCos(kTRUE),
196 fCalculateDiffSin(kFALSE),
197 fCalculateDiffCorrelationsVsPt(kTRUE),
198 fUseDefaultBinning(kTRUE),
200 fRangesDiffBins(NULL)
202 // Dummy constructor.
204 AliDebug(2,"AliAnalysisTaskMultiparticleCorrelations::AliAnalysisTaskMultiparticleCorrelations()");
206 // Initialize all arrays:
207 for(Int_t rp=0;rp<2;rp++) // [RP,POI]
209 for(Int_t ppe=0;ppe<3;ppe++) // [phi,pt,eta]
211 fUseWeights[rp][ppe] = kFALSE;
212 fWeightsHist[rp][ppe] = NULL;
215 // For nested loops arrays:
216 fCrossCheckDiffCSCOBN[0] = 0; // cos/sin
217 fCrossCheckDiffCSCOBN[1] = 2; // correlator order
218 fCrossCheckDiffCSCOBN[2] = 4; // bin number
219 // Initialize default vaulues for fDontFill[3]:
220 fDontFill[0] = kFALSE;
221 fDontFill[1] = kFALSE;
222 fDontFill[2] = kFALSE;
223 // Initialize default binning values for fKinematicsHist[2][3]:
225 fnBins[0][0] = 360; // [RP][phi]
226 fnBins[0][1] = 1000; // [RP][pt]
227 fnBins[0][2] = 1000; // [RP][eta]
228 fnBins[1][0] = 360; // [POI][phi]
229 fnBins[1][1] = 1000; // [POI][pt]
230 fnBins[1][2] = 1000; // [POI][eta]
232 fMin[0][0] = 0.; // [RP][phi]
233 fMin[0][1] = 0.; // [RP][pt]
234 fMin[0][2] = -1.; // [RP][eta]
235 fMin[1][0] = 0.; // [POI][phi]
236 fMin[1][1] = 0.; // [POI][pt]
237 fMin[1][2] = -1.; // [POI][eta]
239 fMax[0][0] = TMath::TwoPi(); // [RP][phi]
240 fMax[0][1] = 10.; // [RP][pt]
241 fMax[0][2] = 1.; // [RP][eta]
242 fMax[1][0] = TMath::TwoPi(); // [POI][phi]
243 fMax[1][1] = 10.; // [POI][pt]
244 fMax[1][2] = 1.; // [POI][eta]
245 // Initialize default binning values for fMultCorrelationsHist[3]:
247 fnBinsMult[0] = 3000; // [RP]
248 fnBinsMult[1] = 3000; // [POI]
249 fnBinsMult[2] = 3000; // [REF]
251 fMinMult[0] = 0.; // [RP]
252 fMinMult[1] = 0.; // [POI]
253 fMinMult[2] = 0.; // [REF]
255 fMaxMult[0] = 3000.; // [RP]
256 fMaxMult[1] = 3000.; // [POI]
257 fMaxMult[2] = 3000.; // [REF]
259 } // AliAnalysisTaskMultiparticleCorrelations::AliAnalysisTaskMultiparticleCorrelations():
261 //================================================================================================================
263 void AliAnalysisTaskMultiparticleCorrelations::UserCreateOutputObjects()
265 // Called at every worker node to initialize.
267 AliDebug(2,"AliAnalysisTaskMultiparticleCorrelations::UserCreateOutputObjects()");
268 TString sMethodName = "void AliAnalysisTaskMultiparticleCorrelations::UserCreateOutputObjects()";
271 fMPC = new AliFlowAnalysisWithMultiparticleCorrelations();
274 if(fUseInternalFlags){fMPC->SetMinNoRPs(fMinNoRPs);}
275 if(fUseInternalFlags){fMPC->SetMaxNoRPs(fMaxNoRPs);}
276 if(fUseInternalFlags){fMPC->SetExactNoRPs(fExactNoRPs);}
277 fMPC->SetAnalysisTag(fAnalysisTag.Data());
278 fMPC->SetDumpThePoints(fDumpThePoints,fMaxNoEventsPerFile);
279 fMPC->SetFillControlHistograms(fFillControlHistograms);
280 if(fDontFill[0]){fMPC->SetDontFill("RP");}
281 if(fDontFill[1]){fMPC->SetDontFill("POI");}
282 if(fDontFill[2]){fMPC->SetDontFill("REF");}
283 fMPC->SetFillKinematicsHist(fFillKinematicsHist);
284 fMPC->SetFillMultDistributionsHist(fFillMultDistributionsHist);
285 fMPC->SetFillMultCorrelationsHist(fFillMultCorrelationsHist);
286 fMPC->SetCalculateQvector(fCalculateQvector);
287 fMPC->SetCalculateDiffQvectors(fCalculateDiffQvectors);
288 fMPC->SetCalculateCorrelations(fCalculateCorrelations);
289 fMPC->SetCalculateIsotropic(fCalculateIsotropic);
290 fMPC->SetCalculateSame(fCalculateSame);
291 fMPC->SetSkipZeroHarmonics(fSkipZeroHarmonics);
292 fMPC->SetCalculateSameIsotropic(fCalculateSameIsotropic);
293 fMPC->SetCalculateAll(fCalculateAll);
294 fMPC->SetDontGoBeyond(fDontGoBeyond);
295 fMPC->SetCalculateOnlyForHarmonicQC(fCalculateOnlyForHarmonicQC);
296 fMPC->SetCalculateOnlyForSC(fCalculateOnlyForSC);
297 fMPC->SetCalculateOnlyCos(fCalculateOnlyCos);
298 fMPC->SetCalculateOnlySin(fCalculateOnlySin);
299 fMPC->SetCalculateEbECumulants(fCalculateEbECumulants);
300 fMPC->SetCrossCheckWithNestedLoops(fCrossCheckWithNestedLoops);
301 fMPC->SetCrossCheckDiffWithNestedLoops(fCrossCheckDiffWithNestedLoops);
302 fMPC->SetCrossCheckDiffCSCOBN(fCrossCheckDiffCSCOBN[0],fCrossCheckDiffCSCOBN[1],fCrossCheckDiffCSCOBN[2]);
303 fMPC->SetCalculateStandardCandles(fCalculateStandardCandles);
304 fMPC->SetPropagateErrorSC(fPropagateErrorSC);
305 fMPC->SetCalculateQcumulants(fCalculateQcumulants);
306 fMPC->SetHarmonicQC(fHarmonicQC);
307 fMPC->SetPropagateErrorQC(fPropagateErrorQC);
308 fMPC->SetCalculateDiffCorrelations(fCalculateDiffCorrelations);
309 fMPC->SetCalculateDiffCos(fCalculateDiffCos);
310 fMPC->SetCalculateDiffSin(fCalculateDiffSin);
311 fMPC->SetCalculateDiffCorrelationsVsPt(fCalculateDiffCorrelationsVsPt);
312 fMPC->SetUseDefaultBinning(fUseDefaultBinning);
313 fMPC->SetnDiffBins(fnDiffBins);
314 fMPC->SetRangesDiffBins(fRangesDiffBins);
317 TString type[2] = {"RP","POI"};
318 TString variable[3] = {"phi","pt","eta"};
319 for(Int_t rp=0;rp<2;rp++) // [RP,POI]
321 for(Int_t ppe=0;ppe<3;ppe++) // [phi,pt,eta]
323 if(fUseWeights[rp][ppe])
325 if(!fWeightsHist[rp][ppe])
327 if(fProduction.EqualTo("")){Fatal(sMethodName.Data(),"fProduction is empty, for one reason or another...");}
328 fWeightsHist[rp][ppe] = GetHistogramWithWeights(TString(Form("%s/%s",gSystem->pwd(),"weights.root")).Data(),TString(this->fName).Data(),type[rp].Data(),variable[ppe].Data(),fProduction.Data());
330 if(!fWeightsHist[rp][ppe])
332 Fatal(sMethodName.Data(),"fWeightsHist[%d][%d]",rp,ppe);
333 } else{fMPC->SetWeightsHist(fWeightsHist[rp][ppe],type[rp].Data(),variable[ppe].Data());}
334 } // if(fUseWeights[rp][ppe])
335 } // for(Int_t ppe=0;ppe<3;ppe++) // [phi,pt,eta]
336 } // for(Int_t rp=0;rp<2;rp++) // [RP,POI]
340 //TString typeKine[2] = {"RP","POI"};
341 //TString variable[3] = {"phi","pt","eta"};
342 for(Int_t rp=0;rp<2;rp++) // [RP,POI]
344 for(Int_t ppe=0;ppe<3;ppe++) // [phi,pt,eta]
346 fMPC->SetnBins(type[rp].Data(),variable[ppe].Data(),fnBins[rp][ppe]);
347 fMPC->SetMin(type[rp].Data(),variable[ppe].Data(),fMin[rp][ppe]);
348 fMPC->SetMax(type[rp].Data(),variable[ppe].Data(),fMax[rp][ppe]);
349 } // for(Int_t ppe=0;ppe<3;ppe++) // [phi,pt,eta]
350 } // for(Int_t rp=0;rp<2;rp++) // [RP,POI]
352 TString typeMult[3] = {"RP","POI","REF"};
353 for(Int_t rpr=0;rpr<3;rpr++) // [RP,POI,REF]
355 fMPC->SetnBinsMult(typeMult[rpr].Data(),fnBinsMult[rpr]);
356 fMPC->SetMinMult(typeMult[rpr].Data(),fMinMult[rpr]);
357 fMPC->SetMaxMult(typeMult[rpr].Data(),fMaxMult[rpr]);
358 } // for(Int_t rpr=0;rpr<3;rpr++) // [RP,POI,REF]
362 if(fMPC->GetHistList())
364 fHistList = fMPC->GetHistList();
365 // fHistList->Print();
368 Printf("ERROR: Could not retrieve histogram list (MPC, Task::UserCreateOutputObjects()) !!!!");
371 PostData(1,fHistList);
373 } // void AliAnalysisTaskMultiparticleCorrelations::UserCreateOutputObjects()
375 //================================================================================================================
377 void AliAnalysisTaskMultiparticleCorrelations::UserExec(Option_t *)
379 // Main loop (called for each event).
381 fEvent = dynamic_cast<AliFlowEventSimple*>(GetInputData(0));
383 // It's time for multi-particle correlations:
389 cout<<" WARNING: No input data (MPC, Task::UserExec()) !!!!"<<endl;
393 PostData(1,fHistList);
395 } // void AliAnalysisTaskMultiparticleCorrelations::UserExec(Option_t *)
397 //================================================================================================================
399 void AliAnalysisTaskMultiparticleCorrelations::Terminate(Option_t *)
401 // Accessing the merged output list.
403 fHistList = (TList*)GetOutputData(1);
405 fMPC = new AliFlowAnalysisWithMultiparticleCorrelations();
409 fMPC->GetOutputHistograms(fHistList);
411 PostData(1,fHistList);
414 cout<<" WARNING: fHistList is NULL (MPC, Task::Terminate()) !!!!"<<endl;
418 } // end of void AliAnalysisTaskMultiparticleCorrelations::Terminate(Option_t *)
420 //================================================================================================================
422 void AliAnalysisTaskMultiparticleCorrelations::SetWeightsHist(TH1D* const hist, const char *type, const char *variable)
424 // Pass histogram holding weights from an external file to the corresponding data member.
426 TString sMethodName = "void AliAnalysisTaskMultiparticleCorrelations::SetWeightsHist(TH1D* const hist, const char *type, const char *variable)";
429 if(!hist){Fatal(sMethodName.Data(),"hist");}
430 if(!(TString(type).EqualTo("RP") || TString(type).EqualTo("POI"))){Fatal(sMethodName.Data(),"!(TString(type).EqualTo... type = %s ",type);}
431 if(!(TString(variable).EqualTo("phi") || TString(variable).EqualTo("pt") || TString(variable).EqualTo("eta"))){Fatal(sMethodName.Data(),"!(TString(variable).EqualTo... variable = %s ",variable);}
433 Int_t rp = 0; // [RP,POI]
434 if(TString(type).EqualTo("POI")){rp=1;}
436 Int_t ppe = 0; // [phi,pt,eta]
437 if(TString(variable).EqualTo("pt")){ppe=1;}
438 if(TString(variable).EqualTo("eta")){ppe=2;}
441 hist->SetDirectory(0);
442 fWeightsHist[rp][ppe] = (TH1D*)hist->Clone();
443 if(!fWeightsHist[rp][ppe]){Fatal(sMethodName.Data(),"fWeightsHist[%d][%d]",rp,ppe);}
445 fUseWeights[rp][ppe] = kTRUE;
447 } // void AliAnalysisTaskMultiparticleCorrelations::SetWeightsHist(TH1D* const hwh, const char *type, const char *variable)
449 //================================================================================================================
451 void AliAnalysisTaskMultiparticleCorrelations::SetnBins(const char *type, const char *variable, Int_t nBins)
453 // Set number of bins for histograms fKinematicsHist[2][3].
455 TString sMethodName = "void AliAnalysisTaskMultiparticleCorrelations::SetnBins(const char *type, const char *variable, Int_t nBins)";
458 if(!(TString(type).EqualTo("RP") || TString(type).EqualTo("POI")))
460 cout<<"Well, it would be better for you to use RP or POI here..."<<endl;
461 Fatal(sMethodName.Data(),"!(TString(type).EqualTo... type = %s ",type);
463 if(!(TString(variable).EqualTo("phi") || TString(variable).EqualTo("pt") || TString(variable).EqualTo("eta")))
465 cout<<"phi, pt or eta, please!"<<endl;
466 Fatal(sMethodName.Data(),"!(TString(variable).EqualTo... variable = %s ",variable);
469 Int_t rp = 0; // [RP,POI]
470 if(TString(type).EqualTo("POI")){rp=1;}
472 Int_t ppe = 0; // [phi,pt,eta]
473 if(TString(variable).EqualTo("pt")){ppe=1;}
474 if(TString(variable).EqualTo("eta")){ppe=2;}
476 fnBins[rp][ppe] = nBins;
478 } // void AliAnalysisTaskMultiparticleCorrelations::SetnBins(const char *type, const char *variable, Int_t nBins)
480 //=======================================================================================================================
482 void AliAnalysisTaskMultiparticleCorrelations::SetMin(const char *type, const char *variable, Double_t min)
484 // Set min bin range for histograms fKinematicsHist[2][3].
486 TString sMethodName = "void AliAnalysisTaskMultiparticleCorrelations::SetMin(const char *type, const char *variable, Double_t min)";
489 if(!(TString(type).EqualTo("RP") || TString(type).EqualTo("POI")))
491 cout<<"Well, it would be better for you to use RP or POI here..."<<endl;
492 Fatal(sMethodName.Data(),"!(TString(type).EqualTo... type = %s ",type);
494 if(!(TString(variable).EqualTo("phi") || TString(variable).EqualTo("pt") || TString(variable).EqualTo("eta")))
496 cout<<"phi, pt or eta, please!"<<endl;
497 Fatal(sMethodName.Data(),"!(TString(variable).EqualTo... variable = %s ",variable);
500 Int_t rp = 0; // [RP,POI]
501 if(TString(type).EqualTo("POI")){rp=1;}
503 Int_t ppe = 0; // [phi,pt,eta]
504 if(TString(variable).EqualTo("pt")){ppe=1;}
505 if(TString(variable).EqualTo("eta")){ppe=2;}
509 } // void AliAnalysisTaskMultiparticleCorrelations::SetMin(const char *type, const char *variable, Double_t min)
511 //=======================================================================================================================
513 void AliAnalysisTaskMultiparticleCorrelations::SetMax(const char *type, const char *variable, Double_t max)
515 // Set max bin range for histograms fKinematicsHist[2][3].
517 TString sMethodName = "void AliAnalysisTaskMultiparticleCorrelations::SetMax(const char *type, const char *variable, Double_t max)";
520 if(!(TString(type).EqualTo("RP") || TString(type).EqualTo("POI")))
522 cout<<"Well, it would be better for you to use RP or POI here..."<<endl;
523 Fatal(sMethodName.Data(),"!(TString(type).EqualTo... type = %s ",type);
525 if(!(TString(variable).EqualTo("phi") || TString(variable).EqualTo("pt") || TString(variable).EqualTo("eta")))
527 cout<<"phi, pt or eta, please!"<<endl;
528 Fatal(sMethodName.Data(),"!(TString(variable).EqualTo... variable = %s ",variable);
531 Int_t rp = 0; // [RP,POI]
532 if(TString(type).EqualTo("POI")){rp=1;}
534 Int_t ppe = 0; // [phi,pt,eta]
535 if(TString(variable).EqualTo("pt")){ppe=1;}
536 if(TString(variable).EqualTo("eta")){ppe=2;}
540 } // void AliAnalysisTaskMultiparticleCorrelations::SetMax(const char *type, const char *variable, Double_t min)
542 //=======================================================================================================================
544 void AliAnalysisTaskMultiparticleCorrelations::SetnBinsMult(const char *type, Int_t nBinsMult)
546 // Set number of bins for histograms fMultDistributionsHist[3].
548 TString sMethodName = "void AliAnalysisTaskMultiparticleCorrelations::SetnBinsMult(const char *type, Int_t nBinsMult)";
551 if(!(TString(type).EqualTo("RP") || TString(type).EqualTo("POI") || TString(type).EqualTo("REF")))
553 cout<<"Well, it would be better for you to use RP, POI or REF here..."<<endl;
554 Fatal(sMethodName.Data(),"!(TString(type).EqualTo... type = %s ",type);
557 Int_t rpr = 0; // [RP,POI,REF]
558 if(TString(type).EqualTo("POI")){rpr=1;}
559 else if(TString(type).EqualTo("REF")){rpr=2;}
561 fnBinsMult[rpr] = nBinsMult;
563 } // void AliAnalysisTaskMultiparticleCorrelations::SetnBinsMult(const char *type, Int_t nBinsMult)
565 //=======================================================================================================================
567 void AliAnalysisTaskMultiparticleCorrelations::SetMinMult(const char *type, Double_t minMult)
569 // Set min bin range for histograms fMultDistributionsHist[3].
571 TString sMethodName = "void AliAnalysisTaskMultiparticleCorrelations::SetMinMult(const char *type, Double_t minMult)";
574 if(!(TString(type).EqualTo("RP") || TString(type).EqualTo("POI") || TString(type).EqualTo("REF")))
576 cout<<"Well, it would be better for you to use RP, POI or REF here..."<<endl;
577 Fatal(sMethodName.Data(),"!(TString(type).EqualTo... type = %s ",type);
580 Int_t rpr = 0; // [RP,POI,REF]
581 if(TString(type).EqualTo("POI")){rpr=1;}
582 else if(TString(type).EqualTo("REF")){rpr=2;}
584 fMinMult[rpr] = minMult;
586 } // void AliAnalysisTaskMultiparticleCorrelations::SetMinMult(const char *type, Double_t minMult)
588 //=======================================================================================================================
590 void AliAnalysisTaskMultiparticleCorrelations::SetMaxMult(const char *type, Double_t maxMult)
592 // Set max bin range for histograms fMultDistributionsHist[3].
594 TString sMethodName = "void AliAnalysisTaskMultiparticleCorrelations::SetMaxMult(const char *type, Double_t maxMult)";
597 if(!(TString(type).EqualTo("RP") || TString(type).EqualTo("POI") || TString(type).EqualTo("REF")))
599 cout<<"Well, it would be better for you to use RP, POI or REF here..."<<endl;
600 Fatal(sMethodName.Data(),"!(TString(type).EqualTo... type = %s ",type);
603 Int_t rpr = 0; // [RP,POI,REF]
604 if(TString(type).EqualTo("POI")){rpr=1;}
605 else if(TString(type).EqualTo("REF")){rpr=2;}
607 fMaxMult[rpr] = maxMult;
609 } // void AliAnalysisTaskMultiparticleCorrelations::SetMaxMult(const char *type, Double_t minMult)
611 //=======================================================================================================================