]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG/FLOW/Base/AliFlowAnalysisWithQCumulants.cxx
- HF can take now all kind of histograms
[u/mrichter/AliRoot.git] / PWG / FLOW / Base / AliFlowAnalysisWithQCumulants.cxx
1 /*************************************************************************
2 * Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
3 *                                                                        *
4 * Author: The ALICE Off-line Project.                                    *
5 * Contributors are mentioned in the code where appropriate.              *
6 *                                                                        *
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 **************************************************************************/
15
16 /********************************** 
17  * flow analysis with Q-cumulants * 
18  *                                * 
19  * author: Ante Bilandzic         * 
20  *        (abilandzic@gmail.com)  *
21  *********************************/ 
22
23 #define AliFlowAnalysisWithQCumulants_cxx
24
25 #include "Riostream.h"
26 #include "AliFlowCommonConstants.h"
27 #include "AliFlowCommonHist.h"
28 #include "AliFlowCommonHistResults.h"
29 #include "TChain.h"
30
31 #include "TFile.h"
32 #include "TList.h"
33 #include "TGraph.h"
34 #include "TParticle.h"
35 #include "TRandom3.h"
36 #include "TStyle.h"
37 #include "TProfile.h"
38 #include "TProfile2D.h" 
39 #include "TMath.h"
40 #include "TArrow.h"
41 #include "TPaveLabel.h"
42 #include "TCanvas.h"
43 #include "AliFlowEventSimple.h"
44 #include "AliFlowTrackSimple.h"
45 #include "AliFlowAnalysisWithQCumulants.h"
46 #include "TArrayD.h"
47 #include "TRandom.h"
48 #include "TF1.h"
49
50 class TH1;
51 class TH2;
52 class TGraph;
53 class TPave;
54 class TLatex;
55 class TMarker;
56 class TRandom3;
57 class TObjArray;
58 class TList;
59 class TCanvas;
60 class TSystem;
61 class TROOT;
62 class AliFlowVector;
63 class TVector;
64
65 //================================================================================================================
66
67 using std::endl;
68 using std::cout;
69 using std::flush;
70 ClassImp(AliFlowAnalysisWithQCumulants)
71
72 AliFlowAnalysisWithQCumulants::AliFlowAnalysisWithQCumulants(): 
73  // 0.) base:
74  fHistList(NULL),
75  // 1.) common:
76  fBookOnlyBasicCCH(kTRUE),
77  fCommonHists(NULL),
78  fCommonHists2nd(NULL), 
79  fCommonHists4th(NULL),
80  fCommonHists6th(NULL),
81  fCommonHists8th(NULL),
82  fCommonHistsResults2nd(NULL),
83  fCommonHistsResults4th(NULL),
84  fCommonHistsResults6th(NULL),
85  fCommonHistsResults8th(NULL),
86  fnBinsPhi(0),
87  fPhiMin(0),
88  fPhiMax(0),
89  fPhiBinWidth(0),
90  fnBinsPt(0),
91  fPtMin(0),
92  fPtMax(0),
93  fPtBinWidth(0),
94  fnBinsEta(0),
95  fEtaMin(0),
96  fEtaMax(0),
97  fEtaBinWidth(0),
98  fCommonConstants(NULL),
99  fFillMultipleControlHistograms(kFALSE),
100  fHarmonic(2),
101  fAnalysisLabel(NULL),
102  // 2a.) particle weights:
103  fWeightsList(NULL),
104  fUsePhiWeights(kFALSE),
105  fUsePtWeights(kFALSE),
106  fUseEtaWeights(kFALSE),
107  fUseTrackWeights(kFALSE),
108  fUseParticleWeights(NULL),
109  fPhiWeights(NULL),
110  fPtWeights(NULL),
111  fEtaWeights(NULL),
112  // 2b.) event weights:
113  fMultiplicityWeight(NULL),
114  fMultiplicityIs(AliFlowCommonConstants::kRP),
115  // 3.) integrated flow:
116  fIntFlowList(NULL), 
117  fIntFlowProfiles(NULL),
118  fIntFlowResults(NULL),
119  fIntFlowAllCorrelationsVsM(NULL),
120  fIntFlowFlags(NULL),
121  fApplyCorrectionForNUA(kFALSE),  
122  fApplyCorrectionForNUAVsM(kFALSE),
123  fnBinsMult(10000),
124  fMinMult(0.),  
125  fMaxMult(10000.), 
126  fPropagateErrorAlsoFromNIT(kFALSE), 
127  fCalculateCumulantsVsM(kFALSE),
128  fCalculateAllCorrelationsVsM(kFALSE), 
129  fMinimumBiasReferenceFlow(kTRUE), 
130  fForgetAboutCovariances(kFALSE), 
131  fStorePhiDistributionForOneEvent(kFALSE),
132  fExactNoRPs(0),
133  fReQ(NULL),
134  fImQ(NULL),
135  fSpk(NULL),
136  fIntFlowCorrelationsEBE(NULL),
137  fIntFlowEventWeightsForCorrelationsEBE(NULL),
138  fIntFlowCorrelationsAllEBE(NULL),
139  fNumberOfRPsEBE(0.),
140  fNumberOfPOIsEBE(0.),
141  fReferenceMultiplicityEBE(0.),  
142  fAvMultiplicity(NULL),
143  fIntFlowCorrelationsPro(NULL),
144  fIntFlowSquaredCorrelationsPro(NULL),
145  fIntFlowCorrelationsAllPro(NULL),
146  fIntFlowExtraCorrelationsPro(NULL),
147  fIntFlowProductOfCorrelationsPro(NULL),
148  fIntFlowProductOfCorrectionTermsForNUAPro(NULL),
149  fIntFlowCorrelationsHist(NULL),
150  fIntFlowCorrelationsAllHist(NULL),
151  fIntFlowCovariances(NULL),
152  fIntFlowSumOfProductOfEventWeights(NULL),
153  fIntFlowCovariancesNUA(NULL),
154  fIntFlowSumOfProductOfEventWeightsNUA(NULL),
155  fIntFlowQcumulants(NULL),
156  fIntFlowQcumulantsRebinnedInM(NULL), 
157  fIntFlowQcumulantsErrorSquaredRatio(NULL), 
158  fIntFlow(NULL),
159  fIntFlowRebinnedInM(NULL),
160  fIntFlowDetectorBias(NULL),
161  // 4.) differential flow:
162  fDiffFlowList(NULL),
163  fDiffFlowProfiles(NULL),
164  fDiffFlowResults(NULL),
165  fDiffFlow2D(NULL),
166  fDiffFlowFlags(NULL),
167  fCalculateDiffFlow(kTRUE),
168  fCalculate2DDiffFlow(kFALSE),
169  fCalculateDiffFlowVsEta(kTRUE),
170  // 5.) other differential correlators:
171  fOtherDiffCorrelatorsList(NULL),
172  // 6.) distributions:
173  fDistributionsList(NULL),
174  fDistributionsFlags(NULL),
175  fStoreDistributions(kFALSE),
176  // 7.) various:
177  fVariousList(NULL),
178  fPhiDistributionForOneEvent(NULL),
179  // 8.) debugging and cross-checking:
180  fNestedLoopsList(NULL),
181  fEvaluateIntFlowNestedLoops(kFALSE),
182  fEvaluateDiffFlowNestedLoops(kFALSE),
183  fMaxAllowedMultiplicity(10),
184  fEvaluateNestedLoops(NULL),
185  fIntFlowDirectCorrelations(NULL),
186  fIntFlowExtraDirectCorrelations(NULL),
187  fCrossCheckInPtBinNo(10),
188  fCrossCheckInEtaBinNo(20),
189  fNoOfParticlesInBin(NULL),
190  fMixedHarmonicsNestedLoops(NULL),
191  // 9.) mixed harmonics: 
192  fMixedHarmonicsList(NULL),
193  fMixedHarmonicsProfiles(NULL),
194  fMixedHarmonicsResults(NULL),
195  fMixedHarmonicsErrorPropagation(NULL),
196  fMixedHarmonicsFlags(NULL),
197  fCalculateMixedHarmonics(kFALSE),
198  fCalculateMixedHarmonicsVsM(kFALSE),
199  f2pCorrelations(NULL),
200  f3pCorrelations(NULL),
201  f4pCorrelations(NULL),
202  f5pCorrelations(NULL),
203  f6pCorrelations(NULL),
204  f7pCorrelations(NULL),
205  f8pCorrelations(NULL),
206  f2pCumulants(NULL),
207  f3pCumulants(NULL),
208  f4pCumulants(NULL),
209  f5pCumulants(NULL),
210  f6pCumulants(NULL),
211  f7pCumulants(NULL),
212  f8pCumulants(NULL),
213  fMixedHarmonicProductOfEventWeights(NULL),
214  fMixedHarmonicProductOfCorrelations(NULL),
215  // 10.) Control histograms:
216  fControlHistogramsList(NULL), 
217  fControlHistogramsFlags(NULL),
218  fStoreControlHistograms(kFALSE),
219  fCorrelationNoRPsVsRefMult(NULL), 
220  fCorrelationNoPOIsVsRefMult(NULL),
221  fCorrelationNoRPsVsNoPOIs(NULL)
222  {
223   // constructor  
224   
225   // base list to hold all output objects:
226   fHistList = new TList();
227   fHistList->SetName("cobjQC");
228   fHistList->SetOwner(kTRUE);
229   
230   // list to hold histograms with phi, pt and eta weights:      
231   fWeightsList = new TList();
232   
233   // multiplicity weight:
234   fMultiplicityWeight = new TString("combinations");
235
236   // analysis label;
237   fAnalysisLabel = new TString();
238       
239   // initialize all arrays:  
240   this->InitializeArraysForIntFlow();
241   this->InitializeArraysForDiffFlow();
242   this->InitializeArraysForDistributions();
243   this->InitializeArraysForVarious();
244   this->InitializeArraysForNestedLoops();
245   this->InitializeArraysForMixedHarmonics();
246   this->InitializeArraysForControlHistograms();
247   
248  } // end of constructor
249  
250 //================================================================================================================  
251
252 AliFlowAnalysisWithQCumulants::~AliFlowAnalysisWithQCumulants()
253 {
254  // destructor
255  
256  delete fHistList;
257
258 } // end of AliFlowAnalysisWithQCumulants::~AliFlowAnalysisWithQCumulants()
259
260 //================================================================================================================
261
262 void AliFlowAnalysisWithQCumulants::Init()
263 {
264  // a) Cross check if the settings make sense before starting the QC adventure;
265  // b) Access all common constants;
266  // c) Book all objects;
267  // d) Store flags for integrated and differential flow;
268  // e) Store flags for distributions of corelations;
269  // f) Store harmonic which will be estimated;
270  // g) Store flags for mixed harmonics.
271   
272  //save old value and prevent histograms from being added to directory
273  //to avoid name clashes in case multiple analaysis objects are used
274  //in an analysis
275  Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
276  TH1::AddDirectory(kFALSE);
277  
278  // a) Cross check if the settings make sense before starting the QC adventure; 
279  this->CrossCheckSettings();
280  // b) Access all common constants and book a profile to hold them:
281  this->CommonConstants("Init");
282  // c) Book all objects:
283  this->BookAndFillWeightsHistograms(); 
284  this->BookAndNestAllLists();
285  this->BookCommonHistograms();
286  this->BookEverythingForIntegratedFlow(); 
287  this->BookEverythingForDifferentialFlow(); 
288  this->BookEverythingFor2DDifferentialFlow(); 
289  this->BookEverythingForDistributions();
290  this->BookEverythingForVarious();
291  this->BookEverythingForNestedLoops();
292  this->BookEverythingForMixedHarmonics();
293  this->BookEverythingForControlHistograms();
294
295  // d) Store flags for integrated and differential flow:
296  this->StoreIntFlowFlags();
297  this->StoreDiffFlowFlags();
298  // e) Store flags for distributions of corelations:
299  this->StoreFlagsForDistributions();
300  // f) Store harmonic which will be estimated:
301  this->StoreHarmonic();
302  // g) Store flags for mixed harmonics:
303  this->StoreMixedHarmonicsFlags();
304  
305  TH1::AddDirectory(oldHistAddStatus);
306 } // end of void AliFlowAnalysisWithQCumulants::Init()
307
308 //================================================================================================================
309
310 void AliFlowAnalysisWithQCumulants::Make(AliFlowEventSimple* anEvent)
311 {
312  // Running over data only in this method.
313  
314  // a) Check all pointers used in this method;
315  // b) Define local variables;
316  // c) Fill the common control histograms and call the method to fill fAvMultiplicity;
317  // d) Loop over data and calculate e-b-e quantities Q_{n,k}, S_{p,k} and s_{p,k};
318  // e) Calculate the final expressions for S_{p,k} and s_{p,k} (important !!!!); 
319  // f) Call the methods which calculate correlations for reference flow;
320  // g) Call the methods which calculate correlations for differential flow;
321  // h) Call the methods which calculate correlations for 2D differential flow;
322  // i) Call the methods which calculate other differential correlators;
323  // j) Distributions of correlations;
324  // k) Store phi distribution for one event to illustrate flow;
325  // l) Cross-check with nested loops correlators for reference flow;
326  // m) Cross-check with nested loops correlators for differential flow;
327  // n) Reset all event-by-event quantities (very important !!!!). 
328  
329  // a) Check all pointers used in this method:
330  this->CheckPointersUsedInMake();
331  
332  // b) Define local variables:
333  Double_t dPhi = 0.; // azimuthal angle in the laboratory frame
334  Double_t dPt  = 0.; // transverse momentum
335  Double_t dEta = 0.; // pseudorapidity
336  Double_t wPhi = 1.; // phi weight
337  Double_t wPt  = 1.; // pt weight
338  Double_t wEta = 1.; // eta weight
339  Double_t wTrack = 1.; // track weight
340  Int_t nCounterNoRPs = 0; // needed only for shuffling
341  fNumberOfRPsEBE = anEvent->GetNumberOfRPs(); // number of RPs (i.e. number of reference particles)
342  if(fExactNoRPs > 0 && fNumberOfRPsEBE<fExactNoRPs){return;}
343  fNumberOfPOIsEBE = anEvent->GetNumberOfPOIs(); // number of POIs (i.e. number of particles of interest)
344  fReferenceMultiplicityEBE = anEvent->GetReferenceMultiplicity(); // reference multiplicity for current event
345  Double_t ptEta[2] = {0.,0.}; // 0 = dPt, 1 = dEta
346   
347  // c) Fill the common control histograms and call the method to fill fAvMultiplicity:
348  this->FillCommonControlHistograms(anEvent);                                                               
349  this->FillAverageMultiplicities(fNumberOfRPsEBE); 
350  if(fStoreControlHistograms){this->FillControlHistograms(anEvent);}                                                              
351                                                                                                                                                                                                                                                                                         
352  // d) Loop over data and calculate e-b-e quantities Q_{n,k}, S_{p,k} and s_{p,k}:
353  Int_t nPrim = anEvent->NumberOfTracks();  // nPrim = total number of primary tracks
354  AliFlowTrackSimple *aftsTrack = NULL;
355  Int_t n = fHarmonic; // shortcut for the harmonic 
356  for(Int_t i=0;i<nPrim;i++) 
357  { 
358   if(fExactNoRPs > 0 && nCounterNoRPs>fExactNoRPs){continue;}
359   aftsTrack=anEvent->GetTrack(i);
360   if(aftsTrack)
361   {
362    if(!(aftsTrack->InRPSelection() || aftsTrack->InPOISelection())){continue;} // safety measure: consider only tracks which are RPs or POIs
363    if(aftsTrack->InRPSelection()) // RP condition:
364    {    
365     nCounterNoRPs++;
366     dPhi = aftsTrack->Phi();
367     dPt  = aftsTrack->Pt();
368     dEta = aftsTrack->Eta();
369     if(fUsePhiWeights && fPhiWeights && fnBinsPhi) // determine phi weight for this particle:
370     {
371      wPhi = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(dPhi*fnBinsPhi/TMath::TwoPi())));
372     }
373     if(fUsePtWeights && fPtWeights && fnBinsPt) // determine pt weight for this particle:
374     {
375      wPt = fPtWeights->GetBinContent(1+(Int_t)(TMath::Floor((dPt-fPtMin)/fPtBinWidth))); 
376     }              
377     if(fUseEtaWeights && fEtaWeights && fEtaBinWidth) // determine eta weight for this particle: 
378     {
379      wEta = fEtaWeights->GetBinContent(1+(Int_t)(TMath::Floor((dEta-fEtaMin)/fEtaBinWidth))); 
380     }      
381     // Access track weight:
382     if(fUseTrackWeights)
383     {
384      wTrack = aftsTrack->Weight(); 
385     }
386     // Calculate Re[Q_{m*n,k}] and Im[Q_{m*n,k}] for this event (m = 1,2,...,12, k = 0,1,...,8):
387     for(Int_t m=0;m<12;m++) // to be improved - hardwired 6 
388     {
389      for(Int_t k=0;k<9;k++) // to be improved - hardwired 9
390      {
391       (*fReQ)(m,k)+=pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi); 
392       (*fImQ)(m,k)+=pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi); 
393      } 
394     }
395     // Calculate S_{p,k} for this event (Remark: final calculation of S_{p,k} follows after the loop over data bellow):
396     for(Int_t p=0;p<8;p++)
397     {
398      for(Int_t k=0;k<9;k++)
399      {     
400       (*fSpk)(p,k)+=pow(wPhi*wPt*wEta*wTrack,k);
401      }
402     } 
403     // Differential flow:
404     if(fCalculateDiffFlow || fCalculate2DDiffFlow)
405     {
406      ptEta[0] = dPt; 
407      ptEta[1] = dEta; 
408      // Calculate r_{m*n,k} and s_{p,k} (r_{m,k} is 'p-vector' for RPs): 
409      for(Int_t k=0;k<9;k++) // to be improved - hardwired 9
410      {
411       for(Int_t m=0;m<4;m++) // to be improved - hardwired 4
412       {
413        if(fCalculateDiffFlow)
414        {
415         for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
416         {
417          fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
418          fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);          
419          if(m==0) // s_{p,k} does not depend on index m
420          {
421           fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k),1.);
422          } // end of if(m==0) // s_{p,k} does not depend on index m
423         } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
424        } // end of if(fCalculateDiffFlow) 
425        if(fCalculate2DDiffFlow)
426        {
427         fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
428         fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);      
429         if(m==0) // s_{p,k} does not depend on index m
430         {
431          fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k),1.);
432         } // end of if(m==0) // s_{p,k} does not depend on index m
433        } // end of if(fCalculate2DDiffFlow)
434       } // end of for(Int_t m=0;m<4;m++) // to be improved - hardwired 4
435      } // end of for(Int_t k=0;k<9;k++) // to be improved - hardwired 9
436      // Checking if RP particle is also POI particle:      
437      if(aftsTrack->InPOISelection())
438      {
439       // Calculate q_{m*n,k} and s_{p,k} ('q-vector' and 's' for RPs && POIs): 
440       for(Int_t k=0;k<9;k++) // to be improved - hardwired 9
441       {
442        for(Int_t m=0;m<4;m++) // to be improved - hardwired 4
443        {
444         if(fCalculateDiffFlow)
445         {
446          for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
447          {
448           fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
449           fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);          
450           if(m==0) // s_{p,k} does not depend on index m
451           {
452            fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k),1.);
453           } // end of if(m==0) // s_{p,k} does not depend on index m
454          } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
455         } // end of if(fCalculateDiffFlow) 
456         if(fCalculate2DDiffFlow)
457         {
458          fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
459          fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);      
460          if(m==0) // s_{p,k} does not depend on index m
461          {
462           fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k),1.);
463          } // end of if(m==0) // s_{p,k} does not depend on index m
464         } // end of if(fCalculate2DDiffFlow)
465        } // end of for(Int_t m=0;m<4;m++) // to be improved - hardwired 4
466       } // end of for(Int_t k=0;k<9;k++) // to be improved - hardwired 9    
467      } // end of if(aftsTrack->InPOISelection())  
468     } // end of if(fCalculateDiffFlow || fCalculate2DDiffFlow)         
469    } // end of if(pTrack->InRPSelection())
470    if(aftsTrack->InPOISelection())
471    {
472     dPhi = aftsTrack->Phi();
473     dPt  = aftsTrack->Pt();
474     dEta = aftsTrack->Eta();
475     wPhi = 1.;
476     wPt  = 1.;
477     wEta = 1.;
478     wTrack = 1.;
479     if(fUsePhiWeights && fPhiWeights && fnBinsPhi && aftsTrack->InRPSelection()) // determine phi weight for POI && RP particle:
480     {
481      wPhi = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(dPhi*fnBinsPhi/TMath::TwoPi())));
482     }
483     if(fUsePtWeights && fPtWeights && fnBinsPt && aftsTrack->InRPSelection()) // determine pt weight for POI && RP particle:
484     {
485      wPt = fPtWeights->GetBinContent(1+(Int_t)(TMath::Floor((dPt-fPtMin)/fPtBinWidth))); 
486     }              
487     if(fUseEtaWeights && fEtaWeights && fEtaBinWidth && aftsTrack->InRPSelection()) // determine eta weight for POI && RP particle: 
488     {
489      wEta = fEtaWeights->GetBinContent(1+(Int_t)(TMath::Floor((dEta-fEtaMin)/fEtaBinWidth))); 
490     }      
491     // Access track weight for POI && RP particle:
492     if(aftsTrack->InRPSelection() && fUseTrackWeights)
493     {
494      wTrack = aftsTrack->Weight(); 
495     }
496     ptEta[0] = dPt;
497     ptEta[1] = dEta;
498     // Calculate p_{m*n,k} ('p-vector' for POIs): 
499     for(Int_t k=0;k<9;k++) // to be improved - hardwired 9
500     {
501      for(Int_t m=0;m<4;m++) // to be improved - hardwired 4
502      {
503       if(fCalculateDiffFlow)
504       {
505        for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
506        {
507         fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
508         fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);          
509        } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
510       } // end of if(fCalculateDiffFlow) 
511       if(fCalculate2DDiffFlow)
512       {
513        fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
514        fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);      
515       } // end of if(fCalculate2DDiffFlow)
516      } // end of for(Int_t m=0;m<4;m++) // to be improved - hardwired 4
517     } // end of for(Int_t k=0;k<9;k++) // to be improved - hardwired 9    
518    } // end of if(pTrack->InPOISelection())    
519   } else // to if(aftsTrack)
520     {
521      printf("\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
522     }
523  } // end of for(Int_t i=0;i<nPrim;i++) 
524
525  // e) Calculate the final expressions for S_{p,k} and s_{p,k} (important !!!!):
526  for(Int_t p=0;p<8;p++)
527  {
528   for(Int_t k=0;k<9;k++)
529   {
530    (*fSpk)(p,k)=pow((*fSpk)(p,k),p+1);
531    // ... for the time being s_{p,k} dosn't need higher powers, so no need to finalize it here ...
532   } // end of for(Int_t k=0;k<9;k++)  
533  } // end of for(Int_t p=0;p<8;p++)
534  
535  // f) Call the methods which calculate correlations for reference flow:
536  if(!fEvaluateIntFlowNestedLoops)
537  {
538   if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
539   {
540    if(fNumberOfRPsEBE>1){this->CalculateIntFlowCorrelations();} // without using particle weights
541   } else // to if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
542     {
543      if(fNumberOfRPsEBE>1){this->CalculateIntFlowCorrelationsUsingParticleWeights();} // with using particle weights   
544     }        
545   // Whether or not using particle weights the following is calculated in the same way:  
546   if(fNumberOfRPsEBE>3){this->CalculateIntFlowProductOfCorrelations();}
547   if(fNumberOfRPsEBE>1){this->CalculateIntFlowSumOfEventWeights();}
548   if(fNumberOfRPsEBE>1){this->CalculateIntFlowSumOfProductOfEventWeights();}  
549   // Non-isotropic terms:
550   if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
551   {
552    if(fNumberOfRPsEBE>0){this->CalculateIntFlowCorrectionsForNUASinTerms();}
553    if(fNumberOfRPsEBE>0){this->CalculateIntFlowCorrectionsForNUACosTerms();}
554   } else // to if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
555     {
556      if(fNumberOfRPsEBE>0){this->CalculateIntFlowCorrectionsForNUASinTermsUsingParticleWeights();}
557      if(fNumberOfRPsEBE>0){this->CalculateIntFlowCorrectionsForNUACosTermsUsingParticleWeights();}     
558     }      
559   // Whether or not using particle weights the following is calculated in the same way:  
560   if(fNumberOfRPsEBE>0){this->CalculateIntFlowProductOfCorrectionTermsForNUA();}     
561   if(fNumberOfRPsEBE>0){this->CalculateIntFlowSumOfEventWeightsNUA();}     
562   if(fNumberOfRPsEBE>0){this->CalculateIntFlowSumOfProductOfEventWeightsNUA();}     
563   // Mixed harmonics:
564   if(fCalculateMixedHarmonics){this->CalculateMixedHarmonics();}
565  } // end of if(!fEvaluateIntFlowNestedLoops)
566
567  // g) Call the methods which calculate correlations for differential flow:
568  if(!fEvaluateDiffFlowNestedLoops && fCalculateDiffFlow)
569  {
570   if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
571   {
572    // Without using particle weights:
573    this->CalculateDiffFlowCorrelations("RP","Pt"); 
574    if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrelations("RP","Eta");}
575    this->CalculateDiffFlowCorrelations("POI","Pt");
576    if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrelations("POI","Eta");}
577    // Non-isotropic terms:
578    this->CalculateDiffFlowCorrectionsForNUASinTerms("RP","Pt");
579    if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUASinTerms("RP","Eta");}
580    this->CalculateDiffFlowCorrectionsForNUASinTerms("POI","Pt");
581    if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUASinTerms("POI","Eta");}
582    this->CalculateDiffFlowCorrectionsForNUACosTerms("RP","Pt");
583    if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUACosTerms("RP","Eta");}
584    this->CalculateDiffFlowCorrectionsForNUACosTerms("POI","Pt");
585    if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUACosTerms("POI","Eta");}   
586   } else // to if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
587     {
588      // With using particle weights:   
589      this->CalculateDiffFlowCorrelationsUsingParticleWeights("RP","Pt"); 
590      if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrelationsUsingParticleWeights("RP","Eta");} 
591      this->CalculateDiffFlowCorrelationsUsingParticleWeights("POI","Pt"); 
592      if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrelationsUsingParticleWeights("POI","Eta");} 
593      // Non-isotropic terms:
594      this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("RP","Pt");
595      if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("RP","Eta");}
596      this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("POI","Pt");
597      if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("POI","Eta");}
598      this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("RP","Pt");
599      if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("RP","Eta");}
600      this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("POI","Pt");
601      if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("POI","Eta");}   
602     }     
603   // Whether or not using particle weights the following is calculated in the same way:  
604   this->CalculateDiffFlowProductOfCorrelations("RP","Pt");
605   if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowProductOfCorrelations("RP","Eta");}
606   this->CalculateDiffFlowProductOfCorrelations("POI","Pt");
607   if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowProductOfCorrelations("POI","Eta");}
608   this->CalculateDiffFlowSumOfEventWeights("RP","Pt");
609   if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowSumOfEventWeights("RP","Eta");}
610   this->CalculateDiffFlowSumOfEventWeights("POI","Pt");
611   if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowSumOfEventWeights("POI","Eta");}
612   this->CalculateDiffFlowSumOfProductOfEventWeights("RP","Pt");
613   if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowSumOfProductOfEventWeights("RP","Eta");}
614   this->CalculateDiffFlowSumOfProductOfEventWeights("POI","Pt");
615   if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowSumOfProductOfEventWeights("POI","Eta");}   
616  } // end of if(!fEvaluateDiffFlowNestedLoops && fCalculateDiffFlow)
617
618  // h) Call the methods which calculate correlations for 2D differential flow:
619  if(!fEvaluateDiffFlowNestedLoops && fCalculate2DDiffFlow)
620  {
621   if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
622   {
623    // Without using particle weights:
624    this->Calculate2DDiffFlowCorrelations("RP"); 
625    this->Calculate2DDiffFlowCorrelations("POI");
626    // Non-isotropic terms:
627    // ... to be ctd ...
628   } else // to if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
629     {
630      // With using particle weights:   
631      // ... to be ctd ...  
632      // Non-isotropic terms:
633      // ... to be ctd ...
634     }     
635   // Whether or not using particle weights the following is calculated in the same way:  
636   // ... to be ctd ...   
637  } // end of if(!fEvaluateDiffFlowNestedLoops && fCalculate2DDiffFlow)
638  
639  // i) Call the methods which calculate other differential correlators:
640  if(!fEvaluateDiffFlowNestedLoops && fCalculateDiffFlow)
641  {
642   if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
643   {
644    // Without using particle weights:
645    this->CalculateOtherDiffCorrelators("RP","Pt"); 
646    if(fCalculateDiffFlowVsEta){this->CalculateOtherDiffCorrelators("RP","Eta");}
647    this->CalculateOtherDiffCorrelators("POI","Pt"); 
648    if(fCalculateDiffFlowVsEta){this->CalculateOtherDiffCorrelators("POI","Eta");}     
649   } else // to if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
650     {
651      // With using particle weights:   
652      // ... to be ctd ...  
653     }     
654   // Whether or not using particle weights the following is calculated in the same way:  
655   // ... to be ctd ...   
656  } // end of if(!fEvaluateDiffFlowNestedLoops)
657  
658  // j) Distributions of correlations:
659  if(fStoreDistributions){this->StoreDistributionsOfCorrelations();}
660  
661  // k) Store phi distribution for one event to illustrate flow: 
662  if(fStorePhiDistributionForOneEvent){this->StorePhiDistributionForOneEvent(anEvent);}
663    
664  // l) Cross-check with nested loops correlators for reference flow:
665  if(fEvaluateIntFlowNestedLoops){this->EvaluateIntFlowNestedLoops(anEvent);} 
666
667  // m) Cross-check with nested loops correlators for differential flow:
668  if(fEvaluateDiffFlowNestedLoops){this->EvaluateDiffFlowNestedLoops(anEvent);} 
669  
670  // n) Reset all event-by-event quantities (very important !!!!):
671  this->ResetEventByEventQuantities();
672  
673 } // end of AliFlowAnalysisWithQCumulants::Make(AliFlowEventSimple* anEvent)
674
675 //=======================================================================================================================
676
677 void AliFlowAnalysisWithQCumulants::Finish()
678 {
679  // Calculate the final results.
680  
681  // a) Check all pointers used in this method;
682  // b) Access the constants;
683  // c) Access the flags;
684  // d) Calculate reference cumulants (not corrected for detector effects);
685  // e) Correct reference cumulants for detector effects;
686  // f) Calculate reference flow;
687  // g) Store results for reference flow in AliFlowCommonHistResults and print them on the screen;
688  // h) Calculate the final results for differential flow (without/with weights);
689  // i) Correct the results for differential flow (without/with weights) for effects of non-uniform acceptance (NUA);
690  // j) Calculate the final results for integrated flow (RP/POI) and store in AliFlowCommonHistResults;
691  // k) Store results for differential flow in AliFlowCommonHistResults;
692  // l) Print the final results for integrated flow (RP/POI) on the screen; 
693  // m) Cross-checking: Results from Q-vectors vs results from nested loops;
694  // i) Calculate cumulants for mixed harmonics.
695
696  // a) Check all pointers used in this method:
697  this->CheckPointersUsedInFinish();
698   
699  // b) Access the constants:
700  this->CommonConstants("Finish");          
701  
702  if(fCommonHists && fCommonHists->GetHarmonic()) // to be improved (moved somewhere else)
703  {
704   fHarmonic = (Int_t)(fCommonHists->GetHarmonic())->GetBinContent(1);
705  } 
706  
707  // c) Access the flags: // to be improved (implement a method for this? should I store again the flags because they can get modified with redoFinish?)
708  fUsePhiWeights = (Bool_t)fUseParticleWeights->GetBinContent(1); 
709  fUsePtWeights = (Bool_t)fUseParticleWeights->GetBinContent(2); 
710  fUseEtaWeights = (Bool_t)fUseParticleWeights->GetBinContent(3);  
711  fUseTrackWeights = (Bool_t)fUseParticleWeights->GetBinContent(4);  
712  fApplyCorrectionForNUA = (Bool_t)fIntFlowFlags->GetBinContent(3); 
713  fPrintFinalResults[0] = (Bool_t)fIntFlowFlags->GetBinContent(4);
714  fPrintFinalResults[1] = (Bool_t)fIntFlowFlags->GetBinContent(5);
715  fPrintFinalResults[2] = (Bool_t)fIntFlowFlags->GetBinContent(6);
716  fPrintFinalResults[3] = (Bool_t)fIntFlowFlags->GetBinContent(7);
717  fApplyCorrectionForNUAVsM = (Bool_t)fIntFlowFlags->GetBinContent(8);  
718  fPropagateErrorAlsoFromNIT = (Bool_t)fIntFlowFlags->GetBinContent(9);  
719  fCalculateCumulantsVsM = (Bool_t)fIntFlowFlags->GetBinContent(10); 
720  fMinimumBiasReferenceFlow = (Bool_t)fIntFlowFlags->GetBinContent(11); 
721  fForgetAboutCovariances = (Bool_t)fIntFlowFlags->GetBinContent(12);
722  fStorePhiDistributionForOneEvent = (Bool_t)fIntFlowFlags->GetBinContent(13);
723  fFillMultipleControlHistograms = (Bool_t)fIntFlowFlags->GetBinContent(14); 
724  fCalculateAllCorrelationsVsM = (Bool_t)fIntFlowFlags->GetBinContent(15);
725  fEvaluateIntFlowNestedLoops = (Bool_t)fEvaluateNestedLoops->GetBinContent(1);
726  fEvaluateDiffFlowNestedLoops = (Bool_t)fEvaluateNestedLoops->GetBinContent(2); 
727  fCrossCheckInPtBinNo = (Int_t)fEvaluateNestedLoops->GetBinContent(3);
728  fCrossCheckInEtaBinNo = (Int_t)fEvaluateNestedLoops->GetBinContent(4); 
729  fCalculateMixedHarmonics = (Bool_t)fMixedHarmonicsFlags->GetBinContent(1);
730  //fHarmonic = (Int_t)fMixedHarmonicsFlags->GetBinContent(2); // TBI should I add inpdependent generic harmonic here?
731  fCalculateMixedHarmonicsVsM = (Bool_t)fMixedHarmonicsFlags->GetBinContent(3);
732
733  // d) Calculate reference cumulants (not corrected for detector effects):
734  this->FinalizeCorrelationsIntFlow();
735  this->CalculateCovariancesIntFlow();
736  this->CalculateCumulantsIntFlow();
737
738  // e) Correct reference cumulants for detector effects:
739  this->FinalizeCorrectionTermsForNUAIntFlow();
740  this->CalculateCovariancesNUAIntFlow(); 
741  this->CalculateQcumulantsCorrectedForNUAIntFlow();  
742
743  // f) Calculate reference flow:
744  this->CalculateReferenceFlow(); 
745   
746  // g) Store results for reference flow in AliFlowCommonHistResults and print them on the screen:
747  this->FillCommonHistResultsIntFlow();  
748  if(fPrintFinalResults[0]){this->PrintFinalResultsForIntegratedFlow("RF");}
749  if(fPrintFinalResults[3] && fCalculateCumulantsVsM){this->PrintFinalResultsForIntegratedFlow("RF, rebinned in M");}
750  
751  // h) Calculate the final results for differential flow (without/with weights):
752  if(fCalculateDiffFlow)
753  {
754   this->FinalizeReducedCorrelations("RP","Pt"); 
755   if(fCalculateDiffFlowVsEta){this->FinalizeReducedCorrelations("RP","Eta");} 
756   this->FinalizeReducedCorrelations("POI","Pt"); 
757   if(fCalculateDiffFlowVsEta){this->FinalizeReducedCorrelations("POI","Eta");}
758   this->CalculateDiffFlowCovariances("RP","Pt");
759   if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCovariances("RP","Eta");}
760   this->CalculateDiffFlowCovariances("POI","Pt");
761   if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCovariances("POI","Eta");}
762   this->CalculateDiffFlowCumulants("RP","Pt");
763   if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCumulants("RP","Eta");}
764   this->CalculateDiffFlowCumulants("POI","Pt");
765   if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCumulants("POI","Eta");}
766   this->CalculateDiffFlow("RP","Pt");
767   if(fCalculateDiffFlowVsEta){this->CalculateDiffFlow("RP","Eta");}
768   this->CalculateDiffFlow("POI","Pt");
769   if(fCalculateDiffFlowVsEta){this->CalculateDiffFlow("POI","Eta");}
770  } // if(fCalculateDiffFlow)
771  
772  // i) Correct the results for differential flow (without/with weights) for effects of non-uniform acceptance (NUA):
773  if(fCalculateDiffFlow)
774  {
775   this->FinalizeCorrectionTermsForNUADiffFlow("RP","Pt");
776   if(fCalculateDiffFlowVsEta){this->FinalizeCorrectionTermsForNUADiffFlow("RP","Eta");}
777   this->FinalizeCorrectionTermsForNUADiffFlow("POI","Pt");
778   if(fCalculateDiffFlowVsEta){this->FinalizeCorrectionTermsForNUADiffFlow("POI","Eta");}      
779   this->CalculateDiffFlowCumulantsCorrectedForNUA("RP","Pt");   
780   if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCumulantsCorrectedForNUA("RP","Eta");}   
781   this->CalculateDiffFlowCumulantsCorrectedForNUA("POI","Pt");   
782   if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCumulantsCorrectedForNUA("POI","Eta");}  
783   if(fApplyCorrectionForNUA)
784   {
785    this->CalculateDiffFlowCorrectedForNUA("RP","Pt"); 
786    if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectedForNUA("RP","Eta");} 
787    this->CalculateDiffFlowCorrectedForNUA("POI","Pt"); 
788    if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectedForNUA("POI","Eta");} 
789   }
790  } // end of if(fCalculateDiffFlow && fApplyCorrectionForNUA)
791  
792  // i) Calcualate final results for 2D differential flow: 
793  if(fCalculate2DDiffFlow)
794  {
795   this->Calculate2DDiffFlowCumulants("RP");
796   this->Calculate2DDiffFlowCumulants("POI");
797   this->Calculate2DDiffFlow("RP");  
798   this->Calculate2DDiffFlow("POI");  
799  } // end of if(fCalculate2DDiffFlow)
800     
801  // j) Calculate the final results for integrated flow (RP/POI) and store in AliFlowCommonHistResults:
802  if(fCalculateDiffFlow)
803  {
804   this->CalculateFinalResultsForRPandPOIIntegratedFlow("RP");
805   this->CalculateFinalResultsForRPandPOIIntegratedFlow("POI");
806  }
807  
808  // k) Store results for differential flow in AliFlowCommonHistResults:
809  if(fCalculateDiffFlow)
810  {
811   this->FillCommonHistResultsDiffFlow("RP");
812   this->FillCommonHistResultsDiffFlow("POI");
813  }
814  
815  // l) Print the final results for integrated flow (RP/POI) on the screen:
816  if(fPrintFinalResults[1] && fCalculateDiffFlow){this->PrintFinalResultsForIntegratedFlow("RP");} 
817  if(fPrintFinalResults[2] && fCalculateDiffFlow){this->PrintFinalResultsForIntegratedFlow("POI");}
818     
819  // m) Cross-checking: Results from Q-vectors vs results from nested loops:
820  //  m1) Reference flow:
821  if(fEvaluateIntFlowNestedLoops)
822  {
823   this->CrossCheckIntFlowCorrelations();
824   this->CrossCheckIntFlowCorrectionTermsForNUA(); 
825   if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights){this->CrossCheckIntFlowExtraCorrelations();}
826   if(fCalculateMixedHarmonics){this->CrossCheckIntFlowCorrelations();}     
827  } // end of if(fEvaluateIntFlowNestedLoops)  
828  //  m2) Differential flow: 
829  if(fEvaluateDiffFlowNestedLoops && fCalculateDiffFlow) 
830  {
831   // Correlations:
832   this->PrintNumberOfParticlesInSelectedBin();
833   this->CrossCheckDiffFlowCorrelations("RP","Pt");  
834   if(fCalculateDiffFlowVsEta){this->CrossCheckDiffFlowCorrelations("RP","Eta");} 
835   this->CrossCheckDiffFlowCorrelations("POI","Pt");  
836   if(fCalculateDiffFlowVsEta){this->CrossCheckDiffFlowCorrelations("POI","Eta");}
837   // Correction terms for non-uniform acceptance:
838   this->CrossCheckDiffFlowCorrectionTermsForNUA("RP","Pt");      
839   if(fCalculateDiffFlowVsEta){this->CrossCheckDiffFlowCorrectionTermsForNUA("RP","Eta");}       
840   this->CrossCheckDiffFlowCorrectionTermsForNUA("POI","Pt");      
841   if(fCalculateDiffFlowVsEta){this->CrossCheckDiffFlowCorrectionTermsForNUA("POI","Eta");}
842   // Other differential correlators:       
843   this->CrossCheckOtherDiffCorrelators("RP","Pt");  
844   if(fCalculateDiffFlowVsEta){this->CrossCheckOtherDiffCorrelators("RP","Eta");} 
845   this->CrossCheckOtherDiffCorrelators("POI","Pt");  
846   if(fCalculateDiffFlowVsEta){this->CrossCheckOtherDiffCorrelators("POI","Eta");}
847  } // end of if(fEvaluateDiffFlowNestedLoops)
848                                                                                 
849  // i) Calculate cumulants for mixed harmonics: 
850  if(fCalculateMixedHarmonics){this->CalculateCumulantsMixedHarmonics();} 
851
852 } // end of AliFlowAnalysisWithQCumulants::Finish()
853
854 //=======================================================================================================================
855
856 void AliFlowAnalysisWithQCumulants::EvaluateIntFlowNestedLoops(AliFlowEventSimple* anEvent)
857 {
858  // Evaluate all correlators for reference flow with nested loops.
859  
860  Int_t nPrim = anEvent->NumberOfTracks(); // number of primaries
861  if(nPrim>0 && nPrim<=fMaxAllowedMultiplicity) // by default fMaxAllowedMultiplicity = 10 
862  {
863   // Without using particle weights:
864   if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
865   {
866    // Correlations:
867    this->CalculateIntFlowCorrelations(); // from Q-vectors
868    this->EvaluateIntFlowCorrelationsWithNestedLoops(anEvent); // from nested loops (TBI: do I have to pass here anEvent or not?)
869    // Correction for non-uniform acceptance:
870    this->CalculateIntFlowCorrectionsForNUASinTerms(); // from Q-vectors (sin terms)
871    this->CalculateIntFlowCorrectionsForNUACosTerms(); // from Q-vectors (cos terms)
872    this->EvaluateIntFlowCorrectionsForNUAWithNestedLoops(anEvent); // from nested loops (both sin and cos terms)
873    // Mixed harmonics:
874    if(fCalculateMixedHarmonics)
875    {
876     this->CalculateMixedHarmonics(); // from Q-vectors  
877     this->EvaluateMixedHarmonicsWithNestedLoops(anEvent); // from nested loops (TBI: do I have to pass here anEvent or not?)
878    } // end of if(fCalculateMixedHarmonics)
879   }
880   // Using particle weights:
881   if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
882   {
883    // Correlations
884    this->CalculateIntFlowCorrelationsUsingParticleWeights(); // from Q-vectors
885    this->EvaluateIntFlowCorrelationsWithNestedLoopsUsingParticleWeights(anEvent); // from nested loops (to be improved: do I have to pass here anEvent or not?)
886    // Correction for non-uniform acceptance:
887    this->CalculateIntFlowCorrectionsForNUASinTermsUsingParticleWeights(); // from Q-vectors (sin terms)
888    this->CalculateIntFlowCorrectionsForNUACosTermsUsingParticleWeights(); // from Q-vectors (cos terms)
889    this->EvaluateIntFlowCorrectionsForNUAWithNestedLoopsUsingParticleWeights(anEvent); // from nested loops (both sin and cos terms)   
890   }
891  } else if(nPrim>fMaxAllowedMultiplicity) // to if(nPrim>0 && nPrim<=fMaxAllowedMultiplicity)
892    {
893     cout<<endl;
894     cout<<"Skipping the event because multiplicity is "<<nPrim<<". Too high to evaluate nested loops!"<<endl;
895    } else
896      {
897       cout<<endl;
898       cout<<"Skipping the event because multiplicity is "<<nPrim<<"."<<endl;      
899      } 
900
901 } // end of void AliFlowAnalysisWithQCumulants::EvaluateIntFlowNestedLoops(AliFlowEventSimple* anEvent)
902
903 //=======================================================================================================================
904
905 void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowNestedLoops(AliFlowEventSimple* anEvent)
906 {
907  // Evalauted all correlators for differential flow with nested loops.
908
909  if(!fCalculateDiffFlow){return;}
910
911  Int_t nPrim = anEvent->NumberOfTracks(); // number of primaries
912  if(nPrim>0 && nPrim<=fMaxAllowedMultiplicity) // by default fMaxAllowedMultiplicity = 10
913  {
914   // Without using particle weights:
915   if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
916   {
917    // 1.) Reduced correlations:
918    //  Q-vectors:
919    this->CalculateDiffFlowCorrelations("RP","Pt");
920    this->CalculateDiffFlowCorrelations("RP","Eta");
921    this->CalculateDiffFlowCorrelations("POI","Pt");
922    this->CalculateDiffFlowCorrelations("POI","Eta");
923    //  Nested loops:
924    this->EvaluateDiffFlowCorrelationsWithNestedLoops(anEvent,"RP","Pt"); 
925    this->EvaluateDiffFlowCorrelationsWithNestedLoops(anEvent,"RP","Eta"); 
926    this->EvaluateDiffFlowCorrelationsWithNestedLoops(anEvent,"POI","Pt"); 
927    this->EvaluateDiffFlowCorrelationsWithNestedLoops(anEvent,"POI","Eta"); 
928    // 2.) Reduced corrections for non-uniform acceptance:
929    //  Q-vectors:
930    this->CalculateDiffFlowCorrectionsForNUASinTerms("RP","Pt");
931    this->CalculateDiffFlowCorrectionsForNUASinTerms("RP","Eta");
932    this->CalculateDiffFlowCorrectionsForNUASinTerms("POI","Pt");
933    this->CalculateDiffFlowCorrectionsForNUASinTerms("POI","Eta");
934    this->CalculateDiffFlowCorrectionsForNUACosTerms("RP","Pt");
935    this->CalculateDiffFlowCorrectionsForNUACosTerms("RP","Eta");
936    this->CalculateDiffFlowCorrectionsForNUACosTerms("POI","Pt");
937    this->CalculateDiffFlowCorrectionsForNUACosTerms("POI","Eta");
938    //  Nested loops:
939    this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoops(anEvent,"RP","Pt");
940    this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoops(anEvent,"RP","Eta");
941    this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoops(anEvent,"POI","Pt"); 
942    this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoops(anEvent,"POI","Eta"); 
943    // 3.) Other differential correlators:
944    //  Q-vectors:
945    this->CalculateOtherDiffCorrelators("RP","Pt");
946    this->CalculateOtherDiffCorrelators("RP","Eta");
947    this->CalculateOtherDiffCorrelators("POI","Pt");
948    this->CalculateOtherDiffCorrelators("POI","Eta");   
949    //  Nested loops:
950    this->EvaluateOtherDiffCorrelatorsWithNestedLoops(anEvent,"RP","Pt");
951    this->EvaluateOtherDiffCorrelatorsWithNestedLoops(anEvent,"RP","Eta");
952    this->EvaluateOtherDiffCorrelatorsWithNestedLoops(anEvent,"POI","Pt");
953    this->EvaluateOtherDiffCorrelatorsWithNestedLoops(anEvent,"POI","Eta");   
954   } // end of if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
955   // Using particle weights:
956   if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
957   {
958    this->CalculateDiffFlowCorrelationsUsingParticleWeights("RP","Pt"); 
959    this->CalculateDiffFlowCorrelationsUsingParticleWeights("RP","Eta"); 
960    this->CalculateDiffFlowCorrelationsUsingParticleWeights("POI","Pt"); 
961    this->CalculateDiffFlowCorrelationsUsingParticleWeights("POI","Eta"); 
962    this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("RP","Pt");
963    this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("RP","Eta");
964    this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("POI","Pt");
965    this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("POI","Eta");
966    this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("RP","Pt");
967    this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("RP","Eta");
968    this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("POI","Pt");
969    this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("POI","Eta");
970    this->EvaluateDiffFlowCorrelationsWithNestedLoopsUsingParticleWeights(anEvent,"RP","Pt"); 
971    this->EvaluateDiffFlowCorrelationsWithNestedLoopsUsingParticleWeights(anEvent,"RP","Eta");
972    this->EvaluateDiffFlowCorrelationsWithNestedLoopsUsingParticleWeights(anEvent,"POI","Pt"); 
973    this->EvaluateDiffFlowCorrelationsWithNestedLoopsUsingParticleWeights(anEvent,"POI","Eta");   
974    this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoopsUsingParticleWeights(anEvent,"RP","Pt"); 
975    this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoopsUsingParticleWeights(anEvent,"RP","Eta"); 
976    this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoopsUsingParticleWeights(anEvent,"POI","Pt"); 
977    this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoopsUsingParticleWeights(anEvent,"POI","Eta"); 
978   } // end of if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
979  } // end of if(nPrim>0 && nPrim<=fMaxAllowedMultiplicity) // by default fMaxAllowedMultiplicity = 10
980
981 } // end of void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowNestedLoops(AliFlowEventSimple* anEvent)
982
983 //=======================================================================================================================
984
985 void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUACosTerms()
986 {
987  // Calculate correction terms for non-uniform acceptance of the detector for reference flow (cos terms).
988  
989  // multiplicity:
990  Double_t dMult = (*fSpk)(0,0);
991  
992  // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n: 
993  Double_t dReQ1n = (*fReQ)(0,0);
994  Double_t dReQ2n = (*fReQ)(1,0);
995  //Double_t dReQ3n = (*fReQ)(2,0);
996  //Double_t dReQ4n = (*fReQ)(3,0);
997  Double_t dImQ1n = (*fImQ)(0,0);
998  Double_t dImQ2n = (*fImQ)(1,0);
999  //Double_t dImQ3n = (*fImQ)(2,0);
1000  //Double_t dImQ4n = (*fImQ)(3,0);
1001
1002  // Multiplicity bin of an event (relevant for all histos vs M): 
1003  Double_t dMultiplicityBin = 0.;
1004  if(fMultiplicityIs==AliFlowCommonConstants::kRP)
1005  {
1006   dMultiplicityBin = fNumberOfRPsEBE+0.5;
1007  } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
1008    {
1009     dMultiplicityBin = fReferenceMultiplicityEBE+0.5;
1010    } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
1011      {
1012       dMultiplicityBin = fNumberOfPOIsEBE+0.5;
1013      } 
1014
1015  //                                  *************************************************************
1016  //                                  **** corrections for non-uniform acceptance (cos terms): ****
1017  //                                  *************************************************************
1018  //
1019  // Remark 1: corrections for non-uniform acceptance (cos terms) calculated with non-weighted Q-vectors 
1020  //           are stored in 1D profile fQCorrectionsCos.
1021  // Remark 2: binning of fIntFlowCorrectionTermsForNUAPro[1] is organized as follows:
1022  // --------------------------------------------------------------------------------------------------------------------
1023  // 1st bin: <<cos(n*(phi1))>> = cosP1n
1024  // 2nd bin: <<cos(n*(phi1+phi2))>> = cosP1nP1n
1025  // 3rd bin: <<cos(n*(phi1-phi2-phi3))>> = cosP1nM1nM1n
1026  // 4th bin: <<cos(n*(2phi1-phi2))>> = cosP2nM1n
1027  // --------------------------------------------------------------------------------------------------------------------
1028   
1029  // 1-particle:
1030  Double_t cosP1n = 0.; // <<cos(n*(phi1))>>
1031    
1032  if(dMult>0)
1033  {
1034   cosP1n = dReQ1n/dMult; 
1035   
1036   // average non-weighted 1-particle correction (cos terms) for non-uniform acceptance for single event:
1037   fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(1,cosP1n);
1038   // event weights for NUA terms:
1039   fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->SetBinContent(1,dMult);
1040   
1041   // final average non-weighted 1-particle correction (cos terms) for non-uniform acceptance for all events:
1042   fIntFlowCorrectionTermsForNUAPro[1]->Fill(0.5,cosP1n,dMult);  
1043   if(fCalculateCumulantsVsM){fIntFlowCorrectionTermsForNUAVsMPro[1][0]->Fill(dMultiplicityBin,cosP1n,dMult);}    
1044  } 
1045  
1046  // 2-particle:
1047  Double_t cosP1nP1n = 0.; // <<cos(n*(phi1+phi2))>>
1048  Double_t cosP2nM1n = 0.; // <<cos(n*(2phi1-phi2))>>
1049  
1050  if(dMult>1)
1051  {
1052   cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1)); 
1053   cosP2nM1n = (dReQ2n*dReQ1n+dImQ2n*dImQ1n-dReQ1n)/(dMult*(dMult-1)); 
1054   
1055   // average non-weighted 2-particle correction (cos terms) for non-uniform acceptance for single event:
1056   fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(2,cosP1nP1n);
1057   fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(4,cosP2nM1n);
1058   // event weights for NUA terms:
1059   fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->SetBinContent(2,dMult*(dMult-1));
1060   fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->SetBinContent(4,dMult*(dMult-1));
1061       
1062   // final average non-weighted 2-particle correction (cos terms) for non-uniform acceptance for all events:
1063   fIntFlowCorrectionTermsForNUAPro[1]->Fill(1.5,cosP1nP1n,dMult*(dMult-1));  
1064   fIntFlowCorrectionTermsForNUAPro[1]->Fill(3.5,cosP2nM1n,dMult*(dMult-1));
1065   if(fCalculateCumulantsVsM)
1066   {
1067    fIntFlowCorrectionTermsForNUAVsMPro[1][1]->Fill(dMultiplicityBin,cosP1nP1n,dMult*(dMult-1));  
1068    fIntFlowCorrectionTermsForNUAVsMPro[1][3]->Fill(dMultiplicityBin,cosP2nM1n,dMult*(dMult-1));
1069   }
1070  } 
1071  
1072  // 3-particle:
1073  Double_t cosP1nM1nM1n = 0.; // <<cos(n*(phi1-phi2-phi3))>>
1074  
1075  if(dMult>2)
1076  {
1077   cosP1nM1nM1n = (dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))-dReQ1n*dReQ2n-dImQ1n*dImQ2n-2.*(dMult-1)*dReQ1n)
1078                / (dMult*(dMult-1)*(dMult-2)); 
1079   
1080   // average non-weighted 3-particle correction (cos terms) for non-uniform acceptance for single event:
1081   fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(3,cosP1nM1nM1n);
1082   // event weights for NUA terms:
1083   fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->SetBinContent(3,dMult*(dMult-1)*(dMult-2));
1084   
1085   // final average non-weighted 3-particle correction (cos terms) for non-uniform acceptance for all events:
1086   fIntFlowCorrectionTermsForNUAPro[1]->Fill(2.5,cosP1nM1nM1n,dMult*(dMult-1)*(dMult-2));
1087   if(fCalculateCumulantsVsM){fIntFlowCorrectionTermsForNUAVsMPro[1][2]->Fill(dMultiplicityBin,cosP1nM1nM1n,dMult*(dMult-1)*(dMult-2));}  
1088  } 
1089  
1090 } // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUACosTerms()
1091
1092 //=======================================================================================================================
1093
1094 void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUASinTerms()
1095 {
1096  // calculate corrections for non-uniform acceptance of the detector for no-name integrated flow (sin terms)
1097  
1098  // multiplicity:
1099  Double_t dMult = (*fSpk)(0,0);
1100  
1101  // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n: 
1102  Double_t dReQ1n = (*fReQ)(0,0);
1103  Double_t dReQ2n = (*fReQ)(1,0);
1104  //Double_t dReQ3n = (*fReQ)(2,0);
1105  //Double_t dReQ4n = (*fReQ)(3,0);
1106  Double_t dImQ1n = (*fImQ)(0,0);
1107  Double_t dImQ2n = (*fImQ)(1,0);
1108  //Double_t dImQ3n = (*fImQ)(2,0);
1109  //Double_t dImQ4n = (*fImQ)(3,0);
1110         
1111  // Multiplicity bin of an event (relevant for all histos vs M): 
1112  Double_t dMultiplicityBin = 0.;
1113  if(fMultiplicityIs==AliFlowCommonConstants::kRP)
1114  {
1115   dMultiplicityBin = fNumberOfRPsEBE+0.5;
1116  } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
1117    {
1118     dMultiplicityBin = fReferenceMultiplicityEBE+0.5;
1119    } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
1120      {
1121       dMultiplicityBin = fNumberOfPOIsEBE+0.5;
1122      } 
1123
1124  //                                  *************************************************************
1125  //                                  **** corrections for non-uniform acceptance (sin terms): ****
1126  //                                  *************************************************************
1127  //
1128  // Remark 1: corrections for non-uniform acceptance (sin terms) calculated with non-weighted Q-vectors 
1129  //           are stored in 1D profile fQCorrectionsSin.
1130  // Remark 2: binning of fIntFlowCorrectionTermsForNUAPro[0] is organized as follows:
1131  // --------------------------------------------------------------------------------------------------------------------
1132  // 1st bin: <<sin(n*(phi1))>> = sinP1n
1133  // 2nd bin: <<sin(n*(phi1+phi2))>> = sinP1nP1n
1134  // 3rd bin: <<sin(n*(phi1-phi2-phi3))>> = sinP1nM1nM1n
1135  // 4th bin: <<sin(n*(2phi1-phi2))>> = sinP2nM1n
1136  // --------------------------------------------------------------------------------------------------------------------
1137  
1138  // 1-particle:
1139  Double_t sinP1n = 0.; // <sin(n*(phi1))>
1140  
1141  if(dMult>0)
1142  {
1143   sinP1n = dImQ1n/dMult; 
1144      
1145   // average non-weighted 1-particle correction (sin terms) for non-uniform acceptance for single event:
1146   fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(1,sinP1n);  
1147   // event weights for NUA terms:
1148   fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->SetBinContent(1,dMult);
1149   
1150   // final average non-weighted 1-particle correction (sin terms) for non-uniform acceptance for all events:   
1151   fIntFlowCorrectionTermsForNUAPro[0]->Fill(0.5,sinP1n,dMult);  
1152   if(fCalculateCumulantsVsM){fIntFlowCorrectionTermsForNUAVsMPro[0][0]->Fill(dMultiplicityBin,sinP1n,dMult);} 
1153  } 
1154  
1155  // 2-particle:
1156  Double_t sinP1nP1n = 0.; // <<sin(n*(phi1+phi2))>>
1157  Double_t sinP2nM1n = 0.; // <<sin(n*(2phi1-phi2))>>
1158  if(dMult>1)
1159  {
1160   sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1)); 
1161   sinP2nM1n = (dImQ2n*dReQ1n-dReQ2n*dImQ1n-dImQ1n)/(dMult*(dMult-1)); 
1162      
1163   // average non-weighted 2-particle correction (sin terms) for non-uniform acceptance for single event:
1164   fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(2,sinP1nP1n);
1165   fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(4,sinP2nM1n);
1166   // event weights for NUA terms:
1167   fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->SetBinContent(2,dMult*(dMult-1));
1168   fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->SetBinContent(4,dMult*(dMult-1));
1169   
1170   // final average non-weighted 1-particle correction (sin terms) for non-uniform acceptance for all events:      
1171   fIntFlowCorrectionTermsForNUAPro[0]->Fill(1.5,sinP1nP1n,dMult*(dMult-1));  
1172   fIntFlowCorrectionTermsForNUAPro[0]->Fill(3.5,sinP2nM1n,dMult*(dMult-1));  
1173   if(fCalculateCumulantsVsM)
1174   {
1175    fIntFlowCorrectionTermsForNUAVsMPro[0][1]->Fill(dMultiplicityBin,sinP1nP1n,dMult*(dMult-1));  
1176    fIntFlowCorrectionTermsForNUAVsMPro[0][3]->Fill(dMultiplicityBin,sinP2nM1n,dMult*(dMult-1));    
1177   }
1178  } 
1179  
1180  // 3-particle:
1181  Double_t sinP1nM1nM1n = 0.; // <<sin(n*(phi1-phi2-phi3))>>
1182  
1183  if(dMult>2)
1184  {
1185   sinP1nM1nM1n = (-dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))+dReQ1n*dImQ2n-dImQ1n*dReQ2n+2.*(dMult-1)*dImQ1n)
1186                / (dMult*(dMult-1)*(dMult-2)); 
1187   
1188   // average non-weighted 3-particle correction (sin terms) for non-uniform acceptance for single event:
1189   fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(3,sinP1nM1nM1n);
1190   // event weights for NUA terms:
1191   fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->SetBinContent(3,dMult*(dMult-1)*(dMult-2));
1192   
1193   // final average non-weighted 3-particle correction (sin terms) for non-uniform acceptance for all events:  
1194   fIntFlowCorrectionTermsForNUAPro[0]->Fill(2.5,sinP1nM1nM1n,dMult*(dMult-1)*(dMult-2));
1195   if(fCalculateCumulantsVsM){fIntFlowCorrectionTermsForNUAVsMPro[0][2]->Fill(dMultiplicityBin,sinP1nM1nM1n,dMult*(dMult-1)*(dMult-2));}  
1196  } 
1197  
1198 } // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUASinTerms()
1199
1200 //=======================================================================================================================
1201
1202 void AliFlowAnalysisWithQCumulants::GetOutputHistograms(TList *outputListHistos)
1203 {
1204  // a) Get pointers for common control and common result histograms;
1205  // b) Get pointers for histograms holding particle weights;
1206  // c) Get pointers for reference flow histograms;
1207  // d) Get pointers for differential flow histograms;
1208  // e) Get pointers for 2D differential flow histograms;
1209  // f) Get pointers for other differential correlators;
1210  // g) Get pointers for nested loops' histograms;
1211  // h) Get pointers for mixed harmonics histograms.
1212  
1213  if(outputListHistos)
1214  {      
1215   this->SetHistList(outputListHistos);
1216   if(!fHistList)
1217   {
1218    printf("\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
1219    exit(0);
1220   }
1221   this->GetPointersForCommonHistograms(); 
1222   this->GetPointersForParticleWeightsHistograms(); 
1223   this->GetPointersForIntFlowHistograms();
1224   this->GetPointersForDiffFlowHistograms(); 
1225   this->GetPointersFor2DDiffFlowHistograms(); 
1226   this->GetPointersForOtherDiffCorrelators();  
1227   this->GetPointersForMixedHarmonicsHistograms(); 
1228   this->GetPointersForNestedLoopsHistograms(); 
1229  } else 
1230    {
1231     printf("\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
1232     exit(0);
1233    }
1234    
1235 } // end of void AliFlowAnalysisWithQCumulants::GetOutputHistograms(TList *outputListHistos)
1236
1237 //=======================================================================================================================
1238
1239 TProfile* AliFlowAnalysisWithQCumulants::MakePtProjection(TProfile2D *profilePtEta) const
1240 {
1241  // project 2D profile onto pt axis to get 1D profile
1242  
1243  Int_t nBinsPt   = profilePtEta->GetNbinsX();
1244  Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
1245  Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
1246  
1247  Int_t nBinsEta   = profilePtEta->GetNbinsY();
1248  
1249  TProfile *profilePt = new TProfile("","",nBinsPt,dPtMin,dPtMax); 
1250  
1251  for(Int_t p=1;p<=nBinsPt;p++)
1252  {
1253   Double_t contentPt = 0.;
1254   Double_t entryPt = 0.;
1255   Double_t spreadPt = 0.;
1256   Double_t sum1 = 0.;
1257   Double_t sum2 = 0.;
1258   Double_t sum3 = 0.;
1259   for(Int_t e=1;e<=nBinsEta;e++)
1260   {
1261    contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1262               * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1263    entryPt   += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1264    
1265    sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1266          * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
1267             + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.)); 
1268    sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1269    sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1270          * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));            
1271   }
1272   if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
1273   {
1274    spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
1275   }
1276   profilePt->SetBinContent(p,contentPt);
1277   profilePt->SetBinEntries(p,entryPt);
1278   {
1279    profilePt->SetBinError(p,spreadPt);
1280   }
1281   
1282  }
1283  
1284  return profilePt;
1285  
1286 } // end of TProfile* AliFlowAnalysisWithQCumulants::MakePtProjection(TProfile2D *profilePtEta)
1287
1288
1289 //=======================================================================================================================
1290
1291
1292 TProfile* AliFlowAnalysisWithQCumulants::MakeEtaProjection(TProfile2D *profilePtEta) const
1293 {
1294  // project 2D profile onto eta axis to get 1D profile
1295  
1296  Int_t nBinsEta   = profilePtEta->GetNbinsY();
1297  Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
1298  Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
1299  
1300  Int_t nBinsPt = profilePtEta->GetNbinsX();
1301  
1302  TProfile *profileEta = new TProfile("","",nBinsEta,dEtaMin,dEtaMax); 
1303  
1304  for(Int_t e=1;e<=nBinsEta;e++)
1305  {
1306   Double_t contentEta = 0.;
1307   Double_t entryEta = 0.;
1308   for(Int_t p=1;p<=nBinsPt;p++)
1309   {
1310    contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1311               * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1312    entryEta   += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1313   }
1314   profileEta->SetBinContent(e,contentEta);
1315   profileEta->SetBinEntries(e,entryEta);
1316  }
1317  
1318  return profileEta;
1319  
1320 } // end of TProfile* AliFlowAnalysisWithQCumulants::MakeEtaProjection(TProfile2D *profilePtEta)
1321
1322 //=======================================================================================================================
1323
1324 void AliFlowAnalysisWithQCumulants::PrintFinalResultsForIntegratedFlow(TString type)
1325 {
1326  // Printing on the screen the final results for integrated flow (RF, POI and RP). 
1327  
1328  Int_t n = fHarmonic; 
1329  
1330  Double_t dVn[4] = {0.}; // array to hold Vn{2}, Vn{4}, Vn{6} and Vn{8}   
1331  Double_t dVnErr[4] = {0.}; // array to hold errors of Vn{2}, Vn{4}, Vn{6} and Vn{8}   
1332  
1333  if(type == "RF")
1334  {
1335   for(Int_t b=0;b<4;b++)
1336   {
1337    dVn[0] = (fCommonHistsResults2nd->GetHistIntFlow())->GetBinContent(1); 
1338    dVnErr[0] = (fCommonHistsResults2nd->GetHistIntFlow())->GetBinError(1); 
1339    dVn[1] = (fCommonHistsResults4th->GetHistIntFlow())->GetBinContent(1); 
1340    dVnErr[1] = (fCommonHistsResults4th->GetHistIntFlow())->GetBinError(1); 
1341    dVn[2] = (fCommonHistsResults6th->GetHistIntFlow())->GetBinContent(1); 
1342    dVnErr[2] = (fCommonHistsResults6th->GetHistIntFlow())->GetBinError(1); 
1343    dVn[3] = (fCommonHistsResults8th->GetHistIntFlow())->GetBinContent(1); 
1344    dVnErr[3] = (fCommonHistsResults8th->GetHistIntFlow())->GetBinError(1);    
1345   }  
1346  } else if(type == "RP")
1347    {
1348     dVn[0] = (fCommonHistsResults2nd->GetHistIntFlowRP())->GetBinContent(1); 
1349     dVnErr[0] = (fCommonHistsResults2nd->GetHistIntFlowRP())->GetBinError(1); 
1350     dVn[1] = (fCommonHistsResults4th->GetHistIntFlowRP())->GetBinContent(1); 
1351     dVnErr[1] = (fCommonHistsResults4th->GetHistIntFlowRP())->GetBinError(1); 
1352     dVn[2] = (fCommonHistsResults6th->GetHistIntFlowRP())->GetBinContent(1); 
1353     dVnErr[2] = (fCommonHistsResults6th->GetHistIntFlowRP())->GetBinError(1); 
1354     dVn[3] = (fCommonHistsResults8th->GetHistIntFlowRP())->GetBinContent(1); 
1355     dVnErr[3] = (fCommonHistsResults8th->GetHistIntFlowRP())->GetBinError(1); 
1356    } else if(type == "POI")
1357      {
1358       dVn[0] = (fCommonHistsResults2nd->GetHistIntFlowPOI())->GetBinContent(1); 
1359       dVnErr[0] = (fCommonHistsResults2nd->GetHistIntFlowPOI())->GetBinError(1); 
1360       dVn[1] = (fCommonHistsResults4th->GetHistIntFlowPOI())->GetBinContent(1); 
1361       dVnErr[1] = (fCommonHistsResults4th->GetHistIntFlowPOI())->GetBinError(1); 
1362       dVn[2] = (fCommonHistsResults6th->GetHistIntFlowPOI())->GetBinContent(1); 
1363       dVnErr[2] = (fCommonHistsResults6th->GetHistIntFlowPOI())->GetBinError(1); 
1364       dVn[3] = (fCommonHistsResults8th->GetHistIntFlowPOI())->GetBinContent(1); 
1365       dVnErr[3] = (fCommonHistsResults8th->GetHistIntFlowPOI())->GetBinError(1); 
1366      } else if(type == "RF, rebinned in M" && fCalculateCumulantsVsM)
1367        {
1368         for(Int_t b=0;b<4;b++)
1369         {
1370          dVn[b] = fIntFlowRebinnedInM->GetBinContent(b+1); 
1371          dVnErr[b] = fIntFlowRebinnedInM->GetBinError(b+1);
1372         }  
1373        }
1374  
1375  TString title = " flow estimates from Q-cumulants"; 
1376  TString subtitle = "    ("; 
1377  TString subtitle2 = "       (rebinned in M)"; 
1378  
1379  if(type != "RF, rebinned in M")
1380  {
1381   if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
1382   {
1383    subtitle.Append(type);
1384    subtitle.Append(", without weights)");
1385   } else  
1386     {
1387      subtitle.Append(type);
1388      subtitle.Append(", with weights)");
1389     }
1390  } else
1391    {
1392     if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
1393     {
1394      subtitle.Append("RF");
1395      subtitle.Append(", without weights)");
1396     } else  
1397       {
1398        subtitle.Append("RF");
1399        subtitle.Append(", with weights)");      
1400       }
1401    } 
1402    
1403  cout<<endl;
1404  cout<<"*************************************"<<endl;
1405  cout<<"*************************************"<<endl;
1406  cout<<title.Data()<<endl; 
1407  cout<<subtitle.Data()<<endl; 
1408  if(type == "RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
1409  cout<<endl;
1410   
1411  for(Int_t i=0;i<4;i++)
1412  {
1413   cout<<"  v_"<<n<<"{"<<2*(i+1)<<"} = "<<dVn[i]<<" +/- "<<dVnErr[i]<<endl;
1414  }
1415  
1416  cout<<endl;
1417  if(type == "RF")
1418  {
1419   if(fApplyCorrectionForNUA)
1420   {
1421    cout<<" detector bias (corrected for): "<<endl;
1422   } else
1423     {
1424      cout<<" detector bias (not corrected for):"<<endl;  
1425     }
1426   cout<<"  to QC{2}: "<<fIntFlowDetectorBias->GetBinContent(1)<<" +/- "<<fIntFlowDetectorBias->GetBinError(1)<<endl;
1427   cout<<"  to QC{4}: "<<fIntFlowDetectorBias->GetBinContent(2)<<" +/- "<<fIntFlowDetectorBias->GetBinError(2)<<endl;
1428   cout<<endl;
1429  }
1430  if(type == "RF" || type == "RF, rebinned in M")
1431  {
1432   cout<<"     nEvts = "<<(Int_t)fCommonHists->GetHistMultRP()->GetEntries()<<", <M> = "<<(Double_t)fCommonHists->GetHistMultRP()->GetMean()<<endl; 
1433  }
1434  else if (type == "RP")
1435  {
1436   cout<<"     nEvts = "<<(Int_t)fCommonHists->GetHistMultRP()->GetEntries()<<", <M> = "<<(Double_t)fCommonHists->GetHistMultRP()->GetMean()<<endl;  
1437  } 
1438  else if (type == "POI")
1439  {
1440   cout<<"     nEvts = "<<(Int_t)fCommonHists->GetHistMultPOI()->GetEntries()<<", <M> = "<<(Double_t)fCommonHists->GetHistMultPOI()->GetMean()<<endl;
1441  }  
1442  
1443  cout<<"*************************************"<<endl;
1444  cout<<"*************************************"<<endl;
1445  cout<<endl; 
1446   
1447 }// end of AliFlowAnalysisWithQCumulants::PrintFinalResultsForIntegratedFlow(TString type="RF");
1448
1449 //=======================================================================================================================
1450
1451 void AliFlowAnalysisWithQCumulants::WriteHistograms(TString outputFileName)
1452 {
1453  //store the final results in output .root file
1454  TFile *output = new TFile(outputFileName.Data(),"RECREATE");
1455  //output->WriteObject(fHistList, "cobjQC","SingleKey");
1456  fHistList->Write(fHistList->GetName(), TObject::kSingleKey);
1457  delete output;
1458 }
1459
1460
1461 //=======================================================================================================================
1462
1463
1464 void AliFlowAnalysisWithQCumulants::WriteHistograms(TDirectoryFile *outputFileName)
1465 {
1466  //store the final results in output .root file
1467  fHistList->SetName("cobjQC");
1468  fHistList->SetOwner(kTRUE);
1469  outputFileName->Add(fHistList);
1470  outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
1471 }
1472
1473 //=======================================================================================================================
1474
1475 void AliFlowAnalysisWithQCumulants::BookCommonHistograms()
1476 {
1477  // Book common control histograms and common histograms for final results.
1478  //  a) Book common control histograms;
1479  //  b) Book common result histograms.
1480  
1481  // a) Book common control histograms: 
1482  //  Common control histograms (all events):
1483  TString commonHistsName = "AliFlowCommonHistQC";
1484  commonHistsName += fAnalysisLabel->Data();
1485  fCommonHists = new AliFlowCommonHist(commonHistsName.Data(),commonHistsName.Data(),fBookOnlyBasicCCH);
1486  fHistList->Add(fCommonHists);  
1487  //  Common control histograms (selected events):
1488  if(fFillMultipleControlHistograms)
1489  {
1490   // Common control histogram filled for events with 2 and more reference particles:
1491   TString commonHists2ndOrderName = "AliFlowCommonHist2ndOrderQC";
1492   commonHists2ndOrderName += fAnalysisLabel->Data();
1493   fCommonHists2nd = new AliFlowCommonHist(commonHists2ndOrderName.Data(),commonHists2ndOrderName.Data(),fBookOnlyBasicCCH);
1494   fHistList->Add(fCommonHists2nd);  
1495   // Common control histogram filled for events with 2 and more reference particles:
1496   TString commonHists4thOrderName = "AliFlowCommonHist4thOrderQC";
1497   commonHists4thOrderName += fAnalysisLabel->Data();
1498   fCommonHists4th = new AliFlowCommonHist(commonHists4thOrderName.Data(),commonHists4thOrderName.Data(),fBookOnlyBasicCCH);
1499   fHistList->Add(fCommonHists4th);  
1500   // Common control histogram filled for events with 6 and more reference particles:
1501   TString commonHists6thOrderName = "AliFlowCommonHist6thOrderQC";
1502   commonHists6thOrderName += fAnalysisLabel->Data();
1503   fCommonHists6th = new AliFlowCommonHist(commonHists6thOrderName.Data(),commonHists6thOrderName.Data(),fBookOnlyBasicCCH);
1504   fHistList->Add(fCommonHists6th);  
1505   // Common control histogram filled for events with 8 and more reference particles:
1506   TString commonHists8thOrderName = "AliFlowCommonHist8thOrderQC";
1507   commonHists8thOrderName += fAnalysisLabel->Data();
1508   fCommonHists8th = new AliFlowCommonHist(commonHists8thOrderName.Data(),commonHists8thOrderName.Data(),fBookOnlyBasicCCH);
1509   fHistList->Add(fCommonHists8th);    
1510  } // end of if(fFillMultipleControlHistograms)
1511  
1512  // b) Book common result histograms: 
1513  //  Common result histograms for QC{2}:
1514  TString commonHistResults2ndOrderName = "AliFlowCommonHistResults2ndOrderQC";
1515  commonHistResults2ndOrderName += fAnalysisLabel->Data();
1516  fCommonHistsResults2nd = new AliFlowCommonHistResults(commonHistResults2ndOrderName.Data(),"",fHarmonic);
1517  fHistList->Add(fCommonHistsResults2nd);  
1518  //  Common result histograms for QC{4}:
1519  TString commonHistResults4thOrderName = "AliFlowCommonHistResults4thOrderQC";
1520  commonHistResults4thOrderName += fAnalysisLabel->Data();
1521  fCommonHistsResults4th = new AliFlowCommonHistResults(commonHistResults4thOrderName.Data(),"",fHarmonic);
1522  fHistList->Add(fCommonHistsResults4th); 
1523  //  Common result histograms for QC{6}:
1524  TString commonHistResults6thOrderName = "AliFlowCommonHistResults6thOrderQC";
1525  commonHistResults6thOrderName += fAnalysisLabel->Data();
1526  fCommonHistsResults6th = new AliFlowCommonHistResults(commonHistResults6thOrderName.Data(),"",fHarmonic);
1527  fHistList->Add(fCommonHistsResults6th);  
1528  //  Common result histograms for QC{8}:
1529  TString commonHistResults8thOrderName = "AliFlowCommonHistResults8thOrderQC";
1530  commonHistResults8thOrderName += fAnalysisLabel->Data();
1531  fCommonHistsResults8th = new AliFlowCommonHistResults(commonHistResults8thOrderName.Data(),"",fHarmonic);
1532  fHistList->Add(fCommonHistsResults8th); 
1533  
1534 } // end of void AliFlowAnalysisWithQCumulants::BookCommonHistograms()
1535
1536 //=======================================================================================================================
1537
1538 void AliFlowAnalysisWithQCumulants::BookAndFillWeightsHistograms()
1539 {
1540  // Book and fill histograms which hold phi, pt and eta weights.
1541
1542  if(!fWeightsList)
1543  {
1544   printf("\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
1545   exit(0);  
1546  }
1547     
1548  TString fUseParticleWeightsName = "fUseParticleWeightsQC";
1549  fUseParticleWeightsName += fAnalysisLabel->Data();
1550  fUseParticleWeights = new TProfile(fUseParticleWeightsName.Data(),"0 = particle weight not used, 1 = particle weight used ",4,0,4);
1551  fUseParticleWeights->SetLabelSize(0.06);
1552  fUseParticleWeights->SetStats(kFALSE);
1553  (fUseParticleWeights->GetXaxis())->SetBinLabel(1,"w_{#phi}");
1554  (fUseParticleWeights->GetXaxis())->SetBinLabel(2,"w_{p_{T}}");
1555  (fUseParticleWeights->GetXaxis())->SetBinLabel(3,"w_{#eta}");
1556  (fUseParticleWeights->GetXaxis())->SetBinLabel(4,"w_{track}");
1557  fUseParticleWeights->Fill(0.5,(Int_t)fUsePhiWeights);
1558  fUseParticleWeights->Fill(1.5,(Int_t)fUsePtWeights);
1559  fUseParticleWeights->Fill(2.5,(Int_t)fUseEtaWeights);
1560  fUseParticleWeights->Fill(3.5,(Int_t)fUseTrackWeights);
1561  fWeightsList->Add(fUseParticleWeights); 
1562   
1563  if(fUsePhiWeights)
1564  {
1565   if(fWeightsList->FindObject("phi_weights"))
1566   {
1567    fPhiWeights = dynamic_cast<TH1F*>(fWeightsList->FindObject("phi_weights"));
1568    if(!fPhiWeights)
1569    {
1570     printf("\n WARNING (QC): fPhiWeights is NULL in AFAWQC::BAFWH() !!!!\n\n");
1571     exit(0);
1572    }
1573    if(TMath::Abs(fPhiWeights->GetBinWidth(1)-fPhiBinWidth)>pow(10.,-6.))
1574    {
1575     cout<<endl;
1576     cout<<"WARNING (QC): Inconsistent binning in histograms for phi-weights throughout the code."<<endl;
1577     cout<<endl;
1578     //exit(0);
1579    }
1580   } else 
1581     {
1582      cout<<"WARNING: fWeightsList->FindObject(\"phi_weights\") is NULL in AFAWQC::BAFWH() !!!!"<<endl;
1583      exit(0);
1584     }
1585  } // end of if(fUsePhiWeights)
1586  
1587  if(fUsePtWeights) 
1588  {
1589   if(fWeightsList->FindObject("pt_weights"))
1590   {
1591    fPtWeights = dynamic_cast<TH1D*>(fWeightsList->FindObject("pt_weights"));
1592    if(!fPtWeights)
1593    {
1594     printf("\n WARNING (QC): fPtWeights is NULL in AFAWQC::BAFWH() !!!!\n\n");
1595     exit(0);
1596    }
1597    if(TMath::Abs(fPtWeights->GetBinWidth(1)-fPtBinWidth)>pow(10.,-6.))
1598    {
1599     cout<<endl;
1600     cout<<"WARNING (QC): Inconsistent binning in histograms for pt-weights throughout the code."<<endl;
1601     cout<<endl;
1602     //exit(0);
1603    }
1604   } else 
1605     {
1606      cout<<"WARNING: fWeightsList->FindObject(\"pt_weights\") is NULL in AFAWQC::BAFWH() !!!!"<<endl;
1607      exit(0);
1608     }
1609  } // end of if(fUsePtWeights)    
1610
1611  if(fUseEtaWeights) 
1612  {
1613   if(fWeightsList->FindObject("eta_weights"))
1614   {
1615    fEtaWeights = dynamic_cast<TH1D*>(fWeightsList->FindObject("eta_weights"));
1616    if(!fEtaWeights)
1617    {
1618     printf("\n WARNING (QC): fEtaWeights is NULL in AFAWQC::BAFWH() !!!!\n\n");
1619     exit(0);
1620    }
1621    if(TMath::Abs(fEtaWeights->GetBinWidth(1)-fEtaBinWidth)>pow(10.,-6.))
1622    {
1623     cout<<endl;
1624     cout<<"WARNING (QC): Inconsistent binning in histograms for eta-weights throughout the code."<<endl;
1625     cout<<endl;
1626     //exit(0);
1627    }
1628   } else 
1629     {
1630      cout<<"WARNING: fUseEtaWeights && fWeightsList->FindObject(\"eta_weights\") is NULL in AFAWQC::BAFWH() !!!!"<<endl;
1631      exit(0);
1632     }
1633  } // end of if(fUseEtaWeights)
1634  
1635 } // end of AliFlowAnalysisWithQCumulants::BookAndFillWeightsHistograms()
1636
1637 //=======================================================================================================================
1638
1639 void AliFlowAnalysisWithQCumulants::BookEverythingForIntegratedFlow()
1640 {
1641  // Book all objects for integrated flow:
1642  //  a) Book profile to hold all flags for integrated flow;
1643  //  b) Book event-by-event quantities;
1644  //  c) Book profiles; // to be improved (comment)
1645  //  d) Book histograms holding the final results.
1646  
1647  TString sinCosFlag[2] = {"sin","cos"}; // to be improved (should I promote this to data members?)
1648  TString powerFlag[2] = {"linear","quadratic"}; // to be improved (should I promote this to data members?)
1649  
1650  // a) Book profile to hold all flags for integrated flow:
1651  TString intFlowFlagsName = "fIntFlowFlags";
1652  intFlowFlagsName += fAnalysisLabel->Data();
1653  fIntFlowFlags = new TProfile(intFlowFlagsName.Data(),"Flags for Integrated Flow",17,0.,17.);
1654  fIntFlowFlags->SetTickLength(-0.01,"Y");
1655  fIntFlowFlags->SetMarkerStyle(25);
1656  fIntFlowFlags->SetLabelSize(0.04);
1657  fIntFlowFlags->SetLabelOffset(0.02,"Y");
1658  fIntFlowFlags->SetStats(kFALSE);
1659  fIntFlowFlags->GetXaxis()->SetBinLabel(1,"Particle Weights");
1660  fIntFlowFlags->GetXaxis()->SetBinLabel(2,"Event Weights");
1661  fIntFlowFlags->GetXaxis()->SetBinLabel(3,"Corrected for NUA?");
1662  fIntFlowFlags->GetXaxis()->SetBinLabel(4,"Print RF results");
1663  fIntFlowFlags->GetXaxis()->SetBinLabel(5,"Print RP results");
1664  fIntFlowFlags->GetXaxis()->SetBinLabel(6,"Print POI results");
1665  fIntFlowFlags->GetXaxis()->SetBinLabel(7,"Print RF (rebinned in M) results");
1666  fIntFlowFlags->GetXaxis()->SetBinLabel(8,"Corrected for NUA vs M?");
1667  fIntFlowFlags->GetXaxis()->SetBinLabel(9,"Propagate errors to v_{n} from correlations?");
1668  fIntFlowFlags->GetXaxis()->SetBinLabel(10,"Calculate cumulants vs M");
1669  fIntFlowFlags->GetXaxis()->SetBinLabel(11,"fMinimumBiasReferenceFlow");
1670  fIntFlowFlags->GetXaxis()->SetBinLabel(12,"fForgetAboutCovariances");
1671  fIntFlowFlags->GetXaxis()->SetBinLabel(13,"fStorePhiDistributionForOneEvent");
1672  fIntFlowFlags->GetXaxis()->SetBinLabel(14,"fFillMultipleControlHistograms");
1673  fIntFlowFlags->GetXaxis()->SetBinLabel(15,"Calculate all correlations vs M");
1674  fIntFlowFlags->GetXaxis()->SetBinLabel(16,"fMultiplicityIs");
1675  fIntFlowFlags->GetXaxis()->SetBinLabel(17,"fExactNoRPs");
1676  fIntFlowList->Add(fIntFlowFlags);
1677
1678  // b) Book event-by-event quantities:
1679  // Re[Q_{m*n,k}], Im[Q_{m*n,k}] and S_{p,k}^M: 
1680  fReQ = new TMatrixD(12,9);
1681  fImQ = new TMatrixD(12,9);
1682  fSpk = new TMatrixD(8,9);
1683  // average correlations <2>, <4>, <6> and <8> for single event (bining is the same as in fIntFlowCorrelationsPro and fIntFlowCorrelationsHist):
1684  TString intFlowCorrelationsEBEName = "fIntFlowCorrelationsEBE";
1685  intFlowCorrelationsEBEName += fAnalysisLabel->Data();
1686  fIntFlowCorrelationsEBE = new TH1D(intFlowCorrelationsEBEName.Data(),intFlowCorrelationsEBEName.Data(),4,0,4);
1687  // weights for average correlations <2>, <4>, <6> and <8> for single event:
1688  TString intFlowEventWeightsForCorrelationsEBEName = "fIntFlowEventWeightsForCorrelationsEBE";
1689  intFlowEventWeightsForCorrelationsEBEName += fAnalysisLabel->Data();
1690  fIntFlowEventWeightsForCorrelationsEBE = new TH1D(intFlowEventWeightsForCorrelationsEBEName.Data(),intFlowEventWeightsForCorrelationsEBEName.Data(),4,0,4);
1691  // average all correlations for single event (bining is the same as in fIntFlowCorrelationsAllPro and fIntFlowCorrelationsAllHist):
1692  TString intFlowCorrelationsAllEBEName = "fIntFlowCorrelationsAllEBE";
1693  intFlowCorrelationsAllEBEName += fAnalysisLabel->Data();
1694  fIntFlowCorrelationsAllEBE = new TH1D(intFlowCorrelationsAllEBEName.Data(),intFlowCorrelationsAllEBEName.Data(),64,0,64);
1695  // average correction terms for non-uniform acceptance for single event 
1696  // (binning is the same as in fIntFlowCorrectionTermsForNUAPro[2] and fIntFlowCorrectionTermsForNUAHist[2]):
1697  TString fIntFlowCorrectionTermsForNUAEBEName = "fIntFlowCorrectionTermsForNUAEBE";
1698  fIntFlowCorrectionTermsForNUAEBEName += fAnalysisLabel->Data();
1699  for(Int_t sc=0;sc<2;sc++) // sin or cos terms
1700  {
1701   fIntFlowCorrectionTermsForNUAEBE[sc] = new TH1D(Form("%s: %s terms",fIntFlowCorrectionTermsForNUAEBEName.Data(),sinCosFlag[sc].Data()),Form("Correction terms for non-uniform acceptance (%s terms)",sinCosFlag[sc].Data()),4,0,4);  
1702  }
1703  // event weights for terms for non-uniform acceptance: 
1704  TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName = "fIntFlowEventWeightForCorrectionTermsForNUAEBE";
1705  fIntFlowEventWeightForCorrectionTermsForNUAEBEName += fAnalysisLabel->Data();
1706  for(Int_t sc=0;sc<2;sc++) // sin or cos terms
1707  {
1708   fIntFlowEventWeightForCorrectionTermsForNUAEBE[sc] = new TH1D(Form("%s: %s terms",fIntFlowEventWeightForCorrectionTermsForNUAEBEName.Data(),sinCosFlag[sc].Data()),Form("Event weights for terms for non-uniform acceptance (%s terms)",sinCosFlag[sc].Data()),4,0,4); // to be improved - 4  
1709  }
1710  // c) Book profiles: // to be improved (comment)
1711  // profile to hold average multiplicities and number of events for events with nRP>=0, nRP>=1, ... , and nRP>=8:
1712  TString avMultiplicityName = "fAvMultiplicity";
1713  avMultiplicityName += fAnalysisLabel->Data();
1714  fAvMultiplicity = new TProfile(avMultiplicityName.Data(),"Average multiplicities of reference particles (RPs)",9,0,9);
1715  fAvMultiplicity->SetTickLength(-0.01,"Y");
1716  fAvMultiplicity->SetMarkerStyle(25);
1717  fAvMultiplicity->SetLabelSize(0.05);
1718  fAvMultiplicity->SetLabelOffset(0.02,"Y");
1719  fAvMultiplicity->SetYTitle("Average multiplicity");
1720  (fAvMultiplicity->GetXaxis())->SetBinLabel(1,"all evts");
1721  (fAvMultiplicity->GetXaxis())->SetBinLabel(2,"n_{RP} #geq 1");
1722  (fAvMultiplicity->GetXaxis())->SetBinLabel(3,"n_{RP} #geq 2");
1723  (fAvMultiplicity->GetXaxis())->SetBinLabel(4,"n_{RP} #geq 3");
1724  (fAvMultiplicity->GetXaxis())->SetBinLabel(5,"n_{RP} #geq 4");
1725  (fAvMultiplicity->GetXaxis())->SetBinLabel(6,"n_{RP} #geq 5");
1726  (fAvMultiplicity->GetXaxis())->SetBinLabel(7,"n_{RP} #geq 6");
1727  (fAvMultiplicity->GetXaxis())->SetBinLabel(8,"n_{RP} #geq 7");
1728  (fAvMultiplicity->GetXaxis())->SetBinLabel(9,"n_{RP} #geq 8");
1729  fIntFlowProfiles->Add(fAvMultiplicity);
1730  // Average correlations <<2>>, <<4>>, <<6>> and <<8>> for all events (with wrong errors!):
1731  TString correlationFlag[4] = {"#LT#LT2#GT#GT","#LT#LT4#GT#GT","#LT#LT6#GT#GT","#LT#LT8#GT#GT"};
1732  TString intFlowCorrelationsProName = "fIntFlowCorrelationsPro";
1733  intFlowCorrelationsProName += fAnalysisLabel->Data();
1734  fIntFlowCorrelationsPro = new TProfile(intFlowCorrelationsProName.Data(),"Average correlations for all events",4,0,4,"s");
1735  fIntFlowCorrelationsPro->Sumw2();
1736  fIntFlowCorrelationsPro->SetTickLength(-0.01,"Y");
1737  fIntFlowCorrelationsPro->SetMarkerStyle(25);
1738  fIntFlowCorrelationsPro->SetLabelSize(0.06);
1739  fIntFlowCorrelationsPro->SetLabelOffset(0.01,"Y");
1740  for(Int_t b=0;b<4;b++)
1741  {
1742   (fIntFlowCorrelationsPro->GetXaxis())->SetBinLabel(b+1,correlationFlag[b].Data());
1743  }
1744  fIntFlowProfiles->Add(fIntFlowCorrelationsPro);
1745  // Average correlations squared <<2>^2>, <<4>^2>, <<6>^2> and <<8>^2> for all events:
1746  TString squaredCorrelationFlag[4] = {"#LT#LT2#GT^{2}#GT","#LT#LT4#GT^{2}#GT","#LT#LT6#GT^{2}#GT","#LT#LT8#GT^{2}#GT"};
1747  TString intFlowSquaredCorrelationsProName = "fIntFlowSquaredCorrelationsPro";
1748  intFlowSquaredCorrelationsProName += fAnalysisLabel->Data();
1749  fIntFlowSquaredCorrelationsPro = new TProfile(intFlowSquaredCorrelationsProName.Data(),"Average squared correlations for all events",4,0,4,"s");
1750  fIntFlowSquaredCorrelationsPro->Sumw2();
1751  fIntFlowSquaredCorrelationsPro->SetTickLength(-0.01,"Y");
1752  fIntFlowSquaredCorrelationsPro->SetMarkerStyle(25);
1753  fIntFlowSquaredCorrelationsPro->SetLabelSize(0.06);
1754  fIntFlowSquaredCorrelationsPro->SetLabelOffset(0.01,"Y");
1755  for(Int_t b=0;b<4;b++)
1756  {
1757   (fIntFlowSquaredCorrelationsPro->GetXaxis())->SetBinLabel(b+1,squaredCorrelationFlag[b].Data());
1758  }
1759  fIntFlowProfiles->Add(fIntFlowSquaredCorrelationsPro);
1760  if(fCalculateCumulantsVsM)
1761  {
1762   for(Int_t ci=0;ci<4;ci++) // correlation index
1763   {
1764    // average correlations <<2>>, <<4>>, <<6>> and <<8>> versus multiplicity for all events (with wrong errors):
1765    TString intFlowCorrelationsVsMProName = "fIntFlowCorrelationsVsMPro";
1766    intFlowCorrelationsVsMProName += fAnalysisLabel->Data();
1767    fIntFlowCorrelationsVsMPro[ci] = new TProfile(Form("%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
1768                                                  Form("%s vs multiplicity",correlationFlag[ci].Data()),
1769                                                  fnBinsMult,fMinMult,fMaxMult,"s");   
1770    fIntFlowCorrelationsVsMPro[ci]->Sumw2();                                                                                       
1771    fIntFlowCorrelationsVsMPro[ci]->GetYaxis()->SetTitle(correlationFlag[ci].Data());
1772    if(fMultiplicityIs==AliFlowCommonConstants::kRP)
1773    {
1774     fIntFlowCorrelationsVsMPro[ci]->GetXaxis()->SetTitle("# RPs"); 
1775    } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
1776      {
1777       fIntFlowCorrelationsVsMPro[ci]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
1778      } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
1779        {
1780         fIntFlowCorrelationsVsMPro[ci]->GetXaxis()->SetTitle("# POIs"); 
1781        } 
1782    fIntFlowProfiles->Add(fIntFlowCorrelationsVsMPro[ci]);
1783    // average squared correlations <<2>^2>, <<4>^2>, <<6>^2> and <<8>^2> versus multiplicity for all events:  
1784    TString intFlowSquaredCorrelationsVsMProName = "fIntFlowSquaredCorrelationsVsMPro";
1785    intFlowSquaredCorrelationsVsMProName += fAnalysisLabel->Data();
1786    fIntFlowSquaredCorrelationsVsMPro[ci] = new TProfile(Form("%s, %s",intFlowSquaredCorrelationsVsMProName.Data(),squaredCorrelationFlag[ci].Data()),
1787                                                         Form("%s vs multiplicity",squaredCorrelationFlag[ci].Data()),
1788                                                         fnBinsMult,fMinMult,fMaxMult,"s");   
1789    fIntFlowSquaredCorrelationsVsMPro[ci]->Sumw2();                                                                                              
1790    fIntFlowSquaredCorrelationsVsMPro[ci]->GetYaxis()->SetTitle(squaredCorrelationFlag[ci].Data());
1791    if(fMultiplicityIs==AliFlowCommonConstants::kRP)
1792    {
1793     fIntFlowSquaredCorrelationsVsMPro[ci]->GetXaxis()->SetTitle("# RPs");
1794    } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
1795      {
1796       fIntFlowSquaredCorrelationsVsMPro[ci]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
1797      } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
1798        {
1799         fIntFlowSquaredCorrelationsVsMPro[ci]->GetXaxis()->SetTitle("# POIs");
1800        }
1801    fIntFlowProfiles->Add(fIntFlowSquaredCorrelationsVsMPro[ci]);
1802   } // end of for(Int_t ci=0;ci<4;ci++) // correlation index  
1803  } // end of if(fCalculateCumulantsVsM)
1804  // averaged all correlations for all events (with wrong errors!):
1805  TString intFlowCorrelationsAllProName = "fIntFlowCorrelationsAllPro";
1806  intFlowCorrelationsAllProName += fAnalysisLabel->Data();
1807  fIntFlowCorrelationsAllPro = new TProfile(intFlowCorrelationsAllProName.Data(),"Average all correlations for all events",64,0,64);
1808  fIntFlowCorrelationsAllPro->Sumw2();
1809  fIntFlowCorrelationsAllPro->SetTickLength(-0.01,"Y");
1810  fIntFlowCorrelationsAllPro->SetMarkerStyle(25);
1811  fIntFlowCorrelationsAllPro->SetLabelSize(0.03);
1812  fIntFlowCorrelationsAllPro->SetLabelOffset(0.01,"Y");
1813  // 2-p correlations:
1814  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(1,"#LT#LT2#GT#GT_{n|n}");
1815  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(2,"#LT#LT2#GT#GT_{2n|2n}");
1816  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(3,"#LT#LT2#GT#GT_{3n|3n}");
1817  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(4,"#LT#LT2#GT#GT_{4n|4n}");
1818  // 3-p correlations:
1819  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(6,"#LT#LT3#GT#GT_{2n|n,n}");
1820  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(7,"#LT#LT3#GT#GT_{3n|2n,n}");
1821  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(8,"#LT#LT3#GT#GT_{4n|2n,2n}");
1822  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(9,"#LT#LT3#GT#GT_{4n|3n,n}");
1823  // 4-p correlations:
1824  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(11,"#LT#LT4#GT#GT_{n,n|n,n}"); 
1825  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(12,"#LT#LT4#GT#GT_{2n,n|2n,n}");
1826  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(13,"#LT#LT4#GT#GT_{2n,2n|2n,2n}");
1827  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(14,"#LT#LT4#GT#GT_{3n|n,n,n}");
1828  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(15,"#LT#LT4#GT#GT_{3n,n|3n,n}");
1829  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(16,"#LT#LT4#GT#GT_{3n,n|2n,2n}"); 
1830  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(17,"#LT#LT4#GT#GT_{4n|2n,n,n}");
1831  // 5-p correlations:
1832  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(19,"#LT#LT5#GT#GT_{2n,n|n,n,n}"); 
1833  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(20,"#LT#LT5#GT#GT_{2n,2n|2n,n,n}");
1834  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(21,"#LT#LT5#GT#GT_{3n,n|2n,n,n}");
1835  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(22,"#LT#LT5#GT#GT_{4n|n,n,n,n}");
1836  // 6-p correlations:
1837  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(24,"#LT#LT6#GT#GT_{n,n,n|n,n,n}");
1838  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(25,"#LT#LT6#GT#GT_{2n,n,n|2n,n,n}");
1839  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(26,"#LT#LT6#GT#GT_{2n,2n|n,n,n,n}");
1840  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(27,"#LT#LT6#GT#GT_{3n,n|n,n,n,n}");
1841  // 7-p correlations:  
1842  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(29,"#LT#LT7#GT#GT_{2n,n,n|n,n,n,n}");
1843  // 8-p correlations:
1844  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(31,"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}");
1845  //  EXTRA correlations for v3{5} study:
1846  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(33,"#LT#LT4#GT#GT_{4n,2n|3n,3n}");
1847  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(34,"#LT#LT5#GT#GT_{3n,3n|2n,2n,2n}");
1848  //  EXTRA correlations for Teaney-Yan study:
1849  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(35,"#LT#LT2#GT#GT_{5n|5n}");
1850  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(36,"#LT#LT2#GT#GT_{6n|6n}");
1851  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(37,"#LT#LT3#GT#GT_{5n|3n,2n}");
1852  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(38,"#LT#LT3#GT#GT_{5n|4n,1n}");
1853  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(39,"#LT#LT3#GT#GT_{6n|3n,3n}");
1854  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(40,"#LT#LT3#GT#GT_{6n|4n,2n}");
1855  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(41,"#LT#LT3#GT#GT_{6n|5n,1n}");
1856  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(42,"#LT#LT4#GT#GT_{6n|3n,2n,1n}");
1857  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(43,"#LT#LT4#GT#GT_{3n,2n|3n,2n}");
1858  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(44,"#LT#LT4#GT#GT_{4n,1n|3n,2n}");
1859  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(45,"#LT#LT4#GT#GT_{3n,3n|3n,3n}");
1860  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(46,"#LT#LT4#GT#GT_{4n,2n|3n,3n}");
1861  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(47,"#LT#LT4#GT#GT_{5n,1n|3n,3n}");
1862  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(48,"#LT#LT4#GT#GT_{4n,2n|4n,2n}");
1863  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(49,"#LT#LT4#GT#GT_{5n,1n|4n,2n}");
1864  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(50,"#LT#LT4#GT#GT_{5n|3n,1n,1n}");
1865  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(51,"#LT#LT4#GT#GT_{5n|2n,2n,1n}");
1866  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(52,"#LT#LT4#GT#GT_{5n,1n|5n,1n}");
1867  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(53,"#LT#LT5#GT#GT_{3n,3n|3n,2n,1n}");
1868  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(54,"#LT#LT5#GT#GT_{4n,2n|3n,2n,1n}");
1869  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(55,"#LT#LT5#GT#GT_{3n,2n|3n,1n,1n}");
1870  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(56,"#LT#LT5#GT#GT_{3n,2n|2n,2n,1n}");
1871  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(57,"#LT#LT5#GT#GT_{5n,1n|3n,2n,1n}");
1872  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(58,"#LT#LT6#GT#GT_{3n,2n,1n|3n,2n,1n}");
1873  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(59,"#LT#LT4#GT#GT_{6n|4n,1n,1n}");
1874  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(60,"#LT#LT4#GT#GT_{6n|2n,2n,2n}");
1875  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(61,"#LT#LT5#GT#GT_{6n|2n,2n,1n,1n}");
1876  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(62,"#LT#LT5#GT#GT_{4n,1n,1n|3n,3n}");
1877  (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(63,"#LT#LT6#GT#GT_{3n,3n|2n,2n,1n,1n}");
1878  fIntFlowProfiles->Add(fIntFlowCorrelationsAllPro);
1879  // average all correlations versus multiplicity (errors via Sumw2 - to be improved):
1880  if(fCalculateAllCorrelationsVsM)
1881  {
1882   // 2-p correlations vs M:  
1883   fIntFlowCorrelationsAllVsMPro[0] = new TProfile("two1n1n","#LT#LT2#GT#GT_{n|n}",fnBinsMult,fMinMult,fMaxMult);
1884   fIntFlowCorrelationsAllVsMPro[1] = new TProfile("two2n2n","#LT#LT2#GT#GT_{2n|2n}",fnBinsMult,fMinMult,fMaxMult);
1885   fIntFlowCorrelationsAllVsMPro[2] = new TProfile("two3n3n","#LT#LT2#GT#GT_{3n|3n}",fnBinsMult,fMinMult,fMaxMult);
1886   fIntFlowCorrelationsAllVsMPro[3] = new TProfile("two4n4n","#LT#LT2#GT#GT_{4n|4n}",fnBinsMult,fMinMult,fMaxMult);
1887   // 3-p correlations vs M:
1888   fIntFlowCorrelationsAllVsMPro[5] = new TProfile("three2n1n1n","#LT#LT3#GT#GT_{2n|n,n}",fnBinsMult,fMinMult,fMaxMult);
1889   fIntFlowCorrelationsAllVsMPro[6] = new TProfile("three3n2n1n","#LT#LT3#GT#GT_{3n|2n,n}",fnBinsMult,fMinMult,fMaxMult);
1890   fIntFlowCorrelationsAllVsMPro[7] = new TProfile("three4n2n2n","#LT#LT3#GT#GT_{4n|2n,2n}",fnBinsMult,fMinMult,fMaxMult);
1891   fIntFlowCorrelationsAllVsMPro[8] = new TProfile("three4n3n1n","#LT#LT3#GT#GT_{4n|3n,n}",fnBinsMult,fMinMult,fMaxMult);
1892   // 4-p correlations vs M:
1893   fIntFlowCorrelationsAllVsMPro[10] = new TProfile("four1n1n1n1n","#LT#LT4#GT#GT_{n,n|n,n}",fnBinsMult,fMinMult,fMaxMult);
1894   fIntFlowCorrelationsAllVsMPro[11] = new TProfile("four2n1n2n1n","#LT#LT4#GT#GT_{2n,n|2n,n}",fnBinsMult,fMinMult,fMaxMult);
1895   fIntFlowCorrelationsAllVsMPro[12] = new TProfile("four2n2n2n2n","#LT#LT4#GT#GT_{2n,2n|2n,2n}",fnBinsMult,fMinMult,fMaxMult);
1896   fIntFlowCorrelationsAllVsMPro[13] = new TProfile("four3n1n1n1n","#LT#LT4#GT#GT_{3n|n,n,n}",fnBinsMult,fMinMult,fMaxMult);
1897   fIntFlowCorrelationsAllVsMPro[14] = new TProfile("four3n1n3n1n","#LT#LT4#GT#GT_{3n,n|3n,n}",fnBinsMult,fMinMult,fMaxMult);
1898   fIntFlowCorrelationsAllVsMPro[15] = new TProfile("four3n1n2n2n","#LT#LT4#GT#GT_{3n,n|2n,2n}",fnBinsMult,fMinMult,fMaxMult);
1899   fIntFlowCorrelationsAllVsMPro[16] = new TProfile("four4n2n1n1n","#LT#LT4#GT#GT_{4n|2n,n,n}",fnBinsMult,fMinMult,fMaxMult);
1900   // 5-p correlations vs M:
1901   fIntFlowCorrelationsAllVsMPro[18] = new TProfile("five2n1n1n1n1n","#LT#LT5#GT#GT_{2n,n|n,n,n}",fnBinsMult,fMinMult,fMaxMult);
1902   fIntFlowCorrelationsAllVsMPro[19] = new TProfile("five2n2n2n1n1n","#LT#LT5#GT#GT_{2n,2n|2n,n,n}",fnBinsMult,fMinMult,fMaxMult);
1903   fIntFlowCorrelationsAllVsMPro[20] = new TProfile("five3n1n2n1n1n","#LT#LT5#GT#GT_{3n,n|2n,n,n}",fnBinsMult,fMinMult,fMaxMult);
1904   fIntFlowCorrelationsAllVsMPro[21] = new TProfile("five4n1n1n1n1n","#LT#LT5#GT#GT_{4n|n,n,n,n}",fnBinsMult,fMinMult,fMaxMult);
1905   // 6-p correlations vs M:
1906   fIntFlowCorrelationsAllVsMPro[23] = new TProfile("six1n1n1n1n1n1n","#LT#LT6#GT#GT_{n,n,n|n,n,n}",fnBinsMult,fMinMult,fMaxMult);
1907   fIntFlowCorrelationsAllVsMPro[24] = new TProfile("six2n1n1n2n1n1n","#LT#LT6#GT#GT_{2n,n,n|2n,n,n}",fnBinsMult,fMinMult,fMaxMult);
1908   fIntFlowCorrelationsAllVsMPro[25] = new TProfile("six2n2n1n1n1n1n","#LT#LT6#GT#GT_{2n,2n|n,n,n,n}",fnBinsMult,fMinMult,fMaxMult);
1909   fIntFlowCorrelationsAllVsMPro[26] = new TProfile("six3n1n1n1n1n1n","#LT#LT6#GT#GT_{3n,n|n,n,n,n}",fnBinsMult,fMinMult,fMaxMult);
1910   // 7-p correlations vs M:
1911   fIntFlowCorrelationsAllVsMPro[28] = new TProfile("seven2n1n1n1n1n1n1n","#LT#LT7#GT#GT_{2n,n,n|n,n,n,n}",fnBinsMult,fMinMult,fMaxMult);
1912   // 8-p correlations vs M:
1913   fIntFlowCorrelationsAllVsMPro[30] = new TProfile("eight1n1n1n1n1n1n1n1n","#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",fnBinsMult,fMinMult,fMaxMult);
1914   // EXTRA correlations vs M for v3{5} study (to be improved - put them in a right order somewhere):
1915   fIntFlowCorrelationsAllVsMPro[32] = new TProfile("four4n2n3n3n","#LT#LT4#GT#GT_{4n,2n|3n,3n}",fnBinsMult,fMinMult,fMaxMult);
1916   fIntFlowCorrelationsAllVsMPro[33] = new TProfile("five3n3n2n2n2n","#LT#LT5#GT#GT_{3n,3n|2n,2n,2n}",fnBinsMult,fMinMult,fMaxMult);
1917   // EXTRA correlations vs M for Teaney-Yan study (to be improved - put them in a right order somewhere):
1918   fIntFlowCorrelationsAllVsMPro[34] = new TProfile("two5n5n","#LT#LT2#GT#GT_{5n|5n}",fnBinsMult,fMinMult,fMaxMult);
1919   fIntFlowCorrelationsAllVsMPro[35] = new TProfile("two6n6n","#LT#LT2#GT#GT_{6n|6n}",fnBinsMult,fMinMult,fMaxMult);
1920   fIntFlowCorrelationsAllVsMPro[36] = new TProfile("three5n3n2n","#LT#LT3#GT#GT_{5n|3n,2n}",fnBinsMult,fMinMult,fMaxMult);
1921   fIntFlowCorrelationsAllVsMPro[37] = new TProfile("three5n4n1n","#LT#LT3#GT#GT_{5n|4n,1n}",fnBinsMult,fMinMult,fMaxMult);
1922   fIntFlowCorrelationsAllVsMPro[38] = new TProfile("three6n3n3n","#LT#LT3#GT#GT_{6n|3n,3n}",fnBinsMult,fMinMult,fMaxMult);
1923   fIntFlowCorrelationsAllVsMPro[39] = new TProfile("three6n4n2n","#LT#LT3#GT#GT_{6n|4n,2n}",fnBinsMult,fMinMult,fMaxMult);
1924   fIntFlowCorrelationsAllVsMPro[40] = new TProfile("three6n5n1n","#LT#LT3#GT#GT_{6n|5n,1n}",fnBinsMult,fMinMult,fMaxMult);
1925   fIntFlowCorrelationsAllVsMPro[41] = new TProfile("four6n3n2n1n","#LT#LT4#GT#GT_{6n|3n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
1926   fIntFlowCorrelationsAllVsMPro[42] = new TProfile("four3n2n3n2n","#LT#LT4#GT#GT_{3n,2n|3n,2n}",fnBinsMult,fMinMult,fMaxMult);
1927   fIntFlowCorrelationsAllVsMPro[43] = new TProfile("four4n1n3n2n","#LT#LT4#GT#GT_{4n,1n|3n,2n}",fnBinsMult,fMinMult,fMaxMult);
1928   fIntFlowCorrelationsAllVsMPro[44] = new TProfile("four3n3n3n3n","#LT#LT4#GT#GT_{3n,3n|3n,3n}",fnBinsMult,fMinMult,fMaxMult);
1929   fIntFlowCorrelationsAllVsMPro[45] = new TProfile("four4n2n3n3n","#LT#LT4#GT#GT_{4n,2n|3n,3n}",fnBinsMult,fMinMult,fMaxMult);
1930   fIntFlowCorrelationsAllVsMPro[46] = new TProfile("four5n1n3n3n","#LT#LT4#GT#GT_{5n,1n|3n,3n}",fnBinsMult,fMinMult,fMaxMult);
1931   fIntFlowCorrelationsAllVsMPro[47] = new TProfile("four4n2n4n2n","#LT#LT4#GT#GT_{4n,2n|4n,2n}",fnBinsMult,fMinMult,fMaxMult);
1932   fIntFlowCorrelationsAllVsMPro[48] = new TProfile("four5n1n4n2n","#LT#LT4#GT#GT_{5n,1n|4n,2n}",fnBinsMult,fMinMult,fMaxMult);
1933   fIntFlowCorrelationsAllVsMPro[49] = new TProfile("four5n3n1n1n","#LT#LT4#GT#GT_{5n|3n,1n,1n}",fnBinsMult,fMinMult,fMaxMult);
1934   fIntFlowCorrelationsAllVsMPro[50] = new TProfile("four5n2n2n1n","#LT#LT4#GT#GT_{5n|2n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
1935   fIntFlowCorrelationsAllVsMPro[51] = new TProfile("four5n1n5n1n","#LT#LT4#GT#GT_{5n,1n|5n,1n}",fnBinsMult,fMinMult,fMaxMult);
1936   fIntFlowCorrelationsAllVsMPro[52] = new TProfile("five3n3n3n2n1n","#LT#LT5#GT#GT_{3n,3n|3n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
1937   fIntFlowCorrelationsAllVsMPro[53] = new TProfile("five4n2n3n2n1n","#LT#LT5#GT#GT_{4n,2n|3n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
1938   fIntFlowCorrelationsAllVsMPro[54] = new TProfile("five3n2n3n1n1n","#LT#LT5#GT#GT_{3n,2n|3n,1n,1n}",fnBinsMult,fMinMult,fMaxMult);
1939   fIntFlowCorrelationsAllVsMPro[55] = new TProfile("five3n2n2n2n1n","#LT#LT5#GT#GT_{3n,2n|2n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
1940   fIntFlowCorrelationsAllVsMPro[56] = new TProfile("five5n1n3n2n1n","#LT#LT5#GT#GT_{5n,1n|3n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
1941   fIntFlowCorrelationsAllVsMPro[57] = new TProfile("six3n2n1n3n2n1n","#LT#LT6#GT#GT_{3n,2n,1n|3n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
1942   fIntFlowCorrelationsAllVsMPro[58] = new TProfile("four6n4n1n1n","#LT#LT4#GT#GT_{6n|4n,1n,1n}",fnBinsMult,fMinMult,fMaxMult);
1943   fIntFlowCorrelationsAllVsMPro[59] = new TProfile("four6n2n2n2n","#LT#LT4#GT#GT_{6n|2n,2n,2n}",fnBinsMult,fMinMult,fMaxMult);
1944   fIntFlowCorrelationsAllVsMPro[60] = new TProfile("five6n2n2n1n1n","#LT#LT5#GT#GT_{6n|2n,2n,1n,1n}",fnBinsMult,fMinMult,fMaxMult);
1945   fIntFlowCorrelationsAllVsMPro[61] = new TProfile("five4n1n1n3n3n","#LT#LT5#GT#GT_{4n,1n,1n|3n,3n}",fnBinsMult,fMinMult,fMaxMult);
1946   fIntFlowCorrelationsAllVsMPro[62] = new TProfile("six3n3n2n2n1n1n","#LT#LT6#GT#GT_{3n,3n|2n,2n,1n,1n}",fnBinsMult,fMinMult,fMaxMult);
1947   for(Int_t n=0;n<63;n++)
1948   {
1949    if(fIntFlowCorrelationsAllVsMPro[n])
1950    {
1951     fIntFlowCorrelationsAllVsMPro[n]->Sumw2();
1952     if(fMultiplicityIs==AliFlowCommonConstants::kRP)
1953     {
1954      fIntFlowCorrelationsAllVsMPro[n]->GetXaxis()->SetTitle("# RPs"); 
1955     } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
1956       {
1957        fIntFlowCorrelationsAllVsMPro[n]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
1958       } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
1959         {
1960          fIntFlowCorrelationsAllVsMPro[n]->GetXaxis()->SetTitle("# POIs");
1961         }
1962     fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[n]);
1963    } // end of if(fIntFlowCorrelationsAllVsMPro[n])
1964   } // end of for(Int_t n=0;n<63;n++)
1965  } // end of if(fCalculateAllCorrelationsVsM)
1966  // when particle weights are used some extra correlations appear:
1967  if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights) 
1968  {
1969   TString intFlowExtraCorrelationsProName = "fIntFlowExtraCorrelationsPro";
1970   intFlowExtraCorrelationsProName += fAnalysisLabel->Data();
1971   fIntFlowExtraCorrelationsPro = new TProfile(intFlowExtraCorrelationsProName.Data(),"Average extra correlations for all events",100,0,100,"s");
1972   fIntFlowExtraCorrelationsPro->SetTickLength(-0.01,"Y");
1973   fIntFlowExtraCorrelationsPro->SetMarkerStyle(25);
1974   fIntFlowExtraCorrelationsPro->SetLabelSize(0.03);
1975   fIntFlowExtraCorrelationsPro->SetLabelOffset(0.01,"Y");
1976   // extra 2-p correlations:
1977   (fIntFlowExtraCorrelationsPro->GetXaxis())->SetBinLabel(1,"<<w1^3 w2 cos(n*(phi1-phi2))>>");
1978   (fIntFlowExtraCorrelationsPro->GetXaxis())->SetBinLabel(2,"<<w1 w2 w3^2 cos(n*(phi1-phi2))>>");
1979   fIntFlowProfiles->Add(fIntFlowExtraCorrelationsPro);
1980  } // end of if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
1981  // average product of correlations <2>, <4>, <6> and <8>:  
1982  TString productFlag[6] = {"#LT#LT2#GT#LT4#GT#GT","#LT#LT2#GT#LT6#GT#GT","#LT#LT2#GT#LT8#GT#GT",
1983                            "#LT#LT4#GT#LT6#GT#GT","#LT#LT4#GT#LT8#GT#GT","#LT#LT6#GT#LT8#GT#GT"};
1984  TString intFlowProductOfCorrelationsProName = "fIntFlowProductOfCorrelationsPro";
1985  intFlowProductOfCorrelationsProName += fAnalysisLabel->Data();
1986  fIntFlowProductOfCorrelationsPro = new TProfile(intFlowProductOfCorrelationsProName.Data(),"Average products of correlations",6,0,6);
1987  fIntFlowProductOfCorrelationsPro->SetTickLength(-0.01,"Y");
1988  fIntFlowProductOfCorrelationsPro->SetMarkerStyle(25); 
1989  fIntFlowProductOfCorrelationsPro->SetLabelSize(0.05);
1990  fIntFlowProductOfCorrelationsPro->SetLabelOffset(0.01,"Y");
1991  for(Int_t b=0;b<6;b++)
1992  {
1993   (fIntFlowProductOfCorrelationsPro->GetXaxis())->SetBinLabel(b+1,productFlag[b].Data());
1994  }
1995  fIntFlowProfiles->Add(fIntFlowProductOfCorrelationsPro); 
1996  // average product of correlations <2>, <4>, <6> and <8> versus multiplicity
1997  // [0=<<2><4>>,1=<<2><6>>,2=<<2><8>>,3=<<4><6>>,4=<<4><8>>,5=<<6><8>>]  
1998  if(fCalculateCumulantsVsM)
1999  {
2000   TString intFlowProductOfCorrelationsVsMProName = "fIntFlowProductOfCorrelationsVsMPro";
2001   intFlowProductOfCorrelationsVsMProName += fAnalysisLabel->Data();
2002   for(Int_t pi=0;pi<6;pi++)
2003   { 
2004    fIntFlowProductOfCorrelationsVsMPro[pi] = new TProfile(Form("%s, %s",intFlowProductOfCorrelationsVsMProName.Data(),productFlag[pi].Data()),
2005                                                           Form("%s versus multiplicity",productFlag[pi].Data()),
2006                                                           fnBinsMult,fMinMult,fMaxMult);             
2007    if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2008    {
2009     fIntFlowProductOfCorrelationsVsMPro[pi]->GetXaxis()->SetTitle("# RPs");
2010    } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2011      {
2012       fIntFlowProductOfCorrelationsVsMPro[pi]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
2013      } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2014        {
2015         fIntFlowProductOfCorrelationsVsMPro[pi]->GetXaxis()->SetTitle("# POIs");
2016        }
2017    fIntFlowProfiles->Add(fIntFlowProductOfCorrelationsVsMPro[pi]);
2018   } // end of for(Int_t pi=0;pi<6;pi++)
2019  } // end of if(fCalculateCumulantsVsM) 
2020  // average product of correction terms for NUA:  
2021  TString intFlowProductOfCorrectionTermsForNUAProName = "fIntFlowProductOfCorrectionTermsForNUAPro";
2022  intFlowProductOfCorrectionTermsForNUAProName += fAnalysisLabel->Data();
2023  fIntFlowProductOfCorrectionTermsForNUAPro = new TProfile(intFlowProductOfCorrectionTermsForNUAProName.Data(),"Average products of correction terms for NUA",27,0,27);
2024  fIntFlowProductOfCorrectionTermsForNUAPro->SetTickLength(-0.01,"Y");
2025  fIntFlowProductOfCorrectionTermsForNUAPro->SetMarkerStyle(25); 
2026  fIntFlowProductOfCorrectionTermsForNUAPro->SetLabelSize(0.03);
2027  fIntFlowProductOfCorrectionTermsForNUAPro->SetLabelOffset(0.01,"Y");
2028  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(1,"<<2><cos(#phi)>>");
2029  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(2,"<<2><sin(#phi)>>");
2030  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(3,"<<cos(#phi)><sin(#phi)>>");
2031  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(4,"Cov(<2>,<cos(#phi_{1}+#phi_{2})>)");
2032  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(5,"Cov(<2>,<sin(#phi_{1}+#phi_{2})>)");
2033  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(6,"Cov(<2>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2034  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(7,"Cov(<2>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2035  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(8,"Cov(<4>,<cos(#phi)>)");
2036  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(9,"Cov(<4>,<sin(#phi)>)");
2037  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(10,"Cov(<4>,<cos(#phi_{1}+#phi_{2})>)");
2038  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(11,"Cov(<4>,<sin(#phi_{1}+#phi_{2})>)");
2039  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(12,"Cov(<4>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>>)");
2040  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(13,"Cov(<4>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>>)");
2041  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(14,"Cov(<cos(#phi)>,<cos(#phi_{1}+#phi_{2})>)"); 
2042  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(15,"Cov(<cos(#phi)>,<sin(#phi_{1}+#phi_{2})>)");
2043  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(16,"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2044  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(17,"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2045  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(18,"Cov(<sin(#phi)>,<cos(#phi_{1}+#phi_{2})>)");
2046  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(19,"Cov(<sin(#phi)>,<sin(#phi_{1}+#phi_{2})>)");
2047  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(20,"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2048  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(21,"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2049  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(22,"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
2050  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(23,"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2051  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(24,"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2052  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(25,"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2053  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(26,"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2054  (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(27,"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
2055  fIntFlowProfiles->Add(fIntFlowProductOfCorrectionTermsForNUAPro);
2056  // average correction terms for non-uniform acceptance (with wrong errors!):
2057  for(Int_t sc=0;sc<2;sc++) // sin or cos terms
2058  {
2059   TString intFlowCorrectionTermsForNUAProName = "fIntFlowCorrectionTermsForNUAPro";
2060   intFlowCorrectionTermsForNUAProName += fAnalysisLabel->Data();
2061   fIntFlowCorrectionTermsForNUAPro[sc] = new TProfile(Form("%s: %s terms",intFlowCorrectionTermsForNUAProName.Data(),sinCosFlag[sc].Data()),Form("Correction terms for non-uniform acceptance (%s terms)",sinCosFlag[sc].Data()),4,0,4,"s");
2062   fIntFlowCorrectionTermsForNUAPro[sc]->SetTickLength(-0.01,"Y");
2063   fIntFlowCorrectionTermsForNUAPro[sc]->SetMarkerStyle(25);
2064   fIntFlowCorrectionTermsForNUAPro[sc]->SetLabelSize(0.05);
2065   fIntFlowCorrectionTermsForNUAPro[sc]->SetLabelOffset(0.01,"Y");
2066   (fIntFlowCorrectionTermsForNUAPro[sc]->GetXaxis())->SetBinLabel(1,Form("#LT#LT%s(n(#phi_{1}))#GT#GT",sinCosFlag[sc].Data()));
2067   (fIntFlowCorrectionTermsForNUAPro[sc]->GetXaxis())->SetBinLabel(2,Form("#LT#LT%s(n(#phi_{1}+#phi_{2}))#GT#GT",sinCosFlag[sc].Data()));  
2068   (fIntFlowCorrectionTermsForNUAPro[sc]->GetXaxis())->SetBinLabel(3,Form("#LT#LT%s(n(#phi_{1}-#phi_{2}-#phi_{3}))#GT#GT",sinCosFlag[sc].Data()));  
2069   (fIntFlowCorrectionTermsForNUAPro[sc]->GetXaxis())->SetBinLabel(4,Form("#LT#LT%s(n(2#phi_{1}-#phi_{2}))#GT#GT",sinCosFlag[sc].Data()));  
2070   fIntFlowProfiles->Add(fIntFlowCorrectionTermsForNUAPro[sc]);
2071   // versus multiplicity:
2072   if(fCalculateCumulantsVsM)
2073   {
2074    TString correctionTermFlag[4] = {"(n(phi1))","(n(phi1+phi2))","(n(phi1-phi2-phi3))","(n(2phi1-phi2))"}; // to be improved - hardwired 4
2075    for(Int_t ci=0;ci<4;ci++) // correction term index (to be improved - hardwired 4)
2076    {
2077     TString intFlowCorrectionTermsForNUAVsMProName = "fIntFlowCorrectionTermsForNUAVsMPro";
2078     intFlowCorrectionTermsForNUAVsMProName += fAnalysisLabel->Data();
2079     fIntFlowCorrectionTermsForNUAVsMPro[sc][ci] = new TProfile(Form("%s: #LT#LT%s%s#GT#GT",intFlowCorrectionTermsForNUAVsMProName.Data(),sinCosFlag[sc].Data(),correctionTermFlag[ci].Data()),Form("#LT#LT%s%s#GT#GT vs M",sinCosFlag[sc].Data(),correctionTermFlag[ci].Data()),fnBinsMult,fMinMult,fMaxMult,"s");
2080     fIntFlowProfiles->Add(fIntFlowCorrectionTermsForNUAVsMPro[sc][ci]);
2081    }
2082   } // end of if(fCalculateCumulantsVsM)
2083  } // end of for(Int_t sc=0;sc<2;sc++) 
2084  
2085  // d) Book histograms holding the final results:
2086  // average correlations <<2>>, <<4>>, <<6>> and <<8>> for all events (with correct errors!):
2087  TString intFlowCorrelationsHistName = "fIntFlowCorrelationsHist";
2088  intFlowCorrelationsHistName += fAnalysisLabel->Data();
2089  fIntFlowCorrelationsHist = new TH1D(intFlowCorrelationsHistName.Data(),"Average correlations for all events",4,0,4);
2090  fIntFlowCorrelationsHist->SetTickLength(-0.01,"Y");
2091  fIntFlowCorrelationsHist->SetMarkerStyle(25);
2092  fIntFlowCorrelationsHist->SetLabelSize(0.06);
2093  fIntFlowCorrelationsHist->SetLabelOffset(0.01,"Y");
2094  (fIntFlowCorrelationsHist->GetXaxis())->SetBinLabel(1,"#LT#LT2#GT#GT");
2095  (fIntFlowCorrelationsHist->GetXaxis())->SetBinLabel(2,"#LT#LT4#GT#GT");
2096  (fIntFlowCorrelationsHist->GetXaxis())->SetBinLabel(3,"#LT#LT6#GT#GT");
2097  (fIntFlowCorrelationsHist->GetXaxis())->SetBinLabel(4,"#LT#LT8#GT#GT");
2098  fIntFlowResults->Add(fIntFlowCorrelationsHist);
2099  // average correlations <<2>>, <<4>>, <<6>> and <<8>> for all events (with correct errors!) vs M:
2100  if(fCalculateCumulantsVsM)
2101  {
2102   for(Int_t ci=0;ci<4;ci++) // correlation index
2103   {
2104    TString intFlowCorrelationsVsMHistName = "fIntFlowCorrelationsVsMHist";
2105    intFlowCorrelationsVsMHistName += fAnalysisLabel->Data();
2106    fIntFlowCorrelationsVsMHist[ci] = new TH1D(Form("%s, %s",intFlowCorrelationsVsMHistName.Data(),correlationFlag[ci].Data()),
2107                                               Form("%s vs multiplicity",correlationFlag[ci].Data()),
2108                                               fnBinsMult,fMinMult,fMaxMult);                                            
2109    fIntFlowCorrelationsVsMHist[ci]->GetYaxis()->SetTitle(correlationFlag[ci].Data());
2110    if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2111    {
2112     fIntFlowCorrelationsVsMHist[ci]->GetXaxis()->SetTitle("# RPs");
2113    } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2114      {
2115       fIntFlowCorrelationsVsMHist[ci]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
2116      } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2117        {
2118         fIntFlowCorrelationsVsMHist[ci]->GetXaxis()->SetTitle("# POIs");
2119        }
2120    fIntFlowResults->Add(fIntFlowCorrelationsVsMHist[ci]);
2121   } // end of for(Int_t ci=0;ci<4;ci++) // correlation index   
2122  } // end of if(fCalculateCumulantsVsM) 
2123  // average all correlations for all events (with correct errors!):
2124  TString intFlowCorrelationsAllHistName = "fIntFlowCorrelationsAllHist";
2125  intFlowCorrelationsAllHistName += fAnalysisLabel->Data();
2126  fIntFlowCorrelationsAllHist = new TH1D(intFlowCorrelationsAllHistName.Data(),"Average correlations for all events",34,0,34);
2127  fIntFlowCorrelationsAllHist->SetTickLength(-0.01,"Y");
2128  fIntFlowCorrelationsAllHist->SetMarkerStyle(25);
2129  fIntFlowCorrelationsAllHist->SetLabelSize(0.03);
2130  fIntFlowCorrelationsAllHist->SetLabelOffset(0.01,"Y");
2131  // 2-p correlations:
2132  (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(1,"<<2>>_{n|n}");
2133  (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(2,"<<2>>_{2n|2n}");
2134  (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(3,"<<2>>_{3n|3n}");
2135  (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(4,"<<2>>_{4n|4n}");
2136  // 3-p correlations:
2137  (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(6,"<<3>>_{2n|n,n}");
2138  (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(7,"<<3>>_{3n|2n,n}");
2139  (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(8,"<<3>>_{4n|2n,2n}");
2140  (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(9,"<<3>>_{4n|3n,n}");
2141  // 4-p correlations:
2142  (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(11,"<<4>>_{n,n|n,n}"); 
2143  (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(12,"<<4>>_{2n,n|2n,n}");
2144  (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(13,"<<4>>_{2n,2n|2n,2n}");
2145  (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(14,"<<4>>_{3n|n,n,n}");
2146  (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(15,"<<4>>_{3n,n|3n,n}");
2147  (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(16,"<<4>>_{3n,n|2n,2n}"); 
2148  (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(17,"<<4>>_{4n|2n,n,n}");
2149  // 5-p correlations:
2150  (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(19,"<<5>>_{2n|n,n,n,n}"); 
2151  (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(20,"<<5>>_{2n,2n|2n,n,n}");
2152  (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(21,"<<5>>_{3n,n|2n,n,n}");
2153  (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(22,"<<5>>_{4n|n,n,n,n}");
2154  // 6-p correlations:
2155  (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(24,"<<6>>_{n,n,n|n,n,n}");
2156  (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(25,"<<6>>_{2n,n,n|2n,n,n}");
2157  (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(26,"<<6>>_{2n,2n|n,n,n,n}");
2158  (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(27,"<<6>>_{3n,n|n,n,n,n}");
2159  // 7-p correlations:  
2160  (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(29,"<<7>>_{2n,n,n|n,n,n,n}");
2161  // 8-p correlations:
2162  (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(31,"<<8>>_{n,n,n,n|n,n,n,n}");
2163  fIntFlowResults->Add(fIntFlowCorrelationsAllHist);
2164  // average correction terms for non-uniform acceptance (with correct errors!):
2165  for(Int_t sc=0;sc<2;sc++) // sin or cos terms
2166  {
2167   TString intFlowCorrectionTermsForNUAHistName = "fIntFlowCorrectionTermsForNUAHist";
2168   intFlowCorrectionTermsForNUAHistName += fAnalysisLabel->Data();
2169   fIntFlowCorrectionTermsForNUAHist[sc] = new TH1D(Form("%s: %s terms",intFlowCorrectionTermsForNUAHistName.Data(),sinCosFlag[sc].Data()),Form("Correction terms for non-uniform acceptance (%s terms)",sinCosFlag[sc].Data()),4,0,4);
2170   fIntFlowCorrectionTermsForNUAHist[sc]->SetTickLength(-0.01,"Y");
2171   fIntFlowCorrectionTermsForNUAHist[sc]->SetMarkerStyle(25);
2172   fIntFlowCorrectionTermsForNUAHist[sc]->SetLabelSize(0.05);
2173   fIntFlowCorrectionTermsForNUAHist[sc]->SetLabelOffset(0.01,"Y");
2174   (fIntFlowCorrectionTermsForNUAHist[sc]->GetXaxis())->SetBinLabel(1,Form("#LT#LT%s(n(#phi_{1}))#GT#GT",sinCosFlag[sc].Data()));
2175   (fIntFlowCorrectionTermsForNUAHist[sc]->GetXaxis())->SetBinLabel(2,Form("#LT#LT%s(n(#phi_{1}+#phi_{2}))#GT#GT",sinCosFlag[sc].Data()));  
2176   (fIntFlowCorrectionTermsForNUAHist[sc]->GetXaxis())->SetBinLabel(3,Form("#LT#LT%s(n(#phi_{1}-#phi_{2}-#phi_{3}))#GT#GT",sinCosFlag[sc].Data()));  
2177   (fIntFlowCorrectionTermsForNUAHist[sc]->GetXaxis())->SetBinLabel(4,Form("#LT#LT%s(n(2#phi_{1}-#phi_{2}))#GT#GT",sinCosFlag[sc].Data()));   
2178   fIntFlowResults->Add(fIntFlowCorrectionTermsForNUAHist[sc]);
2179  } // end of for(Int_t sc=0;sc<2;sc++) 
2180  // covariances (multiplied with weight dependent prefactor):
2181  TString intFlowCovariancesName = "fIntFlowCovariances";
2182  intFlowCovariancesName += fAnalysisLabel->Data();
2183  fIntFlowCovariances = new TH1D(intFlowCovariancesName.Data(),"Covariances (multiplied with weight dependent prefactor)",6,0,6);
2184  fIntFlowCovariances->SetLabelSize(0.04);
2185  fIntFlowCovariances->SetMarkerStyle(25);
2186  (fIntFlowCovariances->GetXaxis())->SetBinLabel(1,"Cov(#LT2#GT,#LT4#GT)");
2187  (fIntFlowCovariances->GetXaxis())->SetBinLabel(2,"Cov(#LT2#GT,#LT6#GT)");
2188  (fIntFlowCovariances->GetXaxis())->SetBinLabel(3,"Cov(#LT2#GT,#LT8#GT)");
2189  (fIntFlowCovariances->GetXaxis())->SetBinLabel(4,"Cov(#LT4#GT,#LT6#GT)");
2190  (fIntFlowCovariances->GetXaxis())->SetBinLabel(5,"Cov(#LT4#GT,#LT8#GT)");
2191  (fIntFlowCovariances->GetXaxis())->SetBinLabel(6,"Cov(#LT6#GT,#LT8#GT)");  
2192  fIntFlowResults->Add(fIntFlowCovariances);
2193  // sum of linear and quadratic event weights for <2>, <4>, <6> and <8>:
2194  TString intFlowSumOfEventWeightsName = "fIntFlowSumOfEventWeights";
2195  intFlowSumOfEventWeightsName += fAnalysisLabel->Data();
2196  for(Int_t power=0;power<2;power++)
2197  {
2198   fIntFlowSumOfEventWeights[power] = new TH1D(Form("%s: %s",intFlowSumOfEventWeightsName.Data(),powerFlag[power].Data()),Form("Sum of %s event weights for correlations",powerFlag[power].Data()),4,0,4);
2199   fIntFlowSumOfEventWeights[power]->SetLabelSize(0.04);
2200   fIntFlowSumOfEventWeights[power]->SetMarkerStyle(25);
2201   if(power == 0)
2202   {
2203    (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(1,"#sum_{i=1}^{N} w_{#LT2#GT}");
2204    (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(2,"#sum_{i=1}^{N} w_{#LT4#GT}");
2205    (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(3,"#sum_{i=1}^{N} w_{#LT6#GT}");
2206    (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(4,"#sum_{i=1}^{N} w_{#LT8#GT}");
2207   } else if (power == 1) 
2208     {
2209      (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(1,"#sum_{i=1}^{N} w_{#LT2#GT}^{2}");
2210      (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(2,"#sum_{i=1}^{N} w_{#LT4#GT}^{2}");
2211      (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(3,"#sum_{i=1}^{N} w_{#LT6#GT}^{2}");
2212      (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(4,"#sum_{i=1}^{N} w_{#LT8#GT}^{2}");
2213     }
2214   fIntFlowResults->Add(fIntFlowSumOfEventWeights[power]);
2215  } 
2216  // sum of products of event weights for correlations <2>, <4>, <6> and <8>:  
2217  TString intFlowSumOfProductOfEventWeightsName = "fIntFlowSumOfProductOfEventWeights";
2218  intFlowSumOfProductOfEventWeightsName += fAnalysisLabel->Data();
2219  fIntFlowSumOfProductOfEventWeights = new TH1D(intFlowSumOfProductOfEventWeightsName.Data(),"Sum of product of event weights for correlations",6,0,6);
2220  fIntFlowSumOfProductOfEventWeights->SetLabelSize(0.04);
2221  fIntFlowSumOfProductOfEventWeights->SetMarkerStyle(25);
2222  (fIntFlowSumOfProductOfEventWeights->GetXaxis())->SetBinLabel(1,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LT4#GT}");
2223  (fIntFlowSumOfProductOfEventWeights->GetXaxis())->SetBinLabel(2,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LT6#GT}");
2224  (fIntFlowSumOfProductOfEventWeights->GetXaxis())->SetBinLabel(3,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LT8#GT}");
2225  (fIntFlowSumOfProductOfEventWeights->GetXaxis())->SetBinLabel(4,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LT6#GT}");
2226  (fIntFlowSumOfProductOfEventWeights->GetXaxis())->SetBinLabel(5,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LT8#GT}");
2227  (fIntFlowSumOfProductOfEventWeights->GetXaxis())->SetBinLabel(6,"#sum_{i=1}^{N} w_{#LT6#GT} w_{#LT8#GT}");
2228  fIntFlowResults->Add(fIntFlowSumOfProductOfEventWeights);
2229  // final result for covariances of correlations (multiplied with weight dependent prefactor) versus M
2230  // [0=Cov(2,4),1=Cov(2,6),2=Cov(2,8),3=Cov(4,6),4=Cov(4,8),5=Cov(6,8)]:
2231  if(fCalculateCumulantsVsM)
2232  {
2233   TString intFlowCovariancesVsMName = "fIntFlowCovariancesVsM";
2234   intFlowCovariancesVsMName += fAnalysisLabel->Data();
2235   TString covarianceFlag[6] = {"Cov(<2>,<4>)","Cov(<2>,<6>)","Cov(<2>,<8>)","Cov(<4>,<6>)","Cov(<4>,<8>)","Cov(<6>,<8>)"};
2236   for(Int_t ci=0;ci<6;ci++)
2237   {
2238    fIntFlowCovariancesVsM[ci] = new TH1D(Form("%s, %s",intFlowCovariancesVsMName.Data(),covarianceFlag[ci].Data()),
2239                                          Form("%s vs multiplicity",covarianceFlag[ci].Data()),
2240                                          fnBinsMult,fMinMult,fMaxMult);
2241    fIntFlowCovariancesVsM[ci]->GetYaxis()->SetTitle(covarianceFlag[ci].Data());
2242    if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2243    {
2244     fIntFlowCovariancesVsM[ci]->GetXaxis()->SetTitle("# RPs");
2245    } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2246      {
2247       fIntFlowCovariancesVsM[ci]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
2248      } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2249        {
2250         fIntFlowCovariancesVsM[ci]->GetXaxis()->SetTitle("# POIs");
2251        }
2252    fIntFlowResults->Add(fIntFlowCovariancesVsM[ci]);
2253   }
2254  } // end of if(fCalculateCumulantsVsM) 
2255  // sum of linear and quadratic event weights for <2>, <4>, <6> and <8> versus multiplicity
2256  // [0=sum{w_{<2>}},1=sum{w_{<4>}},2=sum{w_{<6>}},3=sum{w_{<8>}}][0=linear 1,1=quadratic]:
2257  if(fCalculateCumulantsVsM)
2258  {
2259   TString intFlowSumOfEventWeightsVsMName = "fIntFlowSumOfEventWeightsVsM";
2260   intFlowSumOfEventWeightsVsMName += fAnalysisLabel->Data();
2261   TString sumFlag[2][4] = {{"#sum_{i=1}^{N} w_{<2>}","#sum_{i=1}^{N} w_{<4>}","#sum_{i=1}^{N} w_{<6>}","#sum_{i=1}^{N} w_{<8>}"},
2262                            {"#sum_{i=1}^{N} w_{<2>}^{2}","#sum_{i=1}^{N} w_{<4>}^{2}","#sum_{i=1}^{N} w_{<6>}^{2}","#sum_{i=1}^{N} w_{<8>}^{2}"}};
2263   for(Int_t si=0;si<4;si++)
2264   {
2265    for(Int_t power=0;power<2;power++)
2266    {
2267     fIntFlowSumOfEventWeightsVsM[si][power] = new TH1D(Form("%s, %s",intFlowSumOfEventWeightsVsMName.Data(),sumFlag[power][si].Data()),
2268                                                        Form("%s vs multiplicity",sumFlag[power][si].Data()),
2269                                                        fnBinsMult,fMinMult,fMaxMult);    
2270     fIntFlowSumOfEventWeightsVsM[si][power]->GetYaxis()->SetTitle(sumFlag[power][si].Data());  
2271     if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2272     {
2273      fIntFlowSumOfEventWeightsVsM[si][power]->GetXaxis()->SetTitle("# RPs");
2274     } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2275       {
2276        fIntFlowSumOfEventWeightsVsM[si][power]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
2277       } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2278         {
2279          fIntFlowSumOfEventWeightsVsM[si][power]->GetXaxis()->SetTitle("# POIs");
2280         }
2281     fIntFlowResults->Add(fIntFlowSumOfEventWeightsVsM[si][power]);
2282    } // end of for(Int_t power=0;power<2;power++)
2283   } // end of for(Int_t si=0;si<4;si++)   
2284  } // end of if(fCalculateCumulantsVsM)
2285  // sum of products of event weights for correlations <2>, <4>, <6> and <8> vs M
2286  // [0=sum{w_{<2>}w_{<4>}},1=sum{w_{<2>}w_{<6>}},2=sum{w_{<2>}w_{<8>}},
2287  //  3=sum{w_{<4>}w_{<6>}},4=sum{w_{<4>}w_{<8>}},5=sum{w_{<6>}w_{<8>}}]:  
2288  if(fCalculateCumulantsVsM)
2289  {
2290   TString intFlowSumOfProductOfEventWeightsVsMName = "fIntFlowSumOfProductOfEventWeightsVsM";
2291   intFlowSumOfProductOfEventWeightsVsMName += fAnalysisLabel->Data();
2292   TString sopowFlag[6] = {"#sum_{i=1}^{N} w_{<2>} w_{<4>}","#sum_{i=1}^{N} w_{<2>} w_{<6>}","#sum_{i=1}^{N} w_{<2>} w_{<8>}",
2293                           "#sum_{i=1}^{N} w_{<4>} w_{<6>}","#sum_{i=1}^{N} w_{<4>} w_{<8>}","#sum_{i=1}^{N} w_{<6>} w_{<8>}"}; 
2294   for(Int_t pi=0;pi<6;pi++)
2295   {
2296    fIntFlowSumOfProductOfEventWeightsVsM[pi] = new TH1D(Form("%s, %s",intFlowSumOfProductOfEventWeightsVsMName.Data(),sopowFlag[pi].Data()),
2297                                                         Form("%s versus multiplicity",sopowFlag[pi].Data()),
2298                                                         fnBinsMult,fMinMult,fMaxMult); 
2299    if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2300    {
2301     fIntFlowSumOfProductOfEventWeightsVsM[pi]->GetXaxis()->SetTitle("# RPs"); 
2302    } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2303      {
2304       fIntFlowSumOfProductOfEventWeightsVsM[pi]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
2305      } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2306        {
2307         fIntFlowSumOfProductOfEventWeightsVsM[pi]->GetXaxis()->SetTitle("# POIs");
2308        }
2309    fIntFlowSumOfProductOfEventWeightsVsM[pi]->GetYaxis()->SetTitle(sopowFlag[pi].Data()); 
2310    fIntFlowResults->Add(fIntFlowSumOfProductOfEventWeightsVsM[pi]);
2311   } // end of for(Int_t pi=0;pi<6;pi++) 
2312  } // end of if(fCalculateCumulantsVsM)
2313  // covariances of NUA terms (multiplied with weight dependent prefactor):
2314  TString intFlowCovariancesNUAName = "fIntFlowCovariancesNUA";
2315  intFlowCovariancesNUAName += fAnalysisLabel->Data();
2316  fIntFlowCovariancesNUA = new TH1D(intFlowCovariancesNUAName.Data(),"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
2317  fIntFlowCovariancesNUA->SetLabelSize(0.04);
2318  fIntFlowCovariancesNUA->SetMarkerStyle(25);
2319  fIntFlowCovariancesNUA->GetXaxis()->SetLabelSize(0.02);
2320  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(1,"Cov(<2>,<cos(#phi)>");
2321  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(2,"Cov(<2>,<sin(#phi)>)");
2322  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(3,"Cov(<cos(#phi)>,<sin(#phi)>)");
2323  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(4,"Cov(<2>,<cos(#phi_{1}+#phi_{2})>)");
2324  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(5,"Cov(<2>,<sin(#phi_{1}+#phi_{2})>)");
2325  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(6,"Cov(<2>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2326  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(7,"Cov(<2>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2327  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(8,"Cov(<4>,<cos(#phi)>)");
2328  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(9,"Cov(<4>,<sin(#phi)>)");
2329  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(10,"Cov(<4>,<cos(#phi_{1}+#phi_{2})>)");
2330  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(11,"Cov(<4>,<sin(#phi_{1}+#phi_{2})>)");
2331  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(12,"Cov(<4>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>>)");
2332  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(13,"Cov(<4>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>>)");
2333  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(14,"Cov(<cos(#phi)>,<cos(#phi_{1}+#phi_{2})>)"); 
2334  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(15,"Cov(<cos(#phi)>,<sin(#phi_{1}+#phi_{2})>)");
2335  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2336  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2337  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(18,"Cov(<sin(#phi)>,<cos(#phi_{1}+#phi_{2})>)");
2338  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(19,"Cov(<sin(#phi)>,<sin(#phi_{1}+#phi_{2})>)");
2339  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2340  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2341  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
2342  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2343  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2344  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2345  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2346  (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
2347  fIntFlowResults->Add(fIntFlowCovariancesNUA);
2348  // sum of linear and quadratic event weights for NUA terms:
2349  TString intFlowSumOfEventWeightsNUAName = "fIntFlowSumOfEventWeightsNUA";
2350  intFlowSumOfEventWeightsNUAName += fAnalysisLabel->Data();
2351  for(Int_t sc=0;sc<2;sc++)
2352  {
2353   for(Int_t power=0;power<2;power++)
2354   {
2355    fIntFlowSumOfEventWeightsNUA[sc][power] = new TH1D(Form("%s: %s, %s",intFlowSumOfEventWeightsNUAName.Data(),powerFlag[power].Data(),sinCosFlag[sc].Data()),Form("Sum of %s event weights for NUA %s terms",powerFlag[power].Data(),sinCosFlag[sc].Data()),4,0,4); // to be improved - 4
2356    fIntFlowSumOfEventWeightsNUA[sc][power]->SetLabelSize(0.05);
2357    fIntFlowSumOfEventWeightsNUA[sc][power]->SetMarkerStyle(25);
2358    if(power == 0)
2359    {
2360     (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(1,Form("#sum_{i=1}^{N} w_{<%s(#phi)>}",sinCosFlag[sc].Data()));
2361     (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(2,Form("#sum_{i=1}^{N} w_{<%s(#phi_{1}+#phi_{2})>}",sinCosFlag[sc].Data()));
2362     (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form("#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}",sinCosFlag[sc].Data()));   
2363     (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(4,Form("#sum_{i=1}^{N} w_{<%s(2#phi_{1}-#phi_{2})>}",sinCosFlag[sc].Data()));
2364    } else if(power == 1) 
2365      {
2366       (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(1,Form("#sum_{i=1}^{N} w_{<%s(#phi)>}^{2}",sinCosFlag[sc].Data()));
2367       (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(2,Form("#sum_{i=1}^{N} w_{<%s(#phi_{1}+#phi_{2})>}^{2}",sinCosFlag[sc].Data()));
2368       (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form("#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].Data()));
2369       (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(4,Form("#sum_{i=1}^{N} w_{<%s(2#phi_{1}-#phi_{2})>}^{2}",sinCosFlag[sc].Data()));
2370      }
2371    fIntFlowResults->Add(fIntFlowSumOfEventWeightsNUA[sc][power]);
2372   }
2373  }  
2374  // sum of products of event weights for NUA terms:  
2375  TString intFlowSumOfProductOfEventWeightsNUAName = "fIntFlowSumOfProductOfEventWeightsNUA";
2376  intFlowSumOfProductOfEventWeightsNUAName += fAnalysisLabel->Data();
2377  fIntFlowSumOfProductOfEventWeightsNUA = new TH1D(intFlowSumOfProductOfEventWeightsNUAName.Data(),"Sum of product of event weights for NUA terms",27,0,27);
2378  fIntFlowSumOfProductOfEventWeightsNUA->SetLabelSize(0.02);
2379  fIntFlowSumOfProductOfEventWeightsNUA->SetMarkerStyle(25);
2380  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(1,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LTcos(#phi)#GT}");
2381  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(2,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LTsin(#phi)#GT}");
2382  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(3,"#sum_{i=1}^{N} w_{#LTcos(#phi)#GT} w_{#LTsin(#phi)#GT}");
2383  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(4,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LTcos(#phi_{1}+#phi_{2})#GT}");
2384  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(5,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LTsin(#phi_{1}+#phi_{2})#GT}");
2385  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(6,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LTcos(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2386  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(7,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LTsin(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2387  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(8,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LTcos(#phi)#GT}");
2388  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(9,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LTsin(#phi)#GT}");
2389  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(10,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LTcos(#phi_{1}+#phi_{2})#GT}");
2390  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(11,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LTsin(#phi_{1}+#phi_{2})#GT}");
2391  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(12,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LTcos(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2392  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(13,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LTsin(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2393  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(14,"#sum_{i=1}^{N} w_{#LTcos(#phi)#GT} w_{#LTcos(#phi_{1}+#phi_{2})#GT}");
2394  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(15,"#sum_{i=1}^{N} w_{#LTcos(#phi)#GT} w_{#LTsin(#phi_{1}+#phi_{2})#GT}");
2395  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(16,"#sum_{i=1}^{N} w_{#LTcos(#phi)#GT} w_{#LTcos(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2396  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(17,"#sum_{i=1}^{N} w_{#LTcos(#phi)#GT} w_{#LTsin(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2397  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(18,"#sum_{i=1}^{N} w_{#LTsin(#phi)#GT} w_{#LTcos(#phi_{1}+#phi_{2})#GT}");
2398  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(19,"#sum_{i=1}^{N} w_{#LTsin(#phi)#GT} w_{#LTsin(#phi_{1}+#phi_{2})#GT}");
2399  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(20,"#sum_{i=1}^{N} w_{#LTsin(#phi)#GT} w_{#LTcos(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2400  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(21,"#sum_{i=1}^{N} w_{#LTsin(#phi)#GT} w_{#LTsin(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2401  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(22,"#sum_{i=1}^{N} w_{#LTcos(#phi_{1}+#phi_{2})#GT} w_{#LTsin(#phi_{1}+#phi_{2})#GT}");
2402  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(23,"#sum_{i=1}^{N} w_{#LTcos(#phi_{1}+#phi_{2})#GT} w_{#LTcos(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2403  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(24,"#sum_{i=1}^{N} w_{#LTcos(#phi_{1}+#phi_{2})#GT} w_{#LTsin(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2404  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(25,"#sum_{i=1}^{N} w_{#LTsin(#phi_{1}+#phi_{2})#GT} w_{#LTcos(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2405  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(26,"#sum_{i=1}^{N} w_{#LTsin(#phi_{1}+#phi_{2})#GT} w_{#LTsin(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2406  (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(27,"#sum_{i=1}^{N} w_{#LTcos(#phi_{1}-#phi_{2}-#phi_{3})#GT} w_{#LTsin(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2407  fIntFlowResults->Add(fIntFlowSumOfProductOfEventWeightsNUA);
2408  // Final results for reference Q-cumulants:
2409  TString cumulantFlag[4] = {"QC{2}","QC{4}","QC{6}","QC{8}"};
2410  TString intFlowQcumulantsName = "fIntFlowQcumulants";
2411  intFlowQcumulantsName += fAnalysisLabel->Data();
2412  fIntFlowQcumulants = new TH1D(intFlowQcumulantsName.Data(),"Reference Q-cumulants",4,0,4);
2413  if(fPropagateErrorAlsoFromNIT)
2414  {
2415   fIntFlowQcumulants->SetTitle("Reference Q-cumulants (error from non-isotropic terms also propagated)");
2416  }
2417  fIntFlowQcumulants->SetLabelSize(0.05);
2418  fIntFlowQcumulants->SetMarkerStyle(25);
2419  for(Int_t b=0;b<4;b++)
2420  {
2421   (fIntFlowQcumulants->GetXaxis())->SetBinLabel(b+1,cumulantFlag[b].Data());
2422  } 
2423  fIntFlowResults->Add(fIntFlowQcumulants);
2424  // Final results for reference Q-cumulants rebinned in M: 
2425  if(fCalculateCumulantsVsM)
2426  {
2427   TString intFlowQcumulantsRebinnedInMName = "fIntFlowQcumulantsRebinnedInM";
2428   intFlowQcumulantsRebinnedInMName += fAnalysisLabel->Data();
2429   fIntFlowQcumulantsRebinnedInM = new TH1D(intFlowQcumulantsRebinnedInMName.Data(),"Reference Q-cumulants rebinned in M",4,0,4);
2430   fIntFlowQcumulantsRebinnedInM->SetLabelSize(0.05);
2431   fIntFlowQcumulantsRebinnedInM->SetMarkerStyle(25);
2432   for(Int_t b=0;b<4;b++)
2433   {
2434    (fIntFlowQcumulantsRebinnedInM->GetXaxis())->SetBinLabel(b+1,cumulantFlag[b].Data());
2435   } 
2436   fIntFlowResults->Add(fIntFlowQcumulantsRebinnedInM);
2437  } // end of if(fCalculateCumulantsVsM) 
2438  // Ratio between error squared: with/without non-isotropic terms:
2439  TString intFlowQcumulantsErrorSquaredRatioName = "fIntFlowQcumulantsErrorSquaredRatio";
2440  intFlowQcumulantsErrorSquaredRatioName += fAnalysisLabel->Data();
2441  fIntFlowQcumulantsErrorSquaredRatio = new TH1D(intFlowQcumulantsErrorSquaredRatioName.Data(),"Error squared of reference Q-cumulants: #frac{with NUA terms}{without NUA terms}",4,0,4);
2442  fIntFlowQcumulantsErrorSquaredRatio->SetLabelSize(0.05);
2443  fIntFlowQcumulantsErrorSquaredRatio->SetMarkerStyle(25);
2444  for(Int_t b=0;b<4;b++)
2445  {
2446   (fIntFlowQcumulantsErrorSquaredRatio->GetXaxis())->SetBinLabel(b+1,cumulantFlag[b].Data());
2447  } 
2448  fIntFlowResults->Add(fIntFlowQcumulantsErrorSquaredRatio);
2449  // final results for integrated Q-cumulants versus multiplicity:
2450  if(fCalculateCumulantsVsM)
2451  {
2452   TString intFlowQcumulantsVsMName = "fIntFlowQcumulantsVsM";
2453   intFlowQcumulantsVsMName += fAnalysisLabel->Data();
2454   for(Int_t co=0;co<4;co++) // cumulant order
2455   {
2456    fIntFlowQcumulantsVsM[co] = new TH1D(Form("%s, %s",intFlowQcumulantsVsMName.Data(),cumulantFlag[co].Data()),
2457                                         Form("%s vs multiplicity",cumulantFlag[co].Data()),
2458                                         fnBinsMult,fMinMult,fMaxMult);
2459    if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2460    {
2461     fIntFlowQcumulantsVsM[co]->GetXaxis()->SetTitle("# RPs");
2462    } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2463      {
2464       fIntFlowQcumulantsVsM[co]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
2465      } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2466        {
2467         fIntFlowQcumulantsVsM[co]->GetXaxis()->SetTitle("# POIs");
2468        }
2469    fIntFlowQcumulantsVsM[co]->GetYaxis()->SetTitle(cumulantFlag[co].Data());  
2470    fIntFlowResults->Add(fIntFlowQcumulantsVsM[co]);                                    
2471   } // end of for(Int_t co=0;co<4;co++) // cumulant order
2472  } // end of if(fCalculateCumulantsVsM)
2473  // final integrated flow estimates from Q-cumulants:
2474  TString flowFlag[4] = {Form("v_{%d}{2,QC}",fHarmonic),Form("v_{%d}{4,QC}",fHarmonic),Form("v_{%d}{6,QC}",fHarmonic),Form("v_{%d}{8,QC}",fHarmonic)};
2475  TString intFlowName = "fIntFlow";
2476  intFlowName += fAnalysisLabel->Data();  
2477  // integrated flow from Q-cumulants:
2478  fIntFlow = new TH1D(intFlowName.Data(),"Reference flow estimates from Q-cumulants",4,0,4);
2479  fIntFlow->SetLabelSize(0.05);
2480  fIntFlow->SetMarkerStyle(25);
2481  for(Int_t b=0;b<4;b++)
2482  {
2483   (fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].Data()); 
2484  }
2485  fIntFlowResults->Add(fIntFlow); 
2486  // Reference flow vs M rebinned in one huge bin:
2487  if(fCalculateCumulantsVsM)
2488  { 
2489   TString intFlowRebinnedInMName = "fIntFlowRebinnedInM";
2490   intFlowRebinnedInMName += fAnalysisLabel->Data();  
2491   fIntFlowRebinnedInM = new TH1D(intFlowRebinnedInMName.Data(),"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
2492   fIntFlowRebinnedInM->SetLabelSize(0.05);
2493   fIntFlowRebinnedInM->SetMarkerStyle(25);
2494   for(Int_t b=0;b<4;b++)
2495   {
2496    (fIntFlowRebinnedInM->GetXaxis())->SetBinLabel(b+1,flowFlag[b].Data()); 
2497   }
2498   fIntFlowResults->Add(fIntFlowRebinnedInM); 
2499  } 
2500  // integrated flow from Q-cumulants: versus multiplicity:
2501  if(fCalculateCumulantsVsM)
2502  {
2503   TString intFlowVsMName = "fIntFlowVsM";
2504   intFlowVsMName += fAnalysisLabel->Data();
2505   for(Int_t co=0;co<4;co++) // cumulant order
2506   {
2507    fIntFlowVsM[co] = new TH1D(Form("%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
2508                               Form("%s vs multiplicity",flowFlag[co].Data()),
2509                               fnBinsMult,fMinMult,fMaxMult);
2510    if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2511    {
2512     fIntFlowVsM[co]->GetXaxis()->SetTitle("# RPs");
2513    } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2514      {
2515       fIntFlowVsM[co]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
2516      } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2517        {
2518         fIntFlowVsM[co]->GetXaxis()->SetTitle("# POIs"); 
2519        }
2520    fIntFlowVsM[co]->GetYaxis()->SetTitle(flowFlag[co].Data());  
2521    fIntFlowResults->Add(fIntFlowVsM[co]);                                    
2522   } // end of for(Int_t co=0;co<4;co++) // cumulant order
2523  } // end of if(fCalculateCumulantsVsM)
2524  // quantifying detector effects effects to correlations:
2525  TString intFlowDetectorBiasName = "fIntFlowDetectorBias";
2526  intFlowDetectorBiasName += fAnalysisLabel->Data();  
2527  fIntFlowDetectorBias = new TH1D(intFlowDetectorBiasName.Data(),"Quantifying detector bias",4,0,4);
2528  fIntFlowDetectorBias->SetLabelSize(0.05);
2529  fIntFlowDetectorBias->SetMarkerStyle(25);
2530  for(Int_t ci=0;ci<4;ci++)
2531  {  
2532   (fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form("#frac{corrected}{measured} %s",cumulantFlag[ci].Data()));
2533  }
2534  fIntFlowResults->Add(fIntFlowDetectorBias); 
2535  // quantifying detector effects to correlations versus multiplicity:
2536  if(fCalculateCumulantsVsM)
2537  {
2538   TString intFlowDetectorBiasVsMName = "fIntFlowDetectorBiasVsM";
2539   intFlowDetectorBiasVsMName += fAnalysisLabel->Data();
2540   for(Int_t ci=0;ci<4;ci++) // correlation index
2541   {
2542    fIntFlowDetectorBiasVsM[ci] = new TH1D(Form("%s for %s",intFlowDetectorBiasVsMName.Data(),cumulantFlag[ci].Data()),
2543                                           Form("Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].Data()),
2544                                           fnBinsMult,fMinMult,fMaxMult);
2545    if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2546    {
2547     fIntFlowDetectorBiasVsM[ci]->GetXaxis()->SetTitle("# RPs"); 
2548    } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2549      {
2550       fIntFlowDetectorBiasVsM[ci]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
2551      } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2552        {
2553         fIntFlowDetectorBiasVsM[ci]->GetXaxis()->SetTitle("# POIs");
2554        }
2555    fIntFlowDetectorBiasVsM[ci]->GetYaxis()->SetTitle("#frac{corrected}{measured}");  
2556    fIntFlowResults->Add(fIntFlowDetectorBiasVsM[ci]);                                    
2557   } // end of for(Int_t co=0;co<4;co++) // cumulant order
2558  } // end of if(fCalculateCumulantsVsM)
2559    
2560 } // end of AliFlowAnalysisWithQCumulants::BookEverythingForIntegratedFlow()
2561
2562 //=======================================================================================================================
2563
2564 void AliFlowAnalysisWithQCumulants::BookEverythingForControlHistograms()
2565 {
2566  // Book all objects for control histograms.
2567
2568  // a) Book profile to hold all flags for control histograms;
2569  // b) Book all control histograms.
2570
2571  // a) Book profile to hold all flags for control histograms:
2572  TString controlHistogramsFlagsName = "fControlHistogramsFlags";
2573  controlHistogramsFlagsName += fAnalysisLabel->Data();
2574  fControlHistogramsFlags = new TProfile(controlHistogramsFlagsName.Data(),"Flags for Control Histograms",3,0,3);
2575  fControlHistogramsFlags->SetTickLength(-0.01,"Y");
2576  fControlHistogramsFlags->SetMarkerStyle(25);
2577  fControlHistogramsFlags->SetLabelSize(0.04);
2578  fControlHistogramsFlags->SetLabelOffset(0.02,"Y");
2579  fControlHistogramsFlags->SetStats(kFALSE);
2580  fControlHistogramsFlags->GetXaxis()->SetBinLabel(1,"fCorrelationNoRPsVsRefMult");
2581  fControlHistogramsFlags->GetXaxis()->SetBinLabel(2,"fCorrelationNoPOIsVsRefMult");
2582  fControlHistogramsFlags->GetXaxis()->SetBinLabel(3,"fCorrelationNoRPsVsNoPOIs");
2583  fControlHistogramsList->Add(fControlHistogramsFlags);
2584
2585  if(!fStoreControlHistograms){return;}
2586
2587  // b) Book all control histograms:
2588  //  b1) Correlation between # RPs and ref. mult. determined centrally:
2589  TString sCorrelationNoRPsVsRefMultName = "fCorrelationNoRPsVsRefMult";
2590  sCorrelationNoRPsVsRefMultName += fAnalysisLabel->Data();
2591  fCorrelationNoRPsVsRefMult = new TH2D(sCorrelationNoRPsVsRefMultName.Data(),"# RPs vs. Reference Multiplicity",fnBinsMult,fMinMult,fMaxMult,fnBinsMult,fMinMult,fMaxMult);
2592  fCorrelationNoRPsVsRefMult->SetTickLength(-0.01,"Y");
2593  fCorrelationNoRPsVsRefMult->SetLabelSize(0.04);
2594  fCorrelationNoRPsVsRefMult->SetLabelOffset(0.02,"Y");
2595  fCorrelationNoRPsVsRefMult->SetStats(kTRUE);
2596  fCorrelationNoRPsVsRefMult->GetXaxis()->SetTitle("# RPs");
2597  fCorrelationNoRPsVsRefMult->GetYaxis()->SetTitle("Reference Multiplicity");
2598  fControlHistogramsList->Add(fCorrelationNoRPsVsRefMult);
2599  //  b2) Correlation between # POIs and ref. mult. determined centrally:
2600  TString sCorrelationNoPOIsVsRefMultName = "fCorrelationNoPOIsVsRefMult";
2601  sCorrelationNoPOIsVsRefMultName += fAnalysisLabel->Data();
2602  fCorrelationNoPOIsVsRefMult = new TH2D(sCorrelationNoPOIsVsRefMultName.Data(),"# POIs vs. Reference Multiplicity",fnBinsMult,fMinMult,fMaxMult,fnBinsMult,fMinMult,fMaxMult);
2603  fCorrelationNoPOIsVsRefMult->SetTickLength(-0.01,"Y");
2604  fCorrelationNoPOIsVsRefMult->SetLabelSize(0.04);
2605  fCorrelationNoPOIsVsRefMult->SetLabelOffset(0.02,"Y");
2606  fCorrelationNoPOIsVsRefMult->SetStats(kTRUE);
2607  fCorrelationNoPOIsVsRefMult->GetXaxis()->SetTitle("# POIs");
2608  fCorrelationNoPOIsVsRefMult->GetYaxis()->SetTitle("Reference Multiplicity");
2609  fControlHistogramsList->Add(fCorrelationNoPOIsVsRefMult);
2610  //  b3) Correlation between # RPs and # POIs:
2611  TString sCorrelationNoRPsVsNoPOIsName = "fCorrelationNoRPsVsNoPOIs";
2612  sCorrelationNoRPsVsNoPOIsName += fAnalysisLabel->Data();
2613  fCorrelationNoRPsVsNoPOIs = new TH2D(sCorrelationNoRPsVsNoPOIsName.Data(),"# RPs vs. # POIs",fnBinsMult,fMinMult,fMaxMult,fnBinsMult,fMinMult,fMaxMult);
2614  fCorrelationNoRPsVsNoPOIs->SetTickLength(-0.01,"Y");
2615  fCorrelationNoRPsVsNoPOIs->SetLabelSize(0.04);
2616  fCorrelationNoRPsVsNoPOIs->SetLabelOffset(0.02,"Y");
2617  fCorrelationNoRPsVsNoPOIs->SetStats(kTRUE);
2618  fCorrelationNoRPsVsNoPOIs->GetXaxis()->SetTitle("# RPs");
2619  fCorrelationNoRPsVsNoPOIs->GetYaxis()->SetTitle("# POIs");
2620  fControlHistogramsList->Add(fCorrelationNoRPsVsNoPOIs);
2621  // b4) <2>, <4>, <6> and <8> vs multiplicity (#RPs, #POIs or external):
2622  TString sCorrelation[4] = {"#LT2#GT","#LT4#GT","#LT6#GT","#LT8#GT"};
2623  TString sMultiplicity = "";
2624  if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2625  {
2626   sMultiplicity = "# RPs"; 
2627  } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2628    {
2629     sMultiplicity = "Reference multiplicity (from ESD)";
2630    } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2631      {
2632       sMultiplicity = "# POIs";
2633      }
2634  for(Int_t ci=0;ci<4;ci++)
2635  {
2636   fCorrelation2468VsMult[ci] = new TH2D(Form("%s vs M",sCorrelation[ci].Data()),Form("%s vs M",sCorrelation[ci].Data()),fnBinsMult,fMinMult,fMaxMult,10000,fMinValueOfCorrelation[ci],fMaxValueOfCorrelation[ci]); // tbi -> 10000
2637   fCorrelation2468VsMult[ci]->SetTickLength(-0.01,"Y");
2638   fCorrelation2468VsMult[ci]->SetLabelSize(0.04);
2639   fCorrelation2468VsMult[ci]->SetLabelOffset(0.02,"Y");
2640   fCorrelation2468VsMult[ci]->SetStats(kTRUE);
2641   fCorrelation2468VsMult[ci]->GetXaxis()->SetTitle(sMultiplicity.Data());
2642   fCorrelation2468VsMult[ci]->GetYaxis()->SetTitle(sCorrelation[ci].Data());
2643   fControlHistogramsList->Add(fCorrelation2468VsMult[ci]); 
2644  } // end of for(Int_t ci=0;ci<4;ci++)
2645
2646 } // end of void AliFlowAnalysisWithQCumulants::BookEverythingForControlHistograms()
2647
2648 //=======================================================================================================================
2649
2650 void AliFlowAnalysisWithQCumulants::BookEverythingForMixedHarmonics()
2651 {
2652  // Book all objects for mixed harmonics.
2653
2654  // a) Book profile to hold all flags for mixed harmonics;
2655  // b) Book all objects in TList fMixedHarmonicsProfiles;
2656  // c) Book all objects in TList fMixedHarmonicsResults;
2657  // d) Book all objects in TList fMixedHarmonicsErrorPropagation.
2658
2659  // a) Book profile to hold all flags for mixed harmonics:
2660  TString mixedHarmonicsFlagsName = "fMixedHarmonicsFlags";
2661  mixedHarmonicsFlagsName += fAnalysisLabel->Data();
2662  fMixedHarmonicsFlags = new TProfile(mixedHarmonicsFlagsName.Data(),"Flags for Mixed Harmonics",4,0,4);
2663  fMixedHarmonicsFlags->SetTickLength(-0.01,"Y");
2664  fMixedHarmonicsFlags->SetMarkerStyle(25);
2665  fMixedHarmonicsFlags->SetLabelSize(0.04);
2666  fMixedHarmonicsFlags->SetLabelOffset(0.02,"Y");
2667  fMixedHarmonicsFlags->SetStats(kFALSE);
2668  fMixedHarmonicsFlags->GetXaxis()->SetBinLabel(1,"Calculate Mixed Harmonics");
2669  fMixedHarmonicsFlags->GetXaxis()->SetBinLabel(2,"Generic Harmonic");
2670  fMixedHarmonicsFlags->GetXaxis()->SetBinLabel(3,"Calculate vs Multiplicity");
2671  fMixedHarmonicsFlags->GetXaxis()->SetBinLabel(4,"Multiplicity Weight");
2672  fMixedHarmonicsList->Add(fMixedHarmonicsFlags);
2673
2674  if(!fCalculateMixedHarmonics){return;}
2675
2676  // b) Book all objects in TList fMixedHarmonicsProfiles:
2677  //  b1) 2-p correlations:
2678  TString s2pCorrelationsName = "f2pCorrelations";
2679  s2pCorrelationsName += fAnalysisLabel->Data();
2680  f2pCorrelations = new TProfile(s2pCorrelationsName.Data(),Form("2-particle correlations (n = %d)",fHarmonic),6,0,6,"s");
2681  f2pCorrelations->SetTickLength(-0.01,"Y");
2682  f2pCorrelations->SetMarkerStyle(25);
2683  f2pCorrelations->SetLabelSize(0.04);
2684  f2pCorrelations->SetLabelOffset(0.02,"Y");
2685  f2pCorrelations->SetStats(kFALSE);
2686  f2pCorrelations->Sumw2();
2687  f2pCorrelations->GetXaxis()->SetBinLabel(1,Form("#LT#LT2#GT#GT_{%dn|%dn}",1*fHarmonic,1*fHarmonic));
2688  f2pCorrelations->GetXaxis()->SetBinLabel(2,Form("#LT#LT2#GT#GT_{%dn|%dn}",2*fHarmonic,2*fHarmonic));
2689  f2pCorrelations->GetXaxis()->SetBinLabel(3,Form("#LT#LT2#GT#GT_{%dn|%dn}",3*fHarmonic,3*fHarmonic));
2690  f2pCorrelations->GetXaxis()->SetBinLabel(4,Form("#LT#LT2#GT#GT_{%dn|%dn}",4*fHarmonic,4*fHarmonic));
2691  f2pCorrelations->GetXaxis()->SetBinLabel(5,Form("#LT#LT2#GT#GT_{%dn|%dn}",5*fHarmonic,5*fHarmonic));
2692  f2pCorrelations->GetXaxis()->SetBinLabel(6,Form("#LT#LT2#GT#GT_{%dn|%dn}",6*fHarmonic,6*fHarmonic));
2693  fMixedHarmonicsProfiles->Add(f2pCorrelations);
2694  //  b2) 3-p correlations (3+6):
2695  TString s3pCorrelationsName = "f3pCorrelations";
2696  s3pCorrelationsName += fAnalysisLabel->Data();
2697  f3pCorrelations = new TProfile(s3pCorrelationsName.Data(),Form("3-particle correlations (n = %d)",fHarmonic),10,0,10,"s"); 
2698  f3pCorrelations->SetTickLength(-0.01,"Y");
2699  f3pCorrelations->SetMarkerStyle(25);
2700  f3pCorrelations->SetLabelSize(0.04);
2701  f3pCorrelations->SetLabelOffset(0.02,"Y");
2702  f3pCorrelations->SetStats(kFALSE);
2703  f3pCorrelations->Sumw2();
2704  // 3-p correlations sensitive to two distinct harmonics (3):
2705  f3pCorrelations->GetXaxis()->SetBinLabel(1,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",2*fHarmonic,1*fHarmonic,1*fHarmonic));
2706  f3pCorrelations->GetXaxis()->SetBinLabel(2,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,2*fHarmonic));
2707  f3pCorrelations->GetXaxis()->SetBinLabel(3,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,3*fHarmonic));
2708  f3pCorrelations->GetXaxis()->SetBinLabel(4,""); // empty
2709  // 3-p correlations sensitive to three distinct harmonics (6):
2710  f3pCorrelations->GetXaxis()->SetBinLabel(5,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",3*fHarmonic,2*fHarmonic,1*fHarmonic));
2711  f3pCorrelations->GetXaxis()->SetBinLabel(6,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",4*fHarmonic,3*fHarmonic,1*fHarmonic));
2712  f3pCorrelations->GetXaxis()->SetBinLabel(7,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,2*fHarmonic));
2713  f3pCorrelations->GetXaxis()->SetBinLabel(8,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",5*fHarmonic,4*fHarmonic,1*fHarmonic));
2714  f3pCorrelations->GetXaxis()->SetBinLabel(9,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,2*fHarmonic));
2715  f3pCorrelations->GetXaxis()->SetBinLabel(10,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,5*fHarmonic,1*fHarmonic));
2716  fMixedHarmonicsProfiles->Add(f3pCorrelations);
2717  //  b3) 4-p correlations (6+15+2+10+8):
2718  TString s4pCorrelationsName = "f4pCorrelations";
2719  s4pCorrelationsName += fAnalysisLabel->Data();
2720  f4pCorrelations = new TProfile(s4pCorrelationsName.Data(),Form("4-particle correlations (n = %d)",fHarmonic),45,0,45,"s");
2721  f4pCorrelations->SetTickLength(-0.01,"Y");
2722  f4pCorrelations->SetMarkerStyle(25);
2723  f4pCorrelations->SetLabelSize(0.03);
2724  f4pCorrelations->SetLabelOffset(0.02,"Y");
2725  f4pCorrelations->SetStats(kFALSE);
2726  f4pCorrelations->Sumw2();
2727  // "same harmonic" (6):
2728  f4pCorrelations->GetXaxis()->SetBinLabel(1,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
2729  f4pCorrelations->GetXaxis()->SetBinLabel(2,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",2*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
2730  f4pCorrelations->GetXaxis()->SetBinLabel(3,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
2731  f4pCorrelations->GetXaxis()->SetBinLabel(4,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic));
2732  f4pCorrelations->GetXaxis()->SetBinLabel(5,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,5*fHarmonic));
2733  f4pCorrelations->GetXaxis()->SetBinLabel(6,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,6*fHarmonic));
2734  f4pCorrelations->GetXaxis()->SetBinLabel(7,""); // empty
2735  // "standard candles" (15):
2736  f4pCorrelations->GetXaxis()->SetBinLabel(8,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",2*fHarmonic,1*fHarmonic,2*fHarmonic,1*fHarmonic));
2737  f4pCorrelations->GetXaxis()->SetBinLabel(9,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,1*fHarmonic,3*fHarmonic,1*fHarmonic));
2738  f4pCorrelations->GetXaxis()->SetBinLabel(10,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic));
2739  f4pCorrelations->GetXaxis()->SetBinLabel(11,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,4*fHarmonic,1*fHarmonic));
2740  f4pCorrelations->GetXaxis()->SetBinLabel(12,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic));
2741  f4pCorrelations->GetXaxis()->SetBinLabel(13,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic));
2742  f4pCorrelations->GetXaxis()->SetBinLabel(14,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,5*fHarmonic,1*fHarmonic));
2743  f4pCorrelations->GetXaxis()->SetBinLabel(15,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,5*fHarmonic,2*fHarmonic));
2744  f4pCorrelations->GetXaxis()->SetBinLabel(16,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,5*fHarmonic,3*fHarmonic));
2745  f4pCorrelations->GetXaxis()->SetBinLabel(17,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,4*fHarmonic));
2746  f4pCorrelations->GetXaxis()->SetBinLabel(18,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,6*fHarmonic,1*fHarmonic));
2747  f4pCorrelations->GetXaxis()->SetBinLabel(19,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,6*fHarmonic,2*fHarmonic));
2748  f4pCorrelations->GetXaxis()->SetBinLabel(20,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,6*fHarmonic,3*fHarmonic));
2749  f4pCorrelations->GetXaxis()->SetBinLabel(21,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,4*fHarmonic));
2750  f4pCorrelations->GetXaxis()->SetBinLabel(22,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,5*fHarmonic));
2751  f4pCorrelations->GetXaxis()->SetBinLabel(23,""); // empty
2752  // 4-p correlations sensitive to two distinct harmonics (2):
2753  f4pCorrelations->GetXaxis()->SetBinLabel(24,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",3*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
2754  f4pCorrelations->GetXaxis()->SetBinLabel(25,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
2755  f4pCorrelations->GetXaxis()->SetBinLabel(26,""); // empty
2756  // 4-p correlations sensitive to three distinct harmonics (10):
2757  f4pCorrelations->GetXaxis()->SetBinLabel(27,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic));
2758  f4pCorrelations->GetXaxis()->SetBinLabel(28,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
2759  f4pCorrelations->GetXaxis()->SetBinLabel(29,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic));
2760  f4pCorrelations->GetXaxis()->SetBinLabel(30,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
2761  f4pCorrelations->GetXaxis()->SetBinLabel(31,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
2762  f4pCorrelations->GetXaxis()->SetBinLabel(32,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic));
2763  f4pCorrelations->GetXaxis()->SetBinLabel(33,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,4*fHarmonic));
2764  f4pCorrelations->GetXaxis()->SetBinLabel(34,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
2765  f4pCorrelations->GetXaxis()->SetBinLabel(35,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,4*fHarmonic));
2766  f4pCorrelations->GetXaxis()->SetBinLabel(36,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,5*fHarmonic));
2767  f4pCorrelations->GetXaxis()->SetBinLabel(37,""); // empty
2768  // 4-p correlations sensitive to four distinct harmonics (8):
2769  f4pCorrelations->GetXaxis()->SetBinLabel(38,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic));
2770  f4pCorrelations->GetXaxis()->SetBinLabel(39,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,4*fHarmonic,2*fHarmonic));
2771  f4pCorrelations->GetXaxis()->SetBinLabel(40,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,4*fHarmonic,3*fHarmonic));
2772  f4pCorrelations->GetXaxis()->SetBinLabel(41,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,4*fHarmonic,3*fHarmonic));
2773  f4pCorrelations->GetXaxis()->SetBinLabel(42,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,5*fHarmonic,2*fHarmonic));
2774  f4pCorrelations->GetXaxis()->SetBinLabel(43,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
2775  f4pCorrelations->GetXaxis()->SetBinLabel(44,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,5*fHarmonic,3*fHarmonic));
2776  f4pCorrelations->GetXaxis()->SetBinLabel(45,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,4*fHarmonic));
2777  fMixedHarmonicsProfiles->Add(f4pCorrelations);
2778  //  b3) 5-p correlations (30+9+30+11+3):
2779  TString s5pCorrelationsName = "f5pCorrelations";
2780  s5pCorrelationsName += fAnalysisLabel->Data();
2781  f5pCorrelations = new TProfile(s5pCorrelationsName.Data(),Form("5-particle correlations (n = %d)",fHarmonic),87,0,87,"s");
2782  f5pCorrelations->SetTickLength(-0.01,"Y");
2783  f5pCorrelations->SetMarkerStyle(25);
2784  f5pCorrelations->SetLabelSize(0.02);
2785  f5pCorrelations->SetLabelOffset(0.02,"Y");
2786  f5pCorrelations->SetStats(kFALSE);
2787  f5pCorrelations->Sumw2();
2788  // "standard candles" (30):
2789  f5pCorrelations->GetXaxis()->SetBinLabel(1,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,2*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
2790  f5pCorrelations->GetXaxis()->SetBinLabel(2,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
2791  f5pCorrelations->GetXaxis()->SetBinLabel(3,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
2792  f5pCorrelations->GetXaxis()->SetBinLabel(4,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
2793  f5pCorrelations->GetXaxis()->SetBinLabel(5,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
2794  f5pCorrelations->GetXaxis()->SetBinLabel(6,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
2795  f5pCorrelations->GetXaxis()->SetBinLabel(7,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
2796  f5pCorrelations->GetXaxis()->SetBinLabel(8,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,5*fHarmonic,1*fHarmonic,1*fHarmonic));
2797  f5pCorrelations->GetXaxis()->SetBinLabel(9,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
2798  f5pCorrelations->GetXaxis()->SetBinLabel(10,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
2799  f5pCorrelations->GetXaxis()->SetBinLabel(11,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,2*fHarmonic));
2800  f5pCorrelations->GetXaxis()->SetBinLabel(12,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,5*fHarmonic,2*fHarmonic,1*fHarmonic));
2801  f5pCorrelations->GetXaxis()->SetBinLabel(13,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,2*fHarmonic,2*fHarmonic));
2802  f5pCorrelations->GetXaxis()->SetBinLabel(14,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,3*fHarmonic,1*fHarmonic));
2803  f5pCorrelations->GetXaxis()->SetBinLabel(15,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
2804  f5pCorrelations->GetXaxis()->SetBinLabel(16,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
2805  f5pCorrelations->GetXaxis()->SetBinLabel(17,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
2806  f5pCorrelations->GetXaxis()->SetBinLabel(18,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic,2*fHarmonic));
2807  f5pCorrelations->GetXaxis()->SetBinLabel(19,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic));
2808  f5pCorrelations->GetXaxis()->SetBinLabel(20,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,5*fHarmonic,2*fHarmonic,1*fHarmonic));
2809  f5pCorrelations->GetXaxis()->SetBinLabel(21,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,3*fHarmonic,1*fHarmonic));
2810  f5pCorrelations->GetXaxis()->SetBinLabel(22,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,4*fHarmonic,1*fHarmonic));
2811  f5pCorrelations->GetXaxis()->SetBinLabel(23,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,3*fHarmonic,3*fHarmonic));
2812  f5pCorrelations->GetXaxis()->SetBinLabel(24,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,6*fHarmonic,1*fHarmonic,1*fHarmonic));
2813  f5pCorrelations->GetXaxis()->SetBinLabel(25,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,6*fHarmonic,2*fHarmonic,1*fHarmonic));
2814  f5pCorrelations->GetXaxis()->SetBinLabel(26,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,2*fHarmonic,2*fHarmonic));
2815  f5pCorrelations->GetXaxis()->SetBinLabel(27,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,3*fHarmonic,1*fHarmonic));
2816  f5pCorrelations->GetXaxis()->SetBinLabel(28,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,4*fHarmonic,2*fHarmonic));
2817  f5pCorrelations->GetXaxis()->SetBinLabel(29,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,3*fHarmonic,2*fHarmonic));
2818  f5pCorrelations->GetXaxis()->SetBinLabel(30,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,4*fHarmonic,1*fHarmonic));
2819  f5pCorrelations->GetXaxis()->SetBinLabel(31,""); // empty
2820  // 5-p correlations sensitive to two distinct harmonics (9):
2821  f5pCorrelations->GetXaxis()->SetBinLabel(32,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",2*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
2822  f5pCorrelations->GetXaxis()->SetBinLabel(33,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",2*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
2823  f5pCorrelations->GetXaxis()->SetBinLabel(34,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
2824  f5pCorrelations->GetXaxis()->SetBinLabel(35,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
2825  f5pCorrelations->GetXaxis()->SetBinLabel(36,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
2826  f5pCorrelations->GetXaxis()->SetBinLabel(37,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
2827  f5pCorrelations->GetXaxis()->SetBinLabel(38,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
2828  f5pCorrelations->GetXaxis()->SetBinLabel(39,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic));
2829  f5pCorrelations->GetXaxis()->SetBinLabel(40,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,3*fHarmonic,3*fHarmonic));
2830  f5pCorrelations->GetXaxis()->SetBinLabel(41,""); // empty
2831  // 5-p correlations sensitive to three distinct harmonics (30):
2832  f5pCorrelations->GetXaxis()->SetBinLabel(42,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,1*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
2833  f5pCorrelations->GetXaxis()->SetBinLabel(43,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
2834  f5pCorrelations->GetXaxis()->SetBinLabel(44,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
2835  f5pCorrelations->GetXaxis()->SetBinLabel(45,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
2836  f5pCorrelations->GetXaxis()->SetBinLabel(46,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic));
2837  f5pCorrelations->GetXaxis()->SetBinLabel(47,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
2838  f5pCorrelations->GetXaxis()->SetBinLabel(48,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
2839  f5pCorrelations->GetXaxis()->SetBinLabel(49,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
2840  f5pCorrelations->GetXaxis()->SetBinLabel(50,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
2841  f5pCorrelations->GetXaxis()->SetBinLabel(51,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
2842  f5pCorrelations->GetXaxis()->SetBinLabel(52,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
2843  f5pCorrelations->GetXaxis()->SetBinLabel(53,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
2844  f5pCorrelations->GetXaxis()->SetBinLabel(54,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
2845  f5pCorrelations->GetXaxis()->SetBinLabel(55,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
2846  f5pCorrelations->GetXaxis()->SetBinLabel(56,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic,1*fHarmonic));
2847  f5pCorrelations->GetXaxis()->SetBinLabel(57,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic));
2848  f5pCorrelations->GetXaxis()->SetBinLabel(58,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic));
2849  f5pCorrelations->GetXaxis()->SetBinLabel(59,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,3*fHarmonic,2*fHarmonic));
2850  f5pCorrelations->GetXaxis()->SetBinLabel(60,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,4*fHarmonic,1*fHarmonic));
2851  f5pCorrelations->GetXaxis()->SetBinLabel(61,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
2852  f5pCorrelations->GetXaxis()->SetBinLabel(62,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
2853  f5pCorrelations->GetXaxis()->SetBinLabel(63,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,1*fHarmonic,4*fHarmonic,4*fHarmonic));
2854  f5pCorrelations->GetXaxis()->SetBinLabel(64,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,5*fHarmonic,1*fHarmonic,1*fHarmonic));
2855  f5pCorrelations->GetXaxis()->SetBinLabel(65,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
2856  f5pCorrelations->GetXaxis()->SetBinLabel(66,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic));
2857  f5pCorrelations->GetXaxis()->SetBinLabel(67,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,5*fHarmonic,5*fHarmonic));
2858  f5pCorrelations->GetXaxis()->SetBinLabel(68,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,5*fHarmonic,1*fHarmonic));
2859  f5pCorrelations->GetXaxis()->SetBinLabel(69,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,5*fHarmonic,5*fHarmonic,2*fHarmonic));
2860  f5pCorrelations->GetXaxis()->SetBinLabel(70,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,4*fHarmonic,2*fHarmonic));
2861  f5pCorrelations->GetXaxis()->SetBinLabel(71,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,5*fHarmonic,1*fHarmonic));
2862  f5pCorrelations->GetXaxis()->SetBinLabel(72,""); // empty
2863  // 5-p correlations sensitive to four distinct harmonics (11):
2864  f5pCorrelations->GetXaxis()->SetBinLabel(73,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
2865  f5pCorrelations->GetXaxis()->SetBinLabel(74,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,1*fHarmonic,4*fHarmonic,3*fHarmonic));
2866  f5pCorrelations->GetXaxis()->SetBinLabel(75,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
2867  f5pCorrelations->GetXaxis()->SetBinLabel(76,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,1*fHarmonic,4*fHarmonic,4*fHarmonic));
2868  f5pCorrelations->GetXaxis()->SetBinLabel(77,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
2869  f5pCorrelations->GetXaxis()->SetBinLabel(78,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,4*fHarmonic,4*fHarmonic,1*fHarmonic));
2870  f5pCorrelations->GetXaxis()->SetBinLabel(79,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,1*fHarmonic,5*fHarmonic,3*fHarmonic));
2871  f5pCorrelations->GetXaxis()->SetBinLabel(80,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,2*fHarmonic,2*fHarmonic));
2872  f5pCorrelations->GetXaxis()->SetBinLabel(81,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic));
2873  f5pCorrelations->GetXaxis()->SetBinLabel(82,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,1*fHarmonic,5*fHarmonic,5*fHarmonic));
2874  f5pCorrelations->GetXaxis()->SetBinLabel(83,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,5*fHarmonic,4*fHarmonic,3*fHarmonic));
2875  f5pCorrelations->GetXaxis()->SetBinLabel(84,""); // empty
2876  // 5-p correlations sensitive to five distinct harmonics (3):
2877  f5pCorrelations->GetXaxis()->SetBinLabel(85,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
2878  f5pCorrelations->GetXaxis()->SetBinLabel(86,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,1*fHarmonic,5*fHarmonic,4*fHarmonic));
2879  f5pCorrelations->GetXaxis()->SetBinLabel(87,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,3*fHarmonic,2*fHarmonic));
2880  fMixedHarmonicsProfiles->Add(f5pCorrelations);
2881  //  b4) 6-p correlations (??+??+??+??+??):
2882  TString s6pCorrelationsName = "f6pCorrelations";
2883  s6pCorrelationsName += fAnalysisLabel->Data();
2884  f6pCorrelations = new TProfile(s6pCorrelationsName.Data(),Form("6-particle correlations (n = %d)",fHarmonic),1,0.,1.);
2885  f6pCorrelations->SetTickLength(-0.01,"Y");
2886  f6pCorrelations->SetMarkerStyle(25);
2887  f6pCorrelations->SetLabelSize(0.02);
2888  f6pCorrelations->SetLabelOffset(0.02,"Y");
2889  f6pCorrelations->SetStats(kFALSE);
2890  f6pCorrelations->Sumw2(); 
2891  //fMixedHarmonicsProfiles->Add(f6pCorrelations); // TBI
2892  //  b5) 7-p correlations (??+??+??+??+??):
2893  TString s7pCorrelationsName = "f7pCorrelations";
2894  s7pCorrelationsName += fAnalysisLabel->Data();
2895  f7pCorrelations = new TProfile(s7pCorrelationsName.Data(),Form("7-particle correlations (n = %d)",fHarmonic),1,0.,1.);
2896  f7pCorrelations->SetTickLength(-0.01,"Y");
2897  f7pCorrelations->SetMarkerStyle(25);
2898  f7pCorrelations->SetLabelSize(0.02);
2899  f7pCorrelations->SetLabelOffset(0.02,"Y");
2900  f7pCorrelations->SetStats(kFALSE);
2901  f7pCorrelations->Sumw2(); 
2902  //fMixedHarmonicsProfiles->Add(f7pCorrelations); // TBI
2903  //  b6) 8-p correlations (??+??+??+??+??):
2904  TString s8pCorrelationsName = "f8pCorrelations";
2905  s8pCorrelationsName += fAnalysisLabel->Data();
2906  f8pCorrelations = new TProfile(s8pCorrelationsName.Data(),Form("8-particle correlations (n = %d)",fHarmonic),1,0.,1.);
2907  f8pCorrelations->SetTickLength(-0.01,"Y");
2908  f8pCorrelations->SetMarkerStyle(25);
2909  f8pCorrelations->SetLabelSize(0.02);
2910  f8pCorrelations->SetLabelOffset(0.02,"Y");
2911  f8pCorrelations->SetStats(kFALSE);
2912  f8pCorrelations->Sumw2(); 
2913  //fMixedHarmonicsProfiles->Add(f8pCorrelations); // TBI
2914
2915  // c) Book all objects in TList fMixedHarmonicsResults:
2916  // QC{2}:
2917  f2pCumulants = f2pCorrelations->ProjectionX("f2pCumulants");
2918  f2pCumulants->SetTitle(Form("2-particle cumulants (n = %d)",fHarmonic));
2919  f2pCumulants->SetStats(kFALSE);
2920  f2pCumulants->SetMarkerStyle(kFullSquare);
2921  f2pCumulants->SetMarkerColor(kBlack);
2922  f2pCumulants->SetLineColor(kBlack);
2923  fMixedHarmonicsResults->Add(f2pCumulants);
2924  // QC{3}:
2925  f3pCumulants = f3pCorrelations->ProjectionX("f3pCumulants");
2926  f3pCumulants->SetTitle(Form("3-particle cumulants (n = %d)",fHarmonic));
2927  f3pCumulants->SetStats(kFALSE);
2928  f3pCumulants->SetMarkerStyle(kFullSquare);
2929  f3pCumulants->SetMarkerColor(kGreen+2);
2930  f3pCumulants->SetLineColor(kGreen+2);
2931  fMixedHarmonicsResults->Add(f3pCumulants);
2932  // QC{4}:
2933  f4pCumulants = f4pCorrelations->ProjectionX("f4pCumulants");
2934  f4pCumulants->SetTitle(Form("4-particle cumulants (n = %d)",fHarmonic));
2935  f4pCumulants->SetStats(kFALSE);
2936  f4pCumulants->SetMarkerStyle(kFullSquare);
2937  f4pCumulants->SetMarkerColor(kRed);
2938  f4pCumulants->SetLineColor(kRed);
2939  fMixedHarmonicsResults->Add(f4pCumulants);
2940  // QC{5}:
2941  f5pCumulants = f5pCorrelations->ProjectionX("f5pCumulants");
2942  f5pCumulants->SetTitle(Form("5-particle cumulants (n = %d)",fHarmonic));
2943  f5pCumulants->SetStats(kFALSE);
2944  f5pCumulants->SetMarkerStyle(kFullSquare);
2945  f5pCumulants->SetMarkerColor(kBlue);
2946  f5pCumulants->SetLineColor(kBlue);
2947  fMixedHarmonicsResults->Add(f5pCumulants);
2948
2949  // d) Book all objects in TList fMixedHarmonicsErrorPropagation: 
2950  // Sum of linear and quadratic event weights for mixed harmonics => [0=linear 1,1=quadratic]: 
2951  TString mixedHarmonicEventWeightsName = "fMixedHarmonicEventWeights";
2952  mixedHarmonicEventWeightsName += fAnalysisLabel->Data();
2953  TString powerFlag[2] = {"linear","quadratic"}; 
2954  for(Int_t power=0;power<2;power++)
2955  {
2956   fMixedHarmonicEventWeights[power] = new TH1D(Form("%s: %s",mixedHarmonicEventWeightsName.Data(),powerFlag[power].Data()),Form("Sum of %s event weights for correlations",powerFlag[power].Data()),8,0.,8.);
2957   fMixedHarmonicEventWeights[power]->SetLabelSize(0.04);
2958   fMixedHarmonicEventWeights[power]->SetMarkerStyle(25);
2959   fMixedHarmonicEventWeights[power]->SetStats(kFALSE);
2960   if(power == 0)
2961   {
2962    (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(1,"#sum w_{#LT1#GT}");
2963    (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(2,"#sum w_{#LT2#GT}");
2964    (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(3,"#sum w_{#LT3#GT}");
2965    (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(4,"#sum w_{#LT4#GT}");
2966    (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(5,"#sum w_{#LT5#GT}");
2967    (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(6,"#sum w_{#LT6#GT}");
2968    (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(7,"#sum w_{#LT7#GT}");
2969    (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(8,"#sum w_{#LT8#GT}");
2970   } else if (power == 1) 
2971     {
2972      (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(1,"#sum w_{#LT1#GT}^{2}");
2973      (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(2,"#sum w_{#LT2#GT}^{2}");
2974      (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(3,"#sum w_{#LT3#GT}^{2}");
2975      (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(4,"#sum w_{#LT4#GT}^{2}");
2976      (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(5,"#sum w_{#LT5#GT}^{2}");
2977      (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(6,"#sum w_{#LT6#GT}^{2}");
2978      (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(7,"#sum w_{#LT7#GT}^{2}");
2979      (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(8,"#sum w_{#LT8#GT}^{2}");
2980     }
2981   fMixedHarmonicsErrorPropagation->Add(fMixedHarmonicEventWeights[power]);
2982  } // end of for(Int_t power=0;power<2;power++)
2983  
2984  // Sums of products of event weights for mixed harmonics:
2985  TString mixedHarmonicProductOfEventWeightsName = "fMixedHarmonicProductOfEventWeights";
2986  mixedHarmonicProductOfEventWeightsName += fAnalysisLabel->Data();
2987  fMixedHarmonicProductOfEventWeights = new TH2D(mixedHarmonicProductOfEventWeightsName.Data(),"Sums of products of event weights",8,0.,8.,8,0.,8.);
2988  fMixedHarmonicProductOfEventWeights->SetStats(kFALSE);
2989  fMixedHarmonicProductOfEventWeights->GetXaxis()->SetLabelSize(0.05);
2990  fMixedHarmonicProductOfEventWeights->GetYaxis()->SetLabelSize(0.05);
2991  for(Int_t b=1;b<=8;b++)
2992  {
2993   fMixedHarmonicProductOfEventWeights->GetXaxis()->SetBinLabel(b,Form("w_{#LT%i#GT}",b)); 
2994   fMixedHarmonicProductOfEventWeights->GetYaxis()->SetBinLabel(b,Form("w_{#LT%i#GT}",b)); 
2995  } 
2996  fMixedHarmonicsErrorPropagation->Add(fMixedHarmonicProductOfEventWeights);
2997
2998  // Averages of products of mixed harmonics correlations:
2999  TString mixedHarmonicProductOfCorrelationsName = "fMixedHarmonicProductOfCorrelations";
3000  mixedHarmonicProductOfCorrelationsName += fAnalysisLabel->Data();
3001  fMixedHarmonicProductOfCorrelations = new TProfile2D(mixedHarmonicProductOfCorrelationsName.Data(),"Averages of products of mixed correlators",139,0.,139.,139,0.,139.);
3002  fMixedHarmonicProductOfCorrelations->Sumw2();
3003  fMixedHarmonicProductOfCorrelations->SetStats(kFALSE);
3004  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetLabelSize(0.015);
3005  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetLabelSize(0.015);
3006  // x-axis:
3007  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(1,Form("#LT#LT2#GT#GT_{%dn|%dn}",1*fHarmonic,1*fHarmonic));
3008  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(2,Form("#LT#LT2#GT#GT_{%dn|%dn}",2*fHarmonic,2*fHarmonic));
3009  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(3,Form("#LT#LT2#GT#GT_{%dn|%dn}",3*fHarmonic,3*fHarmonic));
3010  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(4,Form("#LT#LT2#GT#GT_{%dn|%dn}",4*fHarmonic,4*fHarmonic));
3011  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(5,Form("#LT#LT2#GT#GT_{%dn|%dn}",5*fHarmonic,5*fHarmonic));
3012  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(6,Form("#LT#LT2#GT#GT_{%dn|%dn}",6*fHarmonic,6*fHarmonic));
3013  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(7,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",2*fHarmonic,1*fHarmonic,1*fHarmonic));
3014  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(8,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,2*fHarmonic));
3015  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(9,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,3*fHarmonic));
3016  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(10,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",3*fHarmonic,2*fHarmonic,1*fHarmonic));
3017  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(11,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",4*fHarmonic,3*fHarmonic,1*fHarmonic));
3018  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(12,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,2*fHarmonic));
3019  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(13,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",5*fHarmonic,4*fHarmonic,1*fHarmonic));
3020  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(14,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,2*fHarmonic));
3021  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(15,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,5*fHarmonic,1*fHarmonic));
3022  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(16,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3023  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(17,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",2*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3024  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(18,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
3025  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(19,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic));
3026  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(20,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,5*fHarmonic));
3027  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(21,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,6*fHarmonic));
3028  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(22,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",2*fHarmonic,1*fHarmonic,2*fHarmonic,1*fHarmonic));
3029  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(23,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,1*fHarmonic,3*fHarmonic,1*fHarmonic));
3030  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(24,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic));
3031  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(25,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,4*fHarmonic,1*fHarmonic));
3032  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(26,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic));
3033  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(27,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic));
3034  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(28,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,5*fHarmonic,1*fHarmonic));
3035  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(29,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,5*fHarmonic,2*fHarmonic));
3036  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(30,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,5*fHarmonic,3*fHarmonic));
3037  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(31,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,4*fHarmonic));
3038  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(32,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,6*fHarmonic,1*fHarmonic));
3039  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(33,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,6*fHarmonic,2*fHarmonic));
3040  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(34,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,6*fHarmonic,3*fHarmonic));
3041  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(35,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,4*fHarmonic));
3042  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(36,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,5*fHarmonic));
3043  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(37,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",3*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3044  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(38,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3045  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(39,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic));
3046  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(40,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3047  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(41,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic));
3048  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(42,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
3049  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(43,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
3050  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(44,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic));
3051  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(45,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,4*fHarmonic));
3052  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(46,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
3053  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(47,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,4*fHarmonic));
3054  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(48,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,5*fHarmonic));
3055  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(49,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic));
3056  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(50,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,4*fHarmonic,2*fHarmonic));
3057  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(51,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,4*fHarmonic,3*fHarmonic));
3058  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(52,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,4*fHarmonic,3*fHarmonic));
3059  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(53,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,5*fHarmonic,2*fHarmonic));
3060  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(54,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3061  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(55,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,5*fHarmonic,3*fHarmonic));
3062  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(56,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,4*fHarmonic));
3063  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(57,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,2*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
3064  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(58,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
3065  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(59,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3066  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(60,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
3067  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(61,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
3068  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(62,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
3069  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(63,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3070  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(64,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,5*fHarmonic,1*fHarmonic,1*fHarmonic));
3071  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(65,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
3072  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(66,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
3073  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(67,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,2*fHarmonic));
3074  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(68,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,5*fHarmonic,2*fHarmonic,1*fHarmonic));
3075  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(69,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,2*fHarmonic,2*fHarmonic));
3076  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(70,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,3*fHarmonic,1*fHarmonic));
3077  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(71,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
3078  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(72,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
3079  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(73,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
3080  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(74,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic,2*fHarmonic));
3081  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(75,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic));
3082  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(76,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,5*fHarmonic,2*fHarmonic,1*fHarmonic));
3083  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(77,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,3*fHarmonic,1*fHarmonic));
3084  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(78,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,4*fHarmonic,1*fHarmonic));
3085  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(79,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,3*fHarmonic,3*fHarmonic));
3086  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(80,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,6*fHarmonic,1*fHarmonic,1*fHarmonic));
3087  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(81,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,6*fHarmonic,2*fHarmonic,1*fHarmonic));
3088  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(82,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,2*fHarmonic,2*fHarmonic));
3089  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(83,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,3*fHarmonic,1*fHarmonic));
3090  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(84,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,4*fHarmonic,2*fHarmonic));
3091  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(85,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,3*fHarmonic,2*fHarmonic));
3092  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(86,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,4*fHarmonic,1*fHarmonic));
3093  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(87,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",2*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3094  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(88,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",2*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3095  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(89,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3096  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(90,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3097  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(91,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3098  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(92,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
3099  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(93,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
3100  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(94,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic));
3101  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(95,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,3*fHarmonic,3*fHarmonic));
3102  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(96,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,1*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3103  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(97,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
3104  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(98,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3105  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(99,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
3106  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(100,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic));
3107  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(101,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
3108  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(102,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
3109  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(103,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
3110  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(104,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3111  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(105,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3112  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(106,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
3113  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(107,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
3114  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(108,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
3115  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(109,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
3116  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(110,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic,1*fHarmonic));
3117  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(111,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic));
3118  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(112,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic));
3119  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(113,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,3*fHarmonic,2*fHarmonic));
3120  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(114,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,4*fHarmonic,1*fHarmonic));
3121  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(115,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3122  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(116,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3123  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(117,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,1*fHarmonic,4*fHarmonic,4*fHarmonic));
3124  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(118,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,5*fHarmonic,1*fHarmonic,1*fHarmonic));
3125  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(119,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
3126  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(120,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic));
3127  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(121,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,5*fHarmonic,5*fHarmonic));
3128  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(122,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,5*fHarmonic,1*fHarmonic));
3129  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(123,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,5*fHarmonic,5*fHarmonic,2*fHarmonic));
3130  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(124,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,4*fHarmonic,2*fHarmonic));
3131  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(125,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,5*fHarmonic,1*fHarmonic));
3132  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(126,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
3133  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(127,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,1*fHarmonic,4*fHarmonic,3*fHarmonic));
3134  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(128,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
3135  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(129,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,1*fHarmonic,4*fHarmonic,4*fHarmonic));
3136  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(130,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
3137  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(131,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,4*fHarmonic,4*fHarmonic,1*fHarmonic));
3138  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(132,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,1*fHarmonic,5*fHarmonic,3*fHarmonic));
3139  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(133,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,2*fHarmonic,2*fHarmonic));
3140  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(134,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic));
3141  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(135,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,1*fHarmonic,5*fHarmonic,5*fHarmonic));
3142  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(136,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,5*fHarmonic,4*fHarmonic,3*fHarmonic));
3143  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(137,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
3144  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(138,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,1*fHarmonic,5*fHarmonic,4*fHarmonic));
3145  fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(139,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,3*fHarmonic,2*fHarmonic));
3146  // y-axis:
3147  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(1,Form("#LT#LT2#GT#GT_{%dn|%dn}",1*fHarmonic,1*fHarmonic));
3148  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(2,Form("#LT#LT2#GT#GT_{%dn|%dn}",2*fHarmonic,2*fHarmonic));
3149  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(3,Form("#LT#LT2#GT#GT_{%dn|%dn}",3*fHarmonic,3*fHarmonic));
3150  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(4,Form("#LT#LT2#GT#GT_{%dn|%dn}",4*fHarmonic,4*fHarmonic));
3151  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(5,Form("#LT#LT2#GT#GT_{%dn|%dn}",5*fHarmonic,5*fHarmonic));
3152  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(6,Form("#LT#LT2#GT#GT_{%dn|%dn}",6*fHarmonic,6*fHarmonic));
3153  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(7,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",2*fHarmonic,1*fHarmonic,1*fHarmonic));
3154  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(8,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,2*fHarmonic));
3155  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(9,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,3*fHarmonic));
3156  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(10,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",3*fHarmonic,2*fHarmonic,1*fHarmonic));
3157  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(11,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",4*fHarmonic,3*fHarmonic,1*fHarmonic));
3158  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(12,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,2*fHarmonic));
3159  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(13,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",5*fHarmonic,4*fHarmonic,1*fHarmonic));
3160  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(14,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,2*fHarmonic));
3161  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(15,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,5*fHarmonic,1*fHarmonic));
3162  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(16,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3163  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(17,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",2*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3164  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(18,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
3165  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(19,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic));
3166  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(20,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,5*fHarmonic));
3167  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(21,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,6*fHarmonic));
3168  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(22,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",2*fHarmonic,1*fHarmonic,2*fHarmonic,1*fHarmonic));
3169  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(23,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,1*fHarmonic,3*fHarmonic,1*fHarmonic));
3170  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(24,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic));
3171  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(25,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,4*fHarmonic,1*fHarmonic));
3172  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(26,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic));
3173  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(27,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic));
3174  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(28,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,5*fHarmonic,1*fHarmonic));
3175  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(29,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,5*fHarmonic,2*fHarmonic));
3176  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(30,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,5*fHarmonic,3*fHarmonic));
3177  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(31,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,4*fHarmonic));
3178  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(32,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,6*fHarmonic,1*fHarmonic));
3179  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(33,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,6*fHarmonic,2*fHarmonic));
3180  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(34,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,6*fHarmonic,3*fHarmonic));
3181  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(35,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,4*fHarmonic));
3182  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(36,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,5*fHarmonic));
3183  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(37,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",3*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3184  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(38,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3185  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(39,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic));
3186  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(40,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3187  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(41,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic));
3188  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(42,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
3189  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(43,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
3190  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(44,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic));
3191  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(45,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,4*fHarmonic));
3192  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(46,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
3193  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(47,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,4*fHarmonic));
3194  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(48,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,5*fHarmonic));
3195  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(49,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic));
3196  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(50,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,4*fHarmonic,2*fHarmonic));
3197  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(51,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,4*fHarmonic,3*fHarmonic));
3198  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(52,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,4*fHarmonic,3*fHarmonic));
3199  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(53,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,5*fHarmonic,2*fHarmonic));
3200  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(54,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3201  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(55,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,5*fHarmonic,3*fHarmonic));
3202  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(56,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,4*fHarmonic));
3203  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(57,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,2*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
3204  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(58,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
3205  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(59,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3206  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(60,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
3207  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(61,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
3208  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(62,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
3209  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(63,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3210  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(64,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,5*fHarmonic,1*fHarmonic,1*fHarmonic));
3211  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(65,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
3212  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(66,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
3213  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(67,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,2*fHarmonic));
3214  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(68,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,5*fHarmonic,2*fHarmonic,1*fHarmonic));
3215  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(69,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,2*fHarmonic,2*fHarmonic));
3216  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(70,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,3*fHarmonic,1*fHarmonic));
3217  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(71,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
3218  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(72,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
3219  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(73,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
3220  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(74,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic,2*fHarmonic));
3221  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(75,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic));
3222  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(76,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,5*fHarmonic,2*fHarmonic,1*fHarmonic));
3223  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(77,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,3*fHarmonic,1*fHarmonic));
3224  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(78,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,4*fHarmonic,1*fHarmonic));
3225  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(79,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,3*fHarmonic,3*fHarmonic));
3226  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(80,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,6*fHarmonic,1*fHarmonic,1*fHarmonic));
3227  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(81,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,6*fHarmonic,2*fHarmonic,1*fHarmonic));
3228  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(82,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,2*fHarmonic,2*fHarmonic));
3229  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(83,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,3*fHarmonic,1*fHarmonic));
3230  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(84,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,4*fHarmonic,2*fHarmonic));
3231  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(85,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,3*fHarmonic,2*fHarmonic));
3232  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(86,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,4*fHarmonic,1*fHarmonic));
3233  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(87,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",2*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3234  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(88,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",2*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3235  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(89,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3236  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(90,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3237  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(91,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3238  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(92,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
3239  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(93,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
3240  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(94,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic));
3241  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(95,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,3*fHarmonic,3*fHarmonic));
3242  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(96,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,1*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3243  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(97,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
3244  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(98,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3245  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(99,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
3246  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(100,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic));
3247  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(101,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
3248  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(102,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
3249  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(103,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
3250  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(104,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3251  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(105,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3252  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(106,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
3253  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(107,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
3254  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(108,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
3255  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(109,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
3256  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(110,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic,1*fHarmonic));
3257  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(111,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic));
3258  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(112,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic));
3259  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(113,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,3*fHarmonic,2*fHarmonic));
3260  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(114,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,4*fHarmonic,1*fHarmonic));
3261  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(115,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3262  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(116,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3263  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(117,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,1*fHarmonic,4*fHarmonic,4*fHarmonic));
3264  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(118,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,5*fHarmonic,1*fHarmonic,1*fHarmonic));
3265  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(119,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
3266  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(120,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic));
3267  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(121,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,5*fHarmonic,5*fHarmonic));
3268  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(122,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,5*fHarmonic,1*fHarmonic));
3269  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(123,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,5*fHarmonic,5*fHarmonic,2*fHarmonic));
3270  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(124,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,4*fHarmonic,2*fHarmonic));
3271  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(125,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,5*fHarmonic,1*fHarmonic));
3272  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(126,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
3273  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(127,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,1*fHarmonic,4*fHarmonic,3*fHarmonic));
3274  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(128,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
3275  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(129,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,1*fHarmonic,4*fHarmonic,4*fHarmonic));
3276  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(130,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
3277  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(131,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,4*fHarmonic,4*fHarmonic,1*fHarmonic));
3278  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(132,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,1*fHarmonic,5*fHarmonic,3*fHarmonic));
3279  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(133,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,2*fHarmonic,2*fHarmonic));
3280  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(134,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic));
3281  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(135,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,1*fHarmonic,5*fHarmonic,5*fHarmonic));
3282  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(136,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,5*fHarmonic,4*fHarmonic,3*fHarmonic));
3283  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(137,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
3284  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(138,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,1*fHarmonic,5*fHarmonic,4*fHarmonic));
3285  fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(139,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,3*fHarmonic,2*fHarmonic));
3286  fMixedHarmonicsErrorPropagation->Add(fMixedHarmonicProductOfCorrelations);
3287
3288 } // end of void AliFlowAnalysisWithQCumulants::BookEverythingForMixedHarmonics()
3289
3290 //=======================================================================================================================
3291
3292 void AliFlowAnalysisWithQCumulants::InitializeArraysForNestedLoops()
3293 {
3294  // Initialize arrays of all objects relevant for calculations with nested loops.
3295  
3296  // integrated flow:
3297  for(Int_t sc=0;sc<2;sc++) // sin or cos terms
3298  {
3299   fIntFlowDirectCorrectionTermsForNUA[sc] = NULL;
3300  } 
3301
3302  // differential flow:  
3303  // correlations:
3304  for(Int_t t=0;t<2;t++) // type: RP or POI
3305  { 
3306   for(Int_t pe=0;pe<2;pe++) // pt or eta
3307   {
3308    for(Int_t ci=0;ci<4;ci++) // correlation index
3309    {
3310     fDiffFlowDirectCorrelations[t][pe][ci] = NULL;
3311    } // end of for(Int_t ci=0;ci<4;ci++) // correlation index  
3312   } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
3313  } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
3314  // correction terms for non-uniform acceptance:
3315  for(Int_t t=0;t<2;t++) // type: RP or POI
3316  { 
3317   for(Int_t pe=0;pe<2;pe++) // pt or eta
3318   {
3319    for(Int_t sc=0;sc<2;sc++) // sin or cos terms
3320    {
3321     for(Int_t cti=0;cti<9;cti++) // correction term index
3322     {
3323      fDiffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti] = NULL;
3324     }   
3325    }
3326   } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
3327  } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
3328
3329  // other differential correlators: 
3330  for(Int_t t=0;t<2;t++) // type: RP or POI
3331  { 
3332   for(Int_t pe=0;pe<2;pe++) // pt or eta
3333   {
3334    for(Int_t sc=0;sc<2;sc++) // sin or cos terms
3335    {
3336     for(Int_t ci=0;ci<1;ci++) // correlator index
3337     {
3338      fOtherDirectDiffCorrelators[t][pe][sc][ci] = NULL;
3339     }   
3340    }
3341   } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
3342  } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
3343
3344 } // end of void AliFlowAnalysisWithQCumulants::InitializeArraysForNestedLoops()
3345
3346 //=======================================================================================================================
3347
3348 void AliFlowAnalysisWithQCumulants::InitializeArraysForMixedHarmonics()
3349 {
3350  // Initialize arrays of all objects relevant for mixed harmonics.
3351
3352  for(Int_t power=0;power<2;power++) // linear or quadratic 
3353  {
3354   fMixedHarmonicEventWeights[power] = NULL;    
3355  }
3356
3357 } // end of void AliFlowAnalysisWithQCumulants::InitializeArraysForMixedHarmonics()
3358
3359 //=======================================================================================================================
3360
3361 void AliFlowAnalysisWithQCumulants::InitializeArraysForControlHistograms()
3362 {
3363  // Initialize arrays of all objects relevant for control histograms.
3364
3365  for(Int_t ci=0;ci<4;ci++) // correlation index 
3366  {
3367   fCorrelation2468VsMult[ci] = NULL;    
3368  }
3369
3370 } // end of void AliFlowAnalysisWithQCumulants::InitializeArraysForControlHistograms()
3371
3372 //=======================================================================================================================
3373
3374 void AliFlowAnalysisWithQCumulants::BookEverythingForNestedLoops()
3375 {
3376  // Book all objects relevant for calculations with nested loops.
3377  
3378  TString sinCosFlag[2] = {"sin","cos"}; // to be improved (should I promote this to data members?)
3379  TString typeFlag[2] = {"RP","POI"}; // to be improved (should I promote this to data members?)
3380  TString ptEtaFlag[2] = {"p_{T}","#eta"}; // to be improved (should I promote this to data members?)
3381  TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"}; // to be improved (should I promote this to data members?)
3382  Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
3383  Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
3384
3385  TString evaluateNestedLoopsName = "fEvaluateNestedLoops";
3386  evaluateNestedLoopsName += fAnalysisLabel->Data();
3387  fEvaluateNestedLoops = new TProfile(evaluateNestedLoopsName.Data(),"Flags for nested loops",4,0,4);
3388  fEvaluateNestedLoops->SetLabelSize(0.03);
3389  fEvaluateNestedLoops->SetStats(kFALSE);
3390  (fEvaluateNestedLoops->GetXaxis())->SetBinLabel(1,"fEvaluateIntFlowNestedLoops");
3391  (fEvaluateNestedLoops->GetXaxis())->SetBinLabel(2,"fEvaluateDiffFlowNestedLoops");
3392  (fEvaluateNestedLoops->GetXaxis())->SetBinLabel(3,"fCrossCheckInPtBinNo");
3393  (fEvaluateNestedLoops->GetXaxis())->SetBinLabel(4,"fCrossCheckInEtaBinNo");
3394  fEvaluateNestedLoops->Fill(0.5,(Int_t)fEvaluateIntFlowNestedLoops);
3395  fEvaluateNestedLoops->Fill(1.5,(Int_t)fEvaluateDiffFlowNestedLoops);
3396  fEvaluateNestedLoops->Fill(2.5,fCrossCheckInPtBinNo);
3397  fEvaluateNestedLoops->Fill(3.5,fCrossCheckInEtaBinNo);
3398  fNestedLoopsList->Add(fEvaluateNestedLoops);
3399  // nested loops for integrated flow:
3400  if(fEvaluateIntFlowNestedLoops)
3401  {
3402   // correlations:
3403   TString intFlowDirectCorrelationsName = "fIntFlowDirectCorrelations";
3404   intFlowDirectCorrelationsName += fAnalysisLabel->Data();
3405   fIntFlowDirectCorrelations = new TProfile(intFlowDirectCorrelationsName.Data(),"Multiparticle correlations calculated with nested loops (for int. flow)",64,0,64,"s");
3406   fNestedLoopsList->Add(fIntFlowDirectCorrelations);
3407   if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
3408   {
3409    TString intFlowExtraDirectCorrelationsName = "fIntFlowExtraDirectCorrelations";
3410    intFlowExtraDirectCorrelationsName += fAnalysisLabel->Data();
3411    fIntFlowExtraDirectCorrelations = new TProfile(intFlowExtraDirectCorrelationsName.Data(),"Extra multiparticle correlations calculated with nested loops (for int. flow)",100,0,100,"s");
3412    fNestedLoopsList->Add(fIntFlowExtraDirectCorrelations);  
3413   } // end of if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
3414   // correction terms for non-uniform acceptance:
3415   for(Int_t sc=0;sc<2;sc++) // sin or cos terms
3416   {
3417    TString intFlowDirectCorrectionTermsForNUAName = "fIntFlowDirectCorrectionTermsForNUA";
3418    intFlowDirectCorrectionTermsForNUAName += fAnalysisLabel->Data();
3419    fIntFlowDirectCorrectionTermsForNUA[sc] = new TProfile(Form("%s: %s terms",intFlowDirectCorrectionTermsForNUAName.Data(),sinCosFlag[sc].Data()),Form("Correction terms for non-uniform acceptance (%s terms)",sinCosFlag[sc].Data()),10,0,10,"s");
3420    fNestedLoopsList->Add(fIntFlowDirectCorrectionTermsForNUA[sc]);
3421   } // end of for(Int_t sc=0;sc<2;sc++) 
3422   // Mixed harmonics:
3423   if(fCalculateMixedHarmonics)
3424   {
3425    TString mixedHarmonicsNestedLoopsName = "fMixedHarmonicsNestedLoops";
3426    mixedHarmonicsNestedLoopsName += fAnalysisLabel->Data();
3427    fMixedHarmonicsNestedLoops = new TProfile(mixedHarmonicsNestedLoopsName.Data(),"Mixed harmonics calculated with nested loops",200,0,200); // TBI hardwired 200
3428    fNestedLoopsList->Add(fMixedHarmonicsNestedLoops);
3429   } // end of if(fCalculateMixedHarmonics)
3430  } // end of if(fEvaluateIntFlowNestedLoops)
3431  
3432  // nested loops for differential flow: 
3433  if(fEvaluateDiffFlowNestedLoops)
3434  {
3435   // reduced correlations:
3436   TString diffFlowDirectCorrelationsName = "fDiffFlowDirectCorrelations";
3437   diffFlowDirectCorrelationsName += fAnalysisLabel->Data();
3438   for(Int_t t=0;t<2;t++) // type: RP or POI
3439   { 
3440    for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
3441    {
3442     for(Int_t rci=0;rci<4;rci++) // reduced correlation index
3443     {
3444      // reduced correlations:
3445      fDiffFlowDirectCorrelations[t][pe][rci] = new TProfile(Form("%s, %s, %s, %s",diffFlowDirectCorrelationsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedCorrelationIndex[rci].Data()),Form("%s, %s, %s, %s",diffFlowDirectCorrelationsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedCorrelationIndex[rci].Data()),1,lowerPtEtaEdge[pe],upperPtEtaEdge[pe],"s");
3446      fDiffFlowDirectCorrelations[t][pe][rci]->SetXTitle(ptEtaFlag[pe].Data());
3447      fNestedLoopsList->Add(fDiffFlowDirectCorrelations[t][pe][rci]); // to be improved (add dedicated list to hold reduced correlations)
3448     } // end of for(Int_t rci=0;rci<4;rci++) // correlation index
3449    } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta 
3450   } // end of for(Int_t t=0;t<2;t++) // type: RP or POI 
3451   
3452   // correction terms for non-uniform acceptance:
3453   TString diffFlowDirectCorrectionTermsForNUAName = "fDiffFlowDirectCorrectionTermsForNUA";
3454   diffFlowDirectCorrectionTermsForNUAName += fAnalysisLabel->Data();
3455   for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
3456   { 
3457    for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
3458    {
3459     for(Int_t sc=0;sc<2;sc++) // sin or cos
3460     {
3461      for(Int_t cti=0;cti<9;cti++) // correction term index
3462      {
3463       fDiffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti] = new TProfile(Form("%s, %s, %s, %s, cti = %d",diffFlowDirectCorrectionTermsForNUAName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),cti+1),Form("%s, %s, %s, %s, cti = %d",diffFlowDirectCorrectionTermsForNUAName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),cti+1),1,lowerPtEtaEdge[pe],upperPtEtaEdge[pe],"s"); 
3464       fNestedLoopsList->Add(fDiffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti]);
3465      }
3466     }
3467    }
3468   }
3469   // other differential correlators: 
3470   TString otherDirectDiffCorrelatorsName = "fOtherDirectDiffCorrelators";
3471   otherDirectDiffCorrelatorsName += fAnalysisLabel->Data();
3472   for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
3473   { 
3474    for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
3475    {
3476     for(Int_t sc=0;sc<2;sc++) // sin or cos
3477     {
3478      for(Int_t ci=0;ci<1;ci++) // correlator index
3479      {
3480       fOtherDirectDiffCorrelators[t][pe][sc][ci] = new TProfile(Form("%s, %s, %s, %s, ci = %d",otherDirectDiffCorrelatorsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),ci+1),Form("%s, %s, %s, %s, ci = %d",otherDirectDiffCorrelatorsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),ci+1),1,lowerPtEtaEdge[pe],upperPtEtaEdge[pe]); 
3481       fNestedLoopsList->Add(fOtherDirectDiffCorrelators[t][pe][sc][ci]);
3482      }
3483     }
3484    }
3485   }
3486   // number of RPs and POIs in selected pt and eta bins for cross-checkings:
3487   TString noOfParticlesInBinName = "fNoOfParticlesInBin";
3488   fNoOfParticlesInBin = new TH1D(noOfParticlesInBinName.Data(),"Number of RPs and POIs in selected p_{T} and #eta bin",4,0,4);
3489   fNoOfParticlesInBin->GetXaxis()->SetBinLabel(1,"# of RPs in p_{T} bin");
3490   fNoOfParticlesInBin->GetXaxis()->SetBinLabel(2,"# of RPs in #eta bin");
3491   fNoOfParticlesInBin->GetXaxis()->SetBinLabel(3,"# of POIs in p_{T} bin");
3492   fNoOfParticlesInBin->GetXaxis()->SetBinLabel(4,"# of POIs in #eta bin");
3493   fNestedLoopsList->Add(fNoOfParticlesInBin);
3494  } // end of if(fEvaluateDiffFlowNestedLoops)
3495
3496 } // end of AliFlowAnalysisWithQCumulants::BookEverythingForNestedLoops()
3497
3498 //=========================================================================================================
3499
3500 void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrelations()
3501 {
3502  // Calculate in this method all multiparticle azimuthal correlations.
3503  //
3504  // Remark 1: All multiparticle correlations are stored in TProfile fIntFlowCorrelationsAllPro;
3505  // Remark 2: There is a special TProfile fIntFlowCorrelationsPro holding results 
3506  //           only for same harmonic's correlations <<2>>, <<4>>, <<6>> and <<8>>;  
3507  // Remark 3: Binning of fIntFlowCorrelationsAllPro is organized as follows:
3508  // --------------------------------------------------------------------------------------------------------------------
3509  //  1st bin: <2>_{1n|1n} = two1n1n = cos(1n(phi1-phi2))>
3510  //  2nd bin: <2>_{2n|2n} = two2n2n = cos(2n(phi1-phi2))>
3511  //  3rd bin: <2>_{3n|3n} = two3n3n = cos(3n(phi1-phi2))> 
3512  //  4th bin: <2>_{4n|4n} = two4n4n = cos(4n(phi1-phi2))>
3513  //  5th bin:           ----  EMPTY ----
3514  //  6th bin: <3>_{2n|1n,1n} = three2n1n1n = <cos(n(2*phi1-phi2-phi3))>
3515  //  7th bin: <3>_{3n|2n,1n} = three3n2n1n = <cos(n(3*phi1-2*phi2-phi3))>
3516  //  8th bin: <3>_{4n|2n,2n} = three4n2n2n = <cos(n(4*phi1-2*phi2-2*phi3))>
3517  //  9th bin: <3>_{4n|3n,1n} = three4n3n1n = <cos(n(4*phi1-3*phi2-phi3))>
3518  // 10th bin:           ----  EMPTY ----
3519  // 11th bin: <4>_{1n,1n|1n,1n} = four1n1n1n1n = <cos(n(phi1+phi2-phi3-phi4))>
3520  // 12th bin: <4>_{2n,1n|2n,1n} = four2n1n2n1n = <cos(n(2*phi1+phi2-2*phi3-phi4))>
3521  // 13th bin: <4>_{2n,2n|2n,2n} = four2n2n2n2n = <cos(2n(phi1+phi2-phi3-phi4))>
3522  // 14th bin: <4>_{3n|1n,1n,1n} = four3n1n1n1n = <cos(n(3*phi1-phi2-phi3-phi4))> 
3523  // 15th bin: <4>_{3n,1n|3n,1n} = four3n1n3n1n = <cos(n(3*phi1+phi2-3*phi3-phi4))>
3524  // 16th bin: <4>_{3n,1n|2n,2n} = four3n1n2n2n = <cos(n(3*phi1+phi2-2*phi3-2*phi4))>
3525  // 17th bin: <4>_{4n|2n,1n,1n} = four4n2n1n1n = <cos(n(4*phi1-2*phi2-phi3-phi4))>
3526  // 18th bin:           ----  EMPTY ----
3527  // 19th bin: <5>_{2n,1n|1n,1n,1n} = five2n1n1n1n1n = <cos(n(2*phi1+phi2-phi3-phi4-phi5))>
3528  // 20th bin: <5>_{2n,2n|2n,1n,1n} = five2n2n2n1n1n = <cos(n(2*phi1+2*phi2-2*phi3-phi4-phi5))>
3529  // 21st bin: <5>_{3n,1n|2n,1n,1n} = five3n1n2n1n1n = <cos(n(3*phi1+phi2-2*phi3-phi4-phi5))>
3530  // 22nd bin: <5>_{4n|1n,1n,1n,1n} = five4n1n1n1n1n = <cos(n(4*phi1-phi2-phi3-phi4-phi5))>
3531  // 23rd bin:           ----  EMPTY ----
3532  // 24th bin: <6>_{1n,1n,1n|1n,1n,1n} = six1n1n1n1n1n1n = <cos(n(phi1+phi2+phi3-phi4-phi5-phi6))>
3533  // 25th bin: <6>_{2n,1n,1n|2n,1n,1n} = six2n1n1n2n1n1n = <cos(n(2*phi1+phi2+phi3-2*phi4-phi5-phi6))>
3534  // 26th bin: <6>_{2n,2n|1n,1n,1n,1n} = six2n2n1n1n1n1n = <cos(n(2*phi1+2*phi2-phi3-phi4-phi5-phi6))>
3535  // 27th bin: <6>_{3n,1n|1n,1n,1n,1n} = six3n1n1n1n1n1n = <cos(n(3*phi1+phi2-phi3-phi4-phi5-phi6))> 
3536  // 28th bin:           ----  EMPTY ----
3537  // 29th bin: <7>_{2n,1n,1n|1n,1n,1n,1n} = seven2n1n1n1n1n1n1n =  <cos(n(2*phi1+phi2+phi3-phi4-phi5-phi6-phi7))>
3538  // 30th bin:           ----  EMPTY ----
3539  // 31st bin: <8>_{1n,1n,1n,1n|1n,1n,1n,1n} = eight1n1n1n1n1n1n1n1n = <cos(n(phi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8))>
3540  // 32nd bin:           ----  EMPTY ----
3541  //  Extra correlations for v3{5} study: 
3542  // 33rd bin: <4>_{4n,2n|3n,3n} = four4n2n3n3n = <cos(n(4*phi1+2*phi2-3*phi3-3*phi4))>
3543  // 34th bin: <5>_{3n,3n|2n,2n,2n} = five3n3n2n2n2n = <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-2*phi5))> 
3544  //  Extra correlations for Teaney-Yan study: 
3545  // 35th bin: <2>_{5n|5n} = two5n5n = <cos(5n(phi1-phi2)> 
3546  // 36th bin: <2>_{6n|6n} = two6n6n = <cos(6n(phi1-phi2)> 
3547  // 37th bin: <3>_{5n|3n,2n} = three5n3n2n = <cos(n(5*phi1-3*phi2-2*phi3)> 
3548  // 38th bin: <3>_{5n|4n,1n} = three5n4n1n = <cos(n(5*phi1-4*phi2-1*phi3)> 
3549  // 39th bin: <3>_{6n|3n,3n} = three6n3n3n = <cos(n(6*phi1-3*phi2-3*phi3)> 
3550  // 40th bin: <3>_{6n|4n,2n} = three6n4n2n = <cos(n(6*phi1-4*phi2-2*phi3)> 
3551  // 41st bin: <3>_{6n|5n,1n} = three6n5n1n = <cos(n(6*phi1-5*phi2-1*phi3)>
3552  // 42nd bin: <4>_{6n|3n,2n,1n} = four6n3n2n1n = <cos(n(6*phi1-3*phi2-2*phi3-1*phi4)>
3553  // 43rd bin: <4>_{3n,2n|3n,2n} = four3n2n3n2n = <cos(n(3*phi1+2*phi2-3*phi3-2*phi4)>
3554  // 44th bin: <4>_{4n,1n|3n,2n} = four4n1n3n2n = <cos(n(4*phi1+1*phi2-3*phi3-2*phi4)>
3555  // 45th bin: <4>_{3n,3n|3n,3n} = four3n3n3n3n = <cos(3n*(phi1+phi2-phi3-phi4))> 
3556  // 46th bin: <4>_{4n,2n|3n,3n} = four4n2n3n3n = <cos(n(4*phi1+2*phi2-3*phi3-3*phi4)>
3557  // 47th bin: <4>_{5n,1n|3n,3n} = four5n1n3n3n = <cos(n(5*phi1+1*phi2-3*phi3-3*phi4)>
3558  // 48th bin: <4>_{4n,2n|4n,2n} = four4n2n4n2n = <cos(n(4*phi1+2*phi2-4*phi3-2*phi4)> 
3559  // 49th bin: <4>_{5n,1n|4n,2n} = four5n1n4n2n = <cos(n(5*phi1+1*phi2-4*phi3-2*phi4)>
3560  // 50th bin: <4>_{5n|3n,1n,1n} = four5n3n1n1n = <cos(n(5*phi1-3*phi2-1*phi3-1*phi4)>
3561  // 51st bin: <4>_{5n|2n,2n,1n} = four5n2n2n1n = <cos(n(5*phi1-2*phi2-2*phi3-1*phi4)>
3562  // 52nd bin: <4>_{5n,1n|5n,1n} = four5n1n5n1n = <cos(n(5*phi1+1*phi2-5*phi3-1*phi4)>
3563  // 53rd bin: <5>_{3n,3n|3n,2n,1n} = five3n3n3n2n1n = <cos(n(3*phi1+3*phi2-3*phi3-2*phi4-1*phi5)>
3564  // 54th bin: <5>_{4n,2n|3n,2n,1n} = five4n2n3n2n1n = <cos(n(4*phi1+2*phi2-3*phi3-2*phi4-1*phi5)>
3565  // 55th bin: <5>_{3n,2n|3n,1n,1n} = five3n2n3n1n1n = <cos(n(3*phi1+2*phi2-3*phi3-1*phi4-1*phi5)>
3566  // 56th bin: <5>_{3n,2n|2n,2n,1n} = five3n2n2n2n1n = <cos(n(3*phi1+2*phi2-2*phi3-2*phi4-1*phi5)>
3567  // 57th bin: <5>_{5n,1n|3n,2n,1n} = five5n1n3n2n1n = <cos(n(5*phi1+1*phi2-3*phi3-2*phi4-1*phi5)>
3568  // 58th bin: <6>_{3n,2n,1n|3n,2n,1n} = six3n2n1n3n2n1n = <cos(n(3*phi1+2*phi2+1*phi3-3*phi4-2*phi5-1*phi6)>
3569  //  Extra correlations for Teaney-Yan study (B): 
3570  // 59th bin: <4>_{6n|4n,1n,1n} = four6n4n1n1n = <cos(n(6*phi1-4*phi2-1*phi3-1*phi4)>
3571  // 60th bin: <4>_{6n|2n,2n,2n} = four6n2n2n2n = <cos(n(6*phi1-2*phi2-2*phi3-2*phi4)>
3572  // 61st bin: <5>_{6n|2n,2n,1n,1n} = five6n2n2n1n1n = <cos(n(6*phi1-2*phi2-2*phi3-1*phi4-1*phi5)>
3573  // 62nd bin: <5>_{4n,1n,1n|3n,3n} = five4n1n1n3n3n = <cos(n(4*phi1+1*phi2+1*phi3-3*phi4-3*phi5)>
3574  // 63rd bin: <6>_{3n,3n|2n,2n,1n,1n} = six3n3n2n2n1n1n = <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-1*phi5-1*phi6)>
3575  // --------------------------------------------------------------------------------------------------------------------
3576
3577  // Multiplicity of an event: 
3578  Double_t dMult = (*fSpk)(0,0);
3579  // Real parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n, 4n, 5n and 6n: 
3580  Double_t dReQ1n = (*fReQ)(0,0);
3581  Double_t dReQ2n = (*fReQ)(1,0);
3582  Double_t dReQ3n = (*fReQ)(2,0);
3583  Double_t dReQ4n = (*fReQ)(3,0);
3584  Double_t dReQ5n = (*fReQ)(4,0); 
3585  Double_t dReQ6n = (*fReQ)(5,0);
3586  // Imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n, 4n, 5n and 6n:
3587  Double_t dImQ1n = (*fImQ)(0,0);
3588  Double_t dImQ2n = (*fImQ)(1,0);
3589  Double_t dImQ3n = (*fImQ)(2,0);
3590  Double_t dImQ4n = (*fImQ)(3,0);
3591  Double_t dImQ5n = (*fImQ)(4,0); 
3592  Double_t dImQ6n = (*fImQ)(5,0);
3593
3594  // Multiplicity bin of an event (relevant for all histos vs M): 
3595  Double_t dMultiplicityBin = 0.;
3596  if(fMultiplicityIs==AliFlowCommonConstants::kRP)
3597  {
3598   dMultiplicityBin = fNumberOfRPsEBE+0.5;
3599  } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
3600    {
3601     dMultiplicityBin = fReferenceMultiplicityEBE+0.5;
3602    } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
3603      {
3604       dMultiplicityBin = fNumberOfPOIsEBE+0.5;
3605      }
3606   
3607  // Real parts of expressions involving various combinations of Q-vectors which appears
3608  // simultaneously in several equations for multiparticle correlations bellow: 
3609  // Re[Q_{2n}Q_{n}^*Q_{n}^*]
3610  Double_t reQ2nQ1nstarQ1nstar = pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n; 
3611  // Re[Q_{6n}Q_{3n}^*Q_{3n}^*]
3612  Double_t reQ6nQ3nstarQ3nstar = pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n;  
3613  // Re[Q_{4n}Q_{2n}^*Q_{2n}^*]
3614  Double_t reQ4nQ2nstarQ2nstar = pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n;
3615  // Re[Q_{4n}Q_{3n}^*Q_{n}^*]
3616  Double_t reQ4nQ3nstarQ1nstar = dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n);
3617  // Re[Q_{3n}Q_{2n}^*Q_{n}^*]
3618  Double_t reQ3nQ2nstarQ1nstar = dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
3619                               + dImQ3n*dImQ2n*dReQ1n; 
3620  // Re[Q_{5n}Q_{3n}^*Q_{2n}^*]
3621  Double_t reQ5nQ3nstarQ2nstar = dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n
3622                               + dImQ5n*dImQ2n*dReQ3n;                             
3623  // Re[Q_{5n}Q_{4n}^*Q_{1n}^*]
3624  Double_t reQ5nQ4nstarQ1nstar = dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n
3625                               + dImQ5n*dImQ4n*dReQ1n;                              
3626  // Re[Q_{6n}Q_{5n}^*Q_{1n}^*]                              
3627  Double_t reQ6nQ5nstarQ1nstar = dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n
3628                               + dImQ6n*dImQ5n*dReQ1n;
3629  // Re[Q_{6n}Q_{4n}^*Q_{2n}^*]                              
3630  Double_t reQ6nQ4nstarQ2nstar = dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n
3631                               + dImQ6n*dImQ4n*dReQ2n;
3632  // Re[Q_{3n}Q_{n}Q_{2n}^*Q_{2n}^*]
3633  Double_t reQ3nQ1nQ2nstarQ2nstar = (pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n) 
3634                                  + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n);                                
3635  // Re[Q_{3n}Q_{n}^*Q_{n}^*Q_{n}^*]
3636  Double_t reQ3nQ1nstarQ1nstarQ1nstar = dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
3637                                      + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3);
3638  // Re[Q_{6n}Q_{2n}^*Q_{2n}^*Q_{2n}^*]
3639  Double_t reQ6nQ2nstarQ2nstarQ2nstar = dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
3640                                      + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3);
3641  // Re[Q_{4n}Q_{2n}^*Q_{n}^*Q_{n}^*]
3642  Double_t reQ4nQ2nstarQ1nstarQ1nstar = (dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2)) 
3643                                      + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n);  
3644  // Re[Q_{4n}Q_{2n}^*Q_{3n}^*Q_{3n}^*]
3645  Double_t reQ4nQ2nQ3nstarQ3nstar = (dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
3646                                  + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n;                    
3647  // Re[Q_{4n}Q_{n}Q_{3n}^*Q_{2n}^*]
3648  Double_t reQ4nQ1nQ3nstarQ2nstar = dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n 
3649                                  + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
3650                                  - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n 
3651                                  + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n;
3652  // Re[Q_{5n}Q_{n}Q_{4n}^*Q_{2n}^*]
3653  Double_t reQ5nQ1nQ4nstarQ2nstar = dImQ1n*dImQ2n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ1n*dReQ2n 
3654                                  + dImQ2n*dImQ5n*dReQ1n*dReQ4n-dImQ1n*dImQ5n*dReQ2n*dReQ4n
3655                                  - dImQ2n*dImQ4n*dReQ1n*dReQ5n+dImQ1n*dImQ4n*dReQ2n*dReQ5n 
3656                                  + dImQ1n*dImQ2n*dReQ4n*dReQ5n+dReQ1n*dReQ2n*dReQ4n*dReQ5n;                                  
3657  // Re[Q_{5n}Q_{n}Q_{3n}^*Q_{3n}^*]                                  
3658  Double_t reQ5nQ1nQ3nstarQ3nstar = dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
3659                                  - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n 
3660                                  + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n;
3661  // Re[Q_{5n}Q_{3n}^*Q_{n}^*Q_{n}^*]                                  
3662  Double_t reQ5nQ3nstarQ1nstarQ1nstar = -pow(dImQ1n,2.)*dImQ3n*dImQ5n+dImQ3n*dImQ5n*pow(dReQ1n,2.)
3663                                      + 2.*dImQ1n*dImQ5n*dReQ1n*dReQ3n-2.*dImQ1n*dImQ3n*dReQ1n*dReQ5n 
3664                                      - pow(dImQ1n,2.)*dReQ3n*dReQ5n+pow(dReQ1n,2.)*dReQ3n*dReQ5n;                     
3665  // Re[Q_{5n}Q_{2n}^*Q_{2n}^*Q_{n}^*]                                  
3666  Double_t reQ5nQ2nstarQ2nstarQ1nstar = -pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
3667                                      + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n 
3668                                      - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n;                                     
3669  // Re[Q_{6n}Q_{4n}^*Q_{n}^*Q_{n}^*]                                  
3670  Double_t reQ6nQ4nstarQ1nstarQ1nstar = -pow(dImQ1n,2.)*dImQ4n*dImQ6n+dImQ4n*dImQ6n*pow(dReQ1n,2.) 
3671                                      +  2.*dImQ1n*dImQ6n*dReQ1n*dReQ4n-2.*dImQ1n*dImQ4n*dReQ1n*dReQ6n 
3672                                      -  pow(dImQ1n,2.)*dReQ4n*dReQ6n+pow(dReQ1n,2.)*dReQ4n*dReQ6n;
3673  // |Q_{2n}|^2 |Q_{n}|^2
3674  Double_t dQ2nQ1nQ2nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
3675  // |Q_{4n}|^2 |Q_{2n}|^2
3676  Double_t dQ4nQ2nQ4nstarQ2nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.));
3677  // |Q_{3n}|^2 |Q_{2n}|^2
3678  Double_t dQ3nQ2nQ3nstarQ2nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.));
3679  // |Q_{5n}|^2 |Q_{n}|^2
3680  Double_t dQ5nQ1nQ5nstarQ1nstar = (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
3681  // |Q_{3n}|^2 |Q_{n}|^2
3682  Double_t dQ3nQ1nQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
3683  // Re[Q_{2n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*]
3684  Double_t reQ2nQ1nQ1nstarQ1nstarQ1nstar = (dReQ2n*dReQ1n-dImQ2n*dImQ1n)*(pow(dReQ1n,3)-3.*dReQ1n*pow(dImQ1n,2))
3685                                         + (dReQ2n*dImQ1n+dReQ1n*dImQ2n)*(3.*dImQ1n*pow(dReQ1n,2)-pow(dImQ1n,3)); 
3686  // Re[Q_{2n}Q_{2n}Q_{2n}^*Q_{n}^*Q_{n}^*]
3687  Double_t reQ2nQ2nQ2nstarQ1nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
3688                                         * (dReQ2n*(pow(dReQ1n,2.)-pow(dImQ1n,2.)) + 2.*dImQ2n*dReQ1n*dImQ1n);
3689  // Re[Q_{4n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
3690  Double_t reQ4nQ1nstarQ1nstarQ1nstarQ1nstar = pow(dReQ1n,4.)*dReQ4n-6.*pow(dReQ1n,2.)*dReQ4n*pow(dImQ1n,2.)
3691                                             + pow(dImQ1n,4.)*dReQ4n+4.*pow(dReQ1n,3.)*dImQ1n*dImQ4n
3692                                             - 4.*pow(dImQ1n,3.)*dReQ1n*dImQ4n;
3693  // Re[Q_{3n}Q_{n}Q_{2n}^*Q_{n}^*Q_{n}^*]
3694  Double_t reQ3nQ1nQ2nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
3695                                         * (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
3696                                         + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n);
3697  // Re[Q_{6n}Q_{n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
3698  Double_t reQ6nQ3nstarQ2nstarQ1nstar = dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
3699                                      - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
3700                                      + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n 
3701                                      + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n;
3702  // Re[Q_{3n}Q_{3n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
3703  Double_t reQ3nQ3nQ3nstarQ2nstarQ1nstar = (pow(dImQ3n,2.)+pow(dReQ3n,2.))
3704                                         * (dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
3705                                         - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n);   
3706  // Re[Q_{3n}Q_{3n}Q_{2n}^*Q_{2n}^*Q_{2n}^*]
3707  Double_t reQ3nQ3nQ2nstarQ2nstarQ2nstar = pow(dReQ2n,3.)*pow(dReQ3n,2.) 
3708                                         - 3.*dReQ2n*pow(dReQ3n,2.)*pow(dImQ2n,2.)
3709                                         + 6.*pow(dReQ2n,2.)*dReQ3n*dImQ2n*dImQ3n 
3710                                         - 2.*dReQ3n*pow(dImQ2n,3.)*dImQ3n-pow(dReQ2n,3.)*pow(dImQ3n,2.) 
3711                                         + 3.*dReQ2n*pow(dImQ2n,2.)*pow(dImQ3n,2.);
3712  // Re[Q_{4n}Q_{2n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
3713  Double_t reQ4nQ2nQ3nstarQ2nstarQ1nstar = (pow(dImQ2n,2.)+pow(dReQ2n,2.))
3714                                         * (dImQ3n*dImQ4n*dReQ1n+dImQ1n*dImQ4n*dReQ3n 
3715                                         - dImQ1n*dImQ3n*dReQ4n+dReQ1n*dReQ3n*dReQ4n);
3716  // Re[Q_{3n}Q_{2n}Q_{3n}^*Q_{n}^*Q_{n}^*]
3717  Double_t reQ3nQ2nQ3nstarQ1nstarQ1nstar = -(pow(dImQ3n,2.)+pow(dReQ3n,2.))
3718                                         * (-2.*dImQ1n*dImQ2n*dReQ1n+pow(dImQ1n,2.)*dReQ2n-pow(dReQ1n,2.)*dReQ2n);                              
3719  // Re[Q_{3n}Q_{2n}Q_{2n}^*Q_{2n}^*Q_{n}^*]
3720  Double_t reQ3nQ2nQ2nstarQ2nstarQ1nstar = (pow(dImQ2n,2.)+pow(dReQ2n,2.))
3721                                         * (dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n 
3722                                         - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n);
3723  // Re[Q_{5n}Q_{n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
3724  Double_t reQ5nQ1nQ3nstarQ2nstarQ1nstar = (pow(dImQ1n,2.)+pow(dReQ1n,2.))
3725                                         * (dImQ3n*dImQ5n*dReQ2n+dImQ2n*dImQ5n*dReQ3n 
3726                                         - dImQ2n*dImQ3n*dReQ5n+dReQ2n*dReQ3n*dReQ5n);   
3727  // Re[Q_{2n}Q_{2n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
3728  Double_t reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)*dReQ2n-2.*dReQ1n*dReQ2n*dImQ1n-dReQ2n*pow(dImQ1n,2.)
3729                                                + dImQ2n*pow(dReQ1n,2.)+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dImQ2n)
3730                                                * (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dReQ2n*dImQ1n-dReQ2n*pow(dImQ1n,2.)
3731                                                - dImQ2n*pow(dReQ1n,2.)+2.*dReQ1n*dImQ1n*dImQ2n+pow(dImQ1n,2.)*dImQ2n); 
3732  // Re[Q_{3n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
3733  Double_t reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
3734                                                * (pow(dReQ1n,3.)*dReQ3n-3.*dReQ1n*dReQ3n*pow(dImQ1n,2.)
3735                                                + 3.*pow(dReQ1n,2.)*dImQ1n*dImQ3n-pow(dImQ1n,3.)*dImQ3n);
3736  // |Q_{2n}|^2 |Q_{n}|^4
3737  Double_t dQ2nQ1nQ1nQ2nstarQ1nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.); 
3738  // |Q_{3n}|^2 |Q_{2n}|^2 |Q_{n}|^2
3739  Double_t dQ3nQ2nQ1nQ3nstarQ2nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3740                                           * (pow(dReQ1n,2.)+pow(dImQ1n,2.));
3741  // Re[Q_{2n}Q_{n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
3742  Double_t reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
3743                                                   * (pow(dReQ1n,2.)*dReQ2n-dReQ2n*pow(dImQ1n,2.)
3744                                                   + 2.*dReQ1n*dImQ1n*dImQ2n);                                                  
3745  // Re[Q_{6n}Q_{2n}^*Q_{2n}^*Q_{n}^*Q_{n}^*]
3746  Double_t reQ6nQ2nstarQ2nstarQ1nstarQ1nstar = pow(dReQ1n*dReQ2n,2.)*dReQ6n-pow(dReQ2n*dImQ1n,2.)*dReQ6n
3747                                             - 4.*dReQ1n*dReQ2n*dReQ6n*dImQ1n*dImQ2n 
3748                                             - pow(dReQ1n*dImQ2n,2.)*dReQ6n+pow(dImQ1n*dImQ2n,2.)*dReQ6n
3749                                             + 2.*dReQ1n*pow(dReQ2n,2.)*dImQ1n*dImQ6n
3750                                             + 2.*pow(dReQ1n,2.)*dReQ2n*dImQ2n*dImQ6n 
3751                                             - 2.*dReQ2n*pow(dImQ1n,2.)*dImQ2n*dImQ6n 
3752                                             - 2.*dReQ1n*dImQ1n*pow(dImQ2n,2.)*dImQ6n;       
3753  // Re[Q_{4n}Q_{1n}Q_{1n}Q_{3n}^*Q_{3n}^*]
3754  Double_t reQ4nQ1nQ1nQ3nstarQ3nstar = pow(dReQ1n*dReQ3n,2.)*dReQ4n-pow(dReQ3n*dImQ1n,2.)*dReQ4n  
3755                                     + 4.*dReQ1n*dReQ3n*dReQ4n*dImQ1n*dImQ3n 
3756                                     - pow(dReQ1n*dImQ3n,2.)*dReQ4n+pow(dImQ1n*dImQ3n,2.)*dReQ4n  
3757                                     - 2.*dReQ1n*pow(dReQ3n,2.)*dImQ1n*dImQ4n 
3758                                     + 2.*pow(dReQ1n,2.)*dReQ3n*dImQ3n*dImQ4n 
3759                                     - 2.*dReQ3n*pow(dImQ1n,2.)*dImQ3n*dImQ4n 
3760                                     + 2.*dReQ1n*dImQ1n*pow(dImQ3n,2.)*dImQ4n;
3761  // Re[Q_{3n}Q_{3n}Q_{2n}^*Q_{2n}^*Q_{1n}^*Q_{1n}^*]
3762  Double_t reQ3nQ3nQ2nstarQ2nstarQ1nstarQ1nstar = (dReQ1n*dReQ2n*dReQ3n-dReQ2n*dReQ3n*dImQ1n-dReQ1n*dReQ3n*dImQ2n 
3763                                                - dReQ3n*dImQ1n*dImQ2n+dReQ1n*dReQ2n*dImQ3n+dReQ2n*dImQ1n*dImQ3n 
3764                                                + dReQ1n*dImQ2n*dImQ3n-dImQ1n*dImQ2n*dImQ3n)*(dReQ1n*dReQ2n*dReQ3n 
3765                                                + dReQ2n*dReQ3n*dImQ1n+dReQ1n*dReQ3n*dImQ2n-dReQ3n*dImQ1n*dImQ2n 
3766                                                - dReQ1n*dReQ2n*dImQ3n+dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n 
3767                                                + dImQ1n*dImQ2n*dImQ3n);
3768     
3769  // Results for multiparticle azimuthal correlations:
3770  // 2-particle:
3771  Double_t two1n1n = 0.; // <cos(n(phi1-phi2))>
3772  Double_t two2n2n = 0.; // <cos(2n(phi1-phi2))>
3773  Double_t two3n3n = 0.; // <cos(3n(phi1-phi2))>
3774  Double_t two4n4n = 0.; // <cos(4n(phi1-phi2))>
3775  if(dMult>1)
3776  {
3777   two1n1n = (pow(dReQ1n,2.)+pow(dImQ1n,2.)-dMult)/(dMult*(dMult-1.)); 
3778   two2n2n = (pow(dReQ2n,2.)+pow(dImQ2n,2.)-dMult)/(dMult*(dMult-1.)); 
3779   two3n3n = (pow(dReQ3n,2.)+pow(dImQ3n,2.)-dMult)/(dMult*(dMult-1.)); 
3780   two4n4n = (pow(dReQ4n,2.)+pow(dImQ4n,2.)-dMult)/(dMult*(dMult-1.)); 
3781   // Average 2-particle correlations for single event: 
3782   fIntFlowCorrelationsAllEBE->SetBinContent(1,two1n1n);
3783   fIntFlowCorrelationsAllEBE->SetBinContent(2,two2n2n);
3784   fIntFlowCorrelationsAllEBE->SetBinContent(3,two3n3n);
3785   fIntFlowCorrelationsAllEBE->SetBinContent(4,two4n4n);         
3786   // Average 2-particle correlations for all events:      
3787   fIntFlowCorrelationsAllPro->Fill(0.5,two1n1n,dMult*(dMult-1.));
3788   fIntFlowCorrelationsAllPro->Fill(1.5,two2n2n,dMult*(dMult-1.)); 
3789   fIntFlowCorrelationsAllPro->Fill(2.5,two3n3n,dMult*(dMult-1.)); 
3790   fIntFlowCorrelationsAllPro->Fill(3.5,two4n4n,dMult*(dMult-1.)); 
3791   // Store separetately <2>:
3792   fIntFlowCorrelationsEBE->SetBinContent(1,two1n1n); // <2>  
3793   // Testing other multiplicity weights:
3794   Double_t mWeight2p = 0.;
3795   if(fMultiplicityWeight->Contains("combinations"))
3796   {
3797    mWeight2p = dMult*(dMult-1.);
3798   } else if(fMultiplicityWeight->Contains("unit"))
3799     {
3800      mWeight2p = 1.;    
3801     } else if(fMultiplicityWeight->Contains("multiplicity"))
3802       {
3803        mWeight2p = dMult;           
3804       }          
3805   fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(1,mWeight2p); // eW_<2>
3806   fIntFlowCorrelationsPro->Fill(0.5,two1n1n,mWeight2p);
3807   fIntFlowSquaredCorrelationsPro->Fill(0.5,two1n1n*two1n1n,mWeight2p);
3808   if(fCalculateCumulantsVsM)
3809   {
3810    fIntFlowCorrelationsVsMPro[0]->Fill(dMultiplicityBin,two1n1n,mWeight2p);
3811    fIntFlowSquaredCorrelationsVsMPro[0]->Fill(dMultiplicityBin,two1n1n*two1n1n,mWeight2p);
3812   } 
3813   if(fCalculateAllCorrelationsVsM)
3814   {
3815    fIntFlowCorrelationsAllVsMPro[0]->Fill(dMultiplicityBin,two1n1n,mWeight2p);
3816    fIntFlowCorrelationsAllVsMPro[1]->Fill(dMultiplicityBin,two2n2n,mWeight2p);
3817    fIntFlowCorrelationsAllVsMPro[2]->Fill(dMultiplicityBin,two3n3n,mWeight2p);
3818    fIntFlowCorrelationsAllVsMPro[3]->Fill(dMultiplicityBin,two4n4n,mWeight2p);
3819   } 
3820   if(fStoreControlHistograms)
3821   {
3822    fCorrelation2468VsMult[0]->Fill(dMultiplicityBin,two1n1n);
3823   } 
3824  } // end of if(dMult>1)
3825  
3826  // 3-particle:
3827  Double_t three2n1n1n = 0.; // <cos(n(2*phi1-phi2-phi3))>
3828  Double_t three3n2n1n = 0.; // <cos(n(3*phi1-2*phi2-phi3))>
3829  Double_t three4n2n2n = 0.; // <cos(n(4*phi1-2*phi2-2*phi3))>
3830  Double_t three4n3n1n = 0.; // <cos(n(4*phi1-3*phi2-phi3))> 
3831  if(dMult>2)
3832  {
3833   three2n1n1n = (reQ2nQ1nstarQ1nstar-2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
3834               - (pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
3835               / (dMult*(dMult-1.)*(dMult-2.));                     
3836   three3n2n1n = (reQ3nQ2nstarQ1nstar-(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3837               - (pow(dReQ2n,2.)+pow(dImQ2n,2.))
3838               - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
3839               / (dMult*(dMult-1.)*(dMult-2.));
3840   three4n2n2n = (reQ4nQ2nstarQ2nstar-2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3841               - (pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*dMult)
3842               / (dMult*(dMult-1.)*(dMult-2.)); 
3843   three4n3n1n = (reQ4nQ3nstarQ1nstar-(pow(dReQ4n,2.)+pow(dImQ4n,2.))
3844               - (pow(dReQ3n,2.)+pow(dImQ3n,2.))
3845               - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
3846               / (dMult*(dMult-1.)*(dMult-2.));              
3847   // Average 3-particle correlations for single event: 
3848   fIntFlowCorrelationsAllEBE->SetBinContent(6,three2n1n1n);
3849   fIntFlowCorrelationsAllEBE->SetBinContent(7,three3n2n1n);
3850   fIntFlowCorrelationsAllEBE->SetBinContent(8,three4n2n2n);
3851   fIntFlowCorrelationsAllEBE->SetBinContent(9,three4n3n1n);
3852   // Average 3-particle correlations for all events:                
3853   fIntFlowCorrelationsAllPro->Fill(5.5,three2n1n1n,dMult*(dMult-1.)*(dMult-2.)); 
3854   fIntFlowCorrelationsAllPro->Fill(6.5,three3n2n1n,dMult*(dMult-1.)*(dMult-2.));
3855   fIntFlowCorrelationsAllPro->Fill(7.5,three4n2n2n,dMult*(dMult-1.)*(dMult-2.)); 
3856   fIntFlowCorrelationsAllPro->Fill(8.5,three4n3n1n,dMult*(dMult-1.)*(dMult-2.));  
3857   // Average 3-particle correlations vs M for all events:                
3858   if(fCalculateAllCorrelationsVsM)
3859   {
3860    fIntFlowCorrelationsAllVsMPro[5]->Fill(dMultiplicityBin,three2n1n1n,dMult*(dMult-1.)*(dMult-2.));
3861    fIntFlowCorrelationsAllVsMPro[6]->Fill(dMultiplicityBin,three3n2n1n,dMult*(dMult-1.)*(dMult-2.));
3862    fIntFlowCorrelationsAllVsMPro[7]->Fill(dMultiplicityBin,three4n2n2n,dMult*(dMult-1.)*(dMult-2.));
3863    fIntFlowCorrelationsAllVsMPro[8]->Fill(dMultiplicityBin,three4n3n1n,dMult*(dMult-1.)*(dMult-2.));
3864   }    
3865  } // end of if(dMult>2)
3866  
3867  // 4-particle:
3868  Double_t four1n1n1n1n = 0.; // <cos(n(phi1+phi2-phi3-phi4))>
3869  Double_t four2n2n2n2n = 0.; // <cos(2n(phi1+phi2-phi3-phi4))>
3870  Double_t four2n1n2n1n = 0.; // <cos(n(2*phi1+phi2-2*phi3-phi4))> 
3871  Double_t four3n1n1n1n = 0.; // <cos(n(3*phi1-phi2-phi3-phi4))> 
3872  Double_t four4n2n1n1n = 0.; // <cos(n(4*phi1-2*phi2-phi3-phi4))> 
3873  Double_t four3n1n2n2n = 0.; // <cos(n(3*phi1+phi2-2*phi3-2*phi4))> 
3874  Double_t four3n1n3n1n = 0.; // <cos(n(3*phi1+phi2-3*phi3-phi4))>    
3875  if(dMult>3)
3876  {
3877   four1n1n1n1n = (2.*dMult*(dMult-3.)+pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ1n,2.)
3878                + pow(dImQ1n,2.))-2.*reQ2nQ1nstarQ1nstar+(pow(dReQ2n,2.)+pow(dImQ2n,2.)))
3879                / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));     
3880   four2n2n2n2n = (2.*dMult*(dMult-3.)+pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ2n,2.)
3881                + pow(dImQ2n,2.))-2.*reQ4nQ2nstarQ2nstar+(pow(dReQ4n,2.)+pow(dImQ4n,2.)))
3882                / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
3883   four2n1n2n1n = (dQ2nQ1nQ2nstarQ1nstar-2.*reQ3nQ2nstarQ1nstar-2.*reQ2nQ1nstarQ1nstar)
3884                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
3885                - ((dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
3886                + (dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-(pow(dReQ3n,2.)+pow(dImQ3n,2.)))
3887                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
3888                + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
3889   four3n1n1n1n = (reQ3nQ1nstarQ1nstarQ1nstar-3.*reQ3nQ2nstarQ1nstar-3.*reQ2nQ1nstarQ1nstar
3890                + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3891                + 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
3892                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3893   four4n2n1n1n = (reQ4nQ2nstarQ1nstarQ1nstar-2.*reQ4nQ3nstarQ1nstar-reQ4nQ2nstarQ2nstar-2.*reQ3nQ2nstarQ1nstar)
3894                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
3895                - (reQ2nQ1nstarQ1nstar-2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3896                - 3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
3897                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
3898                - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
3899   four3n1n2n2n = (reQ3nQ1nQ2nstarQ2nstar-reQ4nQ2nstarQ2nstar-reQ4nQ3nstarQ1nstar-2.*reQ3nQ2nstarQ1nstar)
3900                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
3901                - (2.*reQ2nQ1nstarQ1nstar-(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3902                - 4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
3903                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
3904                - 6./((dMult-1.)*(dMult-2.)*(dMult-3.)); 
3905   four3n1n3n1n = ((pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
3906                - 2.*reQ4nQ3nstarQ1nstar-2.*reQ3nQ2nstarQ1nstar
3907                + pow(dReQ4n,2.)+pow(dImQ4n,2.)-(dMult-4.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3908                + pow(dReQ2n,2.)+pow(dImQ2n,2.)-(dMult-4.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
3909                + dMult*(dMult-6.))
3910                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));           
3911   // Average 4-particle correlations for single event: 
3912   fIntFlowCorrelationsAllEBE->SetBinContent(11,four1n1n1n1n);
3913   fIntFlowCorrelationsAllEBE->SetBinContent(12,four2n1n2n1n);
3914   fIntFlowCorrelationsAllEBE->SetBinContent(13,four2n2n2n2n);
3915   fIntFlowCorrelationsAllEBE->SetBinContent(14,four3n1n1n1n);
3916   fIntFlowCorrelationsAllEBE->SetBinContent(15,four3n1n3n1n);
3917   fIntFlowCorrelationsAllEBE->SetBinContent(16,four3n1n2n2n);
3918   fIntFlowCorrelationsAllEBE->SetBinContent(17,four4n2n1n1n);       
3919   // Average 4-particle correlations for all events:                
3920   fIntFlowCorrelationsAllPro->Fill(10.5,four1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3921   fIntFlowCorrelationsAllPro->Fill(11.5,four2n1n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3922   fIntFlowCorrelationsAllPro->Fill(12.5,four2n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3923   fIntFlowCorrelationsAllPro->Fill(13.5,four3n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3924   fIntFlowCorrelationsAllPro->Fill(14.5,four3n1n3n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3925   fIntFlowCorrelationsAllPro->Fill(15.5,four3n1n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));  
3926   fIntFlowCorrelationsAllPro->Fill(16.5,four4n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));  
3927   // Average 4-particle correlations vs M for all events:                
3928   if(fCalculateAllCorrelationsVsM)
3929   {
3930    fIntFlowCorrelationsAllVsMPro[10]->Fill(dMultiplicityBin,four1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3931    fIntFlowCorrelationsAllVsMPro[11]->Fill(dMultiplicityBin,four2n1n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3932    fIntFlowCorrelationsAllVsMPro[12]->Fill(dMultiplicityBin,four2n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3933    fIntFlowCorrelationsAllVsMPro[13]->Fill(dMultiplicityBin,four3n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3934    fIntFlowCorrelationsAllVsMPro[14]->Fill(dMultiplicityBin,four3n1n3n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3935    fIntFlowCorrelationsAllVsMPro[15]->Fill(dMultiplicityBin,four3n1n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3936    fIntFlowCorrelationsAllVsMPro[16]->Fill(dMultiplicityBin,four4n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3937   }       
3938   // Store separetately <4>:
3939   fIntFlowCorrelationsEBE->SetBinContent(2,four1n1n1n1n); // <4>
3940   // Testing other multiplicity weights:
3941   Double_t mWeight4p = 0.;
3942   if(fMultiplicityWeight->Contains("combinations"))
3943   {
3944    mWeight4p = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.);
3945   } else if(fMultiplicityWeight->Contains("unit"))
3946     {
3947      mWeight4p = 1.;    
3948     } else if(fMultiplicityWeight->Contains("multiplicity"))
3949       {
3950        mWeight4p = dMult;           
3951       }      
3952   fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(2,mWeight4p); // eW_<4>
3953   fIntFlowCorrelationsPro->Fill(1.5,four1n1n1n1n,mWeight4p);
3954   fIntFlowSquaredCorrelationsPro->Fill(1.5,four1n1n1n1n*four1n1n1n1n,mWeight4p);
3955   if(fCalculateCumulantsVsM)
3956   {
3957    fIntFlowCorrelationsVsMPro[1]->Fill(dMultiplicityBin,four1n1n1n1n,mWeight4p);
3958    fIntFlowSquaredCorrelationsVsMPro[1]->Fill(dMultiplicityBin,four1n1n1n1n*four1n1n1n1n,mWeight4p);
3959   }   
3960   if(fStoreControlHistograms)
3961   {
3962    fCorrelation2468VsMult[1]->Fill(dMultiplicityBin,four1n1n1n1n);
3963   } 
3964  } // end of if(dMult>3)
3965
3966  // 5-particle:
3967  Double_t five2n1n1n1n1n = 0.; // <cos(n(2*phi1+phi2-phi3-phi4-phi5))>
3968  Double_t five2n2n2n1n1n = 0.; // <cos(n(2*phi1+2*phi2-2*phi3-phi4-phi5))>
3969  Double_t five3n1n2n1n1n = 0.; // <cos(n(3*phi1+phi2-2*phi3-phi4-phi5))>
3970  Double_t five4n1n1n1n1n = 0.; // <cos(n(4*phi1-phi2-phi3-phi4-phi5))>
3971  if(dMult>4)
3972  {            
3973   five2n1n1n1n1n = (reQ2nQ1nQ1nstarQ1nstarQ1nstar-reQ3nQ1nstarQ1nstarQ1nstar+5.*reQ3nQ2nstarQ1nstar
3974                  - 3.*(dMult-5.)*reQ2nQ1nstarQ1nstar-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3975                  - 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))     
3976                  + 3.*(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3977                  - 3.*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
3978                  + 6.*(2.*dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult*(dMult-4.))
3979                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
3980   five2n2n2n1n1n = (reQ2nQ2nQ2nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar-2.*reQ3nQ1nQ2nstarQ2nstar
3981                  + 3.*reQ4nQ2nstarQ2nstar+8.*reQ3nQ2nstarQ1nstar+2.*reQ4nQ3nstarQ1nstar
3982                  - 2.*(dMult-6.)*reQ2nQ1nstarQ1nstar
3983                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3984                  - pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)
3985                  + 2.*(3.*dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3986                  - 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3987                  + 4.*(dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
3988                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
3989   five4n1n1n1n1n = (reQ4nQ1nstarQ1nstarQ1nstarQ1nstar-6.*reQ4nQ2nstarQ1nstarQ1nstar-4.*reQ3nQ1nstarQ1nstarQ1nstar
3990                  + 8.*reQ4nQ3nstarQ1nstar+3.*reQ4nQ2nstarQ2nstar+12.*reQ3nQ2nstarQ1nstar+12.*reQ2nQ1nstarQ1nstar
3991                  - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-8.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3992                  - 12.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-24.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))+24.*dMult)
3993                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
3994   five3n1n2n1n1n = (reQ3nQ1nQ2nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ3nQ1nstarQ1nstarQ1nstar
3995                  - reQ3nQ1nQ2nstarQ2nstar+4.*reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar
3996                  - (2.*dMult-13.)*reQ3nQ2nstarQ1nstar+7.*reQ2nQ1nstarQ1nstar
3997                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
3998                  + 2.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3999                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4000                  + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4001                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4002                  - pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
4003                  + 2.*(3.*dMult-11.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
4004                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));                 
4005   // Average 5-particle correlations for single event: 
4006   fIntFlowCorrelationsAllEBE->SetBinContent(19,five2n1n1n1n1n);
4007   fIntFlowCorrelationsAllEBE->SetBinContent(20,five2n2n2n1n1n);
4008   fIntFlowCorrelationsAllEBE->SetBinContent(21,five3n1n2n1n1n);
4009   fIntFlowCorrelationsAllEBE->SetBinContent(22,five4n1n1n1n1n);        
4010   // Average 5-particle correlations for all events:                         
4011   fIntFlowCorrelationsAllPro->Fill(18.5,five2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)); 
4012   fIntFlowCorrelationsAllPro->Fill(19.5,five2n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4013   fIntFlowCorrelationsAllPro->Fill(20.5,five3n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4014   fIntFlowCorrelationsAllPro->Fill(21.5,five4n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)); 
4015   // Average 5-particle correlations vs M for all events:                
4016   if(fCalculateAllCorrelationsVsM)
4017   {
4018    fIntFlowCorrelationsAllVsMPro[18]->Fill(dMultiplicityBin,five2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4019    fIntFlowCorrelationsAllVsMPro[19]->Fill(dMultiplicityBin,five2n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4020    fIntFlowCorrelationsAllVsMPro[20]->Fill(dMultiplicityBin,five3n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4021    fIntFlowCorrelationsAllVsMPro[21]->Fill(dMultiplicityBin,five4n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4022   }    
4023  } // end of if(dMult>4)
4024     
4025  // 6-particle:
4026  Double_t six1n1n1n1n1n1n = 0.; // <cos(n(phi1+phi2+phi3-phi4-phi5-phi6))>
4027  Double_t six2n2n1n1n1n1n = 0.; // <cos(n(2*phi1+2*phi2-phi3-phi4-phi5-phi6))>
4028  Double_t six3n1n1n1n1n1n = 0.; // <cos(n(3*phi1+phi2-phi3-phi4-phi5-phi6))>
4029  Double_t six2n1n1n2n1n1n = 0.; // <cos(n(2*phi1+phi2+phi3-2*phi4-phi5-phi6))>
4030  if(dMult>5)
4031  {
4032   six1n1n1n1n1n1n = (pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),3.)-6.*reQ2nQ1nQ1nstarQ1nstarQ1nstar
4033                   + 4.*reQ3nQ1nstarQ1nstarQ1nstar-12.*reQ3nQ2nstarQ1nstar+18.*(dMult-4.)*reQ2nQ1nstarQ1nstar
4034                   + 9.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4035                   + 4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-9.*(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4036                   - 9.*(dMult-4.)*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.) 
4037                   + 18.*(dMult*dMult-7.*dMult+10.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4038                   - 6.*dMult*(dMult*dMult-9.*dMult+20.))
4039                   / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4040   six2n1n1n2n1n1n = (dQ2nQ1nQ1nQ2nstarQ1nstarQ1nstar-4.*reQ3nQ1nQ2nstarQ1nstarQ1nstar
4041                   - 4.*reQ2nQ1nQ1nstarQ1nstarQ1nstar-2.*reQ2nQ2nQ2nstarQ1nstarQ1nstar
4042                   + 4.*reQ4nQ2nstarQ1nstarQ1nstar+4.*reQ3nQ1nQ2nstarQ2nstar+4.*reQ3nQ1nstarQ1nstarQ1nstar
4043                   - 8.*reQ4nQ3nstarQ1nstar-4.*reQ4nQ2nstarQ2nstar+4.*(2.*dMult-13.)*reQ3nQ2nstarQ1nstar
4044                   + 2.*(7.*dMult-34.)*reQ2nQ1nstarQ1nstar+4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4045                   - 4.*(dMult-7.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4046                   + 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-4.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4047                   + pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)+(2.*dMult*dMult-27.*dMult+76.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4048                   - (dMult-12.)*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
4049                   + 4.*(dMult*dMult-15.*dMult+34.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4050                   - 2.*dMult*(dMult*dMult-17.*dMult+60.))
4051                   / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4052   six2n2n1n1n1n1n = (reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar-6.*reQ2nQ2nQ2nstarQ1nstarQ1nstar-reQ4nQ1nstarQ1nstarQ1nstarQ1nstar
4053                   - 8.*reQ2nQ1nQ1nstarQ1nstarQ1nstar+8.*reQ3nQ1nstarQ1nstarQ1nstar+6.*reQ4nQ2nstarQ1nstarQ1nstar
4054                   + 8.*reQ3nQ1nQ2nstarQ2nstar-40.*reQ3nQ2nstarQ1nstar-8.*reQ4nQ3nstarQ1nstar-9.*reQ4nQ2nstarQ2nstar
4055                   + 24.*(dMult-4.)*reQ2nQ1nstarQ1nstar+24.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4056                   + 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+16.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4057                   + 3.*pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)-12.*(2.*dMult-7.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4058                   + 12.*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)-48.*(dMult-3.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4059                   + 24.*dMult*(dMult-5.))
4060                   / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)); 
4061   six3n1n1n1n1n1n = (reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar-6.*reQ3nQ1nQ2nstarQ1nstarQ1nstar+6.*reQ4nQ2nstarQ1nstarQ1nstar
4062                   - reQ4nQ1nstarQ1nstarQ1nstarQ1nstar-4.*reQ2nQ1nQ1nstarQ1nstarQ1nstar+3.*reQ3nQ1nQ2nstarQ2nstar
4063                   - 4.*(dMult-5.)*reQ3nQ1nstarQ1nstarQ1nstar-14.*reQ4nQ3nstarQ1nstar
4064                   - 3.*reQ4nQ2nstarQ2nstar+4.*(3.*dMult-17.)*reQ3nQ2nstarQ1nstar+12.*(dMult-6.)*reQ2nQ1nstarQ1nstar
4065                   + 12.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))  
4066                   + 8.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))  
4067                   + 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-8.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.)) 
4068                   - 12.*(dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-48.*(dMult-3.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4069                   + 12.*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)+24.*dMult*(dMult-5.))
4070                   / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4071   // Average 6-particle correlations for single event: 
4072   fIntFlowCorrelationsAllEBE->SetBinContent(24,six1n1n1n1n1n1n);
4073   fIntFlowCorrelationsAllEBE->SetBinContent(25,six2n1n1n2n1n1n);
4074   fIntFlowCorrelationsAllEBE->SetBinContent(26,six2n2n1n1n1n1n);
4075   fIntFlowCorrelationsAllEBE->SetBinContent(27,six3n1n1n1n1n1n);
4076   // Average 6-particle correlations for all events:         
4077   fIntFlowCorrelationsAllPro->Fill(23.5,six1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)); 
4078   fIntFlowCorrelationsAllPro->Fill(24.5,six2n1n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)); 
4079   fIntFlowCorrelationsAllPro->Fill(25.5,six2n2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4080   fIntFlowCorrelationsAllPro->Fill(26.5,six3n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)); 
4081   // Average 6-particle correlations vs M for all events:                
4082   if(fCalculateAllCorrelationsVsM)
4083   {
4084    fIntFlowCorrelationsAllVsMPro[23]->Fill(dMultiplicityBin,six1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4085    fIntFlowCorrelationsAllVsMPro[24]->Fill(dMultiplicityBin,six2n1n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4086    fIntFlowCorrelationsAllVsMPro[25]->Fill(dMultiplicityBin,six2n2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4087    fIntFlowCorrelationsAllVsMPro[26]->Fill(dMultiplicityBin,six3n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4088   }    
4089   // Store separetately <6>:
4090   fIntFlowCorrelationsEBE->SetBinContent(3,six1n1n1n1n1n1n); // <6>
4091   // Testing other multiplicity weights:
4092   Double_t mWeight6p = 0.;
4093   if(fMultiplicityWeight->Contains("combinations"))
4094   {
4095    mWeight6p = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.);
4096   } else if(fMultiplicityWeight->Contains("unit"))
4097     {
4098      mWeight6p = 1.;    
4099     } else if(fMultiplicityWeight->Contains("multiplicity"))
4100       {
4101        mWeight6p = dMult;           
4102       }
4103   fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(3,mWeight6p); // eW_<6>
4104   fIntFlowCorrelationsPro->Fill(2.5,six1n1n1n1n1n1n,mWeight6p);
4105   fIntFlowSquaredCorrelationsPro->Fill(2.5,six1n1n1n1n1n1n*six1n1n1n1n1n1n,mWeight6p);
4106   if(fCalculateCumulantsVsM)
4107   {
4108    fIntFlowCorrelationsVsMPro[2]->Fill(dMultiplicityBin,six1n1n1n1n1n1n,mWeight6p);
4109    fIntFlowSquaredCorrelationsVsMPro[2]->Fill(dMultiplicityBin,six1n1n1n1n1n1n*six1n1n1n1n1n1n,mWeight6p);
4110   }
4111   if(fStoreControlHistograms)
4112   {
4113    fCorrelation2468VsMult[2]->Fill(dMultiplicityBin,six1n1n1n1n1n1n);
4114   }     
4115  } // end of if(dMult>5)
4116  
4117  // 7-particle:
4118  Double_t seven2n1n1n1n1n1n1n = 0.; // <cos(n(2*phi1+phi2+phi3-phi4-phi5-phi6-phi7))>
4119  if(dMult>6)
4120  {
4121   seven2n1n1n1n1n1n1n = (reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar-4.*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),3.)
4122                       - reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar-2.*reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar
4123                       + 9.*reQ2nQ2nQ2nstarQ1nstarQ1nstar+20.*reQ3nQ1nQ2nstarQ1nstarQ1nstar 
4124                       + 2.*reQ4nQ1nstarQ1nstarQ1nstarQ1nstar-8.*(dMult-8.)*reQ2nQ1nQ1nstarQ1nstarQ1nstar
4125                       - 18.*reQ4nQ2nstarQ1nstarQ1nstar-14.*reQ3nQ1nQ2nstarQ2nstar
4126                       + 8.*(dMult-7.)*reQ3nQ1nstarQ1nstarQ1nstar+28.*reQ4nQ3nstarQ1nstar
4127                       + 12.*reQ4nQ2nstarQ2nstar-8.*(5.*dMult-31.)*reQ3nQ2nstarQ1nstar      
4128                       + 12.*(dMult*dMult-15.*dMult+46.)*reQ2nQ1nstarQ1nstar
4129                       - 16.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4130                       - 6.*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4131                       - 3.*pow(pow(dReQ2n,2.)+pow(dImQ2n,2.),2.)
4132                       + 12.*(2.*dMult-13.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4133                       - 12.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+16.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4134                       - 12.*(dMult-8.)*(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4135                       + 12.*(3.*dMult-14.)*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.)
4136                       - 24.*(3.*dMult-7.)*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4137                       + 24.*dMult*(dMult-5.)*(dMult-6.))
4138                       / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.));   
4139   // Average 7-particle correlations for single event: 
4140   fIntFlowCorrelationsAllEBE->SetBinContent(29,seven2n1n1n1n1n1n1n);       
4141   // Average 7-particle correlations for all events:                      
4142   fIntFlowCorrelationsAllPro->Fill(28.5,seven2n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
4143                                                                  *(dMult-4.)*(dMult-5.)*(dMult-6.));
4144   // Average 7-particle correlations vs M for all events:                
4145   if(fCalculateAllCorrelationsVsM)
4146   {
4147    fIntFlowCorrelationsAllVsMPro[28]->Fill(dMultiplicityBin,seven2n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
4148                                                                               *(dMult-4.)*(dMult-5.)*(dMult-6.));
4149   }    
4150  } // end of if(dMult>6)
4151  
4152  // 8-particle:
4153  Double_t eight1n1n1n1n1n1n1n1n = 0.; // <cos(n(phi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8))>
4154  if(dMult>7)
4155  {  
4156   eight1n1n1n1n1n1n1n1n = (pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),4.)-12.*reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar
4157                         + 16.*reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar+6.*reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar
4158                         - 12.*reQ4nQ1nstarQ1nstarQ1nstarQ1nstar-36.*reQ2nQ2nQ2nstarQ1nstarQ1nstar
4159                         - 96.*reQ3nQ1nQ2nstarQ1nstarQ1nstar
4160                         + 72.*reQ4nQ2nstarQ1nstarQ1nstar+48.*reQ3nQ1nQ2nstarQ2nstar
4161                         - 64.*(dMult-6.)*reQ3nQ1nstarQ1nstarQ1nstar
4162                         + 96.*(dMult-6.)*reQ2nQ1nQ1nstarQ1nstarQ1nstar
4163                         - 96.*reQ4nQ3nstarQ1nstar-36.*reQ4nQ2nstarQ2nstar
4164                         + 192.*(dMult-6.)*reQ3nQ2nstarQ1nstar
4165                         - 144.*(dMult-7.)*(dMult-4.)*reQ2nQ1nstarQ1nstar
4166                         + 64.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4167                         - 144.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4168                         + 72.*(dMult-7.)*(dMult-4.)*(pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
4169                         - 96.*(dMult-7.)*(dMult-6.)*(dMult-2.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4170                         + 36.*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4171                         + 9.*pow(pow(dReQ2n,2.)+pow(dImQ2n,2.),2.)
4172                         - 64.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4173                         + 36.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4174                         - 16.*(dMult-6.)*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),3.)
4175                         + 24.*dMult*(dMult-7.)*(dMult-6.)*(dMult-5.))
4176                         / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.));   
4177   // Average 8-particle correlations for single event: 
4178   fIntFlowCorrelationsAllEBE->SetBinContent(31,eight1n1n1n1n1n1n1n1n);      
4179   // Average 8-particle correlations for all events:                       
4180   fIntFlowCorrelationsAllPro->Fill(30.5,eight1n1n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
4181                                                                    *(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.));
4182   // Average 8-particle correlations vs M for all events:                
4183   if(fCalculateAllCorrelationsVsM)
4184   {
4185    fIntFlowCorrelationsAllVsMPro[30]->Fill(dMultiplicityBin,eight1n1n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
4186                                                                                 *(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.));
4187   }     
4188   // Store separetately <8>:
4189   fIntFlowCorrelationsEBE->SetBinContent(4,eight1n1n1n1n1n1n1n1n); // <8>
4190   // Testing other multiplicity weights:
4191   Double_t mWeight8p = 0.;
4192   if(fMultiplicityWeight->Contains("combinations"))
4193   {
4194    mWeight8p = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.);
4195   } else if(fMultiplicityWeight->Contains("unit"))
4196     {
4197      mWeight8p = 1.;    
4198     } else if(fMultiplicityWeight->Contains("multiplicity"))
4199       {
4200        mWeight8p = dMult;           
4201       }        
4202   fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(4,mWeight8p); // eW_<8>
4203   fIntFlowCorrelationsPro->Fill(3.5,eight1n1n1n1n1n1n1n1n,mWeight8p);
4204   fIntFlowSquaredCorrelationsPro->Fill(3.5,eight1n1n1n1n1n1n1n1n*eight1n1n1n1n1n1n1n1n,mWeight8p);  
4205   if(fCalculateCumulantsVsM)
4206   {
4207    fIntFlowCorrelationsVsMPro[3]->Fill(dMultiplicityBin,eight1n1n1n1n1n1n1n1n,mWeight8p);
4208    fIntFlowSquaredCorrelationsVsMPro[3]->Fill(dMultiplicityBin,eight1n1n1n1n1n1n1n1n*eight1n1n1n1n1n1n1n1n,mWeight8p);
4209   }  
4210   if(fStoreControlHistograms)
4211   {
4212    fCorrelation2468VsMult[3]->Fill(dMultiplicityBin,eight1n1n1n1n1n1n1n1n);
4213   }   
4214  } // end of if(dMult>7) 
4215  
4216  // EXTRA correlations for v3{5} study:
4217  // 4-particle:
4218  Double_t four4n2n3n3n = 0.; // <cos(n(4*phi1+2*phi2-3*phi3-3*phi4))>
4219  if(dMult>3.)
4220  {
4221   four4n2n3n3n = (reQ4nQ2nQ3nstarQ3nstar-reQ6nQ4nstarQ2nstar-reQ6nQ3nstarQ3nstar
4222                - 2.*reQ4nQ3nstarQ1nstar-2.*reQ3nQ2nstarQ1nstar
4223                + (pow(dReQ6n,2.)+pow(dImQ6n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4224                + 2.*(2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4225                + (pow(dReQ1n,2.)+pow(dImQ1n,2.))-3.*dMult))
4226                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));               
4227   fIntFlowCorrelationsAllPro->Fill(32.5,four4n2n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4228   // Average 4-particle correlations vs M for all events:                
4229   if(fCalculateAllCorrelationsVsM)
4230   {
4231    fIntFlowCorrelationsAllVsMPro[32]->Fill(dMultiplicityBin,four4n2n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4232   }    
4233  } // end of if(dMult>3.)
4234  
4235  // 5-particle:
4236  Double_t five3n3n2n2n2n = 0.; // <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-2*phi5))>                                    
4237  if(dMult>4.)
4238  {
4239   five3n3n2n2n2n = (reQ3nQ3nQ2nstarQ2nstarQ2nstar-reQ6nQ2nstarQ2nstarQ2nstar-3.*reQ4nQ2nQ3nstarQ3nstar 
4240                  - 6.*reQ3nQ1nQ2nstarQ2nstar+2.*reQ6nQ3nstarQ3nstar+3.*reQ6nQ4nstarQ2nstar
4241                  + 6.*reQ4nQ3nstarQ1nstar+6.*reQ4nQ2nstarQ2nstar
4242                  + 12.*reQ3nQ2nstarQ1nstar+6.*reQ2nQ1nstarQ1nstar
4243                  - 2.*((pow(dReQ6n,2.)+pow(dImQ6n,2.)) 
4244                  + 3.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4245                  + 6.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)) 
4246                  + 9.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4247                  + 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-12.*dMult))
4248                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4249   fIntFlowCorrelationsAllPro->Fill(33.5,five3n3n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4250   if(fCalculateAllCorrelationsVsM)
4251   {
4252    fIntFlowCorrelationsAllVsMPro[33]->Fill(dMultiplicityBin,five3n3n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4253   }     
4254  } // end of if(dMult>4.)
4255  
4256  // EXTRA correlations for Teaney-Yan study: 
4257  // 2-particle:
4258  Double_t two5n5n = 0.; // <cos(5n(phi1-phi2))>
4259  Double_t two6n6n = 0.; // <cos(6n(phi1-phi2))> 
4260  if(dMult>1)
4261  {
4262   two5n5n = (pow(dReQ5n,2.)+pow(dImQ5n,2.)-dMult)/(dMult*(dMult-1.)); 
4263   two6n6n = (pow(dReQ6n,2.)+pow(dImQ6n,2.)-dMult)/(dMult*(dMult-1.));        
4264   // Average 2-particle correlations for all events:      
4265   fIntFlowCorrelationsAllPro->Fill(34.5,two5n5n,dMult*(dMult-1.));
4266   fIntFlowCorrelationsAllPro->Fill(35.5,two6n6n,dMult*(dMult-1.)); 
4267   if(fCalculateAllCorrelationsVsM)
4268   {
4269    fIntFlowCorrelationsAllVsMPro[34]->Fill(dMultiplicityBin,two5n5n,dMult*(dMult-1.));
4270    fIntFlowCorrelationsAllVsMPro[35]->Fill(dMultiplicityBin,two6n6n,dMult*(dMult-1.));
4271   }       
4272  } // end of if(dMult>1)
4273  
4274  // 3-particle:
4275  Double_t three5n3n2n = 0.; // <cos(n(5*phi1-3*phi2-2*phi3)> 
4276  Double_t three5n4n1n = 0.; // <cos(n(5*phi1-4*phi2-1*phi3)> 
4277  Double_t three6n3n3n = 0.; // <cos(n(6*phi1-3*phi2-3*phi3)> 
4278  Double_t three6n4n2n = 0.; // <cos(n(6*phi1-4*phi2-2*phi3)> 
4279  Double_t three6n5n1n = 0.; // <cos(n(6*phi1-5*phi2-1*phi3)> 
4280  if(dMult>2)
4281  {
4282   three5n3n2n = (reQ5nQ3nstarQ2nstar-(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4283               - (pow(dReQ3n,2.)+pow(dImQ3n,2.))
4284               - (pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
4285               / (dMult*(dMult-1.)*(dMult-2.));           
4286   three5n4n1n = (reQ5nQ4nstarQ1nstar-(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4287               - (pow(dReQ4n,2.)+pow(dImQ4n,2.))
4288               - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
4289               / (dMult*(dMult-1.)*(dMult-2.));                          
4290   three6n3n3n = (reQ6nQ3nstarQ3nstar-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4291               - (pow(dReQ6n,2.)+pow(dImQ6n,2.))+2.*dMult)
4292               / (dMult*(dMult-1.)*(dMult-2.)); 
4293   three6n4n2n = (reQ6nQ4nstarQ2nstar-(pow(dReQ6n,2.)+pow(dImQ6n,2.))
4294               - (pow(dReQ4n,2.)+pow(dImQ4n,2.))
4295               - (pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
4296               / (dMult*(dMult-1.)*(dMult-2.));
4297   three6n5n1n = (reQ6nQ5nstarQ1nstar-(pow(dReQ6n,2.)+pow(dImQ6n,2.))
4298               - (pow(dReQ5n,2.)+pow(dImQ5n,2.))
4299               - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
4300               / (dMult*(dMult-1.)*(dMult-2.));            
4301   // Average 3-particle correlations for all events:      
4302   fIntFlowCorrelationsAllPro->Fill(36.5,three5n3n2n,dMult*(dMult-1.)*(dMult-2.)); // <<cos(n(5*phi1-3*phi2-2*phi3)>> 
4303   fIntFlowCorrelationsAllPro->Fill(37.5,three5n4n1n,dMult*(dMult-1.)*(dMult-2.)); // <<cos(n(5*phi1-4*phi2-1*phi3)>> 
4304   fIntFlowCorrelationsAllPro->Fill(38.5,three6n3n3n,dMult*(dMult-1.)*(dMult-2.)); // <<cos(n(6*phi1-3*phi2-3*phi3)>> 
4305   fIntFlowCorrelationsAllPro->Fill(39.5,three6n4n2n,dMult*(dMult-1.)*(dMult-2.)); // <<cos(n(6*phi1-4*phi2-2*phi3)>>
4306   fIntFlowCorrelationsAllPro->Fill(40.5,three6n5n1n,dMult*(dMult-1.)*(dMult-2.)); // <<cos(n(6*phi1-5*phi2-1*phi3)>>
4307   if(fCalculateAllCorrelationsVsM)
4308   {
4309    fIntFlowCorrelationsAllVsMPro[36]->Fill(dMultiplicityBin,three5n3n2n,dMult*(dMult-1.)*(dMult-2.));
4310    fIntFlowCorrelationsAllVsMPro[37]->Fill(dMultiplicityBin,three5n4n1n,dMult*(dMult-1.)*(dMult-2.));
4311    fIntFlowCorrelationsAllVsMPro[38]->Fill(dMultiplicityBin,three6n3n3n,dMult*(dMult-1.)*(dMult-2.));
4312    fIntFlowCorrelationsAllVsMPro[39]->Fill(dMultiplicityBin,three6n4n2n,dMult*(dMult-1.)*(dMult-2.));
4313    fIntFlowCorrelationsAllVsMPro[40]->Fill(dMultiplicityBin,three6n5n1n,dMult*(dMult-1.)*(dMult-2.));
4314   }       
4315  } // end of if(dMult>2)
4316  
4317  // 4-particle:
4318  Double_t four6n3n2n1n = 0.; // <cos(n(6*phi1-3*phi2-2*phi3-1*phi4)>
4319  Double_t four3n2n3n2n = 0.; // <cos(n(3*phi1+2*phi2-3*phi3-2*phi4)>
4320  Double_t four4n1n3n2n = 0.; // <cos(n(4*phi1+1*phi2-3*phi3-2*phi4)> 
4321  Double_t four3n3n3n3n = 0.; // <cos(3n(phi1+phi2-phi3-phi4))> 
4322  //Double_t four4n2n3n3n = 0.; // <cos(n(4*phi1+2*phi2-3*phi3-3*phi4)> // I already have this one above
4323  Double_t four5n1n3n3n = 0.; // <cos(n(5*phi1+1*phi2-3*phi3-3*phi4)>
4324  Double_t four4n2n4n2n = 0.; // <cos(n(4*phi1+2*phi2-4*phi3-2*phi4)> 
4325  Double_t four5n1n4n2n = 0.; // <cos(n(5*phi1+1*phi2-4*phi3-2*phi4)> 
4326  Double_t four5n3n1n1n = 0.; // <cos(n(5*phi1-3*phi2-1*phi3-1*phi4)> 
4327  Double_t four5n2n2n1n = 0.; // <cos(n(5*phi1-2*phi2-2*phi3-1*phi4)>
4328  Double_t four5n1n5n1n = 0.; // <cos(n(5*phi1+1*phi2-5*phi3-1*phi4)>
4329  Double_t four6n4n1n1n = 0.; // <cos(n(6*phi1-4*phi2-1*phi3-1*phi4)>
4330  Double_t four6n2n2n2n = 0.; // <cos(n(6*phi1-2*phi2-2*phi3-2*phi4)>
4331  if(dMult>3)
4332  {
4333   four6n3n2n1n = (reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ4nstarQ2nstar-reQ6nQ3nstarQ3nstar-reQ6nQ5nstarQ1nstar
4334                - reQ5nQ3nstarQ2nstar-reQ4nQ3nstarQ1nstar-reQ3nQ2nstarQ1nstar
4335                + 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+pow(dReQ5n,2.)+pow(dImQ5n,2.)
4336                + pow(dReQ4n,2.)+pow(dImQ4n,2.)+3.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4337                + 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4338                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4339   four3n2n3n2n = (dQ3nQ2nQ3nstarQ2nstar-2.*reQ5nQ3nstarQ2nstar-2.*reQ3nQ2nstarQ1nstar
4340                + pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)               
4341                -(dMult-4.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
4342                + dMult*(dMult-6.))
4343                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));     
4344   four4n1n3n2n = (reQ4nQ1nQ3nstarQ2nstar-reQ5nQ3nstarQ2nstar-reQ5nQ4nstarQ1nstar-reQ4nQ3nstarQ1nstar
4345                - reQ4nQ2nstarQ2nstar-reQ3nQ2nstarQ1nstar-reQ2nQ1nstarQ1nstar
4346                + pow(dReQ5n,2.)+pow(dImQ5n,2.)+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4347                + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4348                + 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult) 
4349                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));                             
4350   four3n3n3n3n = (2.*dMult*(dMult-3.)+pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ3n,2.)
4351                + pow(dImQ3n,2.))-2.*reQ6nQ3nstarQ3nstar+(pow(dReQ6n,2.)+pow(dImQ6n,2.)))
4352                / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));   
4353   //four4n2n3n3n = ; // I already have this one above
4354   four5n1n3n3n = (reQ5nQ1nQ3nstarQ3nstar-reQ6nQ5nstarQ1nstar-reQ6nQ3nstarQ3nstar-2.*reQ5nQ3nstarQ2nstar
4355                - 2.*reQ3nQ2nstarQ1nstar+pow(dReQ6n,2.)+pow(dImQ6n,2.)+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4356                + 4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4357                + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)                                  
4358                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));   
4359   four4n2n4n2n = (dQ4nQ2nQ4nstarQ2nstar-2.*reQ6nQ4nstarQ2nstar-2.*reQ4nQ2nstarQ2nstar)
4360                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
4361                - ((dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4362                + (dMult-4.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-(pow(dReQ6n,2.)+pow(dImQ6n,2.)))
4363                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
4364                + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.)); 
4365   four5n1n4n2n = (reQ5nQ1nQ4nstarQ2nstar-reQ6nQ5nstarQ1nstar-reQ6nQ4nstarQ2nstar-reQ5nQ4nstarQ1nstar
4366                - reQ5nQ3nstarQ2nstar-reQ4nQ3nstarQ1nstar-reQ2nQ1nstarQ1nstar+pow(dReQ6n,2.)+pow(dImQ6n,2.)
4367                + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4368                + pow(dReQ3n,2.)+pow(dImQ3n,2.)+2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4369                + 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4370                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));     
4371   four5n3n1n1n = (reQ5nQ3nstarQ1nstarQ1nstar-2.*reQ5nQ4nstarQ1nstar-reQ5nQ3nstarQ2nstar-2.*reQ4nQ3nstarQ1nstar
4372                - reQ2nQ1nstarQ1nstar+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4373                + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+pow(dReQ2n,2.)+pow(dImQ2n,2.)
4374                + 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult) 
4375                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));                    
4376   four5n2n2n1n = (reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ4nstarQ1nstar-2.*reQ5nQ3nstarQ2nstar-reQ4nQ2nstarQ2nstar
4377                - 2.*reQ3nQ2nstarQ1nstar+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+pow(dReQ4n,2.)+pow(dImQ4n,2.)
4378                + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4379                + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4380                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));   
4381   four5n1n5n1n = (dQ5nQ1nQ5nstarQ1nstar-2.*reQ6nQ5nstarQ1nstar-2.*reQ5nQ4nstarQ1nstar
4382                + pow(dReQ6n,2.)+pow(dImQ6n,2.)-(dMult-4.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4383                + pow(dReQ4n,2.)+pow(dImQ4n,2.)-(dMult-4.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))+dMult*(dMult-6.))  
4384                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));    
4385                               
4386   // TBI: Recursive formula needed:
4387   four6n4n1n1n = (reQ6nQ4nstarQ1nstarQ1nstar
4388                - dMult*(dMult-1.)*(dMult-2.)*(three2n1n1n+2.*three5n4n1n+2.*three6n5n1n+three6n4n2n)
4389                - dMult*(dMult-1.)*(2.*two1n1n+1.*two4n4n+1.*two6n6n+1.*two2n2n+2.*two5n5n)
4390                - 1.*dMult)
4391                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4392   
4393   four6n2n2n2n = (reQ6nQ2nstarQ2nstarQ2nstar-3.*reQ6nQ4nstarQ2nstar-3.*reQ4nQ2nstarQ2nstar
4394                + 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+3.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4395                + 6.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-6.*dMult)
4396                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4397   // Average 4-particle correlations for all events:      
4398   fIntFlowCorrelationsAllPro->Fill(41.5,four6n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4399   fIntFlowCorrelationsAllPro->Fill(42.5,four3n2n3n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4400   fIntFlowCorrelationsAllPro->Fill(43.5,four4n1n3n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4401   fIntFlowCorrelationsAllPro->Fill(44.5,four3n3n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4402   //fIntFlowCorrelationsAllPro->Fill(45.5,four4n2n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)); // I already have this one above
4403   fIntFlowCorrelationsAllPro->Fill(46.5,four5n1n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4404   fIntFlowCorrelationsAllPro->Fill(47.5,four4n2n4n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4405   fIntFlowCorrelationsAllPro->Fill(48.5,four5n1n4n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4406   fIntFlowCorrelationsAllPro->Fill(49.5,four5n3n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4407   fIntFlowCorrelationsAllPro->Fill(50.5,four5n2n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4408   fIntFlowCorrelationsAllPro->Fill(51.5,four5n1n5n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4409   fIntFlowCorrelationsAllPro->Fill(58.5,four6n4n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4410   fIntFlowCorrelationsAllPro->Fill(59.5,four6n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4411   if(fCalculateAllCorrelationsVsM)
4412   {
4413    fIntFlowCorrelationsAllVsMPro[41]->Fill(dMultiplicityBin,four6n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4414    fIntFlowCorrelationsAllVsMPro[42]->Fill(dMultiplicityBin,four3n2n3n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4415    fIntFlowCorrelationsAllVsMPro[43]->Fill(dMultiplicityBin,four4n1n3n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4416    fIntFlowCorrelationsAllVsMPro[44]->Fill(dMultiplicityBin,four3n3n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4417    //fIntFlowCorrelationsAllVsMPro[45]->Fill(dMultiplicityBin,four4n2n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4418    fIntFlowCorrelationsAllVsMPro[46]->Fill(dMultiplicityBin,four5n1n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4419    fIntFlowCorrelationsAllVsMPro[47]->Fill(dMultiplicityBin,four4n2n4n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4420    fIntFlowCorrelationsAllVsMPro[48]->Fill(dMultiplicityBin,four5n1n4n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4421    fIntFlowCorrelationsAllVsMPro[49]->Fill(dMultiplicityBin,four5n3n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4422    fIntFlowCorrelationsAllVsMPro[50]->Fill(dMultiplicityBin,four5n2n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4423    fIntFlowCorrelationsAllVsMPro[51]->Fill(dMultiplicityBin,four5n1n5n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4424    fIntFlowCorrelationsAllVsMPro[58]->Fill(dMultiplicityBin,four6n4n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4425    fIntFlowCorrelationsAllVsMPro[59]->Fill(dMultiplicityBin,four6n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4426   }       
4427  } // end of if(dMult>3)
4428
4429  // 5-particle:
4430  Double_t five3n3n3n2n1n = 0.; // <cos(n(3*phi1+3*phi2-3*phi3-2*phi4-1*phi5)>
4431  Double_t five4n2n3n2n1n = 0.; // <cos(n(4*phi1+2*phi2-3*phi3-2*phi4-1*phi5)>
4432  Double_t five3n2n3n1n1n = 0.; // <cos(n(3*phi1+2*phi2-3*phi3-1*phi4-1*phi5)>
4433  Double_t five3n2n2n2n1n = 0.; // <cos(n(3*phi1+2*phi2-2*phi3-2*phi4-1*phi5)>
4434  Double_t five5n1n3n2n1n = 0.; // <cos(n(5*phi1+1*phi2-3*phi3-2*phi4-1*phi5)>
4435  Double_t five6n2n2n1n1n = 0.; // <cos(n(6*phi1-2*phi2-2*phi3-1*phi4-1*phi5)>
4436  Double_t five4n1n1n3n3n = 0.; // <cos(n(4*phi1+1*phi2+1*phi3-3*phi4-3*phi5)>
4437  if(dMult>4)
4438  { 
4439   five3n3n3n2n1n = (reQ3nQ3nQ3nstarQ2nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ5nQ1nQ3nstarQ3nstar-reQ4nQ2nQ3nstarQ3nstar
4440                  + reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+3.*reQ6nQ3nstarQ3nstar+4.*reQ5nQ3nstarQ2nstar+4.*reQ4nQ3nstarQ1nstar
4441                  - 2.*(dMult-6.)*reQ3nQ2nstarQ1nstar-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.)) 
4442                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4443                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4444                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(3.*dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4445                  - pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)+2.*(dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4446                  + 2.*(dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
4447                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));                                  
4448   five4n2n3n2n1n = (reQ4nQ2nQ3nstarQ2nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ5nQ1nQ4nstarQ2nstar
4449                  - reQ4nQ2nQ3nstarQ3nstar-reQ4nQ1nQ3nstarQ2nstar-reQ4nQ2nstarQ1nstarQ1nstar
4450                  - reQ3nQ1nQ2nstarQ2nstar-(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4451                  + 3.*reQ6nQ4nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ6nQ3nstarQ3nstar+reQ5nQ4nstarQ1nstar
4452                  + 3.*reQ5nQ3nstarQ2nstar-(dMult-7.)*reQ4nQ3nstarQ1nstar+3.*reQ4nQ2nstarQ2nstar+7.*reQ3nQ2nstarQ1nstar
4453                  + 4.*reQ2nQ1nstarQ1nstar-(pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4454                  - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4455                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4456                  + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+(dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4457                  + 2.*(dMult-7.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+(dMult-12.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4458                  - 2.*dMult*(dMult-12.))
4459                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));   
4460   five3n2n3n1n1n = (reQ3nQ2nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar-2.*reQ4nQ1nQ3nstarQ2nstar-reQ3nQ1nstarQ1nstarQ1nstar
4461                  - 2.*reQ3nQ1nQ2nstarQ2nstar+2.*reQ5nQ4nstarQ1nstar+3.*reQ5nQ3nstarQ2nstar+6.*reQ4nQ3nstarQ1nstar
4462                  + 2.*reQ4nQ2nstarQ2nstar+9.*reQ3nQ2nstarQ1nstar-(dMult-8.)*reQ2nQ1nstarQ1nstar
4463                  - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.)) 
4464                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.)) 
4465                  - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4466                  + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+(dMult-12.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4467                  + 2.*(dMult-9.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.))
4468                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4469   five3n2n2n2n1n = (reQ3nQ2nQ2nstarQ2nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ4nQ1nQ3nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar
4470                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+reQ5nQ4nstarQ1nstar
4471                  + 4.*reQ5nQ3nstarQ2nstar+reQ4nQ3nstarQ1nstar+3.*reQ4nQ2nstarQ2nstar-2.*(dMult-6.)*reQ3nQ2nstarQ1nstar
4472                  + 4.*reQ2nQ1nstarQ1nstar-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4473                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4474                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4475                  - pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)+2.*(3.*dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4476                  + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
4477                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)); 
4478   five5n1n3n2n1n = (reQ5nQ1nQ3nstarQ2nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ5nQ1nQ4nstarQ2nstar-reQ5nQ1nQ3nstarQ3nstar
4479                  - reQ4nQ1nQ3nstarQ2nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar 
4480                  + 3.*reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ3nstarQ3nstar+4.*reQ5nQ4nstarQ1nstar
4481                  - (dMult-7.)*reQ5nQ3nstarQ2nstar+4.*reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar+6.*reQ3nQ2nstarQ1nstar
4482                  + 3.*reQ2nQ1nstarQ1nstar-(pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4483                  - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4484                  - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4485                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+(dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))  
4486                  - 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+(dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4487                  + (dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*(dMult-7.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4488                  - 2.*dMult*(dMult-12.))
4489                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));       
4490   // Peter Jochumzsen:
4491   five6n2n2n1n1n = (reQ6nQ2nstarQ2nstarQ1nstarQ1nstar
4492                  - 12.*pow(dReQ1n,2.)-12.*pow(dImQ1n,2.)
4493                  - 14.*pow(dReQ2n,2.)-14.*pow(dImQ2n,2.)
4494                  - 8.*pow(dReQ3n,2.)-8.*pow(dImQ3n,2.)
4495                  - 6.*pow(dReQ4n,2.)-6.*pow(dImQ4n,2.)
4496                  - 4.*pow(dReQ5n,2.)-4.*pow(dImQ5n,2.)
4497                  - 6.*pow(dReQ6n,2.)-6.*pow(dImQ6n,2.)
4498                  + 2.*reQ2nQ1nstarQ1nstar + 8.*reQ3nQ2nstarQ1nstar
4499                  + 5.*reQ6nQ4nstarQ2nstar - reQ6nQ4nstarQ1nstarQ1nstar
4500                  + 2.*reQ6nQ3nstarQ3nstar - reQ6nQ2nstarQ2nstarQ2nstar 
4501                  + 4.*reQ4nQ2nstarQ2nstar - 2.*reQ4nQ2nstarQ1nstarQ1nstar 
4502                  + 2.*reQ5nQ4nstarQ1nstar - 2.*reQ5nQ2nstarQ2nstarQ1nstar 
4503                  + 4.*reQ4nQ3nstarQ1nstar + 4.*reQ5nQ3nstarQ2nstar
4504                  + 4.*reQ6nQ5nstarQ1nstar - 4.*reQ6nQ3nstarQ2nstarQ1nstar + 24.*dMult)
4505                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));  
4506   // Peter Jochumzsen:
4507   five4n1n1n3n3n = (reQ4nQ1nQ1nQ3nstarQ3nstar-16.*pow(dReQ1n,2.)-16.*pow(dImQ1n,2.)
4508                  - 10.*pow(dReQ2n,2.)-10.*pow(dImQ2n,2.)-12.*pow(dReQ3n,2.)-12.*pow(dImQ3n,2.)
4509                  - 6.*pow(dReQ4n,2.)-6.*pow(dImQ4n,2.)-4.*pow(dReQ5n,2.)-4.*pow(dImQ5n,2.)
4510                  - 2.*pow(dReQ6n,2.)-2.*pow(dImQ6n,2.)+6.*reQ2nQ1nstarQ1nstar 
4511                  - 1.*reQ6nQ4nstarQ1nstarQ1nstar-1.*reQ4nQ2nQ3nstarQ3nstar 
4512                  + 1.*reQ6nQ4nstarQ2nstar-2.*reQ5nQ1nQ3nstarQ3nstar 
4513                  + 2.*reQ4nQ2nstarQ2nstar+4.*reQ4nQ3nstarQ1nstar 
4514                  - 2.*reQ3nQ1nstarQ1nstarQ1nstar+10.*reQ3nQ2nstarQ1nstar 
4515                  + 2.*reQ6nQ5nstarQ1nstar+2.*reQ6nQ3nstarQ3nstar 
4516                  - 4.*reQ4nQ1nQ3nstarQ2nstar+4.*reQ5nQ4nstarQ1nstar
4517                  + 4.*reQ5nQ3nstarQ2nstar + 24.*dMult)
4518                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4519   // Average 5-particle correlations for all events:      
4520   fIntFlowCorrelationsAllPro->Fill(52.5,five3n3n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4521   fIntFlowCorrelationsAllPro->Fill(53.5,five4n2n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4522   fIntFlowCorrelationsAllPro->Fill(54.5,five3n2n3n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4523   fIntFlowCorrelationsAllPro->Fill(55.5,five3n2n2n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4524   fIntFlowCorrelationsAllPro->Fill(56.5,five5n1n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4525   fIntFlowCorrelationsAllPro->Fill(60.5,five6n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4526   fIntFlowCorrelationsAllPro->Fill(61.5,five4n1n1n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4527   if(fCalculateAllCorrelationsVsM)
4528   {
4529    fIntFlowCorrelationsAllVsMPro[52]->Fill(dMultiplicityBin,five3n3n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4530    fIntFlowCorrelationsAllVsMPro[53]->Fill(dMultiplicityBin,five4n2n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4531    fIntFlowCorrelationsAllVsMPro[54]->Fill(dMultiplicityBin,five3n2n3n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4532    fIntFlowCorrelationsAllVsMPro[55]->Fill(dMultiplicityBin,five3n2n2n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4533    fIntFlowCorrelationsAllVsMPro[56]->Fill(dMultiplicityBin,five5n1n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4534    fIntFlowCorrelationsAllVsMPro[60]->Fill(dMultiplicityBin,five6n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4535    fIntFlowCorrelationsAllVsMPro[61]->Fill(dMultiplicityBin,five4n1n1n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4536   }         
4537  } // end of if(dMult>4)
4538
4539  // 6-particle:
4540  Double_t six3n2n1n3n2n1n = 0.; // <cos(n(3*phi1+2*phi2+1*phi3-3*phi4-2*phi5-1*phi6)>
4541  Double_t six3n3n2n2n1n1n = 0.; // <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-1*phi5-1*phi6)>   
4542  if(dMult>5.)
4543  { 
4544   six3n2n1n3n2n1n = (dQ3nQ2nQ1nQ3nstarQ2nstarQ1nstar-2.*reQ3nQ3nQ3nstarQ2nstarQ1nstar
4545                   - 2.*reQ3nQ2nQ2nstarQ2nstarQ1nstar-2.*reQ3nQ1nQ2nstarQ1nstarQ1nstar
4546                   - 2.*reQ3nQ2nQ3nstarQ1nstarQ1nstar-2.*reQ4nQ2nQ3nstarQ2nstarQ1nstar
4547                   - 2.*reQ5nQ1nQ3nstarQ2nstarQ1nstar+4.*reQ6nQ3nstarQ2nstarQ1nstar
4548                   + 2.*reQ5nQ1nQ4nstarQ2nstar+2.*reQ5nQ1nQ3nstarQ3nstar
4549                   + 2.*reQ4nQ2nQ3nstarQ3nstar+6.*reQ4nQ1nQ3nstarQ2nstar
4550                   + 2.*reQ5nQ3nstarQ1nstarQ1nstar+2.*reQ5nQ2nstarQ2nstarQ1nstar
4551                   + 6.*reQ3nQ1nQ2nstarQ2nstar+2.*reQ4nQ2nstarQ1nstarQ1nstar
4552                   - 4.*reQ6nQ5nstarQ1nstar-4.*reQ6nQ4nstarQ2nstar-6.*reQ5nQ4nstarQ1nstar
4553                   - 4.*reQ6nQ3nstarQ3nstar+2.*(dMult-11.)*reQ5nQ3nstarQ2nstar
4554                   + 2.*(dMult-13.)*reQ4nQ3nstarQ1nstar-8.*reQ4nQ2nstarQ2nstar
4555                   + 2.*(5.*dMult-32.)*reQ3nQ2nstarQ1nstar+2.*reQ3nQ1nstarQ1nstarQ1nstar
4556                   + 2.*(dMult-13.)*reQ2nQ1nstarQ1nstar
4557                   - (dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4558                   + (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4559                   + (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4560                   - (dMult-11.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4561                   - (dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4562                   + 4.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-(dMult-12.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4563                   - (dMult-16.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)
4564                   + (dMult*dMult-19.*dMult+68.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4565                   + (dMult*dMult-19.*dMult+72.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4566                   + pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)+pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
4567                   + (dMult*dMult-20.*dMult+80.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4568                   - dMult*(dMult-12.)*(dMult-10.))
4569                   / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));   
4570   
4571   // Peter Jochumzsen:
4572   six3n3n2n2n1n1n = (reQ3nQ3nQ2nstarQ2nstarQ1nstarQ1nstar
4573                   + (80.-16.*dMult)*pow(dReQ1n,2.)+(80.-16.*dMult)*pow(dImQ1n,2.)
4574                   + (78.-16.*dMult)*pow(dReQ2n,2.)+(78.-16.*dMult)*pow(dImQ2n,2.)
4575                   + (72.-16.*dMult)*pow(dReQ3n,2.)+(72.-16.*dMult)*pow(dImQ3n,2.)
4576                   + 14.*pow(dReQ4n,2.)+14.*pow(dImQ4n,2.)
4577                   + 8.*pow(dReQ5n,2.)+8.*pow(dImQ5n,2.)
4578                   + 6.*pow(dReQ6n,2.)+6.*pow(dImQ6n,2.)
4579                   + 1.*reQ6nQ2nstarQ2nstarQ2nstar - 1.*reQ6nQ2nstarQ2nstarQ1nstarQ1nstar
4580                   - 76.*reQ3nQ2nstarQ1nstar + 4.*reQ3nQ1nstarQ1nstarQ1nstar
4581                   - 8.*reQ3nQ2nstarQ1nstar + 8.*dQ2nQ1nQ2nstarQ1nstar
4582                   + 4.*reQ5nQ2nstarQ2nstarQ1nstar - 2.*reQ6nQ3nstarQ3nstar
4583                   + 4.*reQ6nQ3nstarQ2nstarQ1nstar - 4.*reQ5nQ4nstarQ1nstar
4584                   + 16.*dMult*reQ3nQ2nstarQ1nstar - 2.*reQ4nQ2nstarQ2nstar
4585                   - 4.*reQ3nQ3nQ3nstarQ2nstarQ1nstar -8.*reQ4nQ3nstarQ1nstar
4586                   - 10.*reQ4nQ2nstarQ2nstar + 4.*reQ4nQ2nstarQ1nstarQ1nstar
4587                   - 12.*reQ4nQ3nstarQ1nstar + 8.*dQ3nQ1nQ3nstarQ1nstar
4588                   + 8.*reQ3nQ1nQ2nstarQ2nstar - 4.*reQ3nQ1nQ2nstarQ1nstarQ1nstar
4589                   + 5.*reQ4nQ2nQ3nstarQ3nstar+2.*pow(pow(dReQ2n,2.)+pow(dImQ2n,2.),2.)
4590                   + 4.*reQ5nQ1nQ3nstarQ3nstar+2.*pow(pow(dReQ3n,2.)+pow(dImQ3n,2.),2.)
4591                   - 6.*reQ6nQ3nstarQ3nstar - 14.*reQ2nQ1nstarQ1nstar
4592                   - 1.*reQ3nQ3nQ2nstarQ2nstarQ2nstar-4.*reQ3nQ2nQ2nstarQ2nstarQ1nstar
4593                   - 1.*reQ4nQ1nQ1nQ3nstarQ3nstar-8.*reQ5nQ3nstarQ2nstar
4594                   + 2.*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.) - 10.*reQ2nQ1nstarQ1nstar
4595                   - 4.*reQ6nQ5nstarQ1nstar-5.*reQ6nQ4nstarQ2nstar
4596                   + 1.*reQ6nQ4nstarQ1nstarQ1nstar-8.*reQ5nQ3nstarQ2nstar
4597                   + 4.*reQ4nQ1nQ3nstarQ2nstar+8.*dQ3nQ2nQ3nstarQ2nstar
4598                   - 120.*dMult + 16.*dMult*dMult)
4599                   / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4600
4601   // Average 6-particle correlations for all events:      
4602   fIntFlowCorrelationsAllPro->Fill(57.5,six3n2n1n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4603   fIntFlowCorrelationsAllPro->Fill(62.5,six3n3n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4604   if(fCalculateAllCorrelationsVsM)
4605   {
4606    fIntFlowCorrelationsAllVsMPro[57]->Fill(dMultiplicityBin,six3n2n1n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4607    fIntFlowCorrelationsAllVsMPro[62]->Fill(dMultiplicityBin,six3n3n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4608   }          
4609  } // end of if(dMult>5.)
4610  
4611 } // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrelations()
4612
4613 //=====================================================================================================
4614
4615 void AliFlowAnalysisWithQCumulants::CalculateMixedHarmonics()
4616 {
4617  // Calculate in this method all multi-particle azimuthal correlations in mixed harmonics.
4618  // (Remark: For completeness sake, we also calculate here again correlations in the same harmonic.) 
4619
4620  // a) Access Q-vectors and multiplicity of current event; 
4621  // b) Determine multiplicity weights and fill some histos;
4622  // c) Calculate 2-p correlations; 
4623  // d) Calculate 3-p correlations; 
4624  // e) Calculate 4-p correlations; 
4625  // f) Calculate 5-p correlations; 
4626  // g) Calculate 6-p correlations; 
4627  // h) Calculate 7-p correlations; 
4628  // i) Calculate 8-p correlations.
4629
4630  // a) Access Q-vectors and multiplicity of current event:
4631  // Multiplicity of an event: 
4632  Double_t dMult = (*fSpk)(0,0);
4633  // Real parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n, 4n, 5n and 6n: 
4634  Double_t dReQ1n = (*fReQ)(0,0);
4635  Double_t dReQ2n = (*fReQ)(1,0);
4636  Double_t dReQ3n = (*fReQ)(2,0);
4637  Double_t dReQ4n = (*fReQ)(3,0);
4638  Double_t dReQ5n = (*fReQ)(4,0); 
4639  Double_t dReQ6n = (*fReQ)(5,0);
4640  Double_t dReQ7n = (*fReQ)(6,0);
4641  Double_t dReQ8n = (*fReQ)(7,0);
4642  Double_t dReQ9n = (*fReQ)(8,0);
4643  Double_t dReQ10n = (*fReQ)(9,0);
4644  Double_t dReQ11n = (*fReQ)(10,0);
4645  Double_t dReQ12n = (*fReQ)(11,0);
4646  // Imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n, 4n, 5n and 6n:
4647  Double_t dImQ1n = (*fImQ)(0,0);
4648  Double_t dImQ2n = (*fImQ)(1,0);
4649  Double_t dImQ3n = (*fImQ)(2,0);
4650  Double_t dImQ4n = (*fImQ)(3,0);
4651  Double_t dImQ5n = (*fImQ)(4,0); 
4652  Double_t dImQ6n = (*fImQ)(5,0);
4653  Double_t dImQ7n = (*fImQ)(6,0);
4654  Double_t dImQ8n = (*fImQ)(7,0);
4655  Double_t dImQ9n = (*fImQ)(8,0);
4656  Double_t dImQ10n = (*fImQ)(9,0);
4657  Double_t dImQ11n = (*fImQ)(10,0);
4658  Double_t dImQ12n = (*fImQ)(11,0);
4659  // All mixed correlators:
4660  Double_t allMixedCorrelators[139] = {0.};
4661
4662  // Real parts of expressions involving various combinations of Q-vectors which appears
4663  // simultaneously in several equations for multiparticle correlations bellow: 
4664  // Re[Q_{2n}Q_{n}^*Q_{n}^*]
4665  Double_t reQ2nQ1nstarQ1nstar = pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n; 
4666  // Re[Q_{6n}Q_{3n}^*Q_{3n}^*]
4667  Double_t reQ6nQ3nstarQ3nstar = pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n;  
4668  // Re[Q_{4n}Q_{2n}^*Q_{2n}^*]
4669  Double_t reQ4nQ2nstarQ2nstar = pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n;
4670  // Re[Q_{4n}Q_{3n}^*Q_{n}^*]
4671  Double_t reQ4nQ3nstarQ1nstar = dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n);
4672  // Re[Q_{3n}Q_{2n}^*Q_{n}^*]
4673  Double_t reQ3nQ2nstarQ1nstar = dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
4674                               + dImQ3n*dImQ2n*dReQ1n; 
4675  // Re[Q_{5n}Q_{3n}^*Q_{2n}^*]
4676  Double_t reQ5nQ3nstarQ2nstar = dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n
4677                               + dImQ5n*dImQ2n*dReQ3n;                             
4678  // Re[Q_{5n}Q_{4n}^*Q_{1n}^*]
4679  Double_t reQ5nQ4nstarQ1nstar = dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n
4680                               + dImQ5n*dImQ4n*dReQ1n;                              
4681  // Re[Q_{6n}Q_{5n}^*Q_{1n}^*]                              
4682  Double_t reQ6nQ5nstarQ1nstar = dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n
4683                               + dImQ6n*dImQ5n*dReQ1n;
4684  // Re[Q_{6n}Q_{4n}^*Q_{2n}^*]                       
4685  Double_t reQ6nQ4nstarQ2nstar = dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n
4686                               + dImQ6n*dImQ4n*dReQ2n;
4687  // Re[Q_{3n}Q_{n}Q_{2n}^*Q_{2n}^*]
4688  Double_t reQ3nQ1nQ2nstarQ2nstar = (pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n) 
4689                                  + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n);                                
4690  // Re[Q_{3n}Q_{n}^*Q_{n}^*Q_{n}^*]
4691  Double_t reQ3nQ1nstarQ1nstarQ1nstar = dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
4692                                      + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3);
4693  // Re[Q_{6n}Q_{2n}^*Q_{2n}^*Q_{2n}^*]
4694  Double_t reQ6nQ2nstarQ2nstarQ2nstar = dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
4695                                      + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3);
4696  // Re[Q_{4n}Q_{2n}^*Q_{n}^*Q_{n}^*]
4697  Double_t reQ4nQ2nstarQ1nstarQ1nstar = (dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2)) 
4698                                      + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n);  
4699  // Re[Q_{4n}Q_{2n}^*Q_{3n}^*Q_{3n}^*]
4700  Double_t reQ4nQ2nQ3nstarQ3nstar = (dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
4701                                  + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n;                    
4702  // Re[Q_{4n}Q_{n}Q_{3n}^*Q_{2n}^*]
4703  Double_t reQ4nQ1nQ3nstarQ2nstar = dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n 
4704                                  + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
4705                                  - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n 
4706                                  + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n;
4707
4708  // Re[Q_{5n}Q_{n}Q_{4n}^*Q_{2n}^*]
4709  Double_t reQ5nQ1nQ4nstarQ2nstar = dImQ1n*dImQ2n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ1n*dReQ2n 
4710                                  + dImQ2n*dImQ5n*dReQ1n*dReQ4n-dImQ1n*dImQ5n*dReQ2n*dReQ4n
4711                                  - dImQ2n*dImQ4n*dReQ1n*dReQ5n+dImQ1n*dImQ4n*dReQ2n*dReQ5n 
4712                                  + dImQ1n*dImQ2n*dReQ4n*dReQ5n+dReQ1n*dReQ2n*dReQ4n*dReQ5n;                                  
4713  // Re[Q_{5n}Q_{n}Q_{3n}^*Q_{3n}^*]                                  
4714  Double_t reQ5nQ1nQ3nstarQ3nstar = dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
4715                                  - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n 
4716                                  + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n;
4717  // Re[Q_{5n}Q_{3n}^*Q_{n}^*Q_{n}^*]                                  
4718  Double_t reQ5nQ3nstarQ1nstarQ1nstar = -pow(dImQ1n,2.)*dImQ3n*dImQ5n+dImQ3n*dImQ5n*pow(dReQ1n,2.)
4719                                      + 2.*dImQ1n*dImQ5n*dReQ1n*dReQ3n-2.*dImQ1n*dImQ3n*dReQ1n*dReQ5n 
4720                                      - pow(dImQ1n,2.)*dReQ3n*dReQ5n+pow(dReQ1n,2.)*dReQ3n*dReQ5n;                     
4721  // Re[Q_{5n}Q_{2n}^*Q_{2n}^*Q_{n}^*]                                  
4722  Double_t reQ5nQ2nstarQ2nstarQ1nstar = -pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
4723                                      + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n 
4724                                      - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n;                                     
4725  // Re[Q_{6n}Q_{4n}^*Q_{n}^*Q_{n}^*]                                  
4726  Double_t reQ6nQ4nstarQ1nstarQ1nstar = -pow(dImQ1n,2.)*dImQ4n*dImQ6n+dImQ4n*dImQ6n*pow(dReQ1n,2.) 
4727                                      +  2.*dImQ1n*dImQ6n*dReQ1n*dReQ4n-2.*dImQ1n*dImQ4n*dReQ1n*dReQ6n 
4728                                      -  pow(dImQ1n,2.)*dReQ4n*dReQ6n+pow(dReQ1n,2.)*dReQ4n*dReQ6n;
4729  /*// |Q_{2n}|^2 |Q_{n}|^2
4730  Double_t dQ2nQ1nQ2nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
4731  // |Q_{4n}|^2 |Q_{2n}|^2
4732  Double_t dQ4nQ2nQ4nstarQ2nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.));
4733  // |Q_{3n}|^2 |Q_{2n}|^2
4734  Double_t dQ3nQ2nQ3nstarQ2nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.));
4735  // |Q_{5n}|^2 |Q_{n}|^2
4736  Double_t dQ5nQ1nQ5nstarQ1nstar = (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
4737  // |Q_{3n}|^2 |Q_{n}|^2
4738  Double_t dQ3nQ1nQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));*/
4739  // Re[Q_{2n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*]
4740  /*Double_t reQ2nQ1nQ1nstarQ1nstarQ1nstar = (dReQ2n*dReQ1n-dImQ2n*dImQ1n)*(pow(dReQ1n,3)-3.*dReQ1n*pow(dImQ1n,2))
4741                                         + (dReQ2n*dImQ1n+dReQ1n*dImQ2n)*(3.*dImQ1n*pow(dReQ1n,2)-pow(dImQ1n,3));*/ 
4742  // Re[Q_{2n}Q_{2n}Q_{2n}^*Q_{n}^*Q_{n}^*]
4743  /*Double_t reQ2nQ2nQ2nstarQ1nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
4744                                         * (dReQ2n*(pow(dReQ1n,2.)-pow(dImQ1n,2.)) + 2.*dImQ2n*dReQ1n*dImQ1n);*/
4745  /*// Re[Q_{4n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
4746  Double_t reQ4nQ1nstarQ1nstarQ1nstarQ1nstar = pow(dReQ1n,4.)*dReQ4n-6.*pow(dReQ1n,2.)*dReQ4n*pow(dImQ1n,2.)
4747                                             + pow(dImQ1n,4.)*dReQ4n+4.*pow(dReQ1n,3.)*dImQ1n*dImQ4n
4748                                             - 4.*pow(dImQ1n,3.)*dReQ1n*dImQ4n;*/
4749  // Re[Q_{3n}Q_{n}Q_{2n}^*Q_{n}^*Q_{n}^*]
4750  /*Double_t reQ3nQ1nQ2nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
4751                                         * (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
4752                                         + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n);*/
4753  // Re[Q_{6n}Q_{n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
4754  Double_t reQ6nQ3nstarQ2nstarQ1nstar = dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
4755                                      - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
4756                                      + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n 
4757                                      + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n;
4758  // Re[Q_{3n}Q_{3n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
4759  /*Double_t reQ3nQ3nQ3nstarQ2nstarQ1nstar = (pow(dImQ3n,2.)+pow(dReQ3n,2.))
4760                                         * (dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
4761                                         - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n);*/   
4762  /*// Re[Q_{3n}Q_{3n}Q_{2n}^*Q_{2n}^*Q_{2n}^*]
4763  Double_t reQ3nQ3nQ2nstarQ2nstarQ2nstar = pow(dReQ2n,3.)*pow(dReQ3n,2.) 
4764                                         - 3.*dReQ2n*pow(dReQ3n,2.)*pow(dImQ2n,2.)
4765                                         + 6.*pow(dReQ2n,2.)*dReQ3n*dImQ2n*dImQ3n 
4766                                         - 2.*dReQ3n*pow(dImQ2n,3.)*dImQ3n-pow(dReQ2n,3.)*pow(dImQ3n,2.) 
4767                                         + 3.*dReQ2n*pow(dImQ2n,2.)*pow(dImQ3n,2.);*/
4768  // Re[Q_{4n}Q_{2n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
4769  /*Double_t reQ4nQ2nQ3nstarQ2nstarQ1nstar = (pow(dImQ2n,2.)+pow(dReQ2n,2.))
4770                                         * (dImQ3n*dImQ4n*dReQ1n+dImQ1n*dImQ4n*dReQ3n 
4771                                         - dImQ1n*dImQ3n*dReQ4n+dReQ1n*dReQ3n*dReQ4n);*/
4772  // Re[Q_{3n}Q_{2n}Q_{3n}^*Q_{n}^*Q_{n}^*]
4773  /*Double_t reQ3nQ2nQ3nstarQ1nstarQ1nstar = -(pow(dImQ3n,2.)+pow(dReQ3n,2.))
4774                                         * (-2.*dImQ1n*dImQ2n*dReQ1n+pow(dImQ1n,2.)*dReQ2n-pow(dReQ1n,2.)*dReQ2n);*/                              
4775  // Re[Q_{3n}Q_{2n}Q_{2n}^*Q_{2n}^*Q_{n}^*]
4776  /*Double_t reQ3nQ2nQ2nstarQ2nstarQ1nstar = (pow(dImQ2n,2.)+pow(dReQ2n,2.))
4777                                         * (dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n 
4778                                         - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n);*/
4779 /* // Re[Q_{5n}Q_{n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
4780  Double_t reQ5nQ1nQ3nstarQ2nstarQ1nstar = (pow(dImQ1n,2.)+pow(dReQ1n,2.))
4781                                         * (dImQ3n*dImQ5n*dReQ2n+dImQ2n*dImQ5n*dReQ3n 
4782                                         - dImQ2n*dImQ3n*dReQ5n+dReQ2n*dReQ3n*dReQ5n);   
4783  */
4784  /*
4785  // Re[Q_{2n}Q_{2n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
4786  Double_t reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)*dReQ2n-2.*dReQ1n*dReQ2n*dImQ1n-dReQ2n*pow(dImQ1n,2.)
4787                                                + dImQ2n*pow(dReQ1n,2.)+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dImQ2n)
4788                                                * (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dReQ2n*dImQ1n-dReQ2n*pow(dImQ1n,2.)
4789                                                - dImQ2n*pow(dReQ1n,2.)+2.*dReQ1n*dImQ1n*dImQ2n+pow(dImQ1n,2.)*dImQ2n); 
4790  // Re[Q_{3n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
4791  Double_t reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
4792                                                * (pow(dReQ1n,3.)*dReQ3n-3.*dReQ1n*dReQ3n*pow(dImQ1n,2.)
4793                                                + 3.*pow(dReQ1n,2.)*dImQ1n*dImQ3n-pow(dImQ1n,3.)*dImQ3n);
4794  */
4795  // |Q_{2n}|^2 |Q_{n}|^4
4796  //Double_t dQ2nQ1nQ1nQ2nstarQ1nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.); 
4797  /*
4798  // |Q_{3n}|^2 |Q_{2n}|^2 |Q_{n}|^2
4799  Double_t dQ3nQ2nQ1nQ3nstarQ2nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4800                                           * (pow(dReQ1n,2.)+pow(dImQ1n,2.));
4801  // Re[Q_{2n}Q_{n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
4802  Double_t reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
4803                                                   * (pow(dReQ1n,2.)*dReQ2n-dReQ2n*pow(dImQ1n,2.)
4804                                                   + 2.*dReQ1n*dImQ1n*dImQ2n);                                                  
4805  */
4806  // Re[Q_{6n}Q_{2n}^*Q_{2n}^*Q_{n}^*Q_{n}^*]
4807  /*Double_t reQ6nQ2nstarQ2nstarQ1nstarQ1nstar = pow(dReQ1n*dReQ2n,2.)*dReQ6n-pow(dReQ2n*dImQ1n,2.)*dReQ6n
4808                                             - 4.*dReQ1n*dReQ2n*dReQ6n*dImQ1n*dImQ2n 
4809                                             - pow(dReQ1n*dImQ2n,2.)*dReQ6n+pow(dImQ1n*dImQ2n,2.)*dReQ6n
4810                                             + 2.*dReQ1n*pow(dReQ2n,2.)*dImQ1n*dImQ6n
4811                                             + 2.*pow(dReQ1n,2.)*dReQ2n*dImQ2n*dImQ6n 
4812                                             - 2.*dReQ2n*pow(dImQ1n,2.)*dImQ2n*dImQ6n 
4813                                             - 2.*dReQ1n*dImQ1n*pow(dImQ2n,2.)*dImQ6n;
4814  */                                                                                      
4815  // Re[Q_{4n}Q_{1n}Q_{1n}Q_{3n}^*Q_{3n}^*]
4816  /*
4817  Double_t reQ4nQ1nQ1nQ3nstarQ3nstar = pow(dReQ1n*dReQ3n,2.)*dReQ4n-pow(dReQ3n*dImQ1n,2.)*dReQ4n  
4818                                     + 4.*dReQ1n*dReQ3n*dReQ4n*dImQ1n*dImQ3n 
4819                                     - pow(dReQ1n*dImQ3n,2.)*dReQ4n+pow(dImQ1n*dImQ3n,2.)*dReQ4n  
4820                                     - 2.*dReQ1n*pow(dReQ3n,2.)*dImQ1n*dImQ4n 
4821                                     + 2.*pow(dReQ1n,2.)*dReQ3n*dImQ3n*dImQ4n 
4822                                     - 2.*dReQ3n*pow(dImQ1n,2.)*dImQ3n*dImQ4n 
4823                                     + 2.*dReQ1n*dImQ1n*pow(dImQ3n,2.)*dImQ4n;*/
4824  /* 
4825  // Re[Q_{3n}Q_{3n}Q_{2n}^*Q_{2n}^*Q_{1n}^*Q_{1n}^*]
4826  Double_t reQ3nQ3nQ2nstarQ2nstarQ1nstarQ1nstar = (dReQ1n*dReQ2n*dReQ3n-dReQ2n*dReQ3n*dImQ1n-dReQ1n*dReQ3n*dImQ2n 
4827                                                - dReQ3n*dImQ1n*dImQ2n+dReQ1n*dReQ2n*dImQ3n+dReQ2n*dImQ1n*dImQ3n 
4828                                                + dReQ1n*dImQ2n*dImQ3n-dImQ1n*dImQ2n*dImQ3n)*(dReQ1n*dReQ2n*dReQ3n 
4829                                                + dReQ2n*dReQ3n*dImQ1n+dReQ1n*dReQ3n*dImQ2n-dReQ3n*dImQ1n*dImQ2n 
4830                                                - dReQ1n*dReQ2n*dImQ3n+dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n 
4831                                                + dImQ1n*dImQ2n*dImQ3n);
4832  */
4833
4834  // b) Determine multiplicity weights and fill some histos:
4835  Double_t d2pMultiplicityWeight = 0.; // weight for <2>_{...} to get <<2>>_{...}
4836  Double_t d3pMultiplicityWeight = 0.; // weight for <3>_{...} to get <<3>>_{...}
4837  Double_t d4pMultiplicityWeight = 0.; // weight for <4>_{...} to get <<4>>_{...}
4838  Double_t d5pMultiplicityWeight = 0.; // weight for <5>_{...} to get <<5>>_{...}
4839  Double_t d6pMultiplicityWeight = 0.; // weight for <6>_{...} to get <<6>>_{...}
4840  Double_t d7pMultiplicityWeight = 0.; // weight for <7>_{...} to get <<7>>_{...}
4841  Double_t d8pMultiplicityWeight = 0.; // weight for <8>_{...} to get <<8>>_{...}
4842  if(fMultiplicityWeight->Contains("combinations")) // default multiplicity weight
4843  {
4844   d2pMultiplicityWeight = dMult*(dMult-1.);
4845   d3pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.);
4846   d4pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.);
4847   d5pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.);
4848   d6pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.);
4849   d7pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.);
4850   d8pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.);
4851  } else if(fMultiplicityWeight->Contains("unit"))
4852    {
4853     d2pMultiplicityWeight = 1.;
4854     d3pMultiplicityWeight = 1.;
4855     d4pMultiplicityWeight = 1.;
4856     d5pMultiplicityWeight = 1.;
4857     d6pMultiplicityWeight = 1.;
4858     d7pMultiplicityWeight = 1.;
4859     d8pMultiplicityWeight = 1.;
4860    } else if(fMultiplicityWeight->Contains("multiplicity"))
4861      {
4862       d2pMultiplicityWeight = dMult;
4863       d3pMultiplicityWeight = dMult;
4864       d4pMultiplicityWeight = dMult;
4865       d5pMultiplicityWeight = dMult;
4866       d6pMultiplicityWeight = dMult;
4867       d7pMultiplicityWeight = dMult;
4868       d8pMultiplicityWeight = dMult; 
4869      }       
4870  for(Int_t p=0;p<=1;p++) // power (0=linear,1=quadratic)
4871  {
4872   fMixedHarmonicEventWeights[p]->Fill(0.5,pow(dMult,p+1));
4873   fMixedHarmonicEventWeights[p]->Fill(1.5,pow(d2pMultiplicityWeight,p+1));
4874   fMixedHarmonicEventWeights[p]->Fill(2.5,pow(d3pMultiplicityWeight,p+1));
4875   fMixedHarmonicEventWeights[p]->Fill(3.5,pow(d4pMultiplicityWeight,p+1));
4876   fMixedHarmonicEventWeights[p]->Fill(4.5,pow(d5pMultiplicityWeight,p+1));
4877   fMixedHarmonicEventWeights[p]->Fill(5.5,pow(d6pMultiplicityWeight,p+1));
4878   fMixedHarmonicEventWeights[p]->Fill(6.5,pow(d7pMultiplicityWeight,p+1));
4879   fMixedHarmonicEventWeights[p]->Fill(7.5,pow(d8pMultiplicityWeight,p+1));
4880  } // end of for(Int_t p=0;p<=1;p++) // power (0=linear,1=quadratic)   
4881  fMixedHarmonicProductOfEventWeights->Fill(0.5,0.5,dMult*dMult);
4882  fMixedHarmonicProductOfEventWeights->Fill(0.5,1.5,dMult*d2pMultiplicityWeight);
4883  fMixedHarmonicProductOfEventWeights->Fill(0.5,2.5,dMult*d3pMultiplicityWeight);
4884  fMixedHarmonicProductOfEventWeights->Fill(0.5,3.5,dMult*d4pMultiplicityWeight);
4885  fMixedHarmonicProductOfEventWeights->Fill(0.5,4.5,dMult*d5pMultiplicityWeight);
4886  fMixedHarmonicProductOfEventWeights->Fill(0.5,5.5,dMult*d6pMultiplicityWeight);
4887  fMixedHarmonicProductOfEventWeights->Fill(0.5,6.5,dMult*d7pMultiplicityWeight);
4888  fMixedHarmonicProductOfEventWeights->Fill(0.5,7.5,dMult*d8pMultiplicityWeight);
4889  fMixedHarmonicProductOfEventWeights->Fill(1.5,1.5,d2pMultiplicityWeight*d2pMultiplicityWeight);
4890  fMixedHarmonicProductOfEventWeights->Fill(1.5,2.5,d2pMultiplicityWeight*d3pMultiplicityWeight);
4891  fMixedHarmonicProductOfEventWeights->Fill(1.5,3.5,d2pMultiplicityWeight*d4pMultiplicityWeight);
4892  fMixedHarmonicProductOfEventWeights->Fill(1.5,4.5,d2pMultiplicityWeight*d5pMultiplicityWeight);
4893  fMixedHarmonicProductOfEventWeights->Fill(1.5,5.5,d2pMultiplicityWeight*d6pMultiplicityWeight);
4894  fMixedHarmonicProductOfEventWeights->Fill(1.5,6.5,d2pMultiplicityWeight*d7pMultiplicityWeight);
4895  fMixedHarmonicProductOfEventWeights->Fill(1.5,7.5,d2pMultiplicityWeight*d8pMultiplicityWeight);
4896  fMixedHarmonicProductOfEventWeights->Fill(2.5,2.5,d3pMultiplicityWeight*d3pMultiplicityWeight);
4897  fMixedHarmonicProductOfEventWeights->Fill(2.5,3.5,d3pMultiplicityWeight*d4pMultiplicityWeight);
4898  fMixedHarmonicProductOfEventWeights->Fill(2.5,4.5,d3pMultiplicityWeight*d5pMultiplicityWeight);
4899  fMixedHarmonicProductOfEventWeights->Fill(2.5,5.5,d3pMultiplicityWeight*d6pMultiplicityWeight);
4900  fMixedHarmonicProductOfEventWeights->Fill(2.5,6.5,d3pMultiplicityWeight*d7pMultiplicityWeight);
4901  fMixedHarmonicProductOfEventWeights->Fill(2.5,7.5,d3pMultiplicityWeight*d8pMultiplicityWeight);
4902  fMixedHarmonicProductOfEventWeights->Fill(3.5,3.5,d4pMultiplicityWeight*d4pMultiplicityWeight);
4903  fMixedHarmonicProductOfEventWeights->Fill(3.5,4.5,d4pMultiplicityWeight*d5pMultiplicityWeight);
4904  fMixedHarmonicProductOfEventWeights->Fill(3.5,5.5,d4pMultiplicityWeight*d6pMultiplicityWeight);
4905  fMixedHarmonicProductOfEventWeights->Fill(3.5,6.5,d4pMultiplicityWeight*d7pMultiplicityWeight);
4906  fMixedHarmonicProductOfEventWeights->Fill(3.5,7.5,d4pMultiplicityWeight*d8pMultiplicityWeight);
4907  fMixedHarmonicProductOfEventWeights->Fill(4.5,4.5,d5pMultiplicityWeight*d5pMultiplicityWeight);
4908  fMixedHarmonicProductOfEventWeights->Fill(4.5,5.5,d5pMultiplicityWeight*d6pMultiplicityWeight);
4909  fMixedHarmonicProductOfEventWeights->Fill(4.5,6.5,d5pMultiplicityWeight*d7pMultiplicityWeight);
4910  fMixedHarmonicProductOfEventWeights->Fill(4.5,7.5,d5pMultiplicityWeight*d8pMultiplicityWeight);
4911  fMixedHarmonicProductOfEventWeights->Fill(5.5,5.5,d6pMultiplicityWeight*d6pMultiplicityWeight);
4912  fMixedHarmonicProductOfEventWeights->Fill(5.5,6.5,d6pMultiplicityWeight*d7pMultiplicityWeight);
4913  fMixedHarmonicProductOfEventWeights->Fill(5.5,7.5,d6pMultiplicityWeight*d8pMultiplicityWeight);
4914  fMixedHarmonicProductOfEventWeights->Fill(6.5,6.5,d7pMultiplicityWeight*d7pMultiplicityWeight); 
4915  fMixedHarmonicProductOfEventWeights->Fill(6.5,7.5,d7pMultiplicityWeight*d8pMultiplicityWeight); 
4916  fMixedHarmonicProductOfEventWeights->Fill(7.5,7.5,d8pMultiplicityWeight*d8pMultiplicityWeight); 
4917  
4918  // c) Calculate 2-p correlations:
4919  Double_t two1n1n = 0.; // <2>_{1n|1n} = <cos(1n(phi1-phi2))>
4920  Double_t two2n2n = 0.; // <2>_{2n|2n} = <cos(2n(phi1-phi2))>
4921  Double_t two3n3n = 0.; // <2>_{3n|3n} = <cos(3n(phi1-phi2))>
4922  Double_t two4n4n = 0.; // <2>_{4n|4n} = <cos(4n(phi1-phi2))>
4923  Double_t two5n5n = 0.; // <2>_{5n|5n} = <cos(5n(phi1-phi2))>
4924  Double_t two6n6n = 0.; // <2>_{6n|6n} = <cos(6n(phi1-phi2))>
4925  if(dMult>1.)
4926  {
4927   two1n1n = (pow(dReQ1n,2.)+pow(dImQ1n,2.)-dMult)/(dMult*(dMult-1.)); 
4928   two2n2n = (pow(dReQ2n,2.)+pow(dImQ2n,2.)-dMult)/(dMult*(dMult-1.)); 
4929   two3n3n = (pow(dReQ3n,2.)+pow(dImQ3n,2.)-dMult)/(dMult*(dMult-1.)); 
4930   two4n4n = (pow(dReQ4n,2.)+pow(dImQ4n,2.)-dMult)/(dMult*(dMult-1.)); 
4931   two5n5n = (pow(dReQ5n,2.)+pow(dImQ5n,2.)-dMult)/(dMult*(dMult-1.)); 
4932   two6n6n = (pow(dReQ6n,2.)+pow(dImQ6n,2.)-dMult)/(dMult*(dMult-1.));   
4933   f2pCorrelations->Fill(0.5,two1n1n,d2pMultiplicityWeight);
4934   f2pCorrelations->Fill(1.5,two2n2n,d2pMultiplicityWeight);
4935   f2pCorrelations->Fill(2.5,two3n3n,d2pMultiplicityWeight);
4936   f2pCorrelations->Fill(3.5,two4n4n,d2pMultiplicityWeight);
4937   f2pCorrelations->Fill(4.5,two5n5n,d2pMultiplicityWeight);
4938   f2pCorrelations->Fill(5.5,two6n6n,d2pMultiplicityWeight);
4939   allMixedCorrelators[0]=two1n1n;
4940   allMixedCorrelators[1]=two2n2n;
4941   allMixedCorrelators[2]=two3n3n;
4942   allMixedCorrelators[3]=two4n4n;
4943   allMixedCorrelators[4]=two5n5n;
4944   allMixedCorrelators[5]=two6n6n;
4945  } // end of if(dMult>1.)
4946
4947  // d) Calculate 3-p correlations:
4948  //  d1) Two distinct harmonics (3): 
4949  Double_t three2n1n1n = 0.; // <3>_{2n|1n,1n} = <cos(n(2*phi1-1*phi2-1*phi3))>
4950  Double_t three4n2n2n = 0.; // <3>_{4n|2n,2n} = <cos(n(4*phi1-2*phi2-2*phi3))>
4951  Double_t three6n3n3n = 0.; // <3>_{6n|3n,3n} = <cos(n(6*phi1-3*phi2-3*phi3))> 
4952  //  d2) Three distinct harmonics (6): 
4953  Double_t three3n2n1n = 0.; // <3>_{3n|2n,1n} = <cos(n(3*phi1-2*phi2-1*phi3))>
4954  Double_t three4n3n1n = 0.; // <3>_{4n|3n,1n} = <cos(n(4*phi1-3*phi2-1*phi3))> 
4955  Double_t three5n3n2n = 0.; // <3>_{5n|3n,2n} = <cos(n(5*phi1-3*phi2-2*phi3))>
4956  Double_t three5n4n1n = 0.; // <3>_{5n|4n,1n} = <cos(n(5*phi1-4*phi2-1*phi3))> 
4957  Double_t three6n4n2n = 0.; // <3>_{6n|4n,2n} = <cos(n(6*phi1-4*phi2-2*phi3))> 
4958  Double_t three6n5n1n = 0.; // <3>_{6n|5n,1n} = <cos(n(6*phi1-5*phi2-1*phi3))>
4959  if(dMult>2.)
4960  {
4961   three2n1n1n = (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n
4962               - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
4963               / (dMult*(dMult-1.)*(dMult-2.)); 
4964   three4n2n2n = (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n
4965               - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*dMult)
4966               / (dMult*(dMult-1.)*(dMult-2.)); 
4967   three6n3n3n = (reQ6nQ3nstarQ3nstar
4968               - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4969               - (pow(dReQ6n,2.)+pow(dImQ6n,2.))+2.*dMult)
4970               / (dMult*(dMult-1.)*(dMult-2.));  
4971   three3n2n1n = (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
4972               + dImQ3n*dImQ2n*dReQ1n-(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4973               - (pow(dReQ2n,2.)+pow(dImQ2n,2.))-(pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
4974               / (dMult*(dMult-1.)*(dMult-2.));
4975   three4n3n1n = (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n)
4976               - (pow(dReQ4n,2.)+pow(dImQ4n,2.))-(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4977               - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
4978               / (dMult*(dMult-1.)*(dMult-2.));  
4979   three5n3n2n = (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n
4980               + dImQ5n*dImQ2n*dReQ3n-(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4981               - (pow(dReQ3n,2.)+pow(dImQ3n,2.))
4982               - (pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
4983               / (dMult*(dMult-1.)*(dMult-2.)); 
4984   three5n4n1n = (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n
4985               + dImQ5n*dImQ4n*dReQ1n-(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4986               - (pow(dReQ4n,2.)+pow(dImQ4n,2.))
4987               - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
4988               / (dMult*(dMult-1.)*(dMult-2.));
4989   three6n4n2n = (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n
4990               + dImQ6n*dImQ4n*dReQ2n-(pow(dReQ6n,2.)+pow(dImQ6n,2.))
4991               - (pow(dReQ4n,2.)+pow(dImQ4n,2.))-(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
4992               / (dMult*(dMult-1.)*(dMult-2.));
4993   three6n5n1n = (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n
4994               + dImQ6n*dImQ5n*dReQ1n-(pow(dReQ6n,2.)+pow(dImQ6n,2.))
4995               - (pow(dReQ5n,2.)+pow(dImQ5n,2.))
4996               - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
4997               / (dMult*(dMult-1.)*(dMult-2.)); 
4998   f3pCorrelations->Fill(0.5,three2n1n1n,d3pMultiplicityWeight);
4999   f3pCorrelations->Fill(1.5,three4n2n2n,d3pMultiplicityWeight);
5000   f3pCorrelations->Fill(2.5,three6n3n3n,d3pMultiplicityWeight);
5001   //f3pCorrelations->Fill(3.5,0.,d3pMultiplicityWeight); // empty TBI
5002   f3pCorrelations->Fill(4.5,three3n2n1n,d3pMultiplicityWeight);
5003   f3pCorrelations->Fill(5.5,three4n3n1n,d3pMultiplicityWeight);
5004   f3pCorrelations->Fill(6.5,three5n3n2n,d3pMultiplicityWeight);
5005   f3pCorrelations->Fill(7.5,three5n4n1n,d3pMultiplicityWeight);
5006   f3pCorrelations->Fill(8.5,three6n4n2n,d3pMultiplicityWeight);
5007   f3pCorrelations->Fill(9.5,three6n5n1n,d3pMultiplicityWeight);
5008   allMixedCorrelators[6]=three2n1n1n;
5009   allMixedCorrelators[7]=three4n2n2n;
5010   allMixedCorrelators[8]=three6n3n3n;
5011   allMixedCorrelators[9]=three3n2n1n;
5012   allMixedCorrelators[10]=three4n3n1n;
5013   allMixedCorrelators[11]=three5n3n2n;
5014   allMixedCorrelators[12]=three5n4n1n;
5015   allMixedCorrelators[13]=three6n4n2n;
5016   allMixedCorrelators[14]=three6n5n1n;
5017  } // end of if(dMult>2.)
5018
5019  // e) Calculate 4-p correlations:
5020  //  e1) Single harmonic (6): 
5021  Double_t four1n1n1n1n = 0.; // <4>_{1n,1n|1n,1n} = <cos(1*n(phi1+phi2-phi3-phi4))>
5022  Double_t four2n2n2n2n = 0.; // <4>_{2n,2n|2n,2n} = <cos(2*n(phi1+phi2-phi3-phi4))>
5023  Double_t four3n3n3n3n = 0.; // <4>_{3n,3n|3n,3n} = <cos(3*n(phi1+phi2-phi3-phi4))>
5024  Double_t four4n4n4n4n = 0.; // <4>_{4n,4n|4n,4n} = <cos(4*n(phi1+phi2-phi3-phi4))>
5025  Double_t four5n5n5n5n = 0.; // <4>_{5n,5n|5n,5n} = <cos(5*n(phi1+phi2-phi3-phi4))>
5026  Double_t four6n6n6n6n = 0.; // <4>_{6n,6n|6n,6n} = <cos(6*n(phi1+phi2-phi3-phi4))>
5027  //  e2) "Standard candles" (15):
5028  Double_t four2n1n2n1n = 0.; // <4>_{2n,1n|2n,1n} = <cos(n(2*phi1+1*phi2-2*phi3-1*phi4))>
5029  Double_t four3n1n3n1n = 0.; // <4>_{3n,1n|3n,1n} = <cos(n(3*phi1+1*phi2-3*phi3-1*phi4))>
5030  Double_t four3n2n3n2n = 0.; // <4>_{3n,2n|3n,2n} = <cos(n(3*phi1+2*phi2-3*phi3-2*phi4))>
5031  Double_t four4n1n4n1n = 0.; // <4>_{4n,1n|4n,1n} = <cos(n(4*phi1+1*phi2-4*phi3-1*phi4))>
5032  Double_t four4n2n4n2n = 0.; // <4>_{4n,2n|4n,2n} = <cos(n(4*phi1+2*phi2-4*phi3-2*phi4))>
5033  Double_t four4n3n4n3n = 0.; // <4>_{4n,3n|4n,3n} = <cos(n(4*phi1+3*phi2-4*phi3-3*phi4))>
5034  Double_t four5n1n5n1n = 0.; // <4>_{5n,1n|5n,1n} = <cos(n(5*phi1+1*phi2-5*phi3-1*phi4))>
5035  Double_t four5n2n5n2n = 0.; // <4>_{5n,2n|5n,2n} = <cos(n(5*phi1+2*phi2-5*phi3-2*phi4))>
5036  Double_t four5n3n5n3n = 0.; // <4>_{5n,3n|5n,3n} = <cos(n(5*phi1+3*phi2-5*phi3-3*phi4))>
5037  Double_t four5n4n5n4n = 0.; // <4>_{5n,4n|5n,4n} = <cos(n(5*phi1+4*phi2-5*phi3-4*phi4))>
5038  Double_t four6n1n6n1n = 0.; // <4>_{6n,1n|6n,1n} = <cos(n(6*phi1+1*phi2-6*phi3-1*phi4))>
5039  Double_t four6n2n6n2n = 0.; // <4>_{6n,2n|6n,2n} = <cos(n(6*phi1+2*phi2-6*phi3-2*phi4))>
5040  Double_t four6n3n6n3n = 0.; // <4>_{6n,3n|6n,3n} = <cos(n(6*phi1+3*phi2-6*phi3-3*phi4))>
5041  Double_t four6n4n6n4n = 0.; // <4>_{6n,4n|6n,4n} = <cos(n(6*phi1+4*phi2-6*phi3-4*phi4))>
5042  Double_t four6n5n6n5n = 0.; // <4>_{6n,5n|6n,5n} = <cos(n(6*phi1+5*phi2-6*phi3-5*phi4))>
5043  //  e3) Two distinct harmonics (2): 
5044  Double_t four3n1n1n1n = 0.; // <4>_{3n|1n,1n,1n} = <cos(n(3*phi1-1*phi2-1*phi3-1*phi4))>
5045  Double_t four6n2n2n2n = 0.; // <4>_{6n|2n,2n,2n} = <cos(n(6*phi1-2*phi2-2*phi3-2*phi4))>
5046  //  e4) Three distinct harmonics (10): 
5047  Double_t four3n1n2n2n = 0.; // <4>_{3n,1n|2n,2n} = <cos(n(3*phi1+1*phi2-2*phi3-2*phi4))>
5048  Double_t four4n2n1n1n = 0.; // <4>_{4n|2n,1n,1n} = <cos(n(4*phi1-2*phi2-1*phi3-1*phi4))>
5049  Double_t four4n2n3n3n = 0.; // <4>_{4n,2n|3n,3n} = <cos(n(4*phi1+2*phi2-3*phi3-3*phi4))>
5050  Double_t four5n2n2n1n = 0.; // <4>_{5n|2n,2n,1n} = <cos(n(5*phi1-2*phi2-2*phi3-1*phi4))>
5051  Double_t four5n3n1n1n = 0.; // <4>_{5n|3n,1n,1n} = <cos(n(5*phi1-3*phi2-1*phi3-1*phi4))>
5052  Double_t four5n1n3n3n = 0.; // <4>_{5n,1n|3n,3n} = <cos(n(5*phi1+1*phi2-3*phi3-3*phi4))>
5053  Double_t four5n3n4n4n = 0.; // <4>_{5n,3n|4n,4n} = <cos(n(5*phi1+3*phi2-4*phi3-4*phi4))>
5054  Double_t four6n4n1n1n = 0.; // <4>_{6n|4n,1n,1n} = <cos(n(6*phi1-4*phi2-1*phi3-1*phi4))>
5055  Double_t four6n2n4n4n = 0.; // <4>_{6n,2n|4n,4n} = <cos(n(6*phi1+2*phi2-4*phi3-4*phi4))>
5056  Double_t four6n4n5n5n = 0.; // <4>_{6n,4n|5n,5n} = <cos(n(6*phi1+4*phi2-5*phi3-5*phi4))>
5057  //  e5) Four distinct harmonics (8): 
5058  Double_t four4n1n3n2n = 0.; // <4>_{4n,1n|3n,2n} = <cos(n(4*phi1+1*phi2-3*phi3-2*phi4))>
5059  Double_t four5n1n4n2n = 0.; // <4>_{5n,1n|4n,2n} = <cos(n(5*phi1+1*phi2-4*phi3-2*phi4))>
5060  Double_t four5n2n4n3n = 0.; // <4>_{5n,2n|4n,3n} = <cos(n(5*phi1+2*phi2-4*phi3-3*phi4))>
5061  Double_t four6n1n4n3n = 0.; // <4>_{6n,1n|4n,3n} = <cos(n(6*phi1+1*phi2-4*phi3-3*phi4))>
5062  Double_t four6n1n5n2n = 0.; // <4>_{6n,1n|5n,2n} = <cos(n(6*phi1+1*phi2-5*phi3-2*phi4))>
5063  Double_t four6n3n2n1n = 0.; // <4>_{6n|3n,2n,1n} = <cos(n(6*phi1-3*phi2-2*phi3-1*phi4))>
5064  Double_t four6n2n5n3n = 0.; // <4>_{6n,2n|5n,3n} = <cos(n(6*phi1+2*phi2-5*phi3-3*phi4))>
5065  Double_t four6n3n5n4n = 0.; // <4>_{6n,3n|5n,4n} = <cos(n(6*phi1+3*phi2-5*phi3-4*phi4))>
5066  if(dMult>3.)
5067  {
5068   // Single harmonic (6): 
5069   four1n1n1n1n = (2.*dMult*(dMult-3.)+pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ1n,2.)
5070                + pow(dImQ1n,2.))-2.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5071                + (pow(dReQ2n,2.)+pow(dImQ2n,2.)))
5072                / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));     
5073   four2n2n2n2n = (2.*dMult*(dMult-3.)+pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ2n,2.)
5074                + pow(dImQ2n,2.))-2.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5075                + (pow(dReQ4n,2.)+pow(dImQ4n,2.)))
5076                / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.)); 
5077   four3n3n3n3n = (2.*dMult*(dMult-3.)+pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ3n,2.)
5078                + pow(dImQ3n,2.))-2.*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5079                + (pow(dReQ6n,2.)+pow(dImQ6n,2.)))
5080                / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));     
5081   four4n4n4n4n = (2.*dMult*(dMult-3.)+pow((pow(dReQ4n,2.)+pow(dImQ4n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ4n,2.)
5082                + pow(dImQ4n,2.))-2.*(pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
5083                + (pow(dReQ8n,2.)+pow(dImQ8n,2.)))
5084                / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));     
5085   four5n5n5n5n = (2.*dMult*(dMult-3.)+pow((pow(dReQ5n,2.)+pow(dImQ5n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ5n,2.)
5086                + pow(dImQ5n,2.))-2.*(pow(dReQ5n,2.)*dReQ10n+2.*dReQ5n*dImQ5n*dImQ10n-pow(dImQ5n,2.)*dReQ10n)
5087                + (pow(dReQ10n,2.)+pow(dImQ10n,2.)))
5088                / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));    
5089   four6n6n6n6n = (2.*dMult*(dMult-3.)+pow((pow(dReQ6n,2.)+pow(dImQ6n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ6n,2.)
5090                + pow(dImQ6n,2.))-2.*(pow(dReQ6n,2.)*dReQ12n+2.*dReQ6n*dImQ6n*dImQ12n-pow(dImQ6n,2.)*dReQ12n)
5091                + (pow(dReQ12n,2.)+pow(dImQ12n,2.)))
5092                / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));  
5093   // "Standard candles" (15):
5094   four2n1n2n1n = ((pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5095                - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
5096                + dImQ3n*dImQ2n*dReQ1n)-2.*(pow(dReQ1n,2.)*dReQ2n
5097                + 2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n))
5098                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5099                - ((dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5100                + (dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-(pow(dReQ3n,2.)+pow(dImQ3n,2.)))
5101                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5102                + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
5103   four3n1n3n1n = ((pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5104                - 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5105                - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5106                + pow(dReQ4n,2.)+pow(dImQ4n,2.)-(dMult-4.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5107                + pow(dReQ2n,2.)+pow(dImQ2n,2.)-(dMult-4.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5108                + dMult*(dMult-6.))
5109                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5110   four3n2n3n2n = ((pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5111                - 2.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5112                - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5113                + pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)               
5114                - (dMult-4.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
5115                + dMult*(dMult-6.))
5116                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));  
5117   four4n1n4n1n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.)) 
5118                - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ1n*dImQ4n+dImQ5n*dImQ1n*dReQ4n)
5119                - 2.*(dReQ3n*dReQ4n*dReQ1n+dImQ3n*dImQ4n*dReQ1n+dReQ3n*dImQ4n*dImQ1n-dImQ3n*dImQ1n*dReQ4n)
5120                + pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)
5121                - (dMult-4.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
5122                + dMult*(dMult-6.))
5123                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)); 
5124   four4n2n4n2n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5125                - 2.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n
5126                + dImQ6n*dImQ4n*dReQ2n)-2.*(pow(dReQ2n,2.)*dReQ4n
5127                + 2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n))
5128                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5129                - ((dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5130                + (dMult-4.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-(pow(dReQ6n,2.)+pow(dImQ6n,2.)))
5131                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5132                + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
5133   four4n3n4n3n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.)) 
5134                - 2.*(dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ3n*dImQ4n+dImQ7n*dImQ3n*dReQ4n)
5135                - 2.*(dReQ1n*dReQ4n*dReQ3n+dImQ1n*dImQ4n*dReQ3n+dReQ1n*dImQ4n*dImQ3n-dImQ1n*dImQ3n*dReQ4n)
5136                + pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)
5137                - (dMult-4.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
5138                + dMult*(dMult-6.))
5139                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)); 
5140   four5n1n5n1n = (((pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
5141                - 2.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5142                - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5143                + pow(dReQ6n,2.)+pow(dImQ6n,2.)-(dMult-4.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5144                + pow(dReQ4n,2.)+pow(dImQ4n,2.)-(dMult-4.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))+dMult*(dMult-6.))  
5145                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5146   four5n2n5n2n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.)) 
5147                - 2.*(dReQ7n*dReQ5n*dReQ2n-dReQ7n*dImQ5n*dImQ2n+dImQ7n*dReQ2n*dImQ5n+dImQ7n*dImQ2n*dReQ5n)
5148                - 2.*(dReQ3n*dReQ5n*dReQ2n+dImQ3n*dImQ5n*dReQ2n+dReQ3n*dImQ5n*dImQ2n-dImQ3n*dImQ2n*dReQ5n)
5149                + pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)
5150                - (dMult-4.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
5151                + dMult*(dMult-6.))
5152                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)); 
5153   four5n3n5n3n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.)) 
5154                - 2.*(dReQ8n*dReQ5n*dReQ3n-dReQ8n*dImQ5n*dImQ3n+dImQ8n*dReQ3n*dImQ5n+dImQ8n*dImQ3n*dReQ5n)
5155                - 2.*(dReQ2n*dReQ5n*dReQ3n+dImQ2n*dImQ5n*dReQ3n+dReQ2n*dImQ5n*dImQ3n-dImQ2n*dImQ3n*dReQ5n)
5156                + pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)
5157                - (dMult-4.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
5158                + dMult*(dMult-6.))
5159                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)); 
5160   four5n4n5n4n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.)) 
5161                - 2.*(dReQ9n*dReQ5n*dReQ4n-dReQ9n*dImQ5n*dImQ4n+dImQ9n*dReQ4n*dImQ5n+dImQ9n*dImQ4n*dReQ5n)
5162                - 2.*(dReQ1n*dReQ5n*dReQ4n+dImQ1n*dImQ5n*dReQ4n+dReQ1n*dImQ5n*dImQ4n-dImQ1n*dImQ4n*dReQ5n)
5163                + pow(dReQ9n,2.)+pow(dImQ9n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)
5164                - (dMult-4.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.))
5165                + dMult*(dMult-6.))
5166                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)); 
5167   four6n1n6n1n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.)) 
5168                - 2.*(dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ1n*dImQ6n+dImQ7n*dImQ1n*dReQ6n)
5169                - 2.*(dReQ5n*dReQ6n*dReQ1n+dImQ5n*dImQ6n*dReQ1n+dReQ5n*dImQ6n*dImQ1n-dImQ5n*dImQ1n*dReQ6n)
5170                + pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)
5171                - (dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
5172                + dMult*(dMult-6.))
5173                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)); 
5174   four6n2n6n2n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5175                - 2.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
5176                - 2.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5177                + pow(dReQ8n,2.)+pow(dImQ8n,2.)-(dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5178                + pow(dReQ4n,2.)+pow(dImQ4n,2.)-(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5179                + dMult*(dMult-6.))
5180                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5181   four6n3n6n3n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5182                - 2.*(dReQ9n*dReQ6n*dReQ3n-dReQ9n*dImQ6n*dImQ3n+dImQ9n*dReQ6n*dImQ3n
5183                + dImQ9n*dImQ6n*dReQ3n)-2.*(pow(dReQ3n,2.)*dReQ6n
5184                + 2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n))
5185                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5186                - ((dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5187                + (dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-(pow(dReQ9n,2.)+pow(dImQ9n,2.)))
5188                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5189                + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
5190   four6n4n6n4n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5191                - 2.*(dReQ10n*dReQ4n*dReQ6n-dReQ10n*dImQ4n*dImQ6n+dImQ10n*dReQ4n*dImQ6n+dImQ10n*dImQ4n*dReQ6n)
5192                - 2.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5193                + pow(dReQ10n,2.)+pow(dImQ10n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)               
5194                - (dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.))
5195                + dMult*(dMult-6.))
5196                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));  
5197   four6n5n6n5n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.)) 
5198                - 2.*(dReQ11n*dReQ6n*dReQ5n-dReQ11n*dImQ6n*dImQ5n+dImQ11n*dReQ5n*dImQ6n+dImQ11n*dImQ5n*dReQ6n)
5199                - 2.*(dReQ1n*dReQ6n*dReQ5n+dImQ1n*dImQ6n*dReQ5n+dReQ1n*dImQ6n*dImQ5n-dImQ1n*dImQ5n*dReQ6n)
5200                + pow(dReQ11n,2.)+pow(dImQ11n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)
5201                - (dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.))
5202                + dMult*(dMult-6.))
5203                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)); 
5204   // Two distinct harmonics (2):
5205   four3n1n1n1n = (dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
5206                + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3)               
5207                - 3.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5208                - 3.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5209                + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5210                + 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5211                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5212   four6n2n2n2n = (dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
5213                + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3)               
5214                - 3.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5215                - 3.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5216                + 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+3.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5217                + 6.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-6.*dMult)
5218                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5219   // Three distinct harmonics (10): 
5220   four3n1n2n2n = ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n) 
5221                + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n)
5222                - (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5223                - (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5224                - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n))
5225                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5226                - (2.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5227                - (pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5228                - 4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
5229                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5230                - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
5231   four4n2n1n1n = ((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2)) 
5232                + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n)
5233                - 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5234                - (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5235                - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n))
5236                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5237                - ((pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5238                - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5239                - 3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
5240                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5241                - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
5242   four4n2n3n3n = ((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
5243                + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n
5244                - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5245                - (pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5246                - 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5247                - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5248                + (pow(dReQ6n,2.)+pow(dImQ6n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5249                + 2.*(2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5250                + (pow(dReQ1n,2.)+pow(dImQ1n,2.))-3.*dMult))
5251                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));  
5252   four5n2n2n1n = (-pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
5253                + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n 
5254                - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n
5255                - (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5256                - 2.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5257                - (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5258                - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5259                + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+pow(dReQ4n,2.)+pow(dImQ4n,2.)
5260                + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5261                + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5262                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)); 
5263   four5n3n1n1n = (-pow(dImQ1n,2.)*dImQ3n*dImQ5n+dImQ3n*dImQ5n*pow(dReQ1n,2.)
5264                + 2.*dImQ1n*dImQ5n*dReQ1n*dReQ3n-2.*dImQ1n*dImQ3n*dReQ1n*dReQ5n 
5265                - pow(dImQ1n,2.)*dReQ3n*dReQ5n+pow(dReQ1n,2.)*dReQ3n*dReQ5n
5266                - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5267                - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5268                - 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5269                - (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5270                + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5271                + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+pow(dReQ2n,2.)+pow(dImQ2n,2.)
5272                + 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult) 
5273                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));  
5274   four5n1n3n3n = (dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
5275                - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n 
5276                + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n
5277                - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5278                - (pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5279                - 2.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5280                - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5281                + pow(dReQ6n,2.)+pow(dImQ6n,2.)+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5282                + 4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5283                + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)                                  
5284                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5285   four5n3n4n4n = ((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ5n*dReQ3n-dImQ5n*dImQ3n) 
5286                + 2.*dReQ4n*dImQ4n*(dReQ5n*dImQ3n+dImQ5n*dReQ3n)
5287                - (dReQ8n*dReQ3n*dReQ5n-dReQ8n*dImQ3n*dImQ5n+dImQ8n*dReQ3n*dImQ5n+dImQ8n*dImQ3n*dReQ5n)
5288                - (pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
5289                - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5290                - 2.*(dReQ4n*dReQ3n*dReQ1n-dReQ4n*dImQ3n*dImQ1n+dImQ4n*dReQ3n*dImQ1n+dImQ4n*dImQ3n*dReQ1n)
5291                + pow(dReQ8n,2.)+pow(dImQ8n,2.)+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)) 
5292                + 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)) 
5293                + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult) 
5294                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5295   four6n4n1n1n = (-pow(dImQ1n,2.)*dImQ4n*dImQ6n+dImQ4n*dImQ6n*pow(dReQ1n,2.) 
5296                + 2.*dImQ1n*dImQ6n*dReQ1n*dReQ4n-2.*dImQ1n*dImQ4n*dReQ1n*dReQ6n 
5297                - pow(dImQ1n,2.)*dReQ4n*dReQ6n+pow(dReQ1n,2.)*dReQ4n*dReQ6n
5298                - 2.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5299                - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n) 
5300                - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n) 
5301                - (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n) 
5302                + 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)
5303                + pow(dReQ4n,2.)+pow(dImQ4n,2.))+pow(dReQ2n,2.)+pow(dImQ2n,2.)
5304                + 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5305                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5306   four6n2n4n4n = ((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n) 
5307                + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n)
5308                - (pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
5309                - (dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
5310                - 2.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n))
5311                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5312                - (2.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5313                - (pow(dReQ8n,2.)+pow(dImQ8n,2.))-2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5314                - 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)))
5315                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5316                - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
5317   four6n4n5n5n = ((pow(dReQ5n,2.)-pow(dImQ5n,2.))*(dReQ6n*dReQ4n-dImQ6n*dImQ4n) 
5318                + 2.*dReQ5n*dImQ5n*(dReQ6n*dImQ4n+dImQ6n*dReQ4n)
5319                - (dReQ10n*dReQ4n*dReQ6n-dReQ10n*dImQ4n*dImQ6n+dImQ10n*dReQ4n*dImQ6n+dImQ10n*dImQ4n*dReQ6n)
5320                - (pow(dReQ5n,2.)*dReQ10n+2.*dReQ5n*dImQ5n*dImQ10n-pow(dImQ5n,2.)*dReQ10n)
5321                - 2.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5322                - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5323                + pow(dReQ10n,2.)+pow(dImQ10n,2.)+2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5324                + 4.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))              
5325                + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5326                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)); 
5327   // Four distinct harmonics (8): 
5328   four4n1n3n2n = (dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n 
5329                + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
5330                - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n 
5331                + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n 
5332                - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5333                - (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5334                - (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5335                - (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5336                - (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5337                - (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5338                + pow(dReQ5n,2.)+pow(dImQ5n,2.)+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5339                + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5340                + 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult) 
5341                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5342   four5n1n4n2n = (dImQ1n*dImQ2n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ1n*dReQ2n 
5343                + dImQ2n*dImQ5n*dReQ1n*dReQ4n-dImQ1n*dImQ5n*dReQ2n*dReQ4n
5344                - dImQ2n*dImQ4n*dReQ1n*dReQ5n+dImQ1n*dImQ4n*dReQ2n*dReQ5n+dImQ1n*dImQ2n*dReQ4n*dReQ5n
5345                + dReQ1n*dReQ2n*dReQ4n*dReQ5n
5346                - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5347                - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5348                - (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5349                - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5350                - (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5351                - (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5352                + pow(dReQ6n,2.)+pow(dImQ6n,2.)
5353                + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5354                + pow(dReQ3n,2.)+pow(dImQ3n,2.)+2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5355                + 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5356                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5357   four5n2n4n3n = (dImQ2n*dImQ3n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ2n*dReQ3n 
5358                + dImQ3n*dImQ5n*dReQ2n*dReQ4n-dImQ2n*dImQ5n*dReQ3n*dReQ4n
5359                - dImQ3n*dImQ4n*dReQ2n*dReQ5n+dImQ2n*dImQ4n*dReQ3n*dReQ5n 
5360                + dImQ2n*dImQ3n*dReQ4n*dReQ5n+dReQ2n*dReQ3n*dReQ4n*dReQ5n
5361                - (dReQ7n*dReQ5n*dReQ2n-dReQ7n*dImQ5n*dImQ2n+dImQ7n*dReQ5n*dImQ2n+dImQ7n*dImQ5n*dReQ2n)
5362                - (dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n+dImQ7n*dImQ4n*dReQ3n)
5363                - (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5364                - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5365                - (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5366                - (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5367                + pow(dReQ7n,2.)+pow(dImQ7n,2.)+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5368                + 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5369                + 3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+pow(dReQ1n,2.)+pow(dImQ1n,2.)-6.*dMult)
5370                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5371   four6n1n4n3n = (dImQ1n*dImQ3n*dImQ4n*dImQ6n+dImQ4n*dImQ6n*dReQ1n*dReQ3n 
5372                + dImQ3n*dImQ6n*dReQ1n*dReQ4n-dImQ1n*dImQ6n*dReQ3n*dReQ4n
5373                - dImQ3n*dImQ4n*dReQ1n*dReQ6n+dImQ1n*dImQ4n*dReQ3n*dReQ6n+dImQ1n*dImQ3n*dReQ4n*dReQ6n
5374                + dReQ1n*dReQ3n*dReQ4n*dReQ6n
5375                - (dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n+dImQ7n*dImQ6n*dReQ1n)
5376                - (dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n+dImQ7n*dImQ4n*dReQ3n)
5377                - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5378                - (pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5379                - (dReQ4n*dReQ1n*dReQ3n-dReQ4n*dImQ1n*dImQ3n+dImQ4n*dReQ1n*dImQ3n+dImQ4n*dImQ1n*dReQ3n)
5380                - (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5381                + pow(dReQ7n,2.)+pow(dImQ7n,2.)+2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5382                + 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+3.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5383                + pow(dReQ2n,2.)+pow(dImQ2n,2.)+2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5384                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5385   four6n1n5n2n = (dImQ1n*dImQ2n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ1n*dReQ2n 
5386                + dImQ2n*dImQ6n*dReQ1n*dReQ5n-dImQ1n*dImQ6n*dReQ2n*dReQ5n
5387                - dImQ2n*dImQ5n*dReQ1n*dReQ6n+dImQ1n*dImQ5n*dReQ2n*dReQ6n+dImQ1n*dImQ2n*dReQ5n*dReQ6n
5388                + dReQ1n*dReQ2n*dReQ5n*dReQ6n
5389                - (dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n+dImQ7n*dImQ6n*dReQ1n)
5390                - (dReQ7n*dReQ5n*dReQ2n-dReQ7n*dImQ5n*dImQ2n+dImQ7n*dReQ5n*dImQ2n+dImQ7n*dImQ5n*dReQ2n)
5391                - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5392                - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5393                - (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5394                - (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n) 
5395                + pow(dReQ7n,2.)+pow(dImQ7n,2.)+2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5396                + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+pow(dReQ4n,2.)+pow(dImQ4n,2.)
5397                + 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5398                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5399   four6n3n2n1n = (dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
5400                - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
5401                + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n 
5402                + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n
5403                - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5404                - (pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5405                - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5406                - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5407                - (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5408                - (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5409                + 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+pow(dReQ5n,2.)+pow(dImQ5n,2.)
5410                + pow(dReQ4n,2.)+pow(dImQ4n,2.)+3.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5411                + 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5412                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5413   four6n2n5n3n = (dImQ2n*dImQ3n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ2n*dReQ3n 
5414                + dImQ3n*dImQ6n*dReQ2n*dReQ5n-dImQ2n*dImQ6n*dReQ3n*dReQ5n
5415                - dImQ3n*dImQ5n*dReQ2n*dReQ6n+dImQ2n*dImQ5n*dReQ3n*dReQ6n+dImQ2n*dImQ3n*dReQ5n*dReQ6n
5416                + dReQ2n*dReQ3n*dReQ5n*dReQ6n
5417                - (dReQ8n*dReQ6n*dReQ2n-dReQ8n*dImQ6n*dImQ2n+dImQ8n*dReQ6n*dImQ2n+dImQ8n*dImQ6n*dReQ2n)
5418                - (dReQ8n*dReQ5n*dReQ3n-dReQ8n*dImQ5n*dImQ3n+dImQ8n*dReQ5n*dImQ3n+dImQ8n*dImQ5n*dReQ3n)
5419                - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5420                - (pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5421                - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5422                - (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5423                + pow(dReQ8n,2.)+pow(dImQ8n,2.)+2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5424                + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+3.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5425                + 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+pow(dReQ1n,2.)+pow(dImQ1n,2.)-6.*dMult)
5426                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5427   four6n3n5n4n = (dImQ3n*dImQ4n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ3n*dReQ4n 
5428                + dImQ4n*dImQ6n*dReQ3n*dReQ5n-dImQ3n*dImQ6n*dReQ4n*dReQ5n
5429                - dImQ4n*dImQ5n*dReQ3n*dReQ6n+dImQ3n*dImQ5n*dReQ4n*dReQ6n+dImQ3n*dImQ4n*dReQ5n*dReQ6n
5430                + dReQ3n*dReQ4n*dReQ5n*dReQ6n
5431                - (dReQ9n*dReQ6n*dReQ3n-dReQ9n*dImQ6n*dImQ3n+dImQ9n*dReQ6n*dImQ3n+dImQ9n*dImQ6n*dReQ3n)
5432                - (dReQ9n*dReQ5n*dReQ4n-dReQ9n*dImQ5n*dImQ4n+dImQ9n*dReQ5n*dImQ4n+dImQ9n*dImQ5n*dReQ4n)
5433                - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5434                - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5435                - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5436                - (dReQ4n*dReQ3n*dReQ1n-dReQ4n*dImQ3n*dImQ1n+dImQ4n*dReQ3n*dImQ1n+dImQ4n*dImQ3n*dReQ1n)
5437                + pow(dReQ9n,2.)+pow(dImQ9n,2.)+2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5438                + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5439                + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+pow(dReQ2n,2.)+pow(dImQ2n,2.)
5440                + pow(dReQ1n,2.)+pow(dImQ1n,2.)-6.*dMult)
5441                / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5442   f4pCorrelations->Fill(0.5,four1n1n1n1n,d4pMultiplicityWeight);
5443   f4pCorrelations->Fill(1.5,four2n2n2n2n,d4pMultiplicityWeight);
5444   f4pCorrelations->Fill(2.5,four3n3n3n3n,d4pMultiplicityWeight);
5445   f4pCorrelations->Fill(3.5,four4n4n4n4n,d4pMultiplicityWeight);
5446   f4pCorrelations->Fill(4.5,four5n5n5n5n,d4pMultiplicityWeight);
5447   f4pCorrelations->Fill(5.5,four6n6n6n6n,d4pMultiplicityWeight);
5448   //f4pCorrelations->Fill(6.5,0.,d4pMultiplicityWeight); // empty
5449   f4pCorrelations->Fill(7.5,four2n1n2n1n,d4pMultiplicityWeight);
5450   f4pCorrelations->Fill(8.5,four3n1n3n1n,d4pMultiplicityWeight);
5451   f4pCorrelations->Fill(9.5,four3n2n3n2n,d4pMultiplicityWeight);
5452   f4pCorrelations->Fill(10.5,four4n1n4n1n,d4pMultiplicityWeight);
5453   f4pCorrelations->Fill(11.5,four4n2n4n2n,d4pMultiplicityWeight);
5454   f4pCorrelations->Fill(12.5,four4n3n4n3n,d4pMultiplicityWeight);
5455   f4pCorrelations->Fill(13.5,four5n1n5n1n,d4pMultiplicityWeight);
5456   f4pCorrelations->Fill(14.5,four5n2n5n2n,d4pMultiplicityWeight);
5457   f4pCorrelations->Fill(15.5,four5n3n5n3n,d4pMultiplicityWeight);
5458   f4pCorrelations->Fill(16.5,four5n4n5n4n,d4pMultiplicityWeight);
5459   f4pCorrelations->Fill(17.5,four6n1n6n1n,d4pMultiplicityWeight);
5460   f4pCorrelations->Fill(18.5,four6n2n6n2n,d4pMultiplicityWeight);
5461   f4pCorrelations->Fill(19.5,four6n3n6n3n,d4pMultiplicityWeight);
5462   f4pCorrelations->Fill(20.5,four6n4n6n4n,d4pMultiplicityWeight);
5463   f4pCorrelations->Fill(21.5,four6n5n6n5n,d4pMultiplicityWeight);
5464   //f4pCorrelations->Fill(22.5,0.,d4pMultiplicityWeight); // empty
5465   f4pCorrelations->Fill(23.5,four3n1n1n1n,d4pMultiplicityWeight);
5466   f4pCorrelations->Fill(24.5,four6n2n2n2n,d4pMultiplicityWeight);
5467   //f4pCorrelations->Fill(25.5,0.,d4pMultiplicityWeight); // empty
5468   f4pCorrelations->Fill(26.5,four3n1n2n2n,d4pMultiplicityWeight);
5469   f4pCorrelations->Fill(27.5,four4n2n1n1n,d4pMultiplicityWeight);
5470   f4pCorrelations->Fill(28.5,four4n2n3n3n,d4pMultiplicityWeight);
5471   f4pCorrelations->Fill(29.5,four5n2n2n1n,d4pMultiplicityWeight);
5472   f4pCorrelations->Fill(30.5,four5n3n1n1n,d4pMultiplicityWeight);
5473   f4pCorrelations->Fill(31.5,four5n1n3n3n,d4pMultiplicityWeight);
5474   f4pCorrelations->Fill(32.5,four5n3n4n4n,d4pMultiplicityWeight);
5475   f4pCorrelations->Fill(33.5,four6n4n1n1n,d4pMultiplicityWeight);
5476   f4pCorrelations->Fill(34.5,four6n2n4n4n,d4pMultiplicityWeight);
5477   f4pCorrelations->Fill(35.5,four6n4n5n5n,d4pMultiplicityWeight);
5478   //f4pCorrelations->Fill(36.5,0.,d4pMultiplicityWeight); // empty
5479   f4pCorrelations->Fill(37.5,four4n1n3n2n,d4pMultiplicityWeight); 
5480   f4pCorrelations->Fill(38.5,four5n1n4n2n,d4pMultiplicityWeight); 
5481   f4pCorrelations->Fill(39.5,four5n2n4n3n,d4pMultiplicityWeight); 
5482   f4pCorrelations->Fill(40.5,four6n1n4n3n,d4pMultiplicityWeight); 
5483   f4pCorrelations->Fill(41.5,four6n1n5n2n,d4pMultiplicityWeight); 
5484   f4pCorrelations->Fill(42.5,four6n3n2n1n,d4pMultiplicityWeight); 
5485   f4pCorrelations->Fill(43.5,four6n2n5n3n,d4pMultiplicityWeight); 
5486   f4pCorrelations->Fill(44.5,four6n3n5n4n,d4pMultiplicityWeight); 
5487   allMixedCorrelators[15]=four1n1n1n1n;
5488   allMixedCorrelators[16]=four2n2n2n2n;
5489   allMixedCorrelators[17]=four3n3n3n3n;
5490   allMixedCorrelators[18]=four4n4n4n4n;
5491   allMixedCorrelators[19]=four5n5n5n5n;
5492   allMixedCorrelators[20]=four6n6n6n6n;
5493   allMixedCorrelators[21]=four2n1n2n1n;
5494   allMixedCorrelators[22]=four3n1n3n1n;
5495   allMixedCorrelators[23]=four3n2n3n2n;
5496   allMixedCorrelators[24]=four4n1n4n1n;
5497   allMixedCorrelators[25]=four4n2n4n2n;
5498   allMixedCorrelators[26]=four4n3n4n3n;
5499   allMixedCorrelators[27]=four5n1n5n1n;
5500   allMixedCorrelators[28]=four5n2n5n2n;
5501   allMixedCorrelators[29]=four5n3n5n3n;
5502   allMixedCorrelators[30]=four5n4n5n4n;
5503   allMixedCorrelators[31]=four6n1n6n1n;
5504   allMixedCorrelators[32]=four6n2n6n2n;
5505   allMixedCorrelators[33]=four6n3n6n3n;
5506   allMixedCorrelators[34]=four6n4n6n4n;
5507   allMixedCorrelators[35]=four6n5n6n5n;
5508   allMixedCorrelators[36]=four3n1n1n1n;
5509   allMixedCorrelators[37]=four6n2n2n2n;
5510   allMixedCorrelators[38]=four3n1n2n2n;
5511   allMixedCorrelators[39]=four4n2n1n1n;
5512   allMixedCorrelators[40]=four4n2n3n3n;
5513   allMixedCorrelators[41]=four5n2n2n1n;
5514   allMixedCorrelators[42]=four5n3n1n1n;
5515   allMixedCorrelators[43]=four5n1n3n3n;
5516   allMixedCorrelators[44]=four5n3n4n4n;
5517   allMixedCorrelators[45]=four6n4n1n1n;
5518   allMixedCorrelators[46]=four6n2n4n4n;
5519   allMixedCorrelators[47]=four6n4n5n5n;
5520   allMixedCorrelators[48]=four4n1n3n2n;
5521   allMixedCorrelators[49]=four5n1n4n2n;
5522   allMixedCorrelators[50]=four5n2n4n3n;
5523   allMixedCorrelators[51]=four6n1n4n3n;
5524   allMixedCorrelators[52]=four6n1n5n2n;
5525   allMixedCorrelators[53]=four6n3n2n1n;
5526   allMixedCorrelators[54]=four6n2n5n3n;
5527   allMixedCorrelators[55]=four6n3n5n4n;
5528  } // end of if(dMult>3.)
5529
5530  // f) Calculate 5-p correlations:
5531  //  f1) "Standard candles" (30):
5532  Double_t five3n2n3n1n1n = 0.; // <5>_{3n,2n|3n,1n,1n} = <cos(n(3*phi1+2*phi2-3*phi3-1*phi4-1*phi5))>
5533  Double_t five4n1n2n2n1n = 0.; // <5>_{4n,1n|2n,2n,1n} = <cos(n(4*phi1+1*phi2-2*phi3-2*phi4-1*phi5))>
5534  Double_t five4n2n3n2n1n = 0.; // <5>_{4n,2n|3n,2n,1n} = <cos(n(4*phi1+2*phi2-3*phi3-2*phi4-1*phi5))>
5535  Double_t five4n3n3n2n2n = 0.; // <5>_{4n,3n|3n,2n,2n} = <cos(n(4*phi1+3*phi2-3*phi3-2*phi4-2*phi5))>
5536  Double_t five4n2n4n1n1n = 0.; // <5>_{4n,2n|4n,1n,1n} = <cos(n(4*phi1+2*phi2-4*phi3-1*phi4-1*phi5))>
5537  Double_t five4n3n4n2n1n = 0.; // <5>_{4n,3n|4n,2n,1n} = <cos(n(4*phi1+3*phi2-4*phi3-2*phi4-1*phi5))>
5538  Double_t five5n1n3n2n1n = 0.; // <5>_{5n,1n|3n,2n,1n} = <cos(n(5*phi1+1*phi2-3*phi3-2*phi4-1*phi5))>
5539  Double_t five5n2n5n1n1n = 0.; // <5>_{5n,2n|5n,1n,1n} = <cos(n(5*phi1+2*phi2-5*phi3-1*phi4-1*phi5))>
5540  Double_t five5n2n4n2n1n = 0.; // <5>_{5n,2n|4n,2n,1n} = <cos(n(5*phi1+2*phi2-4*phi3-2*phi4-1*phi5))>
5541  Double_t five5n3n4n3n1n = 0.; // <5>_{5n,3n|4n,3n,1n} = <cos(n(5*phi1+3*phi2-4*phi3-3*phi4-1*phi5))>
5542  Double_t five5n4n4n3n2n = 0.; // <5>_{5n,4n|4n,3n,2n} = <cos(n(5*phi1+4*phi2-4*phi3-3*phi4-2*phi5))>
5543  Double_t five5n3n5n2n1n = 0.; // <5>_{5n,3n|5n,2n,1n} = <cos(n(5*phi1+3*phi2-5*phi3-2*phi4-1*phi5))>
5544  Double_t five5n4n5n2n2n = 0.; // <5>_{5n,4n|5n,2n,2n} = <cos(n(5*phi1+4*phi2-5*phi3-2*phi4-2*phi5))>
5545  Double_t five5n4n5n3n1n = 0.; // <5>_{5n,4n|5n,3n,1n} = <cos(n(5*phi1+4*phi2-5*phi3-3*phi4-1*phi5))>
5546  Double_t five6n1n3n3n1n = 0.; // <5>_{6n,1n|3n,3n,1n} = <cos(n(6*phi1+1*phi2-3*phi3-3*phi4-1*phi5))>
5547  Double_t five6n2n3n3n2n = 0.; // <5>_{6n,2n|3n,3n,2n} = <cos(n(6*phi1+2*phi2-3*phi3-3*phi4-2*phi5))>
5548  Double_t five6n1n4n2n1n = 0.; // <5>_{6n,1n|4n,2n,1n} = <cos(n(6*phi1+1*phi2-4*phi3-2*phi4-1*phi5))>
5549  Double_t five6n3n4n3n2n = 0.; // <5>_{6n,3n|4n,3n,2n} = <cos(n(6*phi1+3*phi2-4*phi3-3*phi4-2*phi5))>
5550  Double_t five6n4n4n3n3n = 0.; // <5>_{6n,4n|4n,3n,3n} = <cos(n(6*phi1+4*phi2-4*phi3-3*phi4-3*phi5))>
5551  Double_t five6n2n5n2n1n = 0.; // <5>_{6n,2n|5n,2n,1n} = <cos(n(6*phi1+2*phi2-5*phi3-2*phi4-1*phi5))>
5552  Double_t five6n3n5n3n1n = 0.; // <5>_{6n,3n|5n,3n,1n} = <cos(n(6*phi1+3*phi2-5*phi3-3*phi4-1*phi5))>
5553  Double_t five6n4n5n4n1n = 0.; // <5>_{6n,4n|5n,4n,1n} = <cos(n(6*phi1+4*phi2-5*phi3-4*phi4-1*phi5))>
5554  Double_t five6n5n5n3n3n = 0.; // <5>_{6n,5n|5n,3n,3n} = <cos(n(6*phi1+5*phi2-5*phi3-3*phi4-3*phi5))>
5555  Double_t five6n2n6n1n1n = 0.; // <5>_{6n,2n|6n,1n,1n} = <cos(n(6*phi1+2*phi2-6*phi3-1*phi4-1*phi5))>
5556  Double_t five6n3n6n2n1n = 0.; // <5>_{6n,3n|6n,2n,1n} = <cos(n(6*phi1+3*phi2-6*phi3-2*phi4-1*phi5))>
5557  Double_t five6n4n6n2n2n = 0.; // <5>_{6n,4n|6n,2n,2n} = <cos(n(6*phi1+4*phi2-6*phi3-2*phi4-2*phi5))>
5558  Double_t five6n4n6n3n1n = 0.; // <5>_{6n,4n|6n,3n,1n} = <cos(n(6*phi1+4*phi2-6*phi3-3*phi4-1*phi5))>
5559  Double_t five6n5n5n4n2n = 0.; // <5>_{6n,5n|5n,4n,2n} = <cos(n(6*phi1+5*phi2-5*phi3-4*phi4-2*phi5))>
5560  Double_t five6n5n6n3n2n = 0.; // <5>_{6n,5n|6n,3n,2n} = <cos(n(6*phi1+5*phi2-6*phi3-3*phi4-2*phi5))> // TBI swap with previous
5561  Double_t five6n5n6n4n1n = 0.; // <5>_{6n,5n|6n,4n,1n} = <cos(n(6*phi1+5*phi2-6*phi3-4*phi4-1*phi5))>
5562  //  f2) Two distinct harmonics (9):
5563  Double_t five2n1n1n1n1n = 0.; // <5>_{2n,1n|1n,1n,1n} = <cos(n(2*phi1+1*phi2-1*phi3-1*phi4-1*phi5))>
5564  Double_t five2n2n2n1n1n = 0.; // <5>_{2n,2n|2n,1n,1n} = <cos(n(2*phi1+2*phi2-2*phi3-1*phi4-1*phi5))>
5565  Double_t five3n3n2n2n2n = 0.; // <5>_{3n,3n|2n,2n,2n} = <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-2*phi5))>
5566  Double_t five4n1n1n1n1n = 0.; // <5>_{4n|1n,1n,1n,1n} = <cos(n(4*phi1-1*phi2-1*phi3-1*phi4-1*phi5))>
5567  Double_t five4n2n2n2n2n = 0.; // <5>_{4n,2n|2n,2n,2n} = <cos(n(4*phi1+2*phi2-2*phi3-2*phi4-2*phi5))>
5568  Double_t five4n4n4n2n2n = 0.; // <5>_{4n,4n|4n,2n,2n} = <cos(n(4*phi1+4*phi2-4*phi3-2*phi4-2*phi5))>
5569  Double_t five6n3n3n3n3n = 0.; // <5>_{6n,3n|3n,3n,3n} = <cos(n(6*phi1+3*phi2-3*phi3-3*phi4-3*phi5))>
5570  Double_t five6n6n4n4n4n = 0.; // <5>_{6n,6n|4n,4n,4n} = <cos(n(6*phi1+6*phi2-4*phi3-4*phi4-4*phi5))>
5571  Double_t five6n6n6n3n3n = 0.; // <5>_{6n,6n|6n,3n,3n} = <cos(n(6*phi1+6*phi2-6*phi3-3*phi4-3*phi5))>
5572  //  f3) Three distinct harmonics (30):
5573  Double_t five3n1n2n1n1n = 0.; // <5>_{3n,1n|2n,1n,1n} = <cos(n(3*phi1+1*phi2-2*phi3-1*phi4-1*phi5))>
5574  Double_t five3n2n2n2n1n = 0.; // <5>_{3n,2n|2n,2n,1n} = <cos(n(3*phi1+2*phi2-2*phi3-2*phi4-1*phi5))>
5575  Double_t five3n3n3n2n1n = 0.; // <5>_{3n,3n|3n,2n,1n} = <cos(n(3*phi1+3*phi2-3*phi3-2*phi4-1*phi5))>
5576  Double_t five4n1n3n1n1n = 0.; // <5>_{4n,1n|3n,1n,1n} = <cos(n(4*phi1+1*phi2-3*phi3-1*phi4-1*phi5))>
5577  Double_t five4n1n1n3n3n = 0.; // <5>_{4n,1n,1n|3n,3n} = <cos(n(4*phi1+1*phi2+1*phi3-3*phi4-3*phi5))>
5578  Double_t five4n3n3n3n1n = 0.; // <5>_{4n,3n|3n,3n,1n} = <cos(n(4*phi1+3*phi2-3*phi3-3*phi4-1*phi5))>
5579  Double_t five4n4n3n3n2n = 0.; // <5>_{4n,4n|3n,3n,2n} = <cos(n(4*phi1+4*phi2-3*phi3-3*phi4-2*phi5))>
5580  Double_t five4n4n4n3n1n = 0.; // <5>_{4n,4n|4n,3n,1n} = <cos(n(4*phi1+4*phi2-4*phi3-3*phi4-1*phi5))>
5581  Double_t five5n2n1n1n1n = 0.; // <5>_{5n|2n,1n,1n,1n} = <cos(n(5*phi1-2*phi2-1*phi3-1*phi4-1*phi5))>
5582  Double_t five5n1n2n2n2n = 0.; // <5>_{5n,1n|2n,2n,2n} = <cos(n(5*phi1+1*phi2-2*phi3-2*phi4-2*phi5))>
5583  Double_t five5n2n3n2n2n = 0.; // <5>_{5n,2n|3n,2n,2n} = <cos(n(5*phi1+2*phi2-3*phi3-2*phi4-2*phi5))>
5584  Double_t five5n3n3n3n2n = 0.; // <5>_{5n,3n|3n,3n,2n} = <cos(n(5*phi1+3*phi2-3*phi3-3*phi4-2*phi5))>
5585  Double_t five5n1n4n1n1n = 0.; // <5>_{5n,1n|4n,1n,1n} = <cos(n(5*phi1+1*phi2-4*phi3-1*phi4-1*phi5))>
5586  Double_t five5n4n3n3n3n = 0.; // <5>_{5n,4n|3n,3n,3n} = <cos(n(5*phi1+4*phi2-3*phi3-3*phi4-3*phi5))>
5587  Double_t five5n4n4n4n1n = 0.; // <5>_{5n,4n|4n,4n,1n} = <cos(n(5*phi1+4*phi2-4*phi3-4*phi4-1*phi5))>
5588  Double_t five5n5n4n3n3n = 0.; // <5>_{5n,5n|4n,3n,3n} = <cos(n(5*phi1+5*phi2-4*phi3-3*phi4-3*phi5))>
5589  Double_t five5n5n4n4n2n = 0.; // <5>_{5n,5n|4n,4n,2n} = <cos(n(5*phi1+5*phi2-4*phi3-4*phi4-2*phi5))>
5590  Double_t five5n5n5n3n2n = 0.; // <5>_{5n,5n|5n,3n,2n} = <cos(n(5*phi1+5*phi2-5*phi3-3*phi4-2*phi5))>
5591  Double_t five5n5n5n4n1n = 0.; // <5>_{5n,5n|5n,4n,1n} = <cos(n(5*phi1+5*phi2-5*phi3-4*phi4-1*phi5))>
5592  Double_t five6n2n2n1n1n = 0.; // <5>_{6n|2n,2n,1n,1n} = <cos(n(6*phi1-2*phi2-2*phi3-1*phi4-1*phi5))>
5593  Double_t five6n3n1n1n1n = 0.; // <5>_{6n|3n,1n,1n,1n} = <cos(n(6*phi1-3*phi2-1*phi3-1*phi4-1*phi5))>
5594  Double_t five6n1n1n4n4n = 0.; // <5>_{6n,1n,1n|4n,4n} = <cos(n(6*phi1+1*phi2+1*phi3-4*phi4-4*phi5))>
5595  Double_t five6n1n5n1n1n = 0.; // <5>_{6n,1n|5n,1n,1n} = <cos(n(6*phi1+1*phi2-5*phi3-1*phi4-1*phi5))>
5596  Double_t five6n2n4n2n2n = 0.; // <5>_{6n,2n|4n,2n,2n} = <cos(n(6*phi1+2*phi2-4*phi3-2*phi4-2*phi5))>
5597  Double_t five6n4n4n4n2n = 0.; // <5>_{6n,4n|4n,4n,2n} = <cos(n(6*phi1+4*phi2-4*phi3-4*phi4-2*phi5))>
5598  Double_t five6n2n2n5n5n = 0.; // <5>_{6n,2n,2n|5n,5n} = <cos(n(6*phi1+2*phi2+2*phi3-5*phi4-5*phi5))>
5599  Double_t five6n5n5n5n1n = 0.; // <5>_{6n,5n|5n,5n,1n} = <cos(n(6*phi1+5*phi2-5*phi3-5*phi4-1*phi5))>
5600  Double_t five6n6n5n5n2n = 0.; // <5>_{6n,6n|5n,5n,2n} = <cos(n(6*phi1+6*phi2-5*phi3-5*phi4-2*phi5))>
5601  Double_t five6n6n6n4n2n = 0.; // <5>_{6n,6n|6n,4n,2n} = <cos(n(6*phi1+6*phi2-6*phi3-4*phi4-2*phi5))>
5602  Double_t five6n6n6n5n1n = 0.; // <5>_{6n,6n|6n,5n,1n} = <cos(n(6*phi1+6*phi2-6*phi3-5*phi4-1*phi5))> // TBI swap with the one above
5603  // Four distinct harmonics (11):
5604  Double_t five5n2n3n3n1n = 0.; // <5>_{5n,2n|3n,3n,1n} = <cos(n(5*phi1+2*phi2-3*phi3-3*phi4-1*phi5))>
5605  Double_t five5n1n1n4n3n = 0.; // <5>_{5n,1n,1n|4n,3n} = <cos(n(5*phi1+1*phi2+1*phi3-4*phi4-3*phi5))>
5606  Double_t five5n3n4n2n2n = 0.; // <5>_{5n,3n|4n,2n,2n} = <cos(n(5*phi1+3*phi2-4*phi3-2*phi4-2*phi5))>
5607  Double_t five5n2n1n4n4n = 0.; // <5>_{5n,2n,1n|4n,4n} = <cos(n(5*phi1+2*phi2+1*phi3-4*phi4-4*phi5))>
5608  Double_t five6n1n3n2n2n = 0.; // <5>_{6n,1n|3n,2n,2n} = <cos(n(6*phi1+1*phi2-3*phi3-2*phi4-2*phi5))>
5609  Double_t five6n3n4n4n1n = 0.; // <5>_{6n,3n|4n,4n,1n} = <cos(n(6*phi1+3*phi2-4*phi3-4*phi4-1*phi5))>
5610  Double_t five6n1n1n5n3n = 0.; // <5>_{6n,1n,1n|5n,3n} = <cos(n(6*phi1+1*phi2+1*phi3-5*phi4-3*phi5))>
5611  Double_t five6n3n5n2n2n = 0.; // <5>_{6n,3n|5n,2n,2n} = <cos(n(6*phi1+3*phi2-5*phi3-2*phi4-2*phi5))>
5612  Double_t five6n5n4n4n3n = 0.; // <5>_{6n,5n|4n,4n,3n} = <cos(n(6*phi1+5*phi2-4*phi3-4*phi4-3*phi5))>
5613  Double_t five6n3n1n5n5n = 0.; // <5>_{6n,3n,1n|5n,5n} = <cos(n(6*phi1+3*phi2+1*phi3-5*phi4-5*phi5))>
5614  Double_t five6n6n5n4n3n = 0.; // <5>_{6n,6n|5n,4n,3n} = <cos(n(6*phi1+6*phi2-5*phi3-4*phi4-3*phi5))>
5615  // Five distinct harmonics (3):
5616  Double_t five6n2n4n3n1n = 0.; // <5>_{6n,2n|4n,3n,1n} = <cos(n(6*phi1+2*phi2-4*phi3-3*phi4-1*phi5))>
5617  Double_t five6n2n1n5n4n = 0.; // <5>_{6n,2n,1n|5n,4n} = <cos(n(6*phi1+2*phi2+1*phi3-5*phi4-4*phi5))>
5618  Double_t five6n4n5n3n2n = 0.; // <5>_{6n,4n|5n,3n,2n} = <cos(n(6*phi1+4*phi2-5*phi3-3*phi4-2*phi5))>
5619  if(dMult>4.)
5620  {
5621   five3n2n3n1n1n = (-(pow(dImQ3n,2.)+pow(dReQ3n,2.))
5622                  * (-2.*dImQ1n*dImQ2n*dReQ1n+pow(dImQ1n,2.)*dReQ2n-pow(dReQ1n,2.)*dReQ2n)
5623                  - (-pow(dImQ1n,2.)*dImQ3n*dImQ5n+dImQ3n*dImQ5n*pow(dReQ1n,2.)
5624                  + 2.*dImQ1n*dImQ5n*dReQ1n*dReQ3n-2.*dImQ1n*dImQ3n*dReQ1n*dReQ5n 
5625                  - pow(dImQ1n,2.)*dReQ3n*dReQ5n+pow(dReQ1n,2.)*dReQ3n*dReQ5n)
5626                  - 2.*(dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n 
5627                  + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
5628                  - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n 
5629                  + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
5630                  - (dReQ3n*pow(dReQ1n,3.)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2.)
5631                  + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2.)-dImQ3n*pow(dImQ1n,3.))
5632                  - 2.*((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n) 
5633                  + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5634                  + 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5635                  + 3.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5636                  + 6.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5637                  + 2.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5638                  + 9.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5639                  - (dMult-8.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5640                  - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.)) 
5641                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.)) 
5642                  - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5643                  + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+(dMult-12.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5644                  + 2.*(dMult-9.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.))
5645                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
5646   five4n1n2n2n1n = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))
5647                  * (pow(dReQ2n,2.)*dReQ4n-pow(dImQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n)
5648                  - 2.*(dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n 
5649                  + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
5650                  - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n 
5651                  + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)    
5652                  - 2.*((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2.)-pow(dImQ1n,2.)) 
5653                  + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
5654                  - (-pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
5655                  + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n 
5656                  - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n)
5657                  - ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n) 
5658                  + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5659                  + (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5660                  + 2.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5661                  + 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5662                  + 2.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5663                  + 3.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5664                  + 4.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5665                  + 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5666                  + 6.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5667                  + 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5668                  - (dMult-6.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5669                  - 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5670                  - 4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5671                  - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5672                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5673                  + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5674                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+(dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5675                  + 2.*(dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*dMult*(dMult-12.))
5676                   / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
5677   five4n2n3n2n1n = ((pow(dImQ2n,2.)+pow(dReQ2n,2.))*(dImQ3n*dImQ4n*dReQ1n+dImQ1n*dImQ4n*dReQ3n 
5678                  - dImQ1n*dImQ3n*dReQ4n+dReQ1n*dReQ3n*dReQ4n)
5679                  - (dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
5680                  - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
5681                  + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n 
5682                  + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
5683                  - (dImQ1n*dImQ2n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ1n*dReQ2n 
5684                  + dImQ2n*dImQ5n*dReQ1n*dReQ4n-dImQ1n*dImQ5n*dReQ2n*dReQ4n
5685                  - dImQ2n*dImQ4n*dReQ1n*dReQ5n+dImQ1n*dImQ4n*dReQ2n*dReQ5n 
5686                  + dImQ1n*dImQ2n*dReQ4n*dReQ5n+dReQ1n*dReQ2n*dReQ4n*dReQ5n)
5687                  - ((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
5688                  + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n)
5689                  - (dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n 
5690                  + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
5691                  - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n 
5692                  + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
5693                  - ((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2.)-pow(dImQ1n,2.)) 
5694                  + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
5695                  - ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n) 
5696                  + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5697                  - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5698                  + 3.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5699                  + (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5700                  + pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n
5701                  + dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n
5702                  + 3.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5703                  - (dMult-7.)*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5704                  + 3.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5705                  + 7.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5706                  + 4.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5707                  - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5708                  - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5709                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5710                  + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+(dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5711                  + 2.*(dMult-7.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+(dMult-12.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5712                  - 2.*dMult*(dMult-12.))
5713                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)); 
5714
5715   // *********************************************************************
5716   Double_t reQ7nQ3nstarQ2nstarQ2nstar = (dReQ7n*dReQ3n+dImQ7n*dImQ3n)*(pow(dReQ2n,2)-pow(dImQ2n,2)) 
5717                                       + 2.*dReQ2n*dImQ2n*(dImQ7n*dReQ3n-dReQ7n*dImQ3n); 
5718   Double_t reQ5nQ2nQ4nstarQ3nstar = dImQ2n*dImQ3n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ2n*dReQ3n 
5719                                   + dImQ3n*dImQ5n*dReQ2n*dReQ4n-dImQ2n*dImQ5n*dReQ3n*dReQ4n
5720                                   - dImQ3n*dImQ4n*dReQ2n*dReQ5n+dImQ2n*dImQ4n*dReQ3n*dReQ5n 
5721                                   + dImQ2n*dImQ3n*dReQ4n*dReQ5n+dReQ2n*dReQ3n*dReQ4n*dReQ5n;
5722   Double_t reQ7nQ4nstarQ3nstar = dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n
5723                                + dImQ7n*dImQ4n*dReQ3n; 
5724
5725
5726   Double_t reQ7nQ5nstarQ2nstar = dReQ7n*dReQ5n*dReQ2n-dReQ7n*dImQ5n*dImQ2n+dImQ7n*dReQ5n*dImQ2n
5727                                + dImQ7n*dImQ5n*dReQ2n;
5728
5729   // <5>_{6n,4n|4n,3n,3n}:
5730   Double_t reQ10nQ4nstarQ3nstarQ3nstar = (dReQ10n*dReQ4n+dImQ10n*dImQ4n)*(pow(dReQ3n,2)-pow(dImQ3n,2)) 
5731                                       + 2.*dReQ3n*dImQ3n*(dImQ10n*dReQ4n-dReQ10n*dImQ4n); 
5732   Double_t reQ7nQ3nQ6nstarQ4nstar = dImQ3n*dImQ4n*dImQ6n*dImQ7n+dImQ6n*dImQ7n*dReQ3n*dReQ4n 
5733                                   + dImQ4n*dImQ7n*dReQ3n*dReQ6n-dImQ3n*dImQ7n*dReQ4n*dReQ6n
5734                                   - dImQ4n*dImQ6n*dReQ3n*dReQ7n+dImQ3n*dImQ6n*dReQ4n*dReQ7n 
5735                                   + dImQ3n*dImQ4n*dReQ6n*dReQ7n+dReQ3n*dReQ4n*dReQ6n*dReQ7n;
5736   Double_t reQ10nQ7nstarQ3nstar = dReQ10n*dReQ7n*dReQ3n-dReQ10n*dImQ7n*dImQ3n+dImQ10n*dReQ7n*dImQ3n
5737                                 + dImQ10n*dImQ7n*dReQ3n; 
5738   Double_t reQ10nQ6nstarQ4nstar = dReQ10n*dReQ6n*dReQ4n-dReQ10n*dImQ6n*dImQ4n+dImQ10n*dReQ6n*dImQ4n
5739                                 + dImQ10n*dImQ6n*dReQ4n; 
5740   Double_t reQ6nQ1nQ4nstarQ3nstar = dImQ1n*dImQ3n*dImQ4n*dImQ6n+dImQ4n*dImQ6n*dReQ1n*dReQ3n 
5741                                   + dImQ3n*dImQ6n*dReQ1n*dReQ4n-dImQ1n*dImQ6n*dReQ3n*dReQ4n
5742                                   - dImQ3n*dImQ4n*dReQ1n*dReQ6n+dImQ1n*dImQ4n*dReQ3n*dReQ6n 
5743                                   + dImQ1n*dImQ3n*dReQ4n*dReQ6n+dReQ1n*dReQ3n*dReQ4n*dReQ6n;
5744   Double_t reQ7nQ6nstarQ1nstar = dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n
5745                                + dImQ7n*dImQ6n*dReQ1n;
5746  // <5>_{6n,5n|5n,3n,3n}:
5747  /*Double_t reQ11nQ5nstarQ3nstarQ3nstar = (dReQ11n*dReQ5n+dImQ11n*dImQ5n)*(pow(dReQ3n,2)-pow(dImQ3n,2)) 
5748                                       + 2.*dReQ3n*dImQ3n*(dImQ11n*dReQ5n-dReQ11n*dImQ5n); */
5749  Double_t reQ6nQ2nQ5nstarQ3nstar = dImQ2n*dImQ3n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ2n*dReQ3n 
5750                                  + dImQ3n*dImQ6n*dReQ2n*dReQ5n-dImQ2n*dImQ6n*dReQ3n*dReQ5n
5751                                  - dImQ3n*dImQ5n*dReQ2n*dReQ6n+dImQ2n*dImQ5n*dReQ3n*dReQ6n 
5752                                  + dImQ2n*dImQ3n*dReQ5n*dReQ6n+dReQ2n*dReQ3n*dReQ5n*dReQ6n;
5753  Double_t reQ8nQ3nQ6nstarQ5nstar = dImQ3n*dImQ5n*dImQ6n*dImQ8n+dImQ6n*dImQ8n*dReQ3n*dReQ5n 
5754                                  + dImQ5n*dImQ8n*dReQ3n*dReQ6n-dImQ3n*dImQ8n*dReQ5n*dReQ6n
5755                                  - dImQ5n*dImQ6n*dReQ3n*dReQ8n+dImQ3n*dImQ6n*dReQ5n*dReQ8n 
5756                                  + dImQ3n*dImQ5n*dReQ6n*dReQ8n+dReQ3n*dReQ5n*dReQ6n*dReQ8n;
5757  Double_t reQ11nQ6nstarQ5nstar = dReQ11n*dReQ6n*dReQ5n-dReQ11n*dImQ6n*dImQ5n+dImQ11n*dReQ6n*dImQ5n
5758                                + dImQ11n*dImQ6n*dReQ5n;
5759  Double_t reQ8nQ6nstarQ2nstar = dReQ8n*dReQ6n*dReQ2n-dReQ8n*dImQ6n*dImQ2n+dImQ8n*dReQ6n*dImQ2n
5760                               + dImQ8n*dImQ6n*dReQ2n; 
5761  Double_t reQ11nQ8nstarQ3nstar = dReQ11n*dReQ8n*dReQ3n-dReQ11n*dImQ8n*dImQ3n+dImQ11n*dReQ8n*dImQ3n
5762                                + dImQ11n*dImQ8n*dReQ3n;
5763  Double_t reQ8nQ5nstarQ3nstar = dReQ8n*dReQ5n*dReQ3n-dReQ8n*dImQ5n*dImQ3n+dImQ8n*dReQ5n*dImQ3n
5764                               + dImQ8n*dImQ5n*dReQ3n; 
5765  // <5>_{5n,2n|5n,1n,1n}
5766  Double_t reQ7nQ5nstarQ1nstarQ1nstar = (dReQ7n*dReQ5n+dImQ7n*dImQ5n)*(pow(dReQ1n,2)-pow(dImQ1n,2)) 
5767                                       + 2.*dReQ1n*dImQ1n*(dImQ7n*dReQ5n-dReQ7n*dImQ5n); 
5768  Double_t reQ6nQ1nQ5nstarQ2nstar = dImQ1n*dImQ2n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ1n*dReQ2n 
5769                                  + dImQ2n*dImQ6n*dReQ1n*dReQ5n-dImQ1n*dImQ6n*dReQ2n*dReQ5n
5770                                  - dImQ2n*dImQ5n*dReQ1n*dReQ6n+dImQ1n*dImQ5n*dReQ2n*dReQ6n 
5771                                  + dImQ1n*dImQ2n*dReQ5n*dReQ6n+dReQ1n*dReQ2n*dReQ5n*dReQ6n;
5772  // <5>_{5n,4n|5n,2n,2n}
5773  Double_t reQ9nQ5nstarQ2nstarQ2nstar = (dReQ9n*dReQ5n+dImQ9n*dImQ5n)*(pow(dReQ2n,2)-pow(dImQ2n,2)) 
5774                                      + 2.*dReQ2n*dImQ2n*(dImQ9n*dReQ5n-dReQ9n*dImQ5n);
5775  Double_t reQ7nQ2nQ5nstarQ4nstar = dImQ2n*dImQ4n*dImQ5n*dImQ7n+dImQ5n*dImQ7n*dReQ2n*dReQ4n 
5776                                  + dImQ4n*dImQ7n*dReQ2n*dReQ5n-dImQ2n*dImQ7n*dReQ4n*dReQ5n
5777                                  - dImQ4n*dImQ5n*dReQ2n*dReQ7n+dImQ2n*dImQ5n*dReQ4n*dReQ7n 
5778                                  + dImQ2n*dImQ4n*dReQ5n*dReQ7n+dReQ2n*dReQ4n*dReQ5n*dReQ7n;
5779  Double_t reQ9nQ5nstarQ4nstar = dReQ9n*dReQ5n*dReQ4n-dReQ9n*dImQ5n*dImQ4n+dImQ9n*dReQ5n*dImQ4n
5780                               + dImQ9n*dImQ5n*dReQ4n; 
5781  Double_t reQ9nQ7nstarQ2nstar = dReQ9n*dReQ7n*dReQ2n-dReQ9n*dImQ7n*dImQ2n+dImQ9n*dReQ7n*dImQ2n
5782                               + dImQ9n*dImQ7n*dReQ2n; 
5783  // <5>_{6n,2n|6n,1n,1n}
5784  Double_t reQ8nQ6nstarQ1nstarQ1nstar = (dReQ8n*dReQ6n+dImQ8n*dImQ6n)*(pow(dReQ1n,2)-pow(dImQ1n,2)) 
5785                                      + 2.*dReQ1n*dImQ1n*(dImQ8n*dReQ6n-dReQ8n*dImQ6n);
5786  Double_t reQ7nQ1nQ6nstarQ2nstar = dImQ1n*dImQ2n*dImQ6n*dImQ7n+dImQ6n*dImQ7n*dReQ1n*dReQ2n 
5787                                  + dImQ2n*dImQ7n*dReQ1n*dReQ6n-dImQ1n*dImQ7n*dReQ2n*dReQ6n
5788                                  - dImQ2n*dImQ6n*dReQ1n*dReQ7n+dImQ1n*dImQ6n*dReQ2n*dReQ7n 
5789                                  + dImQ1n*dImQ2n*dReQ6n*dReQ7n+dReQ1n*dReQ2n*dReQ6n*dReQ7n;
5790  Double_t reQ8nQ7nstarQ1nstar = dReQ8n*dReQ7n*dReQ1n-dReQ8n*dImQ7n*dImQ1n+dImQ8n*dReQ7n*dImQ1n
5791                               + dImQ8n*dImQ7n*dReQ1n;
5792  // <5>_{5n,2n|4n,2n,1n}
5793  Double_t reQ5nQ2nQ4nstarQ2nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
5794                                         * (dReQ1n*dReQ4n*dReQ5n-dReQ5n*dImQ1n*dImQ4n 
5795                                         + dReQ4n*dImQ1n*dImQ5n+dReQ1n*dImQ4n*dImQ5n);
5796  Double_t reQ7nQ4nstarQ2nstarQ1nstar = dReQ1n*dReQ2n*dReQ4n*dReQ7n-dReQ4n*dReQ7n*dImQ1n*dImQ2n 
5797                                      - dReQ2n*dReQ7n*dImQ1n*dImQ4n-dReQ1n*dReQ7n*dImQ2n*dImQ4n 
5798                                      + dReQ2n*dReQ4n*dImQ1n*dImQ7n+dReQ1n*dReQ4n*dImQ2n*dImQ7n 
5799                                      + dReQ1n*dReQ2n*dImQ4n*dImQ7n-dImQ1n*dImQ2n*dImQ4n*dImQ7n;
5800  // <5>_{4n,3n|4n,2n,1n}:
5801  Double_t reQ4nQ3nQ4nstarQ2nstarQ1nstar = (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n 
5802                                         + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n) 
5803                                         * (pow(dReQ4n,2.)+pow(dImQ4n,2.));        
5804  /*
5805  Double_t reQ4nQ1nQ3nstarQ2nstar = dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n 
5806                                  + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
5807                                  - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n 
5808                                  + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n;
5809  */
5810  // <5>_{5n,3n|4n,3n,1n}:
5811  Double_t reQ5nQ3nQ4nstarQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))
5812                                         * (dReQ1n*dReQ4n*dReQ5n-dReQ5n*dImQ1n*dImQ4n 
5813                                         + dReQ4n*dImQ1n*dImQ5n+dReQ1n*dImQ4n*dImQ5n);
5814  Double_t reQ5nQ3nQ4nstarQ4nstar = dReQ3n*pow(dReQ4n,2.)*dReQ5n+2.*dReQ4n*dReQ5n*dImQ3n*dImQ4n 
5815                                  - dReQ3n*dReQ5n*pow(dImQ4n,2.)-pow(dReQ4n,2.)*dImQ3n*dImQ5n
5816                                  + 2.*dReQ3n*dReQ4n*dImQ4n*dImQ5n+dImQ3n*pow(dImQ4n,2.)*dImQ5n;
5817  Double_t reQ7nQ1nQ5nstarQ3nstar = dImQ1n*dImQ3n*dImQ5n*dImQ7n+dImQ5n*dImQ7n*dReQ1n*dReQ3n 
5818                                  + dImQ3n*dImQ7n*dReQ1n*dReQ5n-dImQ1n*dImQ7n*dReQ3n*dReQ5n
5819                                  - dImQ3n*dImQ5n*dReQ1n*dReQ7n+dImQ1n*dImQ5n*dReQ3n*dReQ7n 
5820                                  + dImQ1n*dImQ3n*dReQ5n*dReQ7n+dReQ1n*dReQ3n*dReQ5n*dReQ7n;             
5821  Double_t reQ8nQ4nstarQ3nstarQ1nstar = dReQ1n*dReQ3n*dReQ4n*dReQ8n-dReQ4n*dReQ8n*dImQ1n*dImQ3n 
5822                                      - dReQ3n*dReQ8n*dImQ1n*dImQ4n-dReQ1n*dReQ8n*dImQ3n*dImQ4n 
5823                                      + dReQ3n*dReQ4n*dImQ1n*dImQ8n+dReQ1n*dReQ4n*dImQ3n*dImQ8n 
5824                                      + dReQ1n*dReQ3n*dImQ4n*dImQ8n-dImQ1n*dImQ3n*dImQ4n*dImQ8n;
5825  Double_t reQ8nQ4nstarQ4nstar = pow(dReQ4n,2.)*dReQ8n-dReQ8n*pow(dImQ4n,2.)+2.*dReQ4n*dImQ4n*dImQ8n;
5826  // <5>_{5n,4n|4n,3n,2n}:
5827  Double_t reQ5nQ4nQ4nstarQ3nstarQ2nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))
5828                                         * (dReQ2n*dReQ3n*dReQ5n-dReQ5n*dImQ2n*dImQ3n 
5829                                         + dReQ3n*dImQ2n*dImQ5n+dReQ2n*dImQ3n*dImQ5n);
5830  Double_t reQ6nQ3nQ5nstarQ4nstar = dImQ4n*dImQ3n*dImQ6n*dImQ5n+dImQ6n*dImQ5n*dReQ4n*dReQ3n 
5831                                  + dImQ3n*dImQ5n*dReQ4n*dReQ6n-dImQ4n*dImQ5n*dReQ3n*dReQ6n
5832                                  - dImQ3n*dImQ6n*dReQ4n*dReQ5n+dImQ4n*dImQ6n*dReQ3n*dReQ5n 
5833                                  + dImQ4n*dImQ3n*dReQ6n*dReQ5n+dReQ4n*dReQ3n*dReQ6n*dReQ5n;
5834  Double_t reQ9nQ4nstarQ3nstarQ2nstar = dReQ2n*dReQ3n*dReQ4n*dReQ9n-dReQ4n*dReQ9n*dImQ2n*dImQ3n 
5835                                      - dReQ3n*dReQ9n*dImQ2n*dImQ4n-dReQ2n*dReQ9n*dImQ3n*dImQ4n 
5836                                      + dReQ3n*dReQ4n*dImQ2n*dImQ9n+dReQ2n*dReQ4n*dImQ3n*dImQ9n 
5837                                      + dReQ2n*dReQ3n*dImQ4n*dImQ9n-dImQ2n*dImQ3n*dImQ4n*dImQ9n;   
5838  Double_t reQ9nQ6nstarQ3nstar = dReQ9n*dReQ6n*dReQ3n-dReQ9n*dImQ6n*dImQ3n+dImQ9n*dReQ6n*dImQ3n
5839                               + dImQ9n*dImQ6n*dReQ3n; 
5840  // <5>_{5n,3n|5n,2n,1n}:
5841  Double_t reQ5nQ3nQ5nstarQ2nstarQ1nstar = (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n 
5842                                         + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n) 
5843                                         * (pow(dReQ5n,2.)+pow(dImQ5n,2.));
5844  Double_t reQ8nQ5nstarQ2nstarQ1nstar = dReQ1n*dReQ2n*dReQ5n*dReQ8n-dReQ5n*dReQ8n*dImQ1n*dImQ2n 
5845                                      - dReQ2n*dReQ8n*dImQ1n*dImQ5n-dReQ1n*dReQ8n*dImQ2n*dImQ5n 
5846                                      + dReQ2n*dReQ5n*dImQ1n*dImQ8n+dReQ1n*dReQ5n*dImQ2n*dImQ8n 
5847                                      + dReQ1n*dReQ2n*dImQ5n*dImQ8n-dImQ1n*dImQ2n*dImQ5n*dImQ8n;
5848  // <5>_{5n,4n|5n,3n,1n}:
5849  Double_t reQ5nQ4nQ5nstarQ3nstarQ1nstar = (dReQ1n*dReQ3n*dReQ4n-dReQ4n*dImQ1n*dImQ3n 
5850                                         + dReQ3n*dImQ1n*dImQ4n+dReQ1n*dImQ3n*dImQ4n) 
5851                                         * (pow(dReQ5n,2.)+pow(dImQ5n,2.));
5852  Double_t reQ8nQ1nQ5nstarQ4nstar = dImQ4n*dImQ1n*dImQ8n*dImQ5n+dImQ8n*dImQ5n*dReQ4n*dReQ1n 
5853                                  + dImQ1n*dImQ5n*dReQ4n*dReQ8n-dImQ4n*dImQ5n*dReQ1n*dReQ8n
5854                                  - dImQ1n*dImQ8n*dReQ4n*dReQ5n+dImQ4n*dImQ8n*dReQ1n*dReQ5n 
5855                                  + dImQ4n*dImQ1n*dReQ8n*dReQ5n+dReQ4n*dReQ1n*dReQ8n*dReQ5n;                      
5856  Double_t reQ9nQ5nstarQ3nstarQ1nstar = dReQ1n*dReQ3n*dReQ5n*dReQ9n-dReQ5n*dReQ9n*dImQ1n*dImQ3n 
5857                                      - dReQ3n*dReQ9n*dImQ1n*dImQ5n-dReQ1n*dReQ9n*dImQ3n*dImQ5n 
5858                                      + dReQ3n*dReQ5n*dImQ1n*dImQ9n+dReQ1n*dReQ5n*dImQ3n*dImQ9n 
5859                                      + dReQ1n*dReQ3n*dImQ5n*dImQ9n-dImQ1n*dImQ3n*dImQ5n*dImQ9n;
5860  Double_t reQ9nQ8nstarQ1nstar = dReQ9n*dReQ8n*dReQ1n-dReQ9n*dImQ8n*dImQ1n+dImQ9n*dReQ8n*dImQ1n
5861                               + dImQ9n*dImQ8n*dReQ1n; 
5862  // <5>_{6n,1n|4n,2n,1n}:
5863  Double_t reQ6nQ1nQ4nstarQ2nstarQ1nstar = (dReQ2n*dReQ4n*dReQ6n-dReQ6n*dImQ2n*dImQ4n 
5864                                         + dReQ4n*dImQ2n*dImQ6n+dReQ2n*dImQ4n*dImQ6n) 
5865                                         * (pow(dReQ1n,2.)+pow(dImQ1n,2.));
5866  // <5>_{6n,3n|4n,3n,2n}:
5867  Double_t reQ6nQ3nQ4nstarQ3nstarQ2nstar = (dReQ2n*dReQ4n*dReQ6n-dReQ6n*dImQ2n*dImQ4n 
5868                                         + dReQ4n*dImQ2n*dImQ6n+dReQ2n*dImQ4n*dImQ6n) 
5869                                         * (pow(dReQ3n,2.)+pow(dImQ3n,2.));
5870  Double_t reQ7nQ2nQ6nstarQ3nstar = dImQ3n*dImQ2n*dImQ7n*dImQ6n+dImQ7n*dImQ6n*dReQ3n*dReQ2n 
5871                                  + dImQ2n*dImQ6n*dReQ3n*dReQ7n-dImQ3n*dImQ6n*dReQ2n*dReQ7n
5872                                  - dImQ2n*dImQ7n*dReQ3n*dReQ6n+dImQ3n*dImQ7n*dReQ2n*dReQ6n 
5873                                  + dImQ3n*dImQ2n*dReQ7n*dReQ6n+dReQ3n*dReQ2n*dReQ7n*dReQ6n;                      
5874  // <5>_{6n,2n|5n,2n,1n}:
5875  Double_t reQ6nQ2nQ5nstarQ2nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
5876                                         * (dReQ1n*dReQ5n*dReQ6n-dReQ6n*dImQ1n*dImQ5n 
5877                                         + dReQ5n*dImQ1n*dImQ6n+dReQ1n*dImQ5n*dImQ6n);
5878  // <5>_{6n,3n|5n,3n,1n}:
5879  Double_t reQ6nQ3nQ5nstarQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))
5880                                         * (dReQ1n*dReQ5n*dReQ6n-dReQ6n*dImQ1n*dImQ5n 
5881                                         + dReQ5n*dImQ1n*dImQ6n+dReQ1n*dImQ5n*dImQ6n);
5882  Double_t reQ8nQ1nQ6nstarQ3nstar = dImQ3n*dImQ1n*dImQ8n*dImQ6n+dImQ8n*dImQ6n*dReQ3n*dReQ1n 
5883                                  + dImQ1n*dImQ6n*dReQ3n*dReQ8n-dImQ3n*dImQ6n*dReQ1n*dReQ8n
5884                                  - dImQ1n*dImQ8n*dReQ3n*dReQ6n+dImQ3n*dImQ8n*dReQ1n*dReQ6n 
5885                                  + dImQ3n*dImQ1n*dReQ8n*dReQ6n+dReQ3n*dReQ1n*dReQ8n*dReQ6n;                      
5886  // <5>_{6n,4n|5n,4n,1n}:
5887  Double_t reQ6nQ4nQ5nstarQ4nstarQ1nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))
5888                                         * (dReQ1n*dReQ5n*dReQ6n-dReQ6n*dImQ1n*dImQ5n 
5889                                         + dReQ5n*dImQ1n*dImQ6n+dReQ1n*dImQ5n*dImQ6n);
5890  Double_t reQ6nQ4nQ5nstarQ5nstar = dReQ4n*pow(dReQ5n,2.)*dReQ6n+2.*dReQ5n*dReQ6n*dImQ4n*dImQ5n 
5891                                  - dReQ4n*dReQ6n*pow(dImQ5n,2.)-pow(dReQ5n,2.)*dImQ4n*dImQ6n
5892                                  + 2.*dReQ4n*dReQ5n*dImQ5n*dImQ6n+dImQ4n*pow(dImQ5n,2.)*dImQ6n;
5893  Double_t reQ9nQ1nQ6nstarQ4nstar = dImQ4n*dImQ1n*dImQ9n*dImQ6n+dImQ9n*dImQ6n*dReQ4n*dReQ1n 
5894                                  + dImQ1n*dImQ6n*dReQ4n*dReQ9n-dImQ4n*dImQ6n*dReQ1n*dReQ9n
5895                                  - dImQ1n*dImQ9n*dReQ4n*dReQ6n+dImQ4n*dImQ9n*dReQ1n*dReQ6n 
5896                                  + dImQ4n*dImQ1n*dReQ9n*dReQ6n+dReQ4n*dReQ1n*dReQ9n*dReQ6n;
5897  Double_t reQ10nQ5nstarQ4nstarQ1nstar = dReQ1n*dReQ4n*dReQ5n*dReQ10n-dReQ5n*dReQ10n*dImQ1n*dImQ4n 
5898                                       - dReQ4n*dReQ10n*dImQ1n*dImQ5n-dReQ1n*dReQ10n*dImQ4n*dImQ5n 
5899                                       + dReQ4n*dReQ5n*dImQ1n*dImQ10n+dReQ1n*dReQ5n*dImQ4n*dImQ10n 
5900                                       + dReQ1n*dReQ4n*dImQ5n*dImQ10n-dImQ1n*dImQ4n*dImQ5n*dImQ10n;
5901  Double_t reQ10nQ9nstarQ1nstar = dReQ10n*dReQ9n*dReQ1n-dReQ10n*dImQ9n*dImQ1n+dImQ10n*dReQ9n*dImQ1n
5902                                + dImQ10n*dImQ9n*dReQ1n;
5903  Double_t reQ10nQ5nstarQ5nstar = pow(dReQ5n,2.)*dReQ10n-dReQ10n*pow(dImQ5n,2.)+2.*dReQ5n*dImQ5n*dImQ10n;
5904  // <5>_{6n,3n|6n,2n,1n}:
5905  Double_t reQ6nQ3nQ6nstarQ2nstarQ1nstar = (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n 
5906                                         + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n) 
5907                                         * (pow(dReQ6n,2.)+pow(dImQ6n,2.));
5908  Double_t reQ9nQ6nstarQ2nstarQ1nstar = dReQ1n*dReQ2n*dReQ6n*dReQ9n-dReQ6n*dReQ9n*dImQ1n*dImQ2n 
5909                                      - dReQ2n*dReQ9n*dImQ1n*dImQ6n-dReQ1n*dReQ9n*dImQ2n*dImQ6n 
5910                                      + dReQ2n*dReQ6n*dImQ1n*dImQ9n+dReQ1n*dReQ6n*dImQ2n*dImQ9n 
5911                                      + dReQ1n*dReQ2n*dImQ6n*dImQ9n-dImQ1n*dImQ2n*dImQ6n*dImQ9n;
5912  // <5>_{6n,4n|6n,3n,1n}:
5913  Double_t reQ6nQ4nQ6nstarQ3nstarQ1nstar = (dReQ1n*dReQ3n*dReQ4n-dReQ4n*dImQ1n*dImQ3n 
5914                                         + dReQ3n*dImQ1n*dImQ4n+dReQ1n*dImQ3n*dImQ4n) 
5915                                         * (pow(dReQ6n,2.)+pow(dImQ6n,2.));
5916  Double_t reQ10nQ6nstarQ3nstarQ1nstar = dReQ1n*dReQ3n*dReQ6n*dReQ10n-dReQ6n*dReQ10n*dImQ1n*dImQ3n 
5917                                       - dReQ3n*dReQ10n*dImQ1n*dImQ6n-dReQ1n*dReQ10n*dImQ3n*dImQ6n 
5918                                       + dReQ3n*dReQ6n*dImQ1n*dImQ10n+dReQ1n*dReQ6n*dImQ3n*dImQ10n 
5919                                       + dReQ1n*dReQ3n*dImQ6n*dImQ10n-dImQ1n*dImQ3n*dImQ6n*dImQ10n;
5920  // <5>_{6n,5n|5n,4n,2n}:
5921  Double_t reQ6nQ5nQ5nstarQ4nstarQ2nstar = (dReQ2n*dReQ4n*dReQ6n-dReQ6n*dImQ2n*dImQ4n 
5922                                         + dReQ4n*dImQ2n*dImQ6n+dReQ2n*dImQ4n*dImQ6n) 
5923                                         * (pow(dReQ5n,2.)+pow(dImQ5n,2.));
5924  Double_t reQ7nQ4nQ6nstarQ5nstar = dImQ5n*dImQ4n*dImQ7n*dImQ6n+dImQ7n*dImQ6n*dReQ5n*dReQ4n 
5925                                  + dImQ4n*dImQ6n*dReQ5n*dReQ7n-dImQ5n*dImQ6n*dReQ4n*dReQ7n
5926                                  - dImQ4n*dImQ7n*dReQ5n*dReQ6n+dImQ5n*dImQ7n*dReQ4n*dReQ6n 
5927                                  + dImQ5n*dImQ4n*dReQ7n*dReQ6n+dReQ5n*dReQ4n*dReQ7n*dReQ6n;
5928  Double_t reQ9nQ2nQ6nstarQ5nstar = dImQ5n*dImQ2n*dImQ9n*dImQ6n+dImQ9n*dImQ6n*dReQ5n*dReQ2n 
5929                                  + dImQ2n*dImQ6n*dReQ5n*dReQ9n-dImQ5n*dImQ6n*dReQ2n*dReQ9n
5930                                  - dImQ2n*dImQ9n*dReQ5n*dReQ6n+dImQ5n*dImQ9n*dReQ2n*dReQ6n 
5931                                  + dImQ5n*dImQ2n*dReQ9n*dReQ6n+dReQ5n*dReQ2n*dReQ9n*dReQ6n;
5932  Double_t reQ11nQ5nstarQ4nstarQ2nstar = dReQ2n*dReQ4n*dReQ5n*dReQ11n-dReQ5n*dReQ11n*dImQ2n*dImQ4n 
5933                                       - dReQ4n*dReQ11n*dImQ2n*dImQ5n-dReQ2n*dReQ11n*dImQ4n*dImQ5n 
5934                                       + dReQ4n*dReQ5n*dImQ2n*dImQ11n+dReQ2n*dReQ5n*dImQ4n*dImQ11n 
5935                                       + dReQ2n*dReQ4n*dImQ5n*dImQ11n-dImQ2n*dImQ4n*dImQ5n*dImQ11n;
5936  Double_t reQ11nQ9nstarQ2nstar = dReQ11n*dReQ9n*dReQ2n-dReQ11n*dImQ9n*dImQ2n+dImQ11n*dReQ9n*dImQ2n
5937                                + dImQ11n*dImQ9n*dReQ2n;
5938  Double_t reQ11nQ7nstarQ4nstar = dReQ11n*dReQ7n*dReQ4n-dReQ11n*dImQ7n*dImQ4n+dImQ11n*dReQ7n*dImQ4n
5939                                + dImQ11n*dImQ7n*dReQ4n;
5940  // <5>_{6n,5n|6n,3n,2n}:
5941  Double_t reQ6nQ5nQ6nstarQ3nstarQ2nstar = (dReQ2n*dReQ3n*dReQ5n-dReQ5n*dImQ2n*dImQ3n 
5942                                         + dReQ3n*dImQ2n*dImQ5n+dReQ2n*dImQ3n*dImQ5n) 
5943                                         * (pow(dReQ6n,2.)+pow(dImQ6n,2.));
5944  Double_t reQ11nQ6nstarQ3nstarQ2nstar = dReQ2n*dReQ3n*dReQ6n*dReQ11n-dReQ6n*dReQ11n*dImQ2n*dImQ3n 
5945                                       - dReQ3n*dReQ11n*dImQ2n*dImQ6n-dReQ2n*dReQ11n*dImQ3n*dImQ6n 
5946                                       + dReQ3n*dReQ6n*dImQ2n*dImQ11n+dReQ2n*dReQ6n*dImQ3n*dImQ11n 
5947                                       + dReQ2n*dReQ3n*dImQ6n*dImQ11n-dImQ2n*dImQ3n*dImQ6n*dImQ11n;
5948  // <5>_{6n,5n|6n,4n,1n}:
5949  Double_t reQ6nQ5nQ6nstarQ4nstarQ1nstar = (dReQ1n*dReQ4n*dReQ5n-dReQ5n*dImQ1n*dImQ4n 
5950                                         + dReQ4n*dImQ1n*dImQ5n+dReQ1n*dImQ4n*dImQ5n) 
5951                                         * (pow(dReQ6n,2.)+pow(dImQ6n,2.));
5952  Double_t reQ10nQ1nQ6nstarQ5nstar = dImQ5n*dImQ1n*dImQ10n*dImQ6n+dImQ10n*dImQ6n*dReQ5n*dReQ1n 
5953                                   + dImQ1n*dImQ6n*dReQ5n*dReQ10n-dImQ5n*dImQ6n*dReQ1n*dReQ10n
5954                                   - dImQ1n*dImQ10n*dReQ5n*dReQ6n+dImQ5n*dImQ10n*dReQ1n*dReQ6n 
5955                                   + dImQ5n*dImQ1n*dReQ10n*dReQ6n+dReQ5n*dReQ1n*dReQ10n*dReQ6n;
5956  Double_t reQ11nQ10nstarQ1nstar = dReQ11n*dReQ10n*dReQ1n-dReQ11n*dImQ10n*dImQ1n+dImQ11n*dReQ10n*dImQ1n
5957                                 + dImQ11n*dImQ10n*dReQ1n;
5958  Double_t reQ11nQ6nstarQ4nstarQ1nstar = dReQ1n*dReQ4n*dReQ6n*dReQ11n-dReQ6n*dReQ11n*dImQ1n*dImQ4n 
5959                                       - dReQ4n*dReQ11n*dImQ1n*dImQ6n-dReQ1n*dReQ11n*dImQ4n*dImQ6n 
5960                                       + dReQ4n*dReQ6n*dImQ1n*dImQ11n+dReQ1n*dReQ6n*dImQ4n*dImQ11n 
5961                                       + dReQ1n*dReQ4n*dImQ6n*dImQ11n-dImQ1n*dImQ4n*dImQ6n*dImQ11n;
5962  // <5>_{4n,1n|3n,1n,1n}:
5963  Double_t reQ4nQ1nQ3nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
5964                                         * (dReQ1n*dReQ3n*dReQ4n-dReQ4n*dImQ1n*dImQ3n
5965                                         + dReQ3n*dImQ1n*dImQ4n+dReQ1n*dImQ3n*dImQ4n);
5966  Double_t reQ4nQ1nQ4nstarQ1nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
5967  Double_t reQ3nQ1nQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
5968  // <5>_{4n,3n|3n,3n,1n}:
5969  Double_t reQ4nQ3nQ3nstarQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))
5970                                         * (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n)); 
5971  Double_t reQ7nQ3nstarQ3nstarQ1nstar = (dReQ7n*dReQ1n+dImQ7n*dImQ1n)*(pow(dReQ3n,2)-pow(dImQ3n,2)) 
5972                                      + 2.*dReQ3n*dImQ3n*(dImQ7n*dReQ1n-dReQ7n*dImQ1n); 
5973  // <5>_{4n,4n|4n,3n,1n}:
5974  Double_t reQ4nQ4nQ4nstarQ3nstarQ1nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))
5975                                         * reQ4nQ3nstarQ1nstar;
5976  Double_t reQ7nQ1nQ4nstarQ4nstar = dReQ1n*pow(dReQ4n,2.)*dReQ7n+2.*dReQ4n*dReQ7n*dImQ1n*dImQ4n 
5977                                  - dReQ1n*dReQ7n*pow(dImQ4n,2.)-pow(dReQ4n,2.)*dImQ1n*dImQ7n
5978                                  + 2.*dReQ1n*dReQ4n*dImQ4n*dImQ7n+dImQ1n*pow(dImQ4n,2.)*dImQ7n;
5979  // <5>_{5n,2n|3n,2n,2n}:
5980  Double_t reQ5nQ2nQ3nstarQ2nstarQ2nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
5981                                         * reQ5nQ3nstarQ2nstar;
5982  // <5>_{5n,3n|3n,3n,2n}:
5983  Double_t reQ5nQ3nQ3nstarQ3nstarQ2nstar = (pow(dImQ3n,2.)+pow(dReQ3n,2.))
5984                                         * (dImQ3n*dImQ5n*dReQ2n+dImQ2n*dImQ5n*dReQ3n 
5985                                         - dImQ2n*dImQ3n*dReQ5n+dReQ2n*dReQ3n*dReQ5n);
5986  Double_t reQ8nQ3nstarQ3nstarQ2nstar = (dReQ8n*dReQ2n+dImQ8n*dImQ2n)*(pow(dReQ3n,2)-pow(dImQ3n,2)) 
5987                                      + 2.*dReQ3n*dImQ3n*(dImQ8n*dReQ2n-dReQ8n*dImQ2n);
5988  /*
5989  Double_t reQ5nQ1nQ3nstarQ2nstar = dImQ2n*dImQ1n*dImQ5n*dImQ3n+dImQ5n*dImQ3n*dReQ2n*dReQ1n 
5990                                  + dImQ1n*dImQ3n*dReQ2n*dReQ5n-dImQ2n*dImQ3n*dReQ1n*dReQ5n
5991                                  - dImQ1n*dImQ5n*dReQ2n*dReQ3n+dImQ2n*dImQ5n*dReQ1n*dReQ3n 
5992                                  + dImQ2n*dImQ1n*dReQ5n*dReQ3n+dReQ2n*dReQ1n*dReQ5n*dReQ3n;
5993  */
5994  // <5>_{5n,1n|4n,1n,1n}:
5995  Double_t reQ5nQ1nQ4nstarQ1nstarQ1nstar = (pow(dImQ1n,2.)+pow(dReQ1n,2.))
5996                                         * (dImQ1n*dImQ5n*dReQ4n+dImQ4n*dImQ5n*dReQ1n 
5997                                         - dImQ4n*dImQ1n*dReQ5n+dReQ4n*dReQ1n*dReQ5n);
5998  // <5>_{5n,4n|4n,4n,1n}:
5999  Double_t reQ5nQ4nQ4nstarQ4nstarQ1nstar = (pow(dImQ4n,2.)+pow(dReQ4n,2.))
6000                                         * (dImQ4n*dImQ5n*dReQ1n+dImQ1n*dImQ5n*dReQ4n 
6001                                         - dImQ1n*dImQ4n*dReQ5n+dReQ1n*dReQ4n*dReQ5n);
6002  Double_t reQ9nQ4nstarQ4nstarQ1nstar = (dReQ9n*dReQ1n+dImQ9n*dImQ1n)*(pow(dReQ4n,2)-pow(dImQ4n,2)) 
6003                                      + 2.*dReQ4n*dImQ4n*(dImQ9n*dReQ1n-dReQ9n*dImQ1n);
6004  // <5>_{5n,5n|5n,3n,2n}:
6005  Double_t reQ5nQ5nQ5nstarQ3nstarQ2nstar = (pow(dImQ5n,2.)+pow(dReQ5n,2.))
6006                                         * (dImQ3n*dImQ5n*dReQ2n+dImQ2n*dImQ5n*dReQ3n
6007                                         - dImQ2n*dImQ3n*dReQ5n+dReQ2n*dReQ3n*dReQ5n);
6008  Double_t reQ7nQ3nQ5nstarQ5nstar = dReQ3n*pow(dReQ5n,2.)*dReQ7n+2.*dReQ5n*dReQ7n*dImQ3n*dImQ5n 
6009                                  - dReQ3n*dReQ7n*pow(dImQ5n,2.)-pow(dReQ5n,2.)*dImQ3n*dImQ7n
6010                                  + 2.*dReQ3n*dReQ5n*dImQ5n*dImQ7n+dImQ3n*pow(dImQ5n,2.)*dImQ7n;
6011  Double_t reQ8nQ2nQ5nstarQ5nstar = dReQ2n*pow(dReQ5n,2.)*dReQ8n+2.*dReQ5n*dReQ8n*dImQ2n*dImQ5n 
6012                                  - dReQ2n*dReQ8n*pow(dImQ5n,2.)-pow(dReQ5n,2.)*dImQ2n*dImQ8n
6013                                  + 2.*dReQ2n*dReQ5n*dImQ5n*dImQ8n+dImQ2n*pow(dImQ5n,2.)*dImQ8n;
6014  Double_t reQ10nQ5nstarQ3nstarQ2nstar = dReQ2n*dReQ3n*dReQ5n*dReQ10n-dReQ5n*dReQ10n*dImQ2n*dImQ3n 
6015                                       - dReQ3n*dReQ10n*dImQ2n*dImQ5n-dReQ2n*dReQ10n*dImQ3n*dImQ5n 
6016                                       + dReQ3n*dReQ5n*dImQ2n*dImQ10n+dReQ2n*dReQ5n*dImQ3n*dImQ10n 
6017                                       + dReQ2n*dReQ3n*dImQ5n*dImQ10n-dImQ2n*dImQ3n*dImQ5n*dImQ10n;
6018  Double_t reQ10nQ8nstarQ2nstar = dReQ10n*dReQ8n*dReQ2n-dReQ10n*dImQ8n*dImQ2n+dImQ10n*dReQ8n*dImQ2n
6019                                + dImQ10n*dImQ8n*dReQ2n;
6020  // <5>_{5n,5n|5n,4n,1n}:
6021  Double_t reQ5nQ5nQ5nstarQ4nstarQ1nstar = (pow(dImQ5n,2.)+pow(dReQ5n,2.))
6022                                         * (dImQ4n*dImQ5n*dReQ1n+dImQ1n*dImQ5n*dReQ4n
6023                                         - dImQ1n*dImQ4n*dReQ5n+dReQ1n*dReQ4n*dReQ5n);
6024  Double_t reQ9nQ1nQ5nstarQ5nstar = dReQ1n*pow(dReQ5n,2.)*dReQ9n+2.*dReQ5n*dReQ9n*dImQ1n*dImQ5n 
6025                                  - dReQ1n*dReQ9n*pow(dImQ5n,2.)-pow(dReQ5n,2.)*dImQ1n*dImQ9n
6026                                  + 2.*dReQ1n*dReQ5n*dImQ5n*dImQ9n+dImQ1n*pow(dImQ5n,2.)*dImQ9n;
6027  // <5>_{6n,1n|5n,1n,1n}:
6028  Double_t reQ6nQ1nQ5nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
6029                                         * (dReQ1n*dReQ5n*dReQ6n-dReQ6n*dImQ1n*dImQ5n
6030                                         + dReQ5n*dImQ1n*dImQ6n+dReQ1n*dImQ5n*dImQ6n);
6031  // <5>_{6n,5n|5n,5n,1n}:
6032  Double_t reQ6nQ5nQ5nstarQ5nstarQ1nstar = (pow(dImQ5n,2.)+pow(dReQ5n,2.))
6033                                         * (dImQ5n*dImQ6n*dReQ1n+dImQ1n*dImQ6n*dReQ5n 
6034                                         - dImQ1n*dImQ5n*dReQ6n+dReQ1n*dReQ5n*dReQ6n);
6035  Double_t reQ11nQ5nstarQ5nstarQ1nstar = (dReQ11n*dReQ1n+dImQ11n*dImQ1n)*(pow(dReQ5n,2)-pow(dImQ5n,2)) 
6036                                       + 2.*dReQ5n*dImQ5n*(dImQ11n*dReQ1n-dReQ11n*dImQ1n);
6037  // <5>_{6n,6n|6n,5n,1n}:
6038  Double_t reQ6nQ6nQ6nstarQ5nstarQ1nstar = (pow(dReQ6n,2.)+pow(dImQ6n,2.))
6039                                         * reQ6nQ5nstarQ1nstar;
6040  Double_t reQ7nQ5nQ6nstarQ6nstar = dReQ5n*pow(dReQ6n,2.)*dReQ7n+2.*dReQ6n*dReQ7n*dImQ5n*dImQ6n 
6041                                  - dReQ5n*dReQ7n*pow(dImQ6n,2.)-pow(dReQ6n,2.)*dImQ5n*dImQ7n
6042                                  + 2.*dReQ5n*dReQ6n*dImQ6n*dImQ7n+dImQ5n*pow(dImQ6n,2.)*dImQ7n;
6043  Double_t reQ11nQ1nQ6nstarQ6nstar = dReQ1n*pow(dReQ6n,2.)*dReQ11n+2.*dReQ6n*dReQ11n*dImQ1n*dImQ6n 
6044                                   - dReQ1n*dReQ11n*pow(dImQ6n,2.)-pow(dReQ6n,2.)*dImQ1n*dImQ11n
6045                                   + 2.*dReQ1n*dReQ6n*dImQ6n*dImQ11n+dImQ1n*pow(dImQ6n,2.)*dImQ11n;
6046  Double_t reQ12nQ6nstarQ6nstar = pow(dReQ6n,2.)*dReQ12n-dReQ12n*pow(dImQ6n,2.)+2.*dReQ6n*dImQ6n*dImQ12n;
6047  Double_t reQ12nQ11nstarQ1nstar = dReQ12n*dReQ11n*dReQ1n-dReQ12n*dImQ11n*dImQ1n+dImQ12n*dReQ11n*dImQ1n
6048                                 + dImQ12n*dImQ11n*dReQ1n;
6049  Double_t reQ12nQ6nstarQ5nstarQ1nstar = dReQ1n*dReQ5n*dReQ6n*dReQ12n-dReQ6n*dReQ12n*dImQ1n*dImQ5n 
6050                                       - dReQ5n*dReQ12n*dImQ1n*dImQ6n-dReQ1n*dReQ12n*dImQ5n*dImQ6n 
6051                                       + dReQ5n*dReQ6n*dImQ1n*dImQ12n+dReQ1n*dReQ6n*dImQ5n*dImQ12n 
6052                                       + dReQ1n*dReQ5n*dImQ6n*dImQ12n-dImQ1n*dImQ5n*dImQ6n*dImQ12n;
6053  Double_t reQ12nQ7nstarQ5nstar = dReQ12n*dReQ7n*dReQ5n-dReQ12n*dImQ7n*dImQ5n+dImQ12n*dReQ7n*dImQ5n
6054                                + dImQ12n*dImQ7n*dReQ5n;
6055  // <5>_{6n,2n|4n,3n,1n}:
6056  Double_t reQ6nQ2nQ4nstarQ3nstarQ1nstar = dReQ1n*dReQ2n*dReQ3n*dReQ4n*dReQ6n+dReQ3n*dReQ4n*dReQ6n*dImQ1n*dImQ2n 
6057                                         - dReQ2n*dReQ4n*dReQ6n*dImQ1n*dImQ3n+dReQ1n*dReQ4n*dReQ6n*dImQ2n*dImQ3n 
6058                                         - dReQ2n*dReQ3n*dReQ6n*dImQ1n*dImQ4n+dReQ1n*dReQ3n*dReQ6n*dImQ2n*dImQ4n
6059                                         - dReQ1n*dReQ2n*dReQ6n*dImQ3n*dImQ4n-dReQ6n*dImQ1n*dImQ2n*dImQ3n*dImQ4n 
6060                                         + dReQ2n*dReQ3n*dReQ4n*dImQ1n*dImQ6n-dReQ1n*dReQ3n*dReQ4n*dImQ2n*dImQ6n 
6061                                         + dReQ1n*dReQ2n*dReQ4n*dImQ3n*dImQ6n+dReQ4n*dImQ1n*dImQ2n*dImQ3n*dImQ6n 
6062                                         + dReQ1n*dReQ2n*dReQ3n*dImQ4n*dImQ6n+dReQ3n*dImQ1n*dImQ2n*dImQ4n*dImQ6n 
6063                                         - dReQ2n*dImQ1n*dImQ3n*dImQ4n*dImQ6n+dReQ1n*dImQ2n*dImQ3n*dImQ4n*dImQ6n;
6064  Double_t reQ6nQ2nQ4nstarQ4nstar = dReQ2n*pow(dReQ4n,2.)*dReQ6n+2.*dReQ4n*dReQ6n*dImQ2n*dImQ4n 
6065                                  - dReQ2n*dReQ6n*pow(dImQ4n,2.)-pow(dReQ4n,2.)*dImQ2n*dImQ6n
6066                                  + 2.*dReQ2n*dReQ4n*dImQ4n*dImQ6n+dImQ2n*pow(dImQ4n,2.)*dImQ6n;
6067  // <5>_{6n,2n,1n|5n,4n}:
6068  Double_t reQ6nQ2nQ1nQ5nstarQ4nstar = dReQ1n*dReQ2n*dReQ4n*dReQ6n*dReQ5n - dReQ4n*dReQ6n*dReQ5n*dImQ1n*dImQ2n 
6069                                     + dReQ2n*dReQ6n*dReQ5n*dImQ1n*dImQ4n + dReQ1n*dReQ6n*dReQ5n*dImQ2n*dImQ4n
6070                                     - dReQ2n*dReQ4n*dReQ5n*dImQ1n*dImQ6n - dReQ1n*dReQ4n*dReQ5n*dImQ2n*dImQ6n 
6071                                     + dReQ1n*dReQ2n*dReQ5n*dImQ4n*dImQ6n - dReQ5n*dImQ1n*dImQ2n*dImQ4n*dImQ6n 
6072                                     + dReQ2n*dReQ4n*dReQ6n*dImQ1n*dImQ5n + dReQ1n*dReQ4n*dReQ6n*dImQ2n*dImQ5n 
6073                                     - dReQ1n*dReQ2n*dReQ6n*dImQ4n*dImQ5n + dReQ6n*dImQ1n*dImQ2n*dImQ4n*dImQ5n 
6074                                     + dReQ1n*dReQ2n*dReQ4n*dImQ6n*dImQ5n - dReQ4n*dImQ1n*dImQ2n*dImQ6n*dImQ5n 
6075                                     + dReQ2n*dImQ1n*dImQ4n*dImQ6n*dImQ5n + dReQ1n*dImQ2n*dImQ4n*dImQ6n*dImQ5n;
6076
6077  // <5>_{6n,4n|5n,3n,2n}:
6078  Double_t reQ6nQ4nQ5nstarQ3nstarQ2nstar = dReQ2n*dReQ3n*dReQ4n*dReQ5n*dReQ6n - dReQ4n*dReQ5n*dReQ6n*dImQ2n*dImQ3n 
6079                                         + dReQ3n*dReQ5n*dReQ6n*dImQ2n*dImQ4n + dReQ2n*dReQ5n*dReQ6n*dImQ3n*dImQ4n
6080                                         - dReQ3n*dReQ4n*dReQ6n*dImQ2n*dImQ5n - dReQ2n*dReQ4n*dReQ6n*dImQ3n*dImQ5n 
6081                                         + dReQ2n*dReQ3n*dReQ6n*dImQ4n*dImQ5n - dReQ6n*dImQ2n*dImQ3n*dImQ4n*dImQ5n 
6082                                         + dReQ3n*dReQ4n*dReQ5n*dImQ2n*dImQ6n + dReQ2n*dReQ4n*dReQ5n*dImQ3n*dImQ6n 
6083                                         - dReQ2n*dReQ3n*dReQ5n*dImQ4n*dImQ6n + dReQ5n*dImQ2n*dImQ3n*dImQ4n*dImQ6n 
6084                                         + dReQ2n*dReQ3n*dReQ4n*dImQ5n*dImQ6n - dReQ4n*dImQ2n*dImQ3n*dImQ5n*dImQ6n 
6085                                         + dReQ3n*dImQ2n*dImQ4n*dImQ5n*dImQ6n + dReQ2n*dImQ3n*dImQ4n*dImQ5n*dImQ6n;
6086  Double_t reQ8nQ2nQ6nstarQ4nstar = dImQ4n*dImQ2n*dImQ8n*dImQ6n+dImQ8n*dImQ6n*dReQ4n*dReQ2n 
6087                                  + dImQ2n*dImQ6n*dReQ4n*dReQ8n-dImQ4n*dImQ6n*dReQ2n*dReQ8n
6088                                  - dImQ2n*dImQ8n*dReQ4n*dReQ6n+dImQ4n*dImQ8n*dReQ2n*dReQ6n 
6089                                  + dImQ4n*dImQ2n*dReQ8n*dReQ6n+dReQ4n*dReQ2n*dReQ8n*dReQ6n;
6090
6091  // <5>_{4n,4n|3n,3n,2n}:
6092  Double_t reQ4nQ4nQ3nstarQ3nstarQ2nstar = dReQ2n*pow(dReQ3n,2.)*pow(dReQ4n,2.)-2.*dReQ3n*pow(dReQ4n,2.)*dImQ2n*dImQ3n 
6093                                         - dReQ2n*pow(dReQ4n,2.)*pow(dImQ3n,2.)+2.*pow(dReQ3n,2.)*dReQ4n*dImQ2n*dImQ4n 
6094                                         + 4.*dReQ2n*dReQ3n*dReQ4n*dImQ3n*dImQ4n - 2.*dReQ4n*dImQ2n*pow(dImQ3n,2.)*dImQ4n
6095                                         - dReQ2n*pow(dReQ3n,2.)*pow(dImQ4n,2.) + 2.*dReQ3n*dImQ2n*dImQ3n*pow(dImQ4n,2.) 
6096                                         + dReQ2n*pow(dImQ3n,2.)*pow(dImQ4n,2.);
6097
6098  // <5>_{5n|2n,1n,1n,1n}:
6099  Double_t reQ5nQ2nstarQ1nstarQ1nstarQ1nstar = pow(dReQ1n,3.)*dReQ2n*dReQ5n-3.*dReQ1n*dReQ2n*dReQ5n*pow(dImQ1n,2.) 
6100                                             - 3.*pow(dReQ1n,2.)*dReQ5n*dImQ1n*dImQ2n+dReQ5n*pow(dImQ1n,3.)*dImQ2n 
6101                                             + 3.*pow(dReQ1n,2.)*dReQ2n*dImQ1n*dImQ5n-dReQ2n*pow(dImQ1n,3.)*dImQ5n
6102                                             + pow(dReQ1n,3.)*dImQ2n*dImQ5n-3.*dReQ1n*pow(dImQ1n,2.)*dImQ2n*dImQ5n;
6103
6104  // <5>_{5n,1n|2n,2n,2n}:
6105  Double_t reQ5nQ1nQ2nstarQ2nstarQ2nstar = dReQ1n*pow(dReQ2n,3.)*dReQ5n+3.*pow(dReQ2n,2.)*dReQ5n*dImQ1n*dImQ2n
6106                                         - 3.*dReQ1n*dReQ2n*dReQ5n*pow(dImQ2n,2.)-dReQ5n*dImQ1n*pow(dImQ2n,3.) 
6107                                         - pow(dReQ2n,3.)*dImQ1n*dImQ5n+3.*dReQ1n*pow(dReQ2n,2.)*dImQ2n*dImQ5n 
6108                                         + 3.*dReQ2n*dImQ1n*pow(dImQ2n,2.)*dImQ5n-dReQ1n*pow(dImQ2n,3.)*dImQ5n;
6109
6110
6111  // <5>_{5n,4n|3n,3n,3n}:
6112  Double_t reQ5nQ4nQ3nstarQ3nstarQ3nstar = dReQ4n*pow(dReQ3n,3.)*dReQ5n+3.*pow(dReQ3n,2.)*dReQ5n*dImQ4n*dImQ3n
6113                                         - 3.*dReQ4n*dReQ3n*dReQ5n*pow(dImQ3n,2.)-dReQ5n*dImQ4n*pow(dImQ3n,3.) 
6114                                         - pow(dReQ3n,3.)*dImQ4n*dImQ5n+3.*dReQ4n*pow(dReQ3n,2.)*dImQ3n*dImQ5n 
6115                                         + 3.*dReQ3n*dImQ4n*pow(dImQ3n,2.)*dImQ5n-dReQ4n*pow(dImQ3n,3.)*dImQ5n;
6116
6117  Double_t reQ9nQ3nstarQ3nstarQ3nstar = dReQ9n*pow(dReQ3n,3)-3.*dReQ3n*dReQ9n*pow(dImQ3n,2)
6118                                      + 3.*dImQ3n*dImQ9n*pow(dReQ3n,2)-dImQ9n*pow(dImQ3n,3); 
6119  // <5>_{5n,5n|4n,3n,3n}:
6120  Double_t reQ5nQ5nQ4nstarQ3nstarQ3nstar = dReQ4n*pow(dReQ3n,2.)*pow(dReQ5n,2.) - 2.*dReQ3n*pow(dReQ5n,2.)*dImQ4n*dImQ3n
6121                                         - dReQ4n*pow(dReQ5n,2.)*pow(dImQ3n,2.) + 2.*pow(dReQ3n,2.)*dReQ5n*dImQ4n*dImQ5n 
6122                                         + 4.*dReQ4n*dReQ3n*dReQ5n*dImQ3n*dImQ5n - 2.*dReQ5n*dImQ4n*pow(dImQ3n,2.)*dImQ5n
6123                                         - dReQ4n*pow(dReQ3n,2.)*pow(dImQ5n,2.) + 2.*dReQ3n*dImQ4n*dImQ3n*pow(dImQ5n,2.) 
6124                                         + dReQ4n*pow(dImQ3n,2.)*pow(dImQ5n,2.);
6125
6126  // <5>_{5n,5n|4n,4n,2n}:   
6127  Double_t reQ5nQ5nQ4nstarQ4nstarQ2nstar = dReQ2n*pow(dReQ4n,2.)*pow(dReQ5n,2.) - 2.*dReQ4n*pow(dReQ5n,2.)*dImQ2n*dImQ4n
6128                                         - dReQ2n*pow(dReQ5n,2.)*pow(dImQ4n,2.) + 2.*pow(dReQ4n,2.)*dReQ5n*dImQ2n*dImQ5n 
6129                                         + 4.*dReQ2n*dReQ4n*dReQ5n*dImQ4n*dImQ5n - 2.*dReQ5n*dImQ2n*pow(dImQ4n,2.)*dImQ5n
6130                                         - dReQ2n*pow(dReQ4n,2.)*pow(dImQ5n,2.) + 2.*dReQ4n*dImQ2n*dImQ4n*pow(dImQ5n,2.) 
6131                                         + dReQ2n*pow(dImQ4n,2.)*pow(dImQ5n,2.);
6132  Double_t reQ10nQ4nstarQ4nstarQ2nstar = (dReQ10n*dReQ2n+dImQ10n*dImQ2n)*(pow(dReQ4n,2)-pow(dImQ4n,2)) 
6133                                       + 2.*dReQ4n*dImQ4n*(dImQ10n*dReQ2n-dReQ10n*dImQ2n);
6134  // <5>_{6n|3n,1n,1n,1n}:
6135  Double_t reQ6nQ3nstarQ1nstarQ1nstarQ1nstar = pow(dReQ1n,3.)*dReQ3n*dReQ6n-3.*dReQ1n*dReQ3n*dReQ6n*pow(dImQ1n,2.) 
6136                                             - 3.*pow(dReQ1n,2.)*dReQ6n*dImQ1n*dImQ3n+dReQ6n*pow(dImQ1n,3.)*dImQ3n 
6137                                             + 3.*pow(dReQ1n,2.)*dReQ3n*dImQ1n*dImQ6n-dReQ3n*pow(dImQ1n,3.)*dImQ6n
6138                                             + pow(dReQ1n,3.)*dImQ3n*dImQ6n-3.*dReQ1n*pow(dImQ1n,2.)*dImQ3n*dImQ6n;
6139  // <5>_{6n,1n,1n|4n,4n}:
6140  Double_t reQ6nQ1nQ1nQ4nstarQ4nstar = pow(dReQ1n,2.)*pow(dReQ4n,2.)*dReQ6n - pow(dReQ4n,2.)*dReQ6n*pow(dImQ1n,2.)
6141                                     + 4.*dReQ1n*dReQ4n*dReQ6n*dImQ1n*dImQ4n - pow(dReQ1n,2.)*dReQ6n*pow(dImQ4n,2.)
6142                                     + dReQ6n*pow(dImQ1n,2.)*pow(dImQ4n,2.) - 2.*dReQ1n*pow(dReQ4n,2.)*dImQ1n*dImQ6n 
6143                                     + 2.*pow(dReQ1n,2.)*dReQ4n*dImQ4n*dImQ6n - 2.*dReQ4n*pow(dImQ1n,2.)*dImQ4n*dImQ6n
6144                                     + 2.*dReQ1n*dImQ1n*pow(dImQ4n,2.)*dImQ6n;
6145
6146
6147  // <5>_{6n,2n,2n|5n,5n}:
6148  Double_t reQ6nQ2nQ2nQ5nstarQ5nstar = pow(dReQ2n,2.)*pow(dReQ5n,2.)*dReQ6n - pow(dReQ5n,2.)*dReQ6n*pow(dImQ2n,2.)
6149                                     + 4.*dReQ2n*dReQ5n*dReQ6n*dImQ2n*dImQ5n - pow(dReQ2n,2.)*dReQ6n*pow(dImQ5n,2.)
6150                                     + dReQ6n*pow(dImQ2n,2.)*pow(dImQ5n,2.) - 2.*dReQ2n*pow(dReQ5n,2.)*dImQ2n*dImQ6n 
6151                                     + 2.*pow(dReQ2n,2.)*dReQ5n*dImQ5n*dImQ6n - 2.*dReQ5n*pow(dImQ2n,2.)*dImQ5n*dImQ6n
6152                                     + 2.*dReQ2n*dImQ2n*pow(dImQ5n,2.)*dImQ6n;
6153  Double_t reQ10nQ6nstarQ2nstarQ2nstar = (dReQ10n*dReQ6n+dImQ10n*dImQ6n)*(pow(dReQ2n,2)-pow(dImQ2n,2)) 
6154                                       + 2.*dReQ2n*dImQ2n*(dImQ10n*dReQ6n-dReQ10n*dImQ6n);
6155  // <5>_{6n,6n|5n,5n,2n}:
6156  Double_t reQ6nQ6nQ5nstarQ5nstarQ2nstar = dReQ2n*pow(dReQ5n,2.)*pow(dReQ6n,2.) - 2.*dReQ5n*pow(dReQ6n,2.)*dImQ2n*dImQ5n
6157                                         - dReQ2n*pow(dReQ6n,2.)*pow(dImQ5n,2.) + 2.*pow(dReQ5n,2.)*dReQ6n*dImQ2n*dImQ6n 
6158                                         + 4.*dReQ2n*dReQ5n*dReQ6n*dImQ5n*dImQ6n - 2.*dReQ6n*dImQ2n*pow(dImQ5n,2.)*dImQ6n
6159                                         - dReQ2n*pow(dReQ5n,2.)*pow(dImQ6n,2.) + 2.*dReQ5n*dImQ2n*dImQ5n*pow(dImQ6n,2.) 
6160                                         + dReQ2n*pow(dImQ5n,2.)*pow(dImQ6n,2.);
6161  Double_t reQ10nQ2nQ6nstarQ6nstar = dImQ2n*pow(dImQ6n,2.)*dImQ10n+2.*dImQ6n*dImQ10n*dReQ2n*dReQ6n
6162                                   - dImQ2n*dImQ10n*pow(dReQ6n,2.)-pow(dImQ6n,2.)*dReQ2n*dReQ10n 
6163                                   + 2.*dImQ2n*dImQ6n*dReQ6n*dReQ10n+dReQ2n*pow(dReQ6n,2.)*dReQ10n;
6164  Double_t reQ12nQ5nstarQ5nstarQ2nstar = (dReQ12n*dReQ2n+dImQ12n*dImQ2n)*(pow(dReQ5n,2)-pow(dImQ5n,2)) 
6165                                       + 2.*dReQ5n*dImQ5n*(dImQ12n*dReQ2n-dReQ12n*dImQ2n);
6166  Double_t reQ12nQ10nstarQ2nstar = dReQ12n*dReQ10n*dReQ2n-dReQ12n*dImQ10n*dImQ2n+dImQ12n*dReQ10n*dImQ2n
6167                                 + dImQ12n*dImQ10n*dReQ2n;
6168  // <5>_{5n,2n|3n,3n,1n}: 
6169  Double_t reQ5nQ2nQ3nstarQ3nstarQ1nstar = dReQ1n*dReQ2n*pow(dReQ3n,2.)*dReQ5n + pow(dReQ3n,2.)*dReQ5n*dImQ1n*dImQ2n 
6170                                         - 2.*dReQ2n*dReQ3n*dReQ5n*dImQ1n*dImQ3n + 2.*dReQ1n*dReQ3n*dReQ5n*dImQ2n*dImQ3n 
6171                                         - dReQ1n*dReQ2n*dReQ5n*pow(dImQ3n,2.) - dReQ5n*dImQ1n*dImQ2n*pow(dImQ3n,2.) 
6172                                         + dReQ2n*pow(dReQ3n,2.)*dImQ1n*dImQ5n - dReQ1n*pow(dReQ3n,2.)*dImQ2n*dImQ5n
6173                                         + 2.*dReQ1n*dReQ2n*dReQ3n*dImQ3n*dImQ5n + 2.*dReQ3n*dImQ1n*dImQ2n*dImQ3n*dImQ5n
6174                                         - dReQ2n*dImQ1n*pow(dImQ3n,2.)*dImQ5n + dReQ1n*dImQ2n*pow(dImQ3n,2.)*dImQ5n;
6175  // <5>_{5n,1n,1n|4n,3n}:
6176  Double_t reQ5nQ1nQ1nQ4nstarQ3nstar = pow(dReQ1n,2.)*dReQ3n*dReQ4n*dReQ5n - dReQ3n*dReQ4n*dReQ5n*pow(dImQ1n,2.)
6177                                     + 2.*dReQ1n*dReQ4n*dReQ5n*dImQ1n*dImQ3n + 2.*dReQ1n*dReQ3n*dReQ5n*dImQ1n*dImQ4n
6178                                     - pow(dReQ1n,2.)*dReQ5n*dImQ3n*dImQ4n + dReQ5n*pow(dImQ1n,2.)*dImQ3n*dImQ4n
6179                                     - 2.*dReQ1n*dReQ3n*dReQ4n*dImQ1n*dImQ5n + pow(dReQ1n,2.)*dReQ4n*dImQ3n*dImQ5n
6180                                     - dReQ4n*pow(dImQ1n,2.)*dImQ3n*dImQ5n + pow(dReQ1n,2.)*dReQ3n*dImQ4n*dImQ5n
6181                                     - dReQ3n*pow(dImQ1n,2.)*dImQ4n*dImQ5n + 2.*dReQ1n*dImQ1n*dImQ3n*dImQ4n*dImQ5n;
6182  // <5>_{5n,3n|4n,2n,2n}:
6183  Double_t reQ5nQ3nQ4nstarQ2nstarQ2nstar = dReQ4n*dReQ3n*pow(dReQ2n,2.)*dReQ5n + pow(dReQ2n,2.)*dReQ5n*dImQ4n*dImQ3n 
6184                                         - 2.*dReQ3n*dReQ2n*dReQ5n*dImQ4n*dImQ2n + 2.*dReQ4n*dReQ2n*dReQ5n*dImQ3n*dImQ2n 
6185                                         - dReQ4n*dReQ3n*dReQ5n*pow(dImQ2n,2.) - dReQ5n*dImQ4n*dImQ3n*pow(dImQ2n,2.) 
6186                                         + dReQ3n*pow(dReQ2n,2.)*dImQ4n*dImQ5n - dReQ4n*pow(dReQ2n,2.)*dImQ3n*dImQ5n
6187                                         + 2.*dReQ4n*dReQ3n*dReQ2n*dImQ2n*dImQ5n + 2.*dReQ2n*dImQ4n*dImQ3n*dImQ2n*dImQ5n
6188                                         - dReQ3n*dImQ4n*pow(dImQ2n,2.)*dImQ5n + dReQ4n*dImQ3n*pow(dImQ2n,2.)*dImQ5n;
6189  Double_t reQ8nQ4nstarQ2nstarQ2nstar = (dReQ8n*dReQ4n+dImQ8n*dImQ4n)*(pow(dReQ2n,2)-pow(dImQ2n,2)) 
6190                                      + 2.*dReQ2n*dImQ2n*(dImQ8n*dReQ4n-dReQ8n*dImQ4n);
6191  // <5>_{5n,2n,1n|4n,4n}:
6192  Double_t reQ5nQ2nQ1nQ4nstarQ4nstar = dReQ1n*dReQ2n*pow(dReQ4n,2.)*dReQ5n - pow(dReQ4n,2.)*dReQ5n*dImQ1n*dImQ2n
6193                                     + 2.*dReQ2n*dReQ4n*dReQ5n*dImQ1n*dImQ4n + 2.*dReQ1n*dReQ4n*dReQ5n*dImQ2n*dImQ4n
6194                                     - dReQ1n*dReQ2n*dReQ5n*pow(dImQ4n,2.) + dReQ5n*dImQ1n*dImQ2n*pow(dImQ4n,2.)
6195                                     - dReQ2n*pow(dReQ4n,2.)*dImQ1n*dImQ5n - dReQ1n*pow(dReQ4n,2.)*dImQ2n*dImQ5n
6196                                     + 2.*dReQ1n*dReQ2n*dReQ4n*dImQ4n*dImQ5n - 2.*dReQ4n*dImQ1n*dImQ2n*dImQ4n*dImQ5n
6197                                     + dReQ2n*dImQ1n*pow(dImQ4n,2.)*dImQ5n + dReQ1n*dImQ2n*pow(dImQ4n,2.)*dImQ5n;
6198  // <5>_{6n,1n|3n,2n,2n}:
6199  Double_t reQ6nQ1nQ3nstarQ2nstarQ2nstar = dReQ3n*dReQ1n*pow(dReQ2n,2.)*dReQ6n + pow(dReQ2n,2.)*dReQ6n*dImQ3n*dImQ1n 
6200                                         - 2.*dReQ1n*dReQ2n*dReQ6n*dImQ3n*dImQ2n + 2.*dReQ3n*dReQ2n*dReQ6n*dImQ1n*dImQ2n 
6201                                         - dReQ3n*dReQ1n*dReQ6n*pow(dImQ2n,2.) - dReQ6n*dImQ3n*dImQ1n*pow(dImQ2n,2.) 
6202                                         + dReQ1n*pow(dReQ2n,2.)*dImQ3n*dImQ6n - dReQ3n*pow(dReQ2n,2.)*dImQ1n*dImQ6n
6203                                         + 2.*dReQ3n*dReQ1n*dReQ2n*dImQ2n*dImQ6n + 2.*dReQ2n*dImQ3n*dImQ1n*dImQ2n*dImQ6n
6204                                         - dReQ1n*dImQ3n*pow(dImQ2n,2.)*dImQ6n + dReQ3n*dImQ1n*pow(dImQ2n,2.)*dImQ6n;
6205
6206  // <5>_{6n,3n|4n,4n,1n}:
6207  Double_t reQ6nQ3nQ4nstarQ4nstarQ1nstar = dReQ1n*dReQ3n*pow(dReQ4n,2.)*dReQ6n + pow(dReQ4n,2.)*dReQ6n*dImQ1n*dImQ3n 
6208                                         - 2.*dReQ3n*dReQ4n*dReQ6n*dImQ1n*dImQ4n + 2.*dReQ1n*dReQ4n*dReQ6n*dImQ3n*dImQ4n 
6209                                         - dReQ1n*dReQ3n*dReQ6n*pow(dImQ4n,2.) - dReQ6n*dImQ1n*dImQ3n*pow(dImQ4n,2.) 
6210                                         + dReQ3n*pow(dReQ4n,2.)*dImQ1n*dImQ6n - dReQ1n*pow(dReQ4n,2.)*dImQ3n*dImQ6n
6211                                         + 2.*dReQ1n*dReQ3n*dReQ4n*dImQ4n*dImQ6n + 2.*dReQ4n*dImQ1n*dImQ3n*dImQ4n*dImQ6n
6212                                         - dReQ3n*dImQ1n*pow(dImQ4n,2.)*dImQ6n + dReQ1n*dImQ3n*pow(dImQ4n,2.)*dImQ6n;
6213
6214  // five6n1n1n5n3n = 0.; // <5>_{6n,1n,1n|5n,3n} = <cos(n(6*phi1+1*phi2+1*phi3-5*phi4-3*phi5))>
6215  Double_t reQ6nQ1nQ1nQ5nstarQ3nstar = pow(dReQ1n,2.)*dReQ3n*dReQ5n*dReQ6n - dReQ3n*dReQ5n*dReQ6n*pow(dImQ1n,2.)
6216                                     + 2.*dReQ1n*dReQ5n*dReQ6n*dImQ1n*dImQ3n + 2.*dReQ1n*dReQ3n*dReQ6n*dImQ1n*dImQ5n
6217                                     - pow(dReQ1n,2.)*dReQ6n*dImQ3n*dImQ5n + dReQ6n*pow(dImQ1n,2.)*dImQ3n*dImQ5n
6218                                     - 2.*dReQ1n*dReQ3n*dReQ5n*dImQ1n*dImQ6n + pow(dReQ1n,2.)*dReQ5n*dImQ3n*dImQ6n
6219                                     - dReQ5n*pow(dImQ1n,2.)*dImQ3n*dImQ6n + pow(dReQ1n,2.)*dReQ3n*dImQ5n*dImQ6n
6220                                     - dReQ3n*pow(dImQ1n,2.)*dImQ5n*dImQ6n + 2.*dReQ1n*dImQ1n*dImQ3n*dImQ5n*dImQ6n;
6221
6222  // <5>_{6n,3n|5n,2n,2n}:
6223  Double_t reQ6nQ3nQ5nstarQ2nstarQ2nstar = dReQ5n*dReQ3n*pow(dReQ2n,2.)*dReQ6n + pow(dReQ2n,2.)*dReQ6n*dImQ5n*dImQ3n 
6224                                         - 2.*dReQ3n*dReQ2n*dReQ6n*dImQ5n*dImQ2n + 2.*dReQ5n*dReQ2n*dReQ6n*dImQ3n*dImQ2n 
6225                                         - dReQ5n*dReQ3n*dReQ6n*pow(dImQ2n,2.) - dReQ6n*dImQ5n*dImQ3n*pow(dImQ2n,2.) 
6226                                         + dReQ3n*pow(dReQ2n,2.)*dImQ5n*dImQ6n - dReQ5n*pow(dReQ2n,2.)*dImQ3n*dImQ6n
6227                                         + 2.*dReQ5n*dReQ3n*dReQ2n*dImQ2n*dImQ6n + 2.*dReQ2n*dImQ5n*dImQ3n*dImQ2n*dImQ6n
6228                                         - dReQ3n*dImQ5n*pow(dImQ2n,2.)*dImQ6n + dReQ5n*dImQ3n*pow(dImQ2n,2.)*dImQ6n;
6229
6230  // <5>_{6n,5n|4n,4n,3n}:
6231  Double_t reQ6nQ5nQ4nstarQ4nstarQ3nstar = dReQ3n*dReQ5n*pow(dReQ4n,2.)*dReQ6n + pow(dReQ4n,2.)*dReQ6n*dImQ3n*dImQ5n 
6232                                         - 2.*dReQ5n*dReQ4n*dReQ6n*dImQ3n*dImQ4n + 2.*dReQ3n*dReQ4n*dReQ6n*dImQ5n*dImQ4n 
6233                                         - dReQ3n*dReQ5n*dReQ6n*pow(dImQ4n,2.) - dReQ6n*dImQ3n*dImQ5n*pow(dImQ4n,2.) 
6234                                         + dReQ5n*pow(dReQ4n,2.)*dImQ3n*dImQ6n - dReQ3n*pow(dReQ4n,2.)*dImQ5n*dImQ6n
6235                                         + 2.*dReQ3n*dReQ5n*dReQ4n*dImQ4n*dImQ6n + 2.*dReQ4n*dImQ3n*dImQ5n*dImQ4n*dImQ6n
6236                                         - dReQ5n*dImQ3n*pow(dImQ4n,2.)*dImQ6n + dReQ3n*dImQ5n*pow(dImQ4n,2.)*dImQ6n;
6237  Double_t reQ11nQ4nstarQ4nstarQ3nstar = (dReQ11n*dReQ3n+dImQ11n*dImQ3n)*(pow(dReQ4n,2)-pow(dImQ4n,2)) 
6238                                       + 2.*dReQ4n*dImQ4n*(dImQ11n*dReQ3n-dReQ11n*dImQ3n);
6239
6240  // <5>_{6n,3n,1n|5n,5n}:
6241  Double_t reQ6nQ3nQ1nQ5nstarQ5nstar = dReQ1n*dReQ3n*pow(dReQ5n,2.)*dReQ6n - pow(dReQ5n,2.)*dReQ6n*dImQ1n*dImQ3n
6242                                     + 2.*dReQ3n*dReQ5n*dReQ6n*dImQ1n*dImQ5n + 2.*dReQ1n*dReQ5n*dReQ6n*dImQ3n*dImQ5n
6243                                     - dReQ1n*dReQ3n*dReQ6n*pow(dImQ5n,2.) + dReQ6n*dImQ1n*dImQ3n*pow(dImQ5n,2.)
6244                                     - dReQ3n*pow(dReQ5n,2.)*dImQ1n*dImQ6n - dReQ1n*pow(dReQ5n,2.)*dImQ3n*dImQ6n
6245                                     + 2.*dReQ1n*dReQ3n*dReQ5n*dImQ5n*dImQ6n - 2.*dReQ5n*dImQ1n*dImQ3n*dImQ5n*dImQ6n
6246                                     + dReQ3n*dImQ1n*pow(dImQ5n,2.)*dImQ6n + dReQ1n*dImQ3n*pow(dImQ5n,2.)*dImQ6n;
6247
6248  // <5>_{6n,6n|5n,4n,3n}:
6249  Double_t reQ6nQ6nQ5nstarQ4nstarQ3nstar = dReQ3n*dReQ4n*dReQ5n*pow(dReQ6n,2.) - dReQ5n*pow(dReQ6n,2.)*dImQ3n*dImQ4n
6250                                         - dReQ4n*pow(dReQ6n,2.)*dImQ3n*dImQ5n - dReQ3n*pow(dReQ6n,2.)*dImQ4n*dImQ5n
6251                                         + 2.*dReQ4n*dReQ5n*dReQ6n*dImQ3n*dImQ6n + 2.*dReQ3n*dReQ5n*dReQ6n*dImQ4n*dImQ6n
6252                                         + 2.*dReQ3n*dReQ4n*dReQ6n*dImQ5n*dImQ6n - 2.*dReQ6n*dImQ3n*dImQ4n*dImQ5n*dImQ6n
6253                                         - dReQ3n*dReQ4n*dReQ5n*pow(dImQ6n,2.) + dReQ5n*dImQ3n*dImQ4n*pow(dImQ6n,2.)
6254                                         + dReQ4n*dImQ3n*dImQ5n*pow(dImQ6n,2.) + dReQ3n*dImQ4n*dImQ5n*pow(dImQ6n,2.);
6255
6256
6257  Double_t reQ8nQ4nQ6nstarQ6nstar = dImQ4n*pow(dImQ6n,2.)*dImQ8n+2.*dImQ6n*dImQ8n*dReQ4n*dReQ6n
6258                                  - dImQ4n*dImQ8n*pow(dReQ6n,2.)-pow(dImQ6n,2.)*dReQ4n*dReQ8n 
6259                                  + 2.*dImQ4n*dImQ6n*dReQ6n*dReQ8n+dReQ4n*pow(dReQ6n,2.)*dReQ8n;
6260
6261
6262  Double_t reQ9nQ3nQ6nstarQ6nstar = dImQ3n*pow(dImQ6n,2.)*dImQ9n+2.*dImQ6n*dImQ9n*dReQ3n*dReQ6n
6263                                  - dImQ3n*dImQ9n*pow(dReQ6n,2.)-pow(dImQ6n,2.)*dReQ3n*dReQ9n 
6264                                  + 2.*dImQ3n*dImQ6n*dReQ6n*dReQ9n+dReQ3n*pow(dReQ6n,2.)*dReQ9n;
6265
6266
6267  Double_t reQ12nQ5nstarQ4nstarQ3nstar = dReQ3n*dReQ5n*dReQ4n*dReQ12n-dReQ4n*dReQ12n*dImQ3n*dImQ5n 
6268                                       - dReQ5n*dReQ12n*dImQ3n*dImQ4n-dReQ3n*dReQ12n*dImQ5n*dImQ4n 
6269                                       + dReQ5n*dReQ4n*dImQ3n*dImQ12n+dReQ3n*dReQ4n*dImQ5n*dImQ12n 
6270                                       + dReQ3n*dReQ5n*dImQ4n*dImQ12n-dImQ3n*dImQ5n*dImQ4n*dImQ12n;
6271  Double_t reQ12nQ9nstarQ3nstar = dReQ12n*dReQ9n*dReQ3n-dReQ12n*dImQ9n*dImQ3n+dImQ12n*dReQ9n*dImQ3n
6272                                + dImQ12n*dImQ9n*dReQ3n;
6273  Double_t reQ12nQ8nstarQ4nstar = dReQ12n*dReQ8n*dReQ4n-dReQ12n*dImQ8n*dImQ4n+dImQ12n*dReQ8n*dImQ4n
6274                                + dImQ12n*dImQ8n*dReQ4n;
6275
6276    
6277   five4n3n3n2n2n = ((pow(dReQ3n,2.)+pow(dImQ3n,2.))
6278                  * (pow(dReQ2n,2.)*dReQ4n-pow(dImQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n)
6279                  - ((dReQ7n*dReQ3n+dImQ7n*dImQ3n)*(pow(dReQ2n,2.)-pow(dImQ2n,2.)) 
6280                  + 2.*dReQ2n*dImQ2n*(dImQ7n*dReQ3n-dReQ7n*dImQ3n))
6281                  - ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n) 
6282                  + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
6283                  - 2.*(dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n 
6284                  + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
6285                  - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n 
6286                  + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
6287                  - 2.*(dImQ2n*dImQ3n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ2n*dReQ3n 
6288                  + dImQ3n*dImQ5n*dReQ2n*dReQ4n-dImQ2n*dImQ5n*dReQ3n*dReQ4n
6289                  - dImQ3n*dImQ4n*dReQ2n*dReQ5n+dImQ2n*dImQ4n*dReQ3n*dReQ5n 
6290                  + dImQ2n*dImQ3n*dReQ4n*dReQ5n+dReQ2n*dReQ3n*dReQ4n*dReQ5n)
6291                  + 2.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
6292                  + 1.*(dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n+dImQ7n*dImQ4n*dReQ3n)
6293                  + 3.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
6294                  + 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
6295                  + 2.*(dReQ7n*dReQ5n*dReQ2n-dReQ7n*dImQ5n*dImQ2n+dImQ7n*dReQ5n*dImQ2n+dImQ7n*dImQ5n*dReQ2n)
6296                  + 2.*(dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n+dImQ7n*dImQ4n*dReQ3n)
6297                  + 6.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6298                  + 6.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
6299                  - (dMult-6.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
6300                  - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6301                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6302                  - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6303                  - 4.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6304                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6305                  - 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6306                  + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6307                  + 2.*(dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6308                  + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6309                  - 2.*dMult*(dMult-12.)) 
6310                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6311   five4n2n4n1n1n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))
6312                  * (pow(dReQ1n,2.)*dReQ2n-pow(dImQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n)
6313                  - reQ6nQ4nstarQ1nstarQ1nstar
6314                  - reQ4nQ2nstarQ1nstarQ1nstar
6315                  - 2.*reQ4nQ1nQ3nstarQ2nstar
6316                  - 2.*reQ5nQ1nQ4nstarQ2nstar
6317                  + 2.*reQ3nQ2nstarQ1nstar
6318                  + reQ6nQ4nstarQ2nstar
6319                  + 3.*reQ4nQ2nstarQ2nstar
6320                  + 2.*reQ5nQ3nstarQ2nstar
6321                  + 2.*reQ6nQ5nstarQ1nstar
6322                  + 2.*reQ6nQ4nstarQ2nstar
6323                  + 6.*reQ4nQ3nstarQ1nstar
6324                  + 6.*reQ5nQ4nstarQ1nstar
6325                  - (dMult-6.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
6326                  - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6327                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6328                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-4.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6329                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)) 
6330                  + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6331                  + 2.*(dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6332                  + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.)) 
6333                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6334   // to be polished:
6335   five4n3n4n2n1n = (reQ4nQ3nQ4nstarQ2nstarQ1nstar
6336                  - reQ5nQ2nQ4nstarQ3nstar
6337                  - reQ6nQ1nQ4nstarQ3nstar
6338                  - reQ4nQ1nQ3nstarQ2nstar
6339                  - reQ7nQ4nstarQ2nstarQ1nstar
6340                  - reQ4nQ2nstarQ1nstarQ1nstar
6341                  - reQ4nQ2nQ3nstarQ3nstar
6342                  + reQ4nQ3nstarQ1nstar
6343                  + reQ7nQ4nstarQ3nstar
6344                  + 3.*reQ4nQ3nstarQ1nstar
6345                  + 2.*reQ7nQ4nstarQ3nstar
6346                  + reQ5nQ3nstarQ2nstar
6347                  + reQ7nQ5nstarQ2nstar
6348                  + reQ6nQ3nstarQ3nstar
6349                  + reQ4nQ3nstarQ1nstar
6350                  + reQ7nQ6nstarQ1nstar
6351                  + reQ2nQ1nstarQ1nstar
6352                  - (dMult-6.)*reQ3nQ2nstarQ1nstar
6353                  + 3.*reQ5nQ4nstarQ1nstar
6354                  + reQ4nQ3nstarQ1nstar
6355                  + 2.*reQ4nQ2nstarQ2nstar
6356                  + 3.*reQ6nQ4nstarQ2nstar
6357                  + reQ3nQ2nstarQ1nstar
6358                  + reQ4nQ2nstarQ2nstar
6359                  - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6360                  - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6361                  - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6362                  - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6363                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6364                  - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)) 
6365                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)) 
6366                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)) 
6367                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)) 
6368                  + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6369                  + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6370                  + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6371                  + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.)) 
6372                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6373   five5n1n3n2n1n = ((pow(dImQ1n,2.)+pow(dReQ1n,2.))*(dImQ3n*dImQ5n*dReQ2n+dImQ2n*dImQ5n*dReQ3n 
6374                  - dImQ2n*dImQ3n*dReQ5n+dReQ2n*dReQ3n*dReQ5n)
6375                  - (dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
6376                  - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
6377                  + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n 
6378                  + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
6379                  - (dImQ1n*dImQ2n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ1n*dReQ2n 
6380                  + dImQ2n*dImQ5n*dReQ1n*dReQ4n-dImQ1n*dImQ5n*dReQ2n*dReQ4n
6381                  - dImQ2n*dImQ4n*dReQ1n*dReQ5n+dImQ1n*dImQ4n*dReQ2n*dReQ5n 
6382                  + dImQ1n*dImQ2n*dReQ4n*dReQ5n+dReQ1n*dReQ2n*dReQ4n*dReQ5n)
6383                  - (dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
6384                  - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n 
6385                  + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n)
6386                  - (dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n 
6387                  + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
6388                  - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n 
6389                  + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
6390                  - (-pow(dImQ1n,2.)*dImQ3n*dImQ5n+dImQ3n*dImQ5n*pow(dReQ1n,2.)
6391                  + 2.*dImQ1n*dImQ5n*dReQ1n*dReQ3n-2.*dImQ1n*dImQ3n*dReQ1n*dReQ5n 
6392                  - pow(dImQ1n,2.)*dReQ3n*dReQ5n+pow(dReQ1n,2.)*dReQ3n*dReQ5n)
6393                  - (-pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
6394                  + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n 
6395                  - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n)
6396                  + 3.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
6397                  + dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n
6398                  + pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n
6399                  + 4.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
6400                  - (dMult-7.)*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
6401                  + 4.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
6402                  + pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n
6403                  + 6.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6404                  + 3.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
6405                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6406                  - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6407                  - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6408                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+(dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))  
6409                  - 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+(dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6410                  + (dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*(dMult-7.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6411                  - 2.*dMult*(dMult-12.))
6412                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)); 
6413   // to be polished:
6414   five5n2n5n1n1n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))
6415                  * (pow(dReQ1n,2.)*dReQ2n-pow(dImQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n)
6416                  - reQ7nQ5nstarQ1nstarQ1nstar
6417                  - reQ5nQ3nstarQ1nstarQ1nstar
6418                  - 2.*reQ5nQ1nQ4nstarQ2nstar
6419                  - 2.*reQ6nQ1nQ5nstarQ2nstar
6420                  + 2.*reQ4nQ3nstarQ1nstar
6421                  + reQ7nQ5nstarQ2nstar
6422                  + 3.*reQ5nQ3nstarQ2nstar
6423                  + 2.*reQ6nQ4nstarQ2nstar
6424                  + 2.*reQ7nQ6nstarQ1nstar
6425                  + 2.*reQ7nQ5nstarQ2nstar
6426                  + 6.*reQ5nQ4nstarQ1nstar
6427                  + 6.*reQ6nQ5nstarQ1nstar
6428                  - (dMult-6.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
6429                  - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6430                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6431                  - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))-4.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6432                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)) 
6433                  + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6434                  + 2.*(dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6435                  + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.)) 
6436                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6437   // to be polished:
6438   five5n2n4n2n1n = (reQ5nQ2nQ4nstarQ2nstarQ1nstar
6439                  - reQ5nQ2nQ4nstarQ3nstar
6440                  - reQ6nQ1nQ5nstarQ2nstar
6441                  - reQ5nQ2nstarQ2nstarQ1nstar
6442                  - reQ7nQ4nstarQ2nstarQ1nstar
6443                  - reQ4nQ1nQ3nstarQ2nstar
6444                  - reQ5nQ1nQ4nstarQ2nstar
6445                  + reQ2nQ1nstarQ1nstar
6446                  + reQ7nQ5nstarQ2nstar
6447                  + 3.*reQ5nQ3nstarQ2nstar
6448                  + 2.*reQ7nQ5nstarQ2nstar
6449                  + reQ5nQ3nstarQ2nstar
6450                  + reQ7nQ4nstarQ3nstar
6451                  + reQ6nQ5nstarQ1nstar
6452                  + reQ2nQ1nstarQ1nstar
6453                  + reQ7nQ6nstarQ1nstar
6454                  + reQ3nQ2nstarQ1nstar
6455                  - (dMult-6.)*reQ5nQ4nstarQ1nstar
6456                  + 3.*reQ3nQ2nstarQ1nstar
6457                  + reQ2nQ1nstarQ1nstar
6458                  + 2.*reQ4nQ2nstarQ2nstar
6459                  + 3.*reQ6nQ4nstarQ2nstar
6460                  + reQ4nQ3nstarQ1nstar
6461                  + reQ4nQ2nstarQ2nstar
6462                  - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6463                  - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6464                  - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6465                  - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6466                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6467                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)) 
6468                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)) 
6469                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)) 
6470                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)) 
6471                  + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6472                  + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6473                  + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6474                  + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*dMult*(dMult-12.)) 
6475                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6476   // to be polished: 
6477   five5n3n4n3n1n = (reQ5nQ3nQ4nstarQ3nstarQ1nstar
6478                  - reQ5nQ3nQ4nstarQ4nstar
6479                  - reQ7nQ1nQ5nstarQ3nstar
6480                  - reQ5nQ3nstarQ1nstarQ1nstar
6481                  - reQ8nQ4nstarQ3nstarQ1nstar
6482                  - reQ4nQ1nQ3nstarQ2nstar
6483                  - reQ5nQ2nQ4nstarQ3nstar
6484                  + reQ3nQ2nstarQ1nstar
6485                  + reQ8nQ5nstarQ3nstar
6486                  + 3.*reQ5nQ3nstarQ2nstar
6487                  + 2.*reQ8nQ5nstarQ3nstar
6488                  + reQ5nQ4nstarQ1nstar
6489                  + reQ8nQ4nstarQ4nstar
6490                  + reQ7nQ5nstarQ2nstar
6491                  + reQ3nQ2nstarQ1nstar
6492                  + reQ8nQ7nstarQ1nstar
6493                  + reQ2nQ1nstarQ1nstar
6494                  - (dMult-6.)*reQ5nQ4nstarQ1nstar
6495                  + 3.*reQ4nQ3nstarQ1nstar
6496                  + reQ3nQ2nstarQ1nstar
6497                  + 2.*reQ4nQ3nstarQ1nstar
6498                  + 3.*reQ7nQ4nstarQ3nstar
6499                  + reQ4nQ2nstarQ2nstar
6500                  + reQ4nQ3nstarQ1nstar
6501                  - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6502                  - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6503                  - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6504                  - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6505                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6506                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)) 
6507                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)) 
6508                  - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)) 
6509                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)) 
6510                  + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6511                  + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6512                  + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6513                  + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.)) 
6514                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6515   // to be polished: 
6516   five5n4n4n3n2n = (reQ5nQ4nQ4nstarQ3nstarQ2nstar
6517                  - reQ6nQ3nQ5nstarQ4nstar
6518                  - reQ7nQ2nQ5nstarQ4nstar
6519                  - reQ5nQ1nQ4nstarQ2nstar
6520                  - reQ9nQ4nstarQ3nstarQ2nstar
6521                  - reQ4nQ1nQ3nstarQ2nstar
6522                  - reQ5nQ2nQ4nstarQ3nstar
6523                  + reQ4nQ2nstarQ2nstar
6524                  + reQ9nQ5nstarQ4nstar
6525                  + 3.*reQ5nQ4nstarQ1nstar
6526                  + 2.*reQ9nQ5nstarQ4nstar
6527                  + reQ6nQ5nstarQ1nstar
6528                  + reQ9nQ6nstarQ3nstar
6529                  + reQ7nQ5nstarQ2nstar
6530                  + reQ4nQ2nstarQ2nstar
6531                  + reQ9nQ7nstarQ2nstar
6532                  + reQ2nQ1nstarQ1nstar
6533                  - (dMult-6.)*reQ5nQ3nstarQ2nstar
6534                  + 3.*reQ6nQ4nstarQ2nstar
6535                  + reQ4nQ2nstarQ2nstar
6536                  + 2.*reQ4nQ3nstarQ1nstar
6537                  + 3.*reQ7nQ4nstarQ3nstar
6538                  + reQ3nQ2nstarQ1nstar
6539                  + reQ4nQ3nstarQ1nstar
6540                  - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6541                  - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6542                  - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6543                  - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
6544                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6545                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)) 
6546                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)) 
6547                  - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)) 
6548                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)) 
6549                  + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6550                  + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6551                  + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6552                  + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.)) 
6553                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6554   // to be polished: 
6555   five5n3n5n2n1n = (reQ5nQ3nQ5nstarQ2nstarQ1nstar
6556                  - reQ6nQ2nQ5nstarQ3nstar
6557                  - reQ7nQ1nQ5nstarQ3nstar
6558                  - reQ5nQ1nQ3nstarQ3nstar
6559                  - reQ8nQ5nstarQ2nstarQ1nstar
6560                  - reQ5nQ2nstarQ2nstarQ1nstar
6561                  - reQ5nQ2nQ4nstarQ3nstar
6562                  + reQ5nQ4nstarQ1nstar
6563                  + reQ8nQ5nstarQ3nstar
6564                  + 3.*reQ5nQ3nstarQ2nstar
6565                  + 2.*reQ8nQ5nstarQ3nstar
6566                  + reQ6nQ3nstarQ3nstar
6567                  + reQ8nQ6nstarQ2nstar
6568                  + reQ7nQ4nstarQ3nstar
6569                  + reQ5nQ4nstarQ1nstar
6570                  + reQ8nQ7nstarQ1nstar
6571                  + reQ3nQ2nstarQ1nstar
6572                  - (dMult-6.)*reQ3nQ2nstarQ1nstar
6573                  + 3.*reQ6nQ5nstarQ1nstar
6574                  + reQ5nQ4nstarQ1nstar
6575                  + 2.*reQ5nQ3nstarQ2nstar
6576                  + 3.*reQ7nQ5nstarQ2nstar
6577                  + reQ4nQ2nstarQ2nstar
6578                  + reQ5nQ3nstarQ2nstar
6579                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6580                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6581                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6582                  - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6583                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6584                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)) 
6585                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)) 
6586                  - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)) 
6587                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)) 
6588                  + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6589                  + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6590                  + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6591                  + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.)) 
6592                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6593   // to be polished:
6594   five5n4n5n2n2n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))
6595                  * (pow(dReQ2n,2.)*dReQ4n-pow(dImQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n)
6596                  - reQ9nQ5nstarQ2nstarQ2nstar
6597                  - reQ5nQ2nstarQ2nstarQ1nstar
6598                  - 2.*reQ5nQ2nQ4nstarQ3nstar
6599                  - 2.*reQ7nQ2nQ5nstarQ4nstar
6600                  + 2.*reQ3nQ2nstarQ1nstar
6601                  + reQ9nQ5nstarQ4nstar
6602                  + 3.*reQ5nQ4nstarQ1nstar
6603                  + 2.*reQ7nQ4nstarQ3nstar
6604                  + 2.*reQ9nQ7nstarQ2nstar
6605                  + 2.*reQ9nQ5nstarQ4nstar
6606                  + 6.*reQ5nQ3nstarQ2nstar
6607                  + 6.*reQ7nQ5nstarQ2nstar
6608                  - (dMult-6.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
6609                  - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6610                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6611                  - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))-4.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6612                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)) 
6613                  + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6614                  + 2.*(dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6615                  + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.)) 
6616                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6617   // to be polished:
6618   five5n4n5n3n1n = (reQ5nQ4nQ5nstarQ3nstarQ1nstar
6619                  - reQ6nQ3nQ5nstarQ4nstar
6620                  - reQ8nQ1nQ5nstarQ4nstar
6621                  - reQ5nQ1nQ4nstarQ2nstar
6622                  - reQ9nQ5nstarQ3nstarQ1nstar
6623                  - reQ5nQ3nstarQ1nstarQ1nstar
6624                  - reQ5nQ3nQ4nstarQ4nstar
6625                  + reQ5nQ4nstarQ1nstar
6626                  + reQ9nQ5nstarQ4nstar
6627                  + 3.*reQ5nQ4nstarQ1nstar
6628                  + 2.*reQ9nQ5nstarQ4nstar
6629                  + reQ6nQ4nstarQ2nstar
6630                  + reQ9nQ6nstarQ3nstar
6631                  + reQ8nQ4nstarQ4nstar
6632                  + reQ5nQ4nstarQ1nstar
6633                  + reQ9nQ8nstarQ1nstar
6634                  + reQ2nQ1nstarQ1nstar
6635                  - (dMult-6.)*reQ4nQ3nstarQ1nstar
6636                  + 3.*reQ6nQ5nstarQ1nstar
6637                  + reQ5nQ4nstarQ1nstar
6638                  + 2.*reQ5nQ3nstarQ2nstar
6639                  + 3.*reQ8nQ5nstarQ3nstar
6640                  + reQ4nQ3nstarQ1nstar
6641                  + reQ5nQ3nstarQ2nstar
6642                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6643                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6644                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6645                  - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
6646                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6647                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)) 
6648                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)) 
6649                  - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.)) 
6650                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)) 
6651                  + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6652                  + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6653                  + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6654                  + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.)) 
6655                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)); 
6656   five6n1n3n3n1n = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))
6657                  * (pow(dReQ3n,2.)*dReQ6n-pow(dImQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n)
6658                  - 2.*(dImQ1n*dImQ3n*dImQ4n*dImQ6n+dImQ4n*dImQ6n*dReQ1n*dReQ3n 
6659                  + dImQ3n*dImQ6n*dReQ1n*dReQ4n-dImQ1n*dImQ6n*dReQ3n*dReQ4n
6660                  - dImQ3n*dImQ4n*dReQ1n*dReQ6n+dImQ1n*dImQ4n*dReQ3n*dReQ6n 
6661                  + dImQ1n*dImQ3n*dReQ4n*dReQ6n+dReQ1n*dReQ3n*dReQ4n*dReQ6n)   
6662                  - 2.*(dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
6663                  - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
6664                  + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n 
6665                  + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
6666                  - (-pow(dImQ3n,2.)*dImQ1n*dImQ7n+dImQ1n*dImQ7n*pow(dReQ3n,2.)
6667                  + 2.*dImQ3n*dImQ7n*dReQ3n*dReQ1n-2.*dImQ3n*dImQ1n*dReQ3n*dReQ7n 
6668                  - pow(dImQ3n,2.)*dReQ1n*dReQ7n+pow(dReQ3n,2.)*dReQ1n*dReQ7n)
6669                  - ((pow(dReQ3n,2.)-pow(dImQ3n,2.))*(dReQ5n*dReQ1n-dImQ5n*dImQ1n) 
6670                  + 2.*dReQ3n*dImQ3n*(dReQ5n*dImQ1n+dImQ5n*dReQ1n))
6671                  + 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6672                  + (dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n+dImQ7n*dImQ6n*dReQ1n)
6673                  + 2.*(dReQ7n*dReQ3n*dReQ4n-dReQ7n*dImQ3n*dImQ4n+dImQ7n*dReQ3n*dImQ4n+dImQ7n*dImQ3n*dReQ4n)
6674                  + 2.*(dReQ6n*(dReQ4n*dReQ2n-dImQ4n*dImQ2n)+dImQ6n*(dReQ4n*dImQ2n+dImQ4n*dReQ2n))
6675                  + 3.*(dReQ6n*(dReQ5n*dReQ1n-dImQ5n*dImQ1n)+dImQ6n*(dReQ5n*dImQ1n+dImQ5n*dReQ1n))
6676                  + 4.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6677                  + 2.*(dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n+dImQ7n*dImQ6n*dReQ1n)
6678                  + 6.*(dReQ4n*dReQ3n*dReQ1n-dReQ4n*dImQ3n*dImQ1n+dImQ4n*dReQ3n*dImQ1n+dImQ4n*dImQ3n*dReQ1n)
6679                  + 2.*(dReQ5n*dReQ3n*dReQ2n-dReQ5n*dImQ3n*dImQ2n+dImQ5n*dReQ3n*dImQ2n+dImQ5n*dImQ3n*dReQ2n)
6680                  - (dMult-6.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
6681                  - 4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6682                  - 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6683                  - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6684                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6685                  + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6686                  - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+(dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6687                  + 2.*(dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
6688                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6689   five6n2n3n3n2n = ((pow(dReQ2n,2.)+pow(dImQ2n,2.))
6690                  * (pow(dReQ3n,2.)*dReQ6n-pow(dImQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n)
6691                  - 2.*(dImQ2n*dImQ3n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ2n*dReQ3n 
6692                  + dImQ3n*dImQ6n*dReQ2n*dReQ5n-dImQ2n*dImQ6n*dReQ3n*dReQ5n
6693                  - dImQ3n*dImQ5n*dReQ2n*dReQ6n+dImQ2n*dImQ5n*dReQ3n*dReQ6n 
6694                  + dImQ2n*dImQ3n*dReQ5n*dReQ6n+dReQ2n*dReQ3n*dReQ5n*dReQ6n) 
6695                  - 2.*(dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
6696                  - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
6697                  + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n 
6698                  + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
6699                  - (-pow(dImQ3n,2.)*dImQ2n*dImQ8n+dImQ2n*dImQ8n*pow(dReQ3n,2.)
6700                  + 2.*dImQ3n*dImQ8n*dReQ3n*dReQ2n-2.*dImQ3n*dImQ2n*dReQ3n*dReQ8n 
6701                  - pow(dImQ3n,2.)*dReQ2n*dReQ8n+pow(dReQ3n,2.)*dReQ2n*dReQ8n)
6702                  - ((pow(dReQ3n,2.)-pow(dImQ3n,2.))*(dReQ4n*dReQ2n-dImQ4n*dImQ2n) 
6703                  + 2.*dReQ3n*dImQ3n*(dReQ4n*dImQ2n+dImQ4n*dReQ2n))
6704                  + 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6705                  + (dReQ8n*dReQ6n*dReQ2n-dReQ8n*dImQ6n*dImQ2n+dImQ8n*dReQ6n*dImQ2n+dImQ8n*dImQ6n*dReQ2n)
6706                  + 2.*(dReQ8n*dReQ3n*dReQ5n-dReQ8n*dImQ3n*dImQ5n+dImQ8n*dReQ3n*dImQ5n+dImQ8n*dImQ3n*dReQ5n)
6707                  + 2.*(dReQ6n*(dReQ5n*dReQ1n-dImQ5n*dImQ1n)+dImQ6n*(dReQ5n*dImQ1n+dImQ5n*dReQ1n))
6708                  + 3.*(dReQ6n*(dReQ4n*dReQ2n-dImQ4n*dImQ2n)+dImQ6n*(dReQ4n*dImQ2n+dImQ4n*dReQ2n))
6709                  + 4.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6710                  + 2.*(dReQ8n*dReQ6n*dReQ2n-dReQ8n*dImQ6n*dImQ2n+dImQ8n*dReQ6n*dImQ2n+dImQ8n*dImQ6n*dReQ2n)
6711                  + 6.*(dReQ5n*dReQ3n*dReQ2n-dReQ5n*dImQ3n*dImQ2n+dImQ5n*dReQ3n*dImQ2n+dImQ5n*dImQ3n*dReQ2n)
6712                  + 2.*(dReQ4n*dReQ3n*dReQ1n-dReQ4n*dImQ3n*dImQ1n+dImQ4n*dReQ3n*dImQ1n+dImQ4n*dImQ3n*dReQ1n)
6713                  - (dMult-6.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
6714                  - 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6715                  - 4.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6716                  - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6717                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6718                  + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6719                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+(dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6720                  + 2.*(dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
6721                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6722   // to be polished:
6723   five6n1n4n2n1n = (reQ6nQ1nQ4nstarQ2nstarQ1nstar
6724                  - reQ6nQ1nQ4nstarQ3nstar
6725                  - reQ6nQ1nQ5nstarQ2nstar
6726                  - reQ6nQ3nstarQ2nstarQ1nstar
6727                  - reQ7nQ4nstarQ2nstarQ1nstar
6728                  - reQ5nQ1nQ4nstarQ2nstar
6729                  - reQ6nQ4nstarQ1nstarQ1nstar
6730                  + reQ2nQ1nstarQ1nstar
6731                  + reQ7nQ6nstarQ1nstar
6732                  + 3.*reQ6nQ5nstarQ1nstar
6733                  + 2.*reQ7nQ6nstarQ1nstar
6734                  + reQ6nQ3nstarQ3nstar
6735                  + reQ7nQ4nstarQ3nstar
6736                  + reQ6nQ5nstarQ1nstar
6737                  + reQ2nQ1nstarQ1nstar
6738                  + reQ7nQ5nstarQ2nstar
6739                  + reQ5nQ3nstarQ2nstar
6740                  - (dMult-6.)*reQ6nQ4nstarQ2nstar
6741                  + 3.*reQ3nQ2nstarQ1nstar
6742                  + reQ2nQ1nstarQ1nstar
6743                  + 2.*reQ4nQ3nstarQ1nstar
6744                  + 3.*reQ5nQ4nstarQ1nstar
6745                  + reQ5nQ4nstarQ1nstar
6746                  + reQ4nQ3nstarQ1nstar
6747                  - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6748                  - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6749                  - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6750                  - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6751                  - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6752                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)) 
6753                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)) 
6754                  - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)) 
6755                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)) 
6756                  + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6757                  + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6758                  + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6759                  + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.)) 
6760                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)); 
6761   // to be polished: 
6762   five6n3n4n3n2n = (reQ6nQ3nQ4nstarQ3nstarQ2nstar
6763                  - reQ6nQ3nQ5nstarQ4nstar
6764                  - reQ7nQ2nQ6nstarQ3nstar
6765                  - reQ6nQ3nstarQ2nstarQ1nstar
6766                  - reQ9nQ4nstarQ3nstarQ2nstar
6767                  - reQ4nQ2nQ3nstarQ3nstar
6768                  - reQ6nQ1nQ4nstarQ3nstar
6769                  + reQ3nQ2nstarQ1nstar
6770                  + reQ9nQ6nstarQ3nstar
6771                  + 3.*reQ6nQ3nstarQ3nstar
6772                  + 2.*reQ9nQ6nstarQ3nstar
6773                  + reQ6nQ5nstarQ1nstar
6774                  + reQ9nQ5nstarQ4nstar
6775                  + reQ7nQ6nstarQ1nstar
6776                  + reQ3nQ2nstarQ1nstar
6777                  + reQ9nQ7nstarQ2nstar
6778                  + reQ3nQ2nstarQ1nstar
6779                  - (dMult-6.)*reQ6nQ4nstarQ2nstar
6780                  + 3.*reQ5nQ3nstarQ2nstar
6781                  + reQ3nQ2nstarQ1nstar
6782                  + 2.*reQ4nQ3nstarQ1nstar
6783                  + 3.*reQ7nQ4nstarQ3nstar
6784                  + reQ4nQ3nstarQ1nstar
6785                  + reQ4nQ3nstarQ1nstar
6786                  - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6787                  - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6788                  - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6789                  - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
6790                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6791                  - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)) 
6792                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)) 
6793                  - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)) 
6794                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)) 
6795                  + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6796                  + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6797                  + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6798                  + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.)) 
6799                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6800   five6n4n4n3n3n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))
6801                  * (pow(dReQ3n,2.)*dReQ6n-pow(dImQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n)
6802                  - ((dReQ10n*dReQ4n+dImQ10n*dImQ4n)*(pow(dReQ3n,2)-pow(dImQ3n,2)) 
6803                  + 2.*dReQ3n*dImQ3n*(dImQ10n*dReQ4n-dReQ10n*dImQ4n))
6804                  - ((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
6805                  + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n)
6806                  - 2.*(dImQ1n*dImQ3n*dImQ4n*dImQ6n+dImQ4n*dImQ6n*dReQ1n*dReQ3n 
6807                  + dImQ3n*dImQ6n*dReQ1n*dReQ4n-dImQ1n*dImQ6n*dReQ3n*dReQ4n
6808                  - dImQ3n*dImQ4n*dReQ1n*dReQ6n+dImQ1n*dImQ4n*dReQ3n*dReQ6n 
6809                  + dImQ1n*dImQ3n*dReQ4n*dReQ6n+dReQ1n*dReQ3n*dReQ4n*dReQ6n)
6810                  - 2.*(dImQ3n*dImQ4n*dImQ6n*dImQ7n+dImQ6n*dImQ7n*dReQ3n*dReQ4n 
6811                  + dImQ4n*dImQ7n*dReQ3n*dReQ6n-dImQ3n*dImQ7n*dReQ4n*dReQ6n
6812                  - dImQ4n*dImQ6n*dReQ3n*dReQ7n+dImQ3n*dImQ6n*dReQ4n*dReQ7n 
6813                  + dImQ3n*dImQ4n*dReQ6n*dReQ7n+dReQ3n*dReQ4n*dReQ6n*dReQ7n)
6814                  + 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6815                  + 1.*(dReQ10n*dReQ6n*dReQ4n-dReQ10n*dImQ6n*dImQ4n+dImQ10n*dReQ6n*dImQ4n+dImQ10n*dImQ6n*dReQ4n)
6816                  + 3.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
6817                  + 2.*(dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n+dImQ7n*dImQ6n*dReQ1n)
6818                  + 2.*(dReQ10n*dReQ7n*dReQ3n-dReQ10n*dImQ7n*dImQ3n+dImQ10n*dReQ7n*dImQ3n+dImQ10n*dImQ7n*dReQ3n)
6819                  + 2.*(dReQ10n*dReQ6n*dReQ4n-dReQ10n*dImQ6n*dImQ4n+dImQ10n*dReQ6n*dImQ4n+dImQ10n*dImQ6n*dReQ4n)
6820                  + 6.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
6821                  + 6.*(dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n+dImQ7n*dImQ4n*dReQ3n)
6822                  - (dMult-6.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
6823                  - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6824                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6825                  - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))-4.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6826                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)) 
6827                  + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6828                  + 2.*(dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6829                  + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.)) 
6830                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6831   // to be polished:
6832   five6n2n5n2n1n = (reQ6nQ2nQ5nstarQ2nstarQ1nstar
6833                  - reQ6nQ2nQ5nstarQ3nstar
6834                  - reQ7nQ1nQ6nstarQ2nstar
6835                  - reQ6nQ3nstarQ2nstarQ1nstar
6836                  - reQ8nQ5nstarQ2nstarQ1nstar
6837                  - reQ5nQ1nQ4nstarQ2nstar
6838                  - reQ6nQ1nQ5nstarQ2nstar
6839                  + reQ2nQ1nstarQ1nstar
6840                  + reQ8nQ6nstarQ2nstar
6841                  + 3.*reQ6nQ4nstarQ2nstar
6842                  + 2.*reQ8nQ6nstarQ2nstar
6843                  + reQ6nQ3nstarQ3nstar
6844                  + reQ8nQ5nstarQ3nstar
6845                  + reQ7nQ6nstarQ1nstar
6846                  + reQ2nQ1nstarQ1nstar
6847                  + reQ8nQ7nstarQ1nstar
6848                  + reQ4nQ3nstarQ1nstar
6849                  - (dMult-6.)*reQ6nQ5nstarQ1nstar
6850                  + 3.*reQ3nQ2nstarQ1nstar
6851                  + reQ2nQ1nstarQ1nstar
6852                  + 2.*reQ5nQ3nstarQ2nstar
6853                  + 3.*reQ7nQ5nstarQ2nstar
6854                  + reQ5nQ4nstarQ1nstar
6855                  + reQ5nQ3nstarQ2nstar
6856                  - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6857                  - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6858                  - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6859                  - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6860                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6861                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)) 
6862                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)) 
6863                  - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)) 
6864                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)) 
6865                  + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6866                  + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6867                  + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6868                  + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*dMult*(dMult-12.)) 
6869                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6870   // to be polished:
6871   five6n3n5n3n1n = (reQ6nQ3nQ5nstarQ3nstarQ1nstar
6872                  - reQ6nQ3nQ5nstarQ4nstar
6873                  - reQ8nQ1nQ6nstarQ3nstar
6874                  - reQ6nQ3nstarQ2nstarQ1nstar
6875                  - reQ9nQ5nstarQ3nstarQ1nstar
6876                  - reQ5nQ1nQ3nstarQ3nstar
6877                  - reQ6nQ2nQ5nstarQ3nstar
6878                  + reQ3nQ2nstarQ1nstar
6879                  + reQ9nQ6nstarQ3nstar
6880                  + 3.*reQ6nQ3nstarQ3nstar
6881                  + 2.*reQ9nQ6nstarQ3nstar
6882                  + reQ6nQ4nstarQ2nstar
6883                  + reQ9nQ5nstarQ4nstar
6884                  + reQ8nQ6nstarQ2nstar
6885                  + reQ3nQ2nstarQ1nstar
6886                  + reQ9nQ8nstarQ1nstar
6887                  + reQ3nQ2nstarQ1nstar
6888                  - (dMult-6.)*reQ6nQ5nstarQ1nstar
6889                  + 3.*reQ4nQ3nstarQ1nstar
6890                  + reQ3nQ2nstarQ1nstar
6891                  + 2.*reQ5nQ3nstarQ2nstar
6892                  + 3.*reQ8nQ5nstarQ3nstar
6893                  + reQ5nQ3nstarQ2nstar
6894                  + reQ5nQ3nstarQ2nstar
6895                  - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6896                  - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6897                  - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6898                  - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
6899                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6900                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)) 
6901                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)) 
6902                  - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.)) 
6903                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)) 
6904                  + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6905                  + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6906                  + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6907                  + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.)) 
6908                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6909   // to be polished:
6910   five6n4n5n4n1n = (reQ6nQ4nQ5nstarQ4nstarQ1nstar
6911                  - reQ6nQ4nQ5nstarQ5nstar
6912                  - reQ9nQ1nQ6nstarQ4nstar
6913                  - reQ6nQ4nstarQ1nstarQ1nstar
6914                  - reQ10nQ5nstarQ4nstarQ1nstar
6915                  - reQ5nQ1nQ4nstarQ2nstar
6916                  - reQ6nQ3nQ5nstarQ4nstar
6917                  + reQ4nQ3nstarQ1nstar
6918                  + reQ10nQ6nstarQ4nstar
6919                  + 3.*reQ6nQ4nstarQ2nstar
6920                  + 2.*reQ10nQ6nstarQ4nstar
6921                  + reQ6nQ5nstarQ1nstar
6922                  + reQ10nQ5nstarQ5nstar
6923                  + reQ9nQ6nstarQ3nstar
6924                  + reQ4nQ3nstarQ1nstar
6925                  + reQ10nQ9nstarQ1nstar
6926                  + reQ2nQ1nstarQ1nstar
6927                  - (dMult-6.)*reQ6nQ5nstarQ1nstar
6928                  + 3.*reQ5nQ4nstarQ1nstar
6929                  + reQ4nQ3nstarQ1nstar
6930                  + 2.*reQ5nQ4nstarQ1nstar
6931                  + 3.*reQ9nQ5nstarQ4nstar
6932                  + reQ5nQ3nstarQ2nstar
6933                  + reQ5nQ4nstarQ1nstar
6934                  - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6935                  - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6936                  - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6937                  - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
6938                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6939                  - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)) 
6940                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)) 
6941                  - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.)) 
6942                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)) 
6943                  + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6944                  + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6945                  + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6946                  + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.)) 
6947                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6948   five6n5n5n3n3n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))
6949                  * (pow(dReQ3n,2.)*dReQ6n-pow(dImQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n)
6950                  - ((dReQ11n*dReQ5n+dImQ11n*dImQ5n)*(pow(dReQ3n,2)-pow(dImQ3n,2)) 
6951                  + 2.*dReQ3n*dImQ3n*(dImQ11n*dReQ5n-dReQ11n*dImQ5n))
6952                  - (dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
6953                  - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n 
6954                  + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n)
6955                  - 2.*(dImQ2n*dImQ3n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ2n*dReQ3n 
6956                  + dImQ3n*dImQ6n*dReQ2n*dReQ5n-dImQ2n*dImQ6n*dReQ3n*dReQ5n
6957                  - dImQ3n*dImQ5n*dReQ2n*dReQ6n+dImQ2n*dImQ5n*dReQ3n*dReQ6n 
6958                  + dImQ2n*dImQ3n*dReQ5n*dReQ6n+dReQ2n*dReQ3n*dReQ5n*dReQ6n)
6959                  - 2.*(dImQ3n*dImQ5n*dImQ6n*dImQ8n+dImQ6n*dImQ8n*dReQ3n*dReQ5n 
6960                  + dImQ5n*dImQ8n*dReQ3n*dReQ6n-dImQ3n*dImQ8n*dReQ5n*dReQ6n
6961                  - dImQ5n*dImQ6n*dReQ3n*dReQ8n+dImQ3n*dImQ6n*dReQ5n*dReQ8n 
6962                  + dImQ3n*dImQ5n*dReQ6n*dReQ8n+dReQ3n*dReQ5n*dReQ6n*dReQ8n)
6963                  + 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6964                  + 1.*(dReQ11n*dReQ6n*dReQ5n-dReQ11n*dImQ6n*dImQ5n+dImQ11n*dReQ6n*dImQ5n+dImQ11n*dImQ6n*dReQ5n)
6965                  + 3.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
6966                  + 2.*(dReQ8n*dReQ6n*dReQ2n-dReQ8n*dImQ6n*dImQ2n+dImQ8n*dReQ6n*dImQ2n+dImQ8n*dImQ6n*dReQ2n)
6967                  + 2.*(dReQ11n*dReQ8n*dReQ3n-dReQ11n*dImQ8n*dImQ3n+dImQ11n*dReQ8n*dImQ3n+dImQ11n*dImQ8n*dReQ3n)
6968                  + 2.*(dReQ11n*dReQ6n*dReQ5n-dReQ11n*dImQ6n*dImQ5n+dImQ11n*dReQ6n*dImQ5n+dImQ11n*dImQ6n*dReQ5n)
6969                  + 6.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
6970                  + 6.*(dReQ8n*dReQ5n*dReQ3n-dReQ8n*dImQ5n*dImQ3n+dImQ8n*dReQ5n*dImQ3n+dImQ8n*dImQ5n*dReQ3n)
6971                  - (dMult-6.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
6972                  - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6973                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6974                  - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))-4.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6975                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)) 
6976                  + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6977                  + 2.*(dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6978                  + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.)) 
6979                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6980   // to be polished:
6981   five6n2n6n1n1n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))
6982                  * (pow(dReQ1n,2.)*dReQ2n-pow(dImQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n)
6983                  - reQ8nQ6nstarQ1nstarQ1nstar
6984                  - reQ6nQ4nstarQ1nstarQ1nstar
6985                  - 2.*reQ6nQ1nQ5nstarQ2nstar
6986                  - 2.*reQ7nQ1nQ6nstarQ2nstar
6987                  + 2.*reQ5nQ4nstarQ1nstar
6988                  + reQ8nQ6nstarQ2nstar
6989                  + 3.*reQ6nQ4nstarQ2nstar
6990                  + 2.*reQ7nQ5nstarQ2nstar
6991                  + 2.*reQ8nQ7nstarQ1nstar
6992                  + 2.*reQ8nQ6nstarQ2nstar
6993                  + 6.*reQ6nQ5nstarQ1nstar
6994                  + 6.*reQ7nQ6nstarQ1nstar
6995                  - (dMult-6.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
6996                  - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6997                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6998                  - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))-4.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6999                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-4.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)) 
7000                  + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7001                  + 2.*(dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7002                  + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.)) 
7003                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7004   five6n3n6n2n1n = (reQ6nQ3nQ6nstarQ2nstarQ1nstar
7005                  - reQ7nQ2nQ6nstarQ3nstar
7006                  - reQ8nQ1nQ6nstarQ3nstar
7007                  - reQ6nQ1nQ4nstarQ3nstar
7008                  - reQ9nQ6nstarQ2nstarQ1nstar
7009                  - reQ6nQ3nstarQ2nstarQ1nstar
7010                  - reQ6nQ2nQ5nstarQ3nstar
7011                  + reQ6nQ5nstarQ1nstar
7012                  + reQ9nQ6nstarQ3nstar
7013                  + 3.*reQ6nQ3nstarQ3nstar
7014                  + 2.*reQ9nQ6nstarQ3nstar
7015                  + reQ7nQ4nstarQ3nstar
7016                  + reQ9nQ7nstarQ2nstar
7017                  + reQ8nQ5nstarQ3nstar
7018                  + reQ6nQ5nstarQ1nstar
7019                  + reQ9nQ8nstarQ1nstar
7020                  + reQ4nQ3nstarQ1nstar
7021                  - (dMult-6.)*reQ3nQ2nstarQ1nstar
7022                  + 3.*reQ7nQ6nstarQ1nstar
7023                  + reQ6nQ5nstarQ1nstar
7024                  + 2.*reQ6nQ4nstarQ2nstar
7025                  + 3.*reQ8nQ6nstarQ2nstar
7026                  + reQ5nQ3nstarQ2nstar
7027                  + reQ6nQ4nstarQ2nstar
7028                  - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7029                  - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7030                  - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7031                                  - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7032                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7033                  - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)) 
7034                  - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)) 
7035                  - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.)) 
7036                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)) 
7037                  + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7038                  + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7039                  + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7040                  + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.)) 
7041                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7042   five6n4n6n2n2n = (-(pow(dImQ6n,2.)+pow(dReQ6n,2.))
7043                  * (-2.*dImQ2n*dImQ4n*dReQ2n+pow(dImQ2n,2.)*dReQ4n-pow(dReQ2n,2.)*dReQ4n)
7044                  - (-pow(dImQ2n,2.)*dImQ6n*dImQ10n+dImQ6n*dImQ10n*pow(dReQ2n,2.)
7045                  + 2.*dImQ2n*dImQ10n*dReQ2n*dReQ6n-2.*dImQ2n*dImQ6n*dReQ2n*dReQ10n 
7046                  - pow(dImQ2n,2.)*dReQ6n*dReQ10n+pow(dReQ2n,2.)*dReQ6n*dReQ10n)
7047                  - 2.*(dImQ2n*dImQ4n*dImQ6n*dImQ8n+dImQ6n*dImQ8n*dReQ2n*dReQ4n 
7048                  + dImQ4n*dImQ8n*dReQ2n*dReQ6n-dImQ2n*dImQ8n*dReQ4n*dReQ6n
7049                  - dImQ4n*dImQ6n*dReQ2n*dReQ8n+dImQ2n*dImQ6n*dReQ4n*dReQ8n 
7050                  + dImQ2n*dImQ4n*dReQ6n*dReQ8n+dReQ2n*dReQ4n*dReQ6n*dReQ8n)
7051                  - (dReQ6n*pow(dReQ2n,3.)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2.)
7052                  + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2.)-dImQ6n*pow(dImQ2n,3.))
7053                  - 2.*((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n) 
7054                  + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7055                  + 2.*(dReQ10n*dReQ8n*dReQ2n-dReQ10n*dImQ8n*dImQ2n+dImQ10n*dReQ8n*dImQ2n+dImQ10n*dImQ8n*dReQ2n)
7056                  + 3.*(dReQ10n*dReQ4n*dReQ6n-dReQ10n*dImQ4n*dImQ6n+dImQ10n*dReQ4n*dImQ6n+dImQ10n*dImQ4n*dReQ6n)
7057                  + 6.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7058                  + 2.*(pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
7059                  + 9.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7060                  - (dMult-8.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7061                  - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.)) 
7062                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.)) 
7063                  - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))-4.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7064                  + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+(dMult-12.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7065                  + 2.*(dMult-9.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*dMult*(dMult-12.))
7066                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7067   // to be polished:
7068   five6n4n6n3n1n = (reQ6nQ4nQ6nstarQ3nstarQ1nstar
7069                  - reQ7nQ3nQ6nstarQ4nstar
7070                  - reQ9nQ1nQ6nstarQ4nstar
7071                  - reQ6nQ1nQ4nstarQ3nstar
7072                  - reQ10nQ6nstarQ3nstarQ1nstar
7073                  - reQ6nQ3nstarQ2nstarQ1nstar
7074                  - reQ6nQ3nQ5nstarQ4nstar
7075                  + reQ6nQ5nstarQ1nstar
7076                  + reQ10nQ6nstarQ4nstar
7077                  + 3.*reQ6nQ4nstarQ2nstar
7078                  + 2.*reQ10nQ6nstarQ4nstar
7079                  + reQ7nQ4nstarQ3nstar
7080                  + reQ10nQ7nstarQ3nstar
7081                  + reQ9nQ5nstarQ4nstar
7082                  + reQ6nQ5nstarQ1nstar
7083                  + reQ10nQ9nstarQ1nstar
7084                  + reQ3nQ2nstarQ1nstar
7085                  - (dMult-6.)*reQ4nQ3nstarQ1nstar
7086                  + 3.*reQ7nQ6nstarQ1nstar
7087                  + reQ6nQ5nstarQ1nstar
7088                  + 2.*reQ6nQ3nstarQ3nstar
7089                  + 3.*reQ9nQ6nstarQ3nstar
7090                  + reQ5nQ3nstarQ2nstar
7091                  + reQ6nQ3nstarQ3nstar
7092                  - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7093                  - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7094                  - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7095                  - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
7096                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7097                  - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)) 
7098                  - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)) 
7099                  - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.)) 
7100                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)) 
7101                  + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7102                  + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7103                  + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7104                  + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.)) 
7105                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7106   // to be polished:
7107   five6n5n5n4n2n = (reQ6nQ5nQ5nstarQ4nstarQ2nstar
7108                  - reQ7nQ4nQ6nstarQ5nstar
7109                  - reQ9nQ2nQ6nstarQ5nstar
7110                  - reQ6nQ1nQ5nstarQ2nstar
7111                  - reQ11nQ5nstarQ4nstarQ2nstar
7112                  - reQ5nQ1nQ4nstarQ2nstar
7113                  - reQ6nQ3nQ5nstarQ4nstar
7114                  + reQ5nQ3nstarQ2nstar
7115                  + reQ11nQ6nstarQ5nstar
7116                  + 3.*reQ6nQ5nstarQ1nstar
7117                  + 2.*reQ11nQ6nstarQ5nstar
7118                  + reQ7nQ6nstarQ1nstar
7119                  + reQ11nQ7nstarQ4nstar
7120                  + reQ9nQ6nstarQ3nstar
7121                  + reQ5nQ3nstarQ2nstar
7122                  + reQ11nQ9nstarQ2nstar
7123                  + reQ2nQ1nstarQ1nstar
7124                  - (dMult-6.)*reQ6nQ4nstarQ2nstar
7125                  + 3.*reQ7nQ5nstarQ2nstar
7126                  + reQ5nQ3nstarQ2nstar
7127                  + 2.*reQ5nQ4nstarQ1nstar
7128                  + 3.*reQ9nQ5nstarQ4nstar
7129                  + reQ4nQ3nstarQ1nstar
7130                  + reQ5nQ4nstarQ1nstar
7131                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7132                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7133                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7134                  - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))
7135                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7136                  - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)) 
7137                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)) 
7138                  - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.)) 
7139                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)) 
7140                  + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7141                  + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7142                  + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7143                  + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.)) 
7144                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7145   // to be polished:
7146   five6n5n6n3n2n = (reQ6nQ5nQ6nstarQ3nstarQ2nstar
7147                  - reQ8nQ3nQ6nstarQ5nstar
7148                  - reQ9nQ2nQ6nstarQ5nstar
7149                  - reQ6nQ2nQ5nstarQ3nstar
7150                  - reQ11nQ6nstarQ3nstarQ2nstar
7151                  - reQ6nQ3nstarQ2nstarQ1nstar
7152                  - reQ6nQ3nQ5nstarQ4nstar
7153                  + reQ6nQ4nstarQ2nstar
7154                  + reQ11nQ6nstarQ5nstar
7155                  + 3.*reQ6nQ5nstarQ1nstar
7156                  + 2.*reQ11nQ6nstarQ5nstar
7157                  + reQ8nQ5nstarQ3nstar
7158                  + reQ11nQ8nstarQ3nstar
7159                  + reQ9nQ5nstarQ4nstar
7160                  + reQ6nQ4nstarQ2nstar
7161                  + reQ11nQ9nstarQ2nstar
7162                  + reQ3nQ2nstarQ1nstar
7163                  - (dMult-6.)*reQ5nQ3nstarQ2nstar
7164                  + 3.*reQ8nQ6nstarQ2nstar
7165                  + reQ6nQ4nstarQ2nstar
7166                  + 2.*reQ6nQ3nstarQ3nstar
7167                  + 3.*reQ9nQ6nstarQ3nstar
7168                  + reQ4nQ3nstarQ1nstar
7169                  + reQ6nQ3nstarQ3nstar
7170                  - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7171                  - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7172                  - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7173                  - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))
7174                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7175                  - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.)) 
7176                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)) 
7177                  - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.)) 
7178                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)) 
7179                  + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7180                  + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7181                  + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7182                  + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.)) 
7183                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7184   // to be polished:
7185   five6n5n6n4n1n = (reQ6nQ5nQ6nstarQ4nstarQ1nstar
7186                  - reQ7nQ4nQ6nstarQ5nstar
7187                  - reQ10nQ1nQ6nstarQ5nstar
7188                  - reQ6nQ1nQ5nstarQ2nstar
7189                  - reQ11nQ6nstarQ4nstarQ1nstar
7190                  - reQ6nQ4nstarQ1nstarQ1nstar
7191                  - reQ6nQ4nQ5nstarQ5nstar
7192                  + reQ6nQ5nstarQ1nstar
7193                  + reQ11nQ6nstarQ5nstar
7194                  + 3.*reQ6nQ5nstarQ1nstar
7195                  + 2.*reQ11nQ6nstarQ5nstar
7196                  + reQ7nQ5nstarQ2nstar
7197                  + reQ11nQ7nstarQ4nstar
7198                  + reQ10nQ5nstarQ5nstar
7199                  + reQ6nQ5nstarQ1nstar
7200                  + reQ11nQ10nstarQ1nstar
7201                  + reQ2nQ1nstarQ1nstar
7202                  - (dMult-6.)*reQ5nQ4nstarQ1nstar
7203                  + 3.*reQ7nQ6nstarQ1nstar
7204                  + reQ6nQ5nstarQ1nstar
7205                  + 2.*reQ6nQ4nstarQ2nstar
7206                  + 3.*reQ10nQ6nstarQ4nstar
7207                  + reQ5nQ4nstarQ1nstar
7208                  + reQ6nQ4nstarQ2nstar
7209                  - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7210                  - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7211                  - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7212                  - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))
7213                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7214                  - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)) 
7215                  - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)) 
7216                  - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.)) 
7217                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)) 
7218                  + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7219                  + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7220                  + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7221                  + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.)) 
7222                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7223   //  f2) Two distinct harmonics (9):
7224   five2n1n1n1n1n = ((dReQ2n*dReQ1n-dImQ2n*dImQ1n)*(pow(dReQ1n,3)-3.*dReQ1n*pow(dImQ1n,2))
7225                  + (dReQ2n*dImQ1n+dReQ1n*dImQ2n)*(3.*dImQ1n*pow(dReQ1n,2)-pow(dImQ1n,3))
7226                  - (dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
7227                  + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3))
7228                  + 5.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7229                  - 3.*(dMult-5.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7230                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7231                  - 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))     
7232                  + 3.*(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7233                  - 3.*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
7234                  + 6.*(2.*dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult*(dMult-4.))
7235                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7236   five2n2n2n1n1n = ((pow(dReQ2n,2.)+pow(dImQ2n,2.))*(dReQ2n*(pow(dReQ1n,2.)-pow(dImQ1n,2.))+2.*dImQ2n*dReQ1n*dImQ1n)
7237                  - ((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2)) 
7238                  + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
7239                  - 2.*((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n) 
7240                  + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7241                  + 3.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7242                  + 8.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7243                  + 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7244                  - 2.*(dMult-6.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7245                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7246                  - pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)
7247                  + 2.*(3.*dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7248                  - 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7249                  + 4.*(dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
7250                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7251   five3n3n2n2n2n = (pow(dReQ2n,3.)*pow(dReQ3n,2.)-3.*dReQ2n*pow(dReQ3n,2.)*pow(dImQ2n,2.)
7252                  + 6.*pow(dReQ2n,2.)*dReQ3n*dImQ2n*dImQ3n-2.*dReQ3n*pow(dImQ2n,3.)*dImQ3n
7253                  - pow(dReQ2n,3.)*pow(dImQ3n,2.)+3.*dReQ2n*pow(dImQ2n,2.)*pow(dImQ3n,2.)
7254                  - (dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
7255                  + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3))
7256                  - 3.*((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
7257                  + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n)
7258                  - 6.*((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n) 
7259                  + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7260                  + 2.*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7261                  + 3.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7262                  + 6.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7263                  + 6.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7264                  + 12.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7265                  + 6.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7266                  - 2.*((pow(dReQ6n,2.)+pow(dImQ6n,2.))+3.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7267                  + 6.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+9.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7268                  + 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-12.*dMult))
7269                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7270   five4n1n1n1n1n = (pow(dReQ1n,4.)*dReQ4n-6.*pow(dReQ1n,2.)*dReQ4n*pow(dImQ1n,2.)
7271                  + pow(dImQ1n,4.)*dReQ4n+4.*pow(dReQ1n,3.)*dImQ1n*dImQ4n-4.*pow(dImQ1n,3.)*dReQ1n*dImQ4n
7272                  - 6.*((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2)) 
7273                  + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
7274                  - 4.*(dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
7275                  + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3))
7276                  + 8.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7277                  + 3.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7278                  + 12.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n) 
7279                  + 12.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7280                  - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-8.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7281                  - 12.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-24.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))+24.*dMult)
7282                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7283   five4n2n2n2n2n = ((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(pow(dReQ2n,3)-3.*dReQ2n*pow(dImQ2n,2))
7284                  + (dReQ4n*dImQ2n+dReQ2n*dImQ4n)*(3.*dImQ2n*pow(dReQ2n,2)-pow(dImQ2n,3))
7285                  - (dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
7286                  + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3))
7287                  + 5.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7288                  - 3.*(dMult-5.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7289                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7290                  - 3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))     
7291                  + 3.*(dMult-4.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7292                  - 3.*pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)
7293                  + 6.*(2.*dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-6.*dMult*(dMult-4.))
7294                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7295   five4n4n4n2n2n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))*(dReQ4n*(pow(dReQ2n,2.)-pow(dImQ2n,2.))+2.*dImQ4n*dReQ2n*dImQ2n)
7296                  - ((dReQ8n*dReQ4n+dImQ8n*dImQ4n)*(pow(dReQ2n,2)-pow(dImQ2n,2)) 
7297                  + 2.*dReQ2n*dImQ2n*(dImQ8n*dReQ4n-dReQ8n*dImQ4n))
7298                  - 2.*((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n) 
7299                  + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7300                  + 3.*(pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
7301                  + 8.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7302                  + 2.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7303                  - 2.*(dMult-6.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7304                  - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))-4.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7305                  - pow((pow(dReQ4n,2.)+pow(dImQ4n,2.)),2.)
7306                  + 2.*(3.*dMult-10.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7307                  - 4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7308                  + 4.*(dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*dMult*(dMult-6.))
7309                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7310   five6n3n3n3n3n = ((dReQ6n*dReQ3n-dImQ6n*dImQ3n)*(pow(dReQ3n,3)-3.*dReQ3n*pow(dImQ3n,2))
7311                  + (dReQ6n*dImQ3n+dReQ3n*dImQ6n)*(3.*dImQ3n*pow(dReQ3n,2)-pow(dImQ3n,3))
7312                  - (dReQ9n*pow(dReQ3n,3)-3.*dReQ3n*dReQ9n*pow(dImQ3n,2)
7313                  + 3.*dImQ3n*dImQ9n*pow(dReQ3n,2)-dImQ9n*pow(dImQ3n,3))
7314                  + 5.*(dReQ9n*dReQ6n*dReQ3n-dReQ9n*dImQ6n*dImQ3n+dImQ9n*dReQ6n*dImQ3n+dImQ9n*dImQ6n*dReQ3n)
7315                  - 3.*(dMult-5.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7316                  - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7317                  - 3.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))     
7318                  + 3.*(dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7319                  - 3.*pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)
7320                  + 6.*(2.*dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-6.*dMult*(dMult-4.))
7321                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7322   five6n6n4n4n4n = (pow(dReQ4n,3.)*pow(dReQ6n,2.)-3.*dReQ4n*pow(dReQ6n,2.)*pow(dImQ4n,2.)
7323                  + 6.*pow(dReQ4n,2.)*dReQ6n*dImQ4n*dImQ6n-2.*dReQ6n*pow(dImQ4n,3.)*dImQ6n
7324                  - pow(dReQ4n,3.)*pow(dImQ6n,2.)+3.*dReQ4n*pow(dImQ4n,2.)*pow(dImQ6n,2.)
7325                  - (dReQ12n*pow(dReQ4n,3)-3.*dReQ4n*dReQ12n*pow(dImQ4n,2)
7326                  + 3.*dImQ4n*dImQ12n*pow(dReQ4n,2)-dImQ12n*pow(dImQ4n,3))
7327                  - 3.*((dReQ8n*dReQ4n-dImQ8n*dImQ4n)*(dReQ6n*dReQ6n-dImQ6n*dImQ6n)
7328                  + 2.*(dReQ8n*dImQ4n+dImQ8n*dReQ4n)*dReQ6n*dImQ6n)
7329                  - 6.*((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n) 
7330                  + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7331                  + 2.*(pow(dReQ6n,2.)*dReQ12n+2.*dReQ6n*dImQ6n*dImQ12n-pow(dImQ6n,2.)*dReQ12n)
7332                  + 3.*(dReQ12n*dReQ8n*dReQ4n-dReQ12n*dImQ8n*dImQ4n+dImQ12n*dReQ8n*dImQ4n+dImQ12n*dImQ8n*dReQ4n)
7333                  + 6.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7334                  + 6.*(pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
7335                  + 12.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7336                  + 6.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7337                  - 2.*((pow(dReQ12n,2.)+pow(dImQ12n,2.))+3.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7338                  + 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+9.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7339                  + 6.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-12.*dMult))
7340                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7341   five6n6n6n3n3n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))*(dReQ6n*(pow(dReQ3n,2.)-pow(dImQ3n,2.))+2.*dImQ6n*dReQ3n*dImQ3n)
7342                  - ((dReQ12n*dReQ6n+dImQ12n*dImQ6n)*(pow(dReQ3n,2)-pow(dImQ3n,2)) 
7343                  + 2.*dReQ3n*dImQ3n*(dImQ12n*dReQ6n-dReQ12n*dImQ6n))
7344                  - 2.*((pow(dReQ6n,2.)-pow(dImQ6n,2.))*(dReQ9n*dReQ3n-dImQ9n*dImQ3n) 
7345                  + 2.*dReQ6n*dImQ6n*(dReQ9n*dImQ3n+dImQ9n*dReQ3n))
7346                  + 3.*(pow(dReQ6n,2.)*dReQ12n+2.*dReQ6n*dImQ6n*dImQ12n-pow(dImQ6n,2.)*dReQ12n)
7347                  + 8.*(dReQ9n*dReQ6n*dReQ3n-dReQ9n*dImQ6n*dImQ3n+dImQ9n*dReQ6n*dImQ3n+dImQ9n*dImQ6n*dReQ3n)
7348                  + 2.*(dReQ12n*(dReQ9n*dReQ3n-dImQ9n*dImQ3n)+dImQ12n*(dReQ9n*dImQ3n+dImQ9n*dReQ3n))
7349                  - 2.*(dMult-6.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7350                  - 2.*(pow(dReQ12n,2.)+pow(dImQ12n,2.))-4.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7351                  - pow((pow(dReQ6n,2.)+pow(dImQ6n,2.)),2.)
7352                  + 2.*(3.*dMult-10.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7353                  - 4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7354                  + 4.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-4.*dMult*(dMult-6.))
7355                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7356   //  f3) Three distinct harmonics (30):
7357   five3n1n2n1n1n = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))*(dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
7358                  + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n)
7359                  - ((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2)) 
7360                  + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n)) 
7361                  - (dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
7362                  + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3))
7363                  - ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n) 
7364                  + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7365                  + 4.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7366                  + pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n
7367                  - (2.*dMult-13.)*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
7368                  + dImQ3n*dImQ2n*dReQ1n)
7369                  + 7.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7370                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7371                  + 2.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7372                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7373                  + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7374                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7375                  - pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
7376                  + 2.*(3.*dMult-11.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
7377                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7378   five3n2n2n2n1n = ((pow(dImQ2n,2.)+pow(dReQ2n,2.))*(dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n 
7379                  - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n)
7380                  - (-pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
7381                  + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n 
7382                  - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n)
7383                  - (dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n 
7384                  + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
7385                  - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n 
7386                  + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
7387                  - ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n) 
7388                  + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7389                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7390                  + (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
7391                  + 4.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
7392                  + dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n)
7393                  + 3.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7394                  - 2.*(dMult-6.)*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7395                  + 4.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7396                  - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7397                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7398                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7399                  - pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)+2.*(3.*dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7400                  + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
7401                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)); 
7402   five3n3n3n2n1n = ((pow(dImQ3n,2.)+pow(dReQ3n,2.))*(dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
7403                  - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n)
7404                  - (dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
7405                  - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
7406                  + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n 
7407                  + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
7408                  - (dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
7409                  - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n 
7410                  + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n)
7411                  - ((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
7412                  + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n)
7413                  + dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n
7414                  + dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n
7415                  + 3.*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7416                  + 4.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
7417                  + 4.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7418                  - 2.*(dMult-6.)*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7419                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.)) 
7420                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7421                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7422                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(3.*dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7423                  - pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)+2.*(dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7424                  + 2.*(dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
7425                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7426   five4n1n3n1n1n = (reQ4nQ1nQ3nstarQ1nstarQ1nstar
7427                  - reQ4nQ1nQ3nstarQ2nstar
7428                  - reQ4nQ1nQ4nstarQ1nstar
7429                  - reQ4nQ2nstarQ1nstarQ1nstar
7430                  - reQ5nQ3nstarQ1nstarQ1nstar
7431                  - reQ3nQ1nQ3nstarQ1nstar
7432                  - dMult*reQ4nQ3nstarQ1nstar
7433                  + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7434                  + reQ5nQ4nstarQ1nstar
7435                  + 3.*reQ4nQ3nstarQ1nstar
7436                  + 2.*reQ5nQ4nstarQ1nstar
7437                  + reQ4nQ2nstarQ2nstar
7438                  + reQ5nQ3nstarQ2nstar
7439                  + dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7440                  + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7441                  + reQ5nQ4nstarQ1nstar
7442                  + reQ3nQ2nstarQ1nstar
7443                  - (dMult-6.)*reQ4nQ3nstarQ1nstar
7444                  + 3.*reQ2nQ1nstarQ1nstar
7445                  + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7446                  + 2.*reQ3nQ2nstarQ1nstar
7447                  + 3.*reQ4nQ3nstarQ1nstar
7448                  + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7449                  + reQ3nQ2nstarQ1nstar
7450                  - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7451                  - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7452                  - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7453                                  - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7454                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7455                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)) 
7456                  - 2.*dMult*dMult 
7457                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)) 
7458                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)) 
7459                  + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7460                  + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7461                  + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7462                  + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.)) 
7463                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7464   five4n1n1n3n3n = // calculated by Peter Jochumzsen
7465                  (pow(dReQ1n*dReQ3n,2.)*dReQ4n-pow(dReQ3n*dImQ1n,2.)*dReQ4n  
7466                  + 4.*dReQ1n*dReQ3n*dReQ4n*dImQ1n*dImQ3n 
7467                  - pow(dReQ1n*dImQ3n,2.)*dReQ4n+pow(dImQ1n*dImQ3n,2.)*dReQ4n  
7468                  - 2.*dReQ1n*pow(dReQ3n,2.)*dImQ1n*dImQ4n+2.*pow(dReQ1n,2.)*dReQ3n*dImQ3n*dImQ4n 
7469                  - 2.*dReQ3n*pow(dImQ1n,2.)*dImQ3n*dImQ4n+2.*dReQ1n*dImQ1n*pow(dImQ3n,2.)*dImQ4n
7470                  + 6.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7471                  - 1.*(-pow(dImQ1n,2.)*dImQ4n*dImQ6n+dImQ4n*dImQ6n*pow(dReQ1n,2.) 
7472                  + 2.*dImQ1n*dImQ6n*dReQ1n*dReQ4n-2.*dImQ1n*dImQ4n*dReQ1n*dReQ6n 
7473                  - pow(dImQ1n,2.)*dReQ4n*dReQ6n+pow(dReQ1n,2.)*dReQ4n*dReQ6n) 
7474                  - 1.*((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
7475                  + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n) 
7476                  + 1.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7477                  - 2.*(dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
7478                  - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n 
7479                  + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n) 
7480                  + 2.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7481                  + 4.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n)) 
7482                  - 2.*(dReQ3n*pow(dReQ1n,3.)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2.)
7483                  + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2.)-dImQ3n*pow(dImQ1n,3.))
7484                  + 10.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n) 
7485                  + 2.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
7486                  + 2.*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n) 
7487                  - 4.*(dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n 
7488                  + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
7489                  - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n 
7490                  + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
7491                  + 4.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
7492                  + 4.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
7493                  - 16.*pow(dReQ1n,2.)-16.*pow(dImQ1n,2.)
7494                  - 10.*pow(dReQ2n,2.)-10.*pow(dImQ2n,2.)-12.*pow(dReQ3n,2.)-12.*pow(dImQ3n,2.)
7495                  - 6.*pow(dReQ4n,2.)-6.*pow(dImQ4n,2.)-4.*pow(dReQ5n,2.)-4.*pow(dImQ5n,2.)
7496                  - 2.*pow(dReQ6n,2.)-2.*pow(dImQ6n,2.)+24.*dMult)
7497                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7498   // to be polished:
7499   five4n3n3n3n1n = (reQ4nQ3nQ3nstarQ3nstarQ1nstar
7500                  - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7501                  - reQ6nQ1nQ4nstarQ3nstar
7502                  - dMult*reQ4nQ3nstarQ1nstar
7503                  - reQ7nQ3nstarQ3nstarQ1nstar
7504                  - reQ3nQ1nQ3nstarQ1nstar
7505                  - reQ4nQ2nQ3nstarQ3nstar
7506                  + reQ3nQ2nstarQ1nstar
7507                  + reQ7nQ4nstarQ3nstar
7508                  + 3.*reQ4nQ3nstarQ1nstar
7509                  + 2.*reQ7nQ4nstarQ3nstar
7510                  + dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7511                  + reQ7nQ4nstarQ3nstar
7512                  + reQ6nQ4nstarQ2nstar
7513                  + reQ3nQ2nstarQ1nstar
7514                  + reQ7nQ6nstarQ1nstar
7515                  + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7516                  - (dMult-6.)*reQ4nQ3nstarQ1nstar
7517                  + 3.*reQ4nQ3nstarQ1nstar
7518                  + reQ3nQ2nstarQ1nstar
7519                  + 2.*dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7520                  + 3.*reQ6nQ3nstarQ3nstar
7521                  + reQ3nQ2nstarQ1nstar
7522                  + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7523                  - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7524                  - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7525                  - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7526                                  - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7527                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7528                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)) 
7529                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7530                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)) 
7531                  - 2.*dMult*dMult 
7532                  + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7533                  + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7534                  + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7535                  + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.)) 
7536                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7537
7538   // to be polished:
7539   five4n4n3n3n2n = (reQ4nQ4nQ3nstarQ3nstarQ2nstar
7540                  - reQ5nQ3nQ4nstarQ4nstar-reQ5nQ3nQ4nstarQ4nstar-reQ6nQ2nQ4nstarQ4nstar
7541                  - reQ4nQ1nQ3nstarQ2nstar-reQ4nQ1nQ3nstarQ2nstar-reQ4nQ2nQ3nstarQ3nstar                  
7542                                  - reQ8nQ3nstarQ3nstarQ2nstar-reQ4nQ2nQ3nstarQ3nstar-reQ4nQ1nQ3nstarQ2nstar-reQ4nQ1nQ3nstarQ2nstar
7543                  + 2.*(reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ8nQ4nstarQ4nstar)
7544                                  + reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ6nQ4nstarQ2nstar
7545                  + reQ8nQ6nstarQ2nstar+reQ8nQ5nstarQ3nstar+reQ8nQ5nstarQ3nstar
7546                                  + reQ5nQ4nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar                                                           
7547                                  + reQ5nQ4nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar                                                           
7548                                  + reQ6nQ4nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7549                  + 2.*(reQ6nQ3nstarQ3nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar)
7550                  + 2.*(reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar)
7551                                  - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7552                                  - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7553                                  - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.))
7554                                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))                                
7555                                  - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
7556                                  + 24.*dMult) 
7557                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7558
7559   /*
7560   // correct recursive formula, not needed for the time being.
7561   five4n4n3n3n2n = (reQ4nQ4nQ3nstarQ3nstarQ2nstar
7562                  - dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
7563                  * (2.*four4n2n3n3n+4.*four4n1n3n2n+1.*four8n3n3n2n+1.*four6n2n4n4n+2.*four5n3n4n4n)
7564                  - dMult*(dMult-1.)*(dMult-2.)
7565                  * (4.*three4n3n1n+2.*three4n2n2n+2.*three5n3n2n+1.*three6n3n3n+1.*three8n4n4n
7566                                  + 4.*three3n2n1n+2.*three2n1n1n+1.*three8n6n2n+2.*three8n5n3n+2.*three6n4n2n+4.*three5n4n1n)
7567                  - dMult*(dMult-1.)
7568                                  * (1.*two2n2n+2.*two3n3n+2.*two4n4n+2.*two5n5n+1.*two6n6n+4.*two1n1n+2.*two2n2n+1.*two8n8n)
7569                                  - dMult)
7570                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)); 
7571   */
7572
7573   // to be polished:
7574   five4n4n4n3n1n = (reQ4nQ4nQ4nstarQ3nstarQ1nstar
7575                  - reQ5nQ3nQ4nstarQ4nstar
7576                  - reQ7nQ1nQ4nstarQ4nstar
7577                  - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7578                  - reQ8nQ4nstarQ3nstarQ1nstar
7579                  - dMult*reQ4nQ3nstarQ1nstar
7580                  - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7581                  + reQ4nQ3nstarQ1nstar
7582                  + reQ8nQ4nstarQ4nstar
7583                  + 3.*dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7584                  + 2.*reQ8nQ4nstarQ4nstar
7585                  + reQ5nQ4nstarQ1nstar
7586                  + reQ8nQ5nstarQ3nstar
7587                  + reQ7nQ4nstarQ3nstar
7588                  + reQ4nQ3nstarQ1nstar
7589                  + reQ8nQ7nstarQ1nstar
7590                  + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7591                  - (dMult-6.)*reQ4nQ3nstarQ1nstar
7592                  + 3.*reQ5nQ4nstarQ1nstar
7593                  + reQ4nQ3nstarQ1nstar
7594                  + 2.*reQ4nQ3nstarQ1nstar
7595                  + 3.*reQ7nQ4nstarQ3nstar
7596                  + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7597                  + reQ4nQ3nstarQ1nstar
7598                  - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7599                  - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7600                  - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7601                                  - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7602                  - 2.*dMult*dMult 
7603                  - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)) 
7604                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7605                  - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)) 
7606                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)) 
7607                  + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7608                  + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7609                  + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7610                  + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.)) 
7611                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7612   // to be polished:
7613   five5n2n1n1n1n = (reQ5nQ2nstarQ1nstarQ1nstarQ1nstar
7614                      - reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar
7615                                  - reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar
7616                                  - reQ3nQ1nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar
7617                  + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar)
7618                                  + reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar
7619                                  + reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7620                                  + reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
7621                                  + reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
7622                                  + reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
7623                  + 2.*(reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar)
7624                  + 2.*(reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar)
7625                                  - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7626                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.))
7627                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
7628                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
7629                                  - 6.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7630                                  + 24.*dMult) 
7631                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7632   // to be polished:
7633   five5n1n2n2n2n = (reQ5nQ1nQ2nstarQ2nstarQ2nstar
7634                  - reQ5nQ1nQ4nstarQ2nstar-reQ5nQ1nQ4nstarQ2nstar-reQ5nQ1nQ4nstarQ2nstar
7635                                  - reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar
7636                                  - reQ6nQ2nstarQ2nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar
7637                                  + 2.*(reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ6nQ5nstarQ1nstar)
7638                                  + reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
7639                                  + reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar
7640                                  + reQ4nQ3nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7641                                  + reQ4nQ3nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7642                                  + reQ4nQ3nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7643                  + 2.*(reQ4nQ2nstarQ2nstar+reQ4nQ2nstarQ2nstar+reQ4nQ2nstarQ2nstar)
7644                  + 2.*(reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar)
7645                                  - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7646                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
7647                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.))
7648                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7649                                  - 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
7650                                  + 24.*dMult) 
7651                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7652   // to be polished:
7653   five5n2n3n2n2n = (reQ5nQ2nQ3nstarQ2nstarQ2nstar
7654                  - reQ5nQ2nQ4nstarQ3nstar
7655                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7656                  - reQ5nQ2nstarQ2nstarQ1nstar
7657                  - reQ7nQ3nstarQ2nstarQ2nstar
7658                  - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7659                  - dMult*reQ5nQ3nstarQ2nstar
7660                  + dMult*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7661                  + reQ7nQ5nstarQ2nstar
7662                  + 3.*reQ5nQ3nstarQ2nstar
7663                  + 2.*reQ7nQ5nstarQ2nstar
7664                  + reQ5nQ4nstarQ1nstar
7665                  + reQ7nQ4nstarQ3nstar
7666                  + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7667                  + dMult*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7668                  + reQ7nQ5nstarQ2nstar
7669                  + reQ3nQ2nstarQ1nstar
7670                  - (dMult-6.)*reQ5nQ3nstarQ2nstar
7671                  + 3.*reQ4nQ2nstarQ2nstar
7672                  + dMult*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7673                  + 2.*reQ3nQ2nstarQ1nstar
7674                  + 3.*reQ5nQ3nstarQ2nstar
7675                  + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7676                  + reQ3nQ2nstarQ1nstar
7677                  - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7678                  - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7679                  - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7680                                  - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7681                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)) 
7682                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)) 
7683                  - 2.*dMult*dMult
7684                  - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)) 
7685                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)) 
7686                  + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7687                  + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7688                  + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7689                  + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*dMult*(dMult-12.)) 
7690                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7691   // to be polished:
7692   five5n3n3n3n2n = (reQ5nQ3nQ3nstarQ3nstarQ2nstar
7693                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7694                  - reQ6nQ2nQ5nstarQ3nstar
7695                  - dMult*reQ5nQ3nstarQ2nstar
7696                  - reQ8nQ3nstarQ3nstarQ2nstar 
7697                                  - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7698                  - reQ5nQ1nQ3nstarQ3nstar
7699                  + reQ3nQ2nstarQ1nstar
7700                  + reQ8nQ5nstarQ3nstar
7701                  + 3.*reQ5nQ3nstarQ2nstar
7702                  + 2.*reQ8nQ5nstarQ3nstar
7703                  + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7704                  + reQ8nQ5nstarQ3nstar
7705                  + reQ6nQ5nstarQ1nstar
7706                  + reQ3nQ2nstarQ1nstar
7707                  + reQ8nQ6nstarQ2nstar
7708                  + dMult*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7709                  - (dMult-6.)*reQ5nQ3nstarQ2nstar
7710                  + 3.*reQ5nQ3nstarQ2nstar
7711                  + reQ3nQ2nstarQ1nstar
7712                  + 2.*dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7713                  + 3.*reQ6nQ3nstarQ3nstar
7714                  + reQ3nQ2nstarQ1nstar
7715                  + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7716                  - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7717                  - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7718                  - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7719                                  - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7720                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)) 
7721                  - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)) 
7722                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7723                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)) 
7724                  - 2.*dMult*dMult 
7725                  + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7726                  + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7727                  + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7728                  + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.)) 
7729                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7730   // to be polished:
7731   five5n1n4n1n1n = (reQ5nQ1nQ4nstarQ1nstarQ1nstar
7732                  - reQ5nQ1nQ4nstarQ2nstar
7733                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7734                  - reQ5nQ3nstarQ1nstarQ1nstar
7735                  - reQ6nQ4nstarQ1nstarQ1nstar 
7736                                  - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7737                  - dMult*reQ5nQ4nstarQ1nstar
7738                  + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7739                  + reQ6nQ5nstarQ1nstar
7740                  + 3.*reQ5nQ4nstarQ1nstar
7741                  + 2.*reQ6nQ5nstarQ1nstar
7742                  + reQ5nQ3nstarQ2nstar
7743                  + reQ6nQ4nstarQ2nstar
7744                  + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7745                  + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7746                  + reQ6nQ5nstarQ1nstar
7747                  + reQ4nQ3nstarQ1nstar
7748                  - (dMult-6.)*reQ5nQ4nstarQ1nstar
7749                  + 3.*reQ2nQ1nstarQ1nstar
7750                  + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7751                  + 2.*reQ4nQ3nstarQ1nstar
7752                  + 3.*reQ5nQ4nstarQ1nstar
7753                  + dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7754                  + reQ4nQ3nstarQ1nstar
7755                  - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7756                  - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7757                  - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7758                                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7759                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)) 
7760                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)) 
7761                  - 2.*dMult*dMult
7762                  - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)) 
7763                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)) 
7764                  + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7765                  + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7766                  + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7767                  + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.)) 
7768                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7769   // to be polished:
7770   five5n4n3n3n3n = (reQ5nQ4nQ3nstarQ3nstarQ3nstar
7771                  - reQ6nQ3nQ5nstarQ4nstar-reQ6nQ3nQ5nstarQ4nstar-reQ6nQ3nQ5nstarQ4nstar
7772                                  - reQ5nQ1nQ3nstarQ3nstar-reQ5nQ1nQ3nstarQ3nstar-reQ5nQ1nQ3nstarQ3nstar
7773                          - reQ9nQ3nstarQ3nstarQ3nstar-reQ4nQ2nQ3nstarQ3nstar-reQ4nQ2nQ3nstarQ3nstar-reQ4nQ2nQ3nstarQ3nstar
7774                                  + 2.*(reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ9nQ5nstarQ4nstar)
7775                                  + reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar
7776                                  + reQ9nQ6nstarQ3nstar+reQ9nQ6nstarQ3nstar+reQ9nQ6nstarQ3nstar
7777                                  + reQ6nQ4nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7778                                  + reQ6nQ4nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7779                                  + reQ6nQ4nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7780                  + 2.*(reQ6nQ3nstarQ3nstar+reQ6nQ3nstarQ3nstar+reQ6nQ3nstarQ3nstar)
7781                  + 2.*(reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar)
7782                                  - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7783                                  - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
7784                                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.))
7785                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7786                                  - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
7787                                  + 24.*dMult) 
7788                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7789   // to be polished:
7790   five5n4n4n4n1n = (reQ5nQ4nQ4nstarQ4nstarQ1nstar
7791                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7792                  - reQ8nQ1nQ5nstarQ4nstar
7793                  - dMult*reQ5nQ4nstarQ1nstar
7794                  - reQ9nQ4nstarQ4nstarQ1nstar 
7795                                  - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7796                  - reQ5nQ3nQ4nstarQ4nstar
7797                  + reQ4nQ3nstarQ1nstar
7798                  + reQ9nQ5nstarQ4nstar
7799                  + 3.*reQ5nQ4nstarQ1nstar
7800                  + 2.*reQ9nQ5nstarQ4nstar
7801                  + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7802                  + reQ9nQ5nstarQ4nstar
7803                  + reQ8nQ5nstarQ3nstar
7804                  + reQ4nQ3nstarQ1nstar
7805                  + reQ9nQ8nstarQ1nstar
7806                  + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7807                  - (dMult-6.)*reQ5nQ4nstarQ1nstar
7808                  + 3.*reQ5nQ4nstarQ1nstar
7809                  + reQ4nQ3nstarQ1nstar
7810                  + 2.*dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7811                  + 3.*reQ8nQ4nstarQ4nstar
7812                  + reQ4nQ3nstarQ1nstar
7813                  + dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7814                  - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7815                  - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7816                  - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7817                                  - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7818                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)) 
7819                  - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)) 
7820                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7821                  - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.)) 
7822                  - 2.*dMult*dMult 
7823                  + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7824                  + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7825                  + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7826                  + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.)) 
7827                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7828   // to be polished:
7829   five5n5n4n3n3n = (reQ5nQ5nQ4nstarQ3nstarQ3nstar
7830                  - reQ6nQ4nQ5nstarQ5nstar-reQ7nQ3nQ5nstarQ5nstar-reQ7nQ3nQ5nstarQ5nstar
7831                                  - reQ5nQ2nQ4nstarQ3nstar-reQ5nQ1nQ3nstarQ3nstar-reQ5nQ2nQ4nstarQ3nstar                  
7832                                  - reQ10nQ4nstarQ3nstarQ3nstar-reQ5nQ2nQ4nstarQ3nstar-reQ5nQ1nQ3nstarQ3nstar-reQ5nQ2nQ4nstarQ3nstar
7833                                  + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ10nQ5nstarQ5nstar)
7834                                  + reQ6nQ5nstarQ1nstar+reQ7nQ5nstarQ2nstar+reQ7nQ5nstarQ2nstar
7835                                  + reQ10nQ7nstarQ3nstar+reQ10nQ6nstarQ4nstar+reQ10nQ7nstarQ3nstar
7836                                  + reQ6nQ5nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7837                                  + reQ7nQ5nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ4nQ2nstarQ2nstar
7838                                  + reQ7nQ5nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ4nQ2nstarQ2nstar
7839                                  + 2.*(reQ7nQ4nstarQ3nstar+reQ7nQ4nstarQ3nstar+reQ6nQ3nstarQ3nstar)
7840                                  + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar)
7841                                  - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7842                                  - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7843                                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
7844                                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7845                                  - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
7846                                  + 24.*dMult) 
7847                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7848   // to be polished:
7849   five5n5n4n4n2n = (reQ5nQ5nQ4nstarQ4nstarQ2nstar
7850                  - reQ6nQ4nQ5nstarQ5nstar-reQ6nQ4nQ5nstarQ5nstar-reQ8nQ2nQ5nstarQ5nstar
7851                                  - reQ5nQ1nQ4nstarQ2nstar-reQ5nQ1nQ4nstarQ2nstar-reQ5nQ3nQ4nstarQ4nstar                  
7852                                  - reQ10nQ4nstarQ4nstarQ2nstar-reQ5nQ3nQ4nstarQ4nstar-reQ5nQ1nQ4nstarQ2nstar-reQ5nQ1nQ4nstarQ2nstar
7853                                  + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar+reQ10nQ5nstarQ5nstar)
7854                                  + reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ8nQ5nstarQ3nstar
7855                                  + reQ10nQ8nstarQ2nstar+reQ10nQ6nstarQ4nstar+reQ10nQ6nstarQ4nstar
7856                                  + reQ6nQ5nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ4nQ3nstarQ1nstar
7857                                  + reQ6nQ5nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ4nQ3nstarQ1nstar
7858                                  + reQ8nQ5nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
7859                                  + 2.*(reQ8nQ4nstarQ4nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar)
7860                                  + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar)
7861                                  - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7862                                  - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7863                                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.))
7864                                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7865                                  - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
7866                                  + 24.*dMult) 
7867                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7868   // to be polished:
7869   five5n5n5n3n2n = (reQ5nQ5nQ5nstarQ3nstarQ2nstar
7870                  - reQ7nQ3nQ5nstarQ5nstar
7871                  - reQ8nQ2nQ5nstarQ5nstar
7872                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7873                  - reQ10nQ5nstarQ3nstarQ2nstar 
7874                                  - dMult*reQ5nQ3nstarQ2nstar
7875                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7876                  + reQ5nQ3nstarQ2nstar
7877                  + reQ10nQ5nstarQ5nstar
7878                  + 3.*dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7879                  + 2.*reQ10nQ5nstarQ5nstar
7880                  + reQ7nQ5nstarQ2nstar
7881                  + reQ10nQ7nstarQ3nstar
7882                  + reQ8nQ5nstarQ3nstar
7883                  + reQ5nQ3nstarQ2nstar
7884                  + reQ10nQ8nstarQ2nstar
7885                  + dMult*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7886                  - (dMult-6.)*reQ5nQ3nstarQ2nstar
7887                  + 3.*reQ7nQ5nstarQ2nstar
7888                  + reQ5nQ3nstarQ2nstar
7889                  + 2.*reQ5nQ3nstarQ2nstar
7890                  + 3.*reQ8nQ5nstarQ3nstar
7891                  + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7892                  + reQ5nQ3nstarQ2nstar
7893                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7894                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7895                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7896                                  - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
7897                  - 2.*dMult*dMult 
7898                  - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)) 
7899                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7900                  - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.)) 
7901                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7902                  + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7903                  + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7904                  + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7905                  + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.)) 
7906                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7907   // to be polished:
7908   five5n5n5n4n1n = (reQ5nQ5nQ5nstarQ4nstarQ1nstar
7909                  - reQ6nQ4nQ5nstarQ5nstar
7910                  - reQ9nQ1nQ5nstarQ5nstar
7911                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7912                  - reQ10nQ5nstarQ4nstarQ1nstar 
7913                                  - dMult*reQ5nQ4nstarQ1nstar
7914                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7915                  + reQ5nQ4nstarQ1nstar
7916                  + reQ10nQ5nstarQ5nstar
7917                  + 3.*dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7918                  + 2.*reQ10nQ5nstarQ5nstar
7919                  + reQ6nQ5nstarQ1nstar
7920                  + reQ10nQ6nstarQ4nstar
7921                  + reQ9nQ5nstarQ4nstar
7922                  + reQ5nQ4nstarQ1nstar
7923                  + reQ10nQ9nstarQ1nstar
7924                  + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7925                  - (dMult-6.)*reQ5nQ4nstarQ1nstar
7926                  + 3.*reQ6nQ5nstarQ1nstar
7927                  + reQ5nQ4nstarQ1nstar
7928                  + 2.*reQ5nQ4nstarQ1nstar
7929                  + 3.*reQ9nQ5nstarQ4nstar
7930                  + dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7931                  + reQ5nQ4nstarQ1nstar
7932                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7933                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7934                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7935                                  - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
7936                  - 2.*dMult*dMult 
7937                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)) 
7938                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7939                  - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.)) 
7940                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7941                  + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7942                  + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7943                  + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7944                  + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.)) 
7945                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7946   five6n2n2n1n1n = // calculated by Peter Jochumzsen 
7947                  (pow(dReQ1n*dReQ2n,2.)*dReQ6n-pow(dReQ2n*dImQ1n,2.)*dReQ6n
7948                  - 4.*dReQ1n*dReQ2n*dReQ6n*dImQ1n*dImQ2n 
7949                  - pow(dReQ1n*dImQ2n,2.)*dReQ6n+pow(dImQ1n*dImQ2n,2.)*dReQ6n
7950                  + 2.*dReQ1n*pow(dReQ2n,2.)*dImQ1n*dImQ6n+2.*pow(dReQ1n,2.)*dReQ2n*dImQ2n*dImQ6n 
7951                  - 2.*dReQ2n*pow(dImQ1n,2.)*dImQ2n*dImQ6n-2.*dReQ1n*dImQ1n*pow(dImQ2n,2.)*dImQ6n
7952                  + 2.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n) 
7953                  + 8.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7954                  + 5.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7955                  - (-pow(dImQ1n,2.)*dImQ4n*dImQ6n+dImQ4n*dImQ6n*pow(dReQ1n,2.) 
7956                  + 2.*dImQ1n*dImQ6n*dReQ1n*dReQ4n-2.*dImQ1n*dImQ4n*dReQ1n*dReQ6n 
7957                  - pow(dImQ1n,2.)*dReQ4n*dReQ6n+pow(dReQ1n,2.)*dReQ4n*dReQ6n)
7958                  + 2.*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n) 
7959                  - (dReQ6n*pow(dReQ2n,3.)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2.)
7960                  + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2.)-dImQ6n*pow(dImQ2n,3.))
7961                  + 4.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n) 
7962                  - 2.*((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2.)-pow(dImQ1n,2.)) 
7963                  + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
7964                  + 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
7965                  - 2.*(-pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
7966                  + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n 
7967                  - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n) 
7968                  + 4.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n)) 
7969                  + 4.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
7970                  + 4.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
7971                  - 4.*(dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
7972                  - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
7973                  + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n 
7974                  + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
7975                  - 12.*pow(dReQ1n,2.)-12.*pow(dImQ1n,2.)-14.*pow(dReQ2n,2.)-14.*pow(dImQ2n,2.)
7976                  - 8.*pow(dReQ3n,2.)-8.*pow(dImQ3n,2.)-6.*pow(dReQ4n,2.)-6.*pow(dImQ4n,2.)
7977                  - 4.*pow(dReQ5n,2.)-4.*pow(dImQ5n,2.)-6.*pow(dReQ6n,2.)-6.*pow(dImQ6n,2.)+24.*dMult)
7978                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7979   // to be polished:
7980   five6n3n1n1n1n = (reQ6nQ3nstarQ1nstarQ1nstarQ1nstar
7981                  - reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar
7982                                  - reQ6nQ4nstarQ1nstarQ1nstar-reQ6nQ4nstarQ1nstarQ1nstar-reQ6nQ4nstarQ1nstarQ1nstar
7983                                  - reQ3nQ1nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar
7984                  + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ6nQ3nstarQ3nstar)
7985                                  + reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar
7986                                  + reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7987                                  + reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
7988                                  + reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
7989                                  + reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
7990                  + 2.*(reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar)
7991                  + 2.*(reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar)
7992                                  - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7993                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.))
7994                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
7995                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.))
7996                                  - 6.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7997                                  + 24.*dMult) 
7998                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7999
8000
8001   // to be polished:
8002   five6n1n1n4n4n = (reQ6nQ1nQ1nQ4nstarQ4nstar
8003                      - reQ6nQ2nQ4nstarQ4nstar-reQ7nQ1nQ4nstarQ4nstar-reQ7nQ1nQ4nstarQ4nstar
8004                                  - reQ6nQ1nQ4nstarQ3nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar
8005                  - reQ8nQ6nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar
8006                                  + 2.*(reQ6nQ4nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ8nQ4nstarQ4nstar)
8007                                  + reQ4nQ2nstarQ2nstar+reQ7nQ4nstarQ3nstar+reQ7nQ4nstarQ3nstar // ?? 1st term
8008                  + reQ8nQ7nstarQ1nstar+reQ8nQ6nstarQ2nstar+reQ8nQ7nstarQ1nstar
8009                                  + reQ4nQ2nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
8010                                  + reQ7nQ4nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ6nQ3nstarQ3nstar                                                           
8011                  + reQ7nQ4nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ6nQ3nstarQ3nstar                           
8012                  + 2.*(reQ7nQ6nstarQ1nstar+reQ7nQ6nstarQ1nstar+reQ2nQ1nstarQ1nstar)
8013                  + 2.*(reQ6nQ4nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8014                                  - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8015                  - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8016                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
8017                                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))                                
8018                                  - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8019                                  + 24.*dMult) 
8020                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8021   
8022   // to be polished:
8023   five6n1n5n1n1n = (reQ6nQ1nQ5nstarQ1nstarQ1nstar
8024                  - reQ6nQ1nQ5nstarQ2nstar
8025                  - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8026                  - reQ6nQ4nstarQ1nstarQ1nstar
8027                  - reQ7nQ5nstarQ1nstarQ1nstar 
8028                              - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8029                  - dMult*reQ6nQ5nstarQ1nstar
8030                  + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8031                  + reQ7nQ6nstarQ1nstar
8032                  + 3.*reQ6nQ5nstarQ1nstar
8033                  + 2.*reQ7nQ6nstarQ1nstar
8034                  + reQ6nQ4nstarQ2nstar
8035                  + reQ7nQ5nstarQ2nstar
8036                  + dMult*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8037                  + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8038                  + reQ7nQ6nstarQ1nstar
8039                  + reQ5nQ4nstarQ1nstar
8040                  - (dMult-6.)*reQ6nQ5nstarQ1nstar
8041                  + 3.*reQ2nQ1nstarQ1nstar
8042                  + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8043                  + 2.*reQ5nQ4nstarQ1nstar
8044                  + 3.*reQ6nQ5nstarQ1nstar
8045                  + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8046                  + reQ5nQ4nstarQ1nstar
8047                  - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8048                  - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8049                  - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8050                                  - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
8051                  - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8052                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)) 
8053                  - 2.*dMult*dMult
8054                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)) 
8055                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8056                  + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8057                  + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8058                  + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8059                  + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.)) 
8060                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8061   five6n2n4n2n2n = ((pow(dReQ2n,2.)+pow(dImQ2n,2.))*(dReQ2n*dReQ4n*dReQ6n-dReQ6n*dImQ2n*dImQ4n
8062                  + dReQ4n*dImQ2n*dImQ6n+dReQ2n*dImQ4n*dImQ6n)
8063                  - ((dReQ8n*dReQ4n+dImQ8n*dImQ4n)*(pow(dReQ2n,2)-pow(dImQ2n,2)) 
8064                  + 2.*dReQ2n*dImQ2n*(dImQ8n*dReQ4n-dReQ8n*dImQ4n)) 
8065                  - (dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
8066                  + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3))
8067                  - ((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n) 
8068                  + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
8069                  + 4.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
8070                  + pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n
8071                  - (2.*dMult-13.)*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n
8072                  + dImQ6n*dImQ4n*dReQ2n)
8073                  + 7.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
8074                  - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
8075                  + 2.*(dMult-5.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8076                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
8077                  + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8078                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
8079                  - pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)
8080                  + 2.*(3.*dMult-11.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*dMult*(dMult-6.))
8081                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8082   five6n4n4n4n2n = ((pow(dImQ4n,2.)+pow(dReQ4n,2.))*(dImQ4n*dImQ6n*dReQ2n+dImQ2n*dImQ6n*dReQ4n 
8083                  - dImQ2n*dImQ4n*dReQ6n+dReQ2n*dReQ4n*dReQ6n)
8084                  - (-pow(dImQ4n,2.)*dImQ2n*dImQ10n+dImQ2n*dImQ10n*pow(dReQ4n,2.)
8085                  + 2.*dImQ4n*dImQ10n*dReQ4n*dReQ2n-2.*dImQ4n*dImQ2n*dReQ4n*dReQ10n 
8086                  - pow(dImQ4n,2.)*dReQ2n*dReQ10n+pow(dReQ4n,2.)*dReQ2n*dReQ10n)
8087                  - (dImQ2n*dImQ4n*dImQ6n*dImQ8n+dImQ6n*dImQ8n*dReQ2n*dReQ4n 
8088                  + dImQ4n*dImQ8n*dReQ2n*dReQ6n-dImQ2n*dImQ8n*dReQ4n*dReQ6n
8089                  - dImQ4n*dImQ6n*dReQ2n*dReQ8n+dImQ2n*dImQ6n*dReQ4n*dReQ8n 
8090                  + dImQ2n*dImQ4n*dReQ6n*dReQ8n+dReQ2n*dReQ4n*dReQ6n*dReQ8n)
8091                  - ((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n) 
8092                  + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
8093                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8094                  + (dReQ10n*dReQ8n*dReQ2n-dReQ10n*dImQ8n*dImQ2n+dImQ10n*dReQ8n*dImQ2n+dImQ10n*dImQ8n*dReQ2n)
8095                  + 4.*(dReQ10n*dReQ4n*dReQ6n-dReQ10n*dImQ4n*dImQ6n+dImQ10n*dReQ4n*dImQ6n+dImQ10n*dImQ4n*dReQ6n)
8096                  + dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n)
8097                  + 3.*(pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
8098                  - 2.*(dMult-6.)*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
8099                  + 4.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
8100                  - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
8101                  - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))+2.*(dMult-5.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8102                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
8103                  - pow((pow(dReQ4n,2.)+pow(dImQ4n,2.)),2.)+2.*(3.*dMult-10.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8104                  + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*dMult*(dMult-6.))
8105                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8106   // to be polished:
8107   five6n2n2n5n5n = (reQ6nQ2nQ2nQ5nstarQ5nstar
8108                  - reQ6nQ4nQ5nstarQ5nstar-reQ8nQ2nQ5nstarQ5nstar-reQ8nQ2nQ5nstarQ5nstar
8109                                  - reQ6nQ2nQ5nstarQ3nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ6nQ2nQ5nstarQ3nstar
8110                                  - reQ10nQ6nstarQ2nstarQ2nstar-reQ6nQ2nQ5nstarQ3nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ6nQ2nQ5nstarQ3nstar
8111                                  + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ10nQ5nstarQ5nstar)
8112                                  + reQ5nQ4nstarQ1nstar+reQ8nQ5nstarQ3nstar+reQ8nQ5nstarQ3nstar
8113                  + reQ10nQ8nstarQ2nstar+reQ10nQ6nstarQ4nstar+reQ10nQ8nstarQ2nstar
8114                                  + reQ5nQ4nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
8115                                  + reQ8nQ5nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ6nQ3nstarQ3nstar                                                           
8116                                  + reQ8nQ5nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ6nQ3nstarQ3nstar                           
8117                  + 2.*(reQ8nQ6nstarQ2nstar+reQ8nQ6nstarQ2nstar+reQ4nQ2nstarQ2nstar)
8118                  + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar)
8119                                  - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8120                  - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8121                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.))
8122                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8123                                  - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8124                                  + 24.*dMult) 
8125                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8126   // to be polished:
8127   five6n5n5n5n1n = (reQ6nQ5nQ5nstarQ5nstarQ1nstar
8128                  - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8129                  - reQ10nQ1nQ6nstarQ5nstar
8130                  - dMult*reQ6nQ5nstarQ1nstar
8131                  - reQ11nQ5nstarQ5nstarQ1nstar 
8132                              - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8133                  - reQ6nQ4nQ5nstarQ5nstar
8134                  + reQ5nQ4nstarQ1nstar
8135                  + reQ11nQ6nstarQ5nstar
8136                  + 3.*reQ6nQ5nstarQ1nstar
8137                  + 2.*reQ11nQ6nstarQ5nstar
8138                  + dMult*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8139                  + reQ11nQ6nstarQ5nstar
8140                  + reQ10nQ6nstarQ4nstar
8141                  + reQ5nQ4nstarQ1nstar
8142                  + reQ11nQ10nstarQ1nstar
8143                  + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8144                  - (dMult-6.)*reQ6nQ5nstarQ1nstar
8145                  + 3.*reQ6nQ5nstarQ1nstar
8146                  + reQ5nQ4nstarQ1nstar
8147                  + 2.*dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8148                  + 3.*reQ10nQ5nstarQ5nstar
8149                  + reQ5nQ4nstarQ1nstar
8150                  + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8151                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8152                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8153                  - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8154                                  - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))
8155                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8156                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)) 
8157                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8158                  - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.)) 
8159                  - 2.*dMult*dMult
8160                  + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8161                  + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8162                  + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8163                  + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.)) 
8164                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8165   // to be polished:
8166   five6n6n5n5n2n = (reQ6nQ6nQ5nstarQ5nstarQ2nstar
8167                  - reQ7nQ5nQ6nstarQ6nstar-reQ7nQ5nQ6nstarQ6nstar-reQ10nQ2nQ6nstarQ6nstar
8168                  - reQ6nQ1nQ5nstarQ2nstar-reQ6nQ1nQ5nstarQ2nstar-reQ6nQ4nQ5nstarQ5nstar
8169                                  - reQ12nQ5nstarQ5nstarQ2nstar-reQ6nQ4nQ5nstarQ5nstar-reQ6nQ1nQ5nstarQ2nstar-reQ6nQ1nQ5nstarQ2nstar
8170                                  + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ12nQ6nstarQ6nstar)
8171                                  + reQ7nQ6nstarQ1nstar+reQ7nQ6nstarQ1nstar+reQ10nQ6nstarQ4nstar
8172                  + reQ12nQ10nstarQ2nstar+reQ12nQ7nstarQ5nstar+reQ12nQ7nstarQ5nstar
8173                                  + reQ7nQ6nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ5nQ4nstarQ1nstar                           
8174                                  + reQ7nQ6nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ5nQ4nstarQ1nstar
8175                                  + reQ10nQ6nstarQ4nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar                          
8176                  + 2.*(reQ10nQ5nstarQ5nstar+reQ7nQ5nstarQ2nstar+reQ7nQ5nstarQ2nstar)
8177                  + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar)
8178                                  - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8179                  - 2.*(pow(dReQ12n,2.)+pow(dImQ12n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8180                  - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ10n,2.)+pow(dImQ10n,2.))
8181                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8182                                  - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8183                                  + 24.*dMult) 
8184                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8185   five6n6n6n4n2n = ((pow(dImQ6n,2.)+pow(dReQ6n,2.))*(dImQ4n*dImQ6n*dReQ2n+dImQ2n*dImQ6n*dReQ4n
8186                  - dImQ2n*dImQ4n*dReQ6n+dReQ2n*dReQ4n*dReQ6n)
8187                  - (dReQ2n*dReQ4n*dReQ6n*dReQ12n-dReQ6n*dReQ12n*dImQ2n*dImQ4n
8188                  - dReQ4n*dReQ12n*dImQ2n*dImQ6n-dReQ2n*dReQ12n*dImQ4n*dImQ6n
8189                  + dReQ4n*dReQ6n*dImQ2n*dImQ12n+dReQ2n*dReQ6n*dImQ4n*dImQ12n 
8190                  + dReQ2n*dReQ4n*dImQ6n*dImQ12n-dImQ2n*dImQ4n*dImQ6n*dImQ12n)
8191                  - (dImQ2n*pow(dImQ6n,2.)*dImQ10n+2.*dImQ6n*dImQ10n*dReQ2n*dReQ6n
8192                  - dImQ2n*dImQ10n*pow(dReQ6n,2.)-pow(dImQ6n,2.)*dReQ2n*dReQ10n 
8193                  + 2.*dImQ2n*dImQ6n*dReQ6n*dReQ10n+dReQ2n*pow(dReQ6n,2.)*dReQ10n)
8194                  - ((dReQ8n*dReQ4n-dImQ8n*dImQ4n)*(dReQ6n*dReQ6n-dImQ6n*dImQ6n)
8195                  + 2.*(dReQ8n*dImQ4n+dImQ8n*dReQ4n)*dReQ6n*dImQ6n)
8196                  + dReQ12n*dReQ10n*dReQ2n-dReQ12n*dImQ10n*dImQ2n+dImQ12n*dReQ10n*dImQ2n+dImQ12n*dImQ10n*dReQ2n
8197                  + dReQ12n*dReQ8n*dReQ4n-dReQ12n*dImQ8n*dImQ4n+dImQ12n*dReQ8n*dImQ4n+dImQ12n*dImQ8n*dReQ4n
8198                  + 3.*(pow(dReQ6n,2.)*dReQ12n+2.*dReQ6n*dImQ6n*dImQ12n-pow(dImQ6n,2.)*dReQ12n)
8199                  + 4.*(dReQ10n*dReQ4n*dReQ6n-dReQ10n*dImQ4n*dImQ6n+dImQ10n*dReQ4n*dImQ6n+dImQ10n*dImQ4n*dReQ6n)
8200                  + 4.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
8201                  - 2.*(dMult-6.)*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
8202                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.)) 
8203                  - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
8204                  - 2.*(pow(dReQ12n,2.)+pow(dImQ12n,2.))-2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
8205                  - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))+2.*(3.*dMult-10.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8206                  - pow((pow(dReQ6n,2.)+pow(dImQ6n,2.)),2.)+2.*(dMult-5.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8207                  + 2.*(dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*dMult*(dMult-6.))
8208                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8209   // to be polished (and  TBI swap with the one above):
8210   five6n6n6n5n1n = (reQ6nQ6nQ6nstarQ5nstarQ1nstar
8211                  - reQ7nQ5nQ6nstarQ6nstar
8212                  - reQ11nQ1nQ6nstarQ6nstar
8213                  - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8214                  - reQ12nQ6nstarQ5nstarQ1nstar 
8215                              - dMult*reQ6nQ5nstarQ1nstar
8216                  - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8217                  + reQ6nQ5nstarQ1nstar
8218                  + reQ12nQ6nstarQ6nstar
8219                  + 3.*dMult*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8220                  + 2.*reQ12nQ6nstarQ6nstar
8221                  + reQ7nQ6nstarQ1nstar
8222                  + reQ12nQ7nstarQ5nstar
8223                  + reQ11nQ6nstarQ5nstar
8224                  + reQ6nQ5nstarQ1nstar
8225                  + reQ12nQ11nstarQ1nstar
8226                  + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8227                  - (dMult-6.)*reQ6nQ5nstarQ1nstar
8228                  + 3.*reQ7nQ6nstarQ1nstar
8229                  + reQ6nQ5nstarQ1nstar
8230                  + 2.*reQ6nQ5nstarQ1nstar
8231                  + 3.*reQ11nQ6nstarQ5nstar
8232                  + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8233                  + reQ6nQ5nstarQ1nstar
8234                  - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8235                  - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8236                  - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8237                                  - 2.*(pow(dReQ12n,2.)+pow(dImQ12n,2.))
8238                  - 2.*dMult*dMult
8239                  - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)) 
8240                  - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8241                  - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.)) 
8242                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8243                  + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8244                  + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8245                  + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8246                  + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.)) 
8247                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8248   // Four distinct harmonics (11):
8249   // to be polished:
8250   five5n2n3n3n1n = (reQ5nQ2nQ3nstarQ3nstarQ1nstar
8251                  - reQ5nQ2nQ4nstarQ3nstar-reQ5nQ2nQ4nstarQ3nstar-reQ6nQ1nQ5nstarQ2nstar
8252                                  - reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ1nQ3nstarQ3nstar                  
8253                                  - reQ7nQ3nstarQ3nstarQ1nstar-reQ4nQ2nQ3nstarQ3nstar-reQ3nQ1nQ2nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar
8254                                  + 2.*(reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ7nQ5nstarQ2nstar)
8255                                  + reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ6nQ5nstarQ1nstar
8256                                  + reQ7nQ6nstarQ1nstar+reQ7nQ4nstarQ3nstar+reQ7nQ4nstarQ3nstar
8257                                  + reQ4nQ2nstarQ2nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
8258                                  + reQ4nQ2nstarQ2nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
8259                                  + reQ6nQ4nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
8260                                  + 2.*(reQ6nQ3nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8261                                  + 2.*(reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ2nQ1nstarQ1nstar)
8262                                  - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8263                                  - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8264                                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.))
8265                                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8266                                  - 6.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8267                                  + 24.*dMult) 
8268                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8269   // to be polished:
8270   five5n1n1n4n3n = (reQ5nQ1nQ1nQ4nstarQ3nstar
8271                  - reQ5nQ2nQ4nstarQ3nstar-reQ6nQ1nQ4nstarQ3nstar-reQ6nQ1nQ4nstarQ3nstar
8272                                  - reQ5nQ1nQ4nstarQ2nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ5nQ1nQ4nstarQ2nstar
8273                                  - reQ7nQ5nstarQ1nstarQ1nstar-reQ5nQ1nQ3nstarQ3nstar-reQ3nQ1nstarQ1nstarQ1nstar-reQ5nQ1nQ3nstarQ3nstar
8274                                  + 2.*(reQ5nQ4nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ7nQ4nstarQ3nstar)
8275                                  + reQ4nQ2nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar
8276                  + reQ7nQ6nstarQ1nstar+reQ7nQ5nstarQ2nstar+reQ7nQ6nstarQ1nstar
8277                                  + reQ3nQ2nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar
8278                                  + reQ6nQ3nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ5nQ3nstarQ2nstar                                                                                           
8279                                  + reQ6nQ3nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ5nQ3nstarQ2nstar                                                           
8280                  + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ2nQ1nstarQ1nstar)
8281                  + 2.*(reQ5nQ3nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8282                                  - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8283                                  - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8284                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.))
8285                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8286                                  - 6.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8287                                  + 24.*dMult) 
8288                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8289   // to be polished:
8290   five5n3n4n2n2n = (reQ5nQ3nQ4nstarQ2nstarQ2nstar
8291                  - reQ5nQ3nQ4nstarQ4nstar-reQ6nQ2nQ5nstarQ3nstar-reQ6nQ2nQ5nstarQ3nstar
8292                                  - reQ5nQ1nQ4nstarQ2nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ1nQ4nstarQ2nstar                      
8293                                  - reQ8nQ4nstarQ2nstarQ2nstar-reQ4nQ2nQ3nstarQ3nstar-reQ3nQ1nQ2nstarQ2nstar-reQ4nQ2nQ3nstarQ3nstar
8294                                  + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ8nQ5nstarQ3nstar)
8295                                  + reQ5nQ4nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar
8296                  + reQ8nQ6nstarQ2nstar+reQ8nQ4nstarQ4nstar+reQ8nQ6nstarQ2nstar
8297                                  + reQ4nQ3nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar
8298                                  + reQ6nQ3nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ4nQ3nstarQ1nstar
8299                                  + reQ6nQ3nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ4nQ3nstarQ1nstar
8300                                  + 2.*(reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ4nQ2nstarQ2nstar)
8301                                  + 2.*(reQ4nQ3nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8302                                  - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8303                                  - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8304                                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.))
8305                                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8306                                  - 6.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8307                                  + 24.*dMult) 
8308                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8309
8310   // to be polished!!!:
8311   five5n2n1n4n4n = (reQ5nQ2nQ1nQ4nstarQ4nstar
8312                  - reQ5nQ3nQ4nstarQ4nstar-reQ6nQ2nQ4nstarQ4nstar-reQ7nQ1nQ4nstarQ4nstar
8313                                  - reQ5nQ1nQ4nstarQ2nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ5nQ2nQ4nstarQ3nstar
8314                                  - reQ8nQ5nstarQ2nstarQ1nstar-reQ5nQ2nQ4nstarQ3nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ5nQ1nQ4nstarQ2nstar
8315                                  + 2.*(reQ5nQ4nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar+reQ8nQ4nstarQ4nstar)
8316                                  + reQ4nQ3nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ7nQ4nstarQ3nstar
8317                  + reQ8nQ7nstarQ1nstar+reQ8nQ5nstarQ3nstar+reQ8nQ6nstarQ2nstar
8318                                  + reQ4nQ3nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
8319                                  + reQ6nQ4nstarQ2nstar+reQ2nQ1nstarQ1nstar+reQ5nQ3nstarQ2nstar                                                                                           
8320                                  + reQ7nQ4nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ5nQ3nstarQ2nstar                                                           
8321                  + 2.*(reQ7nQ5nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8322                  + 2.*(reQ5nQ4nstarQ1nstar+reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar)
8323                                  - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8324                                  - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8325                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
8326                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8327                                  - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8328                                  + 24.*dMult) 
8329                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8330
8331
8332   // to be polished:
8333   five6n1n3n2n2n = (reQ6nQ1nQ3nstarQ2nstarQ2nstar
8334                  - reQ6nQ1nQ4nstarQ3nstar-reQ6nQ1nQ5nstarQ2nstar-reQ6nQ1nQ5nstarQ2nstar
8335                  - reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ2nstarQ2nstarQ2nstar-reQ6nQ3nstarQ2nstarQ1nstar                      
8336                                  - reQ7nQ3nstarQ2nstarQ2nstar-reQ4nQ1nQ3nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar-reQ4nQ1nQ3nstarQ2nstar
8337                                  + 2.*(reQ6nQ3nstarQ3nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ7nQ6nstarQ1nstar)
8338                                  + reQ6nQ4nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar
8339                  + reQ7nQ5nstarQ2nstar+reQ7nQ4nstarQ3nstar+reQ7nQ5nstarQ2nstar
8340                                  + reQ4nQ3nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
8341                                  + reQ5nQ4nstarQ1nstar+reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar
8342                                  + reQ5nQ4nstarQ1nstar+reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar
8343                                  + 2.*(reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ4nQ2nstarQ2nstar)
8344                                  + 2.*(reQ3nQ2nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar)
8345                                  - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8346                                  - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
8347                                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.))
8348                                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))                                
8349                                  - 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8350                                  + 24.*dMult) 
8351                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8352
8353
8354   // to be polished:
8355   five6n3n4n4n1n = (reQ6nQ3nQ4nstarQ4nstarQ1nstar
8356                  - reQ8nQ1nQ6nstarQ3nstar-reQ6nQ3nQ5nstarQ4nstar-reQ6nQ3nQ5nstarQ4nstar
8357                                  - reQ6nQ4nstarQ1nstarQ1nstar-reQ6nQ2nQ4nstarQ4nstar-reQ6nQ4nstarQ1nstarQ1nstar                  
8358                                  - reQ9nQ4nstarQ4nstarQ1nstar-reQ4nQ1nQ3nstarQ2nstar-reQ5nQ3nQ4nstarQ4nstar-reQ4nQ1nQ3nstarQ2nstar
8359                  + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ9nQ6nstarQ3nstar)
8360                                  + reQ8nQ6nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar
8361                  + reQ9nQ5nstarQ4nstar+reQ9nQ8nstarQ1nstar+reQ9nQ5nstarQ4nstar
8362                                  + reQ8nQ5nstarQ3nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar                           
8363                                  + reQ5nQ3nstarQ2nstar+reQ4nQ2nstarQ2nstar+reQ2nQ1nstarQ1nstar                           
8364                                  + reQ5nQ3nstarQ2nstar+reQ4nQ2nstarQ2nstar+reQ2nQ1nstarQ1nstar
8365                  + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ8nQ4nstarQ4nstar)
8366                  + 2.*(reQ3nQ2nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8367                                  - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8368                                  - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.))
8369                                  - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.))
8370                                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))                                
8371                                  - 6.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.))
8372                  + 24.*dMult) 
8373                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8374
8375   // to be polished:
8376   five6n1n1n5n3n = (reQ6nQ1nQ1nQ5nstarQ3nstar
8377                  - reQ6nQ2nQ5nstarQ3nstar-reQ7nQ1nQ5nstarQ3nstar-reQ7nQ1nQ5nstarQ3nstar
8378                  - reQ6nQ1nQ5nstarQ2nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ6nQ1nQ5nstarQ2nstar
8379                                  - reQ8nQ6nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar-reQ3nQ1nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar
8380                                  + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ8nQ5nstarQ3nstar)
8381                                  + reQ5nQ3nstarQ2nstar+reQ7nQ5nstarQ2nstar+reQ7nQ5nstarQ2nstar
8382                  + reQ8nQ7nstarQ1nstar+reQ8nQ6nstarQ2nstar+reQ8nQ7nstarQ1nstar
8383                                  + reQ3nQ2nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar
8384                                  + reQ7nQ4nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ6nQ4nstarQ2nstar                                                                                           
8385                                  + reQ7nQ4nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ6nQ4nstarQ2nstar                                                                                           
8386                  + 2.*(reQ7nQ6nstarQ1nstar+reQ7nQ6nstarQ1nstar+reQ2nQ1nstarQ1nstar)
8387                  + 2.*(reQ6nQ3nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8388                                  - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8389                                  - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8390                                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
8391                                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
8392                  - 6.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8393                  + 24.*dMult) 
8394                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8395   // to be polished:
8396   five6n3n5n2n2n = (reQ6nQ3nQ5nstarQ2nstarQ2nstar
8397                  - reQ6nQ3nQ5nstarQ4nstar-reQ7nQ2nQ6nstarQ3nstar-reQ7nQ2nQ6nstarQ3nstar
8398                  - reQ6nQ1nQ5nstarQ2nstar-reQ6nQ2nstarQ2nstarQ2nstar-reQ6nQ1nQ5nstarQ2nstar                      
8399                                  - reQ9nQ5nstarQ2nstarQ2nstar-reQ5nQ2nQ4nstarQ3nstar-reQ3nQ1nQ2nstarQ2nstar-reQ5nQ2nQ4nstarQ3nstar
8400                                  + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ9nQ6nstarQ3nstar)
8401                                  + reQ6nQ4nstarQ2nstar+reQ7nQ6nstarQ1nstar+reQ7nQ6nstarQ1nstar
8402                  + reQ9nQ7nstarQ2nstar+reQ9nQ5nstarQ4nstar+reQ9nQ7nstarQ2nstar
8403                                  + reQ4nQ3nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar                           
8404                                  + reQ7nQ4nstarQ3nstar+reQ4nQ2nstarQ2nstar+reQ5nQ4nstarQ1nstar                           
8405                                  + reQ7nQ4nstarQ3nstar+reQ4nQ2nstarQ2nstar+reQ5nQ4nstarQ1nstar
8406                  + 2.*(reQ7nQ5nstarQ2nstar+reQ7nQ5nstarQ2nstar+reQ4nQ2nstarQ2nstar)
8407                  + 2.*(reQ5nQ3nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8408                                  - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8409                                  - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8410                                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
8411                                  - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))                                
8412                                  - 6.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8413                  + 24.*dMult) 
8414                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8415
8416   // to be polished 
8417   five6n5n4n4n3n = (reQ6nQ5nQ4nstarQ4nstarQ3nstar
8418                  - reQ7nQ4nQ6nstarQ5nstar-reQ7nQ4nQ6nstarQ5nstar-reQ8nQ3nQ6nstarQ5nstar
8419                  - reQ6nQ1nQ4nstarQ3nstar-reQ6nQ1nQ4nstarQ3nstar-reQ6nQ2nQ4nstarQ4nstar                  
8420                                  - reQ11nQ4nstarQ4nstarQ3nstar-reQ5nQ3nQ4nstarQ4nstar-reQ5nQ2nQ4nstarQ3nstar-reQ5nQ2nQ4nstarQ3nstar
8421                                  + 2.*(reQ6nQ4nstarQ2nstar+reQ6nQ3nstarQ3nstar+reQ6nQ4nstarQ2nstar+reQ11nQ6nstarQ5nstar)
8422                                  + reQ7nQ6nstarQ1nstar+reQ7nQ6nstarQ1nstar+reQ8nQ6nstarQ2nstar
8423                  + reQ11nQ8nstarQ3nstar+reQ11nQ7nstarQ4nstar+reQ11nQ7nstarQ4nstar
8424                                  + reQ7nQ5nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ4nQ2nstarQ2nstar                                                           
8425                                  + reQ7nQ5nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ4nQ2nstarQ2nstar                           
8426                                  + reQ8nQ5nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
8427                  + 2.*(reQ8nQ4nstarQ4nstar+reQ7nQ4nstarQ3nstar+reQ7nQ4nstarQ3nstar)
8428                  + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar)
8429                                  - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8430                                  - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8431                                  - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.))
8432                                  - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))                                
8433                                  - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
8434                                  + 24.*dMult) 
8435                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8436   // to be polished:
8437   five6n3n1n5n5n = (reQ6nQ3nQ1nQ5nstarQ5nstar
8438                  - reQ6nQ4nQ5nstarQ5nstar-reQ7nQ3nQ5nstarQ5nstar-reQ9nQ1nQ5nstarQ5nstar      
8439                                  - reQ6nQ1nQ5nstarQ2nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ6nQ3nQ5nstarQ4nstar
8440                                  - reQ10nQ6nstarQ3nstarQ1nstar-reQ6nQ3nQ5nstarQ4nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ6nQ1nQ5nstarQ2nstar
8441                                  + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ10nQ5nstarQ5nstar)
8442                                  + reQ5nQ4nstarQ1nstar+reQ7nQ5nstarQ2nstar+reQ9nQ5nstarQ4nstar
8443                  + reQ10nQ9nstarQ1nstar+reQ10nQ6nstarQ4nstar+reQ10nQ7nstarQ3nstar
8444                                  + reQ5nQ4nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ4nQ3nstarQ1nstar
8445                                  + reQ7nQ5nstarQ2nstar+reQ2nQ1nstarQ1nstar+reQ6nQ4nstarQ2nstar                                                                                           
8446                                  + reQ9nQ5nstarQ4nstar+reQ4nQ3nstarQ1nstar+reQ6nQ4nstarQ2nstar                                                                                           
8447                  + 2.*(reQ9nQ6nstarQ3nstar+reQ7nQ6nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8448                  + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar)
8449                                  - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8450                                  - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8451                                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ9n,2.)+pow(dImQ9n,2.))
8452                                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8453                  - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8454                  + 24.*dMult) 
8455                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8456   // to be polished:
8457   five6n6n5n4n3n = (reQ6nQ6nQ5nstarQ4nstarQ3nstar
8458                  - reQ7nQ5nQ6nstarQ6nstar-reQ8nQ4nQ6nstarQ6nstar-reQ9nQ3nQ6nstarQ6nstar
8459                                  - reQ6nQ2nQ5nstarQ3nstar-reQ6nQ1nQ4nstarQ3nstar-reQ6nQ3nQ5nstarQ4nstar                  
8460                                  - reQ12nQ5nstarQ4nstarQ3nstar-reQ6nQ3nQ5nstarQ4nstar-reQ6nQ1nQ4nstarQ3nstar-reQ6nQ2nQ5nstarQ3nstar
8461                  + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ3nstarQ3nstar+reQ6nQ4nstarQ2nstar+reQ12nQ6nstarQ6nstar)
8462                                  + reQ7nQ6nstarQ1nstar+reQ8nQ6nstarQ2nstar+reQ9nQ6nstarQ3nstar
8463                  + reQ12nQ9nstarQ3nstar+reQ12nQ7nstarQ5nstar+reQ12nQ8nstarQ4nstar
8464                                  + reQ7nQ6nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ4nQ3nstarQ1nstar                                                           
8465                                  + reQ8nQ6nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ5nQ3nstarQ2nstar                           
8466                                  + reQ9nQ6nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ5nQ3nstarQ2nstar
8467                  + 2.*(reQ9nQ5nstarQ4nstar+reQ8nQ5nstarQ3nstar+reQ7nQ4nstarQ3nstar)
8468                  + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ3nstarQ3nstar)
8469                                  - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8470                                  - 2.*(pow(dReQ12n,2.)+pow(dImQ12n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8471                                  - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ9n,2.)+pow(dImQ9n,2.))
8472                                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))                                
8473                                  - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
8474                                  + 24.*dMult) 
8475                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8476   // Five distinct harmonics (3):
8477
8478   // to be polished:
8479   five6n2n4n3n1n = (reQ6nQ2nQ4nstarQ3nstarQ1nstar
8480                      - reQ6nQ2nQ4nstarQ4nstar-reQ6nQ2nQ5nstarQ3nstar-reQ7nQ1nQ6nstarQ2nstar
8481                      - reQ6nQ4nstarQ1nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar
8482                      - reQ8nQ4nstarQ3nstarQ1nstar-reQ5nQ2nQ4nstarQ3nstar-reQ3nQ1nQ2nstarQ2nstar-reQ4nQ1nQ3nstarQ2nstar
8483                                  + 2.*(reQ6nQ4nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ6nQ3nstarQ3nstar+reQ8nQ6nstarQ2nstar)
8484                                  + 1.*(reQ6nQ4nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ7nQ6nstarQ1nstar)
8485                                  + 1.*(reQ8nQ7nstarQ1nstar+reQ8nQ4nstarQ4nstar+reQ8nQ5nstarQ3nstar)
8486                                  + 1.*(reQ4nQ2nstarQ2nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8487                                  + 1.*(reQ5nQ3nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8488                                  + 1.*(reQ7nQ5nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar)
8489                                  + 2.*(reQ7nQ4nstarQ3nstar+reQ5nQ4nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8490                                  + 2.*(reQ4nQ2nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ2nQ1nstarQ1nstar) // 3 - 1
8491                                  - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8492                  - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)) 
8493                  - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)) 
8494                          - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)) 
8495                  - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)) 
8496                  + 24.*dMult) 
8497                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8498
8499
8500   // to be polished:
8501   five6n2n1n5n4n = (reQ6nQ2nQ1nQ5nstarQ4nstar
8502                  - reQ6nQ3nQ5nstarQ4nstar-reQ7nQ2nQ5nstarQ4nstar-reQ8nQ1nQ5nstarQ4nstar
8503                                  - reQ6nQ1nQ5nstarQ2nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ6nQ2nQ5nstarQ3nstar                      
8504                                  - reQ9nQ6nstarQ2nstarQ1nstar-reQ6nQ2nQ4nstarQ4nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar
8505                  + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ9nQ5nstarQ4nstar)
8506                                  + reQ5nQ3nstarQ2nstar+reQ7nQ5nstarQ2nstar+reQ8nQ5nstarQ3nstar
8507                  + reQ9nQ8nstarQ1nstar+reQ9nQ6nstarQ3nstar+reQ9nQ7nstarQ2nstar
8508                                  + reQ4nQ3nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar                           
8509                                  + reQ7nQ4nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ6nQ3nstarQ3nstar                           
8510                                  + reQ8nQ4nstarQ4nstar+reQ4nQ2nstarQ2nstar+reQ6nQ4nstarQ2nstar
8511                  + 2.*(reQ8nQ6nstarQ2nstar+reQ7nQ6nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8512                  + 2.*(reQ6nQ4nstarQ2nstar+reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar)
8513                                  - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8514                                  - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8515                                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.))
8516                                  - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))                                
8517                                  - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8518                  + 24.*dMult) 
8519                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8520
8521
8522
8523   // to be polished:
8524   five6n4n5n3n2n = (reQ6nQ4nQ5nstarQ3nstarQ2nstar
8525                      - reQ6nQ4nQ5nstarQ5nstar-reQ7nQ3nQ6nstarQ4nstar-reQ8nQ2nQ6nstarQ4nstar
8526                      - reQ6nQ1nQ5nstarQ2nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ2nQ5nstarQ3nstar
8527                      - reQ10nQ5nstarQ3nstarQ2nstar-reQ5nQ3nQ4nstarQ4nstar-reQ4nQ1nQ3nstarQ2nstar-reQ5nQ2nQ4nstarQ3nstar
8528                                  + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ3nstarQ3nstar+reQ10nQ6nstarQ4nstar)
8529                                  + 1.*(reQ6nQ5nstarQ1nstar+reQ7nQ6nstarQ1nstar+reQ8nQ6nstarQ2nstar)
8530                                  + 1.*(reQ10nQ8nstarQ2nstar+reQ10nQ5nstarQ5nstar+reQ10nQ7nstarQ3nstar)
8531                                  + 1.*(reQ5nQ4nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8532                                  + 1.*(reQ7nQ4nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ5nQ3nstarQ2nstar)
8533                                  + 1.*(reQ8nQ4nstarQ4nstar+reQ4nQ3nstarQ1nstar+reQ5nQ4nstarQ1nstar)
8534                                  + 2.*(reQ8nQ5nstarQ3nstar+reQ7nQ5nstarQ2nstar+reQ5nQ3nstarQ2nstar)
8535                                  + 2.*(reQ5nQ4nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar) // 3 - 1
8536                                  - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8537                  - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)) 
8538                  - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.)) 
8539                          - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)) 
8540                  - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)) 
8541                  + 24.*dMult) 
8542                  / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8543
8544
8545
8546   f5pCorrelations->Fill(0.5,five3n2n3n1n1n,d5pMultiplicityWeight);
8547   f5pCorrelations->Fill(1.5,five4n1n2n2n1n,d5pMultiplicityWeight); 
8548   f5pCorrelations->Fill(2.5,five4n2n3n2n1n,d5pMultiplicityWeight);
8549   f5pCorrelations->Fill(3.5,five4n3n3n2n2n,d5pMultiplicityWeight);
8550   f5pCorrelations->Fill(4.5,five4n2n4n1n1n,d5pMultiplicityWeight);
8551   f5pCorrelations->Fill(5.5,five4n3n4n2n1n,d5pMultiplicityWeight);
8552   f5pCorrelations->Fill(6.5,five5n1n3n2n1n,d5pMultiplicityWeight);
8553   f5pCorrelations->Fill(7.5,five5n2n5n1n1n,d5pMultiplicityWeight);
8554   f5pCorrelations->Fill(8.5,five5n2n4n2n1n,d5pMultiplicityWeight);
8555   f5pCorrelations->Fill(9.5,five5n3n4n3n1n,d5pMultiplicityWeight);
8556   f5pCorrelations->Fill(10.5,five5n4n4n3n2n,d5pMultiplicityWeight);
8557   f5pCorrelations->Fill(11.5,five5n3n5n2n1n,d5pMultiplicityWeight);
8558   f5pCorrelations->Fill(12.5,five5n4n5n2n2n,d5pMultiplicityWeight);
8559   f5pCorrelations->Fill(13.5,five5n4n5n3n1n,d5pMultiplicityWeight);
8560   f5pCorrelations->Fill(14.5,five6n1n3n3n1n,d5pMultiplicityWeight);
8561   f5pCorrelations->Fill(15.5,five6n2n3n3n2n,d5pMultiplicityWeight); 
8562   f5pCorrelations->Fill(16.5,five6n1n4n2n1n,d5pMultiplicityWeight); 
8563   f5pCorrelations->Fill(17.5,five6n3n4n3n2n,d5pMultiplicityWeight); 
8564   f5pCorrelations->Fill(18.5,five6n4n4n3n3n,d5pMultiplicityWeight); 
8565   f5pCorrelations->Fill(19.5,five6n2n5n2n1n,d5pMultiplicityWeight); 
8566   f5pCorrelations->Fill(20.5,five6n3n5n3n1n,d5pMultiplicityWeight); 
8567   f5pCorrelations->Fill(21.5,five6n4n5n4n1n,d5pMultiplicityWeight); 
8568   f5pCorrelations->Fill(22.5,five6n5n5n3n3n,d5pMultiplicityWeight); 
8569   f5pCorrelations->Fill(23.5,five6n2n6n1n1n,d5pMultiplicityWeight); 
8570   f5pCorrelations->Fill(24.5,five6n3n6n2n1n,d5pMultiplicityWeight); 
8571   f5pCorrelations->Fill(25.5,five6n4n6n2n2n,d5pMultiplicityWeight); 
8572   f5pCorrelations->Fill(26.5,five6n4n6n3n1n,d5pMultiplicityWeight); 
8573   f5pCorrelations->Fill(27.5,five6n5n5n4n2n,d5pMultiplicityWeight); 
8574   f5pCorrelations->Fill(28.5,five6n5n6n3n2n,d5pMultiplicityWeight); 
8575   f5pCorrelations->Fill(29.5,five6n5n6n4n1n,d5pMultiplicityWeight);
8576   //f5pCorrelations->Fill(30.5,-44.,d5pMultiplicityWeight);
8577   f5pCorrelations->Fill(31.5,five2n1n1n1n1n,d5pMultiplicityWeight);
8578   f5pCorrelations->Fill(32.5,five2n2n2n1n1n,d5pMultiplicityWeight); 
8579   f5pCorrelations->Fill(33.5,five3n3n2n2n2n,d5pMultiplicityWeight);
8580   f5pCorrelations->Fill(34.5,five4n1n1n1n1n,d5pMultiplicityWeight);
8581   f5pCorrelations->Fill(35.5,five4n2n2n2n2n,d5pMultiplicityWeight); 
8582   f5pCorrelations->Fill(36.5,five4n4n4n2n2n,d5pMultiplicityWeight); 
8583   f5pCorrelations->Fill(37.5,five6n3n3n3n3n,d5pMultiplicityWeight); 
8584   f5pCorrelations->Fill(38.5,five6n6n4n4n4n,d5pMultiplicityWeight); 
8585   f5pCorrelations->Fill(39.5,five6n6n6n3n3n,d5pMultiplicityWeight);
8586   //f5pCorrelations->Fill(40.5,-44.,d5pMultiplicityWeight);
8587   f5pCorrelations->Fill(41.5,five3n1n2n1n1n,d5pMultiplicityWeight);
8588   f5pCorrelations->Fill(42.5,five3n2n2n2n1n,d5pMultiplicityWeight);
8589   f5pCorrelations->Fill(43.5,five3n3n3n2n1n,d5pMultiplicityWeight);
8590   f5pCorrelations->Fill(44.5,five4n1n3n1n1n,d5pMultiplicityWeight);
8591   f5pCorrelations->Fill(45.5,five4n1n1n3n3n,d5pMultiplicityWeight);
8592   f5pCorrelations->Fill(46.5,five4n3n3n3n1n,d5pMultiplicityWeight);
8593   f5pCorrelations->Fill(47.5,five4n4n3n3n2n,d5pMultiplicityWeight);
8594   f5pCorrelations->Fill(48.5,five4n4n4n3n1n,d5pMultiplicityWeight);
8595   f5pCorrelations->Fill(49.5,five5n2n1n1n1n,d5pMultiplicityWeight);
8596   f5pCorrelations->Fill(50.5,five5n1n2n2n2n,d5pMultiplicityWeight);
8597   f5pCorrelations->Fill(51.5,five5n2n3n2n2n,d5pMultiplicityWeight);
8598   f5pCorrelations->Fill(52.5,five5n3n3n3n2n,d5pMultiplicityWeight);
8599   f5pCorrelations->Fill(53.5,five5n1n4n1n1n,d5pMultiplicityWeight);
8600   f5pCorrelations->Fill(54.5,five5n4n3n3n3n,d5pMultiplicityWeight);
8601   f5pCorrelations->Fill(55.5,five5n4n4n4n1n,d5pMultiplicityWeight);
8602   f5pCorrelations->Fill(56.5,five5n5n4n3n3n,d5pMultiplicityWeight);
8603   f5pCorrelations->Fill(57.5,five5n5n4n4n2n,d5pMultiplicityWeight);
8604   f5pCorrelations->Fill(58.5,five5n5n5n3n2n,d5pMultiplicityWeight);
8605   f5pCorrelations->Fill(59.5,five5n5n5n4n1n,d5pMultiplicityWeight);
8606   f5pCorrelations->Fill(60.5,five6n2n2n1n1n,d5pMultiplicityWeight);
8607   f5pCorrelations->Fill(61.5,five6n3n1n1n1n,d5pMultiplicityWeight);
8608   f5pCorrelations->Fill(62.5,five6n1n1n4n4n,d5pMultiplicityWeight);
8609   f5pCorrelations->Fill(63.5,five6n1n5n1n1n,d5pMultiplicityWeight);
8610   f5pCorrelations->Fill(64.5,five6n2n4n2n2n,d5pMultiplicityWeight);
8611   f5pCorrelations->Fill(65.5,five6n4n4n4n2n,d5pMultiplicityWeight);
8612   f5pCorrelations->Fill(66.5,five6n2n2n5n5n,d5pMultiplicityWeight);
8613   f5pCorrelations->Fill(67.5,five6n5n5n5n1n,d5pMultiplicityWeight);
8614   f5pCorrelations->Fill(68.5,five6n6n5n5n2n,d5pMultiplicityWeight);
8615   f5pCorrelations->Fill(69.5,five6n6n6n4n2n,d5pMultiplicityWeight);
8616   f5pCorrelations->Fill(70.5,five6n6n6n5n1n,d5pMultiplicityWeight);
8617   //f5pCorrelations->Fill(71.5,-44.,d5pMultiplicityWeight);
8618   f5pCorrelations->Fill(72.5,five5n2n3n3n1n,d5pMultiplicityWeight);
8619   f5pCorrelations->Fill(73.5,five5n1n1n4n3n,d5pMultiplicityWeight);
8620   f5pCorrelations->Fill(74.5,five5n3n4n2n2n,d5pMultiplicityWeight);
8621   f5pCorrelations->Fill(75.5,five5n2n1n4n4n,d5pMultiplicityWeight);
8622   f5pCorrelations->Fill(76.5,five6n1n3n2n2n,d5pMultiplicityWeight);
8623   f5pCorrelations->Fill(77.5,five6n3n4n4n1n,d5pMultiplicityWeight);
8624   f5pCorrelations->Fill(78.5,five6n1n1n5n3n,d5pMultiplicityWeight);
8625   f5pCorrelations->Fill(79.5,five6n3n5n2n2n,d5pMultiplicityWeight);
8626   f5pCorrelations->Fill(80.5,five6n5n4n4n3n,d5pMultiplicityWeight);
8627   f5pCorrelations->Fill(81.5,five6n3n1n5n5n,d5pMultiplicityWeight);
8628   f5pCorrelations->Fill(82.5,five6n6n5n4n3n,d5pMultiplicityWeight);
8629   //f5pCorrelations->Fill(83.5,-44.,d5pMultiplicityWeight);
8630   f5pCorrelations->Fill(84.5,five6n2n4n3n1n,d5pMultiplicityWeight);
8631   f5pCorrelations->Fill(85.5,five6n2n1n5n4n,d5pMultiplicityWeight);
8632   f5pCorrelations->Fill(86.5,five6n4n5n3n2n,d5pMultiplicityWeight);
8633   allMixedCorrelators[56]=five3n2n3n1n1n;
8634   allMixedCorrelators[57]=five4n1n2n2n1n;
8635   allMixedCorrelators[58]=five4n2n3n2n1n;
8636   allMixedCorrelators[59]=five4n3n3n2n2n;
8637   allMixedCorrelators[60]=five4n2n4n1n1n;
8638   allMixedCorrelators[61]=five4n3n4n2n1n;
8639   allMixedCorrelators[62]=five5n1n3n2n1n;
8640   allMixedCorrelators[63]=five5n2n5n1n1n;
8641   allMixedCorrelators[64]=five5n2n4n2n1n;
8642   allMixedCorrelators[65]=five5n3n4n3n1n;
8643   allMixedCorrelators[66]=five5n4n4n3n2n;
8644   allMixedCorrelators[67]=five5n3n5n2n1n;
8645   allMixedCorrelators[68]=five5n4n5n2n2n;
8646   allMixedCorrelators[69]=five5n4n5n3n1n;
8647   allMixedCorrelators[70]=five6n1n3n3n1n;
8648   allMixedCorrelators[71]=five6n2n3n3n2n;
8649   allMixedCorrelators[72]=five6n1n4n2n1n;
8650   allMixedCorrelators[73]=five6n3n4n3n2n;
8651   allMixedCorrelators[74]=five6n4n4n3n3n;
8652   allMixedCorrelators[75]=five6n2n5n2n1n;
8653   allMixedCorrelators[76]=five6n3n5n3n1n;
8654   allMixedCorrelators[77]=five6n4n5n4n1n;
8655   allMixedCorrelators[78]=five6n5n5n3n3n;
8656   allMixedCorrelators[79]=five6n2n6n1n1n;
8657   allMixedCorrelators[80]=five6n3n6n2n1n;
8658   allMixedCorrelators[81]=five6n4n6n2n2n;
8659   allMixedCorrelators[82]=five6n4n6n3n1n;
8660   allMixedCorrelators[83]=five6n5n5n4n2n;
8661   allMixedCorrelators[84]=five6n5n6n3n2n;
8662   allMixedCorrelators[85]=five6n5n6n4n1n;
8663   allMixedCorrelators[86]=five2n1n1n1n1n;
8664   allMixedCorrelators[87]=five2n2n2n1n1n;
8665   allMixedCorrelators[88]=five3n3n2n2n2n;
8666   allMixedCorrelators[89]=five4n1n1n1n1n;
8667   allMixedCorrelators[90]=five4n2n2n2n2n;
8668   allMixedCorrelators[91]=five4n4n4n2n2n;
8669   allMixedCorrelators[92]=five6n3n3n3n3n;
8670   allMixedCorrelators[93]=five6n6n4n4n4n;
8671   allMixedCorrelators[94]=five6n6n6n3n3n;
8672   allMixedCorrelators[95]=five3n1n2n1n1n;
8673   allMixedCorrelators[96]=five3n2n2n2n1n;
8674   allMixedCorrelators[97]=five3n3n3n2n1n;
8675   allMixedCorrelators[98]=five4n1n3n1n1n;
8676   allMixedCorrelators[99]=five4n1n1n3n3n;
8677   allMixedCorrelators[100]=five4n3n3n3n1n;
8678   allMixedCorrelators[101]=five4n4n3n3n2n;
8679   allMixedCorrelators[102]=five4n4n4n3n1n;
8680   allMixedCorrelators[103]=five5n2n1n1n1n;
8681   allMixedCorrelators[104]=five5n1n2n2n2n;
8682   allMixedCorrelators[105]=five5n2n3n2n2n;
8683   allMixedCorrelators[106]=five5n3n3n3n2n;
8684   allMixedCorrelators[107]=five5n1n4n1n1n;
8685   allMixedCorrelators[108]=five5n4n3n3n3n;
8686   allMixedCorrelators[109]=five5n4n4n4n1n;
8687   allMixedCorrelators[110]=five5n5n4n3n3n;
8688   allMixedCorrelators[111]=five5n5n4n4n2n;
8689   allMixedCorrelators[112]=five5n5n5n3n2n;
8690   allMixedCorrelators[113]=five5n5n5n4n1n;
8691   allMixedCorrelators[114]=five6n2n2n1n1n;
8692   allMixedCorrelators[115]=five6n3n1n1n1n;
8693   allMixedCorrelators[116]=five6n1n1n4n4n;
8694   allMixedCorrelators[117]=five6n1n5n1n1n;
8695   allMixedCorrelators[118]=five6n2n4n2n2n;
8696   allMixedCorrelators[119]=five6n4n4n4n2n;
8697   allMixedCorrelators[120]=five6n2n2n5n5n;
8698   allMixedCorrelators[121]=five6n5n5n5n1n;
8699   allMixedCorrelators[122]=five6n6n5n5n2n;
8700   allMixedCorrelators[123]=five6n6n6n4n2n;
8701   allMixedCorrelators[124]=five6n6n6n5n1n;
8702   allMixedCorrelators[125]=five5n2n3n3n1n;
8703   allMixedCorrelators[126]=five5n1n1n4n3n;
8704   allMixedCorrelators[127]=five5n3n4n2n2n;
8705   allMixedCorrelators[128]=five5n2n1n4n4n;
8706   allMixedCorrelators[129]=five6n1n3n2n2n;
8707   allMixedCorrelators[130]=five6n3n4n4n1n;
8708   allMixedCorrelators[131]=five6n1n1n5n3n;
8709   allMixedCorrelators[132]=five6n3n5n2n2n;
8710   allMixedCorrelators[133]=five6n5n4n4n3n;
8711   allMixedCorrelators[134]=five6n3n1n5n5n;
8712   allMixedCorrelators[135]=five6n6n5n4n3n;
8713   allMixedCorrelators[136]=five6n2n4n3n1n;
8714   allMixedCorrelators[137]=five6n2n1n5n4n;
8715   allMixedCorrelators[138]=five6n4n5n3n2n;
8716  } // end of if(dMult>4.)
8717  
8718  // Products of mixed harmonics:
8719  Double_t dwx=0.;
8720  Double_t dwy=0.;
8721  for(Int_t x=1;x<=139;x++)
8722  {  
8723   if(x>=1 && x<7)
8724   {
8725    dwx=d2pMultiplicityWeight;
8726   } else if(x>=7 && x<16)
8727     {
8728      dwx=d3pMultiplicityWeight;
8729     } else if(x>=16 && x<57)
8730       {
8731        dwx=d4pMultiplicityWeight;
8732       } else if(x>=57 && x<140)
8733         {
8734          dwx=d5pMultiplicityWeight;
8735         }
8736   for(Int_t y=x+1;y<=139;y++)
8737   {
8738    if(y>=1 && y<7)
8739    {
8740     dwy=d2pMultiplicityWeight;
8741    } else if(y>=7 && y<16)
8742      {
8743       dwy=d3pMultiplicityWeight;
8744      } else if(y>=16 && y<57)
8745        {
8746         dwy=d4pMultiplicityWeight;
8747        } else if(y>=57 && y<140)
8748          {
8749           dwy=d5pMultiplicityWeight;
8750          }
8751    fMixedHarmonicProductOfCorrelations->Fill(x-0.5,y-0.5,allMixedCorrelators[x-1]*allMixedCorrelators[y-1],dwx*dwy);
8752   } // end of for(Int_t y=x+1;y<=139;y++)
8753  } // end of for(Int_t x=1;x<=139;x++)
8754
8755 } // end of void AliFlowAnalysisWithQCumulants::CalculateMixedHarmonics()
8756
8757 //===================================================================================================================
8758
8759 void AliFlowAnalysisWithQCumulants::CalculateCumulantsMixedHarmonics()
8760 {
8761  // Calculate in this method all multi-particle cumulants for azimuthal correlations in mixed harmonics.
8762  // (Remark: For completeness sake, we also calculate here again cumulants in the same harmonic.) 
8763
8764  // a) Calculate 2-p cumulants; 
8765  // b) Calculate 3-p cumulants; 
8766  // c) Calculate 4-p cumulants; 
8767  // d) Calculate 5-p cumulants. 
8768
8769  // a) Calculate 2-p cumulants: 
8770  for(Int_t b=1;b<=6;b++)
8771  {
8772   f2pCumulants->SetBinContent(b,f2pCorrelations->GetBinContent(b)); 
8773   Double_t dSumWLinear = 0.; // sum of linear event weights
8774   Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
8775   Double_t dSpread = 0.; // weighted and biased estimator for sigma
8776   Double_t dError = 0.; // weighted and unbiased estimator for error
8777   dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8778   dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8779   dSpread = f2pCorrelations->GetBinError(b);
8780   if(pow(dSumWLinear,2.)>dSumWQuadratic)
8781   {
8782    dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
8783    f2pCumulants->SetBinError(b,dError); 
8784   } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
8785  } // end of for(Int_t b=1;b<=6;b++)
8786
8787  // b) Calculate 3-p cumulants: 
8788  for(Int_t b=1;b<=10;b++)
8789  {
8790   f3pCumulants->SetBinContent(b,f3pCorrelations->GetBinContent(b)); 
8791   Double_t dSumWLinear = 0.; // sum of linear event weights
8792   Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
8793   Double_t dSpread = 0.; // weighted and biased estimator for sigma
8794   Double_t dError = 0.; // weighted and unbiased estimator for sigma
8795   dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(3);
8796   dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(3);
8797   dSpread = f3pCorrelations->GetBinError(b);
8798   if(pow(dSumWLinear,2.)>dSumWQuadratic)
8799   {
8800    dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
8801    f3pCumulants->SetBinError(b,dError); 
8802   } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
8803  } // end of for(Int_t b=1;b<=10;b++)
8804
8805  // c) Calculate 4-p cumulants: 
8806  // c1) "Single harmonic":
8807  for(Int_t b=1;b<=6;b++)
8808  {
8809   f4pCumulants->SetBinContent(b,f4pCorrelations->GetBinContent(b)-2.*pow(f2pCorrelations->GetBinContent(b),2.));
8810   Double_t dSumWLinearTwo = 0.; // sum of linear event weights for <2>
8811   Double_t dSumWQuadraticTwo = 0.; // sum of quadratic event weights <2>
8812   Double_t dSpreadTwo = 0.; // weighted and biased estimator for sigma of <2>
8813   Double_t dSumWLinearFour = 0.; // sum of linear event weights for <4>
8814   Double_t dSumWQuadraticFour = 0.; // sum of quadratic event weights <4>
8815   Double_t dSpreadFour = 0.; // weighted and biased estimator for sigma of <4>
8816   dSumWLinearTwo = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8817   dSumWQuadraticTwo = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8818   dSpreadTwo = f2pCorrelations->GetBinError(b);
8819   dSumWLinearFour = fMixedHarmonicEventWeights[0]->GetBinContent(4);
8820   dSumWQuadraticFour = fMixedHarmonicEventWeights[1]->GetBinContent(4);
8821   dSpreadFour = f4pCorrelations->GetBinError(b);
8822   if(pow(dSumWLinearTwo,2.)>dSumWQuadraticTwo && pow(dSumWLinearFour,2.)>dSumWQuadraticFour) 
8823   {
8824    Double_t dError = 16.*pow(f2pCorrelations->GetBinContent(b),2.)
8825                    * pow((pow(dSumWQuadraticTwo,0.5)/dSumWLinearTwo)*dSpreadTwo*pow(pow(dSumWLinearTwo,2.)/(pow(dSumWLinearTwo,2.)-dSumWQuadraticTwo),0.5),2.)
8826                    + pow((pow(dSumWQuadraticFour,0.5)/dSumWLinearFour)*dSpreadFour*pow(pow(dSumWLinearFour,2.)/(pow(dSumWLinearFour,2.)-dSumWQuadraticFour),0.5),2.)
8827                    - 8.*f2pCorrelations->GetBinContent(b)
8828                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8829                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(b,b+15))
8830                    - f2pCorrelations->GetBinContent(b)*f4pCorrelations->GetBinContent(b))
8831                    / (dSumWLinearTwo*dSumWLinearFour-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
8832    if(dError>0.)
8833    {
8834     f4pCumulants->SetBinError(b,pow(dError,0.5)); 
8835    }
8836   } // end of if(pow(dSumWLinearTwo,2.)>dSumWQuadraticTwo && pow(dSumWLinearFour,2.)>dSumWQuadraticFour) 
8837  } // end of for(Int_t b=1;b<=6;b++)     
8838  // c2) "Standard candles":
8839  // <4>_{2n,1n|2n,1n}:
8840  f4pCumulants->SetBinContent(8,f4pCorrelations->GetBinContent(8)-f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(1));
8841  {
8842   Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
8843   Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
8844   Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
8845   Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
8846   Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
8847   Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
8848   Double_t dSumWLinearFour2n1n2n1n = 0.; // sum of linear event weights for <4>
8849   Double_t dSumWQuadraticFour2n1n2n1n = 0.; // sum of quadratic event weights <4>
8850   Double_t dSpreadFour2n1n2n1n = 0.; // weighted and biased estimator for sigma of <4>
8851   dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8852   dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8853   dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
8854   dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8855   dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8856   dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
8857   dSumWLinearFour2n1n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
8858   dSumWQuadraticFour2n1n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
8859   dSpreadFour2n1n2n1n = f4pCorrelations->GetBinError(8);
8860   if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
8861      pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
8862      pow(dSumWLinearFour2n1n2n1n,2.)>dSumWQuadraticFour2n1n2n1n)
8863   {
8864    Double_t dError = pow(f2pCorrelations->GetBinContent(2),2.)
8865                    * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
8866                    * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
8867                    + pow(f2pCorrelations->GetBinContent(1),2.)
8868                    * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
8869                    * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
8870                    + pow((pow(dSumWQuadraticFour2n1n2n1n,0.5)/dSumWLinearFour2n1n2n1n)
8871                    * dSpreadFour2n1n2n1n*pow(pow(dSumWLinearFour2n1n2n1n,2.)/(pow(dSumWLinearFour2n1n2n1n,2.)-dSumWQuadraticFour2n1n2n1n),0.5),2.)
8872                    + 2.*f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(1)
8873                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
8874                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,2))
8875                    - f2pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(2))
8876                    / (dSumWLinearTwo1n1n*dSumWLinearTwo2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
8877                    - 2.*f2pCorrelations->GetBinContent(2)
8878                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8879                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,22))
8880                    - f2pCorrelations->GetBinContent(1)*f4pCorrelations->GetBinContent(8))
8881                    / (dSumWLinearTwo1n1n*dSumWLinearFour2n1n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
8882                    - 2.*f2pCorrelations->GetBinContent(1)
8883                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8884                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,22))
8885                    - f2pCorrelations->GetBinContent(2)*f4pCorrelations->GetBinContent(8))
8886                    / (dSumWLinearTwo2n2n*dSumWLinearFour2n1n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
8887    if(dError>0.)
8888    {
8889     f4pCumulants->SetBinError(8,pow(dError,0.5)); 
8890    }
8891   } // end of if(...)
8892  } // end of {
8893  // <4>_{3n,1n|3n,1n}:
8894  f4pCumulants->SetBinContent(9,f4pCorrelations->GetBinContent(9)-f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(1));
8895  {
8896   Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
8897   Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
8898   Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
8899   Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
8900   Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
8901   Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
8902   Double_t dSumWLinearFour3n1n3n1n = 0.; // sum of linear event weights for <4>
8903   Double_t dSumWQuadraticFour3n1n3n1n = 0.; // sum of quadratic event weights <4>
8904   Double_t dSpreadFour3n1n3n1n = 0.; // weighted and biased estimator for sigma of <4>
8905   dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8906   dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8907   dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
8908   dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8909   dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8910   dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
8911   dSumWLinearFour3n1n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
8912   dSumWQuadraticFour3n1n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
8913   dSpreadFour3n1n3n1n = f4pCorrelations->GetBinError(9);
8914   if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
8915      pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
8916      pow(dSumWLinearFour3n1n3n1n,2.)>dSumWQuadraticFour3n1n3n1n)
8917   {
8918    Double_t dError = pow(f2pCorrelations->GetBinContent(3),2.)
8919                    * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
8920                    * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
8921                    + pow(f2pCorrelations->GetBinContent(1),2.)
8922                    * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
8923                    * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
8924                    + pow((pow(dSumWQuadraticFour3n1n3n1n,0.5)/dSumWLinearFour3n1n3n1n)
8925                    * dSpreadFour3n1n3n1n*pow(pow(dSumWLinearFour3n1n3n1n,2.)/(pow(dSumWLinearFour3n1n3n1n,2.)-dSumWQuadraticFour3n1n3n1n),0.5),2.)
8926                    + 2.*f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(1)
8927                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
8928                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,3))
8929                    - f2pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(3))
8930                    / (dSumWLinearTwo1n1n*dSumWLinearTwo3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
8931                    - 2.*f2pCorrelations->GetBinContent(3)
8932                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8933                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,23))
8934                    - f2pCorrelations->GetBinContent(1)*f4pCorrelations->GetBinContent(9))
8935                    / (dSumWLinearTwo1n1n*dSumWLinearFour3n1n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
8936                    - 2.*f2pCorrelations->GetBinContent(1)
8937                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8938                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,23))
8939                    - f2pCorrelations->GetBinContent(3)*f4pCorrelations->GetBinContent(9))
8940                    / (dSumWLinearTwo3n3n*dSumWLinearFour3n1n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
8941    if(dError>0.)
8942    {
8943     f4pCumulants->SetBinError(9,pow(dError,0.5)); 
8944    }
8945   } // end of if(...)
8946  } // end of {
8947  // <4>_{3n,2n|3n,2n}:
8948  f4pCumulants->SetBinContent(10,f4pCorrelations->GetBinContent(10)-f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(2));
8949  {
8950   Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
8951   Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
8952   Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
8953   Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
8954   Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
8955   Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
8956   Double_t dSumWLinearFour3n2n3n2n = 0.; // sum of linear event weights for <4>
8957   Double_t dSumWQuadraticFour3n2n3n2n = 0.; // sum of quadratic event weights <4>
8958   Double_t dSpreadFour3n2n3n2n = 0.; // weighted and biased estimator for sigma of <4>
8959   dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8960   dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8961   dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
8962   dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8963   dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8964   dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
8965   dSumWLinearFour3n2n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
8966   dSumWQuadraticFour3n2n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
8967   dSpreadFour3n2n3n2n = f4pCorrelations->GetBinError(10);
8968   if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
8969      pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
8970      pow(dSumWLinearFour3n2n3n2n,2.)>dSumWQuadraticFour3n2n3n2n)
8971   {
8972    Double_t dError = pow(f2pCorrelations->GetBinContent(3),2.)
8973                    * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
8974                    * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
8975                    + pow(f2pCorrelations->GetBinContent(2),2.)
8976                    * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
8977                    * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
8978                    + pow((pow(dSumWQuadraticFour3n2n3n2n,0.5)/dSumWLinearFour3n2n3n2n)
8979                    * dSpreadFour3n2n3n2n*pow(pow(dSumWLinearFour3n2n3n2n,2.)/(pow(dSumWLinearFour3n2n3n2n,2.)-dSumWQuadraticFour3n2n3n2n),0.5),2.)
8980                    + 2.*f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(2)
8981                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
8982                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,3))
8983                    - f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(3))
8984                    / (dSumWLinearTwo2n2n*dSumWLinearTwo3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
8985                    - 2.*f2pCorrelations->GetBinContent(3)
8986                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8987                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,24))
8988                    - f2pCorrelations->GetBinContent(2)*f4pCorrelations->GetBinContent(10))
8989                    / (dSumWLinearTwo2n2n*dSumWLinearFour3n2n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
8990                    - 2.*f2pCorrelations->GetBinContent(2)
8991                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8992                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,24))
8993                    - f2pCorrelations->GetBinContent(3)*f4pCorrelations->GetBinContent(10))
8994                    / (dSumWLinearTwo3n3n*dSumWLinearFour3n2n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
8995    if(dError>0.)
8996    {
8997     f4pCumulants->SetBinError(10,pow(dError,0.5)); 
8998    }
8999   } // end of if(...)
9000  } // end of {
9001  // <4>_{4n,1n|4n,1n}
9002  f4pCumulants->SetBinContent(11,f4pCorrelations->GetBinContent(11)-f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(1));
9003  {
9004   Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
9005   Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
9006   Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
9007   Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9008   Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9009   Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9010   Double_t dSumWLinearFour4n1n4n1n = 0.; // sum of linear event weights for <4>
9011   Double_t dSumWQuadraticFour4n1n4n1n = 0.; // sum of quadratic event weights <4>
9012   Double_t dSpreadFour4n1n4n1n = 0.; // weighted and biased estimator for sigma of <4>
9013   dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9014   dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9015   dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
9016   dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9017   dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9018   dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9019   dSumWLinearFour4n1n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9020   dSumWQuadraticFour4n1n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9021   dSpreadFour4n1n4n1n = f4pCorrelations->GetBinError(11);
9022   if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
9023      pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9024      pow(dSumWLinearFour4n1n4n1n,2.)>dSumWQuadraticFour4n1n4n1n)
9025   {
9026    Double_t dError = pow(f2pCorrelations->GetBinContent(4),2.)
9027                    * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
9028                    * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
9029                    + pow(f2pCorrelations->GetBinContent(1),2.)
9030                    * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9031                    * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9032                    + pow((pow(dSumWQuadraticFour4n1n4n1n,0.5)/dSumWLinearFour4n1n4n1n)
9033                    * dSpreadFour4n1n4n1n*pow(pow(dSumWLinearFour4n1n4n1n,2.)/(pow(dSumWLinearFour4n1n4n1n,2.)-dSumWQuadraticFour4n1n4n1n),0.5),2.)
9034                    + 2.*f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(1)
9035                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9036                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,4))
9037                    - f2pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(4))
9038                    / (dSumWLinearTwo1n1n*dSumWLinearTwo4n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9039                    - 2.*f2pCorrelations->GetBinContent(4)
9040                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9041                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,25))
9042                    - f2pCorrelations->GetBinContent(1)*f4pCorrelations->GetBinContent(11))
9043                    / (dSumWLinearTwo1n1n*dSumWLinearFour4n1n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9044                    - 2.*f2pCorrelations->GetBinContent(1)
9045                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9046                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,25))
9047                    - f2pCorrelations->GetBinContent(4)*f4pCorrelations->GetBinContent(11))
9048                    / (dSumWLinearTwo4n4n*dSumWLinearFour4n1n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9049    if(dError>0.)
9050    {
9051     f4pCumulants->SetBinError(11,pow(dError,0.5)); 
9052    }
9053   } // end of if(...)
9054  } // end of {
9055  // <4>_{4n,2n|4n,2n}
9056  f4pCumulants->SetBinContent(12,f4pCorrelations->GetBinContent(12)-f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(2));
9057  {
9058   Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
9059   Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
9060   Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
9061   Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9062   Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9063   Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9064   Double_t dSumWLinearFour4n2n4n2n = 0.; // sum of linear event weights for <4>
9065   Double_t dSumWQuadraticFour4n2n4n2n = 0.; // sum of quadratic event weights <4>
9066   Double_t dSpreadFour4n2n4n2n = 0.; // weighted and biased estimator for sigma of <4>
9067   dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9068   dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9069   dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
9070   dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9071   dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9072   dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9073   dSumWLinearFour4n2n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9074   dSumWQuadraticFour4n2n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9075   dSpreadFour4n2n4n2n = f4pCorrelations->GetBinError(12);
9076   if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
9077      pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9078      pow(dSumWLinearFour4n2n4n2n,2.)>dSumWQuadraticFour4n2n4n2n)
9079   {
9080    Double_t dError = pow(f2pCorrelations->GetBinContent(4),2.)
9081                    * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
9082                    * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
9083                    + pow(f2pCorrelations->GetBinContent(2),2.)
9084                    * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9085                    * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9086                    + pow((pow(dSumWQuadraticFour4n2n4n2n,0.5)/dSumWLinearFour4n2n4n2n)
9087                    * dSpreadFour4n2n4n2n*pow(pow(dSumWLinearFour4n2n4n2n,2.)/(pow(dSumWLinearFour4n2n4n2n,2.)-dSumWQuadraticFour4n2n4n2n),0.5),2.)
9088                    + 2.*f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(2)
9089                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9090                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,4))
9091                    - f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(4))
9092                    / (dSumWLinearTwo2n2n*dSumWLinearTwo4n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9093                    - 2.*f2pCorrelations->GetBinContent(4)
9094                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9095                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,25))
9096                    - f2pCorrelations->GetBinContent(2)*f4pCorrelations->GetBinContent(12))
9097                    / (dSumWLinearTwo2n2n*dSumWLinearFour4n2n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9098                    - 2.*f2pCorrelations->GetBinContent(2)
9099                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9100                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,25))
9101                    - f2pCorrelations->GetBinContent(4)*f4pCorrelations->GetBinContent(12))
9102                    / (dSumWLinearTwo4n4n*dSumWLinearFour4n2n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9103    if(dError>0.)
9104    {
9105     f4pCumulants->SetBinError(12,pow(dError,0.5)); 
9106    }
9107   } // end of if(...)
9108  } // end of {
9109  // <4>_{4n,3n|4n,3n}
9110  f4pCumulants->SetBinContent(13,f4pCorrelations->GetBinContent(13)-f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(3));
9111  {
9112   Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
9113   Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
9114   Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
9115   Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9116   Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9117   Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9118   Double_t dSumWLinearFour4n3n4n3n = 0.; // sum of linear event weights for <4>
9119   Double_t dSumWQuadraticFour4n3n4n3n = 0.; // sum of quadratic event weights <4>
9120   Double_t dSpreadFour4n3n4n3n = 0.; // weighted and biased estimator for sigma of <4>
9121   dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9122   dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9123   dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9124   dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9125   dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9126   dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9127   dSumWLinearFour4n3n4n3n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9128   dSumWQuadraticFour4n3n4n3n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9129   dSpreadFour4n3n4n3n = f4pCorrelations->GetBinError(13);
9130   if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9131      pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9132      pow(dSumWLinearFour4n3n4n3n,2.)>dSumWQuadraticFour4n3n4n3n)
9133   {
9134    Double_t dError = pow(f2pCorrelations->GetBinContent(4),2.)
9135                    * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9136                    * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9137                    + pow(f2pCorrelations->GetBinContent(3),2.)
9138                    * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9139                    * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9140                    + pow((pow(dSumWQuadraticFour4n3n4n3n,0.5)/dSumWLinearFour4n3n4n3n)
9141                    * dSpreadFour4n3n4n3n*pow(pow(dSumWLinearFour4n3n4n3n,2.)/(pow(dSumWLinearFour4n3n4n3n,2.)-dSumWQuadraticFour4n3n4n3n),0.5),2.)
9142                    + 2.*f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(3)
9143                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9144                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,4))
9145                    - f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(4))
9146                    / (dSumWLinearTwo3n3n*dSumWLinearTwo4n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9147                    - 2.*f2pCorrelations->GetBinContent(4)
9148                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9149                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,26))
9150                    - f2pCorrelations->GetBinContent(3)*f4pCorrelations->GetBinContent(13))
9151                    / (dSumWLinearTwo3n3n*dSumWLinearFour4n3n4n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9152                    - 2.*f2pCorrelations->GetBinContent(3)
9153                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9154                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,26))
9155                    - f2pCorrelations->GetBinContent(4)*f4pCorrelations->GetBinContent(13))
9156                    / (dSumWLinearTwo4n4n*dSumWLinearFour4n3n4n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9157    if(dError>0.)
9158    {
9159     f4pCumulants->SetBinError(13,pow(dError,0.5)); 
9160    }
9161   } // end of if(...)
9162  } // end of {
9163  // <4>_{5n,1n|5n,1n}
9164  f4pCumulants->SetBinContent(14,f4pCorrelations->GetBinContent(14)-f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(1));
9165  {
9166   Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
9167   Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
9168   Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
9169   Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
9170   Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
9171   Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
9172   Double_t dSumWLinearFour5n1n5n1n = 0.; // sum of linear event weights for <4>
9173   Double_t dSumWQuadraticFour5n1n5n1n = 0.; // sum of quadratic event weights <4>
9174   Double_t dSpreadFour5n1n5n1n = 0.; // weighted and biased estimator for sigma of <4>
9175   dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9176   dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9177   dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
9178   dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9179   dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9180   dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
9181   dSumWLinearFour5n1n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9182   dSumWQuadraticFour5n1n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9183   dSpreadFour5n1n5n1n = f4pCorrelations->GetBinError(14);
9184   if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
9185      pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
9186      pow(dSumWLinearFour5n1n5n1n,2.)>dSumWQuadraticFour5n1n5n1n)
9187   {
9188    Double_t dError = pow(f2pCorrelations->GetBinContent(5),2.)
9189                    * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
9190                    * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
9191                    + pow(f2pCorrelations->GetBinContent(1),2.)
9192                    * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
9193                    * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
9194                    + pow((pow(dSumWQuadraticFour5n1n5n1n,0.5)/dSumWLinearFour5n1n5n1n)
9195                    * dSpreadFour5n1n5n1n*pow(pow(dSumWLinearFour5n1n5n1n,2.)/(pow(dSumWLinearFour5n1n5n1n,2.)-dSumWQuadraticFour5n1n5n1n),0.5),2.)
9196                    + 2.*f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(1)
9197                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9198                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,5))
9199                    - f2pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(5))
9200                    / (dSumWLinearTwo1n1n*dSumWLinearTwo5n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9201                    - 2.*f2pCorrelations->GetBinContent(5)
9202                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9203                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,28))
9204                    - f2pCorrelations->GetBinContent(1)*f4pCorrelations->GetBinContent(14))
9205                    / (dSumWLinearTwo1n1n*dSumWLinearFour5n1n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9206                    - 2.*f2pCorrelations->GetBinContent(1)
9207                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9208                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,28))
9209                    - f2pCorrelations->GetBinContent(5)*f4pCorrelations->GetBinContent(14))
9210                    / (dSumWLinearTwo5n5n*dSumWLinearFour5n1n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9211    if(dError>0.)
9212    {
9213     f4pCumulants->SetBinError(14,pow(dError,0.5)); 
9214    }
9215   } // end of if(...)
9216  } // end of {
9217  // <4>_{5n,2n|5n,2n}
9218  f4pCumulants->SetBinContent(15,f4pCorrelations->GetBinContent(15)-f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(2));
9219  {
9220   Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
9221   Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
9222   Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
9223   Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
9224   Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
9225   Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
9226   Double_t dSumWLinearFour5n2n5n2n = 0.; // sum of linear event weights for <4>
9227   Double_t dSumWQuadraticFour5n2n5n2n = 0.; // sum of quadratic event weights <4>
9228   Double_t dSpreadFour5n2n5n2n = 0.; // weighted and biased estimator for sigma of <4>
9229   dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9230   dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9231   dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
9232   dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9233   dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9234   dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
9235   dSumWLinearFour5n2n5n2n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9236   dSumWQuadraticFour5n2n5n2n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9237   dSpreadFour5n2n5n2n = f4pCorrelations->GetBinError(15);
9238   if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
9239      pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
9240      pow(dSumWLinearFour5n2n5n2n,2.)>dSumWQuadraticFour5n2n5n2n)
9241   {
9242    Double_t dError = pow(f2pCorrelations->GetBinContent(5),2.)
9243                    * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
9244                    * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
9245                    + pow(f2pCorrelations->GetBinContent(2),2.)
9246                    * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
9247                    * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
9248                    + pow((pow(dSumWQuadraticFour5n2n5n2n,0.5)/dSumWLinearFour5n2n5n2n)
9249                    * dSpreadFour5n2n5n2n*pow(pow(dSumWLinearFour5n2n5n2n,2.)/(pow(dSumWLinearFour5n2n5n2n,2.)-dSumWQuadraticFour5n2n5n2n),0.5),2.)
9250                    + 2.*f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(2)
9251                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9252                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,5))
9253                    - f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(5))
9254                    / (dSumWLinearTwo2n2n*dSumWLinearTwo5n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9255                    - 2.*f2pCorrelations->GetBinContent(5)
9256                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9257                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,29))
9258                    - f2pCorrelations->GetBinContent(2)*f4pCorrelations->GetBinContent(15))
9259                    / (dSumWLinearTwo2n2n*dSumWLinearFour5n2n5n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9260                    - 2.*f2pCorrelations->GetBinContent(2)
9261                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9262                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,29))
9263                    - f2pCorrelations->GetBinContent(5)*f4pCorrelations->GetBinContent(15))
9264                    / (dSumWLinearTwo5n5n*dSumWLinearFour5n2n5n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9265    if(dError>0.)
9266    {
9267     f4pCumulants->SetBinError(15,pow(dError,0.5)); 
9268    }
9269   } // end of if(...)
9270  } // end of {
9271  // <4>_{5n,3n|5n,3n}
9272  f4pCumulants->SetBinContent(16,f4pCorrelations->GetBinContent(16)-f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(3));
9273  {
9274   Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
9275   Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
9276   Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
9277   Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
9278   Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
9279   Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
9280   Double_t dSumWLinearFour5n3n5n3n = 0.; // sum of linear event weights for <4>
9281   Double_t dSumWQuadraticFour5n3n5n3n = 0.; // sum of quadratic event weights <4>
9282   Double_t dSpreadFour5n3n5n3n = 0.; // weighted and biased estimator for sigma of <4>
9283   dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9284   dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9285   dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9286   dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9287   dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9288   dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
9289   dSumWLinearFour5n3n5n3n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9290   dSumWQuadraticFour5n3n5n3n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9291   dSpreadFour5n3n5n3n = f4pCorrelations->GetBinError(16);
9292   if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9293      pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
9294      pow(dSumWLinearFour5n3n5n3n,2.)>dSumWQuadraticFour5n3n5n3n)
9295   {
9296    Double_t dError = pow(f2pCorrelations->GetBinContent(5),2.)
9297                    * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9298                    * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9299                    + pow(f2pCorrelations->GetBinContent(3),2.)
9300                    * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
9301                    * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
9302                    + pow((pow(dSumWQuadraticFour5n3n5n3n,0.5)/dSumWLinearFour5n3n5n3n)
9303                    * dSpreadFour5n3n5n3n*pow(pow(dSumWLinearFour5n3n5n3n,2.)/(pow(dSumWLinearFour5n3n5n3n,2.)-dSumWQuadraticFour5n3n5n3n),0.5),2.)
9304                    + 2.*f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(3)
9305                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9306                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,5))
9307                    - f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(5))
9308                    / (dSumWLinearTwo3n3n*dSumWLinearTwo5n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9309                    - 2.*f2pCorrelations->GetBinContent(5)
9310                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9311                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,30))
9312                    - f2pCorrelations->GetBinContent(3)*f4pCorrelations->GetBinContent(16))
9313                    / (dSumWLinearTwo3n3n*dSumWLinearFour5n3n5n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9314                    - 2.*f2pCorrelations->GetBinContent(3)
9315                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9316                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,30))
9317                    - f2pCorrelations->GetBinContent(5)*f4pCorrelations->GetBinContent(16))
9318                    / (dSumWLinearTwo5n5n*dSumWLinearFour5n3n5n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9319    if(dError>0.)
9320    {
9321     f4pCumulants->SetBinError(16,pow(dError,0.5)); 
9322    }
9323   } // end of if(...)
9324  } // end of {
9325  // <4>_{5n,4n|5n,4n}
9326  f4pCumulants->SetBinContent(17,f4pCorrelations->GetBinContent(17)-f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(4));
9327  {
9328   Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9329   Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9330   Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9331   Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
9332   Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
9333   Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
9334   Double_t dSumWLinearFour5n4n5n4n = 0.; // sum of linear event weights for <4>
9335   Double_t dSumWQuadraticFour5n4n5n4n = 0.; // sum of quadratic event weights <4>
9336   Double_t dSpreadFour5n4n5n4n = 0.; // weighted and biased estimator for sigma of <4>
9337   dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9338   dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9339   dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9340   dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9341   dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9342   dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
9343   dSumWLinearFour5n4n5n4n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9344   dSumWQuadraticFour5n4n5n4n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9345   dSpreadFour5n4n5n4n = f4pCorrelations->GetBinError(17);
9346   if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9347      pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
9348      pow(dSumWLinearFour5n4n5n4n,2.)>dSumWQuadraticFour5n4n5n4n)
9349   {
9350    Double_t dError = pow(f2pCorrelations->GetBinContent(5),2.)
9351                    * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9352                    * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9353                    + pow(f2pCorrelations->GetBinContent(4),2.)
9354                    * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
9355                    * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
9356                    + pow((pow(dSumWQuadraticFour5n4n5n4n,0.5)/dSumWLinearFour5n4n5n4n)
9357                    * dSpreadFour5n4n5n4n*pow(pow(dSumWLinearFour5n4n5n4n,2.)/(pow(dSumWLinearFour5n4n5n4n,2.)-dSumWQuadraticFour5n4n5n4n),0.5),2.)
9358                    + 2.*f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(4)
9359                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9360                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,5))
9361                    - f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(5))
9362                    / (dSumWLinearTwo4n4n*dSumWLinearTwo5n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9363                    - 2.*f2pCorrelations->GetBinContent(5)
9364                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9365                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,31))
9366                    - f2pCorrelations->GetBinContent(4)*f4pCorrelations->GetBinContent(17))
9367                    / (dSumWLinearTwo4n4n*dSumWLinearFour5n4n5n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9368                    - 2.*f2pCorrelations->GetBinContent(4)
9369                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9370                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,31))
9371                    - f2pCorrelations->GetBinContent(5)*f4pCorrelations->GetBinContent(17))
9372                    / (dSumWLinearTwo5n5n*dSumWLinearFour5n4n5n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9373    if(dError>0.)
9374    {
9375     f4pCumulants->SetBinError(17,pow(dError,0.5)); 
9376    }
9377   } // end of if(...)
9378  } // end of {
9379  // <4>_{6n,1n|6n,1n}
9380  f4pCumulants->SetBinContent(18,f4pCorrelations->GetBinContent(18)-f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(1));
9381  {
9382   Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
9383   Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
9384   Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
9385   Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
9386   Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
9387   Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
9388   Double_t dSumWLinearFour6n1n6n1n = 0.; // sum of linear event weights for <4>
9389   Double_t dSumWQuadraticFour6n1n6n1n = 0.; // sum of quadratic event weights <4>
9390   Double_t dSpreadFour6n1n6n1n = 0.; // weighted and biased estimator for sigma of <4>
9391   dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9392   dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9393   dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
9394   dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9395   dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9396   dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
9397   dSumWLinearFour6n1n6n1n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9398   dSumWQuadraticFour6n1n6n1n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9399   dSpreadFour6n1n6n1n = f4pCorrelations->GetBinError(18);
9400   if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
9401      pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
9402      pow(dSumWLinearFour6n1n6n1n,2.)>dSumWQuadraticFour6n1n6n1n)
9403   {
9404    Double_t dError = pow(f2pCorrelations->GetBinContent(6),2.)
9405                    * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
9406                    * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
9407                    + pow(f2pCorrelations->GetBinContent(1),2.)
9408                    * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
9409                    * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
9410                    + pow((pow(dSumWQuadraticFour6n1n6n1n,0.5)/dSumWLinearFour6n1n6n1n)
9411                    * dSpreadFour6n1n6n1n*pow(pow(dSumWLinearFour6n1n6n1n,2.)/(pow(dSumWLinearFour6n1n6n1n,2.)-dSumWQuadraticFour6n1n6n1n),0.5),2.)
9412                    + 2.*f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(1)
9413                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9414                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,6))
9415                    - f2pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(6))
9416                    / (dSumWLinearTwo1n1n*dSumWLinearTwo6n6n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9417                    - 2.*f2pCorrelations->GetBinContent(6)
9418                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9419                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,32))
9420                    - f2pCorrelations->GetBinContent(1)*f4pCorrelations->GetBinContent(18))
9421                    / (dSumWLinearTwo1n1n*dSumWLinearFour6n1n6n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9422                    - 2.*f2pCorrelations->GetBinContent(1)
9423                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9424                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,32))
9425                    - f2pCorrelations->GetBinContent(6)*f4pCorrelations->GetBinContent(18))
9426                    / (dSumWLinearTwo6n6n*dSumWLinearFour6n1n6n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9427    if(dError>0.)
9428    {
9429     f4pCumulants->SetBinError(18,pow(dError,0.5)); 
9430    }
9431   } // end of if(...)
9432  } // end of {
9433  // <4>_{6n,2n|6n,2n}
9434  f4pCumulants->SetBinContent(19,f4pCorrelations->GetBinContent(19)-f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(2));
9435  {
9436   Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
9437   Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
9438   Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
9439   Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
9440   Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
9441   Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
9442   Double_t dSumWLinearFour6n2n6n2n = 0.; // sum of linear event weights for <4>
9443   Double_t dSumWQuadraticFour6n2n6n2n = 0.; // sum of quadratic event weights <4>
9444   Double_t dSpreadFour6n2n6n2n = 0.; // weighted and biased estimator for sigma of <4>
9445   dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9446   dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9447   dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
9448   dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9449   dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9450   dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
9451   dSumWLinearFour6n2n6n2n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9452   dSumWQuadraticFour6n2n6n2n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9453   dSpreadFour6n2n6n2n = f4pCorrelations->GetBinError(19);
9454   if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
9455      pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
9456      pow(dSumWLinearFour6n2n6n2n,2.)>dSumWQuadraticFour6n2n6n2n)
9457   {
9458    Double_t dError = pow(f2pCorrelations->GetBinContent(6),2.)
9459                    * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
9460                    * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
9461                    + pow(f2pCorrelations->GetBinContent(2),2.)
9462                    * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
9463                    * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
9464                    + pow((pow(dSumWQuadraticFour6n2n6n2n,0.5)/dSumWLinearFour6n2n6n2n)
9465                    * dSpreadFour6n2n6n2n*pow(pow(dSumWLinearFour6n2n6n2n,2.)/(pow(dSumWLinearFour6n2n6n2n,2.)-dSumWQuadraticFour6n2n6n2n),0.5),2.)
9466                    + 2.*f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(2)
9467                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9468                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,6))
9469                    - f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(6))
9470                    / (dSumWLinearTwo2n2n*dSumWLinearTwo6n6n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9471                    - 2.*f2pCorrelations->GetBinContent(6)
9472                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9473                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,33))
9474                    - f2pCorrelations->GetBinContent(2)*f4pCorrelations->GetBinContent(19))
9475                    / (dSumWLinearTwo2n2n*dSumWLinearFour6n2n6n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9476                    - 2.*f2pCorrelations->GetBinContent(2)
9477                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9478                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,33))
9479                    - f2pCorrelations->GetBinContent(6)*f4pCorrelations->GetBinContent(19))
9480                    / (dSumWLinearTwo6n6n*dSumWLinearFour6n2n6n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9481    if(dError>0.)
9482    {
9483     f4pCumulants->SetBinError(19,pow(dError,0.5)); 
9484    }
9485   } // end of if(...)
9486  } // end of {
9487  // <4>_{6n,3n|6n,3n}
9488  f4pCumulants->SetBinContent(20,f4pCorrelations->GetBinContent(20)-f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(3));
9489  {
9490   Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
9491   Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
9492   Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
9493   Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
9494   Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
9495   Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
9496   Double_t dSumWLinearFour6n3n6n3n = 0.; // sum of linear event weights for <4>
9497   Double_t dSumWQuadraticFour6n3n6n3n = 0.; // sum of quadratic event weights <4>
9498   Double_t dSpreadFour6n3n6n3n = 0.; // weighted and biased estimator for sigma of <4>
9499   dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9500   dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9501   dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9502   dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9503   dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9504   dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
9505   dSumWLinearFour6n3n6n3n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9506   dSumWQuadraticFour6n3n6n3n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9507   dSpreadFour6n3n6n3n = f4pCorrelations->GetBinError(20);
9508   if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9509      pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
9510      pow(dSumWLinearFour6n3n6n3n,2.)>dSumWQuadraticFour6n3n6n3n)
9511   {
9512    Double_t dError = pow(f2pCorrelations->GetBinContent(6),2.)
9513                    * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9514                    * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9515                    + pow(f2pCorrelations->GetBinContent(3),2.)
9516                    * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
9517                    * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
9518                    + pow((pow(dSumWQuadraticFour6n3n6n3n,0.5)/dSumWLinearFour6n3n6n3n)
9519                    * dSpreadFour6n3n6n3n*pow(pow(dSumWLinearFour6n3n6n3n,2.)/(pow(dSumWLinearFour6n3n6n3n,2.)-dSumWQuadraticFour6n3n6n3n),0.5),2.)
9520                    + 2.*f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(3)
9521                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9522                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,6))
9523                    - f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(6))
9524                    / (dSumWLinearTwo3n3n*dSumWLinearTwo6n6n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9525                    - 2.*f2pCorrelations->GetBinContent(6)
9526                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9527                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,34))
9528                    - f2pCorrelations->GetBinContent(3)*f4pCorrelations->GetBinContent(20))
9529                    / (dSumWLinearTwo3n3n*dSumWLinearFour6n3n6n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9530                    - 2.*f2pCorrelations->GetBinContent(3)
9531                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9532                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,34))
9533                    - f2pCorrelations->GetBinContent(6)*f4pCorrelations->GetBinContent(20))
9534                    / (dSumWLinearTwo6n6n*dSumWLinearFour6n3n6n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9535    if(dError>0.)
9536    {
9537     f4pCumulants->SetBinError(20,pow(dError,0.5)); 
9538    }
9539   } // end of if(...)
9540  } // end of {
9541  // <4>_{6n,4n|6n,4n}
9542  f4pCumulants->SetBinContent(21,f4pCorrelations->GetBinContent(21)-f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(4));
9543  {
9544   Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9545   Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9546   Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9547   Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
9548   Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
9549   Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
9550   Double_t dSumWLinearFour6n4n6n4n = 0.; // sum of linear event weights for <4>
9551   Double_t dSumWQuadraticFour6n4n6n4n = 0.; // sum of quadratic event weights <4>
9552   Double_t dSpreadFour6n4n6n4n = 0.; // weighted and biased estimator for sigma of <4>
9553   dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9554   dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9555   dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9556   dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9557   dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9558   dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
9559   dSumWLinearFour6n4n6n4n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9560   dSumWQuadraticFour6n4n6n4n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9561   dSpreadFour6n4n6n4n = f4pCorrelations->GetBinError(21);
9562   if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9563      pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
9564      pow(dSumWLinearFour6n4n6n4n,2.)>dSumWQuadraticFour6n4n6n4n)
9565   {
9566    Double_t dError = pow(f2pCorrelations->GetBinContent(6),2.)
9567                    * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9568                    * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9569                    + pow(f2pCorrelations->GetBinContent(4),2.)
9570                    * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
9571                    * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
9572                    + pow((pow(dSumWQuadraticFour6n4n6n4n,0.5)/dSumWLinearFour6n4n6n4n)
9573                    * dSpreadFour6n4n6n4n*pow(pow(dSumWLinearFour6n4n6n4n,2.)/(pow(dSumWLinearFour6n4n6n4n,2.)-dSumWQuadraticFour6n4n6n4n),0.5),2.)
9574                    + 2.*f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(4)
9575                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9576                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,6))
9577                    - f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(6))
9578                    / (dSumWLinearTwo4n4n*dSumWLinearTwo6n6n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9579                    - 2.*f2pCorrelations->GetBinContent(6)
9580                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9581                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,35))
9582                    - f2pCorrelations->GetBinContent(4)*f4pCorrelations->GetBinContent(21))
9583                    / (dSumWLinearTwo4n4n*dSumWLinearFour6n4n6n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9584                    - 2.*f2pCorrelations->GetBinContent(4)
9585                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9586                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,35))
9587                    - f2pCorrelations->GetBinContent(6)*f4pCorrelations->GetBinContent(21))
9588                    / (dSumWLinearTwo6n6n*dSumWLinearFour6n4n6n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9589    if(dError>0.)
9590    {
9591     f4pCumulants->SetBinError(21,pow(dError,0.5)); 
9592    }
9593   } // end of if(...)
9594  } // end of {
9595  // <4>_{6n,5n|6n,5n}
9596  f4pCumulants->SetBinContent(22,f4pCorrelations->GetBinContent(22)-f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(5));
9597  {
9598   Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
9599   Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
9600   Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
9601   Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
9602   Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
9603   Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
9604   Double_t dSumWLinearFour6n5n6n5n = 0.; // sum of linear event weights for <4>
9605   Double_t dSumWQuadraticFour6n5n6n5n = 0.; // sum of quadratic event weights <4>
9606   Double_t dSpreadFour6n5n6n5n = 0.; // weighted and biased estimator for sigma of <4>
9607   dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9608   dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9609   dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
9610   dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9611   dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9612   dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
9613   dSumWLinearFour6n5n6n5n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9614   dSumWQuadraticFour6n5n6n5n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9615   dSpreadFour6n5n6n5n = f4pCorrelations->GetBinError(22);
9616   if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
9617      pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
9618      pow(dSumWLinearFour6n5n6n5n,2.)>dSumWQuadraticFour6n5n6n5n)
9619   {
9620    Double_t dError = pow(f2pCorrelations->GetBinContent(6),2.)
9621                    * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
9622                    * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
9623                    + pow(f2pCorrelations->GetBinContent(5),2.)
9624                    * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
9625                    * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
9626                    + pow((pow(dSumWQuadraticFour6n5n6n5n,0.5)/dSumWLinearFour6n5n6n5n)
9627                    * dSpreadFour6n5n6n5n*pow(pow(dSumWLinearFour6n5n6n5n,2.)/(pow(dSumWLinearFour6n5n6n5n,2.)-dSumWQuadraticFour6n5n6n5n),0.5),2.)
9628                    + 2.*f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(5)
9629                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9630                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,6))
9631                    - f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(6))
9632                    / (dSumWLinearTwo5n5n*dSumWLinearTwo6n6n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9633                    - 2.*f2pCorrelations->GetBinContent(6)
9634                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9635                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,36))
9636                    - f2pCorrelations->GetBinContent(5)*f4pCorrelations->GetBinContent(22))
9637                    / (dSumWLinearTwo5n5n*dSumWLinearFour6n5n6n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9638                    - 2.*f2pCorrelations->GetBinContent(5)
9639                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9640                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,36))
9641                    - f2pCorrelations->GetBinContent(6)*f4pCorrelations->GetBinContent(22))
9642                    / (dSumWLinearTwo6n6n*dSumWLinearFour6n5n6n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9643    if(dError>0.)
9644    {
9645     f4pCumulants->SetBinError(22,pow(dError,0.5)); 
9646    }
9647   } // end of if(...)
9648  } // end of {
9649
9650  // c3) "Two distinct harmonics":
9651  for(Int_t b=24;b<=25;b++)
9652  {
9653   f4pCumulants->SetBinContent(b,f4pCorrelations->GetBinContent(b));
9654   Double_t dSumWLinear = 0.; // sum of linear event weights
9655   Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
9656   Double_t dSpread = 0.; // weighted and biased estimator for sigma
9657   Double_t dError = 0.; // weighted and unbiased estimator for sigma
9658   dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9659   dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9660   dSpread = f4pCorrelations->GetBinError(b);
9661   if(pow(dSumWLinear,2.)>dSumWQuadratic)
9662   {
9663    dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
9664    f4pCumulants->SetBinError(b,dError); 
9665   } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
9666  } // end of for(Int_t b=24;b<=25;b++)
9667  // c4) "Three distinct harmonics":
9668  for(Int_t b=27;b<=36;b++)
9669  {
9670   f4pCumulants->SetBinContent(b,f4pCorrelations->GetBinContent(b));
9671   Double_t dSumWLinear = 0.; // sum of linear event weights
9672   Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
9673   Double_t dSpread = 0.; // weighted and biased estimator for sigma
9674   Double_t dError = 0.; // weighted and unbiased estimator for sigma
9675   dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9676   dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9677   dSpread = f4pCorrelations->GetBinError(b);
9678   if(pow(dSumWLinear,2.)>dSumWQuadratic)
9679   {
9680    dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
9681    f4pCumulants->SetBinError(b,dError); 
9682   } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
9683  } // end of for(Int_t b=27;b<=36;b++)
9684  // c5) "Four distinct harmonics":
9685  for(Int_t b=38;b<=45;b++)
9686  {
9687   f4pCumulants->SetBinContent(b,f4pCorrelations->GetBinContent(b));
9688   Double_t dSumWLinear = 0.; // sum of linear event weights
9689   Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
9690   Double_t dSpread = 0.; // weighted and biased estimator for sigma
9691   Double_t dError = 0.; // weighted and unbiased estimator for sigma
9692   dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9693   dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9694   dSpread = f4pCorrelations->GetBinError(b);
9695   if(pow(dSumWLinear,2.)>dSumWQuadratic)
9696   {
9697    dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
9698    f4pCumulants->SetBinError(b,dError); 
9699   } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
9700  } // end of for(Int_t b=38;b<=45;b++)
9701
9702  // d) Calculate 5-p cumulants: 
9703  // d1) "Standard candles":
9704  f5pCumulants->SetBinContent(1,f5pCorrelations->GetBinContent(1)-f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(3));
9705  {
9706   Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
9707   Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
9708   Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
9709   Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
9710   Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
9711   Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
9712   Double_t dSumWLinearFive3n2n3n1n1n = 0.; // sum of linear event weights for <4>
9713   Double_t dSumWQuadraticFive3n2n3n1n1n = 0.; // sum of quadratic event weights <4>
9714   Double_t dSpreadFive3n2n3n1n1n = 0.; // weighted and biased estimator for sigma of <4>
9715   dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9716   dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9717   dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9718   dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9719   dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9720   dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
9721   dSumWLinearFive3n2n3n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9722   dSumWQuadraticFive3n2n3n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9723   dSpreadFive3n2n3n1n1n = f5pCorrelations->GetBinError(1);
9724   if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9725      pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
9726      pow(dSumWLinearFive3n2n3n1n1n,2.)>dSumWQuadraticFive3n2n3n1n1n)
9727   {
9728    Double_t dError = pow(f3pCorrelations->GetBinContent(1),2.)
9729                    * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9730                    * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9731                    + pow(f2pCorrelations->GetBinContent(3),2.)
9732                    * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
9733                    * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
9734                    + pow((pow(dSumWQuadraticFive3n2n3n1n1n,0.5)/dSumWLinearFive3n2n3n1n1n)
9735                    * dSpreadFive3n2n3n1n1n*pow(pow(dSumWLinearFive3n2n3n1n1n,2.)/(pow(dSumWLinearFive3n2n3n1n1n,2.)-dSumWQuadraticFive3n2n3n1n1n),0.5),2.)
9736                    + 2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(3)
9737                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
9738                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,7))
9739                    - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(1))
9740                    / (dSumWLinearTwo3n3n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
9741                    - 2.*f3pCorrelations->GetBinContent(1)
9742                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
9743                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,57))
9744                    - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(1))
9745                    / (dSumWLinearTwo3n3n*dSumWLinearFive3n2n3n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
9746                    - 2.*f2pCorrelations->GetBinContent(3)
9747                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
9748                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,57))
9749                    - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(1))
9750                    / (dSumWLinearThree2n1n1n*dSumWLinearFive3n2n3n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
9751    if(dError>0.)
9752    {
9753     f5pCumulants->SetBinError(1,pow(dError,0.5)); 
9754    }
9755   } // end of if(...)
9756  } // end of {
9757
9758  f5pCumulants->SetBinContent(2,f5pCorrelations->GetBinContent(2)-f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(1));
9759  {
9760   Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
9761   Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
9762   Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
9763   Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
9764   Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
9765   Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
9766   Double_t dSumWLinearFive4n1n2n2n1n = 0.; // sum of linear event weights for <4>
9767   Double_t dSumWQuadraticFive4n1n2n2n1n = 0.; // sum of quadratic event weights <4>
9768   Double_t dSpreadFive4n1n2n2n1n = 0.; // weighted and biased estimator for sigma of <4>
9769   dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9770   dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9771   dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
9772   dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9773   dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9774   dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
9775   dSumWLinearFive4n1n2n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9776   dSumWQuadraticFive4n1n2n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9777   dSpreadFive4n1n2n2n1n = f5pCorrelations->GetBinError(2);
9778   if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
9779      pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
9780      pow(dSumWLinearFive4n1n2n2n1n,2.)>dSumWQuadraticFive4n1n2n2n1n)
9781   {
9782    Double_t dError = pow(f3pCorrelations->GetBinContent(2),2.)
9783                    * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
9784                    * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
9785                    + pow(f2pCorrelations->GetBinContent(1),2.)
9786                    * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
9787                    * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
9788                    + pow((pow(dSumWQuadraticFive4n1n2n2n1n,0.5)/dSumWLinearFive4n1n2n2n1n)
9789                    * dSpreadFive4n1n2n2n1n*pow(pow(dSumWLinearFive4n1n2n2n1n,2.)/(pow(dSumWLinearFive4n1n2n2n1n,2.)-dSumWQuadraticFive4n1n2n2n1n),0.5),2.)
9790                    + 2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(1)
9791                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
9792                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,8))
9793                    - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(2))
9794                    / (dSumWLinearTwo1n1n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
9795                    - 2.*f3pCorrelations->GetBinContent(2)
9796                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
9797                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,58))
9798                    - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(2))
9799                    / (dSumWLinearTwo1n1n*dSumWLinearFive4n1n2n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
9800                    - 2.*f2pCorrelations->GetBinContent(1)
9801                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
9802                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,58))
9803                    - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(2))
9804                    / (dSumWLinearThree4n2n2n*dSumWLinearFive4n1n2n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
9805    if(dError>0.)
9806    {
9807     f5pCumulants->SetBinError(2,pow(dError,0.5)); 
9808    }
9809   } // end of if(...)
9810  } // end of {
9811  f5pCumulants->SetBinContent(3,f5pCorrelations->GetBinContent(3)-f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(2));
9812  {
9813   Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
9814   Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
9815   Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
9816   Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
9817   Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
9818   Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
9819   Double_t dSumWLinearFive4n2n3n2n1n = 0.; // sum of linear event weights for <4>
9820   Double_t dSumWQuadraticFive4n2n3n2n1n = 0.; // sum of quadratic event weights <4>
9821   Double_t dSpreadFive4n2n3n2n1n = 0.; // weighted and biased estimator for sigma of <4>
9822   dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9823   dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9824   dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
9825   dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9826   dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9827   dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
9828   dSumWLinearFive4n2n3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9829   dSumWQuadraticFive4n2n3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9830   dSpreadFive4n2n3n2n1n = f5pCorrelations->GetBinError(3);
9831   if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
9832      pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
9833      pow(dSumWLinearFive4n2n3n2n1n,2.)>dSumWQuadraticFive4n2n3n2n1n)
9834   {
9835    Double_t dError = pow(f3pCorrelations->GetBinContent(6),2.)
9836                    * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
9837                    * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
9838                    + pow(f2pCorrelations->GetBinContent(2),2.)
9839                    * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
9840                    * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
9841                    + pow((pow(dSumWQuadraticFive4n2n3n2n1n,0.5)/dSumWLinearFive4n2n3n2n1n)
9842                    * dSpreadFive4n2n3n2n1n*pow(pow(dSumWLinearFive4n2n3n2n1n,2.)/(pow(dSumWLinearFive4n2n3n2n1n,2.)-dSumWQuadraticFive4n2n3n2n1n),0.5),2.)
9843                    + 2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(2)
9844                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
9845                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,11))
9846                    - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(6))
9847                    / (dSumWLinearTwo2n2n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
9848                    - 2.*f3pCorrelations->GetBinContent(6)
9849                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
9850                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,59))
9851                    - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(3))
9852                    / (dSumWLinearTwo2n2n*dSumWLinearFive4n2n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
9853                    - 2.*f2pCorrelations->GetBinContent(2)
9854                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
9855                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,59))
9856                    - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(3))
9857                    / (dSumWLinearThree4n3n1n*dSumWLinearFive4n2n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
9858    if(dError>0.)
9859    {
9860     f5pCumulants->SetBinError(3,pow(dError,0.5)); 
9861    }
9862   } // end of if(...)
9863  } // end of {
9864  f5pCumulants->SetBinContent(4,f5pCorrelations->GetBinContent(4)-f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(3));
9865  {
9866   Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
9867   Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
9868   Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
9869   Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
9870   Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
9871   Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
9872   Double_t dSumWLinearFive4n3n3n2n2n = 0.; // sum of linear event weights for <4>
9873   Double_t dSumWQuadraticFive4n3n3n2n2n = 0.; // sum of quadratic event weights <4>
9874   Double_t dSpreadFive4n3n3n2n2n = 0.; // weighted and biased estimator for sigma of <4>
9875   dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9876   dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9877   dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9878   dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9879   dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9880   dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
9881   dSumWLinearFive4n3n3n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9882   dSumWQuadraticFive4n3n3n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9883   dSpreadFive4n3n3n2n2n = f5pCorrelations->GetBinError(4);
9884   if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9885      pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
9886      pow(dSumWLinearFive4n3n3n2n2n,2.)>dSumWQuadraticFive4n3n3n2n2n)
9887   {
9888    Double_t dError = pow(f3pCorrelations->GetBinContent(2),2.)
9889                    * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9890                    * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9891                    + pow(f2pCorrelations->GetBinContent(3),2.)
9892                    * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
9893                    * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
9894                    + pow((pow(dSumWQuadraticFive4n3n3n2n2n,0.5)/dSumWLinearFive4n3n3n2n2n)
9895                    * dSpreadFive4n3n3n2n2n*pow(pow(dSumWLinearFive4n3n3n2n2n,2.)/(pow(dSumWLinearFive4n3n3n2n2n,2.)-dSumWQuadraticFive4n3n3n2n2n),0.5),2.)
9896                    + 2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(3)
9897                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
9898                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,8))
9899                    - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(2))
9900                    / (dSumWLinearTwo3n3n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
9901                    - 2.*f3pCorrelations->GetBinContent(2)
9902                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
9903                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,60))
9904                    - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(4))
9905                    / (dSumWLinearTwo3n3n*dSumWLinearFive4n3n3n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
9906                    - 2.*f2pCorrelations->GetBinContent(3)
9907                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
9908                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,60))
9909                    - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(4))
9910                    / (dSumWLinearThree4n2n2n*dSumWLinearFive4n3n3n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
9911    if(dError>0.)
9912    {
9913     f5pCumulants->SetBinError(4,pow(dError,0.5)); 
9914    }
9915   } // end of if(...)
9916  } // end of {
9917  f5pCumulants->SetBinContent(5,f5pCorrelations->GetBinContent(5)-f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(4));
9918  {
9919   Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9920   Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9921   Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9922   Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
9923   Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
9924   Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
9925   Double_t dSumWLinearFive4n2n4n1n1n = 0.; // sum of linear event weights for <4>
9926   Double_t dSumWQuadraticFive4n2n4n1n1n = 0.; // sum of quadratic event weights <4>
9927   Double_t dSpreadFive4n2n4n1n1n = 0.; // weighted and biased estimator for sigma of <4>
9928   dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9929   dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9930   dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9931   dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9932   dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9933   dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
9934   dSumWLinearFive4n2n4n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9935   dSumWQuadraticFive4n2n4n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9936   dSpreadFive4n2n4n1n1n = f5pCorrelations->GetBinError(5);
9937   if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9938      pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
9939      pow(dSumWLinearFive4n2n4n1n1n,2.)>dSumWQuadraticFive4n2n4n1n1n)
9940   {
9941    Double_t dError = pow(f3pCorrelations->GetBinContent(1),2.)
9942                    * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9943                    * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9944                    + pow(f2pCorrelations->GetBinContent(4),2.)
9945                    * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
9946                    * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
9947                    + pow((pow(dSumWQuadraticFive4n2n4n1n1n,0.5)/dSumWLinearFive4n2n4n1n1n)
9948                    * dSpreadFive4n2n4n1n1n*pow(pow(dSumWLinearFive4n2n4n1n1n,2.)/(pow(dSumWLinearFive4n2n4n1n1n,2.)-dSumWQuadraticFive4n2n4n1n1n),0.5),2.)
9949                    + 2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(4)
9950                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
9951                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,7)) 
9952                    - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(1))
9953                    / (dSumWLinearTwo4n4n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
9954                    - 2.*f3pCorrelations->GetBinContent(1)
9955                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
9956                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,61))
9957                    - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(5))
9958                    / (dSumWLinearTwo4n4n*dSumWLinearFive4n2n4n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
9959                    - 2.*f2pCorrelations->GetBinContent(4)
9960                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
9961                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,61))
9962                    - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(5))
9963                    / (dSumWLinearThree2n1n1n*dSumWLinearFive4n2n4n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
9964    if(dError>0.)
9965    {
9966     f5pCumulants->SetBinError(5,pow(dError,0.5)); 
9967    }
9968   } // end of if(...)
9969  } // end of {
9970  f5pCumulants->SetBinContent(6,f5pCorrelations->GetBinContent(6)-f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(4));
9971  {
9972   Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9973   Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9974   Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9975   Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
9976   Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
9977   Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
9978   Double_t dSumWLinearFive4n3n4n2n1n = 0.; // sum of linear event weights for <4>
9979   Double_t dSumWQuadraticFive4n3n4n2n1n = 0.; // sum of quadratic event weights <4>
9980   Double_t dSpreadFive4n3n4n2n1n = 0.; // weighted and biased estimator for sigma of <4>
9981   dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9982   dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9983   dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9984   dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9985   dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9986   dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
9987   dSumWLinearFive4n3n4n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9988   dSumWQuadraticFive4n3n4n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9989   dSpreadFive4n3n4n2n1n = f5pCorrelations->GetBinError(6);
9990   if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9991      pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
9992      pow(dSumWLinearFive4n3n4n2n1n,2.)>dSumWQuadraticFive4n3n4n2n1n)
9993   {
9994    Double_t dError = pow(f3pCorrelations->GetBinContent(5),2.)
9995                    * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9996                    * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9997                    + pow(f2pCorrelations->GetBinContent(4),2.)
9998                    * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
9999                    * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
10000                    + pow((pow(dSumWQuadraticFive4n3n4n2n1n,0.5)/dSumWLinearFive4n3n4n2n1n)
10001                    * dSpreadFive4n3n4n2n1n*pow(pow(dSumWLinearFive4n3n4n2n1n,2.)/(pow(dSumWLinearFive4n3n4n2n1n,2.)-dSumWQuadraticFive4n3n4n2n1n),0.5),2.)
10002                    + 2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(4)
10003                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
10004                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,10)) 
10005                    - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(5))
10006                    / (dSumWLinearTwo4n4n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10007                    - 2.*f3pCorrelations->GetBinContent(5)
10008                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
10009                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,62))
10010                    - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(6))
10011                    / (dSumWLinearTwo4n4n*dSumWLinearFive4n3n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10012                    - 2.*f2pCorrelations->GetBinContent(4)
10013                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
10014                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,62))
10015                    - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(6))
10016                    / (dSumWLinearThree3n2n1n*dSumWLinearFive4n3n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10017    if(dError>0.)
10018    {
10019     f5pCumulants->SetBinError(6,pow(dError,0.5)); 
10020    }
10021   } // end of if(...)
10022  } // end of {
10023  f5pCumulants->SetBinContent(7,f5pCorrelations->GetBinContent(7)-f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(1));
10024  {
10025   Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
10026   Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
10027   Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
10028   Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
10029   Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
10030   Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
10031   Double_t dSumWLinearFive5n1n3n2n1n = 0.; // sum of linear event weights for <4>
10032   Double_t dSumWQuadraticFive5n1n3n2n1n = 0.; // sum of quadratic event weights <4>
10033   Double_t dSpreadFive5n1n3n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10034   dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10035   dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10036   dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
10037   dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10038   dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10039   dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
10040   dSumWLinearFive5n1n3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10041   dSumWQuadraticFive5n1n3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10042   dSpreadFive5n1n3n2n1n = f5pCorrelations->GetBinError(7);
10043   if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
10044      pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
10045      pow(dSumWLinearFive5n1n3n2n1n,2.)>dSumWQuadraticFive5n1n3n2n1n)
10046   {
10047    Double_t dError = pow(f3pCorrelations->GetBinContent(7),2.)
10048                    * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
10049                    * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
10050                    + pow(f2pCorrelations->GetBinContent(1),2.)
10051                    * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
10052                    * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
10053                    + pow((pow(dSumWQuadraticFive5n1n3n2n1n,0.5)/dSumWLinearFive5n1n3n2n1n)
10054                    * dSpreadFive5n1n3n2n1n*pow(pow(dSumWLinearFive5n1n3n2n1n,2.)/(pow(dSumWLinearFive5n1n3n2n1n,2.)-dSumWQuadraticFive5n1n3n2n1n),0.5),2.)
10055                    + 2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(1)
10056                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
10057                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,12)) 
10058                    - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(7))
10059                    / (dSumWLinearTwo1n1n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10060                    - 2.*f3pCorrelations->GetBinContent(7)
10061                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
10062                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,63))
10063                    - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(7))
10064                    / (dSumWLinearTwo1n1n*dSumWLinearFive5n1n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10065                    - 2.*f2pCorrelations->GetBinContent(1)
10066                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
10067                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,63))
10068                    - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(7))
10069                    / (dSumWLinearThree5n3n2n*dSumWLinearFive5n1n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10070    if(dError>0.)
10071    {
10072     f5pCumulants->SetBinError(7,pow(dError,0.5)); 
10073    }
10074   } // end of if(...)
10075  } // end of {
10076  f5pCumulants->SetBinContent(8,f5pCorrelations->GetBinContent(8)-f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(5));
10077  {
10078   Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
10079   Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
10080   Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
10081   Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
10082   Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
10083   Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
10084   Double_t dSumWLinearFive5n2n5n1n1n = 0.; // sum of linear event weights for <4>
10085   Double_t dSumWQuadraticFive5n2n5n1n1n = 0.; // sum of quadratic event weights <4>
10086   Double_t dSpreadFive5n2n5n1n1n = 0.; // weighted and biased estimator for sigma of <4>
10087   dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10088   dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10089   dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
10090   dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10091   dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10092   dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
10093   dSumWLinearFive5n2n5n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10094   dSumWQuadraticFive5n2n5n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10095   dSpreadFive5n2n5n1n1n = f5pCorrelations->GetBinError(8);
10096   if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
10097      pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
10098      pow(dSumWLinearFive5n2n5n1n1n,2.)>dSumWQuadraticFive5n2n5n1n1n)
10099   {
10100    Double_t dError = pow(f3pCorrelations->GetBinContent(1),2.)
10101                    * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
10102                    * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
10103                    + pow(f2pCorrelations->GetBinContent(5),2.)
10104                    * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
10105                    * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
10106                    + pow((pow(dSumWQuadraticFive5n2n5n1n1n,0.5)/dSumWLinearFive5n2n5n1n1n)
10107                    * dSpreadFive5n2n5n1n1n*pow(pow(dSumWLinearFive5n2n5n1n1n,2.)/(pow(dSumWLinearFive5n2n5n1n1n,2.)-dSumWQuadraticFive5n2n5n1n1n),0.5),2.)
10108                    + 2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(5)
10109                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
10110                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,7)) 
10111                    - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(1))
10112                    / (dSumWLinearTwo5n5n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10113                    - 2.*f3pCorrelations->GetBinContent(1)
10114                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
10115                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,64))
10116                    - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(8))
10117                    / (dSumWLinearTwo5n5n*dSumWLinearFive5n2n5n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10118                    - 2.*f2pCorrelations->GetBinContent(5)
10119                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
10120                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,64))
10121                    - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(8))
10122                    / (dSumWLinearThree2n1n1n*dSumWLinearFive5n2n5n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10123    if(dError>0.)
10124    {
10125     f5pCumulants->SetBinError(8,pow(dError,0.5)); 
10126    }
10127   } // end of if(...)
10128  } // end of {
10129  f5pCumulants->SetBinContent(9,f5pCorrelations->GetBinContent(9)-f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(2));
10130  {
10131   Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
10132   Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
10133   Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
10134   Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
10135   Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
10136   Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
10137   Double_t dSumWLinearFive5n2n4n2n1n = 0.; // sum of linear event weights for <4>
10138   Double_t dSumWQuadraticFive5n2n4n2n1n = 0.; // sum of quadratic event weights <4>
10139   Double_t dSpreadFive5n2n4n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10140   dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10141   dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10142   dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
10143   dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10144   dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10145   dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
10146   dSumWLinearFive5n2n4n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10147   dSumWQuadraticFive5n2n4n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10148   dSpreadFive5n2n4n2n1n = f5pCorrelations->GetBinError(9);
10149   if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
10150      pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
10151      pow(dSumWLinearFive5n2n4n2n1n,2.)>dSumWQuadraticFive5n2n4n2n1n)
10152   {
10153    Double_t dError = pow(f3pCorrelations->GetBinContent(8),2.)
10154                    * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
10155                    * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
10156                    + pow(f2pCorrelations->GetBinContent(2),2.)
10157                    * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
10158                    * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
10159                    + pow((pow(dSumWQuadraticFive5n2n4n2n1n,0.5)/dSumWLinearFive5n2n4n2n1n)
10160                    * dSpreadFive5n2n4n2n1n*pow(pow(dSumWLinearFive5n2n4n2n1n,2.)/(pow(dSumWLinearFive5n2n4n2n1n,2.)-dSumWQuadraticFive5n2n4n2n1n),0.5),2.)
10161                    + 2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(2)
10162                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
10163                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,13)) 
10164                    - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(8))
10165                    / (dSumWLinearTwo2n2n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10166                    - 2.*f3pCorrelations->GetBinContent(8)
10167                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
10168                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,65))
10169                    - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(9))
10170                    / (dSumWLinearTwo2n2n*dSumWLinearFive5n2n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10171                    - 2.*f2pCorrelations->GetBinContent(2)
10172                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
10173                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,65))
10174                    - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(9))
10175                    / (dSumWLinearThree5n4n1n*dSumWLinearFive5n2n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10176    if(dError>0.)
10177    {
10178     f5pCumulants->SetBinError(9,pow(dError,0.5)); 
10179    }
10180   } // end of if(...)
10181  } // end of {
10182  f5pCumulants->SetBinContent(10,f5pCorrelations->GetBinContent(10)-f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(3));
10183  {
10184   Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
10185   Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
10186   Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
10187   Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
10188   Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
10189   Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
10190   Double_t dSumWLinearFive5n3n4n3n1n = 0.; // sum of linear event weights for <4>
10191   Double_t dSumWQuadraticFive5n3n4n3n1n = 0.; // sum of quadratic event weights <4>
10192   Double_t dSpreadFive5n3n4n3n1n = 0.; // weighted and biased estimator for sigma of <4>
10193   dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10194   dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10195   dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
10196   dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10197   dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10198   dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
10199   dSumWLinearFive5n3n4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10200   dSumWQuadraticFive5n3n4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10201   dSpreadFive5n3n4n3n1n = f5pCorrelations->GetBinError(10);
10202   if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
10203      pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
10204      pow(dSumWLinearFive5n3n4n3n1n,2.)>dSumWQuadraticFive5n3n4n3n1n)
10205   {
10206    Double_t dError = pow(f3pCorrelations->GetBinContent(8),2.)
10207                    * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
10208                    * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
10209                    + pow(f2pCorrelations->GetBinContent(3),2.)
10210                    * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
10211                    * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
10212                    + pow((pow(dSumWQuadraticFive5n3n4n3n1n,0.5)/dSumWLinearFive5n3n4n3n1n)
10213                    * dSpreadFive5n3n4n3n1n*pow(pow(dSumWLinearFive5n3n4n3n1n,2.)/(pow(dSumWLinearFive5n3n4n3n1n,2.)-dSumWQuadraticFive5n3n4n3n1n),0.5),2.)
10214                    + 2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(3)
10215                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
10216                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,13)) 
10217                    - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(8))
10218                    / (dSumWLinearTwo3n3n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10219                    - 2.*f3pCorrelations->GetBinContent(8)
10220                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
10221                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,66))
10222                    - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(10))
10223                    / (dSumWLinearTwo3n3n*dSumWLinearFive5n3n4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10224                    - 2.*f2pCorrelations->GetBinContent(3)
10225                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
10226                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,66))
10227                    - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(10))
10228                    / (dSumWLinearThree5n4n1n*dSumWLinearFive5n3n4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10229    if(dError>0.)
10230    {
10231     f5pCumulants->SetBinError(10,pow(dError,0.5)); 
10232    }
10233   } // end of if(...)
10234  } // end of {
10235  f5pCumulants->SetBinContent(11,f5pCorrelations->GetBinContent(11)-f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(4));
10236  {
10237   Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
10238   Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
10239   Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
10240   Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
10241   Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
10242   Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
10243   Double_t dSumWLinearFive5n4n4n3n2n = 0.; // sum of linear event weights for <4>
10244   Double_t dSumWQuadraticFive5n4n4n3n2n = 0.; // sum of quadratic event weights <4>
10245   Double_t dSpreadFive5n4n4n3n2n = 0.; // weighted and biased estimator for sigma of <4>
10246   dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10247   dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10248   dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
10249   dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10250   dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10251   dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
10252   dSumWLinearFive5n4n4n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10253   dSumWQuadraticFive5n4n4n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10254   dSpreadFive5n4n4n3n2n = f5pCorrelations->GetBinError(11);
10255   if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
10256      pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
10257      pow(dSumWLinearFive5n4n4n3n2n,2.)>dSumWQuadraticFive5n4n4n3n2n)
10258   {
10259    Double_t dError = pow(f3pCorrelations->GetBinContent(7),2.)
10260                    * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
10261                    * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
10262                    + pow(f2pCorrelations->GetBinContent(4),2.)
10263                    * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
10264                    * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
10265                    + pow((pow(dSumWQuadraticFive5n4n4n3n2n,0.5)/dSumWLinearFive5n4n4n3n2n)
10266                    * dSpreadFive5n4n4n3n2n*pow(pow(dSumWLinearFive5n4n4n3n2n,2.)/(pow(dSumWLinearFive5n4n4n3n2n,2.)-dSumWQuadraticFive5n4n4n3n2n),0.5),2.)
10267                    + 2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(4)
10268                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
10269                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,12)) 
10270                    - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(7))
10271                    / (dSumWLinearTwo4n4n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10272                    - 2.*f3pCorrelations->GetBinContent(7)
10273                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
10274                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,67))
10275                    - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(11))
10276                    / (dSumWLinearTwo4n4n*dSumWLinearFive5n4n4n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10277                    - 2.*f2pCorrelations->GetBinContent(4)
10278                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
10279                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,67))
10280                    - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(11))
10281                    / (dSumWLinearThree5n3n2n*dSumWLinearFive5n4n4n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10282    if(dError>0.)
10283    {
10284     f5pCumulants->SetBinError(11,pow(dError,0.5)); 
10285    }
10286   } // end of if(...)
10287  } // end of {
10288  f5pCumulants->SetBinContent(12,f5pCorrelations->GetBinContent(12)-f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(5));
10289  {
10290   Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
10291   Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
10292   Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
10293   Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
10294   Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
10295   Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
10296   Double_t dSumWLinearFive5n3n5n2n1n = 0.; // sum of linear event weights for <4>
10297   Double_t dSumWQuadraticFive5n3n5n2n1n = 0.; // sum of quadratic event weights <4>
10298   Double_t dSpreadFive5n3n5n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10299   dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10300   dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10301   dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
10302   dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10303   dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10304   dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
10305   dSumWLinearFive5n3n5n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10306   dSumWQuadraticFive5n3n5n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10307   dSpreadFive5n3n5n2n1n = f5pCorrelations->GetBinError(12);
10308   if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
10309      pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
10310      pow(dSumWLinearFive5n3n5n2n1n,2.)>dSumWQuadraticFive5n3n5n2n1n)
10311   {
10312    Double_t dError = pow(f3pCorrelations->GetBinContent(5),2.)
10313                    * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
10314                    * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
10315                    + pow(f2pCorrelations->GetBinContent(5),2.)
10316                    * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
10317                    * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
10318                    + pow((pow(dSumWQuadraticFive5n3n5n2n1n,0.5)/dSumWLinearFive5n3n5n2n1n)
10319                    * dSpreadFive5n3n5n2n1n*pow(pow(dSumWLinearFive5n3n5n2n1n,2.)/(pow(dSumWLinearFive5n3n5n2n1n,2.)-dSumWQuadraticFive5n3n5n2n1n),0.5),2.)
10320                    + 2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(5)
10321                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
10322                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,10)) 
10323                    - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(5))
10324                    / (dSumWLinearTwo5n5n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10325                    - 2.*f3pCorrelations->GetBinContent(5)
10326                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
10327                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,68))
10328                    - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(12))
10329                    / (dSumWLinearTwo5n5n*dSumWLinearFive5n3n5n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10330                    - 2.*f2pCorrelations->GetBinContent(5)
10331                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
10332                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,68))
10333                    - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(12))
10334                    / (dSumWLinearThree3n2n1n*dSumWLinearFive5n3n5n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10335    if(dError>0.)
10336    {
10337     f5pCumulants->SetBinError(12,pow(dError,0.5)); 
10338    }
10339   } // end of if(...)
10340  } // end of {
10341  f5pCumulants->SetBinContent(13,f5pCorrelations->GetBinContent(13)-f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(5));
10342  {
10343   Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
10344   Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
10345   Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
10346   Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
10347   Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
10348   Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
10349   Double_t dSumWLinearFive5n4n5n2n2n = 0.; // sum of linear event weights for <4>
10350   Double_t dSumWQuadraticFive5n4n5n2n2n = 0.; // sum of quadratic event weights <4>
10351   Double_t dSpreadFive5n4n5n2n2n = 0.; // weighted and biased estimator for sigma of <4>
10352   dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10353   dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10354   dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
10355   dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10356   dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10357   dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
10358   dSumWLinearFive5n4n5n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10359   dSumWQuadraticFive5n4n5n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10360   dSpreadFive5n4n5n2n2n = f5pCorrelations->GetBinError(13);
10361   if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
10362      pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
10363      pow(dSumWLinearFive5n4n5n2n2n,2.)>dSumWQuadraticFive5n4n5n2n2n)
10364   {
10365    Double_t dError = pow(f3pCorrelations->GetBinContent(2),2.)
10366                    * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
10367                    * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
10368                    + pow(f2pCorrelations->GetBinContent(5),2.)
10369                    * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
10370                    * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
10371                    + pow((pow(dSumWQuadraticFive5n4n5n2n2n,0.5)/dSumWLinearFive5n4n5n2n2n)
10372                    * dSpreadFive5n4n5n2n2n*pow(pow(dSumWLinearFive5n4n5n2n2n,2.)/(pow(dSumWLinearFive5n4n5n2n2n,2.)-dSumWQuadraticFive5n4n5n2n2n),0.5),2.)
10373                    + 2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(5)
10374                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
10375                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,8)) 
10376                    - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(2))
10377                    / (dSumWLinearTwo5n5n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10378                    - 2.*f3pCorrelations->GetBinContent(2)
10379                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
10380                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,69))
10381                    - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(13))
10382                    / (dSumWLinearTwo5n5n*dSumWLinearFive5n4n5n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10383                    - 2.*f2pCorrelations->GetBinContent(5)
10384                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
10385                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,69))
10386                    - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(13))
10387                    / (dSumWLinearThree4n2n2n*dSumWLinearFive5n4n5n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10388    if(dError>0.)
10389    {
10390     f5pCumulants->SetBinError(13,pow(dError,0.5)); 
10391    }
10392   } // end of if(...)
10393  } // end of {
10394  f5pCumulants->SetBinContent(14,f5pCorrelations->GetBinContent(14)-f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(5));
10395  {
10396   Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
10397   Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
10398   Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
10399   Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
10400   Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
10401   Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
10402   Double_t dSumWLinearFive5n4n5n3n1n = 0.; // sum of linear event weights for <4>
10403   Double_t dSumWQuadraticFive5n4n5n3n1n = 0.; // sum of quadratic event weights <4>
10404   Double_t dSpreadFive5n4n5n3n1n = 0.; // weighted and biased estimator for sigma of <4>
10405   dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10406   dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10407   dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
10408   dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10409   dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10410   dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
10411   dSumWLinearFive5n4n5n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10412   dSumWQuadraticFive5n4n5n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10413   dSpreadFive5n4n5n3n1n = f5pCorrelations->GetBinError(14);
10414   if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
10415      pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
10416      pow(dSumWLinearFive5n4n5n3n1n,2.)>dSumWQuadraticFive5n4n5n3n1n)
10417   {
10418    Double_t dError = pow(f3pCorrelations->GetBinContent(6),2.)
10419                    * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
10420                    * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
10421                    + pow(f2pCorrelations->GetBinContent(5),2.)
10422                    * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
10423                    * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
10424                    + pow((pow(dSumWQuadraticFive5n4n5n3n1n,0.5)/dSumWLinearFive5n4n5n3n1n)
10425                    * dSpreadFive5n4n5n3n1n*pow(pow(dSumWLinearFive5n4n5n3n1n,2.)/(pow(dSumWLinearFive5n4n5n3n1n,2.)-dSumWQuadraticFive5n4n5n3n1n),0.5),2.)
10426                    + 2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(5)
10427                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
10428                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,11)) 
10429                    - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(6))
10430                    / (dSumWLinearTwo5n5n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10431                    - 2.*f3pCorrelations->GetBinContent(6)
10432                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
10433                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,70))
10434                    - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(14))
10435                    / (dSumWLinearTwo5n5n*dSumWLinearFive5n4n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10436                    - 2.*f2pCorrelations->GetBinContent(5)
10437                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
10438                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,70))
10439                    - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(14))
10440                    / (dSumWLinearThree4n3n1n*dSumWLinearFive5n4n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10441    if(dError>0.)
10442    {
10443     f5pCumulants->SetBinError(14,pow(dError,0.5)); 
10444    }
10445   } // end of if(...)
10446  } // end of {
10447  f5pCumulants->SetBinContent(15,f5pCorrelations->GetBinContent(15)-f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(1));
10448  {
10449   Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
10450   Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
10451   Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
10452   Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
10453   Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
10454   Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
10455   Double_t dSumWLinearFive6n1n3n3n1n = 0.; // sum of linear event weights for <4>
10456   Double_t dSumWQuadraticFive6n1n3n3n1n = 0.; // sum of quadratic event weights <4>
10457   Double_t dSpreadFive6n1n3n3n1n = 0.; // weighted and biased estimator for sigma of <4>
10458   dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10459   dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10460   dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
10461   dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10462   dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10463   dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
10464   dSumWLinearFive6n1n3n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10465   dSumWQuadraticFive6n1n3n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10466   dSpreadFive6n1n3n3n1n = f5pCorrelations->GetBinError(15);
10467   if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
10468      pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
10469      pow(dSumWLinearFive6n1n3n3n1n,2.)>dSumWQuadraticFive6n1n3n3n1n)
10470   {
10471    Double_t dError = pow(f3pCorrelations->GetBinContent(3),2.)
10472                    * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
10473                    * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
10474                    + pow(f2pCorrelations->GetBinContent(1),2.)
10475                    * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
10476                    * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
10477                    + pow((pow(dSumWQuadraticFive6n1n3n3n1n,0.5)/dSumWLinearFive6n1n3n3n1n)
10478                    * dSpreadFive6n1n3n3n1n*pow(pow(dSumWLinearFive6n1n3n3n1n,2.)/(pow(dSumWLinearFive6n1n3n3n1n,2.)-dSumWQuadraticFive6n1n3n3n1n),0.5),2.)
10479                    + 2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(1)
10480                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
10481                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,9)) 
10482                    - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(3))
10483                    / (dSumWLinearTwo1n1n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10484                    - 2.*f3pCorrelations->GetBinContent(3)
10485                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
10486                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,71))
10487                    - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(15))
10488                    / (dSumWLinearTwo1n1n*dSumWLinearFive6n1n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10489                    - 2.*f2pCorrelations->GetBinContent(1)
10490                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
10491                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,71))
10492                    - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(15))
10493                    / (dSumWLinearThree6n3n3n*dSumWLinearFive6n1n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10494    if(dError>0.)
10495    {
10496     f5pCumulants->SetBinError(15,pow(dError,0.5)); 
10497    }
10498   } // end of if(...)
10499  } // end of {
10500  f5pCumulants->SetBinContent(16,f5pCorrelations->GetBinContent(16)-f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(2));
10501  {
10502   Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
10503   Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
10504   Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
10505   Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
10506   Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
10507   Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
10508   Double_t dSumWLinearFive6n2n3n3n2n = 0.; // sum of linear event weights for <4>
10509   Double_t dSumWQuadraticFive6n2n3n3n2n = 0.; // sum of quadratic event weights <4>
10510   Double_t dSpreadFive6n2n3n3n2n = 0.; // weighted and biased estimator for sigma of <4>
10511   dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10512   dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10513   dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
10514   dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10515   dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10516   dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
10517   dSumWLinearFive6n2n3n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10518   dSumWQuadraticFive6n2n3n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10519   dSpreadFive6n2n3n3n2n = f5pCorrelations->GetBinError(16);
10520   if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
10521      pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
10522      pow(dSumWLinearFive6n2n3n3n2n,2.)>dSumWQuadraticFive6n2n3n3n2n)
10523   {
10524    Double_t dError = pow(f3pCorrelations->GetBinContent(3),2.)
10525                    * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
10526                    * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
10527                    + pow(f2pCorrelations->GetBinContent(2),2.)
10528                    * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
10529                    * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
10530                    + pow((pow(dSumWQuadraticFive6n2n3n3n2n,0.5)/dSumWLinearFive6n2n3n3n2n)
10531                    * dSpreadFive6n2n3n3n2n*pow(pow(dSumWLinearFive6n2n3n3n2n,2.)/(pow(dSumWLinearFive6n2n3n3n2n,2.)-dSumWQuadraticFive6n2n3n3n2n),0.5),2.)
10532                    + 2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(2)
10533                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
10534                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,9)) 
10535                    - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(3))
10536                    / (dSumWLinearTwo2n2n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10537                    - 2.*f3pCorrelations->GetBinContent(3)
10538                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
10539                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,72))
10540                    - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(16))
10541                    / (dSumWLinearTwo2n2n*dSumWLinearFive6n2n3n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10542                    - 2.*f2pCorrelations->GetBinContent(2)
10543                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
10544                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,72))
10545                    - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(16))
10546                    / (dSumWLinearThree6n3n3n*dSumWLinearFive6n2n3n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10547    if(dError>0.)
10548    {
10549     f5pCumulants->SetBinError(16,pow(dError,0.5)); 
10550    }
10551   } // end of if(...)
10552  } // end of {
10553  f5pCumulants->SetBinContent(17,f5pCorrelations->GetBinContent(17)-f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(1));
10554  {
10555   Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
10556   Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
10557   Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
10558   Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
10559   Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
10560   Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
10561   Double_t dSumWLinearFive6n1n4n2n1n = 0.; // sum of linear event weights for <4>
10562   Double_t dSumWQuadraticFive6n1n4n2n1n = 0.; // sum of quadratic event weights <4>
10563   Double_t dSpreadFive6n1n4n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10564   dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10565   dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10566   dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
10567   dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10568   dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10569   dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
10570   dSumWLinearFive6n1n4n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10571   dSumWQuadraticFive6n1n4n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10572   dSpreadFive6n1n4n2n1n = f5pCorrelations->GetBinError(17);
10573   if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
10574      pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
10575      pow(dSumWLinearFive6n1n4n2n1n,2.)>dSumWQuadraticFive6n1n4n2n1n)
10576   {
10577    Double_t dError = pow(f3pCorrelations->GetBinContent(9),2.)
10578                    * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
10579                    * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
10580                    + pow(f2pCorrelations->GetBinContent(1),2.)
10581                    * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
10582                    * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
10583                    + pow((pow(dSumWQuadraticFive6n1n4n2n1n,0.5)/dSumWLinearFive6n1n4n2n1n)
10584                    * dSpreadFive6n1n4n2n1n*pow(pow(dSumWLinearFive6n1n4n2n1n,2.)/(pow(dSumWLinearFive6n1n4n2n1n,2.)-dSumWQuadraticFive6n1n4n2n1n),0.5),2.)
10585                    + 2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(1)
10586                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
10587                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,14)) 
10588                    - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(9))
10589                    / (dSumWLinearTwo1n1n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10590                    - 2.*f3pCorrelations->GetBinContent(9)
10591                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
10592                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,73))
10593                    - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(17))
10594                    / (dSumWLinearTwo1n1n*dSumWLinearFive6n1n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10595                    - 2.*f2pCorrelations->GetBinContent(1)
10596                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
10597                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,73))
10598                    - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(17))
10599                    / (dSumWLinearThree6n4n2n*dSumWLinearFive6n1n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10600    if(dError>0.)
10601    {
10602     f5pCumulants->SetBinError(17,pow(dError,0.5)); 
10603    }
10604   } // end of if(...)
10605  } // end of {
10606  f5pCumulants->SetBinContent(18,f5pCorrelations->GetBinContent(18)-f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(3));
10607  {
10608   Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
10609   Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
10610   Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
10611   Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
10612   Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
10613   Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
10614   Double_t dSumWLinearFive6n3n4n3n2n = 0.; // sum of linear event weights for <4>
10615   Double_t dSumWQuadraticFive6n3n4n3n2n = 0.; // sum of quadratic event weights <4>
10616   Double_t dSpreadFive6n3n4n3n2n = 0.; // weighted and biased estimator for sigma of <4>
10617   dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10618   dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10619   dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
10620   dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10621   dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10622   dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
10623   dSumWLinearFive6n3n4n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10624   dSumWQuadraticFive6n3n4n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10625   dSpreadFive6n3n4n3n2n = f5pCorrelations->GetBinError(18);
10626   if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
10627      pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
10628      pow(dSumWLinearFive6n3n4n3n2n,2.)>dSumWQuadraticFive6n3n4n3n2n)
10629   {
10630    Double_t dError = pow(f3pCorrelations->GetBinContent(9),2.)
10631                    * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
10632                    * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
10633                    + pow(f2pCorrelations->GetBinContent(3),2.)
10634                    * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
10635                    * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
10636                    + pow((pow(dSumWQuadraticFive6n3n4n3n2n,0.5)/dSumWLinearFive6n3n4n3n2n)
10637                    * dSpreadFive6n3n4n3n2n*pow(pow(dSumWLinearFive6n3n4n3n2n,2.)/(pow(dSumWLinearFive6n3n4n3n2n,2.)-dSumWQuadraticFive6n3n4n3n2n),0.5),2.)
10638                    + 2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(3)
10639                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
10640                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,14)) 
10641                    - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(9))
10642                    / (dSumWLinearTwo3n3n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10643                    - 2.*f3pCorrelations->GetBinContent(9)
10644                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
10645                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,74))
10646                    - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(18))
10647                    / (dSumWLinearTwo3n3n*dSumWLinearFive6n3n4n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10648                    - 2.*f2pCorrelations->GetBinContent(3)
10649                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
10650                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,74))
10651                    - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(18))
10652                    / (dSumWLinearThree6n4n2n*dSumWLinearFive6n3n4n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10653    if(dError>0.)
10654    {
10655     f5pCumulants->SetBinError(18,pow(dError,0.5)); 
10656    }
10657   } // end of if(...)
10658  } // end of {
10659  f5pCumulants->SetBinContent(19,f5pCorrelations->GetBinContent(19)-f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(4));
10660  {
10661   Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
10662   Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
10663   Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
10664   Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
10665   Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
10666   Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
10667   Double_t dSumWLinearFive6n4n4n3n3n = 0.; // sum of linear event weights for <4>
10668   Double_t dSumWQuadraticFive6n4n4n3n3n = 0.; // sum of quadratic event weights <4>
10669   Double_t dSpreadFive6n4n4n3n3n = 0.; // weighted and biased estimator for sigma of <4>
10670   dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10671   dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10672   dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
10673   dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10674   dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10675   dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
10676   dSumWLinearFive6n4n4n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10677   dSumWQuadraticFive6n4n4n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10678   dSpreadFive6n4n4n3n3n = f5pCorrelations->GetBinError(19);
10679   if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
10680      pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
10681      pow(dSumWLinearFive6n4n4n3n3n,2.)>dSumWQuadraticFive6n4n4n3n3n)
10682   {
10683    Double_t dError = pow(f3pCorrelations->GetBinContent(3),2.)
10684                    * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
10685                    * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
10686                    + pow(f2pCorrelations->GetBinContent(4),2.)
10687                    * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
10688                    * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
10689                    + pow((pow(dSumWQuadraticFive6n4n4n3n3n,0.5)/dSumWLinearFive6n4n4n3n3n)
10690                    * dSpreadFive6n4n4n3n3n*pow(pow(dSumWLinearFive6n4n4n3n3n,2.)/(pow(dSumWLinearFive6n4n4n3n3n,2.)-dSumWQuadraticFive6n4n4n3n3n),0.5),2.)
10691                    + 2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(4)
10692                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
10693                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,9)) 
10694                    - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(3))
10695                    / (dSumWLinearTwo4n4n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10696                    - 2.*f3pCorrelations->GetBinContent(3)
10697                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
10698                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,75))
10699                    - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(19))
10700                    / (dSumWLinearTwo4n4n*dSumWLinearFive6n4n4n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10701                    - 2.*f2pCorrelations->GetBinContent(4)
10702                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
10703                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,75))
10704                    - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(19))
10705                    / (dSumWLinearThree6n3n3n*dSumWLinearFive6n4n4n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10706    if(dError>0.)
10707    {
10708     f5pCumulants->SetBinError(19,pow(dError,0.5)); 
10709    }
10710   } // end of if(...)
10711  } // end of {
10712  f5pCumulants->SetBinContent(20,f5pCorrelations->GetBinContent(20)-f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(2));
10713  {
10714   Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
10715   Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
10716   Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
10717   Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
10718   Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
10719   Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
10720   Double_t dSumWLinearFive6n2n5n2n1n = 0.; // sum of linear event weights for <4>
10721   Double_t dSumWQuadraticFive6n2n5n2n1n = 0.; // sum of quadratic event weights <4>
10722   Double_t dSpreadFive6n2n5n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10723   dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10724   dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10725   dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
10726   dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10727   dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10728   dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
10729   dSumWLinearFive6n2n5n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10730   dSumWQuadraticFive6n2n5n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10731   dSpreadFive6n2n5n2n1n = f5pCorrelations->GetBinError(20);
10732   if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
10733      pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
10734      pow(dSumWLinearFive6n2n5n2n1n,2.)>dSumWQuadraticFive6n2n5n2n1n)
10735   {
10736    Double_t dError = pow(f3pCorrelations->GetBinContent(10),2.)
10737                    * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
10738                    * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
10739                    + pow(f2pCorrelations->GetBinContent(2),2.)
10740                    * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
10741                    * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
10742                    + pow((pow(dSumWQuadraticFive6n2n5n2n1n,0.5)/dSumWLinearFive6n2n5n2n1n)
10743                    * dSpreadFive6n2n5n2n1n*pow(pow(dSumWLinearFive6n2n5n2n1n,2.)/(pow(dSumWLinearFive6n2n5n2n1n,2.)-dSumWQuadraticFive6n2n5n2n1n),0.5),2.)
10744                    + 2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(2)
10745                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
10746                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,15)) 
10747                    - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(10))
10748                    / (dSumWLinearTwo2n2n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10749                    - 2.*f3pCorrelations->GetBinContent(10)
10750                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
10751                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,76))
10752                    - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(20))
10753                    / (dSumWLinearTwo2n2n*dSumWLinearFive6n2n5n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10754                    - 2.*f2pCorrelations->GetBinContent(2)
10755                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
10756                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,76))
10757                    - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(20))
10758                    / (dSumWLinearThree6n5n1n*dSumWLinearFive6n2n5n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10759    if(dError>0.)
10760    {
10761     f5pCumulants->SetBinError(20,pow(dError,0.5)); 
10762    }
10763   } // end of if(...)
10764  } // end of {
10765  f5pCumulants->SetBinContent(21,f5pCorrelations->GetBinContent(21)-f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(3));
10766  {
10767   Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
10768   Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
10769   Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
10770   Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
10771   Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
10772   Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
10773   Double_t dSumWLinearFive6n3n5n3n1n = 0.; // sum of linear event weights for <4>
10774   Double_t dSumWQuadraticFive6n3n5n3n1n = 0.; // sum of quadratic event weights <4>
10775   Double_t dSpreadFive6n3n5n3n1n = 0.; // weighted and biased estimator for sigma of <4>
10776   dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10777   dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10778   dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
10779   dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10780   dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10781   dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
10782   dSumWLinearFive6n3n5n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10783   dSumWQuadraticFive6n3n5n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10784   dSpreadFive6n3n5n3n1n = f5pCorrelations->GetBinError(21);
10785   if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
10786      pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
10787      pow(dSumWLinearFive6n3n5n3n1n,2.)>dSumWQuadraticFive6n3n5n3n1n)
10788   {
10789    Double_t dError = pow(f3pCorrelations->GetBinContent(10),2.)
10790                    * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
10791                    * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
10792                    + pow(f2pCorrelations->GetBinContent(3),2.)
10793                    * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
10794                    * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
10795                    + pow((pow(dSumWQuadraticFive6n3n5n3n1n,0.5)/dSumWLinearFive6n3n5n3n1n)
10796                    * dSpreadFive6n3n5n3n1n*pow(pow(dSumWLinearFive6n3n5n3n1n,2.)/(pow(dSumWLinearFive6n3n5n3n1n,2.)-dSumWQuadraticFive6n3n5n3n1n),0.5),2.)
10797                    + 2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(3)
10798                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
10799                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,15)) 
10800                    - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(10))
10801                    / (dSumWLinearTwo3n3n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10802                    - 2.*f3pCorrelations->GetBinContent(10)
10803                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
10804                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,77))
10805                    - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(21))
10806                    / (dSumWLinearTwo3n3n*dSumWLinearFive6n3n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10807                    - 2.*f2pCorrelations->GetBinContent(3)
10808                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
10809                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,77))
10810                    - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(21))
10811                    / (dSumWLinearThree6n5n1n*dSumWLinearFive6n3n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10812    if(dError>0.)
10813    {
10814     f5pCumulants->SetBinError(21,pow(dError,0.5)); 
10815    }
10816   } // end of if(...)
10817  } // end of {
10818  f5pCumulants->SetBinContent(22,f5pCorrelations->GetBinContent(22)-f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(4));
10819  {
10820   Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
10821   Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
10822   Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
10823   Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
10824   Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
10825   Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
10826   Double_t dSumWLinearFive6n3n5n3n1n = 0.; // sum of linear event weights for <4>
10827   Double_t dSumWQuadraticFive6n3n5n3n1n = 0.; // sum of quadratic event weights <4>
10828   Double_t dSpreadFive6n3n5n3n1n = 0.; // weighted and biased estimator for sigma of <4>
10829   dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10830   dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10831   dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
10832   dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10833   dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10834   dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
10835   dSumWLinearFive6n3n5n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10836   dSumWQuadraticFive6n3n5n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10837   dSpreadFive6n3n5n3n1n = f5pCorrelations->GetBinError(22);
10838   if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
10839      pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
10840      pow(dSumWLinearFive6n3n5n3n1n,2.)>dSumWQuadraticFive6n3n5n3n1n)
10841   {
10842    Double_t dError = pow(f3pCorrelations->GetBinContent(10),2.)
10843                    * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
10844                    * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
10845                    + pow(f2pCorrelations->GetBinContent(4),2.)
10846                    * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
10847                    * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
10848                    + pow((pow(dSumWQuadraticFive6n3n5n3n1n,0.5)/dSumWLinearFive6n3n5n3n1n)
10849                    * dSpreadFive6n3n5n3n1n*pow(pow(dSumWLinearFive6n3n5n3n1n,2.)/(pow(dSumWLinearFive6n3n5n3n1n,2.)-dSumWQuadraticFive6n3n5n3n1n),0.5),2.)
10850                    + 2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(4)
10851                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
10852                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,15)) 
10853                    - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(10))
10854                    / (dSumWLinearTwo4n4n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10855                    - 2.*f3pCorrelations->GetBinContent(10)
10856                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
10857                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,78))
10858                    - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(22))
10859                    / (dSumWLinearTwo4n4n*dSumWLinearFive6n3n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10860                    - 2.*f2pCorrelations->GetBinContent(4)
10861                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
10862                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,78))
10863                    - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(22))
10864                    / (dSumWLinearThree6n5n1n*dSumWLinearFive6n3n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10865    if(dError>0.)
10866    {
10867     f5pCumulants->SetBinError(22,pow(dError,0.5)); 
10868    }
10869   } // end of if(...)
10870  } // end of {
10871  f5pCumulants->SetBinContent(23,f5pCorrelations->GetBinContent(23)-f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(5));
10872  {
10873   Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
10874   Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
10875   Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
10876   Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
10877   Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
10878   Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
10879   Double_t dSumWLinearFive6n5n5n3n3n = 0.; // sum of linear event weights for <4>
10880   Double_t dSumWQuadraticFive6n5n5n3n3n = 0.; // sum of quadratic event weights <4>
10881   Double_t dSpreadFive6n5n5n3n3n = 0.; // weighted and biased estimator for sigma of <4>
10882   dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10883   dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10884   dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
10885   dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10886   dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10887   dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
10888   dSumWLinearFive6n5n5n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10889   dSumWQuadraticFive6n5n5n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10890   dSpreadFive6n5n5n3n3n = f5pCorrelations->GetBinError(23);
10891   if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
10892      pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
10893      pow(dSumWLinearFive6n5n5n3n3n,2.)>dSumWQuadraticFive6n5n5n3n3n)
10894   {
10895    Double_t dError = pow(f3pCorrelations->GetBinContent(3),2.)
10896                    * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
10897                    * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
10898                    + pow(f2pCorrelations->GetBinContent(5),2.)
10899                    * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
10900                    * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
10901                    + pow((pow(dSumWQuadraticFive6n5n5n3n3n,0.5)/dSumWLinearFive6n5n5n3n3n)
10902                    * dSpreadFive6n5n5n3n3n*pow(pow(dSumWLinearFive6n5n5n3n3n,2.)/(pow(dSumWLinearFive6n5n5n3n3n,2.)-dSumWQuadraticFive6n5n5n3n3n),0.5),2.)
10903                    + 2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(5)
10904                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
10905                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,9)) 
10906                    - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(3))
10907                    / (dSumWLinearTwo5n5n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10908                    - 2.*f3pCorrelations->GetBinContent(3)
10909                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
10910                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,79))
10911                    - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(23))
10912                    / (dSumWLinearTwo5n5n*dSumWLinearFive6n5n5n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10913                    - 2.*f2pCorrelations->GetBinContent(5)
10914                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
10915                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,79))
10916                    - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(23))
10917                    / (dSumWLinearThree6n3n3n*dSumWLinearFive6n5n5n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10918    if(dError>0.)
10919    {
10920     f5pCumulants->SetBinError(23,pow(dError,0.5)); 
10921    }
10922   } // end of if(...)
10923  } // end of {
10924  f5pCumulants->SetBinContent(24,f5pCorrelations->GetBinContent(24)-f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(6));
10925  {
10926   Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
10927   Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
10928   Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
10929   Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
10930   Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
10931   Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
10932   Double_t dSumWLinearFive6n2n6n1n1n = 0.; // sum of linear event weights for <4>
10933   Double_t dSumWQuadraticFive6n2n6n1n1n = 0.; // sum of quadratic event weights <4>
10934   Double_t dSpreadFive6n2n6n1n1n = 0.; // weighted and biased estimator for sigma of <4>
10935   dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10936   dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10937   dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
10938   dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10939   dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10940   dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
10941   dSumWLinearFive6n2n6n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10942   dSumWQuadraticFive6n2n6n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10943   dSpreadFive6n2n6n1n1n = f5pCorrelations->GetBinError(24);
10944   if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
10945      pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
10946      pow(dSumWLinearFive6n2n6n1n1n,2.)>dSumWQuadraticFive6n2n6n1n1n)
10947   {
10948    Double_t dError = pow(f3pCorrelations->GetBinContent(1),2.)
10949                    * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
10950                    * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
10951                    + pow(f2pCorrelations->GetBinContent(6),2.)
10952                    * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
10953                    * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
10954                    + pow((pow(dSumWQuadraticFive6n2n6n1n1n,0.5)/dSumWLinearFive6n2n6n1n1n)
10955                    * dSpreadFive6n2n6n1n1n*pow(pow(dSumWLinearFive6n2n6n1n1n,2.)/(pow(dSumWLinearFive6n2n6n1n1n,2.)-dSumWQuadraticFive6n2n6n1n1n),0.5),2.)
10956                    + 2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(6)
10957                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
10958                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,7)) 
10959                    - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(1))
10960                    / (dSumWLinearTwo6n6n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10961                    - 2.*f3pCorrelations->GetBinContent(1)
10962                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
10963                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,80))
10964                    - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(24))
10965                    / (dSumWLinearTwo6n6n*dSumWLinearFive6n2n6n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10966                    - 2.*f2pCorrelations->GetBinContent(6)
10967                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
10968                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,80))
10969                    - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(24))
10970                    / (dSumWLinearThree2n1n1n*dSumWLinearFive6n2n6n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10971    if(dError>0.)
10972    {
10973     f5pCumulants->SetBinError(24,pow(dError,0.5)); 
10974    }
10975   } // end of if(...)
10976  } // end of {
10977  f5pCumulants->SetBinContent(25,f5pCorrelations->GetBinContent(25)-f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(6));
10978  {
10979   Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
10980   Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
10981   Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
10982   Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
10983   Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
10984   Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
10985   Double_t dSumWLinearFive6n3n6n2n1n = 0.; // sum of linear event weights for <4>
10986   Double_t dSumWQuadraticFive6n3n6n2n1n = 0.; // sum of quadratic event weights <4>
10987   Double_t dSpreadFive6n3n6n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10988   dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10989   dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10990   dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
10991   dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10992   dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10993   dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
10994   dSumWLinearFive6n3n6n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10995   dSumWQuadraticFive6n3n6n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10996   dSpreadFive6n3n6n2n1n = f5pCorrelations->GetBinError(25);
10997   if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
10998      pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
10999      pow(dSumWLinearFive6n3n6n2n1n,2.)>dSumWQuadraticFive6n3n6n2n1n)
11000   {
11001    Double_t dError = pow(f3pCorrelations->GetBinContent(5),2.)
11002                    * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11003                    * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11004                    + pow(f2pCorrelations->GetBinContent(6),2.)
11005                    * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
11006                    * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
11007                    + pow((pow(dSumWQuadraticFive6n3n6n2n1n,0.5)/dSumWLinearFive6n3n6n2n1n)
11008                    * dSpreadFive6n3n6n2n1n*pow(pow(dSumWLinearFive6n3n6n2n1n,2.)/(pow(dSumWLinearFive6n3n6n2n1n,2.)-dSumWQuadraticFive6n3n6n2n1n),0.5),2.)
11009                    + 2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(6)
11010                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
11011                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,10)) 
11012                    - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(5))
11013                    / (dSumWLinearTwo6n6n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11014                    - 2.*f3pCorrelations->GetBinContent(5)
11015                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
11016                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,81))
11017                    - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(25))
11018                    / (dSumWLinearTwo6n6n*dSumWLinearFive6n3n6n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11019                    - 2.*f2pCorrelations->GetBinContent(6)
11020                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
11021                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,81))
11022                    - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(25))
11023                    / (dSumWLinearThree3n2n1n*dSumWLinearFive6n3n6n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11024    if(dError>0.)
11025    {
11026     f5pCumulants->SetBinError(25,pow(dError,0.5)); 
11027    }
11028   } // end of if(...)
11029  } // end of {
11030  f5pCumulants->SetBinContent(26,f5pCorrelations->GetBinContent(26)-f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(6));
11031  {
11032   Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
11033   Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
11034   Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
11035   Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
11036   Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
11037   Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
11038   Double_t dSumWLinearFive6n4n6n2n2n = 0.; // sum of linear event weights for <4>
11039   Double_t dSumWQuadraticFive6n4n6n2n2n = 0.; // sum of quadratic event weights <4>
11040   Double_t dSpreadFive6n4n6n2n2n = 0.; // weighted and biased estimator for sigma of <4>
11041   dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11042   dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11043   dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
11044   dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11045   dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11046   dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
11047   dSumWLinearFive6n4n6n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11048   dSumWQuadraticFive6n4n6n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11049   dSpreadFive6n4n6n2n2n = f5pCorrelations->GetBinError(26);
11050   if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
11051      pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
11052      pow(dSumWLinearFive6n4n6n2n2n,2.)>dSumWQuadraticFive6n4n6n2n2n)
11053   {
11054    Double_t dError = pow(f3pCorrelations->GetBinContent(2),2.)
11055                    * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11056                    * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11057                    + pow(f2pCorrelations->GetBinContent(6),2.)
11058                    * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
11059                    * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
11060                    + pow((pow(dSumWQuadraticFive6n4n6n2n2n,0.5)/dSumWLinearFive6n4n6n2n2n)
11061                    * dSpreadFive6n4n6n2n2n*pow(pow(dSumWLinearFive6n4n6n2n2n,2.)/(pow(dSumWLinearFive6n4n6n2n2n,2.)-dSumWQuadraticFive6n4n6n2n2n),0.5),2.)
11062                    + 2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(6)
11063                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
11064                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,8)) 
11065                    - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(2))
11066                    / (dSumWLinearTwo6n6n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11067                    - 2.*f3pCorrelations->GetBinContent(2)
11068                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
11069                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,82))
11070                    - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(26))
11071                    / (dSumWLinearTwo6n6n*dSumWLinearFive6n4n6n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11072                    - 2.*f2pCorrelations->GetBinContent(6)
11073                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
11074                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,82))
11075                    - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(26))
11076                    / (dSumWLinearThree4n2n2n*dSumWLinearFive6n4n6n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11077    if(dError>0.)
11078    {
11079     f5pCumulants->SetBinError(26,pow(dError,0.5)); 
11080    }
11081   } // end of if(...)
11082  } // end of {
11083  f5pCumulants->SetBinContent(27,f5pCorrelations->GetBinContent(27)-f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(6));
11084  {
11085   Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
11086   Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
11087   Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
11088   Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
11089   Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
11090   Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
11091   Double_t dSumWLinearFive6n4n6n3n1n = 0.; // sum of linear event weights for <4>
11092   Double_t dSumWQuadraticFive6n4n6n3n1n = 0.; // sum of quadratic event weights <4>
11093   Double_t dSpreadFive6n4n6n3n1n = 0.; // weighted and biased estimator for sigma of <4>
11094   dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11095   dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11096   dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
11097   dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11098   dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11099   dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
11100   dSumWLinearFive6n4n6n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11101   dSumWQuadraticFive6n4n6n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11102   dSpreadFive6n4n6n3n1n = f5pCorrelations->GetBinError(27);
11103   if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
11104      pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
11105      pow(dSumWLinearFive6n4n6n3n1n,2.)>dSumWQuadraticFive6n4n6n3n1n)
11106   {
11107    Double_t dError = pow(f3pCorrelations->GetBinContent(6),2.)
11108                    * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11109                    * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11110                    + pow(f2pCorrelations->GetBinContent(6),2.)
11111                    * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
11112                    * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
11113                    + pow((pow(dSumWQuadraticFive6n4n6n3n1n,0.5)/dSumWLinearFive6n4n6n3n1n)
11114                    * dSpreadFive6n4n6n3n1n*pow(pow(dSumWLinearFive6n4n6n3n1n,2.)/(pow(dSumWLinearFive6n4n6n3n1n,2.)-dSumWQuadraticFive6n4n6n3n1n),0.5),2.)
11115                    + 2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(6)
11116                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
11117                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,11)) 
11118                    - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(6))
11119                    / (dSumWLinearTwo6n6n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11120                    - 2.*f3pCorrelations->GetBinContent(6)
11121                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
11122                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,83))
11123                    - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(27))
11124                    / (dSumWLinearTwo6n6n*dSumWLinearFive6n4n6n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11125                    - 2.*f2pCorrelations->GetBinContent(6)
11126                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
11127                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,83))
11128                    - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(27))
11129                    / (dSumWLinearThree4n3n1n*dSumWLinearFive6n4n6n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11130    if(dError>0.)
11131    {
11132     f5pCumulants->SetBinError(27,pow(dError,0.5)); 
11133    }
11134   } // end of if(...)
11135  } // end of {
11136  f5pCumulants->SetBinContent(28,f5pCorrelations->GetBinContent(28)-f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(5));
11137  {
11138   Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
11139   Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
11140   Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
11141   Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
11142   Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
11143   Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
11144   Double_t dSumWLinearFive6n4n6n3n1n = 0.; // sum of linear event weights for <4>
11145   Double_t dSumWQuadraticFive6n4n6n3n1n = 0.; // sum of quadratic event weights <4>
11146   Double_t dSpreadFive6n4n6n3n1n = 0.; // weighted and biased estimator for sigma of <4>
11147   dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11148   dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11149   dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
11150   dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11151   dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11152   dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
11153   dSumWLinearFive6n4n6n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11154   dSumWQuadraticFive6n4n6n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11155   dSpreadFive6n4n6n3n1n = f5pCorrelations->GetBinError(28);
11156   if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
11157      pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
11158      pow(dSumWLinearFive6n4n6n3n1n,2.)>dSumWQuadraticFive6n4n6n3n1n)
11159   {
11160    Double_t dError = pow(f3pCorrelations->GetBinContent(9),2.)
11161                    * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
11162                    * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
11163                    + pow(f2pCorrelations->GetBinContent(5),2.)
11164                    * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
11165                    * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
11166                    + pow((pow(dSumWQuadraticFive6n4n6n3n1n,0.5)/dSumWLinearFive6n4n6n3n1n)
11167                    * dSpreadFive6n4n6n3n1n*pow(pow(dSumWLinearFive6n4n6n3n1n,2.)/(pow(dSumWLinearFive6n4n6n3n1n,2.)-dSumWQuadraticFive6n4n6n3n1n),0.5),2.)
11168                    + 2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(5)
11169                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
11170                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,14)) 
11171                    - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(9))
11172                    / (dSumWLinearTwo5n5n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11173                    - 2.*f3pCorrelations->GetBinContent(9)
11174                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
11175                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,84))
11176                    - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(28))
11177                    / (dSumWLinearTwo5n5n*dSumWLinearFive6n4n6n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11178                    - 2.*f2pCorrelations->GetBinContent(5)
11179                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
11180                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,84))
11181                    - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(28))
11182                    / (dSumWLinearThree6n4n2n*dSumWLinearFive6n4n6n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11183    if(dError>0.)
11184    {
11185     f5pCumulants->SetBinError(28,pow(dError,0.5)); 
11186    }
11187   } // end of if(...)
11188  } // end of {
11189  f5pCumulants->SetBinContent(29,f5pCorrelations->GetBinContent(29)-f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(6));
11190  { 
11191   Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
11192   Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
11193   Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
11194   Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
11195   Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
11196   Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
11197   Double_t dSumWLinearFive6n5n6n3n2n = 0.; // sum of linear event weights for <4>
11198   Double_t dSumWQuadraticFive6n5n6n3n2n = 0.; // sum of quadratic event weights <4>
11199   Double_t dSpreadFive6n5n6n3n2n = 0.; // weighted and biased estimator for sigma of <4>
11200   dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11201   dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11202   dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
11203   dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11204   dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11205   dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
11206   dSumWLinearFive6n5n6n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11207   dSumWQuadraticFive6n5n6n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11208   dSpreadFive6n5n6n3n2n = f5pCorrelations->GetBinError(29);
11209   if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
11210      pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
11211      pow(dSumWLinearFive6n5n6n3n2n,2.)>dSumWQuadraticFive6n5n6n3n2n)
11212   {
11213    Double_t dError = pow(f3pCorrelations->GetBinContent(7),2.)
11214                    * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11215                    * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11216                    + pow(f2pCorrelations->GetBinContent(6),2.)
11217                    * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
11218                    * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
11219                    + pow((pow(dSumWQuadraticFive6n5n6n3n2n,0.5)/dSumWLinearFive6n5n6n3n2n)
11220                    * dSpreadFive6n5n6n3n2n*pow(pow(dSumWLinearFive6n5n6n3n2n,2.)/(pow(dSumWLinearFive6n5n6n3n2n,2.)-dSumWQuadraticFive6n5n6n3n2n),0.5),2.)
11221                    + 2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(6)
11222                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
11223                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,12)) 
11224                    - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(7))
11225                    / (dSumWLinearTwo6n6n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11226                    - 2.*f3pCorrelations->GetBinContent(7)
11227                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
11228                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,85))
11229                    - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(29))
11230                    / (dSumWLinearTwo6n6n*dSumWLinearFive6n5n6n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11231                    - 2.*f2pCorrelations->GetBinContent(6)
11232                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
11233                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,85))
11234                    - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(29))
11235                    / (dSumWLinearThree5n3n2n*dSumWLinearFive6n5n6n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11236    if(dError>0.)
11237    {
11238     f5pCumulants->SetBinError(29,pow(dError,0.5)); 
11239    }
11240   } // end of if(...)
11241  } // end of {
11242  f5pCumulants->SetBinContent(30,f5pCorrelations->GetBinContent(30)-f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(6));
11243  { 
11244   Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
11245   Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
11246   Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
11247   Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
11248   Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
11249   Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
11250   Double_t dSumWLinearFive6n5n6n4n1n = 0.; // sum of linear event weights for <4>
11251   Double_t dSumWQuadraticFive6n5n6n4n1n = 0.; // sum of quadratic event weights <4>
11252   Double_t dSpreadFive6n5n6n4n1n = 0.; // weighted and biased estimator for sigma of <4>
11253   dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11254   dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11255   dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
11256   dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11257   dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11258   dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
11259   dSumWLinearFive6n5n6n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11260   dSumWQuadraticFive6n5n6n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11261   dSpreadFive6n5n6n4n1n = f5pCorrelations->GetBinError(30);
11262   if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
11263      pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
11264      pow(dSumWLinearFive6n5n6n4n1n,2.)>dSumWQuadraticFive6n5n6n4n1n)
11265   {
11266    Double_t dError = pow(f3pCorrelations->GetBinContent(8),2.)
11267                    * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11268                    * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11269                    + pow(f2pCorrelations->GetBinContent(6),2.)
11270                    * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
11271                    * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
11272                    + pow((pow(dSumWQuadraticFive6n5n6n4n1n,0.5)/dSumWLinearFive6n5n6n4n1n)
11273                    * dSpreadFive6n5n6n4n1n*pow(pow(dSumWLinearFive6n5n6n4n1n,2.)/(pow(dSumWLinearFive6n5n6n4n1n,2.)-dSumWQuadraticFive6n5n6n4n1n),0.5),2.)
11274                    + 2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(6)
11275                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
11276                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,13)) 
11277                    - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(8))
11278                    / (dSumWLinearTwo6n6n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11279                    - 2.*f3pCorrelations->GetBinContent(8)
11280                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
11281                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,86))
11282                    - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(30))
11283                    / (dSumWLinearTwo6n6n*dSumWLinearFive6n5n6n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11284                    - 2.*f2pCorrelations->GetBinContent(6)
11285                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
11286                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,86))
11287                    - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(30))
11288                    / (dSumWLinearThree5n4n1n*dSumWLinearFive6n5n6n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11289    if(dError>0.)
11290    {
11291     f5pCumulants->SetBinError(30,pow(dError,0.5)); 
11292    }
11293   } // end of if(...)
11294  } // end of {
11295  // d2) "Two distinct harmonics":
11296  f5pCumulants->SetBinContent(32,f5pCorrelations->GetBinContent(32)-3.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(1));
11297  { 
11298   Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
11299   Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
11300   Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
11301   Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
11302   Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
11303   Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
11304   Double_t dSumWLinearFive2n1n1n1n1n = 0.; // sum of linear event weights for <4>
11305   Double_t dSumWQuadraticFive2n1n1n1n1n = 0.; // sum of quadratic event weights <4>
11306   Double_t dSpreadFive2n1n1n1n1n = 0.; // weighted and biased estimator for sigma of <4>
11307   dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11308   dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11309   dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
11310   dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11311   dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11312   dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
11313   dSumWLinearFive2n1n1n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11314   dSumWQuadraticFive2n1n1n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11315   dSpreadFive2n1n1n1n1n = f5pCorrelations->GetBinError(32);
11316   if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
11317      pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
11318      pow(dSumWLinearFive2n1n1n1n1n,2.)>dSumWQuadraticFive2n1n1n1n1n)
11319   {
11320    Double_t dError = 9.*pow(f3pCorrelations->GetBinContent(1),2.)
11321                    * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
11322                    * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
11323                    + 9.*pow(f2pCorrelations->GetBinContent(1),2.)
11324                    * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
11325                    * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
11326                    + pow((pow(dSumWQuadraticFive2n1n1n1n1n,0.5)/dSumWLinearFive2n1n1n1n1n)
11327                    * dSpreadFive2n1n1n1n1n*pow(pow(dSumWLinearFive2n1n1n1n1n,2.)/(pow(dSumWLinearFive2n1n1n1n1n,2.)-dSumWQuadraticFive2n1n1n1n1n),0.5),2.)
11328                    + 9.*2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(1)
11329                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
11330                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,7)) 
11331                    - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(1))
11332                    / (dSumWLinearTwo1n1n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11333                    - 3.*2.*f3pCorrelations->GetBinContent(1)
11334                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
11335                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,87))
11336                    - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(32))
11337                    / (dSumWLinearTwo1n1n*dSumWLinearFive2n1n1n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11338                    - 3.*2.*f2pCorrelations->GetBinContent(1)
11339                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
11340                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,87))
11341                    - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(32))
11342                    / (dSumWLinearThree2n1n1n*dSumWLinearFive2n1n1n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11343    if(dError>0.)
11344    {
11345     f5pCumulants->SetBinError(32,pow(dError,0.5)); 
11346    }
11347   } // end of if(...)
11348  } // end of {
11349  f5pCumulants->SetBinContent(33,f5pCorrelations->GetBinContent(33)-2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(2));
11350  { 
11351   Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
11352   Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
11353   Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
11354   Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
11355   Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
11356   Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
11357   Double_t dSumWLinearFive2n2n2n1n1n = 0.; // sum of linear event weights for <4>
11358   Double_t dSumWQuadraticFive2n2n2n1n1n = 0.; // sum of quadratic event weights <4>
11359   Double_t dSpreadFive2n2n2n1n1n = 0.; // weighted and biased estimator for sigma of <4>
11360   dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11361   dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11362   dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
11363   dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11364   dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11365   dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
11366   dSumWLinearFive2n2n2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11367   dSumWQuadraticFive2n2n2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11368   dSpreadFive2n2n2n1n1n = f5pCorrelations->GetBinError(33);
11369   if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
11370      pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
11371      pow(dSumWLinearFive2n2n2n1n1n,2.)>dSumWQuadraticFive2n2n2n1n1n)
11372   {
11373    Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(1),2.)
11374                    * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
11375                    * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
11376                    + 4.*pow(f2pCorrelations->GetBinContent(2),2.)
11377                    * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
11378                    * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
11379                    + pow((pow(dSumWQuadraticFive2n2n2n1n1n,0.5)/dSumWLinearFive2n2n2n1n1n)
11380                    * dSpreadFive2n2n2n1n1n*pow(pow(dSumWLinearFive2n2n2n1n1n,2.)/(pow(dSumWLinearFive2n2n2n1n1n,2.)-dSumWQuadraticFive2n2n2n1n1n),0.5),2.)
11381                    + 4.*2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(2)
11382                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
11383                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,7)) 
11384                    - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(1))
11385                    / (dSumWLinearTwo2n2n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11386                    - 2.*2.*f3pCorrelations->GetBinContent(1)
11387                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
11388                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,88))
11389                    - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(33))
11390                    / (dSumWLinearTwo2n2n*dSumWLinearFive2n2n2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11391                    - 2.*2.*f2pCorrelations->GetBinContent(2)
11392                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
11393                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,88))
11394                    - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(33))
11395                    / (dSumWLinearThree2n1n1n*dSumWLinearFive2n2n2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11396    if(dError>0.)
11397    {
11398     f5pCumulants->SetBinError(33,pow(dError,0.5)); 
11399    }
11400   } // end of if(...)
11401  } // end of {
11402  f5pCumulants->SetBinContent(34,f5pCorrelations->GetBinContent(34));
11403  {
11404   Double_t dSumWLinear = 0.; // sum of linear event weights
11405   Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
11406   Double_t dSpread = 0.; // weighted and biased estimator for sigma
11407   Double_t dError = 0.; // weighted and unbiased estimator for sigma
11408   dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11409   dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11410   dSpread = f5pCorrelations->GetBinError(34);
11411   if(pow(dSumWLinear,2.)>dSumWQuadratic)
11412   {
11413    dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
11414    f5pCumulants->SetBinError(34,dError); 
11415   } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
11416  } 
11417  f5pCumulants->SetBinContent(35,f5pCorrelations->GetBinContent(35));
11418  {
11419   Double_t dSumWLinear = 0.; // sum of linear event weights
11420   Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
11421   Double_t dSpread = 0.; // weighted and biased estimator for sigma
11422   Double_t dError = 0.; // weighted and unbiased estimator for sigma
11423   dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11424   dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11425   dSpread = f5pCorrelations->GetBinError(35);
11426   if(pow(dSumWLinear,2.)>dSumWQuadratic)
11427   {
11428    dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
11429    f5pCumulants->SetBinError(35,dError); 
11430   } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
11431  } 
11432  f5pCumulants->SetBinContent(36,f5pCorrelations->GetBinContent(36)-3.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(2));
11433  { 
11434   Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
11435   Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
11436   Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
11437   Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
11438   Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
11439   Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
11440   Double_t dSumWLinearFive4n2n2n2n2n = 0.; // sum of linear event weights for <4>
11441   Double_t dSumWQuadraticFive4n2n2n2n2n = 0.; // sum of quadratic event weights <4>
11442   Double_t dSpreadFive4n2n2n2n2n = 0.; // weighted and biased estimator for sigma of <4>
11443   dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11444   dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11445   dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
11446   dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11447   dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11448   dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
11449   dSumWLinearFive4n2n2n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11450   dSumWQuadraticFive4n2n2n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11451   dSpreadFive4n2n2n2n2n = f5pCorrelations->GetBinError(36);
11452   if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
11453      pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
11454      pow(dSumWLinearFive4n2n2n2n2n,2.)>dSumWQuadraticFive4n2n2n2n2n)
11455   {
11456    Double_t dError = 9.*pow(f3pCorrelations->GetBinContent(2),2.)
11457                    * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
11458                    * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
11459                    + 9.*pow(f2pCorrelations->GetBinContent(2),2.)
11460                    * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
11461                    * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
11462                    + pow((pow(dSumWQuadraticFive4n2n2n2n2n,0.5)/dSumWLinearFive4n2n2n2n2n)
11463                    * dSpreadFive4n2n2n2n2n*pow(pow(dSumWLinearFive4n2n2n2n2n,2.)/(pow(dSumWLinearFive4n2n2n2n2n,2.)-dSumWQuadraticFive4n2n2n2n2n),0.5),2.)
11464                    + 9.*2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(2)
11465                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
11466                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,8)) 
11467                    - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(2))
11468                    / (dSumWLinearTwo2n2n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11469                    - 3.*2.*f3pCorrelations->GetBinContent(2)
11470                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
11471                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,91))
11472                    - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(36))
11473                    / (dSumWLinearTwo2n2n*dSumWLinearFive4n2n2n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11474                    - 3.*2.*f2pCorrelations->GetBinContent(2)
11475                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
11476                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,91))
11477                    - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(36))
11478                    / (dSumWLinearThree4n2n2n*dSumWLinearFive4n2n2n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11479    if(dError>0.)
11480    {
11481     f5pCumulants->SetBinError(36,pow(dError,0.5)); 
11482    }
11483   } // end of if(...)
11484  } // end of {
11485  f5pCumulants->SetBinContent(37,f5pCorrelations->GetBinContent(37)-2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(4)); 
11486  { 
11487   Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
11488   Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
11489   Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
11490   Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
11491   Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
11492   Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
11493   Double_t dSumWLinearFive4n4n4n2n2n = 0.; // sum of linear event weights for <4>
11494   Double_t dSumWQuadraticFive4n4n4n2n2n = 0.; // sum of quadratic event weights <4>
11495   Double_t dSpreadFive4n4n4n2n2n = 0.; // weighted and biased estimator for sigma of <4>
11496   dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11497   dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11498   dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
11499   dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11500   dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11501   dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
11502   dSumWLinearFive4n4n4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11503   dSumWQuadraticFive4n4n4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11504   dSpreadFive4n4n4n2n2n = f5pCorrelations->GetBinError(37);
11505   if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
11506      pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
11507      pow(dSumWLinearFive4n4n4n2n2n,2.)>dSumWQuadraticFive4n4n4n2n2n)
11508   {
11509    Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(2),2.)
11510                    * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
11511                    * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
11512                    + 4.*pow(f2pCorrelations->GetBinContent(4),2.)
11513                    * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
11514                    * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
11515                    + pow((pow(dSumWQuadraticFive4n4n4n2n2n,0.5)/dSumWLinearFive4n4n4n2n2n)
11516                    * dSpreadFive4n4n4n2n2n*pow(pow(dSumWLinearFive4n4n4n2n2n,2.)/(pow(dSumWLinearFive4n4n4n2n2n,2.)-dSumWQuadraticFive4n4n4n2n2n),0.5),2.)
11517                    + 4.*2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(4)
11518                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
11519                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,8)) 
11520                    - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(2))
11521                    / (dSumWLinearTwo4n4n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11522                    - 2.*2.*f3pCorrelations->GetBinContent(2)
11523                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
11524                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,92))
11525                    - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(37))
11526                    / (dSumWLinearTwo4n4n*dSumWLinearFive4n4n4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11527                    - 2.*2.*f2pCorrelations->GetBinContent(4)
11528                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
11529                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,92))
11530                    - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(37))
11531                    / (dSumWLinearThree4n2n2n*dSumWLinearFive4n4n4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11532    if(dError>0.)
11533    {
11534     f5pCumulants->SetBinError(37,pow(dError,0.5)); 
11535    }
11536   } // end of if(...)
11537  } // end of {
11538  f5pCumulants->SetBinContent(38,f5pCorrelations->GetBinContent(38)-3.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(3)); 
11539  { 
11540   Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
11541   Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
11542   Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
11543   Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
11544   Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
11545   Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
11546   Double_t dSumWLinearFive6n3n3n3n3n = 0.; // sum of linear event weights for <4>
11547   Double_t dSumWQuadraticFive6n3n3n3n3n = 0.; // sum of quadratic event weights <4>
11548   Double_t dSpreadFive6n3n3n3n3n = 0.; // weighted and biased estimator for sigma of <4>
11549   dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11550   dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11551   dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
11552   dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11553   dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11554   dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
11555   dSumWLinearFive6n3n3n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11556   dSumWQuadraticFive6n3n3n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11557   dSpreadFive6n3n3n3n3n = f5pCorrelations->GetBinError(38);
11558   if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
11559      pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
11560      pow(dSumWLinearFive6n3n3n3n3n,2.)>dSumWQuadraticFive6n3n3n3n3n)
11561   {
11562    Double_t dError = 9.*pow(f3pCorrelations->GetBinContent(3),2.)
11563                    * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
11564                    * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
11565                    + 9.*pow(f2pCorrelations->GetBinContent(3),2.)
11566                    * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
11567                    * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
11568                    + pow((pow(dSumWQuadraticFive6n3n3n3n3n,0.5)/dSumWLinearFive6n3n3n3n3n)
11569                    * dSpreadFive6n3n3n3n3n*pow(pow(dSumWLinearFive6n3n3n3n3n,2.)/(pow(dSumWLinearFive6n3n3n3n3n,2.)-dSumWQuadraticFive6n3n3n3n3n),0.5),2.)
11570                    + 9.*2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(3)
11571                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
11572                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,9)) 
11573                    - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(3))
11574                    / (dSumWLinearTwo3n3n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11575                    - 3.*2.*f3pCorrelations->GetBinContent(3)
11576                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
11577                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,93))
11578                    - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(38))
11579                    / (dSumWLinearTwo3n3n*dSumWLinearFive6n3n3n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11580                    - 3.*2.*f2pCorrelations->GetBinContent(3)
11581                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
11582                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,93))
11583                    - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(38))
11584                    / (dSumWLinearThree6n3n3n*dSumWLinearFive6n3n3n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11585    if(dError>0.)
11586    {
11587     f5pCumulants->SetBinError(38,pow(dError,0.5)); 
11588    }
11589   } // end of if(...)
11590  } // end of {
11591  f5pCumulants->SetBinContent(39,f5pCorrelations->GetBinContent(39));
11592  {
11593   Double_t dSumWLinear = 0.; // sum of linear event weights
11594   Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
11595   Double_t dSpread = 0.; // weighted and biased estimator for sigma
11596   Double_t dError = 0.; // weighted and unbiased estimator for sigma
11597   dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11598   dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11599   dSpread = f5pCorrelations->GetBinError(39);
11600   if(pow(dSumWLinear,2.)>dSumWQuadratic)
11601   {
11602    dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
11603    f5pCumulants->SetBinError(39,dError); 
11604   } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
11605  } 
11606  f5pCumulants->SetBinContent(40,f5pCorrelations->GetBinContent(40)-2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(6)); 
11607  { 
11608   Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
11609   Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
11610   Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
11611   Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
11612   Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
11613   Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
11614   Double_t dSumWLinearFive6n6n6n3n3n = 0.; // sum of linear event weights for <4>
11615   Double_t dSumWQuadraticFive6n6n6n3n3n = 0.; // sum of quadratic event weights <4>
11616   Double_t dSpreadFive6n6n6n3n3n = 0.; // weighted and biased estimator for sigma of <4>
11617   dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11618   dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11619   dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
11620   dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11621   dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11622   dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
11623   dSumWLinearFive6n6n6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11624   dSumWQuadraticFive6n6n6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11625   dSpreadFive6n6n6n3n3n = f5pCorrelations->GetBinError(40);
11626   if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
11627      pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
11628      pow(dSumWLinearFive6n6n6n3n3n,2.)>dSumWQuadraticFive6n6n6n3n3n)
11629   {
11630    Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(3),2.)
11631                    * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11632                    * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11633                    + 4.*pow(f2pCorrelations->GetBinContent(6),2.)
11634                    * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
11635                    * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
11636                    + pow((pow(dSumWQuadraticFive6n6n6n3n3n,0.5)/dSumWLinearFive6n6n6n3n3n)
11637                    * dSpreadFive6n6n6n3n3n*pow(pow(dSumWLinearFive6n6n6n3n3n,2.)/(pow(dSumWLinearFive6n6n6n3n3n,2.)-dSumWQuadraticFive6n6n6n3n3n),0.5),2.)
11638                    + 4.*2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(6)
11639                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
11640                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,9)) 
11641                    - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(3))
11642                    / (dSumWLinearTwo6n6n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11643                    - 2.*2.*f3pCorrelations->GetBinContent(3)
11644                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
11645                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,95))
11646                    - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(40))
11647                    / (dSumWLinearTwo6n6n*dSumWLinearFive6n6n6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11648                    - 2.*2.*f2pCorrelations->GetBinContent(6)
11649                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
11650                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,95))
11651                    - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(40))
11652                    / (dSumWLinearThree6n3n3n*dSumWLinearFive6n6n6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11653    if(dError>0.)
11654    {
11655     f5pCumulants->SetBinError(40,pow(dError,0.5)); 
11656    }
11657   } // end of if(...)
11658  } // end of {
11659
11660  // d2) "Three distinct harmonics":
11661  f5pCumulants->SetBinContent(42,f5pCorrelations->GetBinContent(42)-2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(1)); 
11662  { 
11663   Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
11664   Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
11665   Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
11666   Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
11667   Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
11668   Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
11669   Double_t dSumWLinearFive3n1n2n1n1n = 0.; // sum of linear event weights for <4>
11670   Double_t dSumWQuadraticFive3n1n2n1n1n = 0.; // sum of quadratic event weights <4>
11671   Double_t dSpreadFive3n1n2n1n1n = 0.; // weighted and biased estimator for sigma of <4>
11672   dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11673   dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11674   dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
11675   dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11676   dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11677   dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
11678   dSumWLinearFive3n1n2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11679   dSumWQuadraticFive3n1n2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11680   dSpreadFive3n1n2n1n1n = f5pCorrelations->GetBinError(42);
11681   if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
11682      pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
11683      pow(dSumWLinearFive3n1n2n1n1n,2.)>dSumWQuadraticFive3n1n2n1n1n)
11684   {
11685    Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(5),2.)
11686                    * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
11687                    * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
11688                    + 4.*pow(f2pCorrelations->GetBinContent(1),2.)
11689                    * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
11690                    * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
11691                    + pow((pow(dSumWQuadraticFive3n1n2n1n1n,0.5)/dSumWLinearFive3n1n2n1n1n)
11692                    * dSpreadFive3n1n2n1n1n*pow(pow(dSumWLinearFive3n1n2n1n1n,2.)/(pow(dSumWLinearFive3n1n2n1n1n,2.)-dSumWQuadraticFive3n1n2n1n1n),0.5),2.)
11693                    + 4.*2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(1)
11694                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
11695                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,10)) 
11696                    - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(5))
11697                    / (dSumWLinearTwo1n1n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11698                    - 2.*2.*f3pCorrelations->GetBinContent(5)
11699                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
11700                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,96))
11701                    - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(42))
11702                    / (dSumWLinearTwo1n1n*dSumWLinearFive3n1n2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11703                    - 2.*2.*f2pCorrelations->GetBinContent(1)
11704                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
11705                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,96))
11706                    - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(42))
11707                    / (dSumWLinearThree3n2n1n*dSumWLinearFive3n1n2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11708    if(dError>0.)
11709    {
11710     f5pCumulants->SetBinError(42,pow(dError,0.5)); 
11711    }
11712   } // end of if(...)
11713  } // end of {
11714  f5pCumulants->SetBinContent(43,f5pCorrelations->GetBinContent(43)-2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(2)); 
11715  { 
11716   Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
11717   Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
11718   Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
11719   Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
11720   Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
11721   Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
11722   Double_t dSumWLinearFive3n2n2n2n1n = 0.; // sum of linear event weights for <4>
11723   Double_t dSumWQuadraticFive3n2n2n2n1n = 0.; // sum of quadratic event weights <4>
11724   Double_t dSpreadFive3n2n2n2n1n = 0.; // weighted and biased estimator for sigma of <4>
11725   dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11726   dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11727   dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
11728   dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11729   dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11730   dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
11731   dSumWLinearFive3n2n2n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11732   dSumWQuadraticFive3n2n2n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11733   dSpreadFive3n2n2n2n1n = f5pCorrelations->GetBinError(43);
11734   if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
11735      pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
11736      pow(dSumWLinearFive3n2n2n2n1n,2.)>dSumWQuadraticFive3n2n2n2n1n)
11737   {
11738    Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(5),2.)
11739                    * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
11740                    * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
11741                    + 4.*pow(f2pCorrelations->GetBinContent(2),2.)
11742                    * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
11743                    * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
11744                    + pow((pow(dSumWQuadraticFive3n2n2n2n1n,0.5)/dSumWLinearFive3n2n2n2n1n)
11745                    * dSpreadFive3n2n2n2n1n*pow(pow(dSumWLinearFive3n2n2n2n1n,2.)/(pow(dSumWLinearFive3n2n2n2n1n,2.)-dSumWQuadraticFive3n2n2n2n1n),0.5),2.)
11746                    + 4.*2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(2)
11747                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
11748                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,10)) 
11749                    - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(5))
11750                    / (dSumWLinearTwo2n2n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11751                    - 2.*2.*f3pCorrelations->GetBinContent(5)
11752                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
11753                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,97))
11754                    - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(43))
11755                    / (dSumWLinearTwo2n2n*dSumWLinearFive3n2n2n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11756                    - 2.*2.*f2pCorrelations->GetBinContent(2)
11757                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
11758                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,97))
11759                    - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(43))
11760                    / (dSumWLinearThree3n2n1n*dSumWLinearFive3n2n2n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11761    if(dError>0.)
11762    {
11763     f5pCumulants->SetBinError(43,pow(dError,0.5)); 
11764    }
11765   } // end of if(...)
11766  } // end of {
11767  f5pCumulants->SetBinContent(44,f5pCorrelations->GetBinContent(44)-2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(3)); 
11768  { 
11769   Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
11770   Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
11771   Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
11772   Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
11773   Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
11774   Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
11775   Double_t dSumWLinearFive3n3n3n2n1n = 0.; // sum of linear event weights for <4>
11776   Double_t dSumWQuadraticFive3n3n3n2n1n = 0.; // sum of quadratic event weights <4>
11777   Double_t dSpreadFive3n3n3n2n1n = 0.; // weighted and biased estimator for sigma of <4>
11778   dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11779   dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11780   dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
11781   dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11782   dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11783   dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
11784   dSumWLinearFive3n3n3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11785   dSumWQuadraticFive3n3n3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11786   dSpreadFive3n3n3n2n1n = f5pCorrelations->GetBinError(44);
11787   if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
11788      pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
11789      pow(dSumWLinearFive3n3n3n2n1n,2.)>dSumWQuadraticFive3n3n3n2n1n)
11790   {
11791    Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(5),2.)
11792                    * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
11793                    * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
11794                    + 4.*pow(f2pCorrelations->GetBinContent(3),2.)
11795                    * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
11796                    * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
11797                    + pow((pow(dSumWQuadraticFive3n3n3n2n1n,0.5)/dSumWLinearFive3n3n3n2n1n)
11798                    * dSpreadFive3n3n3n2n1n*pow(pow(dSumWLinearFive3n3n3n2n1n,2.)/(pow(dSumWLinearFive3n3n3n2n1n,2.)-dSumWQuadraticFive3n3n3n2n1n),0.5),2.)
11799                    + 4.*2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(3)
11800                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
11801                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,10)) 
11802                    - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(5))
11803                    / (dSumWLinearTwo3n3n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11804                    - 2.*2.*f3pCorrelations->GetBinContent(5)
11805                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
11806                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,98))
11807                    - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(44))
11808                    / (dSumWLinearTwo3n3n*dSumWLinearFive3n3n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11809                    - 2.*2.*f2pCorrelations->GetBinContent(3)
11810                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
11811                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,98))
11812                    - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(44))
11813                    / (dSumWLinearThree3n2n1n*dSumWLinearFive3n3n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11814    if(dError>0.)
11815    {
11816     f5pCumulants->SetBinError(44,pow(dError,0.5)); 
11817    }
11818   } // end of if(...)
11819  } // end of {
11820  f5pCumulants->SetBinContent(45,f5pCorrelations->GetBinContent(45)-2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(1)); 
11821  { 
11822   Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
11823   Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
11824   Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
11825   Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
11826   Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
11827   Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
11828   Double_t dSumWLinearFive4n1n3n1n1n = 0.; // sum of linear event weights for <4>
11829   Double_t dSumWQuadraticFive4n1n3n1n1n = 0.; // sum of quadratic event weights <4>
11830   Double_t dSpreadFive4n1n3n1n1n = 0.; // weighted and biased estimator for sigma of <4>
11831   dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11832   dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11833   dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
11834   dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11835   dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11836   dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
11837   dSumWLinearFive4n1n3n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11838   dSumWQuadraticFive4n1n3n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11839   dSpreadFive4n1n3n1n1n = f5pCorrelations->GetBinError(45);
11840   if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
11841      pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
11842      pow(dSumWLinearFive4n1n3n1n1n,2.)>dSumWQuadraticFive4n1n3n1n1n)
11843   {
11844    Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(6),2.)
11845                    * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
11846                    * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
11847                    + 4.*pow(f2pCorrelations->GetBinContent(1),2.)
11848                    * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
11849                    * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
11850                    + pow((pow(dSumWQuadraticFive4n1n3n1n1n,0.5)/dSumWLinearFive4n1n3n1n1n)
11851                    * dSpreadFive4n1n3n1n1n*pow(pow(dSumWLinearFive4n1n3n1n1n,2.)/(pow(dSumWLinearFive4n1n3n1n1n,2.)-dSumWQuadraticFive4n1n3n1n1n),0.5),2.)
11852                    + 4.*2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(1)
11853                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
11854                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,11)) 
11855                    - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(6))
11856                    / (dSumWLinearTwo1n1n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11857                    - 2.*2.*f3pCorrelations->GetBinContent(6)
11858                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
11859                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,99))
11860                    - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(45))
11861                    / (dSumWLinearTwo1n1n*dSumWLinearFive4n1n3n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11862                    - 2.*2.*f2pCorrelations->GetBinContent(1)
11863                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
11864                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,99))
11865                    - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(45))
11866                    / (dSumWLinearThree4n3n1n*dSumWLinearFive4n1n3n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11867    if(dError>0.)
11868    {
11869     f5pCumulants->SetBinError(45,pow(dError,0.5)); 
11870    }
11871   } // end of if(...)
11872  } // end of {
11873  f5pCumulants->SetBinContent(46,f5pCorrelations->GetBinContent(46));
11874  {
11875   Double_t dSumWLinear = 0.; // sum of linear event weights
11876   Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
11877   Double_t dSpread = 0.; // weighted and biased estimator for sigma
11878   Double_t dError = 0.; // weighted and unbiased estimator for sigma
11879   dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11880   dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11881   dSpread = f5pCorrelations->GetBinError(46);
11882   if(pow(dSumWLinear,2.)>dSumWQuadratic)
11883   {
11884    dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
11885    f5pCumulants->SetBinError(46,dError); 
11886   } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
11887  } 
11888  f5pCumulants->SetBinContent(47,f5pCorrelations->GetBinContent(47)-2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(3)); 
11889  { 
11890   Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
11891   Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
11892   Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
11893   Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
11894   Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
11895   Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
11896   Double_t dSumWLinearFive4n3n3n3n1n = 0.; // sum of linear event weights for <4>
11897   Double_t dSumWQuadraticFive4n3n3n3n1n = 0.; // sum of quadratic event weights <4>
11898   Double_t dSpreadFive4n3n3n3n1n = 0.; // weighted and biased estimator for sigma of <4>
11899   dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11900   dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11901   dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
11902   dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11903   dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11904   dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
11905   dSumWLinearFive4n3n3n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11906   dSumWQuadraticFive4n3n3n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11907   dSpreadFive4n3n3n3n1n = f5pCorrelations->GetBinError(47);
11908   if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
11909      pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
11910      pow(dSumWLinearFive4n3n3n3n1n,2.)>dSumWQuadraticFive4n3n3n3n1n)
11911   {
11912    Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(6),2.)
11913                    * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
11914                    * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
11915                    + 4.*pow(f2pCorrelations->GetBinContent(3),2.)
11916                    * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
11917                    * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
11918                    + pow((pow(dSumWQuadraticFive4n3n3n3n1n,0.5)/dSumWLinearFive4n3n3n3n1n)
11919                    * dSpreadFive4n3n3n3n1n*pow(pow(dSumWLinearFive4n3n3n3n1n,2.)/(pow(dSumWLinearFive4n3n3n3n1n,2.)-dSumWQuadraticFive4n3n3n3n1n),0.5),2.)
11920                    + 4.*2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(3)
11921                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
11922                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,11)) 
11923                    - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(6))
11924                    / (dSumWLinearTwo3n3n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11925                    - 2.*2.*f3pCorrelations->GetBinContent(6)
11926                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
11927                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,101))
11928                    - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(47))
11929                    / (dSumWLinearTwo3n3n*dSumWLinearFive4n3n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11930                    - 2.*2.*f2pCorrelations->GetBinContent(3)
11931                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
11932                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,101))
11933                    - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(47))
11934                    / (dSumWLinearThree4n3n1n*dSumWLinearFive4n3n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11935    if(dError>0.)
11936    {
11937     f5pCumulants->SetBinError(47,pow(dError,0.5)); 
11938    }
11939   } // end of if(...)
11940  } // end of {
11941  f5pCumulants->SetBinContent(48,f5pCorrelations->GetBinContent(48));
11942  {
11943   Double_t dSumWLinear = 0.; // sum of linear event weights
11944   Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
11945   Double_t dSpread = 0.; // weighted and biased estimator for sigma
11946   Double_t dError = 0.; // weighted and unbiased estimator for sigma
11947   dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11948   dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11949   dSpread = f5pCorrelations->GetBinError(48);
11950   if(pow(dSumWLinear,2.)>dSumWQuadratic)
11951   {
11952    dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
11953    f5pCumulants->SetBinError(48,dError); 
11954   } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
11955  } 
11956  f5pCumulants->SetBinContent(49,f5pCorrelations->GetBinContent(49)-2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(4));  
11957  { 
11958   Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
11959   Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
11960   Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
11961   Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
11962   Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
11963   Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
11964   Double_t dSumWLinearFive4n3n3n3n1n = 0.; // sum of linear event weights for <4>
11965   Double_t dSumWQuadraticFive4n3n3n3n1n = 0.; // sum of quadratic event weights <4>
11966   Double_t dSpreadFive4n3n3n3n1n = 0.; // weighted and biased estimator for sigma of <4>
11967   dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11968   dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11969   dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
11970   dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11971   dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11972   dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
11973   dSumWLinearFive4n3n3n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11974   dSumWQuadraticFive4n3n3n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11975   dSpreadFive4n3n3n3n1n = f5pCorrelations->GetBinError(49);
11976   if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
11977      pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
11978      pow(dSumWLinearFive4n3n3n3n1n,2.)>dSumWQuadraticFive4n3n3n3n1n)
11979   {
11980    Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(6),2.)
11981                    * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
11982                    * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
11983                    + 4.*pow(f2pCorrelations->GetBinContent(4),2.)
11984                    * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
11985                    * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
11986                    + pow((pow(dSumWQuadraticFive4n3n3n3n1n,0.5)/dSumWLinearFive4n3n3n3n1n)
11987                    * dSpreadFive4n3n3n3n1n*pow(pow(dSumWLinearFive4n3n3n3n1n,2.)/(pow(dSumWLinearFive4n3n3n3n1n,2.)-dSumWQuadraticFive4n3n3n3n1n),0.5),2.)
11988                    + 4.*2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(4)
11989                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
11990                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,11)) 
11991                    - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(6))
11992                    / (dSumWLinearTwo4n4n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11993                    - 2.*2.*f3pCorrelations->GetBinContent(6)
11994                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
11995                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,103))
11996                    - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(49))
11997                    / (dSumWLinearTwo4n4n*dSumWLinearFive4n3n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11998                    - 2.*2.*f2pCorrelations->GetBinContent(4)
11999                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
12000                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,103))
12001                    - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(49))
12002                    / (dSumWLinearThree4n3n1n*dSumWLinearFive4n3n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12003    if(dError>0.)
12004    {
12005     f5pCumulants->SetBinError(49,pow(dError,0.5)); 
12006    }
12007   } // end of if(...)
12008  } // end of {
12009  f5pCumulants->SetBinContent(50,f5pCorrelations->GetBinContent(50));
12010  {
12011   Double_t dSumWLinear = 0.; // sum of linear event weights
12012   Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12013   Double_t dSpread = 0.; // weighted and biased estimator for sigma
12014   Double_t dError = 0.; // weighted and unbiased estimator for sigma
12015   dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12016   dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12017   dSpread = f5pCorrelations->GetBinError(50);
12018   if(pow(dSumWLinear,2.)>dSumWQuadratic)
12019   {
12020    dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12021    f5pCumulants->SetBinError(50,dError); 
12022   } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12023  } 
12024  f5pCumulants->SetBinContent(51,f5pCorrelations->GetBinContent(51));
12025  {
12026   Double_t dSumWLinear = 0.; // sum of linear event weights
12027   Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12028   Double_t dSpread = 0.; // weighted and biased estimator for sigma
12029   Double_t dError = 0.; // weighted and unbiased estimator for sigma
12030   dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12031   dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12032   dSpread = f5pCorrelations->GetBinError(51);
12033   if(pow(dSumWLinear,2.)>dSumWQuadratic)
12034   {
12035    dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12036    f5pCumulants->SetBinError(51,dError); 
12037   } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12038  } 
12039  f5pCumulants->SetBinContent(52,f5pCorrelations->GetBinContent(52)-2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(2));  
12040  { 
12041   Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
12042   Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
12043   Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
12044   Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
12045   Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
12046   Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
12047   Double_t dSumWLinearFive5n2n3n2n2n = 0.; // sum of linear event weights for <4>
12048   Double_t dSumWQuadraticFive5n2n3n2n2n = 0.; // sum of quadratic event weights <4>
12049   Double_t dSpreadFive5n2n3n2n2n = 0.; // weighted and biased estimator for sigma of <4>
12050   dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12051   dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12052   dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
12053   dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12054   dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12055   dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
12056   dSumWLinearFive5n2n3n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12057   dSumWQuadraticFive5n2n3n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12058   dSpreadFive5n2n3n2n2n = f5pCorrelations->GetBinError(52);
12059   if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
12060      pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
12061      pow(dSumWLinearFive5n2n3n2n2n,2.)>dSumWQuadraticFive5n2n3n2n2n)
12062   {
12063    Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(7),2.)
12064                    * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
12065                    * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
12066                    + 4.*pow(f2pCorrelations->GetBinContent(2),2.)
12067                    * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
12068                    * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
12069                    + pow((pow(dSumWQuadraticFive5n2n3n2n2n,0.5)/dSumWLinearFive5n2n3n2n2n)
12070                    * dSpreadFive5n2n3n2n2n*pow(pow(dSumWLinearFive5n2n3n2n2n,2.)/(pow(dSumWLinearFive5n2n3n2n2n,2.)-dSumWQuadraticFive5n2n3n2n2n),0.5),2.)
12071                    + 4.*2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(2)
12072                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
12073                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,12)) 
12074                    - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(7))
12075                    / (dSumWLinearTwo2n2n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12076                    - 2.*2.*f3pCorrelations->GetBinContent(7)
12077                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
12078                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,106))
12079                    - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(52))
12080                    / (dSumWLinearTwo2n2n*dSumWLinearFive5n2n3n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12081                    - 2.*2.*f2pCorrelations->GetBinContent(2)
12082                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
12083                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,106))
12084                    - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(52))
12085                    / (dSumWLinearThree5n3n2n*dSumWLinearFive5n2n3n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12086    if(dError>0.)
12087    {
12088     f5pCumulants->SetBinError(52,pow(dError,0.5)); 
12089    }
12090   } // end of if(...)
12091  } // end of {
12092  f5pCumulants->SetBinContent(53,f5pCorrelations->GetBinContent(53)-2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(3));  
12093  { 
12094   Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
12095   Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
12096   Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
12097   Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
12098   Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
12099   Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
12100   Double_t dSumWLinearFive5n3n3n3n2n = 0.; // sum of linear event weights for <4>
12101   Double_t dSumWQuadraticFive5n3n3n3n2n = 0.; // sum of quadratic event weights <4>
12102   Double_t dSpreadFive5n3n3n3n2n = 0.; // weighted and biased estimator for sigma of <4>
12103   dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12104   dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12105   dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
12106   dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12107   dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12108   dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
12109   dSumWLinearFive5n3n3n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12110   dSumWQuadraticFive5n3n3n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12111   dSpreadFive5n3n3n3n2n = f5pCorrelations->GetBinError(53);
12112   if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
12113      pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
12114      pow(dSumWLinearFive5n3n3n3n2n,2.)>dSumWQuadraticFive5n3n3n3n2n)
12115   {
12116    Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(7),2.)
12117                    * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
12118                    * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
12119                    + 4.*pow(f2pCorrelations->GetBinContent(3),2.)
12120                    * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
12121                    * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
12122                    + pow((pow(dSumWQuadraticFive5n3n3n3n2n,0.5)/dSumWLinearFive5n3n3n3n2n)
12123                    * dSpreadFive5n3n3n3n2n*pow(pow(dSumWLinearFive5n3n3n3n2n,2.)/(pow(dSumWLinearFive5n3n3n3n2n,2.)-dSumWQuadraticFive5n3n3n3n2n),0.5),2.)
12124                    + 4.*2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(3)
12125                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
12126                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,12)) 
12127                    - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(7))
12128                    / (dSumWLinearTwo3n3n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12129                    - 2.*2.*f3pCorrelations->GetBinContent(7)
12130                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
12131                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,107))
12132                    - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(53))
12133                    / (dSumWLinearTwo3n3n*dSumWLinearFive5n3n3n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12134                    - 2.*2.*f2pCorrelations->GetBinContent(3)
12135                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
12136                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,107))
12137                    - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(53))
12138                    / (dSumWLinearThree5n3n2n*dSumWLinearFive5n3n3n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12139    if(dError>0.)
12140    {
12141     f5pCumulants->SetBinError(53,pow(dError,0.5)); 
12142    }
12143   } // end of if(...)
12144  } // end of {
12145  f5pCumulants->SetBinContent(54,f5pCorrelations->GetBinContent(54)-2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(1)); 
12146  { 
12147   Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
12148   Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
12149   Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
12150   Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
12151   Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
12152   Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
12153   Double_t dSumWLinearFive5n1n4n1n1n = 0.; // sum of linear event weights for <4>
12154   Double_t dSumWQuadraticFive5n1n4n1n1n = 0.; // sum of quadratic event weights <4>
12155   Double_t dSpreadFive5n1n4n1n1n = 0.; // weighted and biased estimator for sigma of <4>
12156   dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12157   dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12158   dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
12159   dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12160   dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12161   dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
12162   dSumWLinearFive5n1n4n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12163   dSumWQuadraticFive5n1n4n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12164   dSpreadFive5n1n4n1n1n = f5pCorrelations->GetBinError(54);
12165   if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
12166      pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
12167      pow(dSumWLinearFive5n1n4n1n1n,2.)>dSumWQuadraticFive5n1n4n1n1n)
12168   {
12169    Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(8),2.)
12170                    * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
12171                    * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
12172                    + 4.*pow(f2pCorrelations->GetBinContent(1),2.)
12173                    * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
12174                    * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
12175                    + pow((pow(dSumWQuadraticFive5n1n4n1n1n,0.5)/dSumWLinearFive5n1n4n1n1n)
12176                    * dSpreadFive5n1n4n1n1n*pow(pow(dSumWLinearFive5n1n4n1n1n,2.)/(pow(dSumWLinearFive5n1n4n1n1n,2.)-dSumWQuadraticFive5n1n4n1n1n),0.5),2.)
12177                    + 4.*2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(1)
12178                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
12179                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,13)) 
12180                    - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(8))
12181                    / (dSumWLinearTwo1n1n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12182                    - 2.*2.*f3pCorrelations->GetBinContent(8)
12183                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
12184                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,108))
12185                    - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(54))
12186                    / (dSumWLinearTwo1n1n*dSumWLinearFive5n1n4n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12187                    - 2.*2.*f2pCorrelations->GetBinContent(1)
12188                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
12189                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,108))
12190                    - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(54))
12191                    / (dSumWLinearThree5n4n1n*dSumWLinearFive5n1n4n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12192    if(dError>0.)
12193    {
12194     f5pCumulants->SetBinError(54,pow(dError,0.5)); 
12195    }
12196   } // end of if(...)
12197  } // end of {
12198
12199  f5pCumulants->SetBinContent(55,f5pCorrelations->GetBinContent(55));
12200  {
12201   Double_t dSumWLinear = 0.; // sum of linear event weights
12202   Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12203   Double_t dSpread = 0.; // weighted and biased estimator for sigma
12204   Double_t dError = 0.; // weighted and unbiased estimator for sigma
12205   dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12206   dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12207   dSpread = f5pCorrelations->GetBinError(55);
12208   if(pow(dSumWLinear,2.)>dSumWQuadratic)
12209   {
12210    dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12211    f5pCumulants->SetBinError(55,dError); 
12212   } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12213  } 
12214  f5pCumulants->SetBinContent(56,f5pCorrelations->GetBinContent(56)-2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(4));
12215  { 
12216   Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
12217   Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
12218   Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
12219   Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
12220   Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
12221   Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
12222   Double_t dSumWLinearFive5n4n4n4n1n = 0.; // sum of linear event weights for <4>
12223   Double_t dSumWQuadraticFive5n4n4n4n1n = 0.; // sum of quadratic event weights <4>
12224   Double_t dSpreadFive5n4n4n4n1n = 0.; // weighted and biased estimator for sigma of <4>
12225   dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12226   dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12227   dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
12228   dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12229   dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12230   dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
12231   dSumWLinearFive5n4n4n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12232   dSumWQuadraticFive5n4n4n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12233   dSpreadFive5n4n4n4n1n = f5pCorrelations->GetBinError(56);
12234   if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
12235      pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
12236      pow(dSumWLinearFive5n4n4n4n1n,2.)>dSumWQuadraticFive5n4n4n4n1n)
12237   {
12238    Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(8),2.)
12239                    * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
12240                    * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
12241                    + 4.*pow(f2pCorrelations->GetBinContent(4),2.)
12242                    * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
12243                    * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
12244                    + pow((pow(dSumWQuadraticFive5n4n4n4n1n,0.5)/dSumWLinearFive5n4n4n4n1n)
12245                    * dSpreadFive5n4n4n4n1n*pow(pow(dSumWLinearFive5n4n4n4n1n,2.)/(pow(dSumWLinearFive5n4n4n4n1n,2.)-dSumWQuadraticFive5n4n4n4n1n),0.5),2.)
12246                    + 4.*2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(4)
12247                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
12248                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,13)) 
12249                    - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(8))
12250                    / (dSumWLinearTwo4n4n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12251                    - 2.*2.*f3pCorrelations->GetBinContent(8)
12252                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
12253                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,110))
12254                    - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(56))
12255                    / (dSumWLinearTwo4n4n*dSumWLinearFive5n4n4n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12256                    - 2.*2.*f2pCorrelations->GetBinContent(4)
12257                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
12258                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,110))
12259                    - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(56))
12260                    / (dSumWLinearThree5n4n1n*dSumWLinearFive5n4n4n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12261    if(dError>0.)
12262    {
12263     f5pCumulants->SetBinError(56,pow(dError,0.5)); 
12264    }
12265   } // end of if(...)
12266  } // end of {
12267  f5pCumulants->SetBinContent(57,f5pCorrelations->GetBinContent(57));
12268  {
12269   Double_t dSumWLinear = 0.; // sum of linear event weights
12270   Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12271   Double_t dSpread = 0.; // weighted and biased estimator for sigma
12272   Double_t dError = 0.; // weighted and unbiased estimator for sigma
12273   dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12274   dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12275   dSpread = f5pCorrelations->GetBinError(57);
12276   if(pow(dSumWLinear,2.)>dSumWQuadratic)
12277   {
12278    dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12279    f5pCumulants->SetBinError(57,dError); 
12280   } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12281  } 
12282  f5pCumulants->SetBinContent(58,f5pCorrelations->GetBinContent(58));
12283  {
12284   Double_t dSumWLinear = 0.; // sum of linear event weights
12285   Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12286   Double_t dSpread = 0.; // weighted and biased estimator for sigma
12287   Double_t dError = 0.; // weighted and unbiased estimator for sigma
12288   dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12289   dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12290   dSpread = f5pCorrelations->GetBinError(58);
12291   if(pow(dSumWLinear,2.)>dSumWQuadratic)
12292   {
12293    dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12294    f5pCumulants->SetBinError(58,dError); 
12295   } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12296  } 
12297  f5pCumulants->SetBinContent(59,f5pCorrelations->GetBinContent(59)-2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(5));  
12298  { 
12299   Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
12300   Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
12301   Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
12302   Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
12303   Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
12304   Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
12305   Double_t dSumWLinearFive5n5n5n3n2n = 0.; // sum of linear event weights for <4>
12306   Double_t dSumWQuadraticFive5n5n5n3n2n = 0.; // sum of quadratic event weights <4>
12307   Double_t dSpreadFive5n5n5n3n2n = 0.; // weighted and biased estimator for sigma of <4>
12308   dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12309   dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12310   dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
12311   dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12312   dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12313   dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
12314   dSumWLinearFive5n5n5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12315   dSumWQuadraticFive5n5n5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12316   dSpreadFive5n5n5n3n2n = f5pCorrelations->GetBinError(59);
12317   if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
12318      pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
12319      pow(dSumWLinearFive5n5n5n3n2n,2.)>dSumWQuadraticFive5n5n5n3n2n)
12320   {
12321    Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(7),2.)
12322                    * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
12323                    * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
12324                    + 4.*pow(f2pCorrelations->GetBinContent(5),2.)
12325                    * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
12326                    * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
12327                    + pow((pow(dSumWQuadraticFive5n5n5n3n2n,0.5)/dSumWLinearFive5n5n5n3n2n)
12328                    * dSpreadFive5n5n5n3n2n*pow(pow(dSumWLinearFive5n5n5n3n2n,2.)/(pow(dSumWLinearFive5n5n5n3n2n,2.)-dSumWQuadraticFive5n5n5n3n2n),0.5),2.)
12329                    + 4.*2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(5)
12330                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
12331                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,12)) 
12332                    - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(7))
12333                    / (dSumWLinearTwo5n5n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12334                    - 2.*2.*f3pCorrelations->GetBinContent(7)
12335                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
12336                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,113))
12337                    - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(59))
12338                    / (dSumWLinearTwo5n5n*dSumWLinearFive5n5n5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12339                    - 2.*2.*f2pCorrelations->GetBinContent(5)
12340                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
12341                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,113))
12342                    - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(59))
12343                    / (dSumWLinearThree5n3n2n*dSumWLinearFive5n5n5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12344    if(dError>0.)
12345    {
12346     f5pCumulants->SetBinError(59,pow(dError,0.5)); 
12347    }
12348   } // end of if(...)
12349  } // end of {
12350  f5pCumulants->SetBinContent(60,f5pCorrelations->GetBinContent(60)-2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(5));  
12351  { 
12352   Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
12353   Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
12354   Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
12355   Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
12356   Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
12357   Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
12358   Double_t dSumWLinearFive5n5n5n4n1n = 0.; // sum of linear event weights for <4>
12359   Double_t dSumWQuadraticFive5n5n5n4n1n = 0.; // sum of quadratic event weights <4>
12360   Double_t dSpreadFive5n5n5n4n1n = 0.; // weighted and biased estimator for sigma of <4>
12361   dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12362   dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12363   dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
12364   dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12365   dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12366   dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
12367   dSumWLinearFive5n5n5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12368   dSumWQuadraticFive5n5n5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12369   dSpreadFive5n5n5n4n1n = f5pCorrelations->GetBinError(60);
12370   if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
12371      pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
12372      pow(dSumWLinearFive5n5n5n4n1n,2.)>dSumWQuadraticFive5n5n5n4n1n)
12373   {
12374    Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(8),2.)
12375                    * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
12376                    * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
12377                    + 4.*pow(f2pCorrelations->GetBinContent(5),2.)
12378                    * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
12379                    * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
12380                    + pow((pow(dSumWQuadraticFive5n5n5n4n1n,0.5)/dSumWLinearFive5n5n5n4n1n)
12381                    * dSpreadFive5n5n5n4n1n*pow(pow(dSumWLinearFive5n5n5n4n1n,2.)/(pow(dSumWLinearFive5n5n5n4n1n,2.)-dSumWQuadraticFive5n5n5n4n1n),0.5),2.)
12382                    + 4.*2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(5)
12383                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
12384                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,13)) 
12385                    - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(8))
12386                    / (dSumWLinearTwo5n5n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12387                    - 2.*2.*f3pCorrelations->GetBinContent(8)
12388                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
12389                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,114))
12390                    - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(60))
12391                    / (dSumWLinearTwo5n5n*dSumWLinearFive5n5n5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12392                    - 2.*2.*f2pCorrelations->GetBinContent(5)
12393                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
12394                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,114))
12395                    - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(60))
12396                    / (dSumWLinearThree5n4n1n*dSumWLinearFive5n5n5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12397    if(dError>0.)
12398    {
12399     f5pCumulants->SetBinError(60,pow(dError,0.5)); 
12400    }
12401   } // end of if(...)
12402  } // end of {
12403  f5pCumulants->SetBinContent(61,f5pCorrelations->GetBinContent(61));
12404  {
12405   Double_t dSumWLinear = 0.; // sum of linear event weights
12406   Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12407   Double_t dSpread = 0.; // weighted and biased estimator for sigma
12408   Double_t dError = 0.; // weighted and unbiased estimator for sigma
12409   dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12410   dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12411   dSpread = f5pCorrelations->GetBinError(61);
12412   if(pow(dSumWLinear,2.)>dSumWQuadratic)
12413   {
12414    dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12415    f5pCumulants->SetBinError(61,dError); 
12416   } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12417  } 
12418  f5pCumulants->SetBinContent(62,f5pCorrelations->GetBinContent(62));
12419  {
12420   Double_t dSumWLinear = 0.; // sum of linear event weights
12421   Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12422   Double_t dSpread = 0.; // weighted and biased estimator for sigma
12423   Double_t dError = 0.; // weighted and unbiased estimator for sigma
12424   dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12425   dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12426   dSpread = f5pCorrelations->GetBinError(62);
12427   if(pow(dSumWLinear,2.)>dSumWQuadratic)
12428   {
12429    dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12430    f5pCumulants->SetBinError(62,dError); 
12431   } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12432  } 
12433  f5pCumulants->SetBinContent(63,f5pCorrelations->GetBinContent(63));
12434  {
12435   Double_t dSumWLinear = 0.; // sum of linear event weights
12436   Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12437   Double_t dSpread = 0.; // weighted and biased estimator for sigma
12438   Double_t dError = 0.; // weighted and unbiased estimator for sigma
12439   dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12440   dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12441   dSpread = f5pCorrelations->GetBinError(63);
12442   if(pow(dSumWLinear,2.)>dSumWQuadratic)
12443   {
12444    dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12445    f5pCumulants->SetBinError(63,dError); 
12446   } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12447  } 
12448  f5pCumulants->SetBinContent(64,f5pCorrelations->GetBinContent(64)-2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(1));  
12449  { 
12450   Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
12451   Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
12452   Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
12453   Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
12454   Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
12455   Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
12456   Double_t dSumWLinearFive6n1n5n1n1n = 0.; // sum of linear event weights for <4>
12457   Double_t dSumWQuadraticFive6n1n5n1n1n = 0.; // sum of quadratic event weights <4>
12458   Double_t dSpreadFive6n1n5n1n1n = 0.; // weighted and biased estimator for sigma of <4>
12459   dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12460   dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12461   dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
12462   dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12463   dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12464   dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
12465   dSumWLinearFive6n1n5n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12466   dSumWQuadraticFive6n1n5n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12467   dSpreadFive6n1n5n1n1n = f5pCorrelations->GetBinError(64);
12468   if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
12469      pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
12470      pow(dSumWLinearFive6n1n5n1n1n,2.)>dSumWQuadraticFive6n1n5n1n1n)
12471   {
12472    Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(10),2.)
12473                    * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
12474                    * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
12475                    + 4.*pow(f2pCorrelations->GetBinContent(1),2.)
12476                    * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
12477                    * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
12478                    + pow((pow(dSumWQuadraticFive6n1n5n1n1n,0.5)/dSumWLinearFive6n1n5n1n1n)
12479                    * dSpreadFive6n1n5n1n1n*pow(pow(dSumWLinearFive6n1n5n1n1n,2.)/(pow(dSumWLinearFive6n1n5n1n1n,2.)-dSumWQuadraticFive6n1n5n1n1n),0.5),2.)
12480                    + 4.*2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(1)
12481                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
12482                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,15)) 
12483                    - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(10))
12484                    / (dSumWLinearTwo1n1n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12485                    - 2.*2.*f3pCorrelations->GetBinContent(10)
12486                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
12487                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,118))
12488                    - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(64))
12489                    / (dSumWLinearTwo1n1n*dSumWLinearFive6n1n5n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12490                    - 2.*2.*f2pCorrelations->GetBinContent(1)
12491                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
12492                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,118))
12493                    - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(64))
12494                    / (dSumWLinearThree6n5n1n*dSumWLinearFive6n1n5n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12495    if(dError>0.)
12496    {
12497     f5pCumulants->SetBinError(64,pow(dError,0.5)); 
12498    }
12499   } // end of if(...)
12500  } // end of {
12501  f5pCumulants->SetBinContent(65,f5pCorrelations->GetBinContent(65)-2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(2));  
12502  { 
12503   Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
12504   Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
12505   Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
12506   Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
12507   Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
12508   Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
12509   Double_t dSumWLinearFive6n2n4n2n2n = 0.; // sum of linear event weights for <4>
12510   Double_t dSumWQuadraticFive6n2n4n2n2n = 0.; // sum of quadratic event weights <4>
12511   Double_t dSpreadFive6n2n4n2n2n = 0.; // weighted and biased estimator for sigma of <4>
12512   dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12513   dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12514   dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
12515   dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12516   dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12517   dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
12518   dSumWLinearFive6n2n4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12519   dSumWQuadraticFive6n2n4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12520   dSpreadFive6n2n4n2n2n = f5pCorrelations->GetBinError(65);
12521   if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
12522      pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
12523      pow(dSumWLinearFive6n2n4n2n2n,2.)>dSumWQuadraticFive6n2n4n2n2n)
12524   {
12525    Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(9),2.)
12526                    * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
12527                    * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
12528                    + 4.*pow(f2pCorrelations->GetBinContent(2),2.)
12529                    * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
12530                    * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
12531                    + pow((pow(dSumWQuadraticFive6n2n4n2n2n,0.5)/dSumWLinearFive6n2n4n2n2n)
12532                    * dSpreadFive6n2n4n2n2n*pow(pow(dSumWLinearFive6n2n4n2n2n,2.)/(pow(dSumWLinearFive6n2n4n2n2n,2.)-dSumWQuadraticFive6n2n4n2n2n),0.5),2.)
12533                    + 4.*2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(2)
12534                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
12535                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,14)) 
12536                    - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(9))
12537                    / (dSumWLinearTwo2n2n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12538                    - 2.*2.*f3pCorrelations->GetBinContent(9)
12539                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
12540                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,119))
12541                    - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(65))
12542                    / (dSumWLinearTwo2n2n*dSumWLinearFive6n2n4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12543                    - 2.*2.*f2pCorrelations->GetBinContent(2)
12544                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
12545                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,119))
12546                    - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(65))
12547                    / (dSumWLinearThree6n4n2n*dSumWLinearFive6n2n4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12548    if(dError>0.)
12549    {
12550     f5pCumulants->SetBinError(65,pow(dError,0.5)); 
12551    }
12552   } // end of if(...)
12553  } // end of {
12554  f5pCumulants->SetBinContent(66,f5pCorrelations->GetBinContent(66)-2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(4));
12555  { 
12556   Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
12557   Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
12558   Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
12559   Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
12560   Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
12561   Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
12562   Double_t dSumWLinearFive6n4n4n4n2n = 0.; // sum of linear event weights for <4>
12563   Double_t dSumWQuadraticFive6n4n4n4n2n = 0.; // sum of quadratic event weights <4>
12564   Double_t dSpreadFive6n4n4n4n2n = 0.; // weighted and biased estimator for sigma of <4>
12565   dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12566   dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12567   dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
12568   dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12569   dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12570   dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
12571   dSumWLinearFive6n4n4n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12572   dSumWQuadraticFive6n4n4n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12573   dSpreadFive6n4n4n4n2n = f5pCorrelations->GetBinError(66);
12574   if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
12575      pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
12576      pow(dSumWLinearFive6n4n4n4n2n,2.)>dSumWQuadraticFive6n4n4n4n2n)
12577   {
12578    Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(9),2.)
12579                    * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
12580                    * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
12581                    + 4.*pow(f2pCorrelations->GetBinContent(4),2.)
12582                    * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
12583                    * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
12584                    + pow((pow(dSumWQuadraticFive6n4n4n4n2n,0.5)/dSumWLinearFive6n4n4n4n2n)
12585                    * dSpreadFive6n4n4n4n2n*pow(pow(dSumWLinearFive6n4n4n4n2n,2.)/(pow(dSumWLinearFive6n4n4n4n2n,2.)-dSumWQuadraticFive6n4n4n4n2n),0.5),2.)
12586                    + 4.*2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(4)
12587                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
12588                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,14)) 
12589                    - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(9))
12590                    / (dSumWLinearTwo4n4n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12591                    - 2.*2.*f3pCorrelations->GetBinContent(9)
12592                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
12593                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,120))
12594                    - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(66))
12595                    / (dSumWLinearTwo4n4n*dSumWLinearFive6n4n4n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12596                    - 2.*2.*f2pCorrelations->GetBinContent(4)
12597                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
12598                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,120))
12599                    - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(66))
12600                    / (dSumWLinearThree6n4n2n*dSumWLinearFive6n4n4n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12601    if(dError>0.)
12602    {
12603     f5pCumulants->SetBinError(66,pow(dError,0.5)); 
12604    }
12605   } // end of if(...)
12606  } // end of {  
12607  f5pCumulants->SetBinContent(67,f5pCorrelations->GetBinContent(67));
12608  {
12609   Double_t dSumWLinear = 0.; // sum of linear event weights
12610   Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12611   Double_t dSpread = 0.; // weighted and biased estimator for sigma
12612   Double_t dError = 0.; // weighted and unbiased estimator for sigma
12613   dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12614   dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12615   dSpread = f5pCorrelations->GetBinError(67);
12616   if(pow(dSumWLinear,2.)>dSumWQuadratic)
12617   {
12618    dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12619    f5pCumulants->SetBinError(67,dError); 
12620   } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12621  }  
12622  f5pCumulants->SetBinContent(68,f5pCorrelations->GetBinContent(68)-2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(5));  
12623  { 
12624   Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
12625   Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
12626   Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
12627   Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
12628   Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
12629   Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
12630   Double_t dSumWLinearFive6n5n5n5n1n = 0.; // sum of linear event weights for <4>
12631   Double_t dSumWQuadraticFive6n5n5n5n1n = 0.; // sum of quadratic event weights <4>
12632   Double_t dSpreadFive6n5n5n5n1n = 0.; // weighted and biased estimator for sigma of <4>
12633   dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12634   dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12635   dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
12636   dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12637   dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12638   dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
12639   dSumWLinearFive6n5n5n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12640   dSumWQuadraticFive6n5n5n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12641   dSpreadFive6n5n5n5n1n = f5pCorrelations->GetBinError(68);
12642   if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
12643      pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
12644      pow(dSumWLinearFive6n5n5n5n1n,2.)>dSumWQuadraticFive6n5n5n5n1n)
12645   {
12646    Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(10),2.)
12647                    * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
12648                    * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
12649                    + 4.*pow(f2pCorrelations->GetBinContent(5),2.)
12650                    * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
12651                    * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
12652                    + pow((pow(dSumWQuadraticFive6n5n5n5n1n,0.5)/dSumWLinearFive6n5n5n5n1n)
12653                    * dSpreadFive6n5n5n5n1n*pow(pow(dSumWLinearFive6n5n5n5n1n,2.)/(pow(dSumWLinearFive6n5n5n5n1n,2.)-dSumWQuadraticFive6n5n5n5n1n),0.5),2.)
12654                    + 4.*2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(5)
12655                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
12656                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,15)) 
12657                    - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(10))
12658                    / (dSumWLinearTwo5n5n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12659                    - 2.*2.*f3pCorrelations->GetBinContent(10)
12660                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
12661                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,122))
12662                    - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(68))
12663                    / (dSumWLinearTwo5n5n*dSumWLinearFive6n5n5n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12664                    - 2.*2.*f2pCorrelations->GetBinContent(5)
12665                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
12666                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,122))
12667                    - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(68))
12668                    / (dSumWLinearThree6n5n1n*dSumWLinearFive6n5n5n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12669    if(dError>0.)
12670    {
12671     f5pCumulants->SetBinError(68,pow(dError,0.5)); 
12672    }
12673   } // end of if(...)
12674  } // end of {
12675  f5pCumulants->SetBinContent(69,f5pCorrelations->GetBinContent(69));
12676  {
12677   Double_t dSumWLinear = 0.; // sum of linear event weights
12678   Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12679   Double_t dSpread = 0.; // weighted and biased estimator for sigma
12680   Double_t dError = 0.; // weighted and unbiased estimator for sigma
12681   dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12682   dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12683   dSpread = f5pCorrelations->GetBinError(69);
12684   if(pow(dSumWLinear,2.)>dSumWQuadratic)
12685   {
12686    dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12687    f5pCumulants->SetBinError(69,dError); 
12688   } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12689  } 
12690  f5pCumulants->SetBinContent(70,f5pCorrelations->GetBinContent(70)-2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(6));  
12691  { 
12692   Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
12693   Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
12694   Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
12695   Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
12696   Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
12697   Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
12698   Double_t dSumWLinearFive6n6n6n4n2n = 0.; // sum of linear event weights for <4>
12699   Double_t dSumWQuadraticFive6n6n6n4n2n = 0.; // sum of quadratic event weights <4>
12700   Double_t dSpreadFive6n6n6n4n2n = 0.; // weighted and biased estimator for sigma of <4>
12701   dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12702   dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12703   dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
12704   dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12705   dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12706   dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
12707   dSumWLinearFive6n6n6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12708   dSumWQuadraticFive6n6n6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12709   dSpreadFive6n6n6n4n2n = f5pCorrelations->GetBinError(70);
12710   if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
12711      pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
12712      pow(dSumWLinearFive6n6n6n4n2n,2.)>dSumWQuadraticFive6n6n6n4n2n)
12713   {
12714    Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(9),2.)
12715                    * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
12716                    * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
12717                    + 4.*pow(f2pCorrelations->GetBinContent(6),2.)
12718                    * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
12719                    * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
12720                    + pow((pow(dSumWQuadraticFive6n6n6n4n2n,0.5)/dSumWLinearFive6n6n6n4n2n)
12721                    * dSpreadFive6n6n6n4n2n*pow(pow(dSumWLinearFive6n6n6n4n2n,2.)/(pow(dSumWLinearFive6n6n6n4n2n,2.)-dSumWQuadraticFive6n6n6n4n2n),0.5),2.)
12722                    + 4.*2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(6)
12723                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
12724                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,14)) 
12725                    - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(9))
12726                    / (dSumWLinearTwo6n6n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12727                    - 2.*2.*f3pCorrelations->GetBinContent(9)
12728                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
12729                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,124))
12730                    - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(70))
12731                    / (dSumWLinearTwo6n6n*dSumWLinearFive6n6n6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12732                    - 2.*2.*f2pCorrelations->GetBinContent(6)
12733                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
12734                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,124))
12735                    - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(70))
12736                    / (dSumWLinearThree6n4n2n*dSumWLinearFive6n6n6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12737    if(dError>0.)
12738    {
12739     f5pCumulants->SetBinError(70,pow(dError,0.5)); 
12740    }
12741   } // end of if(...)
12742  } // end of {
12743
12744
12745
12746
12747
12748  f5pCumulants->SetBinContent(71,f5pCorrelations->GetBinContent(71)-2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(6));  
12749  { 
12750   Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
12751   Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
12752   Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
12753   Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
12754   Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
12755   Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
12756   Double_t dSumWLinearFive6n6n6n5n1n = 0.; // sum of linear event weights for <4>
12757   Double_t dSumWQuadraticFive6n6n6n5n1n = 0.; // sum of quadratic event weights <4>
12758   Double_t dSpreadFive6n6n6n5n1n = 0.; // weighted and biased estimator for sigma of <4>
12759   dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12760   dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12761   dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
12762   dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12763   dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12764   dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
12765   dSumWLinearFive6n6n6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12766   dSumWQuadraticFive6n6n6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12767   dSpreadFive6n6n6n5n1n = f5pCorrelations->GetBinError(71);
12768   if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
12769      pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
12770      pow(dSumWLinearFive6n6n6n5n1n,2.)>dSumWQuadraticFive6n6n6n5n1n)
12771   {
12772    Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(10),2.)
12773                    * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
12774                    * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
12775                    + 4.*pow(f2pCorrelations->GetBinContent(6),2.)
12776                    * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
12777                    * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
12778                    + pow((pow(dSumWQuadraticFive6n6n6n5n1n,0.5)/dSumWLinearFive6n6n6n5n1n)
12779                    * dSpreadFive6n6n6n5n1n*pow(pow(dSumWLinearFive6n6n6n5n1n,2.)/(pow(dSumWLinearFive6n6n6n5n1n,2.)-dSumWQuadraticFive6n6n6n5n1n),0.5),2.)
12780                    + 4.*2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(6)
12781                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)) 
12782                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,15)) 
12783                    - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(10))
12784                    / (dSumWLinearTwo6n6n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12785                    - 2.*2.*f3pCorrelations->GetBinContent(10)
12786                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)) 
12787                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,125))
12788                    - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(71))
12789                    / (dSumWLinearTwo6n6n*dSumWLinearFive6n6n6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12790                    - 2.*2.*f2pCorrelations->GetBinContent(6)
12791                    * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)) 
12792                    * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,125))
12793                    - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(71))
12794                    / (dSumWLinearThree6n5n1n*dSumWLinearFive6n6n6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12795    if(dError>0.)
12796    {
12797     f5pCumulants->SetBinError(71,pow(dError,0.5)); 
12798    }
12799   } // end of if(...)
12800  } // end of {
12801  // d3) "Four distinct harmonics":
12802  for(Int_t b=73;b<=83;b++)
12803  {
12804   f5pCumulants->SetBinContent(b,f5pCorrelations->GetBinContent(b));
12805   Double_t dSumWLinear = 0.; // sum of linear event weights
12806   Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12807   Double_t dSpread = 0.; // weighted and biased estimator for sigma
12808   Double_t dError = 0.; // weighted and unbiased estimator for sigma
12809   dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12810   dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12811   dSpread = f5pCorrelations->GetBinError(b);
12812   if(pow(dSumWLinear,2.)>dSumWQuadratic)
12813   {
12814    dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12815    f5pCumulants->SetBinError(b,dError); 
12816   } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12817  } // end of for(Int_t b=73;b<=83;b++)
12818  // d4) "Five distinct harmonics":
12819  for(Int_t b=85;b<=87;b++)
12820  {
12821   f5pCumulants->SetBinContent(b,f5pCorrelations->GetBinContent(b));
12822   Double_t dSumWLinear = 0.; // sum of linear event weights
12823   Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12824   Double_t dSpread = 0.; // weighted and biased estimator for sigma
12825   Double_t dError = 0.; // weighted and unbiased estimator for sigma
12826   dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12827   dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12828   dSpread = f5pCorrelations->GetBinError(b);
12829   if(pow(dSumWLinear,2.)>dSumWQuadratic)
12830   {
12831    dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12832    f5pCumulants->SetBinError(b,dError); 
12833   } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12834  } // end of for(Int_t b=85;b<=87;b++)
12835
12836 } // end of void AliFlowAnalysisWithQCumulants::CalculateCumulantsMixedHarmonics()
12837
12838 //===================================================================================================================
12839
12840 void AliFlowAnalysisWithQCumulants::StorePhiDistributionForOneEvent(AliFlowEventSimple *anEvent)
12841 {
12842  // Store phi distribution for one event to illustrate flow.
12843  
12844  if(fPhiDistributionForOneEvent->GetEntries()>0){return;} // store only phi distribution for one event
12845  
12846  Double_t vMin = fPhiDistributionForOneEventSettings[0]; 
12847  Double_t vMax = fPhiDistributionForOneEventSettings[1]; 
12848  Double_t refMultMin = fPhiDistributionForOneEventSettings[2]; 
12849  Double_t refMultMax = fPhiDistributionForOneEventSettings[3]; 
12850  
12851  Double_t vEBE = 0.;
12852  Double_t cumulant4thEBE = fIntFlowCorrelationsEBE->GetBinContent(2)-2.*pow(fIntFlowCorrelationsEBE->GetBinContent(1),2.);
12853  if(cumulant4thEBE<0.)
12854  {
12855   vEBE = pow(-1.*cumulant4thEBE,0.25);
12856   if((vEBE>vMin && vEBE<vMax) && (fReferenceMultiplicityEBE>refMultMin && fReferenceMultiplicityEBE<refMultMax))
12857   {
12858    fPhiDistributionForOneEvent->SetTitle(Form("v_{%i} = %f",fHarmonic,vEBE));
12859    for(Int_t p=0;p<anEvent->NumberOfTracks();p++)
12860    {
12861     if(anEvent->GetTrack(p)->InRPSelection())
12862     {
12863      fPhiDistributionForOneEvent->Fill(anEvent->GetTrack(p)->Phi());
12864     }
12865    } // end of for(Int_t p=0;p<anEvent->NumberOfTracks();p++)
12866   } else
12867     {
12868      fPhiDistributionForOneEvent->SetTitle(Form("v_{%i} = %f, out of specified boundaries",fHarmonic,vEBE));  
12869     } 
12870    
12871  } // end of if(cumulant4thEBE<0.)
12872  
12873 } // end of void AliFlowAnalysisWithQCumulants::StorePhiDistributionForOneEvent(AliFlowEventSimple *anEvent)
12874
12875 //===================================================================================================================
12876
12877 void AliFlowAnalysisWithQCumulants::CalculateIntFlowProductOfCorrelations()
12878 {
12879  // Calculate averages of products of correlations for integrated flow.
12880
12881  // Multiplicity bin of an event (relevant for all histos vs M): 
12882  Double_t dMultiplicityBin = 0.;
12883  if(fMultiplicityIs==AliFlowCommonConstants::kRP)
12884  {
12885   dMultiplicityBin = fNumberOfRPsEBE+0.5;
12886  } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
12887    {
12888     dMultiplicityBin = fReferenceMultiplicityEBE+0.5;
12889    } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
12890      {
12891       dMultiplicityBin = fNumberOfPOIsEBE+0.5;
12892      }
12893
12894  Int_t counter = 0;
12895  
12896  for(Int_t ci1=1;ci1<4;ci1++)
12897  {
12898   for(Int_t ci2=ci1+1;ci2<=4;ci2++)
12899   {
12900    fIntFlowProductOfCorrelationsPro->Fill(0.5+counter,
12901                                           fIntFlowCorrelationsEBE->GetBinContent(ci1)*
12902                                           fIntFlowCorrelationsEBE->GetBinContent(ci2),
12903                                           fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci1)*
12904                                           fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci2));
12905    // products versus multiplicity:  // [0=<<2><4>>,1=<<2><6>>,2=<<2><8>>,3=<<4><6>>,4=<<4><8>>,5=<<6><8>>]
12906    if(fCalculateCumulantsVsM)
12907    {
12908     fIntFlowProductOfCorrelationsVsMPro[counter]->Fill(dMultiplicityBin, // to be improved: dMult => sum of weights ?
12909                                                        fIntFlowCorrelationsEBE->GetBinContent(ci1)*
12910                                                        fIntFlowCorrelationsEBE->GetBinContent(ci2),
12911                                                        fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci1)*
12912                                                        fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci2));
12913    } // end of if(fCalculateCumulantsVsM)
12914    counter++;                                                                                                                        
12915   }
12916  }
12917  
12918 } // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowProductOfCorrelations()
12919
12920
12921 //=======================================================================================================================
12922
12923
12924 void AliFlowAnalysisWithQCumulants::CalculateIntFlowProductOfCorrectionTermsForNUA()
12925 {
12926  // Calculate averages of products of correction terms for NUA.
12927  
12928  // a) Binning of fIntFlowProductOfCorrectionTermsForNUAPro is organized as follows:
12929  //     1st bin: <<2><cos(phi)>> 
12930  //     2nd bin: <<2><sin(phi)>>
12931  //     3rd bin: <<cos(phi)><sin(phi)>>
12932  //     4th bin: <<2><cos(phi1+phi2)>> 
12933  //     5th bin: <<2><sin(phi1+phi2)>>
12934  //     6th bin: <<2><cos(phi1-phi2-phi3)>> 
12935  //     7th bin: <<2><sin(phi1-phi2-phi3)>>
12936  //     8th bin: <<4><cos(phi1)>>
12937  //     9th bin: <<4><sin(phi1)>>
12938  //    10th bin: <<4><cos(phi1+phi2)>>
12939  //    11th bin: <<4><sin(phi1+phi2)>>
12940  //    12th bin: <<4><cos(phi1-phi2-phi3)>>
12941  //    13th bin: <<4><sin(phi1-phi2-phi3)>>
12942  //    14th bin: <<cos(phi1)><cos(phi1+phi2)>>
12943  //    15th bin: <<cos(phi1)><sin(phi1+phi2)>> 
12944  //    16th bin: <<cos(phi1)><cos(phi1-phi2-phi3)>>
12945  //    17th bin: <<cos(phi1)><sin(phi1-phi2-phi3)>> 
12946  //    18th bin: <<sin(phi1)><cos(phi1+phi2)>>
12947  //    19th bin: <<sin(phi1)><sin(phi1+phi2)>> 
12948  //    20th bin: <<sin(phi1)><cos(phi1-phi2-phi3)>>
12949  //    21st bin: <<sin(phi1)><sin(phi1-phi2-phi3)>>
12950  //    22nd bin: <<cos(phi1+phi2)><sin(phi1+phi2)>>
12951  //    23rd bin: <<cos(phi1+phi2)><cos(phi1-phi2-phi3)>>
12952  //    24th bin: <<cos(phi1+phi2)><sin(phi1-phi2-phi3)>>
12953  //    25th bin: <<sin(phi1+phi2)><cos(phi1-phi2-phi3)>>
12954  //    26th bin: <<sin(phi1+phi2)><sin(phi1-phi2-phi3)>>
12955  //    27th bin: <<cos(phi1-phi2-phi3)><sin(phi1-phi2-phi3)>>
12956  
12957  // <<2><cos(phi)>>:
12958  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(0.5,
12959                                                  fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1),
12960                                                  fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
12961                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1));
12962  // <<2><sin(phi)>>:
12963  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(1.5,
12964                                                  fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1),
12965                                                  fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
12966                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
12967  // <<cos(phi)><sin(phi)>>:
12968  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(2.5,
12969                                                  fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1),
12970                                                  fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)
12971                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
12972  // <<2><cos(phi1+phi2)>>:
12973  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(3.5,
12974                                                  fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2),
12975                                                  fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
12976                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)); 
12977  // <<2><sin(phi1+phi2)>>:
12978  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(4.5,
12979                                                  fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2),
12980                                                  fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
12981                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2)); 
12982  // <<2><cos(phi1-phi2-phi3)>>:
12983  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(5.5,
12984                                                  fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
12985                                                  fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
12986                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3)); 
12987  // <<2><sin(phi1-phi2-phi3)>>:
12988  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(6.5,
12989                                                  fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
12990                                                  fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
12991                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3)); 
12992  // <<4><cos(phi1)>>:
12993  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(7.5,
12994                                                  fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1),
12995                                                  fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
12996                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1));
12997  // <<4><sin(phi1)>>:
12998  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(8.5,
12999                                                  fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1),
13000                                                  fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
13001                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
13002  // <<4><cos(phi1+phi2)>>:
13003  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(9.5,
13004                                                  fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2),
13005                                                  fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
13006                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)); 
13007  // <<4><sin(phi1+phi2)>>:
13008  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(10.5,
13009                                                  fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2),
13010                                                  fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
13011                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
13012  // <<4><cos(phi1-phi2-phi3)>>:
13013  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(11.5,
13014                                                  fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
13015                                                  fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
13016                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3)); 
13017  // <<4><sin(phi1-phi2-phi3)>>:
13018  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(12.5,
13019                                                  fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
13020                                                  fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
13021                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));   
13022  // <<cos(phi1)><cos(phi1+phi2)>>:
13023  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(13.5,
13024                                                  fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2),
13025                                                  fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)
13026                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)); 
13027  // <<cos(phi1)><sin(phi1+phi2)>>: 
13028  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(14.5,
13029                                                  fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2),
13030                                                  fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)
13031                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2)); 
13032  // <<cos(phi1)><cos(phi1-phi2-phi3)>>:
13033  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(15.5,
13034                                                  fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
13035                                                  fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)
13036                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3)); 
13037  // <<cos(phi1)><sin(phi1-phi2-phi3)>>: 
13038  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(16.5,
13039                                                  fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
13040                                                  fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)
13041                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));  
13042  // <<sin(phi1)><cos(phi1+phi2)>>:
13043  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(17.5,
13044                                                  fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2),
13045                                                  fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)
13046                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));  
13047  // <<sin(phi1)><sin(phi1+phi2)>>: 
13048  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(18.5,
13049                                                  fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2),
13050                                                  fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)
13051                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));  
13052  // <<sin(phi1)><cos(phi1-phi2-phi3)>>:
13053  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(19.5,
13054                                                  fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
13055                                                  fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)
13056                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3)); 
13057  // <<sin(phi1)><sin(phi1-phi2-phi3)>>:
13058  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(20.5,
13059                                                  fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
13060                                                  fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)
13061                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3)); 
13062  // <<cos(phi1+phi2)><sin(phi1+phi2)>>:
13063  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(21.5,
13064                                                  fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2),
13065                                                  fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)
13066                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2)); 
13067  // <<cos(phi1+phi2)><cos(phi1-phi2-phi3)>>:
13068  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(22.5,
13069                                                  fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
13070                                                  fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)
13071                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));   
13072  // <<cos(phi1+phi2)><sin(phi1-phi2-phi3)>>:
13073  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(23.5,
13074                                                  fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
13075                                                  fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)
13076                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));    
13077  // <<sin(phi1+phi2)><cos(phi1-phi2-phi3)>>:
13078  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(24.5,
13079                                                  fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
13080                                                  fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2)
13081                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));    
13082  // <<sin(phi1+phi2)><sin(phi1-phi2-phi3)>>:
13083  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(25.5,
13084                                                  fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
13085                                                  fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2)
13086                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));    
13087  // <<cos(phi1-phi2-phi3)><sin(phi1-phi2-phi3)>>:
13088  fIntFlowProductOfCorrectionTermsForNUAPro->Fill(26.5,
13089                                                  fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
13090                                                  fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3)
13091                                                  *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));    
13092
13093 } // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowProductOfCorrectionTermsForNUA()
13094
13095 //=======================================================================================================================
13096
13097 void AliFlowAnalysisWithQCumulants::CalculateCovariancesIntFlow()
13098 {
13099  // a) Calculate unbiased estimators Cov(<2>,<4>), Cov(<2>,<6>), Cov(<2>,<8>), Cov(<4>,<6>), Cov(<4>,<8>) and Cov(<6>,<8>)
13100  //    for covariances V_(<2>,<4>), V_(<2>,<6>), V_(<2>,<8>), V_(<4>,<6>), V_(<4>,<8>) and V_(<6>,<8>).
13101  // b) Store in histogram fIntFlowCovariances for instance the following: 
13102  //
13103  //             Cov(<2>,<4>) * (sum_{i=1}^{N} w_{<2>}_i w_{<4>}_i )/[(sum_{i=1}^{N} w_{<2>}_i) * (sum_{j=1}^{N} w_{<4>}_j)]
13104  // 
13105  //    where N is the number of events, w_{<2>} is event weight for <2> and w_{<4>} is event weight for <4>.
13106  // c) Binning of fIntFlowCovariances is organized as follows:
13107  // 
13108  //     1st bin: Cov(<2>,<4>) * (sum_{i=1}^{N} w_{<2>}_i w_{<4>}_i )/[(sum_{i=1}^{N} w_{<2>}_i) * (sum_{j=1}^{N} w_{<4>}_j)] 
13109  //     2nd bin: Cov(<2>,<6>) * (sum_{i=1}^{N} w_{<2>}_i w_{<6>}_i )/[(sum_{i=1}^{N} w_{<2>}_i) * (sum_{j=1}^{N} w_{<6>}_j)]
13110  //     3rd bin: Cov(<2>,<8>) * (sum_{i=1}^{N} w_{<2>}_i w_{<8>}_i )/[(sum_{i=1}^{N} w_{<2>}_i) * (sum_{j=1}^{N} w_{<8>}_j)]
13111  //     4th bin: Cov(<4>,<6>) * (sum_{i=1}^{N} w_{<4>}_i w_{<6>}_i )/[(sum_{i=1}^{N} w_{<4>}_i) * (sum_{j=1}^{N} w_{<6>}_j)]
13112  //     5th bin: Cov(<4>,<8>) * (sum_{i=1}^{N} w_{<4>}_i w_{<8>}_i )/[(sum_{i=1}^{N} w_{<4>}_i) * (sum_{j=1}^{N} w_{<8>}_j)]
13113  //     6th bin: Cov(<6>,<8>) * (sum_{i=1}^{N} w_{<6>}_i w_{<8>}_i )/[(sum_{i=1}^{N} w_{<6>}_i) * (sum_{j=1}^{N} w_{<8>}_j)]
13114  //
13115     
13116  // Average 2-, 4-, 6- and 8-particle correlations for all events:
13117  Double_t correlation[4] = {0.};
13118  for(Int_t ci=0;ci<4;ci++)
13119  {
13120   correlation[ci] = fIntFlowCorrelationsPro->GetBinContent(ci+1);
13121  } 
13122  // Average products of 2-, 4-, 6- and 8-particle correlations: 
13123  Double_t productOfCorrelations[4][4] = {{0.}};
13124  Int_t productOfCorrelationsLabel = 1;
13125  // Denominators in the expressions for the unbiased estimator for covariance:
13126  Double_t denominator[4][4] = {{0.}};
13127  Int_t sumOfProductOfEventWeightsLabel1 = 1;
13128  // Weight dependent prefactor which multiply unbiased estimators for covariances:
13129  Double_t wPrefactor[4][4] = {{0.}}; 
13130  Int_t sumOfProductOfEventWeightsLabel2 = 1;
13131  for(Int_t c1=0;c1<4;c1++)
13132  {
13133   for(Int_t c2=c1+1;c2<4;c2++)
13134   {
13135    productOfCorrelations[c1][c2] = fIntFlowProductOfCorrelationsPro->GetBinContent(productOfCorrelationsLabel);
13136    if(TMath::Abs(fIntFlowSumOfEventWeights[0]->GetBinContent(c1+1)) > 1.e-44 && TMath::Abs(fIntFlowSumOfEventWeights[0]->GetBinContent(c2+1)) > 1.e-44)
13137    {
13138     denominator[c1][c2] = 1.-(fIntFlowSumOfProductOfEventWeights->GetBinContent(sumOfProductOfEventWeightsLabel1))
13139                         / (fIntFlowSumOfEventWeights[0]->GetBinContent(c1+1) 
13140                         * fIntFlowSumOfEventWeights[0]->GetBinContent(c2+1));                              
13141     wPrefactor[c1][c2] = fIntFlowSumOfProductOfEventWeights->GetBinContent(sumOfProductOfEventWeightsLabel2)
13142                        / (fIntFlowSumOfEventWeights[0]->GetBinContent(c1+1)
13143                        * fIntFlowSumOfEventWeights[0]->GetBinContent(c2+1));                                                       
13144    }
13145    productOfCorrelationsLabel++; // to be improved - do I need here all 3 counters?
13146    sumOfProductOfEventWeightsLabel1++;
13147    sumOfProductOfEventWeightsLabel2++;  
13148   } // end of for(Int_t c2=c1+1;c2<4;c2++)
13149  } // end of for(Int_t c1=0;c1<4;c1++)
13150  
13151  Int_t covarianceLabel = 1;
13152  for(Int_t c1=0;c1<4;c1++)
13153  {
13154   for(Int_t c2=c1+1;c2<4;c2++)
13155   {
13156    if(TMath::Abs(denominator[c1][c2]) > 1.e-44)
13157    {
13158     // Covariances:
13159     Double_t cov = (productOfCorrelations[c1][c2]-correlation[c1]*correlation[c2])/denominator[c1][c2]; 
13160     // Covariances multiplied with weight dependent prefactor:
13161     Double_t wCov = cov * wPrefactor[c1][c2];
13162     fIntFlowCovariances->SetBinContent(covarianceLabel,wCov);
13163    }
13164    covarianceLabel++;
13165   } // end of for(Int_t c2=c1+1;c2<4;c2++) 
13166  } // end of for(Int_t c1=0;c1<4;c1++)
13167  
13168  // Versus multiplicity: 
13169  if(!fCalculateCumulantsVsM){return;}
13170  Int_t nBins = fIntFlowCorrelationsVsMPro[0]->GetNbinsX(); // to be improved (hardwired 0) 
13171  for(Int_t b=1;b<=nBins;b++)
13172  {
13173   // Average 2-, 4-, 6- and 8-particle correlations for all events:
13174   Double_t correlationVsM[4] = {0.};
13175   for(Int_t ci=0;ci<4;ci++)
13176   {
13177    correlationVsM[ci] = fIntFlowCorrelationsVsMPro[ci]->GetBinContent(b);
13178   } // end of for(Int_t ci=0;ci<4;ci++)
13179   // Average products of 2-, 4-, 6- and 8-particle correlations: 
13180   Double_t productOfCorrelationsVsM[4][4] = {{0.}};
13181   Int_t productOfCorrelationsLabelVsM = 1;
13182   // Denominators in the expressions for the unbiased estimator for covariance:
13183   Double_t denominatorVsM[4][4] = {{0.}};
13184   Int_t sumOfProductOfEventWeightsLabel1VsM = 1;
13185   // Weight dependent prefactor which multiply unbiased estimators for covariances:
13186   Double_t wPrefactorVsM[4][4] = {{0.}}; 
13187   Int_t sumOfProductOfEventWeightsLabel2VsM = 1;
13188   for(Int_t c1=0;c1<4;c1++)
13189   {
13190    for(Int_t c2=c1+1;c2<4;c2++)
13191    {
13192     productOfCorrelationsVsM[c1][c2] = fIntFlowProductOfCorrelationsVsMPro[productOfCorrelationsLabelVsM-1]->GetBinContent(b);
13193     if(TMath::Abs(fIntFlowSumOfEventWeightsVsM[c1][0]->GetBinContent(b)) > 1.e-44 && TMath::Abs(fIntFlowSumOfEventWeightsVsM[c2][0]->GetBinContent(b)) > 1.e-44)
13194     {
13195      denominatorVsM[c1][c2] = 1.-(fIntFlowSumOfProductOfEventWeightsVsM[sumOfProductOfEventWeightsLabel1VsM-1]->GetBinContent(b))
13196                             / (fIntFlowSumOfEventWeightsVsM[c1][0]->GetBinContent(b) 
13197                             * fIntFlowSumOfEventWeightsVsM[c2][0]->GetBinContent(b));                              
13198      wPrefactorVsM[c1][c2] = fIntFlowSumOfProductOfEventWeightsVsM[sumOfProductOfEventWeightsLabel2VsM-1]->GetBinContent(b)
13199                            / (fIntFlowSumOfEventWeightsVsM[c1][0]->GetBinContent(b)
13200                            * fIntFlowSumOfEventWeightsVsM[c2][0]->GetBinContent(b));                                                       
13201     }
13202     productOfCorrelationsLabelVsM++;
13203     sumOfProductOfEventWeightsLabel1VsM++;
13204     sumOfProductOfEventWeightsLabel2VsM++;  
13205    } // end of for(Int_t c1=0;c1<4;c1++) 
13206   } // end of for(Int_t c2=c1+1;c2<4;c2++)
13207  
13208   Int_t covarianceLabelVsM = 1;
13209   for(Int_t c1=0;c1<4;c1++)
13210   {
13211    for(Int_t c2=c1+1;c2<4;c2++)
13212    {
13213     if(TMath::Abs(denominatorVsM[c1][c2]) > 1.e-44)
13214     {
13215      // Covariances:
13216      Double_t covVsM = (productOfCorrelationsVsM[c1][c2]-correlationVsM[c1]*correlationVsM[c2])/denominatorVsM[c1][c2]; 
13217      // Covariances multiplied with weight dependent prefactor:
13218      Double_t wCovVsM = covVsM * wPrefactorVsM[c1][c2];
13219      fIntFlowCovariancesVsM[covarianceLabelVsM-1]->SetBinContent(b,wCovVsM);
13220     }
13221     covarianceLabelVsM++;
13222    } // end of for(Int_t c2=c1+1;c2<4;c2++)
13223   } // end of for(Int_t c1=0;c1<4;c1++)
13224  } // end of for(Int_t b=1;b<=nBins;b++)
13225   
13226 } // end of AliFlowAnalysisWithQCumulants::CalculateCovariancesIntFlow()
13227
13228 //=======================================================================================================================
13229
13230 void AliFlowAnalysisWithQCumulants::CalculateCovariancesNUAIntFlow()
13231 {
13232  // a) Calculate unbiased estimators Cov(*,*) for true covariances V_(*,*) for NUA terms.
13233  // b) Store in histogram fIntFlowCovariancesNUA for instance the following: 
13234  //
13235  //             Cov(<2>,<cos(phi)>) * (sum_{i=1}^{N} w_{<2>}_i w_{<cos(phi)>}_i )/[(sum_{i=1}^{N} w_{<2>}_i) * (sum_{j=1}^{N} w_{<cos(phi)>}_j)]
13236  // 
13237  //    where N is the number of events, w_{<2>} is event weight for <2> and w_{<cos(phi)>} is event weight for <cos(phi)>.
13238  // c) Binning of fIntFlowCovariancesNUA is organized as follows:
13239  // 
13240  //     1st bin: Cov(<2>,<cos(phi)>) * (sum_{i=1}^{N} w_{<2>}_i w_{<cos(phi)>}_i )/[(sum_{i=1}^{N} w_{<2>}_i) * (sum_{j=1}^{N} w_{<cos(phi)>}_j)] 
13241  //     2nd bin: Cov(<2>,<sin(phi)>) * (sum_{i=1}^{N} w_{<2>}_i w_{<sin(phi)>}_i )/[(sum_{i=1}^{N} w_{<2>}_i) * (sum_{j=1}^{N} w_{<sin(phi)>}_j)]
13242  //     3rd bin: Cov(<cos(phi)>,<sin(phi)>) * (sum_{i=1}^{N} w_{<cos(phi)>}_i w_{<sin(phi)>}_i )/[(sum_{i=1}^{N} w_{<cos(phi)>}_i) * (sum_{j=1}^{N} w_{<sin(phi)>}_j)]
13243  // ...
13244       
13245  // Cov(<2>,<cos(phi)>):
13246  Double_t product1 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(1); // <<2><cos(phi)>> 
13247  Double_t term1st1 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13248  Double_t term2nd1 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi)>>
13249  Double_t sumOfW1st1 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13250  Double_t sumOfW2nd1 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi)>}
13251  Double_t sumOfWW1 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(1); // W_{<2>} * W_{<cos(phi)>}
13252  // numerator in the expression for the the unbiased estimator for covariance:
13253  Double_t numerator1 = product1 - term1st1*term2nd1; 
13254  // denominator in the expression for the the unbiased estimator for covariance:
13255  Double_t denominator1 = 0.;
13256  if(TMath::Abs(sumOfW1st1*sumOfW2nd1)>0.)
13257  {
13258   denominator1 = 1.-sumOfWW1/(sumOfW1st1*sumOfW2nd1);
13259   if(TMath::Abs(denominator1)>0.)
13260   {
13261    // covariance:
13262    Double_t covariance1 = numerator1/denominator1;
13263    // weight dependent prefactor for covariance:
13264    Double_t wPrefactor1 = sumOfWW1/(sumOfW1st1*sumOfW2nd1);
13265    // finally, store "weighted" covariance:
13266    fIntFlowCovariancesNUA->SetBinContent(1,wPrefactor1*covariance1);
13267   } // end of if(TMath::Abs(denominator)>0.)
13268  } // end of if(TMath::Abs(sumOfW1st1*sumOfW2nd1)>0.)
13269  
13270  // Cov(<2>,<sin(phi)>):
13271  Double_t product2 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(2); // <<2><sin(phi)>> 
13272  Double_t term1st2 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13273  Double_t term2nd2 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi)>>
13274  Double_t sumOfW1st2 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13275  Double_t sumOfW2nd2 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi)>}
13276  Double_t sumOfWW2 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(2); // W_{<2>} * W_{<sin(phi)>}
13277  // numerator in the expression for the the unbiased estimator for covariance:
13278  Double_t numerator2 = product2 - term1st2*term2nd2;
13279  // denominator in the expression for the the unbiased estimator for covariance:
13280  Double_t denominator2 = 0.;
13281  if(TMath::Abs(sumOfW1st2*sumOfW2nd2)>0.)
13282  {  
13283   denominator2 = 1.-sumOfWW2/(sumOfW1st2*sumOfW2nd2);
13284   if(TMath::Abs(denominator2)>0.)
13285   {
13286    // covariance:
13287    Double_t covariance2 = numerator2/denominator2;
13288    // weight dependent prefactor for covariance:
13289    Double_t wPrefactor2 = sumOfWW2/(sumOfW1st2*sumOfW2nd2);
13290    // finally, store "weighted" covariance:
13291    fIntFlowCovariancesNUA->SetBinContent(2,wPrefactor2*covariance2);
13292   } // end of if(TMath::Abs(denominator2)>0.)
13293  } // end of if(TMath::Abs(sumOfW1st2*sumOfW2nd2)>0.)
13294  
13295  // Cov(<cos(phi)>,<sin(phi)>):
13296  Double_t product3 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(3); // <<cos(phi)><sin(phi)>> 
13297  Double_t term1st3 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi)>>
13298  Double_t term2nd3 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi)>>
13299  Double_t sumOfW1st3 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi)>}
13300  Double_t sumOfW2nd3 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi)>}
13301  Double_t sumOfWW3 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(3); // W_{<cos(phi)>} * W_{<sin(phi)>}
13302  // numerator in the expression for the the unbiased estimator for covariance:
13303  Double_t numerator3 = product3 - term1st3*term2nd3; 
13304  // denominator in the expression for the the unbiased estimator for covariance:
13305  Double_t denominator3 = 0;
13306  if(TMath::Abs(sumOfW1st3*sumOfW2nd3)>0.)
13307  { 
13308   denominator3 = 1.-sumOfWW3/(sumOfW1st3*sumOfW2nd3);
13309   if(TMath::Abs(denominator3)>0.)
13310   {
13311    // covariance:
13312    Double_t covariance3 = numerator3/denominator3;
13313    // weight dependent prefactor for covariance:
13314    Double_t wPrefactor3 = sumOfWW3/(sumOfW1st3*sumOfW2nd3);
13315    // finally, store "weighted" covariance:
13316    fIntFlowCovariancesNUA->SetBinContent(3,wPrefactor3*covariance3);
13317   } // end of if(TMath::Abs(denominator3)>0.)
13318  } // end of if(TMath::Abs(sumOfW1st3*sumOfW2nd3)>0.)
13319  
13320  // Cov(<2>,<cos(phi1+phi2)>):
13321  Double_t product4 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(4); // <<2><cos(phi1+phi2)>> 
13322  Double_t term1st4 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13323  Double_t term2nd4 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13324  Double_t sumOfW1st4 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13325  Double_t sumOfW2nd4 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13326  Double_t sumOfWW4 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(4); // W_{<2>} * W_{<cos(phi1+phi2)>}
13327  // numerator in the expression for the the unbiased estimator for covariance:
13328  Double_t numerator4 = product4 - term1st4*term2nd4; 
13329  // denominator in the expression for the the unbiased estimator for covariance:
13330  Double_t denominator4 = 0.;
13331  if(TMath::Abs(sumOfW1st4*sumOfW2nd4)>0.)
13332  { 
13333   denominator4 = 1.-sumOfWW4/(sumOfW1st4*sumOfW2nd4);
13334   if(TMath::Abs(denominator4)>0.)
13335   {  
13336    // covariance:
13337    Double_t covariance4 = numerator4/denominator4;
13338    // weight dependent prefactor for covariance:
13339    Double_t wPrefactor4 = sumOfWW4/(sumOfW1st4*sumOfW2nd4);
13340    // finally, store "weighted" covariance:
13341    fIntFlowCovariancesNUA->SetBinContent(4,wPrefactor4*covariance4);
13342   } // end of if(TMath::Abs(denominator4)>0.)
13343  } // end of if(TMath::Abs(sumOfW1st4*sumOfW2nd4)>0.)
13344  
13345  // Cov(<2>,<sin(phi1+phi2)>):
13346  Double_t product5 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(5); // <<2><sin(phi1+phi2)>> 
13347  Double_t term1st5 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13348  Double_t term2nd5 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13349  Double_t sumOfW1st5 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13350  Double_t sumOfW2nd5 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13351  Double_t sumOfWW5 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(5); // W_{<2>} * W_{<sin(phi1+phi2)>}
13352  // numerator in the expression for the the unbiased estimator for covariance:
13353  Double_t numerator5 = product5 - term1st5*term2nd5; 
13354  // denominator in the expression for the the unbiased estimator for covariance:
13355  Double_t denominator5 = 0.;
13356  if(TMath::Abs(sumOfW1st5*sumOfW2nd5)>0.)
13357  {  
13358   denominator5 = 1.-sumOfWW5/(sumOfW1st5*sumOfW2nd5);
13359   if(TMath::Abs(denominator5)>0.)
13360   {  
13361    // covariance:
13362    Double_t covariance5 = numerator5/denominator5;
13363    // weight dependent prefactor for covariance:
13364    Double_t wPrefactor5 = sumOfWW5/(sumOfW1st5*sumOfW2nd5);
13365    // finally, store "weighted" covariance:
13366    fIntFlowCovariancesNUA->SetBinContent(5,wPrefactor5*covariance5);
13367   } // end of if(TMath::Abs(denominator5)>0.)
13368  } // end of if(TMath::Abs(sumOfW1st5*sumOfW2nd5)>0.)
13369  
13370  // Cov(<2>,<cos(phi1-phi2-phi3)>):
13371  Double_t product6 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(6); // <<2><cos(phi1-phi2-phi3)>> 
13372  Double_t term1st6 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13373  Double_t term2nd6 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13374  Double_t sumOfW1st6 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13375  Double_t sumOfW2nd6 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13376  Double_t sumOfWW6 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(6); // W_{<2>} * W_{<cos(phi1-phi2-phi3)>}
13377  // numerator in the expression for the the unbiased estimator for covariance:
13378  Double_t numerator6 = product6 - term1st6*term2nd6; 
13379  // denominator in the expression for the the unbiased estimator for covariance:
13380  Double_t denominator6 = 0.;
13381  if(TMath::Abs(sumOfW1st6*sumOfW2nd6)>0.)
13382  {  
13383   denominator6 = 1.-sumOfWW6/(sumOfW1st6*sumOfW2nd6);
13384   if(TMath::Abs(denominator6)>0.)
13385   {  
13386    // covariance:
13387    Double_t covariance6 = numerator6/denominator6;
13388    // weight dependent prefactor for covariance:
13389    Double_t wPrefactor6 = sumOfWW6/(sumOfW1st6*sumOfW2nd6);
13390    // finally, store "weighted" covariance:
13391    fIntFlowCovariancesNUA->SetBinContent(6,wPrefactor6*covariance6);
13392   } // end of if(TMath::Abs(denominator6)>0.)
13393  } // end of if(TMath::Abs(sumOfW1st6*sumOfW2nd6)>0.)
13394  
13395  // Cov(<2>,<sin(phi1-phi2-phi3)>):
13396  Double_t product7 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(7); // <<2><sin(phi1-phi2-phi3)>> 
13397  Double_t term1st7 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13398  Double_t term2nd7 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13399  Double_t sumOfW1st7 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13400  Double_t sumOfW2nd7 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13401  Double_t sumOfWW7 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(7); // W_{<2>} * W_{<sin(phi1-phi2-phi3)>}
13402  // numerator in the expression for the the unbiased estimator for covariance:
13403  Double_t numerator7 = product7 - term1st7*term2nd7; 
13404  // denominator in the expression for the the unbiased estimator for covariance:
13405  Double_t denominator7 = 0.;
13406  if(TMath::Abs(sumOfW1st7*sumOfW2nd7)>0.)
13407  {  
13408   denominator7 = 1.-sumOfWW7/(sumOfW1st7*sumOfW2nd7);
13409   if(TMath::Abs(denominator7)>0.)
13410   {   
13411    // covariance:
13412    Double_t covariance7 = numerator7/denominator7;
13413    // weight dependent prefactor for covariance:
13414    Double_t wPrefactor7 = sumOfWW7/(sumOfW1st7*sumOfW2nd7);
13415    // finally, store "weighted" covariance:
13416    fIntFlowCovariancesNUA->SetBinContent(7,wPrefactor7*covariance7);
13417   } // end of if(TMath::Abs(denominator7)>0.)
13418  } // end of if(TMath::Abs(sumOfW1st7*sumOfW2nd7)>0.)
13419  
13420  // Cov(<4>,<cos(phi1>):
13421  Double_t product8 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(8); // <<4><cos(phi1)>> 
13422  Double_t term1st8 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13423  Double_t term2nd8 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi1)>>
13424  Double_t sumOfW1st8 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13425  Double_t sumOfW2nd8 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi1)>}
13426  Double_t sumOfWW8 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(8); // W_{<4>} * W_{<cos(phi1)>}
13427  // numerator in the expression for the the unbiased estimator for covariance:
13428  Double_t numerator8 = product8 - term1st8*term2nd8; 
13429  // denominator in the expression for the the unbiased estimator for covariance:
13430  Double_t denominator8 = 0.;
13431  if(TMath::Abs(sumOfW1st8*sumOfW2nd8)>0.)
13432  { 
13433   denominator8 = 1.-sumOfWW8/(sumOfW1st8*sumOfW2nd8);
13434   if(TMath::Abs(denominator8)>0.)
13435   {     
13436    // covariance:
13437    Double_t covariance8 = numerator8/denominator8;
13438    // weight dependent prefactor for covariance:
13439    Double_t wPrefactor8 = sumOfWW8/(sumOfW1st8*sumOfW2nd8);
13440    // finally, store "weighted" covariance:
13441    fIntFlowCovariancesNUA->SetBinContent(8,wPrefactor8*covariance8);
13442   } // end of if(TMath::Abs(denominator8)>0.)
13443  } // end of if(TMath::Abs(sumOfW1st8*sumOfW2nd8)>0.)
13444  
13445  // Cov(<4>,<sin(phi1)>):
13446  Double_t product9 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(9); // <<4><sin(phi1)>> 
13447  Double_t term1st9 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13448  Double_t term2nd9 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi1)>>
13449  Double_t sumOfW1st9 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13450  Double_t sumOfW2nd9 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi1)>}
13451  Double_t sumOfWW9 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(9); // W_{<4>} * W_{<sin(phi1)>}
13452  // numerator in the expression for the the unbiased estimator for covariance:
13453  Double_t numerator9 = product9 - term1st9*term2nd9; 
13454  // denominator in the expression for the the unbiased estimator for covariance:
13455  Double_t denominator9 = 0.;
13456  if(TMath::Abs(sumOfW1st9*sumOfW2nd9)>0.) 
13457  {
13458   denominator9 = 1.-sumOfWW9/(sumOfW1st9*sumOfW2nd9);
13459   if(TMath::Abs(denominator9)>0.)
13460   {     
13461    // covariance:
13462    Double_t covariance9 = numerator9/denominator9;
13463    // weight dependent prefactor for covariance:
13464    Double_t wPrefactor9 = sumOfWW9/(sumOfW1st9*sumOfW2nd9);
13465    // finally, store "weighted" covariance:
13466    fIntFlowCovariancesNUA->SetBinContent(9,wPrefactor9*covariance9); 
13467   }
13468  } // end of if(TMath::Abs(sumOfW1st9*sumOfW2nd9)>0.) 
13469  
13470  // Cov(<4>,<cos(phi1+phi2)>):
13471  Double_t product10 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(10); // <<4><cos(phi1+phi2)>> 
13472  Double_t term1st10 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13473  Double_t term2nd10 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13474  Double_t sumOfW1st10 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13475  Double_t sumOfW2nd10 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13476  Double_t sumOfWW10 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(10); // W_{<4>} * W_{<cos(phi1+phi2)>}
13477  // numerator in the expression for the the unbiased estimator for covariance:
13478  Double_t numerator10 = product10 - term1st10*term2nd10; 
13479  // denominator in the expression for the the unbiased estimator for covariance:
13480  Double_t denominator10 = 0.;
13481  if(TMath::Abs(sumOfW1st10*sumOfW2nd10)>0.) 
13482  { 
13483   denominator10 = 1.-sumOfWW10/(sumOfW1st10*sumOfW2nd10);
13484   if(TMath::Abs(denominator10)>0.) 
13485   { 
13486    // covariance:
13487    Double_t covariance10 = numerator10/denominator10;
13488    // weight dependent prefactor for covariance:
13489    Double_t wPrefactor10 = sumOfWW10/(sumOfW1st10*sumOfW2nd10);
13490    // finally, store "weighted" covariance:
13491    fIntFlowCovariancesNUA->SetBinContent(10,wPrefactor10*covariance10);
13492   } // end of if(TMath::Abs(denominator10)>0.) 
13493  } // end of if(TMath::Abs(sumOfW1st10*sumOfW2nd10)>0.) 
13494  
13495  // Cov(<4>,<sin(phi1+phi2)>):
13496  Double_t product11 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(11); // <<4><sin(phi1+phi2)>> 
13497  Double_t term1st11 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13498  Double_t term2nd11 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13499  Double_t sumOfW1st11 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13500  Double_t sumOfW2nd11 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13501  Double_t sumOfWW11 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(11); // W_{<4>} * W_{<sin(phi1+phi2)>}
13502  // numerator in the expression for the the unbiased estimator for covariance:
13503  Double_t numerator11 = product11 - term1st11*term2nd11; 
13504  // denominator in the expression for the the unbiased estimator for covariance:
13505  Double_t denominator11 = 0.;
13506  if(TMath::Abs(sumOfW1st11*sumOfW2nd11)>0.) 
13507  {  
13508   denominator11 = 1.-sumOfWW11/(sumOfW1st11*sumOfW2nd11);
13509   if(TMath::Abs(denominator11)>0.) 
13510   { 
13511    // covariance:
13512    Double_t covariance11 = numerator11/denominator11;
13513    // weight dependent prefactor for covariance:
13514    Double_t wPrefactor11 = sumOfWW11/(sumOfW1st11*sumOfW2nd11);
13515    // finally, store "weighted" covariance:
13516    fIntFlowCovariancesNUA->SetBinContent(11,wPrefactor11*covariance11);
13517   } // end of if(TMath::Abs(denominator11)>0.) 
13518  } // end of if(TMath::Abs(sumOfW1st11*sumOfW2nd11)>0.) 
13519
13520  // Cov(<4>,<cos(phi1-phi2-phi3)>):
13521  Double_t product12 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(12); // <<4><cos(phi1-phi2-phi3)>> 
13522  Double_t term1st12 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13523  Double_t term2nd12 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13524  Double_t sumOfW1st12 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13525  Double_t sumOfW2nd12 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13526  Double_t sumOfWW12 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(12); // W_{<4>} * W_{<cos(phi1-phi2-phi3)>}
13527  // numerator in the expression for the the unbiased estimator for covariance:
13528  Double_t numerator12 = product12 - term1st12*term2nd12; 
13529  // denominator in the expression for the the unbiased estimator for covariance:
13530  Double_t denominator12 = 0.;
13531  if(TMath::Abs(sumOfW1st12*sumOfW2nd12)>0.) 
13532  {   
13533   denominator12 = 1.-sumOfWW12/(sumOfW1st12*sumOfW2nd12);
13534   if(TMath::Abs(denominator12)>0.) 
13535   { 
13536    // covariance:
13537    Double_t covariance12 = numerator12/denominator12;
13538    // weight dependent prefactor for covariance:
13539    Double_t wPrefactor12 = sumOfWW12/(sumOfW1st12*sumOfW2nd12);
13540    // finally, store "weighted" covariance:
13541    fIntFlowCovariancesNUA->SetBinContent(12,wPrefactor12*covariance12);
13542   } // end of if(TMath::Abs(denominator12)>0.)
13543  } // end of if(TMath::Abs(sumOfW1st12*sumOfW2nd12)>0.)  
13544
13545  // Cov(<4>,<sin(phi1-phi2-phi3)>):
13546  Double_t product13 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(13); // <<4><sin(phi1-phi2-phi3)>> 
13547  Double_t term1st13 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13548  Double_t term2nd13 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13549  Double_t sumOfW1st13 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13550  Double_t sumOfW2nd13 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13551  Double_t sumOfWW13 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(13); // W_{<4>} * W_{<sin(phi1-phi2-phi3)>}
13552  // numerator in the expression for the the unbiased estimator for covariance:
13553  Double_t numerator13 = product13 - term1st13*term2nd13; 
13554  // denominator in the expression for the the unbiased estimator for covariance:
13555  Double_t denominator13 = 0.;
13556  if(TMath::Abs(sumOfW1st13*sumOfW2nd13)>0.) 
13557  {   
13558   denominator13 = 1.-sumOfWW13/(sumOfW1st13*sumOfW2nd13);
13559   if(TMath::Abs(denominator13)>0.) 
13560   { 
13561    // covariance:
13562    Double_t covariance13 = numerator13/denominator13;
13563    // weight dependent prefactor for covariance:
13564    Double_t wPrefactor13 = sumOfWW13/(sumOfW1st13*sumOfW2nd13);
13565    // finally, store "weighted" covariance:
13566    fIntFlowCovariancesNUA->SetBinContent(13,wPrefactor13*covariance13);
13567   } // end of if(TMath::Abs(denominator13)>0.) 
13568  } // end of if(TMath::Abs(sumOfW1st13*sumOfW2nd13)>0.) 
13569
13570  // Cov(<cos(phi1)>,<cos(phi1+phi2)>):
13571  Double_t product14 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(14); // <<cos(phi1)><cos(phi1+phi2)>> 
13572  Double_t term1st14 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi1)>>
13573  Double_t term2nd14 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13574  Double_t sumOfW1st14 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi1)>}
13575  Double_t sumOfW2nd14 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13576  Double_t sumOfWW14 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(14); // W_{<cos(phi1)>} * W_{<cos(phi1+phi2)>}
13577  // numerator in the expression for the the unbiased estimator for covariance:
13578  Double_t numerator14 = product14 - term1st14*term2nd14; 
13579  // denominator in the expression for the the unbiased estimator for covariance:
13580  Double_t denominator14 = 0.;
13581  if(TMath::Abs(sumOfW1st14*sumOfW2nd14)>0.) 
13582  {  
13583   denominator14 = 1.-sumOfWW14/(sumOfW1st14*sumOfW2nd14);
13584   if(TMath::Abs(denominator14)>0.) 
13585   { 
13586    // covariance:
13587    Double_t covariance14 = numerator14/denominator14;
13588    // weight dependent prefactor for covariance:
13589    Double_t wPrefactor14 = sumOfWW14/(sumOfW1st14*sumOfW2nd14);
13590    // finally, store "weighted" covariance:
13591    fIntFlowCovariancesNUA->SetBinContent(14,wPrefactor14*covariance14);
13592   } // end of if(TMath::Abs(denominator14)>0.) 
13593  } // end of if(TMath::Abs(sumOfW1st14*sumOfW2nd14)>0.) 
13594
13595  // Cov(<cos(phi1)>,<sin(phi1+phi2)>):
13596  Double_t product15 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(15); // <<cos(phi1)><sin(phi1+phi2)>> 
13597  Double_t term1st15 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi1)>>
13598  Double_t term2nd15 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13599  Double_t sumOfW1st15 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi1)>}
13600  Double_t sumOfW2nd15 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13601  Double_t sumOfWW15 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(15); // W_{<cos(phi1)>} * W_{<sin(phi1+phi2)>}
13602  // numerator in the expression for the the unbiased estimator for covariance:
13603  Double_t numerator15 = product15 - term1st15*term2nd15; 
13604  // denominator in the expression for the the unbiased estimator for covariance:
13605  Double_t denominator15 = 0.;
13606  if(TMath::Abs(sumOfW1st15*sumOfW2nd15)>0.) 
13607  {  
13608   denominator15 = 1.-sumOfWW15/(sumOfW1st15*sumOfW2nd15);
13609   if(TMath::Abs(denominator15)>0.) 
13610   { 
13611    // covariance:
13612    Double_t covariance15 = numerator15/denominator15;
13613    // weight dependent prefactor for covariance:
13614    Double_t wPrefactor15 = sumOfWW15/(sumOfW1st15*sumOfW2nd15);
13615    // finally, store "weighted" covariance:
13616    fIntFlowCovariancesNUA->SetBinContent(15,wPrefactor15*covariance15);
13617   } // end of if(TMath::Abs(denominator15)>0.)  
13618  } // end of if(TMath::Abs(sumOfW1st15*sumOfW2nd15)>0.)  
13619  
13620  // Cov(<cos(phi1)>,<cos(phi1-phi2-phi3)>):
13621  Double_t product16 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(16); // <<cos(phi1)><cos(phi1-phi2-phi3)>> 
13622  Double_t term1st16 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi1)>>
13623  Double_t term2nd16 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13624  Double_t sumOfW1st16 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi1)>}
13625  Double_t sumOfW2nd16 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13626  Double_t sumOfWW16 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(16); // W_{<cos(phi1)>} * W_{<cos(phi1-phi2-phi3)>}
13627  // numerator in the expression for the the unbiased estimator for covariance:
13628  Double_t numerator16 = product16 - term1st16*term2nd16; 
13629  // denominator in the expression for the the unbiased estimator for covariance:
13630  Double_t denominator16 = 0.;
13631  if(TMath::Abs(sumOfW1st16*sumOfW2nd16)>0.) 
13632  {   
13633   denominator16 = 1.-sumOfWW16/(sumOfW1st16*sumOfW2nd16);
13634   if(TMath::Abs(denominator16)>0.) 
13635   {   
13636    // covariance:
13637    Double_t covariance16 = numerator16/denominator16;
13638    // weight dependent prefactor for covariance:
13639    Double_t wPrefactor16 = sumOfWW16/(sumOfW1st16*sumOfW2nd16);
13640    // finally, store "weighted" covariance:
13641    fIntFlowCovariancesNUA->SetBinContent(16,wPrefactor16*covariance16);
13642   } // end of if(TMath::Abs(denominator16)>0.)
13643  } // end ofif(TMath::Abs(sumOfW1st16*sumOfW2nd16)>0.)  
13644  
13645  // Cov(<cos(phi1)>,<sin(phi1-phi2-phi3)>):
13646  Double_t product17 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(17); // <<cos(phi1)><sin(phi1-phi2-phi3)>> 
13647  Double_t term1st17 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi1)>>
13648  Double_t term2nd17 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13649  Double_t sumOfW1st17 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi1)>}
13650  Double_t sumOfW2nd17 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13651  Double_t sumOfWW17 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(17); // W_{<cos(phi1)>} * W_{<sin(phi1-phi2-phi3)>}
13652  // numerator in the expression for the the unbiased estimator for covariance:
13653  Double_t numerator17 = product17 - term1st17*term2nd17; 
13654  // denominator in the expression for the the unbiased estimator for covariance:
13655  Double_t denominator17 = 0.;
13656  if(TMath::Abs(sumOfW1st17*sumOfW2nd17)>0.) 
13657  {
13658   denominator17 = 1.-sumOfWW17/(sumOfW1st17*sumOfW2nd17);
13659   if(TMath::Abs(denominator17)>0.) 
13660   {   
13661    // covariance:
13662    Double_t covariance17 = numerator17/denominator17;
13663    // weight dependent prefactor for covariance:
13664    Double_t wPrefactor17 = sumOfWW17/(sumOfW1st17*sumOfW2nd17);
13665     // finally, store "weighted" covariance:
13666    fIntFlowCovariancesNUA->SetBinContent(17,wPrefactor17*covariance17);
13667   } // end of if(TMath::Abs(denominator17)>0.) 
13668  } // end of if(TMath::Abs(sumOfW1st17*sumOfW2nd17)>0.) 
13669
13670  // Cov(<sin(phi1)>,<cos(phi1+phi2)>):
13671  Double_t product18 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(18); // <<sin(phi1)><cos(phi1+phi2)>> 
13672  Double_t term1st18 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi1)>>
13673  Double_t term2nd18 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13674  Double_t sumOfW1st18 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi1)>}
13675  Double_t sumOfW2nd18 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13676  Double_t sumOfWW18 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(18); // W_{<sin(phi1)>} * W_{<cos(phi1+phi2)>}
13677  // numerator in the expression for the the unbiased estimator for covariance:
13678  Double_t numerator18 = product18 - term1st18*term2nd18; 
13679  // denominator in the expression for the the unbiased estimator for covariance:
13680  Double_t denominator18 = 0.;
13681  if(TMath::Abs(sumOfW1st18*sumOfW2nd18)>0.) 
13682  { 
13683   denominator18 = 1.-sumOfWW18/(sumOfW1st18*sumOfW2nd18);
13684   if(TMath::Abs(denominator18)>0.) 
13685   {   
13686    // covariance:
13687    Double_t covariance18 = numerator18/denominator18;
13688    // weight dependent prefactor for covariance:
13689    Double_t wPrefactor18 = sumOfWW18/(sumOfW1st18*sumOfW2nd18);
13690    // finally, store "weighted" covariance:
13691    fIntFlowCovariancesNUA->SetBinContent(18,wPrefactor18*covariance18); 
13692   } // end of if(TMath::Abs(denominator18)>0.) 
13693  } // end of if(TMath::Abs(sumOfW1st18*sumOfW2nd18)>0.) 
13694
13695  // Cov(<sin(phi1)>,<sin(phi1+phi2)>):
13696  Double_t product19 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(19); // <<sin(phi1)><sin(phi1+phi2)>> 
13697  Double_t term1st19 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi1)>>
13698  Double_t term2nd19 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13699  Double_t sumOfW1st19 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi1)>}
13700  Double_t sumOfW2nd19 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13701  Double_t sumOfWW19 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(19); // W_{<sin(phi1)>} * W_{<sin(phi1+phi2)>}
13702  // numerator in the expression for the the unbiased estimator for covariance:
13703  Double_t numerator19 = product19 - term1st19*term2nd19; 
13704  // denominator in the expression for the the unbiased estimator for covariance:
13705  Double_t denominator19 = 0.;
13706  if(TMath::Abs(sumOfW1st19*sumOfW2nd19)>0.) 
13707  { 
13708   denominator19 = 1.-sumOfWW19/(sumOfW1st19*sumOfW2nd19);
13709   if(TMath::Abs(denominator19)>0.) 
13710   {   
13711    // covariance:
13712    Double_t covariance19 = numerator19/denominator19;
13713    // weight dependent prefactor for covariance:
13714    Double_t wPrefactor19 = sumOfWW19/(sumOfW1st19*sumOfW2nd19);
13715    // finally, store "weighted" covariance:
13716    fIntFlowCovariancesNUA->SetBinContent(19,wPrefactor19*covariance19);
13717   } // end of if(TMath::Abs(denominator19)>0.)
13718  } // end of if(TMath::Abs(sumOfW1st19*sumOfW2nd19)>0.)
13719  
13720  // Cov(<sin(phi1)>,<cos(phi1-phi2-phi3)>):
13721  Double_t product20 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(20); // <<sin(phi1)><cos(phi1-phi2-phi3)>> 
13722  Double_t term1st20 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi1)>>
13723  Double_t term2nd20 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13724  Double_t sumOfW1st20 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi1)>}
13725  Double_t sumOfW2nd20 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13726  Double_t sumOfWW20 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(20); // W_{<sin(phi1)>} * W_{<cos(phi1-phi2-phi3)>}
13727  // numerator in the expression for the the unbiased estimator for covariance:
13728  Double_t numerator20 = product20 - term1st20*term2nd20; 
13729  // denominator in the expression for the the unbiased estimator for covariance:
13730  Double_t denominator20 = 0.;
13731  if(TMath::Abs(sumOfW1st20*sumOfW2nd20)>0.)
13732  { 
13733   denominator20 = 1.-sumOfWW20/(sumOfW1st20*sumOfW2nd20);
13734   if(TMath::Abs(denominator20)>0.) 
13735   { 
13736    // covariance:
13737    Double_t covariance20 = numerator20/denominator20;
13738    // weight dependent prefactor for covariance:
13739    Double_t wPrefactor20 = sumOfWW20/(sumOfW1st20*sumOfW2nd20);
13740    // finally, store "weighted" covariance:
13741    fIntFlowCovariancesNUA->SetBinContent(20,wPrefactor20*covariance20);
13742   } // end of if(TMath::Abs(denominator20)>0.) 
13743  } // end of if(TMath::Abs(sumOfW1st20*sumOfW2nd20)>0.)
13744
13745  // Cov(<sin(phi1)>,<sin(phi1-phi2-phi3)>):
13746  Double_t product21 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(21); // <<sin(phi1)><sin(phi1-phi2-phi3)>> 
13747  Double_t term1st21 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi1)>>
13748  Double_t term2nd21 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13749  Double_t sumOfW1st21 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi1)>}
13750  Double_t sumOfW2nd21 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13751  Double_t sumOfWW21 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(21); // W_{<sin(phi1)>} * W_{<sin(phi1-phi2-phi3)>}
13752  // numerator in the expression for the the unbiased estimator for covariance:
13753  Double_t numerator21 = product21 - term1st21*term2nd21; 
13754  // denominator in the expression for the the unbiased estimator for covariance:
13755  Double_t denominator21 = 0.;
13756  if(TMath::Abs(sumOfW1st21*sumOfW2nd21)>0.)
13757  { 
13758   denominator21 = 1.-sumOfWW21/(sumOfW1st21*sumOfW2nd21);
13759   if(TMath::Abs(denominator21)>0.) 
13760   {   
13761    // covariance:
13762    Double_t covariance21 = numerator21/denominator21;
13763    // weight dependent prefactor for covariance:
13764    Double_t wPrefactor21 = sumOfWW21/(sumOfW1st21*sumOfW2nd21);
13765    // finally, store "weighted" covariance:
13766    fIntFlowCovariancesNUA->SetBinContent(21,wPrefactor21*covariance21);
13767   } // end of if(TMath::Abs(denominator21)>0.)
13768  } // end of if(TMath::Abs(sumOfW1st21*sumOfW2nd21)>0.)
13769
13770  // Cov(<cos(phi1+phi2)>,<sin(phi1+phi2)>):
13771  Double_t product22 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(22); // <<cos(phi1+phi2)><sin(phi1+phi2)>> 
13772  Double_t term1st22 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13773  Double_t term2nd22 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13774  Double_t sumOfW1st22 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13775  Double_t sumOfW2nd22 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13776  Double_t sumOfWW22 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(22); // W_{<cos(phi1+phi2)>} * W_{<sin(phi1+phi2)>}
13777  // numerator in the expression for the the unbiased estimator for covariance:
13778  Double_t numerator22 = product22 - term1st22*term2nd22; 
13779  // denominator in the expression for the the unbiased estimator for covariance:
13780  Double_t denominator22 = 0.;
13781  if(TMath::Abs(sumOfW1st22*sumOfW2nd22)>0.)
13782  { 
13783   denominator22 = 1.-sumOfWW22/(sumOfW1st22*sumOfW2nd22);
13784   if(TMath::Abs(denominator22)>0.) 
13785   {   
13786    // covariance:
13787    Double_t covariance22 = numerator22/denominator22;
13788    // weight dependent prefactor for covariance:
13789    Double_t wPrefactor22 = sumOfWW22/(sumOfW1st22*sumOfW2nd22);
13790    // finally, store "weighted" covariance:
13791    fIntFlowCovariancesNUA->SetBinContent(22,wPrefactor22*covariance22);
13792   } // end of if(TMath::Abs(denominator22)>0.) 
13793  } // end of if(TMath::Abs(sumOfW1st22*sumOfW2nd22)>0.) 
13794
13795  // Cov(<cos(phi1+phi2)>,<cos(phi1-phi2-phi3)>):
13796  Double_t product23 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(23); // <<cos(phi1+phi2)><cos(phi1-phi2-phi3)>> 
13797  Double_t term1st23 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13798  Double_t term2nd23 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13799  Double_t sumOfW1st23 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13800  Double_t sumOfW2nd23 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13801  Double_t sumOfWW23 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(23); // W_{<cos(phi1+phi2)>} * W_{<cos(phi1-phi2-phi3)>}
13802  // numerator in the expression for the the unbiased estimator for covariance:
13803  Double_t numerator23 = product23 - term1st23*term2nd23; 
13804  // denominator in the expression for the the unbiased estimator for covariance:
13805  Double_t denominator23 = 0.;
13806  if(TMath::Abs(sumOfW1st23*sumOfW2nd23)>0.)
13807  {  
13808   denominator23 = 1.-sumOfWW23/(sumOfW1st23*sumOfW2nd23);
13809   if(TMath::Abs(denominator23)>0.) 
13810   {   
13811    // covariance:
13812    Double_t covariance23 = numerator23/denominator23;
13813    // weight dependent prefactor for covariance:
13814    Double_t wPrefactor23 = sumOfWW23/(sumOfW1st23*sumOfW2nd23);
13815    // finally, store "weighted" covariance:
13816    fIntFlowCovariancesNUA->SetBinContent(23,wPrefactor23*covariance23);
13817   } // end of if(TMath::Abs(denominator23)>0.) 
13818  } // end of if(TMath::Abs(sumOfW1st23*sumOfW2nd23)>0.)
13819  
13820  // Cov(<cos(phi1+phi2)>,<sin(phi1-phi2-phi3)>):
13821  Double_t product24 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(24); // <<cos(phi1+phi2)><sin(phi1-phi2-phi3)>> 
13822  Double_t term1st24 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13823  Double_t term2nd24 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13824  Double_t sumOfW1st24 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13825  Double_t sumOfW2nd24 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13826  Double_t sumOfWW24 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(24); // W_{<cos(phi1+phi2)>} * W_{<sin(phi1-phi2-phi3)>}
13827  // numerator in the expression for the the unbiased estimator for covariance:
13828  Double_t numerator24 = product24 - term1st24*term2nd24; 
13829  // denominator in the expression for the the unbiased estimator for covariance:
13830  Double_t denominator24 = 0.;
13831  if(TMath::Abs(sumOfW1st24*sumOfW2nd24)>0.)
13832  {   
13833   denominator24 = 1.-sumOfWW24/(sumOfW1st24*sumOfW2nd24);
13834   if(TMath::Abs(denominator24)>0.) 
13835   {   
13836    // covariance:
13837    Double_t covariance24 = numerator24/denominator24;
13838    // weight dependent prefactor for covariance:
13839    Double_t wPrefactor24 = sumOfWW24/(sumOfW1st24*sumOfW2nd24);
13840    // finally, store "weighted" covariance:
13841    fIntFlowCovariancesNUA->SetBinContent(24,wPrefactor24*covariance24);
13842   } // end of if(TMath::Abs(denominator24)>0.)  
13843  } // end of if(TMath::Abs(sumOfW1st24*sumOfW2nd24)>0.)
13844
13845  // Cov(<sin(phi1+phi2)>,<cos(phi1-phi2-phi3)>):
13846  Double_t product25 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(25); // <<sin(phi1+phi2)><cos(phi1-phi2-phi3)>> 
13847  Double_t term1st25 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13848  Double_t term2nd25 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13849  Double_t sumOfW1st25 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13850  Double_t sumOfW2nd25 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13851  Double_t sumOfWW25 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(25); // W_{<sin(phi1+phi2)>} * W_{<cos(phi1-phi2-phi3)>}
13852  // numerator in the expression for the the unbiased estimator for covariance:
13853  Double_t numerator25 = product25 - term1st25*term2nd25; 
13854  // denominator in the expression for the the unbiased estimator for covariance:
13855  Double_t denominator25 = 0.;
13856  if(TMath::Abs(sumOfW1st25*sumOfW2nd25)>0.)
13857  { 
13858   denominator25 = 1.-sumOfWW25/(sumOfW1st25*sumOfW2nd25);
13859   if(TMath::Abs(denominator25)>0.) 
13860   { 
13861    // covariance:
13862    Double_t covariance25 = numerator25/denominator25;
13863    // weight dependent prefactor for covariance:
13864    Double_t wPrefactor25 = sumOfWW25/(sumOfW1st25*sumOfW2nd25);
13865    // finally, store "weighted" covariance:
13866    fIntFlowCovariancesNUA->SetBinContent(25,wPrefactor25*covariance25);
13867   } // end of if(TMath::Abs(denominator25)>0.)
13868  } // end of if(TMath::Abs(sumOfW1st25*sumOfW2nd25)>0.)
13869  
13870  // Cov(<sin(phi1+phi2)>,<sin(phi1-phi2-phi3)>):
13871  Double_t product26 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(26); // <<sin(phi1+phi2)><sin(phi1-phi2-phi3)>> 
13872  Double_t term1st26 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13873  Double_t term2nd26 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13874  Double_t sumOfW1st26 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13875  Double_t sumOfW2nd26 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13876  Double_t sumOfWW26 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(26); // W_{<sin(phi1+phi2)>} * W_{<sin(phi1-phi2-phi3)>}
13877  // numerator in the expression for the the unbiased estimator for covariance:
13878  Double_t numerator26 = product26 - term1st26*term2nd26; 
13879  // denominator in the expression for the the unbiased estimator for covariance:
13880  Double_t denominator26 = 0.;
13881  if(TMath::Abs(sumOfW1st26*sumOfW2nd26)>0.)
13882  { 
13883   denominator26 = 1.-sumOfWW26/(sumOfW1st26*sumOfW2nd26);
13884   if(TMath::Abs(denominator26)>0.) 
13885   { 
13886    // covariance:
13887    Double_t covariance26 = numerator26/denominator26;
13888    // weight dependent prefactor for covariance:
13889    Double_t wPrefactor26 = sumOfWW26/(sumOfW1st26*sumOfW2nd26);
13890    // finally, store "weighted" covariance:
13891    fIntFlowCovariancesNUA->SetBinContent(26,wPrefactor26*covariance26);
13892   } // end of if(TMath::Abs(denominator26)>0.) 
13893  } // end of if(TMath::Abs(sumOfW1st26*sumOfW2nd26)>0.)
13894  
13895  // Cov(<cos(phi1-phi2-phi3)>,<sin(phi1-phi2-phi3)>):
13896  Double_t product27 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(27); // <<cos(phi1-phi2-phi3)><sin(phi1-phi2-phi3)>> 
13897  Double_t term1st27 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13898  Double_t term2nd27 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13899  Double_t sumOfW1st27 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13900  Double_t sumOfW2nd27 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13901  Double_t sumOfWW27 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(27); // W_{<cos(phi1-phi2-phi3)>} * W_{<sin(phi1-phi2-phi3)>}
13902  // numerator in the expression for the the unbiased estimator for covariance:
13903  Double_t numerator27 = product27 - term1st27*term2nd27; 
13904  // denominator in the expression for the the unbiased estimator for covariance:
13905  Double_t denominator27 = 0.;
13906  if(TMath::Abs(sumOfW1st27*sumOfW2nd27)>0.)
13907  { 
13908   denominator27 = 1.-sumOfWW27/(sumOfW1st27*sumOfW2nd27);
13909   if(TMath::Abs(denominator27)>0.) 
13910   { 
13911    // covariance:
13912    Double_t covariance27 = numerator27/denominator27;
13913    // weight dependent prefactor for covariance:
13914    Double_t wPrefactor27 = sumOfWW27/(sumOfW1st27*sumOfW2nd27);
13915    // finally, store "weighted" covariance:
13916    fIntFlowCovariancesNUA->SetBinContent(27,wPrefactor27*covariance27);
13917   } // end of if(TMath::Abs(denominator27)>0.) 
13918  } // end of if(TMath::Abs(sumOfW1st27*sumOfW2nd27)>0.)
13919  
13920 } // end of AliFlowAnalysisWithQCumulants::CalculateCovariancesNUAIntFlow()
13921
13922 //=======================================================================================================================
13923
13924 void AliFlowAnalysisWithQCumulants::FinalizeCorrelationsIntFlow() 
13925 {
13926  // From profile fIntFlowCorrelationsPro access measured correlations and spread, 
13927  // correctly calculate the statistical errors and store the final results and 
13928  // statistical errors for correlations in histogram fIntFlowCorrelationsHist.
13929  //
13930  // Remark: Statistical error of correlation is calculated as:
13931  //
13932  //          statistical error = termA * spread * termB:
13933  //          termA = sqrt{sum_{i=1}^{N} w^2}/(sum_{i=1}^{N} w)
13934  //          termB = 1/sqrt(1-termA^2)   
13935  //
13936    
13937  for(Int_t ci=1;ci<=4;ci++) // correlation index
13938  {
13939   if(fIntFlowCorrelationsPro->GetBinEffectiveEntries(ci) < 2 || fIntFlowSquaredCorrelationsPro->GetBinEffectiveEntries(ci) < 2)
13940   {
13941    fIntFlowCorrelationsPro->SetBinError(ci,0.);
13942    fIntFlowSquaredCorrelationsPro->SetBinError(ci,0.);
13943    continue;
13944   } 
13945   Double_t correlation = fIntFlowCorrelationsPro->GetBinContent(ci);
13946   Double_t squaredCorrelation = fIntFlowSquaredCorrelationsPro->GetBinContent(ci);
13947   Double_t spread = 0.;
13948   if(squaredCorrelation-correlation*correlation >= 0.)
13949   {
13950    spread = pow(squaredCorrelation-correlation*correlation,0.5);
13951   } else
13952     {
13953      cout<<endl;
13954      cout<<Form(" WARNING: Imaginary 'spread' for %d-particle correlation!!!! ",2*ci)<<endl;
13955      cout<<endl;
13956     }
13957   Double_t sumOfLinearEventWeights = fIntFlowSumOfEventWeights[0]->GetBinContent(ci);
13958   Double_t sumOfQuadraticEventWeights = fIntFlowSumOfEventWeights[1]->GetBinContent(ci);
13959   Double_t termA = 0.;
13960   Double_t termB = 0.;
13961   if(TMath::Abs(sumOfLinearEventWeights) > 0.) // to be improved - shall I omitt here Abs() ?
13962   {
13963    termA = pow(sumOfQuadraticEventWeights,0.5)/sumOfLinearEventWeights;
13964   } else
13965     {
13966      cout<<endl;
13967      cout<<" WARNING (QC): sumOfLinearEventWeights == 0 in method FinalizeCorrelationsIntFlow() !!!!"<<endl;
13968      cout<<"               (for "<<2*ci<<"-particle correlation)"<<endl;
13969      cout<<endl;
13970     }
13971   if(1.-pow(termA,2.) > 0.)
13972   {
13973    termB = 1./pow(1-pow(termA,2.),0.5);
13974   } else
13975     {
13976      cout<<endl;
13977      cout<<" WARNING (QC): 1.-pow(termA,2.) <= 0 in method FinalizeCorrelationsIntFlow() !!!!"<<endl;   
13978      cout<<"               (for "<<2*ci<<"-particle correlation)"<<endl;
13979      cout<<endl;
13980     }     
13981   Double_t statisticalError = termA * spread * termB;
13982   fIntFlowCorrelationsHist->SetBinContent(ci,correlation);
13983   fIntFlowCorrelationsHist->SetBinError(ci,statisticalError);
13984  } // end of for(Int_t ci=1;ci<=4;ci++) // correlation index     
13985  
13986  // Versus multiplicity: 
13987  if(!fCalculateCumulantsVsM){return;}
13988  for(Int_t ci=0;ci<=3;ci++) // correlation index
13989  {
13990   Int_t nBins = fIntFlowCorrelationsVsMPro[ci]->GetNbinsX(); 
13991   for(Int_t b=1;b<=nBins;b++) // looping over multiplicity bins
13992   {
13993    if(fIntFlowCorrelationsVsMPro[ci]->GetBinEffectiveEntries(b) < 2 || fIntFlowSquaredCorrelationsVsMPro[ci]->GetBinEffectiveEntries(b) < 2)
13994    {
13995     fIntFlowCorrelationsVsMPro[ci]->SetBinError(b,0.);
13996     fIntFlowSquaredCorrelationsVsMPro[ci]->SetBinError(b,0.);
13997     continue;
13998    } 
13999    Double_t correlationVsM = fIntFlowCorrelationsVsMPro[ci]->GetBinContent(b);
14000    Double_t squaredCorrelationVsM = fIntFlowSquaredCorrelationsVsMPro[ci]->GetBinContent(b);
14001    Double_t spreadVsM = 0.;
14002    if(squaredCorrelationVsM-correlationVsM*correlationVsM >= 0.)
14003    {
14004     spreadVsM = pow(squaredCorrelationVsM-correlationVsM*correlationVsM,0.5);
14005    } else
14006      {
14007       cout<<endl;
14008       cout<<Form(" WARNING (QC): Imaginary 'spreadVsM' for ci = %d, bin = %d, entries = %f !!!!",
14009                  ci,b,fIntFlowCorrelationsVsMPro[ci]->GetBinEffectiveEntries(b))<<endl; 
14010       cout<<endl;
14011      }     
14012    Double_t sumOfLinearEventWeightsVsM = fIntFlowSumOfEventWeightsVsM[ci][0]->GetBinContent(b);
14013    Double_t sumOfQuadraticEventWeightsVsM = fIntFlowSumOfEventWeightsVsM[ci][1]->GetBinContent(b);
14014    Double_t termAVsM = 0.;
14015    Double_t termBVsM = 0.;
14016    if(sumOfLinearEventWeightsVsM > 0.) 
14017    {
14018     termAVsM = pow(sumOfQuadraticEventWeightsVsM,0.5)/sumOfLinearEventWeightsVsM;
14019    }
14020    if(1.-pow(termAVsM,2.) > 0.)
14021    {
14022     termBVsM = 1./pow(1-pow(termAVsM,2.),0.5);
14023    }     
14024    Double_t statisticalErrorVsM = termAVsM * spreadVsM * termBVsM;
14025    fIntFlowCorrelationsVsMHist[ci]->SetBinContent(b,correlationVsM);
14026    fIntFlowCorrelationsVsMHist[ci]->SetBinError(b,statisticalErrorVsM);  
14027   } // end of for(Int_t b=1;b<=nBins;b++)
14028  } // end of for(Int_t ci=1;ci<=4;ci++) // correlation index                                                        
14029                                                                                                                            
14030 } // end of AliFlowAnalysisWithQCumulants::FinalizeCorrelationsIntFlow()
14031
14032 //=======================================================================================================================
14033
14034 void AliFlowAnalysisWithQCumulants::FillAverageMultiplicities(Int_t nRP)
14035 {
14036  // Fill profile fAverageMultiplicity to hold average multiplicities and 
14037  // number of events for events with nRP>=0, nRP>=1, ... , and nRP>=8
14038  
14039  // Binning of fAverageMultiplicity is organized as follows:
14040  //  1st bin: all events (including the empty ones)
14041  //  2nd bin: event with # of RPs greater or equal to 1
14042  //  3rd bin: event with # of RPs greater or equal to 2
14043  //  4th bin: event with # of RPs greater or equal to 3
14044  //  5th bin: event with # of RPs greater or equal to 4
14045  //  6th bin: event with # of RPs greater or equal to 5
14046  //  7th bin: event with # of RPs greater or equal to 6
14047  //  8th bin: event with # of RPs greater or equal to 7
14048  //  9th bin: event with # of RPs greater or equal to 8
14049  
14050  if(nRP<0)
14051  {
14052   cout<<endl;
14053   cout<<" WARNING (QC): nRP<0 in in AFAWQC::FAM() !!!!"<<endl;
14054   cout<<endl;
14055   exit(0);
14056  }
14057  
14058  for(Int_t i=0;i<9;i++)
14059  {
14060   if(nRP>=i){fAvMultiplicity->Fill(i+0.5,nRP,1);}
14061  }
14062  
14063 } // end of AliFlowAnalysisWithQCumulants::FillAverageMultiplicities(nRP)
14064
14065 //=======================================================================================================================
14066
14067 void AliFlowAnalysisWithQCumulants::CalculateCumulantsIntFlow()
14068
14069  // a) Calculate Q-cumulants from the measured multiparticle correlations;
14070  // b) Propagate the statistical errors from measured multiparticle correlations to statistical errors of Q-cumulants;  
14071  // c) Remark: Q-cumulants calculated in this method are biased by non-uniform acceptance of detector !!!! 
14072  //            Method CalculateQcumulantsCorrectedForNUAIntFlow() is called afterwards to correct for this bias;
14073  // d) Store the results and statistical error of Q-cumulants in histogram fIntFlowQcumulants.
14074  //    Binning of fIntFlowQcumulants is organized as follows:
14075  //
14076  //            1st bin: QC{2}
14077  //            2nd bin: QC{4}
14078  //            3rd bin: QC{6}
14079  //            4th bin: QC{8}
14080  //
14081  
14082  // Correlations:
14083  Double_t two = fIntFlowCorrelationsHist->GetBinContent(1); // <<2>> 
14084  Double_t four = fIntFlowCorrelationsHist->GetBinContent(2); // <<4>>  
14085  Double_t six = fIntFlowCorrelationsHist->GetBinContent(3); // <<6>> 
14086  Double_t eight = fIntFlowCorrelationsHist->GetBinContent(4); // <<8>>  
14087  // Statistical errors of average 2-, 4-, 6- and 8-particle azimuthal correlations:
14088  Double_t twoError = fIntFlowCorrelationsHist->GetBinError(1); // statistical error of <2>  
14089  Double_t fourError = fIntFlowCorrelationsHist->GetBinError(2); // statistical error of <4>   
14090  Double_t sixError = fIntFlowCorrelationsHist->GetBinError(3); // statistical error of <6> 
14091  Double_t eightError = fIntFlowCorrelationsHist->GetBinError(4); // statistical error of <8> 
14092  // Covariances (multiplied by prefactor depending on weights - see comments in CalculateCovariancesIntFlow()):
14093  Double_t wCov24 = 0.; // Cov(<2>,<4>) * prefactor(w_<2>,w_<4>)
14094  Double_t wCov26 = 0.; // Cov(<2>,<6>) * prefactor(w_<2>,w_<6>)
14095  Double_t wCov28 = 0.; // Cov(<2>,<8>) * prefactor(w_<2>,w_<8>)
14096  Double_t wCov46 = 0.; // Cov(<4>,<6>) * prefactor(w_<4>,w_<6>)
14097  Double_t wCov48 = 0.; // Cov(<4>,<8>) * prefactor(w_<4>,w_<8>)
14098  Double_t wCov68 = 0.; // Cov(<6>,<8>) * prefactor(w_<6>,w_<8>)  
14099  if(!fForgetAboutCovariances)
14100  {
14101   wCov24 = fIntFlowCovariances->GetBinContent(1); // Cov(<2>,<4>) * prefactor(w_<2>,w_<4>)
14102   wCov26 = fIntFlowCovariances->GetBinContent(2); // Cov(<2>,<6>) * prefactor(w_<2>,w_<6>)
14103   wCov28 = fIntFlowCovariances->GetBinContent(3); // Cov(<2>,<8>) * prefactor(w_<2>,w_<8>)
14104   wCov46 = fIntFlowCovariances->GetBinContent(4); // Cov(<4>,<6>) * prefactor(w_<4>,w_<6>)
14105   wCov48 = fIntFlowCovariances->GetBinContent(5); // Cov(<4>,<8>) * prefactor(w_<4>,w_<8>)
14106   wCov68 = fIntFlowCovariances->GetBinContent(6); // Cov(<6>,<8>) * prefactor(w_<6>,w_<8>) 
14107  }
14108  // Q-cumulants: 
14109  Double_t qc2 = 0.; // QC{2}
14110  Double_t qc4 = 0.; // QC{4}
14111  Double_t qc6 = 0.; // QC{6}
14112  Double_t qc8 = 0.; // QC{8}
14113  if(TMath::Abs(two) > 0.){qc2 = two;} 
14114  if(TMath::Abs(four) > 0.){qc4 = four-2.*pow(two,2.);} 
14115  if(TMath::Abs(six) > 0.){qc6 = six-9.*two*four+12.*pow(two,3.);} 
14116  if(TMath::Abs(eight) > 0.){qc8 = eight-16.*two*six-18.*pow(four,2.)+144.*pow(two,2.)*four-144.*pow(two,4.);} 
14117  // Statistical errors of Q-cumulants:       
14118  Double_t qc2Error = 0.;
14119  Double_t qc4Error = 0.;
14120  Double_t qc6Error = 0.;
14121  Double_t qc8Error = 0.; 
14122  // Squared statistical errors of Q-cumulants:       
14123  //Double_t qc2ErrorSquared = 0.;
14124  Double_t qc4ErrorSquared = 0.;
14125  Double_t qc6ErrorSquared = 0.;
14126  Double_t qc8ErrorSquared = 0.;        
14127  // Statistical error of QC{2}:              
14128  qc2Error = twoError;                                                 
14129  // Statistical error of QC{4}:              
14130  qc4ErrorSquared = 16.*pow(two,2.)*pow(twoError,2)+pow(fourError,2.)
14131                  - 8.*two*wCov24;                     
14132  if(qc4ErrorSquared>0.)
14133  {
14134   qc4Error = pow(qc4ErrorSquared,0.5);
14135  } else 
14136    {
14137     cout<<" WARNING (QC): Statistical error of QC{4} is imaginary !!!!"<<endl;
14138    }                                           
14139  // Statistical error of QC{6}:              
14140  qc6ErrorSquared = 81.*pow(4.*pow(two,2.)-four,2.)*pow(twoError,2.)
14141                  + 81.*pow(two,2.)*pow(fourError,2.)
14142                  + pow(sixError,2.)
14143                  - 162.*two*(4.*pow(two,2.)-four)*wCov24
14144                  + 18.*(4.*pow(two,2.)-four)*wCov26
14145                  - 18.*two*wCov46;                     
14146  if(qc6ErrorSquared>0.)
14147  {
14148   qc6Error = pow(qc6ErrorSquared,0.5);
14149  } else 
14150    {
14151     cout<<" WARNING (QC): Statistical error of QC{6} is imaginary !!!!"<<endl;
14152    }                       
14153  // Statistical error of QC{8}:              
14154  qc8ErrorSquared = 256.*pow(36.*pow(two,3.)-18.*four*two+six,2.)*pow(twoError,2.)
14155                  + 1296.*pow(4.*pow(two,2.)-four,2.)*pow(fourError,2.)
14156                  + 256.*pow(two,2.)*pow(sixError,2.)
14157                  + pow(eightError,2.)
14158                  - 1152.*(36.*pow(two,3.)-18.*four*two+six)*(4.*pow(two,2.)-four)*wCov24
14159                  + 512.*two*(36.*pow(two,3.)-18.*four*two+six)*wCov26
14160                  - 32.*(36.*pow(two,3.)-18.*four*two+six)*wCov28
14161                  - 1152.*two*(4.*pow(two,2.)-four)*wCov46
14162                  + 72.*(4.*pow(two,2.)-four)*wCov48
14163                  - 32.*two*wCov68;      
14164  if(qc8ErrorSquared>0.)
14165  {
14166   qc8Error = pow(qc8ErrorSquared,0.5);
14167  } else 
14168    {
14169     cout<<"WARNING (QC): Statistical error of QC{8} is imaginary !!!!"<<endl;
14170    }
14171  // Store the results and statistical errors for Q-cumulants:
14172  if(TMath::Abs(qc2)>0.)
14173  {
14174   fIntFlowQcumulants->SetBinContent(1,qc2);
14175   fIntFlowQcumulants->SetBinError(1,qc2Error);
14176  }
14177  if(TMath::Abs(qc4)>0.)
14178  {
14179   fIntFlowQcumulants->SetBinContent(2,qc4);
14180   fIntFlowQcumulants->SetBinError(2,qc4Error);
14181  }
14182  if(TMath::Abs(qc6)>0.)
14183  {
14184   fIntFlowQcumulants->SetBinContent(3,qc6);
14185   fIntFlowQcumulants->SetBinError(3,qc6Error);
14186  }
14187  if(TMath::Abs(qc8)>0.)
14188  {
14189   fIntFlowQcumulants->SetBinContent(4,qc8); 
14190   fIntFlowQcumulants->SetBinError(4,qc8Error);
14191  } 
14192  
14193  // Versus multiplicity: 
14194  if(!fCalculateCumulantsVsM){return;}
14195  Int_t nBins = fIntFlowCorrelationsVsMPro[0]->GetNbinsX(); // to be improved (hardwired 0) 
14196  Double_t value[4] = {0.}; // QCs vs M
14197  Double_t error[4] = {0.}; // error of QCs vs M
14198  Double_t dSum1[4] = {0.}; // sum value_i/(error_i)^2
14199  Double_t dSum2[4] = {0.}; // sum 1/(error_i)^2
14200  for(Int_t b=1;b<=nBins;b++)
14201  {
14202   // Correlations:
14203   two = fIntFlowCorrelationsVsMHist[0]->GetBinContent(b); // <<2>> 
14204   four = fIntFlowCorrelationsVsMHist[1]->GetBinContent(b); // <<4>>  
14205   six = fIntFlowCorrelationsVsMHist[2]->GetBinContent(b); // <<6>> 
14206   eight = fIntFlowCorrelationsVsMHist[3]->GetBinContent(b); // <<8>>  
14207   // Statistical errors of average 2-, 4-, 6- and 8-particle azimuthal correlations:
14208   twoError = fIntFlowCorrelationsVsMHist[0]->GetBinError(b); // statistical error of <2>  
14209   fourError = fIntFlowCorrelationsVsMHist[1]->GetBinError(b); // statistical error of <4>   
14210   sixError = fIntFlowCorrelationsVsMHist[2]->GetBinError(b); // statistical error of <6> 
14211   eightError = fIntFlowCorrelationsVsMHist[3]->GetBinError(b); // statistical error of <8> 
14212   // Covariances (multiplied by prefactor depending on weights - see comments in CalculateCovariancesIntFlow()):
14213   if(!fForgetAboutCovariances)
14214   {
14215    wCov24 = fIntFlowCovariancesVsM[0]->GetBinContent(b); // Cov(<2>,<4>) * prefactor(w_<2>,w_<4>)
14216    wCov26 = fIntFlowCovariancesVsM[1]->GetBinContent(b); // Cov(<2>,<6>) * prefactor(w_<2>,w_<6>)
14217    wCov28 = fIntFlowCovariancesVsM[2]->GetBinContent(b); // Cov(<2>,<8>) * prefactor(w_<2>,w_<8>)
14218    wCov46 = fIntFlowCovariancesVsM[3]->GetBinContent(b); // Cov(<4>,<6>) * prefactor(w_<4>,w_<6>)
14219    wCov48 = fIntFlowCovariancesVsM[4]->GetBinContent(b); // Cov(<4>,<8>) * prefactor(w_<4>,w_<8>)
14220    wCov68 = fIntFlowCovariancesVsM[5]->GetBinContent(b); // Cov(<6>,<8>) * prefactor(w_<6>,w_<8>) 
14221   }
14222   // Q-cumulants: 
14223   qc2 = 0.; // QC{2}
14224   qc4 = 0.; // QC{4}
14225   qc6 = 0.; // QC{6}
14226   qc8 = 0.; // QC{8}
14227   if(TMath::Abs(two) > 0.){qc2 = two;} 
14228   if(TMath::Abs(four) > 0.){qc4 = four-2.*pow(two,2.);} 
14229   if(TMath::Abs(six) > 0.){qc6 = six-9.*two*four+12.*pow(two,3.);} 
14230   if(TMath::Abs(eight) > 0.){qc8 = eight-16.*two*six-18.*pow(four,2.)+144.*pow(two,2.)*four-144.*pow(two,4.);}  
14231   // Statistical errors of Q-cumulants:       
14232   qc2Error = 0.;
14233   qc4Error = 0.;
14234   qc6Error = 0.;
14235   qc8Error = 0.; 
14236   // Squared statistical errors of Q-cumulants:       
14237   //Double_t qc2ErrorSquared = 0.;
14238   qc4ErrorSquared = 0.;
14239   qc6ErrorSquared = 0.;
14240   qc8ErrorSquared = 0.;    
14241   // Statistical error of QC{2}:              
14242   qc2Error = twoError;                                             
14243   // Statistical error of QC{4}:              
14244   qc4ErrorSquared = 16.*pow(two,2.)*pow(twoError,2)+pow(fourError,2.)
14245                   - 8.*two*wCov24;                     
14246   if(qc4ErrorSquared>0.)
14247   {
14248    qc4Error = pow(qc4ErrorSquared,0.5);
14249   } else 
14250     {
14251      // cout<<"WARNING: Statistical error of QC{4} is imaginary in multiplicity bin "<<b<<" !!!!"<<endl;
14252     }                                       
14253   // Statistical error of QC{6}:              
14254   qc6ErrorSquared = 81.*pow(4.*pow(two,2.)-four,2.)*pow(twoError,2.)
14255                   + 81.*pow(two,2.)*pow(fourError,2.)
14256                   + pow(sixError,2.)
14257                   - 162.*two*(4.*pow(two,2.)-four)*wCov24
14258                   + 18.*(4.*pow(two,2.)-four)*wCov26
14259                   - 18.*two*wCov46;                     
14260   if(qc6ErrorSquared>0.)
14261   {
14262    qc6Error = pow(qc6ErrorSquared,0.5);
14263   } else 
14264     {
14265      // cout<<"WARNING: Statistical error of QC{6} is imaginary in multiplicity bin "<<b<<" !!!!"<<endl;
14266     }                            
14267   // Statistical error of QC{8}:              
14268   qc8ErrorSquared = 256.*pow(36.*pow(two,3.)-18.*four*two+six,2.)*pow(twoError,2.)
14269                   + 1296.*pow(4.*pow(two,2.)-four,2.)*pow(fourError,2.)
14270                   + 256.*pow(two,2.)*pow(sixError,2.)
14271                   + pow(eightError,2.)
14272                   - 1152.*(36.*pow(two,3.)-18.*four*two+six)*(4.*pow(two,2.)-four)*wCov24
14273                   + 512.*two*(36.*pow(two,3.)-18.*four*two+six)*wCov26
14274                   - 32.*(36.*pow(two,3.)-18.*four*two+six)*wCov28
14275                   - 1152.*two*(4.*pow(two,2.)-four)*wCov46
14276                   + 72.*(4.*pow(two,2.)-four)*wCov48
14277                   - 32.*two*wCov68;      
14278   if(qc8ErrorSquared>0.)
14279   {
14280    qc8Error = pow(qc8ErrorSquared,0.5);
14281   } else 
14282     {
14283      // cout<<"WARNING: Statistical error of QC{8} is imaginary in multiplicity bin "<<b<<" !!!!"<<endl;
14284     }
14285   // Store the results and statistical errors for Q-cumulants:
14286   if(TMath::Abs(qc2)>0.)
14287   {
14288    fIntFlowQcumulantsVsM[0]->SetBinContent(b,qc2);
14289    fIntFlowQcumulantsVsM[0]->SetBinError(b,qc2Error);  
14290   }
14291   if(TMath::Abs(qc4)>0.)
14292   {
14293    fIntFlowQcumulantsVsM[1]->SetBinContent(b,qc4);  
14294    fIntFlowQcumulantsVsM[1]->SetBinError(b,qc4Error);
14295   }
14296   if(TMath::Abs(qc6)>0.)
14297   {
14298    fIntFlowQcumulantsVsM[2]->SetBinContent(b,qc6); 
14299    fIntFlowQcumulantsVsM[2]->SetBinError(b,qc6Error);
14300   }
14301   if(TMath::Abs(qc8)>0.)
14302   {  
14303    fIntFlowQcumulantsVsM[3]->SetBinContent(b,qc8);
14304    fIntFlowQcumulantsVsM[3]->SetBinError(b,qc8Error);
14305   } 
14306   // Rebin in M:
14307   for(Int_t co=0;co<4;co++)
14308   {
14309    if(fIntFlowCorrelationsVsMPro[co]->GetBinEffectiveEntries(b)<2){continue;}
14310    value[co] = fIntFlowQcumulantsVsM[co]->GetBinContent(b);
14311    error[co] = fIntFlowQcumulantsVsM[co]->GetBinError(b);
14312    if(error[co]>0.)
14313    {
14314     dSum1[co]+=value[co]/(error[co]*error[co]);
14315     dSum2[co]+=1./(error[co]*error[co]);
14316    }
14317   } // end of for(Int_t co=0;co<4;co++) 
14318  } // end of for(Int_t b=1;b<=nBins;b++)
14319  // Store rebinned Q-cumulants:
14320  for(Int_t co=0;co<4;co++)
14321  {
14322   if(dSum2[co]>0.)
14323   {
14324    fIntFlowQcumulantsRebinnedInM->SetBinContent(co+1,dSum1[co]/dSum2[co]);
14325    fIntFlowQcumulantsRebinnedInM->SetBinError(co+1,pow(1./dSum2[co],0.5));
14326   }
14327  } // end of for(Int_t co=0;co<4;co++)
14328  
14329 } // end of AliFlowAnalysisWithQCumulants::CalculateCumulantsIntFlow()
14330
14331 //================================================================================================================================ 
14332
14333 void AliFlowAnalysisWithQCumulants::CalculateReferenceFlow()
14334 {
14335  // a) Calculate the final results for reference flow estimates from Q-cumulants;
14336  // b) Propagate the statistical errors to reference flow estimates from statistical error of Q-cumulants; 
14337  // c) Store the results and statistical errors of reference flow estimates in histogram fIntFlow.
14338  //    Binning of fIntFlow is organized as follows:
14339  //
14340  //            1st bin: v{2,QC}
14341  //            2nd bin: v{4,QC}
14342  //            3rd bin: v{6,QC}
14343  //            4th bin: v{8,QC}
14344  //
14345  
14346  // Reference flow estimates:
14347  Double_t v2 = 0.; // v{2,QC}  
14348  Double_t v4 = 0.; // v{4,QC}  
14349  Double_t v6 = 0.; // v{6,QC}  
14350  Double_t v8 = 0.; // v{8,QC}
14351  // Reference flow's statistical errors:
14352  Double_t v2Error = 0.; // v{2,QC} stat. error 
14353  Double_t v4Error = 0.; // v{4,QC} stat. error
14354  Double_t v6Error = 0.; // v{6,QC} stat. error
14355  Double_t v8Error = 0.; // v{8,QC} stat. error
14356   
14357  // Q-cumulants:
14358  Double_t qc2 = fIntFlowQcumulants->GetBinContent(1); // QC{2}  
14359  Double_t qc4 = fIntFlowQcumulants->GetBinContent(2); // QC{4}  
14360  Double_t qc6 = fIntFlowQcumulants->GetBinContent(3); // QC{6}  
14361  Double_t qc8 = fIntFlowQcumulants->GetBinContent(4); // QC{8}
14362  // Q-cumulants's statistical errors: 
14363  Double_t qc2Error = fIntFlowQcumulants->GetBinError(1); // QC{2} stat. error  
14364  Double_t qc4Error = fIntFlowQcumulants->GetBinError(2); // QC{4} stat. error  
14365  Double_t qc6Error = fIntFlowQcumulants->GetBinError(3); // QC{6} stat. error  
14366  Double_t qc8Error = fIntFlowQcumulants->GetBinError(4); // QC{8} stat. error
14367  // Calculate reference flow estimates from Q-cumulants: 
14368  if(qc2>=0.){v2 = pow(qc2,0.5);} 
14369  if(qc4<=0.){v4 = pow(-1.*qc4,1./4.);} 
14370  if(qc6>=0.){v6 = pow((1./4.)*qc6,1./6.);}
14371  if(qc8<=0.){v8 = pow((-1./33.)*qc8,1./8.);}  
14372  // Calculate stat. error for reference flow estimates from stat. error of Q-cumulants:  
14373  if(qc2>0.){v2Error = (1./2.)*pow(qc2,-0.5)*qc2Error;} 
14374  if(qc4<0.){v4Error = (1./4.)*pow(-qc4,-3./4.)*qc4Error;} 
14375  if(qc6>0.){v6Error = (1./6.)*pow(2.,-1./3.)*pow(qc6,-5./6.)*qc6Error;}   
14376  if(qc8<0.){v8Error = (1./8.)*pow(33.,-1./8.)*pow(-qc8,-7./8.)*qc8Error;}   
14377  // Print warnings for the 'wrong sign' cumulants: 
14378  if(TMath::Abs(v2) < 1.e-44)
14379  {
14380   cout<<" WARNING: Wrong sign QC{2}, couldn't calculate v{2,QC} !!!!"<<endl;
14381  }
14382  if(TMath::Abs(v4) < 1.e-44)
14383  {
14384   cout<<" WARNING: Wrong sign QC{4}, couldn't calculate v{4,QC} !!!!"<<endl;
14385  } 
14386  if(TMath::Abs(v6) < 1.e-44)
14387  {
14388   cout<<" WARNING: Wrong sign QC{6}, couldn't calculate v{6,QC} !!!!"<<endl; 
14389  }
14390  if(TMath::Abs(v8) < 1.e-44)
14391  {
14392   cout<<" WARNING: Wrong sign QC{8}, couldn't calculate v{8,QC} !!!!"<<endl;
14393  }                       
14394  // Store the results and statistical errors of integrated flow estimates:
14395  fIntFlow->SetBinContent(1,v2);
14396  fIntFlow->SetBinError(1,v2Error);
14397  fIntFlow->SetBinContent(2,v4);
14398  fIntFlow->SetBinError(2,v4Error);
14399  fIntFlow->SetBinContent(3,v6);
14400  fIntFlow->SetBinError(3,v6Error);
14401  fIntFlow->SetBinContent(4,v8);
14402  fIntFlow->SetBinError(4,v8Error);  
14403   
14404  // Versus multiplicity: 
14405  if(!fCalculateCumulantsVsM){return;} 
14406  Int_t nBins = fIntFlowCorrelationsVsMPro[0]->GetNbinsX(); // to be improved (hardwired 0) 
14407  for(Int_t b=1;b<=nBins;b++)
14408  {
14409   // Q-cumulants:
14410   Double_t qc2VsM = fIntFlowQcumulantsVsM[0]->GetBinContent(b); // QC{2}  
14411   Double_t qc4VsM = fIntFlowQcumulantsVsM[1]->GetBinContent(b); // QC{4}  
14412   Double_t qc6VsM = fIntFlowQcumulantsVsM[2]->GetBinContent(b); // QC{6}  
14413   Double_t qc8VsM = fIntFlowQcumulantsVsM[3]->GetBinContent(b); // QC{8}
14414   // Q-cumulants's statistical errors: 
14415   Double_t qc2ErrorVsM = fIntFlowQcumulantsVsM[0]->GetBinError(b); // QC{2} stat. error  
14416   Double_t qc4ErrorVsM = fIntFlowQcumulantsVsM[1]->GetBinError(b); // QC{4} stat. error  
14417   Double_t qc6ErrorVsM = fIntFlowQcumulantsVsM[2]->GetBinError(b); // QC{6} stat. error  
14418   Double_t qc8ErrorVsM = fIntFlowQcumulantsVsM[3]->GetBinError(b); // QC{8} stat. error
14419   // Reference flow estimates:
14420   Double_t v2VsM = 0.; // v{2,QC}  
14421   Double_t v4VsM = 0.; // v{4,QC}  
14422   Double_t v6VsM = 0.; // v{6,QC}  
14423   Double_t v8VsM = 0.; // v{8,QC}
14424   // Reference flow estimates errors:
14425   Double_t v2ErrorVsM = 0.; // v{2,QC} stat. error  
14426   Double_t v4ErrorVsM = 0.; // v{4,QC} stat. error
14427   Double_t v6ErrorVsM = 0.; // v{6,QC} stat. error  
14428   Double_t v8ErrorVsM = 0.; // v{8,QC} stat. error
14429   // Calculate reference flow estimates from Q-cumulants: 
14430   if(qc2VsM>=0.){v2VsM = pow(qc2VsM,0.5);} 
14431   if(qc4VsM<=0.){v4VsM = pow(-1.*qc4VsM,1./4.);} 
14432   if(qc6VsM>=0.){v6VsM = pow((1./4.)*qc6VsM,1./6.);}
14433   if(qc8VsM<=0.){v8VsM = pow((-1./33.)*qc8VsM,1./8.);}  
14434   // Calculate stat. error for reference flow estimates from stat. error of Q-cumulants: 
14435   if(qc2VsM>0.){v2ErrorVsM = (1./2.)*pow(qc2VsM,-0.5)*qc2ErrorVsM;} 
14436   if(qc4VsM<0.){v4ErrorVsM = (1./4.)*pow(-qc4VsM,-3./4.)*qc4ErrorVsM;} 
14437   if(qc6VsM>0.){v6ErrorVsM = (1./6.)*pow(2.,-1./3.)*pow(qc6VsM,-5./6.)*qc6ErrorVsM;}   
14438   if(qc8VsM<0.){v8ErrorVsM = (1./8.)*pow(33.,-1./8.)*pow(-qc8VsM,-7./8.)*qc8ErrorVsM;}                       
14439   // Store the results and statistical errors of integrated flow estimates:
14440   fIntFlowVsM[0]->SetBinContent(b,v2VsM);
14441   fIntFlowVsM[0]->SetBinError(b,v2ErrorVsM);
14442   fIntFlowVsM[1]->SetBinContent(b,v4VsM);
14443   fIntFlowVsM[1]->SetBinError(b,v4ErrorVsM);
14444   fIntFlowVsM[2]->SetBinContent(b,v6VsM);
14445   fIntFlowVsM[2]->SetBinError(b,v6ErrorVsM);
14446   fIntFlowVsM[3]->SetBinContent(b,v8VsM);
14447   fIntFlowVsM[3]->SetBinError(b,v8ErrorVsM);
14448  } // end of for(Int_t b=1;b<=nBins;b++)
14449  
14450  // 'Rebinned in M' calculation: // to be improved - this can be implemented better:   
14451  // Reference flow estimates:
14452  Double_t v2RebinnedInM = 0.; // v{2,QC}  
14453  Double_t v4RebinnedInM = 0.; // v{4,QC}  
14454  Double_t v6RebinnedInM = 0.; // v{6,QC}  
14455  Double_t v8RebinnedInM = 0.; // v{8,QC}
14456  // Reference flow's statistical errors:
14457  Double_t v2ErrorRebinnedInM = 0.; // v{2,QC} stat. error 
14458  Double_t v4ErrorRebinnedInM = 0.; // v{4,QC} stat. error
14459  Double_t v6ErrorRebinnedInM = 0.; // v{6,QC} stat. error
14460  Double_t v8ErrorRebinnedInM = 0.; // v{8,QC} stat. error
14461  // Q-cumulants:
14462  Double_t qc2RebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinContent(1); // QC{2}  
14463  Double_t qc4RebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinContent(2); // QC{4}  
14464  Double_t qc6RebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinContent(3); // QC{6}  
14465  Double_t qc8RebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinContent(4); // QC{8}
14466  // Q-cumulants's statistical errors: 
14467  Double_t qc2ErrorRebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinError(1); // QC{2} stat. error  
14468  Double_t qc4ErrorRebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinError(2); // QC{4} stat. error  
14469  Double_t qc6ErrorRebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinError(3); // QC{6} stat. error  
14470  Double_t qc8ErrorRebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinError(4); // QC{8} stat. error
14471  // Calculate reference flow estimates from Q-cumulants: 
14472  if(qc2RebinnedInM>=0.){v2RebinnedInM = pow(qc2RebinnedInM,0.5);} 
14473  if(qc4RebinnedInM<=0.){v4RebinnedInM = pow(-1.*qc4RebinnedInM,1./4.);} 
14474  if(qc6RebinnedInM>=0.){v6RebinnedInM = pow((1./4.)*qc6RebinnedInM,1./6.);}
14475  if(qc8RebinnedInM<=0.){v8RebinnedInM = pow((-1./33.)*qc8RebinnedInM,1./8.);}  
14476  // Calculate stat. error for reference flow estimates from stat. error of Q-cumulants: 
14477  if(qc2RebinnedInM>0.){v2ErrorRebinnedInM = (1./2.)*pow(qc2RebinnedInM,-0.5)*qc2ErrorRebinnedInM;} 
14478  if(qc4RebinnedInM<0.){v4ErrorRebinnedInM = (1./4.)*pow(-qc4RebinnedInM,-3./4.)*qc4ErrorRebinnedInM;} 
14479  if(qc6RebinnedInM>0.){v6ErrorRebinnedInM = (1./6.)*pow(2.,-1./3.)*pow(qc6RebinnedInM,-5./6.)*qc6ErrorRebinnedInM;}   
14480  if(qc8RebinnedInM<0.){v8ErrorRebinnedInM = (1./8.)*pow(33.,-1./8.)*pow(-qc8RebinnedInM,-7./8.)*qc8ErrorRebinnedInM;}   
14481  // Print warnings for the 'wrong sign' cumulants: 
14482  if(TMath::Abs(v2RebinnedInM) < 1.e-44)
14483  {
14484   cout<<" WARNING: Wrong sign QC{2} rebinned in M, couldn't calculate v{2,QC} !!!!"<<endl;
14485  }
14486  if(TMath::Abs(v4RebinnedInM) < 1.e-44)
14487  {
14488   cout<<" WARNING: Wrong sign QC{4} rebinned in M, couldn't calculate v{4,QC} !!!!"<<endl;
14489  }
14490  if(TMath::Abs(v6RebinnedInM) < 1.e-44)
14491  {
14492   cout<<" WARNING: Wrong sign QC{6} rebinned in M, couldn't calculate v{6,QC} !!!!"<<endl;
14493  }
14494  if(TMath::Abs(v8RebinnedInM) < 1.e-44)
14495  {
14496   cout<<" WARNING: Wrong sign QC{8} rebinned in M, couldn't calculate v{8,QC} !!!!"<<endl;
14497  }                       
14498  // Store the results and statistical errors of integrated flow estimates:
14499  fIntFlowRebinnedInM->SetBinContent(1,v2RebinnedInM);
14500  fIntFlowRebinnedInM->SetBinError(1,v2ErrorRebinnedInM);
14501  fIntFlowRebinnedInM->SetBinContent(2,v4RebinnedInM);
14502  fIntFlowRebinnedInM->SetBinError(2,v4ErrorRebinnedInM);
14503  fIntFlowRebinnedInM->SetBinContent(3,v6RebinnedInM);
14504  fIntFlowRebinnedInM->SetBinError(3,v6ErrorRebinnedInM);
14505  fIntFlowRebinnedInM->SetBinContent(4,v8RebinnedInM);
14506  fIntFlowRebinnedInM->SetBinError(4,v8ErrorRebinnedInM);    
14507   
14508 } // end of AliFlowAnalysisWithQCumulants::CalculateReferenceFlow()
14509
14510 //================================================================================================================================ 
14511
14512 void AliFlowAnalysisWithQCumulants::FillCommonHistResultsIntFlow()
14513 {
14514  // Fill in AliFlowCommonHistResults histograms relevant for reference flow.
14515  
14516  // There are two possibilities here:
14517  // a) Store minimum bias reference flow - use SetMinimumBiasReferenceFlow(kTRUE). This result is 
14518  //    biased by the interplay between nonflow correlations and multiplicity fluctuations and is 
14519  //    also stored in local histogram fIntFlow; 
14520  // b) Store reference flow obtained from flow analysis performed at fixed multiplicity and 
14521  //    rebinned only at the end of the day - use SetMinimumBiasReferenceFlow(kFALSE). This result
14522  //    is also stored in local histogram fIntFlowRebinnedInM.
14523  
14524  // Reference flow estimates:
14525  Double_t v[4] = {0.};
14526  // Statistical errors of reference flow estimates:
14527  Double_t vError[4] = {0.};
14528   
14529  for(Int_t b=0;b<4;b++)
14530  {
14531   if(fMinimumBiasReferenceFlow)
14532   { 
14533    v[b] = fIntFlow->GetBinContent(b+1);
14534    vError[b] = fIntFlow->GetBinError(b+1);
14535   } else
14536     {
14537      v[b] = fIntFlowRebinnedInM->GetBinContent(b+1);
14538      vError[b] = fIntFlowRebinnedInM->GetBinError(b+1);
14539     }
14540  } // end of for(Int_t b=0;b<4;b++)
14541   
14542  // Fill AliFlowCommonHistResults histogram:
14543  fCommonHistsResults2nd->FillIntegratedFlow(v[0],vError[0]); // to be improved (hardwired 2nd in the name)  
14544  fCommonHistsResults4th->FillIntegratedFlow(v[1],vError[1]); // to be improved (hardwired 4th in the name)
14545  if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)) // to be improved (calculate also 6th and 8th order)
14546  {
14547   fCommonHistsResults6th->FillIntegratedFlow(v[2],vError[2]); // to be improved (hardwired 6th in the name)
14548   fCommonHistsResults8th->FillIntegratedFlow(v[3],vError[3]); // to be improved (hardwired 8th in the name) 
14549  }
14550  
14551 } // end of AliFlowAnalysisWithQCumulants::FillCommonHistResultsIntFlow()
14552
14553 //================================================================================================================================ 
14554
14555 void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrelationsUsingParticleWeights()
14556 {
14557  // Calculate all correlations needed for integrated flow using particle weights.
14558   
14559  // Remark 1: When particle weights are used the binning of fIntFlowCorrelationAllPro is organized as follows:
14560  //
14561  //  1st bin: <2>_{1n|1n} = two1n1nW1W1 = <w1 w2 cos(n*(phi1-phi2))>
14562  //  2nd bin: <2>_{2n|2n} = two2n2nW2W2 = <w1^2 w2^2 cos(2n*(phi1-phi2))>
14563  //  3rd bin: <2>_{3n|3n} = two3n3nW3W3 = <w1^3 w2^3 cos(3n*(phi1-phi2))> 
14564  //  4th bin: <2>_{4n|4n} = two4n4nW4W4 = <w1^4 w2^4 cos(4n*(phi1-phi2))>
14565  //  5th bin:           ----  EMPTY ----
14566  //  6th bin: <3>_{2n|1n,1n} = three2n1n1nW2W1W1 = <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
14567  //  7th bin: <3>_{3n|2n,1n} = ...
14568  //  8th bin: <3>_{4n|2n,2n} = ...
14569  //  9th bin: <3>_{4n|3n,1n} = ...
14570  // 10th bin:           ----  EMPTY ----
14571  // 11th bin: <4>_{1n,1n|1n,1n} = four1n1n1n1nW1W1W1W1 = <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))>
14572  // 12th bin: <4>_{2n,1n|2n,1n} = ...
14573  // 13th bin: <4>_{2n,2n|2n,2n} = ...
14574  // 14th bin: <4>_{3n|1n,1n,1n} = ... 
14575  // 15th bin: <4>_{3n,1n|3n,1n} = ...
14576  // 16th bin: <4>_{3n,1n|2n,2n} = ...
14577  // 17th bin: <4>_{4n|2n,1n,1n} = ... 
14578  // 18th bin:           ----  EMPTY ----
14579  // 19th bin: <5>_{2n|1n,1n,1n,1n} = ...
14580  // 20th bin: <5>_{2n,2n|2n,1n,1n} = ...
14581  // 21st bin: <5>_{3n,1n|2n,1n,1n} = ...
14582  // 22nd bin: <5>_{4n|1n,1n,1n,1n} = ...
14583  // 23rd bin:           ----  EMPTY ----
14584  // 24th bin: <6>_{1n,1n,1n|1n,1n,1n} = ...
14585  // 25th bin: <6>_{2n,1n,1n|2n,1n,1n} = ...
14586  // 26th bin: <6>_{2n,2n|1n,1n,1n,1n} = ...
14587  // 27th bin: <6>_{3n,1n|1n,1n,1n,1n} = ...
14588  // 28th bin:           ----  EMPTY ----
14589  // 29th bin: <7>_{2n,1n,1n|1n,1n,1n,1n} = ...
14590  // 30th bin:           ----  EMPTY ----
14591  // 31st bin: <8>_{1n,1n,1n,1n|1n,1n,1n,1n} = ...
14592  
14593  // Remark 2: When particle weights are used there are some extra correlations. They are stored in 
14594  // fIntFlowExtraCorrelationsPro binning of which is organized as follows:
14595  
14596  // 1st bin: two1n1nW3W1 = <w1^3 w2 cos(n*(phi1-phi2))>
14597  // 2nd bin: two1n1nW1W1W2 = <w1 w2 w3^2 cos(n*(phi1-phi2))>  
14598  
14599  // multiplicity (number of particles used to determine the reaction plane)
14600  Double_t dMult = (*fSpk)(0,0);
14601  
14602  // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n: 
14603  Double_t dReQ1n1k = (*fReQ)(0,1);
14604  Double_t dReQ2n2k = (*fReQ)(1,2);
14605  Double_t dReQ3n3k = (*fReQ)(2,3);
14606  Double_t dReQ4n4k = (*fReQ)(3,4);
14607  Double_t dReQ1n3k = (*fReQ)(0,3);
14608  Double_t dImQ1n1k = (*fImQ)(0,1);
14609  Double_t dImQ2n2k = (*fImQ)(1,2);
14610  Double_t dImQ3n3k = (*fImQ)(2,3);
14611  Double_t dImQ4n4k = (*fImQ)(3,4);
14612  Double_t dImQ1n3k = (*fImQ)(0,3);
14613
14614  // dMs are variables introduced in order to simplify some Eqs. bellow:
14615  //..............................................................................................
14616  Double_t dM11 = (*fSpk)(1,1)-(*fSpk)(0,2); // dM11 = sum_{i,j=1,i!=j}^M w_i w_j
14617  Double_t dM22 = (*fSpk)(1,2)-(*fSpk)(0,4); // dM22 = sum_{i,j=1,i!=j}^M w_i^2 w_j^2
14618  Double_t dM33 = (*fSpk)(1,3)-(*fSpk)(0,6); // dM33 = sum_{i,j=1,i!=j}^M w_i^3 w_j^3
14619  Double_t dM44 = (*fSpk)(1,4)-(*fSpk)(0,8); // dM44 = sum_{i,j=1,i!=j}^M w_i^4 w_j^4
14620  Double_t dM31 = (*fSpk)(0,3)*(*fSpk)(0,1)-(*fSpk)(0,4); // dM31 = sum_{i,j=1,i!=j}^M w_i^3 w_j
14621  Double_t dM211 = (*fSpk)(0,2)*(*fSpk)(1,1)-2.*(*fSpk)(0,3)*(*fSpk)(0,1)
14622                 - (*fSpk)(1,2)+2.*(*fSpk)(0,4); // dM211 = sum_{i,j,k=1,i!=j!=k}^M w_i^2 w_j w_k
14623  Double_t dM1111 = (*fSpk)(3,1)-6.*(*fSpk)(0,2)*(*fSpk)(1,1)  
14624                  + 8.*(*fSpk)(0,3)*(*fSpk)(0,1)
14625                  + 3.*(*fSpk)(1,2)-6.*(*fSpk)(0,4); // dM1111 = sum_{i,j,k,l=1,i!=j!=k!=l}^M w_i w_j w_k w_l
14626  //..............................................................................................
14627
14628  // 2-particle correlations:
14629  Double_t two1n1nW1W1 = 0.; // <w1 w2 cos(n*(phi1-phi2))>
14630  Double_t two2n2nW2W2 = 0.; // <w1^2 w2^2 cos(2n*(phi1-phi2))>
14631  Double_t two3n3nW3W3 = 0.; // <w1^3 w2^3 cos(3n*(phi1-phi2))>
14632  Double_t two4n4nW4W4 = 0.; // <w1^4 w2^4 cos(4n*(phi1-phi2))>
14633  if(dMult>1) 
14634  { 
14635   if(dM11)
14636   {
14637    two1n1nW1W1 = (pow(dReQ1n1k,2)+pow(dImQ1n1k,2)-(*fSpk)(0,2))/dM11;    
14638    // average correlation <w1 w2 cos(n*(phi1-phi2))> for single event: 
14639    fIntFlowCorrelationsEBE->SetBinContent(1,two1n1nW1W1);
14640    fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(1,dM11);
14641    // average correlation <w1 w2 cos(n*(phi1-phi2))> for all events:
14642    fIntFlowCorrelationsPro->Fill(0.5,two1n1nW1W1,dM11);  
14643    // average squared correlation <w1 w2 cos(n*(phi1-phi2))> for all events:
14644    fIntFlowSquaredCorrelationsPro->Fill(0.5,two1n1nW1W1*two1n1nW1W1,dM11); 
14645    fIntFlowCorrelationsAllPro->Fill(0.5,two1n1nW1W1,dM11);   
14646   }
14647   if(dM22)
14648   {
14649    two2n2nW2W2 = (pow(dReQ2n2k,2)+pow(dImQ2n2k,2)-(*fSpk)(0,4))/dM22; 
14650    // ...
14651    // average correlation <w1^2 w2^2 cos(2n*(phi1-phi2))> for all events:
14652    fIntFlowCorrelationsAllPro->Fill(1.5,two2n2nW2W2,dM22);   
14653   }
14654   if(dM33)
14655   {
14656    two3n3nW3W3 = (pow(dReQ3n3k,2)+pow(dImQ3n3k,2)-(*fSpk)(0,6))/dM33;
14657    // ...
14658    // average correlation <w1^3 w2^3 cos(3n*(phi1-phi2))> for all events:
14659    fIntFlowCorrelationsAllPro->Fill(2.5,two3n3nW3W3,dM33);   
14660   }
14661   if(dM44)
14662   {
14663    two4n4nW4W4 = (pow(dReQ4n4k,2)+pow(dImQ4n4k,2)-(*fSpk)(0,8))/dM44; 
14664    // ...
14665    // average correlation <w1^4 w2^4 cos(4n*(phi1-phi2))> for all events:
14666    fIntFlowCorrelationsAllPro->Fill(3.5,two4n4nW4W4,dM44);      
14667   }
14668  } // end of if(dMult>1) 
14669
14670  // extra 2-particle correlations:
14671  Double_t two1n1nW3W1 = 0.; // <w1^3 w2 cos(n*(phi1-phi2))>
14672  Double_t two1n1nW1W1W2 = 0.; // <w1 w2 w3^2 cos(n*(phi1-phi2))> 
14673  if(dMult>1) 
14674  {    
14675   if(dM31)
14676   {
14677    two1n1nW3W1 = (dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k-(*fSpk)(0,4))/dM31; 
14678    fIntFlowExtraCorrelationsPro->Fill(0.5,two1n1nW3W1,dM31);  
14679   } 
14680   if(dM211)
14681   {
14682    two1n1nW1W1W2 = ((*fSpk)(0,2)*(pow(dReQ1n1k,2)+pow(dImQ1n1k,2)-(*fSpk)(0,2))
14683                  - 2.*(dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k
14684                  - (*fSpk)(0,4)))/dM211;
14685    fIntFlowExtraCorrelationsPro->Fill(1.5,two1n1nW1W1W2,dM211);  
14686   }  
14687  } // end of if(dMult>1)
14688  //..............................................................................................
14689  
14690  //..............................................................................................
14691  // 3-particle correlations:
14692  Double_t three2n1n1nW2W1W1 = 0.; // <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
14693  
14694  if(dMult>2) 
14695  { 
14696   if(dM211)
14697   {                                                       
14698    three2n1n1nW2W1W1 = (pow(dReQ1n1k,2.)*dReQ2n2k+2.*dReQ1n1k*dImQ1n1k*dImQ2n2k-pow(dImQ1n1k,2.)*dReQ2n2k
14699                      - 2.*(dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k)
14700                      - pow(dReQ2n2k,2)-pow(dImQ2n2k,2)
14701                      + 2.*(*fSpk)(0,4))/dM211;                                                                               
14702    fIntFlowCorrelationsAllPro->Fill(5.5,three2n1n1nW2W1W1,dM211);
14703   } 
14704  } // end of if(dMult>2) 
14705  //..............................................................................................
14706  
14707  //..............................................................................................
14708  // 4-particle correlations:
14709  Double_t four1n1n1n1nW1W1W1W1 = 0.; // <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))>
14710  if(dMult>3) 
14711  { 
14712   if(dM1111)
14713   {      
14714    four1n1n1n1nW1W1W1W1 = (pow(pow(dReQ1n1k,2.)+pow(dImQ1n1k,2.),2)
14715                         - 2.*(pow(dReQ1n1k,2.)*dReQ2n2k+2.*dReQ1n1k*dImQ1n1k*dImQ2n2k-pow(dImQ1n1k,2.)*dReQ2n2k)
14716                         + 8.*(dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k)
14717                         + (pow(dReQ2n2k,2)+pow(dImQ2n2k,2))
14718                         - 4.*(*fSpk)(0,2)*(pow(dReQ1n1k,2)+pow(dImQ1n1k,2))
14719                         - 6.*(*fSpk)(0,4)+2.*(*fSpk)(1,2))/dM1111;  
14720                           
14721    // average correlation <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))> for single event: 
14722    fIntFlowCorrelationsEBE->SetBinContent(2,four1n1n1n1nW1W1W1W1);
14723    fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(2,dM1111);
14724    // average correlation <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))> for all events:
14725    fIntFlowCorrelationsPro->Fill(1.5,four1n1n1n1nW1W1W1W1,dM1111);   
14726    // average squared correlation <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))> for all events:
14727    fIntFlowSquaredCorrelationsPro->Fill(1.5,four1n1n1n1nW1W1W1W1*four1n1n1n1nW1W1W1W1,dM1111);      
14728    fIntFlowCorrelationsAllPro->Fill(10.5,four1n1n1n1nW1W1W1W1,dM1111);   
14729   } 
14730  } // end of if(dMult>3) 
14731  //..............................................................................................
14732  
14733 } // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrelationsUsingParticleWeights()
14734
14735 //=======================================================================================================================
14736
14737 void AliFlowAnalysisWithQCumulants::InitializeArraysForIntFlow()
14738 {
14739  // Initialize all arrays used to calculate integrated flow.
14740  
14741  for(Int_t sc=0;sc<2;sc++) // sin or cos terms
14742  {
14743   fIntFlowCorrectionTermsForNUAEBE[sc] = NULL;
14744   fIntFlowEventWeightForCorrectionTermsForNUAEBE[sc] = NULL;
14745   fIntFlowCorrectionTermsForNUAPro[sc] = NULL;
14746   fIntFlowCorrectionTermsForNUAHist[sc] = NULL;
14747   for(Int_t ci=0;ci<4;ci++) // correction term index (to be improved - hardwired 4)
14748   {
14749    fIntFlowCorrectionTermsForNUAVsMPro[sc][ci] = NULL;
14750   }
14751   for(Int_t power=0;power<2;power++) // linear or quadratic 
14752   {
14753    fIntFlowSumOfEventWeightsNUA[sc][power] = NULL;
14754   }
14755  }
14756  for(Int_t power=0;power<2;power++) // linear or quadratic 
14757  {
14758   fIntFlowSumOfEventWeights[power] = NULL;    
14759  }
14760  for(Int_t i=0;i<4;i++) // print on the screen the final results (0=RF, 1=RP, 2=POI, 3=RF (rebbined in M))
14761  {
14762   fPrintFinalResults[i] = kTRUE;
14763  }
14764  for(Int_t ci=0;ci<4;ci++) // correlation index or cumulant order
14765  {
14766   fIntFlowCorrelationsVsMPro[ci] = NULL;
14767   fIntFlowSquaredCorrelationsVsMPro[ci] = NULL;
14768   fIntFlowCorrelationsVsMHist[ci] = NULL;
14769   fIntFlowQcumulantsVsM[ci] = NULL;
14770   fIntFlowVsM[ci] = NULL;
14771   fIntFlowDetectorBiasVsM[ci] = NULL;
14772   for(Int_t lc=0;lc<2;lc++)
14773   {
14774    fIntFlowSumOfEventWeightsVsM[ci][lc] = NULL;
14775   }
14776  } 
14777  for(Int_t pi=0;pi<6;pi++) // product or covariance index
14778  {
14779   fIntFlowProductOfCorrelationsVsMPro[pi] = NULL;
14780   fIntFlowCovariancesVsM[pi] = NULL;
14781   fIntFlowSumOfProductOfEventWeightsVsM[pi] = NULL;
14782  } 
14783  for(Int_t ci=0;ci<64;ci++) // correlation index for all correlations vs M profiles (to be improved - hardwired 64)
14784  {
14785   fIntFlowCorrelationsAllVsMPro[ci] = NULL;
14786  } 
14787
14788 } // end of void AliFlowAnalysisWithQCumulants::InitializeArraysForIntFlow()
14789
14790 //=======================================================================================================================
14791
14792 void AliFlowAnalysisWithQCumulants::InitializeArraysForDiffFlow()
14793 {
14794  // Initialize all arrays needed to calculate differential flow.
14795  //  a) Initialize lists holding profiles;
14796  //  b) Initialize lists holding histograms;
14797  //  c) Initialize event-by-event quantities;
14798  //  d) Initialize profiles;
14799  //  e) Initialize histograms holding final results.
14800  
14801  // a) Initialize lists holding profiles;
14802  for(Int_t t=0;t<2;t++) // type (RP, POI)
14803  {
14804   for(Int_t pe=0;pe<2;pe++) // pt or eta
14805   {
14806    fDiffFlowCorrelationsProList[t][pe] = NULL;
14807    fDiffFlowProductOfCorrelationsProList[t][pe] = NULL;
14808    fDiffFlowCorrectionsProList[t][pe] = NULL;
14809   }
14810   // 2D:
14811   f2DDiffFlowCorrelationsProList[t] = NULL;
14812  }  
14813  
14814  // b) Initialize lists holding histograms;
14815  for(Int_t t=0;t<2;t++) // type (RP, POI)
14816  {
14817   for(Int_t pe=0;pe<2;pe++) // pt or eta
14818   {
14819    fDiffFlowCorrelationsHistList[t][pe] = NULL;
14820    for(Int_t power=0;power<2;power++)
14821    {
14822     fDiffFlowSumOfEventWeightsHistList[t][pe][power] = NULL;
14823    } // end of for(Int_t power=0;power<2;power++)  
14824    fDiffFlowSumOfProductOfEventWeightsHistList[t][pe] = NULL;
14825    fDiffFlowCorrectionsHistList[t][pe] = NULL;
14826    fDiffFlowCovariancesHistList[t][pe] = NULL;
14827    fDiffFlowCumulantsHistList[t][pe] = NULL;
14828    fDiffFlowDetectorBiasHistList[t][pe] = NULL;
14829    fDiffFlowHistList[t][pe] = NULL;
14830   } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
14831  } // enf of for(Int_t t=0;t<2;t++) // type (RP, POI) 
14832  
14833  // c) Initialize event-by-event quantities:
14834  // 1D:
14835  for(Int_t t=0;t<3;t++) // type (RP, POI, POI&&RP)
14836  {
14837   for(Int_t pe=0;pe<2;pe++) // pt or eta
14838   { 
14839    for(Int_t m=0;m<4;m++) // multiple of harmonic
14840    {
14841     for(Int_t k=0;k<9;k++) // power of weight
14842     {
14843      fReRPQ1dEBE[t][pe][m][k] = NULL;
14844      fImRPQ1dEBE[t][pe][m][k] = NULL;
14845      fs1dEBE[t][pe][k] = NULL; // to be improved (this doesn't need to be within loop over m)
14846     }   
14847    }
14848   }
14849  }
14850  // 1D:
14851  for(Int_t t=0;t<2;t++) // type (RP or POI)
14852  {
14853   for(Int_t pe=0;pe<2;pe++) // pt or eta
14854   { 
14855    for(Int_t sc=0;sc<2;sc++) // sin or cos terms
14856    {
14857     for(Int_t cti=0;cti<9;cti++) // correction term index
14858     {
14859      fDiffFlowCorrectionTermsForNUAEBE[t][pe][sc][cti] = NULL;
14860     }   
14861    }
14862   }
14863  }
14864  // 2D:  
14865  for(Int_t t=0;t<3;t++) // type (RP, POI, POI&&RP)
14866  {
14867   for(Int_t m=0;m<4;m++) // multiple of harmonic
14868   {
14869    for(Int_t k=0;k<9;k++) // power of weight
14870    {
14871     fReRPQ2dEBE[t][m][k] = NULL;
14872     fImRPQ2dEBE[t][m][k] = NULL;
14873     fs2dEBE[t][k] = NULL; // to be improved (this doesn't need to be within loop over m)
14874    }   
14875   }
14876  }
14877  
14878  // d) Initialize profiles:
14879  for(Int_t t=0;t<2;t++) // type: RP or POI
14880  { 
14881   for(Int_t pe=0;pe<2;pe++) // pt or eta
14882   {
14883    for(Int_t ci=0;ci<4;ci++) // correlation index
14884    {
14885     fDiffFlowCorrelationsPro[t][pe][ci] = NULL;
14886     fDiffFlowSquaredCorrelationsPro[t][pe][ci] = NULL;
14887    } // end of for(Int_t ci=0;ci<4;ci++)   
14888    for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
14889    {
14890     for(Int_t mci2=0;mci2<8;mci2++) // mixed correlation index
14891     {
14892      fDiffFlowProductOfCorrelationsPro[t][pe][mci1][mci2] = NULL;
14893     } // end of for(Int_t mci2=0;mci2<8;mci2++) // mixed correlation index
14894    } // end of for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index  
14895    // correction terms for nua:
14896    for(Int_t sc=0;sc<2;sc++) // sin or cos terms
14897    {
14898     for(Int_t cti=0;cti<9;cti++) // correction term index
14899     {
14900      fDiffFlowCorrectionTermsForNUAPro[t][pe][sc][cti] = NULL;
14901     }   
14902    }
14903    // other differential correlators:
14904    for(Int_t sc=0;sc<2;sc++) // sin or cos terms
14905    {
14906     for(Int_t ci=0;ci<1;ci++) // correction term index
14907     {
14908      fOtherDiffCorrelators[t][pe][sc][ci] = NULL;
14909     }   
14910    }
14911   } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
14912   for(Int_t ci=0;ci<4;ci++) // correlation index
14913   {
14914    f2DDiffFlowCorrelationsPro[t][ci] = NULL;
14915   }
14916  } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
14917   
14918  // e) Initialize histograms holding final results.
14919  for(Int_t t=0;t<2;t++) // type: RP or POI
14920  { 
14921   for(Int_t pe=0;pe<2;pe++) // pt or eta
14922   {
14923    for(Int_t ci=0;ci<4;ci++) // correlation index
14924    {
14925     fDiffFlowCorrelationsHist[t][pe][ci] = NULL;
14926     fDiffFlowCumulants[t][pe][ci] = NULL;
14927     fDiffFlowDetectorBias[t][pe][ci] = NULL;
14928     fDiffFlow[t][pe][ci] = NULL;
14929    } // end of for(Int_t ci=0;ci<4;ci++)    
14930    for(Int_t covarianceIndex=0;covarianceIndex<5;covarianceIndex++) 
14931    {
14932     fDiffFlowCovariances[t][pe][covarianceIndex] = NULL;     
14933    } // end of for(Int_t covarianceIndex=0;covarianceIndex<5;covarianceIndex++) 
14934    // correction terms for nua:
14935    for(Int_t sc=0;sc<2;sc++) // sin or cos terms
14936    {
14937     for(Int_t cti=0;cti<9;cti++) // correction term index
14938     {
14939      fDiffFlowCorrectionTermsForNUAHist[t][pe][sc][cti] = NULL;
14940     }   
14941    }
14942   } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
14943   for(Int_t ci=0;ci<4;ci++) // correlation index
14944   {
14945    f2DDiffFlowCumulants[t][ci] = NULL;
14946    f2DDiffFlow[t][ci] = NULL;
14947   }
14948  } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
14949  
14950  // sum of event weights for reduced correlations:
14951  for(Int_t t=0;t<2;t++) // type = RP or POI
14952  {
14953   for(Int_t pe=0;pe<2;pe++) // pt or eta
14954   {
14955    for(Int_t p=0;p<2;p++) // power of weight is 1 or 2
14956    {
14957     for(Int_t ew=0;ew<4;ew++) // event weight index for reduced correlations
14958     {
14959      fDiffFlowSumOfEventWeights[t][pe][p][ew] = NULL;
14960     } 
14961    }   
14962   }
14963  }
14964  // product of event weights for both types of correlations:
14965  for(Int_t t=0;t<2;t++) // type = RP or POI
14966  {
14967   for(Int_t pe=0;pe<2;pe++) // pt or eta
14968   {
14969    for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
14970    {
14971     for(Int_t mci2=0;mci2<8;mci2++) // mixed correlation index
14972     {
14973      fDiffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2] = NULL;
14974     } 
14975    }   
14976   }
14977  }
14978     
14979 } // end of AliFlowAnalysisWithQCumulants::InitializeArraysForDiffFlow()
14980
14981 //=======================================================================================================================
14982
14983 void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCumulants(TString type, TString ptOrEta)
14984 {
14985  // Calculate differential flow cumulants from measured multiparticle correlations.
14986  
14987  // REMARK: Cumulants calculated in this method are NOT corrected for non-uniform acceptance. 
14988  // This correction, if enabled via setter SetApplyCorrectionForNUA(Bool_t), is applied 
14989  // in the method CalculateDiffFlowCumulantsCorrectedForNUA(TString type, TString ptOrEta)
14990  
14991  Int_t t = 0;
14992  Int_t pe = 0;
14993
14994  if(type == "RP")
14995  {
14996   t = 0;
14997  } else if(type == "POI")
14998    {
14999     t = 1;
15000    } 
15001      
15002  if(ptOrEta == "Pt")
15003  {
15004   pe = 0;
15005  } else if(ptOrEta == "Eta")
15006    {
15007     pe = 1;
15008    } 
15009      
15010  // Common:
15011  Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
15012  
15013  // Correlation <<2>>: 
15014  Double_t two = fIntFlowCorrelationsHist->GetBinContent(1);
15015  Double_t twoError = fIntFlowCorrelationsHist->GetBinError(1);
15016  
15017  for(Int_t b=1;b<=nBinsPtEta[pe];b++)
15018  {
15019   // Reduced correlations:   
15020   Double_t twoPrime = fDiffFlowCorrelationsHist[t][pe][0]->GetBinContent(b); // <<2'>>
15021   Double_t twoPrimeError = fDiffFlowCorrelationsHist[t][pe][0]->GetBinError(b); // stat. error of <<2'>>
15022   Double_t fourPrime = fDiffFlowCorrelationsHist[t][pe][1]->GetBinContent(b); // <<4'>>
15023   Double_t fourPrimeError = fDiffFlowCorrelationsHist[t][pe][1]->GetBinError(b); // stat. error of <<4'>>
15024   // Covariances:
15025   Double_t wCovTwoTwoReduced = fDiffFlowCovariances[t][pe][0]->GetBinContent(b); // Cov(<2>,<2'>) * prefactor(<2>,<2'>)
15026   Double_t wCovTwoFourReduced = fDiffFlowCovariances[t][pe][1]->GetBinContent(b); // Cov(<2>,<4'>) * prefactor(<2>,<4'>)
15027   Double_t wCovTwoReducedFourReduced = fDiffFlowCovariances[t][pe][4]->GetBinContent(b); // Cov(<2'>,<4'>) * prefactor(<2'>,<4'>)
15028   // QC{2'}:
15029   Double_t qc2Prime = twoPrime; // QC{2'}
15030   Double_t qc2PrimeError = twoPrimeError; // stat. error of QC{2'}
15031   fDiffFlowCumulants[t][pe][0]->SetBinContent(b,qc2Prime); 
15032   fDiffFlowCumulants[t][pe][0]->SetBinError(b,qc2PrimeError); 
15033   // QC{4'}:
15034   Double_t qc4Prime = fourPrime - 2.*twoPrime*two; // QC{4'} = <<4'>> - 2*<<2'>><<2>>
15035   Double_t qc4PrimeError = 0.; // stat. error of QC{4'}
15036   Double_t qc4PrimeErrorSquared = 4.*pow(twoPrime,2.)*pow(twoError,2.)
15037                                 + 4.*pow(two,2.)*pow(twoPrimeError,2.)
15038                                 + pow(fourPrimeError,2.)
15039                                 + 8.*two*twoPrime*wCovTwoTwoReduced
15040                                 - 4.*twoPrime*wCovTwoFourReduced
15041                                 - 4.*two*wCovTwoReducedFourReduced;
15042   if(qc4PrimeErrorSquared>0.)
15043   {
15044    qc4PrimeError = pow(qc4PrimeErrorSquared,0.5);
15045   } 
15046   fDiffFlowCumulants[t][pe][1]->SetBinContent(b,qc4Prime); 
15047   fDiffFlowCumulants[t][pe][1]->SetBinError(b,qc4PrimeError); 
15048  } // end of for(Int_t p=1;p<=fnBinsPt;p++)
15049     
15050 } // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCumulants(TString type, Bool_t useParticleWeights, TString eventWeights); 
15051
15052 //=======================================================================================================================
15053
15054 void AliFlowAnalysisWithQCumulants::Calculate2DDiffFlowCumulants(TString type)
15055 {
15056  // Calculate 2D differential cumulants.
15057  
15058  // Remark: correction for detector effects and error propagation not implemented yet for 2D differential cumulants.
15059  
15060  Int_t t = 0;
15061
15062  if(type == "RP")
15063  {
15064   t = 0;
15065  } else if(type == "POI")
15066    {
15067     t = 1;
15068    }
15069        
15070  // Reference correlation <<2>>: 
15071  Double_t two = fIntFlowCorrelationsHist->GetBinContent(1);
15072  
15073  // Looping over all (pt,eta) bins and calculating differential flow cumulants: 
15074  for(Int_t p=1;p<=fnBinsPt;p++)
15075  {
15076   for(Int_t e=1;e<=fnBinsEta;e++)
15077   {
15078    // Reduced correlations:   
15079    Double_t twoPrime = f2DDiffFlowCorrelationsPro[t][0]->GetBinContent(f2DDiffFlowCorrelationsPro[t][0]->GetBin(p,e)); // <<2'>>(pt,eta)
15080    Double_t fourPrime = f2DDiffFlowCorrelationsPro[t][1]->GetBinContent(f2DDiffFlowCorrelationsPro[t][1]->GetBin(p,e)); // <<4'>>(pt,eta)
15081    // Cumulants:
15082    Double_t qc2Prime = twoPrime; // QC{2'} = <<2'>>   
15083    f2DDiffFlowCumulants[t][0]->SetBinContent(f2DDiffFlowCumulants[t][0]->GetBin(p,e),qc2Prime); 
15084    Double_t qc4Prime = fourPrime - 2.*twoPrime*two; // QC{4'} = <<4'>> - 2*<<2'>><<2>>
15085    f2DDiffFlowCumulants[t][1]->SetBinContent(f2DDiffFlowCumulants[t][1]->GetBin(p,e),qc4Prime); 
15086   } // end of for(Int_t e=1;e<=fnBinsEta;e++)
15087  } // end of for(Int_t p=1;p<=fnBinsPt;p++)
15088  
15089 } // end of void AliFlowAnalysisWithQCumulants::Calculate2DDiffFlowCumulants(TString type)
15090
15091 //=======================================================================================================================
15092
15093 void AliFlowAnalysisWithQCumulants::CalculateFinalResultsForRPandPOIIntegratedFlow(TString type)
15094 {
15095  // Calculate final results for integrated flow of RPs and POIs. 
15096   
15097  // to be improved - check if the integrated flow calculation here is actually correct 
15098   
15099  Int_t t = 0; // RP = 0, POI = 1
15100
15101  if(type == "RP")
15102  {
15103   t = 0;
15104  } else if(type == "POI")
15105    {
15106     t = 1;
15107    }
15108      
15109  // pt yield:    
15110  TH1F *yield2ndPt = NULL;
15111  TH1F *yield4thPt = NULL;
15112  TH1F *yield6thPt = NULL;
15113  TH1F *yield8thPt = NULL;
15114  
15115  if(type == "POI")
15116  {
15117   if(fFillMultipleControlHistograms)
15118   {
15119    yield2ndPt = (TH1F*)(fCommonHists2nd->GetHistPtPOI())->Clone();
15120    yield4thPt = (TH1F*)(fCommonHists4th->GetHistPtPOI())->Clone();
15121    yield6thPt = (TH1F*)(fCommonHists6th->GetHistPtPOI())->Clone();
15122    yield8thPt = (TH1F*)(fCommonHists8th->GetHistPtPOI())->Clone();  
15123   } else
15124     {
15125      yield2ndPt = (TH1F*)(fCommonHists->GetHistPtPOI())->Clone();
15126      yield4thPt = (TH1F*)(fCommonHists->GetHistPtPOI())->Clone();
15127      yield6thPt = (TH1F*)(fCommonHists->GetHistPtPOI())->Clone();
15128      yield8thPt = (TH1F*)(fCommonHists->GetHistPtPOI())->Clone();     
15129     }
15130  } 
15131  else if(type == "RP")
15132  {
15133   if(fFillMultipleControlHistograms)
15134   {
15135    yield2ndPt = (TH1F*)(fCommonHists2nd->GetHistPtRP())->Clone();
15136    yield4thPt = (TH1F*)(fCommonHists4th->GetHistPtRP())->Clone();
15137    yield6thPt = (TH1F*)(fCommonHists6th->GetHistPtRP())->Clone();
15138    yield8thPt = (TH1F*)(fCommonHists8th->GetHistPtRP())->Clone();  
15139   } else
15140     {
15141      yield2ndPt = (TH1F*)(fCommonHists->GetHistPtRP())->Clone();
15142      yield4thPt = (TH1F*)(fCommonHists->GetHistPtRP())->Clone();
15143      yield6thPt = (TH1F*)(fCommonHists->GetHistPtRP())->Clone();
15144      yield8thPt = (TH1F*)(fCommonHists->GetHistPtRP())->Clone();    
15145     } 
15146  } 
15147  
15148  if(!yield2ndPt){return;}
15149  if(!yield4thPt){return;}
15150  if(!yield6thPt){return;}
15151  if(!yield8thPt){return;} 
15152
15153  Int_t nBinsPt = yield2ndPt->GetNbinsX();
15154  
15155  TH1D *flow2ndPt = NULL;
15156  TH1D *flow4thPt = NULL;
15157  TH1D *flow6thPt = NULL;
15158  TH1D *flow8thPt = NULL;
15159  
15160  // to be improved (hardwired pt index)
15161  flow2ndPt = (TH1D*)fDiffFlow[t][0][0]->Clone();
15162  flow4thPt = (TH1D*)fDiffFlow[t][0][1]->Clone();
15163  flow6thPt = (TH1D*)fDiffFlow[t][0][2]->Clone();
15164  flow8thPt = (TH1D*)fDiffFlow[t][0][3]->Clone(); 
15165
15166  if(!flow2ndPt){return;}
15167  if(!flow4thPt){return;}
15168  if(!flow6thPt){return;}
15169  if(!flow8thPt){return;} 
15170    
15171  Double_t dvn2nd = 0., dvn4th = 0., dvn6th = 0., dvn8th = 0.; // differential flow
15172  Double_t dErrvn2nd = 0., dErrvn4th = 0., dErrvn6th = 0., dErrvn8th = 0.; // error on differential flow
15173  
15174  Double_t dVn2nd = 0., dVn4th = 0., dVn6th = 0., dVn8th = 0.; // integrated flow 
15175  Double_t dErrVn2nd = 0., dErrVn4th = 0., dErrVn6th = 0., dErrVn8th = 0.; // error on integrated flow
15176
15177  Double_t dYield2nd = 0., dYield4th = 0., dYield6th = 0., dYield8th = 0.; // pt yield 
15178  Double_t dSum2nd = 0., dSum4th = 0., dSum6th = 0., dSum8th = 0.; // needed for normalizing integrated flow
15179  
15180  // looping over pt bins:
15181  for(Int_t p=1;p<nBinsPt+1;p++)
15182  {
15183   dvn2nd = flow2ndPt->GetBinContent(p);
15184   dvn4th = flow4thPt->GetBinContent(p);
15185   dvn6th = flow6thPt->GetBinContent(p);
15186   dvn8th = flow8thPt->GetBinContent(p);
15187   
15188   dErrvn2nd = flow2ndPt->GetBinError(p);
15189   dErrvn4th = flow4thPt->GetBinError(p);
15190   dErrvn6th = flow6thPt->GetBinError(p);
15191   dErrvn8th = flow8thPt->GetBinError(p);
15192
15193   dYield2nd = yield2ndPt->GetBinContent(p);  
15194   dYield4th = yield4thPt->GetBinContent(p);
15195   dYield6th = yield6thPt->GetBinContent(p);
15196   dYield8th = yield8thPt->GetBinContent(p);
15197   
15198   dVn2nd += dvn2nd*dYield2nd;
15199   dVn4th += dvn4th*dYield4th;
15200   dVn6th += dvn6th*dYield6th;
15201   dVn8th += dvn8th*dYield8th;
15202   
15203   dSum2nd += dYield2nd;
15204   dSum4th += dYield4th;
15205   dSum6th += dYield6th;
15206   dSum8th += dYield8th;
15207   
15208   dErrVn2nd += dYield2nd*dYield2nd*dErrvn2nd*dErrvn2nd; // ro be improved (check this relation)
15209   dErrVn4th += dYield4th*dYield4th*dErrvn4th*dErrvn4th;
15210   dErrVn6th += dYield6th*dYield6th*dErrvn6th*dErrvn6th;
15211   dErrVn8th += dYield8th*dYield8th*dErrvn8th*dErrvn8th;
15212     
15213  } // end of for(Int_t p=1;p<nBinsPt+1;p++)
15214
15215  // normalizing the results for integrated flow:
15216  if(dSum2nd) 
15217  {
15218   dVn2nd /= dSum2nd;
15219   dErrVn2nd /= (dSum2nd*dSum2nd);
15220   dErrVn2nd = TMath::Sqrt(dErrVn2nd);
15221  } 
15222  if(dSum4th) 
15223  {
15224   dVn4th /= dSum4th;
15225   dErrVn4th /= (dSum4th*dSum4th);
15226   dErrVn4th = TMath::Sqrt(dErrVn4th);
15227  } 
15228  //if(dSum6th) dVn6th/=dSum6th;
15229  //if(dSum8th) dVn8th/=dSum8th;
15230   
15231  // storing the results for integrated flow in common histos: (to be improved: new method for this?)
15232  if(type == "POI")
15233  {
15234   fCommonHistsResults2nd->FillIntegratedFlowPOI(dVn2nd,dErrVn2nd); 
15235   fCommonHistsResults4th->FillIntegratedFlowPOI(dVn4th,dErrVn4th); 
15236   fCommonHistsResults6th->FillIntegratedFlowPOI(dVn6th,0.); // to be improved (errors)
15237   fCommonHistsResults8th->FillIntegratedFlowPOI(dVn8th,0.); // to be improved (errors)
15238  }
15239  else if (type == "RP")
15240  {
15241   fCommonHistsResults2nd->FillIntegratedFlowRP(dVn2nd,dErrVn2nd); 
15242   fCommonHistsResults4th->FillIntegratedFlowRP(dVn4th,dErrVn4th);
15243   fCommonHistsResults6th->FillIntegratedFlowRP(dVn6th,0.); // to be improved (errors)
15244   fCommonHistsResults8th->FillIntegratedFlowRP(dVn8th,0.); // to be improved (errors)
15245  }
15246  
15247  delete flow2ndPt;
15248  delete flow4thPt;
15249  //delete flow6thPt;
15250  //delete flow8thPt;
15251  
15252  delete yield2ndPt;
15253  delete yield4thPt;
15254  delete yield6thPt;
15255  delete yield8thPt;
15256            
15257 } // end of AliFlowAnalysisWithQCumulants::CalculateFinalResultsForRPandPOIIntegratedFlow(TString type)
15258
15259 //=======================================================================================================================
15260
15261 void AliFlowAnalysisWithQCumulants::InitializeArraysForDistributions()
15262 {
15263  // Initialize all arrays used for distributions.
15264  
15265  // a) Initialize arrays of histograms used to hold distributions of correlations; 
15266  // b) Initialize array to hold min and max values of correlations.
15267  
15268  // a) Initialize arrays of histograms used to hold distributions of correlations:
15269  for(Int_t di=0;di<4;di++) // distribution index
15270  {
15271   fDistributions[di] = NULL;
15272  }
15273  
15274  // b) Initialize default min and max values of correlations:
15275  //    (Remark: The default values bellow were chosen for v2=5% and M=500)
15276  fMinValueOfCorrelation[0] = -0.01; // <2>_min 
15277  fMaxValueOfCorrelation[0] = 0.04; // <2>_max 
15278  fMinValueOfCorrelation[1] = -0.00002; // <4>_min 
15279  fMaxValueOfCorrelation[1] = 0.00015; // <4>_max  
15280  fMinValueOfCorrelation[2] = -0.0000003; // <6>_min 
15281  fMaxValueOfCorrelation[2] = 0.0000006; // <6>_max  
15282  fMinValueOfCorrelation[3] = -0.000000006; // <8>_min 
15283  fMaxValueOfCorrelation[3] = 0.000000003; // <8>_max 
15284  
15285 } // end of void AliFlowAnalysisWithQCumulants::InitializeArraysForDistributions()
15286
15287 //=======================================================================================================================
15288
15289 void AliFlowAnalysisWithQCumulants::InitializeArraysForVarious()
15290 {
15291  // Initialize all arrays used for various unclassified objects.
15292  
15293  for(Int_t p=0;p<4;p++) // [v_min,v_max,refMult_min,refMult_max]
15294  {
15295   fPhiDistributionForOneEventSettings[p] = 0.;
15296  } 
15297    
15298 } //  end of void AliFlowAnalysisWithQCumulants::InitializeArraysForVarious()
15299
15300 //=======================================================================================================================
15301
15302 void AliFlowAnalysisWithQCumulants::BookEverythingForDistributions()
15303 {
15304  // a) Book profile to hold all flags for distributions of correlations;
15305  // b) Book all histograms to hold distributions of correlations.
15306  
15307  TString correlationIndex[4] = {"<2>","<4>","<6>","<8>"}; // to be improved (should I promote this to data members?)
15308   
15309  // a) Book profile to hold all flags for distributions of correlations:
15310  TString distributionsFlagsName = "fDistributionsFlags";
15311  distributionsFlagsName += fAnalysisLabel->Data();
15312  fDistributionsFlags = new TProfile(distributionsFlagsName.Data(),"Flags for Distributions of Correlations",9,0,9);
15313  fDistributionsFlags->SetTickLength(-0.01,"Y");
15314  fDistributionsFlags->SetMarkerStyle(25);
15315  fDistributionsFlags->SetLabelSize(0.05);
15316  fDistributionsFlags->SetLabelOffset(0.02,"Y");
15317  fDistributionsFlags->SetStats(kFALSE);
15318  fDistributionsFlags->GetXaxis()->SetBinLabel(1,"Store or not?");
15319  fDistributionsFlags->GetXaxis()->SetBinLabel(2,"<2>_{min}");
15320  fDistributionsFlags->GetXaxis()->SetBinLabel(3,"<2>_{max}");
15321  fDistributionsFlags->GetXaxis()->SetBinLabel(4,"<4>_{min}");
15322  fDistributionsFlags->GetXaxis()->SetBinLabel(5,"<4>_{max}");
15323  fDistributionsFlags->GetXaxis()->SetBinLabel(6,"<6>_{min}");
15324  fDistributionsFlags->GetXaxis()->SetBinLabel(7,"<6>_{max}");
15325  fDistributionsFlags->GetXaxis()->SetBinLabel(8,"<8>_{min}");
15326  fDistributionsFlags->GetXaxis()->SetBinLabel(9,"<8>_{max}");
15327  fDistributionsList->Add(fDistributionsFlags);
15328  
15329  // b) Book all histograms to hold distributions of correlations.
15330  if(fStoreDistributions)
15331  { 
15332   TString distributionsName = "fDistributions";
15333   distributionsName += fAnalysisLabel->Data();
15334   for(Int_t di=0;di<4;di++) // distribution index
15335   {
15336    fDistributions[di] = new TH1D(Form("Distribution of %s",correlationIndex[di].Data()),Form("Distribution of %s",correlationIndex[di].Data()),10000,fMinValueOfCorrelation[di],fMaxValueOfCorrelation[di]); 
15337    fDistributions[di]->SetXTitle(correlationIndex[di].Data());
15338    fDistributionsList->Add(fDistributions[di]);
15339   } // end of for(Int_t di=0;di<4;di++) // distribution index
15340  } // end of if(fStoreDistributions)
15341  
15342 } // end of void AliFlowAnalysisWithQCumulants::BookEverythingForDistributions()
15343
15344 //=======================================================================================================================
15345
15346 void AliFlowAnalysisWithQCumulants::BookEverythingForVarious()
15347 {
15348  // Book all objects for various unclassified quantities.
15349  
15350  if(!fStorePhiDistributionForOneEvent){return;}
15351  
15352  // a) Book histogram holding phi distribution for single event to illustrate flow.
15353  
15354  // a) Book histogram holding phi distribution for single event to illustrate flow:
15355  fPhiDistributionForOneEvent = new TH1D("fPhiDistributionForOneEvent","",360,0.,TMath::TwoPi());
15356  fPhiDistributionForOneEvent->GetXaxis()->SetTitle("#phi");
15357  fVariousList->Add(fPhiDistributionForOneEvent);
15358  
15359 } // end of void AliFlowAnalysisWithQCumulants::BookEverythingForVarious()
15360
15361 //=======================================================================================================================
15362
15363 void AliFlowAnalysisWithQCumulants::StoreFlagsForDistributions()
15364 {
15365  // Store all flags for distributiuons of correlations in profile fDistributionsFlags.
15366  
15367  if(!fDistributionsFlags)
15368  {
15369   cout<<"WARNING: fDistributionsFlags is NULL in AFAWQC::SDF() !!!!"<<endl;
15370   exit(0);
15371  } 
15372
15373  fDistributionsFlags->Fill(0.5,(Int_t)fStoreDistributions); // histos with distributions of correlations stored or not in the output file
15374  // store min and max values of correlations:
15375  for(Int_t di=0;di<4;di++) // distribution index
15376  {
15377   fDistributionsFlags->Fill(1.5+2.*(Double_t)di,fMinValueOfCorrelation[di]);
15378   fDistributionsFlags->Fill(2.5+2.*(Double_t)di,fMaxValueOfCorrelation[di]);
15379  }
15380      
15381 } // end of void AliFlowAnalysisWithQCumulants::StoreFlagsForDistributions()
15382
15383 //=======================================================================================================================
15384
15385 void AliFlowAnalysisWithQCumulants::StoreDistributionsOfCorrelations()
15386 {
15387  // Store distributions of correlations.
15388  
15389  if(!(fIntFlowCorrelationsEBE && fIntFlowEventWeightsForCorrelationsEBE))
15390  {
15391   cout<<"WARNING: fIntFlowCorrelationsEBE && fIntFlowEventWeightsForCorrelationsEBE"<<endl; 
15392   cout<<"         is NULL in AFAWQC::SDOC() !!!!"<<endl;
15393   exit(0);
15394  }
15395
15396  for(Int_t di=0;di<4;di++) // distribution index
15397  {
15398   if(!fDistributions[di])
15399   { 
15400    cout<<"WARNING: fDistributions[di] is NULL in AFAWQC::SDOC() !!!!"<<endl;
15401    cout<<"di = "<<di<<endl;
15402    exit(0);
15403   } else 
15404     {
15405      fDistributions[di]->Fill(fIntFlowCorrelationsEBE->GetBinContent(di+1),fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(di+1)); 
15406     } 
15407  } // end of for(Int_t di=0;di<4;di++) // distribution index
15408
15409 } // end of void AliFlowAnalysisWithQCumulants::StoreDistributionsOfCorrelations()
15410
15411 //=======================================================================================================================
15412
15413 void AliFlowAnalysisWithQCumulants::BookAndNestAllLists()
15414 {
15415  // Book and nest all lists nested in the base list fHistList.
15416  //  a) Book and nest lists for integrated flow;
15417  //  b) Book and nest lists for differential flow;
15418  //  c) Book and nest list for particle weights;
15419  //  d) Book and nest list for distributions;
15420  //  e) Book and nest list for various unclassified objects; 
15421  //  f) Book and nest list for other differential correlators;
15422  //  g) Book and nest list for nested loops;
15423  //  h) Book and nest lists for mixed harmonics;
15424  //  i) Book and nest lists for control histograms. 
15425  
15426  // a) Book and nest all lists for integrated flow:
15427  //  Base list for integrated flow:
15428  fIntFlowList = new TList();
15429  fIntFlowList->SetName("Integrated Flow");
15430  fIntFlowList->SetOwner(kTRUE);
15431  fHistList->Add(fIntFlowList);
15432  //  List holding profiles: 
15433  fIntFlowProfiles = new TList();
15434  fIntFlowProfiles->SetName("Profiles");
15435  fIntFlowProfiles->SetOwner(kTRUE);
15436  fIntFlowList->Add(fIntFlowProfiles);
15437  //  List holding all profiles with results for correlations vs M:
15438  if(fCalculateAllCorrelationsVsM)
15439  {
15440   fIntFlowAllCorrelationsVsM = new TList();
15441   fIntFlowAllCorrelationsVsM->SetName("Correlations vs M");
15442   fIntFlowAllCorrelationsVsM->SetOwner(kTRUE); 
15443   fIntFlowProfiles->Add(fIntFlowAllCorrelationsVsM);
15444  } // end of if(fCalculateAllCorrelationsVsM)
15445  //  List holding histograms with results:
15446  fIntFlowResults = new TList();
15447  fIntFlowResults->SetName("Results");
15448  fIntFlowResults->SetOwner(kTRUE);
15449  fIntFlowList->Add(fIntFlowResults);
15450  
15451  // b) Book and nest lists for differential flow:
15452  this->BookAndNestListsForDifferentialFlow();
15453  
15454  // c) Book and nest list for particle weights:
15455  fWeightsList->SetName("Weights");
15456  fWeightsList->SetOwner(kTRUE);   
15457  fHistList->Add(fWeightsList); 
15458
15459  // d) Book and nest list for distributions:
15460  fDistributionsList = new TList();
15461  fDistributionsList->SetName("Distributions");
15462  fDistributionsList->SetOwner(kTRUE);
15463  fHistList->Add(fDistributionsList);
15464  
15465  // e) Book and nest list for various unclassified objects:
15466  if(fStorePhiDistributionForOneEvent)
15467  {
15468   fVariousList = new TList();
15469   fVariousList->SetName("Various");
15470   fVariousList->SetOwner(kTRUE);
15471   fHistList->Add(fVariousList);
15472  }
15473   
15474  // f) Book and nest list for other differential correlators:
15475  fOtherDiffCorrelatorsList = new TList();
15476  fOtherDiffCorrelatorsList->SetName("Other differential correlators");
15477  fOtherDiffCorrelatorsList->SetOwner(kTRUE);
15478  if(fCalculateDiffFlow){fHistList->Add(fOtherDiffCorrelatorsList);} // TBI: Use another flag here instead of fCalculateDiffFlow 
15479   
15480  // g) Book and nest list for nested loops:
15481  fNestedLoopsList = new TList();
15482  fNestedLoopsList->SetName("Nested Loops");
15483  fNestedLoopsList->SetOwner(kTRUE);
15484  fHistList->Add(fNestedLoopsList);
15485
15486  // h) Book and nest lists for mixed harmonics:
15487  //  Base list for mixed harmonics:
15488  fMixedHarmonicsList = new TList();
15489  fMixedHarmonicsList->SetName("Mixed Harmonics");
15490  fMixedHarmonicsList->SetOwner(kTRUE);
15491  fHistList->Add(fMixedHarmonicsList);
15492  //  List holding profiles: 
15493  fMixedHarmonicsProfiles = new TList();
15494  fMixedHarmonicsProfiles->SetName("Profiles");
15495  fMixedHarmonicsProfiles->SetOwner(kTRUE);
15496  if(fCalculateMixedHarmonics){fMixedHarmonicsList->Add(fMixedHarmonicsProfiles);}
15497  //  List holding histograms with results:
15498  fMixedHarmonicsResults = new TList();
15499  fMixedHarmonicsResults->SetName("Results");
15500  fMixedHarmonicsResults->SetOwner(kTRUE);
15501  if(fCalculateMixedHarmonics){fMixedHarmonicsList->Add(fMixedHarmonicsResults);}
15502  //  List holding objects for statistical error propagation of mixed harmonics:
15503  fMixedHarmonicsErrorPropagation = new TList();
15504  fMixedHarmonicsErrorPropagation->SetName("Error Propagation");
15505  fMixedHarmonicsErrorPropagation->SetOwner(kTRUE);
15506  if(fCalculateMixedHarmonics){fMixedHarmonicsList->Add(fMixedHarmonicsErrorPropagation);}
15507
15508  // i) Book and nest lists for control histograms:
15509  //  Base list for mixed harmonics:
15510  fControlHistogramsList = new TList();
15511  fControlHistogramsList->SetName("Control Histograms");
15512  fControlHistogramsList->SetOwner(kTRUE);
15513  fHistList->Add(fControlHistogramsList);
15514
15515 } // end of void AliFlowAnalysisWithQCumulants::BookAndNestAllLists()
15516
15517 //=======================================================================================================================
15518
15519 void AliFlowAnalysisWithQCumulants::BookAndNestListsForDifferentialFlow()
15520 {
15521  // Book and nest lists for differential flow.
15522
15523  // Base list for differential flow objects:
15524  fDiffFlowList = new TList();
15525  fDiffFlowList->SetName("Differential Flow");
15526  fDiffFlowList->SetOwner(kTRUE); 
15527  fHistList->Add(fDiffFlowList);
15528  
15529  // Local flags: 
15530  TString typeFlag[2] = {"RP","POI"};  
15531  TString ptEtaFlag[2] = {"p_{T}","#eta"}; 
15532  TString powerFlag[2] = {"linear","quadratic"};   
15533
15534  // 2D:
15535  if(fCalculate2DDiffFlow)
15536  {
15537   fDiffFlow2D = new TList(); 
15538   fDiffFlow2D->SetName("2D");
15539   fDiffFlow2D->SetOwner(kTRUE);
15540   fDiffFlowList->Add(fDiffFlow2D); 
15541   for(Int_t t=0;t<2;t++)
15542   {
15543    f2DDiffFlowCorrelationsProList[t] = new TList();
15544    f2DDiffFlowCorrelationsProList[t]->SetOwner(kTRUE);
15545    f2DDiffFlowCorrelationsProList[t]->SetName(Form("Profiles with 2D correlations (%s)",typeFlag[t].Data()));
15546    fDiffFlow2D->Add(f2DDiffFlowCorrelationsProList[t]);
15547   } // end of for(Int_t t=0;t<2;t++)
15548  } // end of if(fCalculate2DDiffFlow)
15549
15550  // What follows bellow in this method is relevant only for 1D differential flow:
15551  if(!fCalculateDiffFlow){return;}
15552  
15553  // List holding profiles: 
15554  fDiffFlowProfiles = new TList(); 
15555  fDiffFlowProfiles->SetName("Profiles");
15556  fDiffFlowProfiles->SetOwner(kTRUE);
15557  fDiffFlowList->Add(fDiffFlowProfiles);
15558  // List holding histograms with results: 
15559  fDiffFlowResults = new TList();
15560  fDiffFlowResults->SetName("Results");
15561  fDiffFlowResults->SetOwner(kTRUE);
15562  fDiffFlowList->Add(fDiffFlowResults);
15563  // Flags used for naming nested lists in list fDiffFlowProfiles and fDiffFlowResults:  
15564  TList list;
15565  list.SetOwner(kTRUE);
15566  // Nested lists in fDiffFlowProfiles (~/Differential Flow/Profiles):
15567  for(Int_t t=0;t<2;t++) // type: RP or POI
15568  {
15569   for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
15570   {
15571    // list holding profiles with correlations:
15572    fDiffFlowCorrelationsProList[t][pe] = (TList*)list.Clone();
15573    fDiffFlowCorrelationsProList[t][pe]->SetName(Form("Profiles with correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15574    fDiffFlowProfiles->Add(fDiffFlowCorrelationsProList[t][pe]);
15575    // list holding profiles with products of correlations:
15576    fDiffFlowProductOfCorrelationsProList[t][pe] = (TList*)list.Clone();
15577    fDiffFlowProductOfCorrelationsProList[t][pe]->SetName(Form("Profiles with products of correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15578    fDiffFlowProfiles->Add(fDiffFlowProductOfCorrelationsProList[t][pe]);
15579    // list holding profiles with corrections:
15580    fDiffFlowCorrectionsProList[t][pe] = (TList*)list.Clone();
15581    fDiffFlowCorrectionsProList[t][pe]->SetName(Form("Profiles with correction terms for NUA (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15582    fDiffFlowProfiles->Add(fDiffFlowCorrectionsProList[t][pe]);   
15583   } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta 
15584  } // end of for(Int_t t=0;t<2;t++) // type: RP or POI   
15585  // nested lists in fDiffFlowResults (~/Differential Flow/Results):
15586  for(Int_t t=0;t<2;t++) // type: RP or POI
15587  {
15588   for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
15589   {
15590    // list holding histograms with correlations:
15591    fDiffFlowCorrelationsHistList[t][pe] = (TList*)list.Clone();
15592    fDiffFlowCorrelationsHistList[t][pe]->SetName(Form("Correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15593    fDiffFlowResults->Add(fDiffFlowCorrelationsHistList[t][pe]);
15594    // list holding histograms with corrections:
15595    fDiffFlowCorrectionsHistList[t][pe] = (TList*)list.Clone();
15596    fDiffFlowCorrectionsHistList[t][pe]->SetName(Form("Histograms with correction terms for NUA (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15597    fDiffFlowResults->Add(fDiffFlowCorrectionsHistList[t][pe]);   
15598    for(Int_t power=0;power<2;power++)
15599    {
15600     // list holding histograms with sums of event weights:
15601     fDiffFlowSumOfEventWeightsHistList[t][pe][power] = (TList*)list.Clone();
15602     fDiffFlowSumOfEventWeightsHistList[t][pe][power]->SetName(Form("Sum of %s event weights (%s, %s)",powerFlag[power].Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15603     fDiffFlowResults->Add(fDiffFlowSumOfEventWeightsHistList[t][pe][power]);    
15604    } // end of for(Int_t power=0;power<2;power++)
15605    // list holding histograms with sums of products of event weights:
15606    fDiffFlowSumOfProductOfEventWeightsHistList[t][pe] = (TList*)list.Clone();
15607    fDiffFlowSumOfProductOfEventWeightsHistList[t][pe]->SetName(Form("Sum of products of event weights (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15608    fDiffFlowResults->Add(fDiffFlowSumOfProductOfEventWeightsHistList[t][pe]);
15609    // list holding histograms with covariances of correlations:
15610    fDiffFlowCovariancesHistList[t][pe] = (TList*)list.Clone();
15611    fDiffFlowCovariancesHistList[t][pe]->SetName(Form("Covariances of correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15612    fDiffFlowResults->Add(fDiffFlowCovariancesHistList[t][pe]);
15613    // list holding histograms with differential Q-cumulants:
15614    fDiffFlowCumulantsHistList[t][pe] = (TList*)list.Clone();
15615    fDiffFlowCumulantsHistList[t][pe]->SetName(Form("Differential Q-cumulants (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15616    fDiffFlowResults->Add(fDiffFlowCumulantsHistList[t][pe]);   
15617    // list holding histograms which quantify detector bias to differential Q-cumulants:
15618    fDiffFlowDetectorBiasHistList[t][pe] = (TList*)list.Clone();
15619    fDiffFlowDetectorBiasHistList[t][pe]->SetName(Form("Detector bias (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15620    fDiffFlowResults->Add(fDiffFlowDetectorBiasHistList[t][pe]);   
15621    // list holding histograms with differential flow estimates from Q-cumulants:
15622    fDiffFlowHistList[t][pe] = (TList*)list.Clone();
15623    fDiffFlowHistList[t][pe]->SetName(Form("Differential flow (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15624    fDiffFlowResults->Add(fDiffFlowHistList[t][pe]);      
15625   } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
15626  } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
15627   
15628 } // end of void AliFlowAnalysisWithQCumulants::BookAndNestListsForDifferentialFlow()
15629
15630 //=======================================================================================================================
15631
15632 void AliFlowAnalysisWithQCumulants::FillCommonHistResultsDiffFlow(TString type)
15633 {
15634  // Fill common result histograms for differential flow.
15635  
15636  Int_t t = 0; 
15637
15638  if(type == "RP")
15639  {
15640   t = 0;
15641  } else if(type == "POI")
15642    {
15643     t = 1;
15644    } 
15645   
15646  // to be improved - check all pointers used in this method
15647      
15648  if(!(fCommonHistsResults2nd && fCommonHistsResults4th && fCommonHistsResults6th && fCommonHistsResults8th))
15649  {
15650   cout<<"WARNING: fCommonHistsResults2nd && fCommonHistsResults4th && fCommonHistsResults6th && fCommonHistsResults8th"<<endl; 
15651   cout<<"         is NULL in AFAWQC::FCHRIF() !!!!"<<endl;
15652   exit(0);
15653  }
15654  
15655  // pt:
15656  for(Int_t p=1;p<=fnBinsPt;p++)
15657  {
15658   Double_t v2 = fDiffFlow[t][0][0]->GetBinContent(p);
15659   Double_t v4 = fDiffFlow[t][0][1]->GetBinContent(p);
15660   Double_t v6 = fDiffFlow[t][0][2]->GetBinContent(p);
15661   Double_t v8 = fDiffFlow[t][0][3]->GetBinContent(p);
15662   
15663   Double_t v2Error = fDiffFlow[t][0][0]->GetBinError(p);
15664   Double_t v4Error = fDiffFlow[t][0][1]->GetBinError(p);
15665   //Double_t v6Error = fFinalFlow1D[t][pW][nua][0][2]->GetBinError(p);
15666   //Double_t v8Error = fFinalFlow1D[t][pW][nua][0][3]->GetBinError(p);
15667  
15668   if(type == "RP")
15669   {
15670    fCommonHistsResults2nd->FillDifferentialFlowPtRP(p,v2,v2Error);
15671    fCommonHistsResults4th->FillDifferentialFlowPtRP(p,v4,v4Error);
15672    fCommonHistsResults6th->FillDifferentialFlowPtRP(p,v6,0.);
15673    fCommonHistsResults8th->FillDifferentialFlowPtRP(p,v8,0.);
15674   } else if(type == "POI")
15675     {
15676      fCommonHistsResults2nd->FillDifferentialFlowPtPOI(p,v2,v2Error);
15677      fCommonHistsResults4th->FillDifferentialFlowPtPOI(p,v4,v4Error);
15678      fCommonHistsResults6th->FillDifferentialFlowPtPOI(p,v6,0.);
15679      fCommonHistsResults8th->FillDifferentialFlowPtPOI(p,v8,0.);
15680     }
15681  } // end of for(Int_t p=1;p<=fnBinsPt;p++)   
15682  
15683  // eta:
15684  if(!fCalculateDiffFlowVsEta){return;}
15685  for(Int_t e=1;e<=fnBinsEta;e++)
15686  {
15687   Double_t v2 = fDiffFlow[t][1][0]->GetBinContent(e);
15688   Double_t v4 = fDiffFlow[t][1][1]->GetBinContent(e);
15689   Double_t v6 = fDiffFlow[t][1][2]->GetBinContent(e);
15690   Double_t v8 = fDiffFlow[t][1][3]->GetBinContent(e);
15691   
15692   Double_t v2Error = fDiffFlow[t][1][0]->GetBinError(e);
15693   Double_t v4Error = fDiffFlow[t][1][1]->GetBinError(e);
15694   //Double_t v6Error = fDiffFlow[t][1][2]->GetBinError(e);
15695   //Double_t v8Error = fDiffFlow[t][1][3]->GetBinError(e);
15696  
15697   if(type == "RP")
15698   {
15699    fCommonHistsResults2nd->FillDifferentialFlowEtaRP(e,v2,v2Error);
15700    fCommonHistsResults4th->FillDifferentialFlowEtaRP(e,v4,v4Error);
15701    fCommonHistsResults6th->FillDifferentialFlowEtaRP(e,v6,0.);
15702    fCommonHistsResults8th->FillDifferentialFlowEtaRP(e,v8,0.);
15703   } else if(type == "POI")
15704     {
15705      fCommonHistsResults2nd->FillDifferentialFlowEtaPOI(e,v2,v2Error);
15706      fCommonHistsResults4th->FillDifferentialFlowEtaPOI(e,v4,v4Error);
15707      fCommonHistsResults6th->FillDifferentialFlowEtaPOI(e,v6,0.);
15708      fCommonHistsResults8th->FillDifferentialFlowEtaPOI(e,v8,0.);
15709     }
15710  } // end of for(Int_t e=1;e<=fnBinsEta;e++)    
15711  
15712 } // end of void AliFlowAnalysisWithQCumulants::FillCommonHistResultsDiffFlow(TString type, Bool_t useParticleWeights, TString eventWeights, Bool_t correctedForNUA)
15713
15714 //=======================================================================================================================
15715
15716 void AliFlowAnalysisWithQCumulants::CommonConstants(TString method)
15717 {
15718  // Access and store common constants.
15719  
15720  // a) If this method was called in Init() access common constants from AliFlowCommonConstants;
15721  // b) If this method was called in Init() book and fill TProfile to hold constants accessed in a);
15722  // c) If this method was called in Finish() access common constants from TProfile booked and filled in b).
15723
15724  if(method == "Init")
15725  {
15726   // a) If this method was called in Init() access common constants from AliFlowCommonConstants:
15727   fnBinsPhi = AliFlowCommonConstants::GetMaster()->GetNbinsPhi();
15728   fPhiMin = AliFlowCommonConstants::GetMaster()->GetPhiMin();        
15729   fPhiMax = AliFlowCommonConstants::GetMaster()->GetPhiMax();
15730   if(fnBinsPhi){fPhiBinWidth = (fPhiMax-fPhiMin)/fnBinsPhi;}  
15731   fnBinsPt = AliFlowCommonConstants::GetMaster()->GetNbinsPt();
15732   fPtMin = AliFlowCommonConstants::GetMaster()->GetPtMin();          
15733   fPtMax = AliFlowCommonConstants::GetMaster()->GetPtMax();
15734   if(fnBinsPt){fPtBinWidth = (fPtMax-fPtMin)/fnBinsPt;}  
15735   fnBinsEta = AliFlowCommonConstants::GetMaster()->GetNbinsEta();
15736   fEtaMin = AliFlowCommonConstants::GetMaster()->GetEtaMin();        
15737   fEtaMax = AliFlowCommonConstants::GetMaster()->GetEtaMax();
15738   if(fnBinsEta){fEtaBinWidth = (fEtaMax-fEtaMin)/fnBinsEta;}  
15739   
15740   // b) If this method was called in Init() book and fill TProfile to hold constants accessed in a):
15741   TString fCommonConstantsName = "fCommonConstants";
15742   fCommonConstantsName += fAnalysisLabel->Data();
15743   fCommonConstants = new TProfile(fCommonConstantsName.Data(),"Common constants",9,0.,9.);
15744   fCommonConstants->SetLabelSize(0.05);
15745   fCommonConstants->GetXaxis()->SetBinLabel(1,"nBins (#phi)");
15746   fCommonConstants->Fill(0.5,fnBinsPhi);
15747   fCommonConstants->GetXaxis()->SetBinLabel(2,"#phi_{min}");
15748   fCommonConstants->Fill(1.5,fPhiMin);
15749   fCommonConstants->GetXaxis()->SetBinLabel(3,"#phi_{max}");
15750   fCommonConstants->Fill(2.5,fPhiMax);
15751   fCommonConstants->GetXaxis()->SetBinLabel(4,"nBins (p_{t})");
15752   fCommonConstants->Fill(3.5,fnBinsPt);
15753   fCommonConstants->GetXaxis()->SetBinLabel(5,"(p_{t})_{min}");
15754   fCommonConstants->Fill(4.5,fPtMin);
15755   fCommonConstants->GetXaxis()->SetBinLabel(6,"(p_{t})_{max}");
15756   fCommonConstants->Fill(5.5,fPtMax);
15757   fCommonConstants->GetXaxis()->SetBinLabel(7,"nBins (#eta)");
15758   fCommonConstants->Fill(6.5,fnBinsEta);
15759   fCommonConstants->GetXaxis()->SetBinLabel(8,"#eta_{min}");
15760   fCommonConstants->Fill(7.5,fEtaMin);
15761   fCommonConstants->GetXaxis()->SetBinLabel(9,"#eta_{max}");
15762   fCommonConstants->Fill(8.5,fEtaMax);
15763   fHistList->Add(fCommonConstants); 
15764  } // end of if(method == "Init")
15765  else if(method == "Finish")
15766  {
15767   // c) If this method was called in Finish() access common constants from TProfile booked and filled in b):
15768   if(!fCommonConstants)
15769   {
15770    printf("\n WARNING (QC): fCommonConstants is NULL in AFAWQC::AC(\"%s\") !!!!\n\n",method.Data());
15771    exit(0);
15772   } 
15773   fnBinsPhi = (Int_t)fCommonConstants->GetBinContent(1);
15774   fPhiMin = fCommonConstants->GetBinContent(2);      
15775   fPhiMax = fCommonConstants->GetBinContent(3);
15776   if(fnBinsPhi){fPhiBinWidth = (fPhiMax-fPhiMin)/fnBinsPhi;}  
15777   fnBinsPt = (Int_t)fCommonConstants->GetBinContent(4);
15778   fPtMin = fCommonConstants->GetBinContent(5);       
15779   fPtMax = fCommonConstants->GetBinContent(6);
15780   if(fnBinsPt){fPtBinWidth = (fPtMax-fPtMin)/fnBinsPt;}  
15781   fnBinsEta = (Int_t)fCommonConstants->GetBinContent(7);
15782   fEtaMin = fCommonConstants->GetBinContent(8);      
15783   fEtaMax = fCommonConstants->GetBinContent(9);
15784   if(fnBinsEta){fEtaBinWidth = (fEtaMax-fEtaMin)/fnBinsEta;}  
15785  } // end of else if(method == "Finish")
15786
15787 } // end of void AliFlowAnalysisWithQCumulants::CommonConstants(TString method)
15788
15789 //=======================================================================================================================
15790
15791 void AliFlowAnalysisWithQCumulants::CrossCheckSettings()
15792 {
15793  // a) Cross-check if the choice for multiplicity weights make sense;
15794  // b) Cross-check if the choice for multiplicity itself make sense.
15795
15796  // a) Cross-check if the choice for multiplicity weights make sense:
15797  if((!fMultiplicityWeight->Contains("combinations")) && 
15798     (!fMultiplicityWeight->Contains("unit")) &&
15799     (!fMultiplicityWeight->Contains("multiplicity")) )
15800  {
15801   cout<<"WARNING (QC): Multiplicity weight can be either \"combinations\", \"unit\""<<endl;
15802   cout<<"              or \"multiplicity\". Certainly not \""<<fMultiplicityWeight->Data()<<"\"."<<endl;
15803   exit(0);
15804  }   
15805
15806 } // end of void AliFlowAnalysisWithQCumulants::CrossCheckSettings()
15807
15808 //=======================================================================================================================
15809
15810 void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfEventWeights()
15811 {
15812  // Calculate sum of linear and quadratic event weights for correlations.
15813  
15814  // TBI re-think what is the right multiplicity when particle weights are used! 
15815
15816  // Multiplicity bin of an event (relevant for all histos vs M): 
15817  Double_t dMultiplicityBin = 0.;
15818  if(fMultiplicityIs==AliFlowCommonConstants::kRP)
15819  {
15820   dMultiplicityBin = fNumberOfRPsEBE+0.5;
15821  } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
15822    {
15823     dMultiplicityBin = fReferenceMultiplicityEBE+0.5;
15824    } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
15825      {
15826       dMultiplicityBin = fNumberOfPOIsEBE+0.5;
15827      }
15828                         
15829  for(Int_t p=0;p<2;p++) // power-1
15830  {
15831   for(Int_t ci=0;ci<4;ci++) // correlation index
15832   { 
15833    fIntFlowSumOfEventWeights[p]->Fill(ci+0.5,pow(fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci+1),p+1)); 
15834    if(fCalculateCumulantsVsM)
15835    {
15836     fIntFlowSumOfEventWeightsVsM[ci][p]->Fill(dMultiplicityBin,pow(fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci+1),p+1)); // to be improved: dMult => sum of weights?
15837    }
15838   }
15839  }
15840   
15841 } // end of void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfEventWeights()
15842
15843 //=======================================================================================================================
15844
15845 void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfEventWeightsNUA()
15846 {
15847  // Calculate sum of linear and quadratic event weights for NUA terms.
15848                        
15849  for(Int_t sc=0;sc<2;sc++) // sin or cos terms
15850  {
15851   for(Int_t p=0;p<2;p++) // power-1
15852   {
15853    for(Int_t ci=0;ci<4;ci++) // nua term index
15854    { 
15855     fIntFlowSumOfEventWeightsNUA[sc][p]->Fill(ci+0.5,pow(fIntFlowEventWeightForCorrectionTermsForNUAEBE[sc]->GetBinContent(ci+1),p+1)); 
15856    }
15857   }
15858  }
15859   
15860 } // end of void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfEventWeightsNUA()
15861
15862 //=======================================================================================================================
15863
15864 void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfProductOfEventWeights()
15865 {
15866  // Calculate sum of product of event weights for correlations.
15867   
15868  // TBI re-think what is the right multiplicity when particle weights are used!
15869
15870  // Multiplicity bin of an event (relevant for all histos vs M): 
15871  Double_t dMultiplicityBin = 0.;
15872  if(fMultiplicityIs==AliFlowCommonConstants::kRP)
15873  {
15874   dMultiplicityBin = fNumberOfRPsEBE+0.5;
15875  } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
15876    {
15877     dMultiplicityBin = fReferenceMultiplicityEBE+0.5;
15878    } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
15879      {
15880       dMultiplicityBin = fNumberOfPOIsEBE+0.5;
15881      }
15882   
15883  Int_t counter = 0;
15884  
15885  for(Int_t ci1=1;ci1<4;ci1++)
15886  {
15887   for(Int_t ci2=ci1+1;ci2<=4;ci2++)
15888   {
15889    fIntFlowSumOfProductOfEventWeights->Fill(0.5+counter,
15890                                             fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci1)*
15891                                             fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci2));
15892    if(fCalculateCumulantsVsM)
15893    {                                                                                    
15894     fIntFlowSumOfProductOfEventWeightsVsM[counter]->Fill(dMultiplicityBin, // to be improved: dMult => sum of weights?
15895                                                          fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci1)*
15896                                                          fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci2));
15897    } // end of if(fCalculateCumulantsVsM)
15898    counter++;                                         
15899   }
15900  }
15901
15902 } // end of void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfProductOfEventWeights()
15903
15904 //=======================================================================================================================
15905
15906 void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfProductOfEventWeightsNUA()
15907 {
15908  // Calculate sum of product of event weights for NUA terms.
15909   
15910  // w_{<2>} * w_{<cos(#phi)>}:
15911  fIntFlowSumOfProductOfEventWeightsNUA->Fill(0.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
15912                                                  fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1));
15913  // w_{<2>} * w_{<sin(#phi)>}:
15914  fIntFlowSumOfProductOfEventWeightsNUA->Fill(1.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
15915                                                  fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
15916  // w_{<cos(#phi)> * w_{<sin(#phi)>}:
15917  fIntFlowSumOfProductOfEventWeightsNUA->Fill(2.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)*
15918                                                  fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
15919  // w_{<2>} * w{<cos(phi1+phi2)>}
15920  fIntFlowSumOfProductOfEventWeightsNUA->Fill(3.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
15921                                                  fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)); 
15922  // w_{<2>} * w{<sin(phi1+phi2)>}
15923  fIntFlowSumOfProductOfEventWeightsNUA->Fill(4.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
15924                                                  fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
15925  // w_{<2>} * w{<cos(phi1-phi2-phi3)>}
15926  fIntFlowSumOfProductOfEventWeightsNUA->Fill(5.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
15927                                                  fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
15928  // w_{<2>} * w{<sin(phi1-phi2-phi3)>}
15929  fIntFlowSumOfProductOfEventWeightsNUA->Fill(6.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
15930                                                  fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));  
15931  // w_{<4>} * w{<cos(phi1)>}
15932  fIntFlowSumOfProductOfEventWeightsNUA->Fill(7.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
15933                                                  fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1));
15934  // w_{<4>} * w{<sin(phi1)>}
15935  fIntFlowSumOfProductOfEventWeightsNUA->Fill(8.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
15936                                                  fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
15937  // w_{<4>} * w{<cos(phi1+phi2)>}
15938  fIntFlowSumOfProductOfEventWeightsNUA->Fill(9.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
15939                                                  fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)); 
15940  // w_{<4>} * w{<sin(phi1+phi2)>}
15941  fIntFlowSumOfProductOfEventWeightsNUA->Fill(10.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
15942                                                   fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
15943  // w_{<4>} * w{<cos(phi1-phi2-phi3)>}
15944  fIntFlowSumOfProductOfEventWeightsNUA->Fill(11.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
15945                                                   fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
15946  // w_{<4>} * w{<sin(phi1-phi2-phi3)>}
15947  fIntFlowSumOfProductOfEventWeightsNUA->Fill(12.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
15948                                                   fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
15949  // w_{<cos(phi1)>} * w{<cos(phi1+phi2)>}
15950  fIntFlowSumOfProductOfEventWeightsNUA->Fill(13.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)*
15951                                                   fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
15952  // w_{<cos(phi1)>} * w{<sin(phi1+phi2)>}
15953  fIntFlowSumOfProductOfEventWeightsNUA->Fill(14.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)*
15954                                                   fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2)); 
15955  // w_{<cos(phi1)>} * w{<cos(phi1-phi2-phi3)>}
15956  fIntFlowSumOfProductOfEventWeightsNUA->Fill(15.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)*
15957                                                   fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
15958  // w_{<cos(phi1)>} * w{<sin(phi1-phi2-phi3)>}
15959  fIntFlowSumOfProductOfEventWeightsNUA->Fill(16.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)*
15960                                                   fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
15961  // w_{<sin(phi1)>} * w{<cos(phi1+phi2)>}
15962  fIntFlowSumOfProductOfEventWeightsNUA->Fill(17.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)*
15963                                                   fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
15964  // w_{<sin(phi1)>} * w{<sin(phi1+phi2)>}
15965  fIntFlowSumOfProductOfEventWeightsNUA->Fill(18.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)*
15966                                                   fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
15967  // w_{<sin(phi1)>} * w{<cos(phi1-phi2-phi3)>}
15968  fIntFlowSumOfProductOfEventWeightsNUA->Fill(19.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)*
15969                                                   fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
15970  // w_{<sin(phi1)>} * w{<sin(phi1-phi2-phi3)>}
15971  fIntFlowSumOfProductOfEventWeightsNUA->Fill(20.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)*
15972                                                   fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3)); 
15973  // w_{<cos(phi1+phi2)>} * w{<sin(phi1+phi2))>}
15974  fIntFlowSumOfProductOfEventWeightsNUA->Fill(21.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)*
15975                                                   fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2)); 
15976  // w_{<cos(phi1+phi2)>} * w{<cos(phi1-phi2-phi3)>}
15977  fIntFlowSumOfProductOfEventWeightsNUA->Fill(22.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)*
15978                                                   fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3)); 
15979  // w_{<cos(phi1+phi2)>} * w{<sin(phi1-phi2-phi3)>}
15980  fIntFlowSumOfProductOfEventWeightsNUA->Fill(23.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)*
15981                                                   fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3)); 
15982  // w_{<sin(phi1+phi2)>} * w{<cos(phi1-phi2-phi3)>}
15983  fIntFlowSumOfProductOfEventWeightsNUA->Fill(24.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2)*
15984                                                   fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3)); 
15985  // w_{<sin(phi1+phi2)>} * w{<sin(phi1-phi2-phi3)>}
15986  fIntFlowSumOfProductOfEventWeightsNUA->Fill(25.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2)*
15987                                                   fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3)); 
15988  // w_{<cos(phi1-phi2-phi3)>} * w{<sin(phi1-phi2-phi3)>}
15989  fIntFlowSumOfProductOfEventWeightsNUA->Fill(26.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3)*
15990                                                   fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
15991
15992 } // end of void AliFlowAnalysisWithQCumulants::CalculateIntFlowIntFlowSumOfProductOfEventWeightsNUA()
15993
15994 //=======================================================================================================================
15995
15996 void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrelations(TString type, TString ptOrEta)
15997 {
15998  // Calculate reduced correlations for RPs or POIs for all pt and eta bins.
15999
16000  // Multiplicity:
16001  Double_t dMult = (*fSpk)(0,0);
16002  
16003  // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n: 
16004  Double_t dReQ1n = (*fReQ)(0,0);
16005  Double_t dReQ2n = (*fReQ)(1,0);
16006  //Double_t dReQ3n = (*fReQ)(2,0);
16007  //Double_t dReQ4n = (*fReQ)(3,0);
16008  Double_t dImQ1n = (*fImQ)(0,0);
16009  Double_t dImQ2n = (*fImQ)(1,0);
16010  //Double_t dImQ3n = (*fImQ)(2,0);
16011  //Double_t dImQ4n = (*fImQ)(3,0);
16012
16013  // reduced correlations are stored in fDiffFlowCorrelationsPro[0=RP,1=POI][0=pt,1=eta][correlation index]. Correlation index runs as follows:
16014  // 
16015  // 0: <<2'>>
16016  // 1: <<4'>>
16017  // 2: <<6'>>
16018  // 3: <<8'>>
16019  
16020  //Int_t t = 0; // type flag 
16021  Int_t pe = 0; // ptEta flag
16022  
16023  if(type == "RP")
16024  {
16025   //t = 0;
16026  } else if(type == "POI")
16027    {
16028     //t = 1;
16029    }
16030
16031  if(ptOrEta == "Pt")
16032  {
16033   pe = 0;
16034  } else if(ptOrEta == "Eta")
16035    {
16036     pe = 1;
16037    }
16038     
16039  Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
16040  Double_t minPtEta[2] = {fPtMin,fEtaMin};
16041  //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
16042  Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
16043
16044  // looping over all bins and calculating reduced correlations: 
16045  for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16046  {
16047   // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin): 
16048   Double_t p1n0kRe = 0.;
16049   Double_t p1n0kIm = 0.;
16050
16051   // number of POIs in particular pt or eta bin:
16052   Double_t mp = 0.;
16053
16054   // real and imaginary parts of q_{m*n,0} (non-weighted Q-vector evaluated for particles which are both RPs and POIs in particular pt or eta bin):
16055   Double_t q1n0kRe = 0.;
16056   Double_t q1n0kIm = 0.;
16057   Double_t q2n0kRe = 0.;
16058   Double_t q2n0kIm = 0.;
16059
16060   // number of particles which are both RPs and POIs in particular pt or eta bin:
16061   Double_t mq = 0.;
16062    
16063   if(type == "POI")
16064   {
16065    // q_{m*n,0}:
16066    q1n0kRe = fReRPQ1dEBE[2][pe][0][0]->GetBinContent(fReRPQ1dEBE[2][pe][0][0]->GetBin(b))
16067            * fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b));
16068    q1n0kIm = fImRPQ1dEBE[2][pe][0][0]->GetBinContent(fImRPQ1dEBE[2][pe][0][0]->GetBin(b))
16069            * fImRPQ1dEBE[2][pe][0][0]->GetBinEntries(fImRPQ1dEBE[2][pe][0][0]->GetBin(b));
16070    q2n0kRe = fReRPQ1dEBE[2][pe][1][0]->GetBinContent(fReRPQ1dEBE[2][pe][1][0]->GetBin(b))
16071            * fReRPQ1dEBE[2][pe][1][0]->GetBinEntries(fReRPQ1dEBE[2][pe][1][0]->GetBin(b));
16072    q2n0kIm = fImRPQ1dEBE[2][pe][1][0]->GetBinContent(fImRPQ1dEBE[2][pe][1][0]->GetBin(b))
16073            * fImRPQ1dEBE[2][pe][1][0]->GetBinEntries(fImRPQ1dEBE[2][pe][1][0]->GetBin(b));         
16074                  
16075    mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
16076   } 
16077   else if(type == "RP")
16078   {
16079    // q_{m*n,0}:
16080    q1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
16081            * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
16082    q1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
16083            * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
16084    q2n0kRe = fReRPQ1dEBE[0][pe][1][0]->GetBinContent(fReRPQ1dEBE[0][pe][1][0]->GetBin(b))
16085            * fReRPQ1dEBE[0][pe][1][0]->GetBinEntries(fReRPQ1dEBE[0][pe][1][0]->GetBin(b));
16086    q2n0kIm = fImRPQ1dEBE[0][pe][1][0]->GetBinContent(fImRPQ1dEBE[0][pe][1][0]->GetBin(b))
16087            * fImRPQ1dEBE[0][pe][1][0]->GetBinEntries(fImRPQ1dEBE[0][pe][1][0]->GetBin(b));         
16088                  
16089    mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)  
16090   }
16091       
16092    if(type == "POI")
16093    {
16094     // p_{m*n,0}:
16095     p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
16096             * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
16097     p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))  
16098             * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
16099             
16100     mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
16101     
16102     //t = 1; // typeFlag = RP or POI
16103    }
16104    else if(type == "RP")
16105    {
16106     // p_{m*n,0} = q_{m*n,0}:
16107     p1n0kRe = q1n0kRe; 
16108     p1n0kIm = q1n0kIm; 
16109             
16110     mp = mq; 
16111     
16112     //t = 0; // typeFlag = RP or POI
16113    }
16114       
16115    // 2'-particle correlation for particular pt or eta bin:
16116    Double_t two1n1nPtEta = 0.;
16117    Double_t mWeight2pPrime = 0.; // multiplicity weight for <2'>
16118    if(mp*dMult-mq)
16119    {
16120     two1n1nPtEta = (p1n0kRe*dReQ1n+p1n0kIm*dImQ1n-mq)
16121                  / (mp*dMult-mq);
16122     // determine multiplicity weight:
16123     if(fMultiplicityWeight->Contains("combinations"))
16124     {
16125      mWeight2pPrime = mp*dMult-mq;
16126     } else if(fMultiplicityWeight->Contains("unit"))
16127       {
16128        mWeight2pPrime = 1.;    
16129       } 
16130     if(type == "POI") // to be improved (I do not this if)
16131     { 
16132      // fill profile to get <<2'>> for POIs
16133      fDiffFlowCorrelationsPro[1][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nPtEta,mWeight2pPrime);
16134      // fill profile to get <<2'>^2> for POIs
16135      fDiffFlowSquaredCorrelationsPro[1][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nPtEta*two1n1nPtEta,mWeight2pPrime);   
16136      // histogram to store <2'> for POIs e-b-e (needed in some other methods):
16137      fDiffFlowCorrelationsEBE[1][pe][0]->SetBinContent(b,two1n1nPtEta);      
16138      fDiffFlowEventWeightsForCorrelationsEBE[1][pe][0]->SetBinContent(b,mWeight2pPrime);      
16139     }
16140     else if(type == "RP") // to be improved (I do not this if)
16141     {
16142      // profile to get <<2'>> for RPs:
16143      fDiffFlowCorrelationsPro[0][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nPtEta,mWeight2pPrime);     
16144      // profile to get <<2'>^2> for RPs:
16145      fDiffFlowSquaredCorrelationsPro[0][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nPtEta*two1n1nPtEta,mWeight2pPrime);          
16146      // histogram to store <2'> for RPs e-b-e (needed in some other methods):
16147      fDiffFlowCorrelationsEBE[0][pe][0]->SetBinContent(b,two1n1nPtEta); 
16148      fDiffFlowEventWeightsForCorrelationsEBE[0][pe][0]->SetBinContent(b,mWeight2pPrime); 
16149     }
16150    } // end of if(mp*dMult-mq)
16151   
16152    // 4'-particle correlation:
16153    Double_t four1n1n1n1nPtEta = 0.;
16154    Double_t mWeight4pPrime = 0.; // multiplicity weight for <4'>
16155    if((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16156        + mq*(dMult-1.)*(dMult-2.)*(dMult-3.)) // to be improved (introduce a new variable for this expression)
16157    {
16158     four1n1n1n1nPtEta = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16159                       - q2n0kRe*(pow(dReQ1n,2.)-pow(dImQ1n,2.))
16160                       - 2.*q2n0kIm*dReQ1n*dImQ1n
16161                       - p1n0kRe*(dReQ1n*dReQ2n+dImQ1n*dImQ2n)
16162                       + p1n0kIm*(dImQ1n*dReQ2n-dReQ1n*dImQ2n)
16163                       - 2.*dMult*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16164                       - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*mq                      
16165                       + 6.*(q1n0kRe*dReQ1n+q1n0kIm*dImQ1n)                                            
16166                       + 1.*(q2n0kRe*dReQ2n+q2n0kIm*dImQ2n)                      
16167                       + 2.*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)                       
16168                       + 2.*mq*dMult                      
16169                       - 6.*mq)        
16170                       / ((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16171                           + mq*(dMult-1.)*(dMult-2.)*(dMult-3.)); 
16172     // determine multiplicity weight:
16173     if(fMultiplicityWeight->Contains("combinations"))
16174     {
16175      mWeight4pPrime = (mp-mq)*dMult*(dMult-1.)*(dMult-2.) + mq*(dMult-1.)*(dMult-2.)*(dMult-3.);
16176     } else if(fMultiplicityWeight->Contains("unit"))
16177       {
16178        mWeight4pPrime = 1.;    
16179       }     
16180     if(type == "POI")
16181     {
16182      // profile to get <<4'>> for POIs:
16183      fDiffFlowCorrelationsPro[1][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nPtEta,mWeight4pPrime);      
16184      // profile to get <<4'>^2> for POIs:
16185      fDiffFlowSquaredCorrelationsPro[1][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nPtEta*four1n1n1n1nPtEta,mWeight4pPrime); 
16186      // histogram to store <4'> for POIs e-b-e (needed in some other methods):
16187      fDiffFlowCorrelationsEBE[1][pe][1]->SetBinContent(b,four1n1n1n1nPtEta);                               
16188      fDiffFlowEventWeightsForCorrelationsEBE[1][pe][1]->SetBinContent(b,mWeight4pPrime);                               
16189     }
16190     else if(type == "RP")
16191     {
16192      // profile to get <<4'>> for RPs:
16193      fDiffFlowCorrelationsPro[0][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nPtEta,mWeight4pPrime);    
16194      // profile to get <<4'>^2> for RPs:
16195      fDiffFlowSquaredCorrelationsPro[0][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nPtEta*four1n1n1n1nPtEta,mWeight4pPrime);    
16196      // histogram to store <4'> for RPs e-b-e (needed in some other methods):
16197      fDiffFlowCorrelationsEBE[0][pe][1]->SetBinContent(b,four1n1n1n1nPtEta);                   
16198      fDiffFlowEventWeightsForCorrelationsEBE[0][pe][1]->SetBinContent(b,mWeight4pPrime);                   
16199     }
16200    } // end of if((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16201      //            +mq*(dMult-1.)*(dMult-2.)*(dMult-3.))
16202    
16203  } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16204  
16205    
16206 } // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrelations(TString type, TString ptOrEta);
16207
16208 //=======================================================================================================================
16209
16210 void AliFlowAnalysisWithQCumulants::CalculateOtherDiffCorrelators(TString type, TString ptOrEta)
16211 {
16212  // Calculate other differential correlators for RPs or POIs for all pt and eta bins.
16213  
16214  // Multiplicity:
16215  Double_t dMult = (*fSpk)(0,0);
16216  
16217  // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n: 
16218  Double_t dReQ1n = (*fReQ)(0,0);
16219  Double_t dReQ2n = (*fReQ)(1,0);
16220  Double_t dReQ3n = (*fReQ)(2,0);
16221  //Double_t dReQ4n = (*fReQ)(3,0);
16222  Double_t dImQ1n = (*fImQ)(0,0);
16223  Double_t dImQ2n = (*fImQ)(1,0);
16224  Double_t dImQ3n = (*fImQ)(2,0);
16225  //Double_t dImQ4n = (*fImQ)(3,0);
16226
16227  // Other correlations are stored in fOtherDiffCorrelators[2][2][2][1], [0=RP,1=POI][0=pt,1=eta][0=sin terms,1=cos terms][correlator index]
16228  // Correlation index runs as follows:
16229  // 
16230  //  0: <exp[in(psi1-3phi2+2phi3)]>
16231  
16232  Int_t t = 0; // type flag 
16233  Int_t pe = 0; // ptEta flag
16234  
16235  if(type == "RP")
16236  {
16237   t = 0;
16238  } else if(type == "POI")
16239    {
16240     t = 1;
16241    }
16242
16243  if(ptOrEta == "Pt")
16244  {
16245   pe = 0;
16246  } else if(ptOrEta == "Eta")
16247    {
16248     pe = 1;
16249    }
16250     
16251  Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
16252  Double_t minPtEta[2] = {fPtMin,fEtaMin};
16253  //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
16254  Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
16255
16256  // looping over all bins and calculating reduced correlations: 
16257  for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16258  {
16259   // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin): 
16260   Double_t p1n0kRe = 0.;
16261   Double_t p1n0kIm = 0.;
16262
16263   // number of POIs in particular pt or eta bin:
16264   Double_t mp = 0.;
16265
16266   // real and imaginary parts of q_{m*n,0} (non-weighted Q-vector evaluated for particles which are both RPs and POIs in particular pt or eta bin):
16267   Double_t q1n0kRe = 0.;
16268   Double_t q1n0kIm = 0.;
16269   Double_t q2n0kRe = 0.;
16270   Double_t q2n0kIm = 0.;
16271   Double_t q3n0kRe = 0.;
16272   Double_t q3n0kIm = 0.;
16273
16274   // number of particles which are both RPs and POIs in particular pt or eta bin:
16275   Double_t mq = 0.;
16276    
16277   if(type == "POI")
16278   {
16279    // q_{m*n,0}:
16280    q1n0kRe = fReRPQ1dEBE[2][pe][0][0]->GetBinContent(fReRPQ1dEBE[2][pe][0][0]->GetBin(b))
16281            * fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b));
16282    q1n0kIm = fImRPQ1dEBE[2][pe][0][0]->GetBinContent(fImRPQ1dEBE[2][pe][0][0]->GetBin(b))
16283            * fImRPQ1dEBE[2][pe][0][0]->GetBinEntries(fImRPQ1dEBE[2][pe][0][0]->GetBin(b));
16284    q2n0kRe = fReRPQ1dEBE[2][pe][1][0]->GetBinContent(fReRPQ1dEBE[2][pe][1][0]->GetBin(b))
16285            * fReRPQ1dEBE[2][pe][1][0]->GetBinEntries(fReRPQ1dEBE[2][pe][1][0]->GetBin(b));
16286    q2n0kIm = fImRPQ1dEBE[2][pe][1][0]->GetBinContent(fImRPQ1dEBE[2][pe][1][0]->GetBin(b))
16287            * fImRPQ1dEBE[2][pe][1][0]->GetBinEntries(fImRPQ1dEBE[2][pe][1][0]->GetBin(b));                         
16288    q3n0kRe = fReRPQ1dEBE[2][pe][2][0]->GetBinContent(fReRPQ1dEBE[2][pe][2][0]->GetBin(b))
16289            * fReRPQ1dEBE[2][pe][2][0]->GetBinEntries(fReRPQ1dEBE[2][pe][2][0]->GetBin(b));
16290    q3n0kIm = fImRPQ1dEBE[2][pe][2][0]->GetBinContent(fImRPQ1dEBE[2][pe][2][0]->GetBin(b))
16291            * fImRPQ1dEBE[2][pe][2][0]->GetBinEntries(fImRPQ1dEBE[2][pe][2][0]->GetBin(b));         
16292
16293    mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
16294   } 
16295   else if(type == "RP")
16296   {
16297    // q_{m*n,0}:
16298    q1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
16299            * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
16300    q1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
16301            * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
16302    q2n0kRe = fReRPQ1dEBE[0][pe][1][0]->GetBinContent(fReRPQ1dEBE[0][pe][1][0]->GetBin(b))
16303            * fReRPQ1dEBE[0][pe][1][0]->GetBinEntries(fReRPQ1dEBE[0][pe][1][0]->GetBin(b));
16304    q2n0kIm = fImRPQ1dEBE[0][pe][1][0]->GetBinContent(fImRPQ1dEBE[0][pe][1][0]->GetBin(b))
16305            * fImRPQ1dEBE[0][pe][1][0]->GetBinEntries(fImRPQ1dEBE[0][pe][1][0]->GetBin(b));         
16306    q3n0kRe = fReRPQ1dEBE[0][pe][2][0]->GetBinContent(fReRPQ1dEBE[0][pe][2][0]->GetBin(b))
16307            * fReRPQ1dEBE[0][pe][2][0]->GetBinEntries(fReRPQ1dEBE[0][pe][2][0]->GetBin(b));
16308    q3n0kIm = fImRPQ1dEBE[0][pe][2][0]->GetBinContent(fImRPQ1dEBE[0][pe][2][0]->GetBin(b))
16309            * fImRPQ1dEBE[0][pe][2][0]->GetBinEntries(fImRPQ1dEBE[0][pe][2][0]->GetBin(b));         
16310                  
16311    mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)  
16312   }
16313       
16314    if(type == "POI")
16315    {
16316     // p_{m*n,0}:
16317     p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
16318             * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
16319     p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))  
16320             * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
16321             
16322     mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
16323     
16324     t = 1; // typeFlag = RP or POI
16325    }
16326    else if(type == "RP")
16327    {
16328     // p_{m*n,0} = q_{m*n,0}:
16329     p1n0kRe = q1n0kRe; 
16330     p1n0kIm = q1n0kIm; 
16331             
16332     mp = mq; 
16333     
16334     t = 0; // typeFlag = RP or POI
16335    }
16336       
16337    // 3'-particle correlators:
16338    //  Taeney-Yan correlator:
16339    Double_t dTaeneyYan = 0.;
16340    Double_t mWeightTaeneyYan = 0.; // multiplicity weight for Taeney-Yan correlator
16341    if((mp*dMult-2.*mq)*(dMult-1.) > 0.) // to be improved - is this condition fully justified?
16342    {
16343     dTaeneyYan = (dReQ3n*(p1n0kRe*dReQ2n-p1n0kIm*dImQ2n)+dImQ3n*(p1n0kIm*dReQ2n+p1n0kRe*dImQ2n)
16344                - p1n0kRe*dReQ1n - p1n0kIm*dImQ1n
16345                - q2n0kRe*dReQ2n - q2n0kIm*dImQ2n              
16346                - q3n0kRe*dReQ3n - q3n0kIm*dImQ3n
16347                + 2.*mq)
16348                / ((mp*dMult-2.*mq)*(dMult-1.));
16349     // determine multiplicity weight:
16350     if(fMultiplicityWeight->Contains("combinations"))
16351     {
16352      mWeightTaeneyYan = (mp*dMult-2.*mq)*(dMult-1.);
16353     } else if(fMultiplicityWeight->Contains("unit"))
16354       {
16355        mWeightTaeneyYan = 1.;    
16356       } 
16357     // Fill profiles:
16358     fOtherDiffCorrelators[t][pe][1][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dTaeneyYan,mWeightTaeneyYan);
16359    } // end of if((mp*dMult-2.*mq)*(dMult-1.) > 0.)  
16360    
16361  } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16362  
16363 } // end of void AliFlowAnalysisWithQCumulants::CalculateOtherDiffCorrelators(TString type, TString ptOrEta)
16364
16365 //=======================================================================================================================
16366
16367 void AliFlowAnalysisWithQCumulants::Calculate2DDiffFlowCorrelations(TString type)
16368 {
16369  // Calculate all reduced correlations needed for 2D differential flow for each (pt,eta) bin. 
16370  
16371  // Multiplicity:
16372  Double_t dMult = (*fSpk)(0,0);
16373  // Real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n: 
16374  Double_t dReQ1n = (*fReQ)(0,0);
16375  Double_t dReQ2n = (*fReQ)(1,0);
16376  //Double_t dReQ3n = (*fReQ)(2,0);
16377  //Double_t dReQ4n = (*fReQ)(3,0);
16378  Double_t dImQ1n = (*fImQ)(0,0);
16379  Double_t dImQ2n = (*fImQ)(1,0);
16380  //Double_t dImQ3n = (*fImQ)(2,0);
16381  //Double_t dImQ4n = (*fImQ)(3,0);
16382
16383  // 2D reduced correlations are stored in TProfile2D f2DDiffFlowCorrelationsPro[0=RP,1=POI][correlation index]. 
16384  // Correlation index runs as follows:
16385  //  0: <<2'>> 
16386  //  1: <<4'>>
16387  //  2: <<6'>>
16388  //  3: <<8'>>
16389  
16390  Int_t t = 0; // type flag  
16391  if(type == "RP")
16392  {
16393   t = 0;
16394  } else if(type == "POI")
16395    {
16396     t = 1;
16397    }
16398
16399  // Looping over all (pt,eta) bins and calculating correlations needed for differential flow: 
16400  for(Int_t p=1;p<=fnBinsPt;p++)
16401  {
16402   for(Int_t e=1;e<=fnBinsEta;e++)
16403   {
16404    // Real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular (pt,eta) bin): 
16405    Double_t p1n0kRe = 0.;
16406    Double_t p1n0kIm = 0.;
16407    // Number of POIs in particular pt or eta bin:
16408    Double_t mp = 0.;
16409    // Real and imaginary parts of q_{m*n,0} (non-weighted Q-vector evaluated for 'RP && POI particles' in particular pt or eta bin):
16410    Double_t q1n0kRe = 0.;
16411    Double_t q1n0kIm = 0.;
16412    Double_t q2n0kRe = 0.;
16413    Double_t q2n0kIm = 0.; 
16414    // Number of 'RP && POI particles' in particular pt or eta bin:
16415    Double_t mq = 0.;
16416    if(type == "POI")
16417    {
16418     // q_{m*n,0}:
16419     q1n0kRe = fReRPQ2dEBE[2][0][0]->GetBinContent(fReRPQ2dEBE[2][0][0]->GetBin(p,e))
16420             * fReRPQ2dEBE[2][0][0]->GetBinEntries(fReRPQ2dEBE[2][0][0]->GetBin(p,e));
16421     q1n0kIm = fImRPQ2dEBE[2][0][0]->GetBinContent(fImRPQ2dEBE[2][0][0]->GetBin(p,e))
16422             * fImRPQ2dEBE[2][0][0]->GetBinEntries(fImRPQ2dEBE[2][0][0]->GetBin(p,e));
16423     q2n0kRe = fReRPQ2dEBE[2][1][0]->GetBinContent(fReRPQ2dEBE[2][1][0]->GetBin(p,e))
16424             * fReRPQ2dEBE[2][1][0]->GetBinEntries(fReRPQ2dEBE[2][1][0]->GetBin(p,e));
16425     q2n0kIm = fImRPQ2dEBE[2][1][0]->GetBinContent(fImRPQ2dEBE[2][1][0]->GetBin(p,e))
16426             * fImRPQ2dEBE[2][1][0]->GetBinEntries(fImRPQ2dEBE[2][1][0]->GetBin(p,e));         
16427     // m_{q}:             
16428     mq = fReRPQ2dEBE[2][0][0]->GetBinEntries(fReRPQ2dEBE[2][0][0]->GetBin(p,e)); // to be improved (cross-checked by accessing other profiles here)
16429    } // end of if(type == "POI")
16430    else if(type == "RP")
16431    {
16432     // q_{m*n,0}:
16433     q1n0kRe = fReRPQ2dEBE[0][0][0]->GetBinContent(fReRPQ2dEBE[0][0][0]->GetBin(p,e))
16434             * fReRPQ2dEBE[0][0][0]->GetBinEntries(fReRPQ2dEBE[0][0][0]->GetBin(p,e));
16435     q1n0kIm = fImRPQ2dEBE[0][0][0]->GetBinContent(fImRPQ2dEBE[0][0][0]->GetBin(p,e))
16436             * fImRPQ2dEBE[0][0][0]->GetBinEntries(fImRPQ2dEBE[0][0][0]->GetBin(p,e));
16437     q2n0kRe = fReRPQ2dEBE[0][1][0]->GetBinContent(fReRPQ2dEBE[0][1][0]->GetBin(p,e))
16438             * fReRPQ2dEBE[0][1][0]->GetBinEntries(fReRPQ2dEBE[0][1][0]->GetBin(p,e));
16439     q2n0kIm = fImRPQ2dEBE[0][1][0]->GetBinContent(fImRPQ2dEBE[0][1][0]->GetBin(p,e))
16440             * fImRPQ2dEBE[0][1][0]->GetBinEntries(fImRPQ2dEBE[0][1][0]->GetBin(p,e));         
16441     // m_{q}:             
16442     mq = fReRPQ2dEBE[0][0][0]->GetBinEntries(fReRPQ2dEBE[0][0][0]->GetBin(p,e)); // to be improved (cross-checked by accessing other profiles here)  
16443    } // end of else if(type == "RP")
16444    if(type == "POI")
16445    {
16446     // p_{m*n,0}:
16447     p1n0kRe = fReRPQ2dEBE[1][0][0]->GetBinContent(fReRPQ2dEBE[1][0][0]->GetBin(p,e))
16448             * fReRPQ2dEBE[1][0][0]->GetBinEntries(fReRPQ2dEBE[1][0][0]->GetBin(p,e));
16449     p1n0kIm = fImRPQ2dEBE[1][0][0]->GetBinContent(fImRPQ2dEBE[1][0][0]->GetBin(p,e))  
16450             * fImRPQ2dEBE[1][0][0]->GetBinEntries(fImRPQ2dEBE[1][0][0]->GetBin(p,e));
16451     // m_{p}        
16452     mp = fReRPQ2dEBE[1][0][0]->GetBinEntries(fReRPQ2dEBE[1][0][0]->GetBin(p,e)); // to be improved (cross-checked by accessing other profiles here)
16453     
16454     t = 1; // typeFlag = RP or POI
16455    } // end of if(type == "POI")
16456    else if(type == "RP")
16457    {
16458     // p_{m*n,0} = q_{m*n,0}:
16459     p1n0kRe = q1n0kRe; 
16460     p1n0kIm = q1n0kIm; 
16461     // m_{p} = m_{q}:        
16462     mp = mq; 
16463
16464     t = 0; // typeFlag = RP or POI
16465    } // end of if(type == "RP")
16466
16467    // 2'-particle correlation for particular (pt,eta) bin:
16468    Double_t two1n1nPtEta = 0.;
16469    Double_t mWeight2pPrime = 0.; // multiplicity weight for <2'>
16470    if(mp*dMult-mq)
16471    {
16472     two1n1nPtEta = (p1n0kRe*dReQ1n+p1n0kIm*dImQ1n-mq)
16473                  / (mp*dMult-mq);
16474     // Determine multiplicity weight:
16475     if(fMultiplicityWeight->Contains("combinations"))
16476     {
16477      mWeight2pPrime = mp*dMult-mq;
16478     } else if(fMultiplicityWeight->Contains("unit"))
16479       {
16480        mWeight2pPrime = 1.;    
16481       } 
16482     // Fill 2D profile holding <<2'>>:     
16483     f2DDiffFlowCorrelationsPro[t][0]->Fill(fPtMin+(p-1)*fPtBinWidth,fEtaMin+(e-1)*fEtaBinWidth,two1n1nPtEta,mWeight2pPrime);
16484    } // end of if(mp*dMult-mq)
16485    
16486    // 4'-particle correlation:
16487    Double_t four1n1n1n1nPtEta = 0.;
16488    Double_t mWeight4pPrime = 0.; // multiplicity weight for <4'>
16489    if((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16490        + mq*(dMult-1.)*(dMult-2.)*(dMult-3.)) // to be improved (introduce a new variable for this expression)
16491    {
16492     four1n1n1n1nPtEta = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16493                       - q2n0kRe*(pow(dReQ1n,2.)-pow(dImQ1n,2.))
16494                       - 2.*q2n0kIm*dReQ1n*dImQ1n
16495                       - p1n0kRe*(dReQ1n*dReQ2n+dImQ1n*dImQ2n)
16496                       + p1n0kIm*(dImQ1n*dReQ2n-dReQ1n*dImQ2n)
16497                       - 2.*dMult*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16498                       - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*mq                      
16499                       + 6.*(q1n0kRe*dReQ1n+q1n0kIm*dImQ1n)                                            
16500                       + 1.*(q2n0kRe*dReQ2n+q2n0kIm*dImQ2n)                      
16501                       + 2.*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)                       
16502                       + 2.*mq*dMult                      
16503                       - 6.*mq)        
16504                       / ((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16505                           + mq*(dMult-1.)*(dMult-2.)*(dMult-3.)); 
16506     // Determine multiplicity weight:
16507     if(fMultiplicityWeight->Contains("combinations"))
16508     {
16509      mWeight4pPrime = (mp-mq)*dMult*(dMult-1.)*(dMult-2.) + mq*(dMult-1.)*(dMult-2.)*(dMult-3.);
16510     } else if(fMultiplicityWeight->Contains("unit"))
16511       {
16512        mWeight4pPrime = 1.;    
16513       }     
16514     // Fill 2D profile holding <<4'>>:
16515     f2DDiffFlowCorrelationsPro[t][1]->Fill(fPtMin+(p-1)*fPtBinWidth,fEtaMin+(e-1)*fEtaBinWidth,four1n1n1n1nPtEta,mWeight4pPrime);      
16516    } // end of if((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16517      //            +mq*(dMult-1.)*(dMult-2.)*(dMult-3.))
16518   } // end of for(Int_t e=1;e<=fnBinsEta;e++)
16519  } // end of for(Int_t p=1;p<=fnBinsPt;p++)   
16520       
16521 } // end of AliFlowAnalysisWithQCumulants::Calculate2DDiffFlowCorrelations(TString type)
16522
16523 //=======================================================================================================================
16524
16525 void AliFlowAnalysisWithQCumulants::CalculateDiffFlowSumOfEventWeights(TString type, TString ptOrEta)
16526 {
16527  // Calculate sums of various event weights for reduced correlations. 
16528  // (These quantitites are needed in expressions for unbiased estimators relevant for the statistical errors.)
16529
16530  Int_t typeFlag = 0;
16531  Int_t ptEtaFlag = 0;
16532
16533  if(type == "RP")
16534  {
16535   typeFlag = 0;
16536  } else if(type == "POI")
16537    {
16538     typeFlag = 1;
16539    } 
16540      
16541  if(ptOrEta == "Pt")
16542  {
16543   ptEtaFlag = 0;
16544  } else if(ptOrEta == "Eta")
16545    {
16546     ptEtaFlag = 1;
16547    } 
16548    
16549  // shortcuts:
16550  Int_t t = typeFlag;
16551  Int_t pe = ptEtaFlag;
16552  
16553  // binning:
16554  Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
16555  Double_t minPtEta[2] = {fPtMin,fEtaMin};
16556  //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
16557  Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
16558  
16559  for(Int_t rpq=0;rpq<3;rpq++)
16560  {
16561   for(Int_t m=0;m<4;m++)
16562   {
16563    for(Int_t k=0;k<9;k++)
16564    {
16565     if(!fReRPQ1dEBE[rpq][pe][m][k])
16566     {
16567      cout<<"WARNING: fReRPQ1dEBE[rpq][pe][m][k] is NULL in AFAWQC::CSAPOEWFDF() !!!!"<<endl;
16568      cout<<"pe  = "<<pe<<endl;
16569      cout<<"rpq = "<<rpq<<endl;
16570      cout<<"m   = "<<m<<endl;
16571      cout<<"k   = "<<k<<endl;
16572      exit(0); 
16573     }
16574    }
16575   }
16576  }  
16577
16578  // multiplicities:
16579  Double_t dMult = (*fSpk)(0,0); // total event multiplicity
16580  //Double_t mr = 0.; // number of RPs in particular pt or eta bin
16581  Double_t mp = 0.; // number of POIs in particular pt or eta bin 
16582  Double_t mq = 0.; // number of particles which are both RPs and POIs in particular pt or eta bin
16583  
16584  // event weights for reduced correlations:
16585  Double_t dw2 = 0.; // event weight for <2'>
16586  Double_t dw4 = 0.; // event weight for <4'>
16587  //Double_t dw6 = 0.; // event weight for <6'>
16588  //Double_t dw8 = 0.; // event weight for <8'>
16589
16590  // looping over bins:
16591  for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16592  {
16593   if(type == "RP")
16594   {
16595    mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(b);
16596    mp = mq; // trick to use the very same Eqs. bellow both for RP's and POI's diff. flow
16597   } else if(type == "POI")
16598     {
16599      mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(b);
16600      mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(b);    
16601     }
16602   
16603   // event weight for <2'>:
16604   dw2 = mp*dMult-mq;  
16605   fDiffFlowSumOfEventWeights[t][pe][0][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2);
16606   fDiffFlowSumOfEventWeights[t][pe][1][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],pow(dw2,2.));
16607   
16608   // event weight for <4'>:
16609   dw4 = (mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16610      + mq*(dMult-1.)*(dMult-2.)*(dMult-3.);  
16611   fDiffFlowSumOfEventWeights[t][pe][0][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw4);
16612   fDiffFlowSumOfEventWeights[t][pe][1][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],pow(dw4,2.));
16613   
16614   // event weight for <6'>:
16615   //dw6 = ...;  
16616   //fDiffFlowSumOfEventWeights[t][pe][0][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw6);
16617   //fDiffFlowSumOfEventWeights[t][pe][t][1][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],pow(dw6,2.));
16618   
16619   // event weight for <8'>:
16620   //dw8 = ...;  
16621   //fDiffFlowSumOfEventWeights[t][pe][0][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw8);
16622   //fDiffFlowSumOfEventWeights[t][pe][1][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],pow(dw8,2.));   
16623  } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++) 
16624  
16625 } // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowSumOfEventWeights()
16626
16627
16628 //=======================================================================================================================
16629
16630
16631 void AliFlowAnalysisWithQCumulants::CalculateDiffFlowSumOfProductOfEventWeights(TString type, TString ptOrEta)
16632 {
16633  // Calculate sum of products of various event weights for both types of correlations (the ones for int. and diff. flow). 
16634  // (These quantitites are needed in expressions for unbiased estimators relevant for the statistical errors.)
16635  //
16636  // Important: To fill fDiffFlowSumOfProductOfEventWeights[][][][] use bellow table (i,j) with following constraints: 
16637  // 1.) i<j  
16638  // 2.) do not store terms which DO NOT include reduced correlations;
16639  // Table:
16640  // [0=<2>,1=<2'>,2=<4>,3=<4'>,4=<6>,5=<6'>,6=<8>,7=<8'>] x [0=<2>,1=<2'>,2=<4>,3=<4'>,4=<6>,5=<6'>,6=<8>,7=<8'>]
16641   
16642  Int_t typeFlag = 0;
16643  Int_t ptEtaFlag = 0;
16644
16645  if(type == "RP")
16646  {
16647   typeFlag = 0;
16648  } else if(type == "POI")
16649    {
16650     typeFlag = 1;
16651    } 
16652      
16653  if(ptOrEta == "Pt")
16654  {
16655   ptEtaFlag = 0;
16656  } else if(ptOrEta == "Eta")
16657    {
16658     ptEtaFlag = 1;
16659    } 
16660      
16661  // shortcuts:
16662  Int_t t = typeFlag;
16663  Int_t pe = ptEtaFlag;
16664   
16665  // binning:
16666  Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
16667  Double_t minPtEta[2] = {fPtMin,fEtaMin};
16668  //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
16669  Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
16670  
16671  // protection:
16672  for(Int_t rpq=0;rpq<3;rpq++)
16673  {
16674   for(Int_t m=0;m<4;m++)
16675   {
16676    for(Int_t k=0;k<9;k++)
16677    {
16678     if(!fReRPQ1dEBE[rpq][pe][m][k])
16679     {
16680      cout<<"WARNING: fReRPQ1dEBE[rpq][pe][m][k] is NULL in AFAWQC::CSAPOEWFDF() !!!!"<<endl;
16681      cout<<"pe  = "<<pe<<endl;
16682      cout<<"rpq = "<<rpq<<endl;
16683      cout<<"m   = "<<m<<endl;
16684      cout<<"k   = "<<k<<endl;
16685      exit(0); 
16686     }
16687    }
16688   }
16689  }  
16690  
16691  // multiplicities:
16692  Double_t dMult = (*fSpk)(0,0); // total event multiplicity
16693  //Double_t mr = 0.; // number of RPs in particular pt or eta bin
16694  Double_t mp = 0.; // number of POIs in particular pt or eta bin 
16695  Double_t mq = 0.; // number of particles which are both RPs and POIs in particular pt or eta bin
16696  
16697  // event weights for correlations:
16698  Double_t dW2 = dMult*(dMult-1); // event weight for <2> 
16699  Double_t dW4 = dMult*(dMult-1)*(dMult-2)*(dMult-3); // event weight for <4> 
16700  Double_t dW6 = dMult*(dMult-1)*(dMult-2)*(dMult-3)*(dMult-4)*(dMult-5); // event weight for <6> 
16701  Double_t dW8 = dMult*(dMult-1)*(dMult-2)*(dMult-3)*(dMult-4)*(dMult-5)*(dMult-6)*(dMult-7); // event weight for <8> 
16702
16703  // event weights for reduced correlations:
16704  Double_t dw2 = 0.; // event weight for <2'>
16705  Double_t dw4 = 0.; // event weight for <4'>
16706  //Double_t dw6 = 0.; // event weight for <6'>
16707  //Double_t dw8 = 0.; // event weight for <8'>
16708  
16709  // looping over bins:
16710  for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16711  {
16712   if(type == "RP")
16713   {
16714    mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(b);
16715    mp = mq; // trick to use the very same Eqs. bellow both for RP's and POI's diff. flow
16716   } else if(type == "POI")
16717     {
16718      mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(b);
16719      mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(b);    
16720     }
16721   
16722   // event weight for <2'>:
16723   dw2 = mp*dMult-mq;  
16724   fDiffFlowSumOfProductOfEventWeights[t][pe][0][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW2*dw2); // storing product of even weights for <2> and <2'>
16725   fDiffFlowSumOfProductOfEventWeights[t][pe][1][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dW4); // storing product of even weights for <4> and <2'>
16726   fDiffFlowSumOfProductOfEventWeights[t][pe][1][4]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dW6); // storing product of even weights for <6> and <2'>
16727   fDiffFlowSumOfProductOfEventWeights[t][pe][1][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dW8); // storing product of even weights for <8> and <2'>
16728   
16729   // event weight for <4'>:
16730   dw4 = (mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16731      + mq*(dMult-1.)*(dMult-2.)*(dMult-3.);  
16732   fDiffFlowSumOfProductOfEventWeights[t][pe][0][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW2*dw4); // storing product of even weights for <2> and <4'>
16733   fDiffFlowSumOfProductOfEventWeights[t][pe][1][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dw4); // storing product of even weights for <2'> and <4'>
16734   fDiffFlowSumOfProductOfEventWeights[t][pe][2][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW4*dw4); // storing product of even weights for <4> and <4'>
16735   fDiffFlowSumOfProductOfEventWeights[t][pe][3][4]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw4*dW6); // storing product of even weights for <6> and <4'> 
16736   fDiffFlowSumOfProductOfEventWeights[t][pe][3][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw4*dW8); // storing product of even weights for <8> and <4'>
16737
16738   // event weight for <6'>:
16739   //dw6 = ...;  
16740   //fDiffFlowSumOfProductOfEventWeights[t][pe][0][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW2*dw6); // storing product of even weights for <2> and <6'>
16741   //fDiffFlowSumOfProductOfEventWeights[t][pe][1][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dw6); // storing product of even weights for <2'> and <6'>
16742   //fDiffFlowSumOfProductOfEventWeights[t][pe][2][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW4*dw6); // storing product of even weights for <4> and <6'>
16743   //fDiffFlowSumOfProductOfEventWeights[t][pe][3][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw4*dw6); // storing product of even weights for <4'> and <6'> 
16744   //fDiffFlowSumOfProductOfEventWeights[t][pe][4][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW6*dw6); // storing product of even weights for <6> and <6'>
16745   //fDiffFlowSumOfProductOfEventWeights[t][pe][5][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw6*dW8); // storing product of even weights for <6'> and <8>
16746   //fDiffFlowSumOfProductOfEventWeights[t][pe][5][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw6*dw8); // storing product of even weights for <6'> and <8'>
16747
16748   // event weight for <8'>:
16749   //dw8 = ...;  
16750   //fDiffFlowSumOfProductOfEventWeights[t][pe][0][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW2*dw8); // storing product of even weights for <2> and <8'>
16751   //fDiffFlowSumOfProductOfEventWeights[t][pe][1][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dw8); // storing product of even weights for <2'> and <8'>
16752   //fDiffFlowSumOfProductOfEventWeights[t][pe][2][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW4*dw8); // storing product of even weights for <4> and <8'>
16753   //fDiffFlowSumOfProductOfEventWeights[t][pe][3][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw4*dw8); // storing product of even weights for <4'> and <8'> 
16754   //fDiffFlowSumOfProductOfEventWeights[t][pe][4][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW6*dw8); // storing product of even weights for <6> and <8'>
16755   //fDiffFlowSumOfProductOfEventWeights[t][pe][5][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw6*dw8); // storing product of even weights for <6'> and <8'>
16756   //fDiffFlowSumOfProductOfEventWeights[t][pe][6][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW8*dw8); // storing product of even weights for <8> and <8'>
16757   
16758   // Table:
16759   // [0=<2>,1=<2'>,2=<4>,3=<4'>,4=<6>,5=<6'>,6=<8>,7=<8'>] x [0=<2>,1=<2'>,2=<4>,3=<4'>,4=<6>,5=<6'>,6=<8>,7=<8'>]
16760    
16761  } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16762  
16763
16764
16765 } // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowSumOfProductOfEventWeights(TString type, TString ptOrEta)
16766
16767 //=======================================================================================================================
16768
16769 void AliFlowAnalysisWithQCumulants::FinalizeReducedCorrelations(TString type, TString ptOrEta)
16770 {
16771  // Transfer profiles into histograms and calculate statistical errors correctly.
16772
16773  Int_t t = 0; // RP or POI
16774  Int_t pe = 0; // pt or eta
16775
16776  if(type == "RP")
16777  {
16778   t = 0;
16779  } else if(type == "POI")
16780    {
16781     t = 1;
16782    } 
16783      
16784  if(ptOrEta == "Pt")
16785  {
16786   pe = 0;
16787  } else if(ptOrEta == "Eta")
16788    {
16789     pe = 1;
16790    } 
16791                
16792  for(Int_t rci=0;rci<4;rci++) // to be improved - moved into the method CheckPointersUsedInFinish()
16793  {
16794   if(!fDiffFlowCorrelationsPro[t][pe][rci])
16795   {
16796    cout<<"WARNING: fDiffFlowCorrelationsPro[t][pe][rci] is NULL in AFAWQC::FRC() !!!!"<<endl;
16797    cout<<"t   = "<<t<<endl; 
16798    cout<<"pe  = "<<pe<<endl; 
16799    cout<<"rci = "<<rci<<endl;
16800    exit(0); 
16801   }
16802   if(!fDiffFlowSquaredCorrelationsPro[t][pe][rci])
16803   {
16804    cout<<"WARNING: fDiffFlowSquaredCorrelationsPro[t][pe][rci] is NULL in AFAWQC::FRC() !!!!"<<endl;
16805    cout<<"t   = "<<t<<endl; 
16806    cout<<"pe  = "<<pe<<endl; 
16807    cout<<"rci = "<<rci<<endl;
16808    exit(0); 
16809   }
16810   for(Int_t power=0;power<2;power++)
16811   {
16812    if(!fDiffFlowSumOfEventWeights[t][pe][power][rci])
16813    {
16814     cout<<"WARNING: fDiffFlowSumOfEventWeights[t][pe][power][rci] is NULL in AFAWQC::FRC() !!!!"<<endl;
16815     cout<<"t     = "<<t<<endl; 
16816     cout<<"pe    = "<<pe<<endl;
16817     cout<<"power = "<<power<<endl; 
16818     cout<<"rci   = "<<rci<<endl;
16819     exit(0); 
16820    }   
16821   } // end of for(Int_t power=0;power<2;power++)
16822  } // end of for(Int_t rci=0;rci<4;rci++)
16823     
16824  // common:
16825  Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta}; 
16826  // transfer 1D profile into 1D histogram:
16827  Double_t correlation = 0.;
16828  Double_t squaredCorrelation = 0.;
16829  Double_t spread = 0.;
16830  Double_t sumOfWeights = 0.; // sum of weights for particular reduced correlations for particular pt or eta bin
16831  Double_t sumOfSquaredWeights = 0.; // sum of squared weights for particular reduced correlations for particular pt or eta bin
16832  Double_t error = 0.; // error = termA * spread * termB
16833                       // termA = (sqrt(sumOfSquaredWeights)/sumOfWeights) 
16834                       // termB = 1/pow(1-termA^2,0.5)
16835  Double_t termA = 0.;                      
16836  Double_t termB = 0.;                      
16837  for(Int_t rci=0;rci<4;rci++) // index of reduced correlation
16838  {
16839   for(Int_t b=1;b<=nBinsPtEta[pe];b++) // number of pt or eta bins
16840   {
16841    if(fDiffFlowCorrelationsPro[t][pe][rci]->GetBinEffectiveEntries(b) < 2 || 
16842       fDiffFlowSquaredCorrelationsPro[t][pe][rci]->GetBinEffectiveEntries(b) < 2)
16843    {
16844     fDiffFlowCorrelationsPro[t][pe][rci]->SetBinError(b,0.);
16845     fDiffFlowSquaredCorrelationsPro[t][pe][rci]->SetBinError(b,0.);
16846     continue; // to be improved - should I ignore results in pt bins with one entry for reduced correlations or not?
16847    }  
16848    correlation = fDiffFlowCorrelationsPro[t][pe][rci]->GetBinContent(b); 
16849    squaredCorrelation = fDiffFlowSquaredCorrelationsPro[t][pe][rci]->GetBinContent(b); 
16850    if(squaredCorrelation-correlation*correlation >= 0.)
16851    {
16852     spread = pow(squaredCorrelation-correlation*correlation,0.5);
16853    } else
16854      {
16855       cout<<endl;
16856       cout<<Form(" WARNING: Imaginary 'spread' for rci = %d, pe = %d, bin = %d !!!!",rci,pe,b)<<endl;
16857       cout<<endl;
16858      }
16859    sumOfWeights = fDiffFlowSumOfEventWeights[t][pe][0][rci]->GetBinContent(b);
16860    sumOfSquaredWeights = fDiffFlowSumOfEventWeights[t][pe][1][rci]->GetBinContent(b);
16861    if(TMath::Abs(sumOfWeights)>0.){termA = (pow(sumOfSquaredWeights,0.5)/sumOfWeights);}
16862    if(1.-pow(termA,2.)>0.){termB = 1./pow(1.-pow(termA,2.),0.5);} 
16863    error = termA*spread*termB; // final error (unbiased estimator for standard deviation)
16864    fDiffFlowCorrelationsHist[t][pe][rci]->SetBinContent(b,correlation); 
16865    fDiffFlowCorrelationsHist[t][pe][rci]->SetBinError(b,error); 
16866   } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16867  } // end of for(Int_t rci=0;rci<4;rci++)
16868  
16869 } // end of void AliFlowAnalysisWithQCumulants::FinalizeReducedCorrelations(TString type, TString ptOrEta)
16870
16871 //=======================================================================================================================
16872
16873 void AliFlowAnalysisWithQCumulants::CalculateDiffFlowProductOfCorrelations(TString type, TString ptOrEta)
16874 {
16875  // store products: <2><2'>, <2><4'>, <2><6'>, <2><8'>, <2'><4>, 
16876  //                 <2'><4'>, <2'><6>, <2'><6'>, <2'><8>, <2'><8'>,
16877  //                 <4><4'>, <4><6'>, <4><8'>, <4'><6>, <4'><6'>, 
16878  //                 <4'><8>, <4'><8'>, <6><6'>, <6><8'>, <6'><8>, 
16879  //                 <6'><8'>, <8><8'>.
16880   
16881  Int_t typeFlag = 0;
16882  Int_t ptEtaFlag = 0;
16883
16884  if(type == "RP")
16885  {
16886   typeFlag = 0;
16887  } else if(type == "POI")
16888    {
16889     typeFlag = 1;
16890    } 
16891      
16892  if(ptOrEta == "Pt")
16893  {
16894   ptEtaFlag = 0;
16895  } else if(ptOrEta == "Eta")
16896    {
16897     ptEtaFlag = 1;
16898    } 
16899   
16900  // shortcuts:
16901  Int_t t = typeFlag;
16902  Int_t pe = ptEtaFlag;
16903      
16904  // common:
16905  Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
16906  Double_t minPtEta[2] = {fPtMin,fEtaMin};
16907  Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
16908    
16909  // protections // to be improved (add protection for all pointers in this method)
16910  if(!fIntFlowCorrelationsEBE)
16911  {
16912   cout<<"WARNING: fIntFlowCorrelationsEBE is NULL in AFAWQC::CDFPOC() !!!!"<<endl;
16913   exit(0);
16914  } 
16915  
16916  /*    
16917  Double_t dMult = (*fSpk)(0,0); // multiplicity (number of particles used to determine the reaction plane)
16918  //Double_t mr = 0.; // number of RPs in particular pt or eta bin
16919  Double_t mp = 0.; // number of POIs in particular pt or eta bin 
16920  Double_t mq = 0.; // number of particles which are both RPs and POIs in particular pt or eta bin
16921  */
16922
16923  // e-b-e correlations:
16924  Double_t twoEBE = fIntFlowCorrelationsEBE->GetBinContent(1); // <2>
16925  Double_t fourEBE = fIntFlowCorrelationsEBE->GetBinContent(2); // <4>
16926  Double_t sixEBE = fIntFlowCorrelationsEBE->GetBinContent(3); // <6>
16927  Double_t eightEBE = fIntFlowCorrelationsEBE->GetBinContent(4); // <8>
16928  
16929  // event weights for correlations:
16930  Double_t dW2 = fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1); // event weight for <2> 
16931  Double_t dW4 = fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2); // event weight for <4> 
16932  Double_t dW6 = fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(3); // event weight for <6> 
16933  Double_t dW8 = fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(4); // event weight for <8> 
16934   
16935  // e-b-e reduced correlations:
16936  Double_t twoReducedEBE = 0.; // <2'>
16937  Double_t fourReducedEBE = 0.; // <4'>
16938  //Double_t sixReducedEBE = 0.; // <6'>
16939  //Double_t eightReducedEBE = 0.; // <8'> 
16940  
16941  // event weights for reduced correlations:
16942  Double_t dw2 = 0.; // event weight for <2'>
16943  Double_t dw4 = 0.; // event weight for <4'>
16944  //Double_t dw6 = 0.; // event weight for <6'>
16945  //Double_t dw8 = 0.; // event weight for <8'>
16946
16947  // looping over bins:
16948  for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16949  {
16950   // e-b-e reduced correlations:
16951   twoReducedEBE = fDiffFlowCorrelationsEBE[t][pe][0]->GetBinContent(b);
16952   fourReducedEBE = fDiffFlowCorrelationsEBE[t][pe][1]->GetBinContent(b);
16953   //sixReducedEBE = fDiffFlowCorrelationsEBE[t][pe][2]->GetBinContent(b);
16954   //eightReducedEBE = fDiffFlowCorrelationsEBE[t][pe][3]->GetBinContent(b);
16955   
16956   /*
16957   // to be improved (I should not do this here again)
16958   if(type == "RP")
16959   {
16960    mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(b);
16961    mp = mq; // trick to use the very same Eqs. bellow both for RP's and POI's diff. flow
16962   } else if(type == "POI")
16963     {
16964      mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(b);
16965      mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(b);    
16966     }
16967   
16968   // event weights for reduced correlations:
16969   dw2 = mp*dMult-mq; // weight for <2'> 
16970   dw4 = (mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16971      + mq*(dMult-1.)*(dMult-2.)*(dMult-3.); // weight for <4'>
16972   //dw6 = ...     
16973   //dw8 = ...     
16974   
16975   */
16976   
16977   dw2 = fDiffFlowEventWeightsForCorrelationsEBE[t][pe][0]->GetBinContent(b);
16978   dw4 = fDiffFlowEventWeightsForCorrelationsEBE[t][pe][1]->GetBinContent(b);
16979  
16980   // storing all products:
16981   fDiffFlowProductOfCorrelationsPro[t][pe][0][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoEBE*twoReducedEBE,dW2*dw2); // storing <2><2'>
16982   fDiffFlowProductOfCorrelationsPro[t][pe][1][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourEBE*twoReducedEBE,dW4*dw2); // storing <4><2'>
16983   fDiffFlowProductOfCorrelationsPro[t][pe][1][4]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixEBE*twoReducedEBE,dW6*dw2); // storing <6><2'>
16984   fDiffFlowProductOfCorrelationsPro[t][pe][1][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],eightEBE*twoReducedEBE,dW8*dw2); // storing <8><2'>
16985   
16986   // event weight for <4'>:
16987   fDiffFlowProductOfCorrelationsPro[t][pe][0][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoEBE*fourReducedEBE,dW2*dw4); // storing <2><4'>
16988   fDiffFlowProductOfCorrelationsPro[t][pe][1][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoReducedEBE*fourReducedEBE,dw2*dw4); // storing <2'><4'>
16989   fDiffFlowProductOfCorrelationsPro[t][pe][2][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourEBE*fourReducedEBE,dW4*dw4); // storing <4><4'>
16990   fDiffFlowProductOfCorrelationsPro[t][pe][3][4]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixEBE*fourReducedEBE,dW6*dw4); // storing <6><4'> 
16991   fDiffFlowProductOfCorrelationsPro[t][pe][3][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],eightEBE*fourReducedEBE,dW8*dw4); // storing <8><4'>
16992
16993   // event weight for <6'>:
16994   //dw6 = ...;  
16995   //fDiffFlowProductOfCorrelationsPro[t][pe][0][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoEBE*sixReducedEBE,dW2*dw6); // storing <2><6'>
16996   //fDiffFlowProductOfCorrelationsPro[t][pe][1][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoReducedEBE*sixReducedEBE,dw2*dw6); // storing <2'><6'>
16997   //fDiffFlowProductOfCorrelationsPro[t][pe][2][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourEBE*sixReducedEBE,dW4*dw6); // storing <4><6'>
16998   //fDiffFlowProductOfCorrelationsPro[t][pe][3][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourReducedEBE*sixReducedEBE,dw4*dw6); // storing <4'><6'> 
16999   //fDiffFlowProductOfCorrelationsPro[t][pe][4][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixEBE*sixReducedEBE,dW6*dw6); // storing <6><6'>
17000   //fDiffFlowProductOfCorrelationsPro[t][pe][5][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixReducedEBE*eightEBE,dw6*dW8); // storing <6'><8>
17001   //fDiffFlowProductOfCorrelationsPro[t][pe][5][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixReducedEBE*eightReducedEBE,dw6*dw8); // storing <6'><8'>
17002
17003   // event weight for <8'>:
17004   //dw8 = ...;  
17005   //fDiffFlowProductOfCorrelationsPro[t][pe][0][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoEBE*eightReducedEBE,dW2*dw8); // storing <2><8'>
17006   //fDiffFlowProductOfCorrelationsPro[t][pe][1][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoReducedEBE*eightReducedEBE,dw2*dw8); // storing <2'><8'>
17007   //fDiffFlowProductOfCorrelationsPro[t][pe][2][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourEBE*eightReducedEBE,dW4*dw8); // storing <4><8'>
17008   //fDiffFlowProductOfCorrelationsPro[t][pe][3][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourReducedEBE*eightReducedEBE,dw4*dw8); // storing <4'><8'> 
17009   //fDiffFlowProductOfCorrelationsPro[t][pe][4][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixEBE*eightReducedEBE,dW6*dw8); // storing <6><8'>
17010   //fDiffFlowProductOfCorrelationsPro[t][pe][5][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixReducedEBE*eightReducedEBE,dw6*dw8); // storing <6'><8'>
17011   //fDiffFlowProductOfCorrelationsPro[t][pe][6][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],eightEBE*eightReducedEBE,dW8*dw8); // storing <8><8'> 
17012  } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++       
17013      
17014 } // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowProductOfCorrelations(TString type, TString ptOrEta)
17015
17016 //=======================================================================================================================
17017     
17018 void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCovariances(TString type, TString ptOrEta) // to be improved (reimplemented)
17019 {
17020  // a) Calculate unbiased estimators Cov(<2>,<2'>), Cov(<2>,<4'>), Cov(<4>,<2'>), Cov(<4>,<4'>) and Cov(<2'>,<4'>)
17021  //    for covariances V(<2>,<2'>), V(<2>,<4'>), V(<4>,<2'>), V(<4>,<4'>) and V(<2'>,<4'>).  
17022  // b) Store in histogram fDiffFlowCovariances[t][pe][index] for instance the following: 
17023  //
17024  //             Cov(<2>,<2'>) * (sum_{i=1}^{N} w_{<2>}_i w_{<2'>}_i )/[(sum_{i=1}^{N} w_{<2>}_i) * (sum_{j=1}^{N} w_{<2'>}_j)]
17025  // 
17026  //     where N is the number of events, w_{<2>} is event weight for <2> and w_{<2'>} is event weight for <2'>.
17027  // c) Binning of fDiffFlowCovariances[t][pe][index] is organized as follows:
17028  // 
17029  //     1st bin: Cov(<2>,<2'>) * (sum_{i=1}^{N} w_{<2>}_i w_{<2'>}_i )/[(sum_{i=1}^{N} w_{<2>}_i) * (sum_{j=1}^{N} w_{<2'>}_j)] 
17030  //     2nd bin: Cov(<2>,<4'>) * (sum_{i=1}^{N} w_{<2>}_i w_{<4'>}_i )/[(sum_{i=1}^{N} w_{<2>}_i) * (sum_{j=1}^{N} w_{<4'>}_j)] 
17031  //     3rd bin: Cov(<4>,<2'>) * (sum_{i=1}^{N} w_{<4>}_i w_{<2'>}_i )/[(sum_{i=1}^{N} w_{<4>}_i) * (sum_{j=1}^{N} w_{<2'>}_j)] 
17032  //     4th bin: Cov(<4>,<4'>) * (sum_{i=1}^{N} w_{<4>}_i w_{<4'>}_i )/[(sum_{i=1}^{N} w_{<4>}_i) * (sum_{j=1}^{N} w_{<4'>}_j)] 
17033  //     5th bin: Cov(<2'>,<4'>) * (sum_{i=1}^{N} w_{<2'>}_i w_{<4'>}_i )/[(sum_{i=1}^{N} w_{<2'>}_i) * (sum_{j=1}^{N} w_{<4'>}_j)] 
17034  //     ...
17035   
17036  Int_t typeFlag = 0;
17037  Int_t ptEtaFlag = 0;
17038
17039  if(type == "RP")
17040  {
17041   typeFlag = 0;
17042  } else if(type == "POI")
17043    {
17044     typeFlag = 1;
17045    } 
17046      
17047  if(ptOrEta == "Pt")
17048  {
17049   ptEtaFlag = 0;
17050  } else if(ptOrEta == "Eta")
17051    {
17052     ptEtaFlag = 1;
17053    } 
17054   
17055  // shortcuts:
17056  Int_t t = typeFlag;
17057  Int_t pe = ptEtaFlag;
17058      
17059  // common:
17060  Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
17061  //Double_t minPtEta[2] = {fPtMin,fEtaMin};
17062  //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
17063  //Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
17064  
17065  // average correlations:
17066  Double_t two = fIntFlowCorrelationsHist->GetBinContent(1); // <<2>>
17067  Double_t four = fIntFlowCorrelationsHist->GetBinContent(2); // <<4>>
17068  //Double_t six = fIntFlowCorrelationsHist->GetBinContent(3); // <<6>>
17069  //Double_t eight = fIntFlowCorrelationsHist->GetBinContent(4); // <<8>>
17070  
17071  // sum of weights for correlation:
17072  Double_t sumOfWeightsForTwo = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // sum_{i=1}^{N} w_{<2>}
17073  Double_t sumOfWeightsForFour = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // sum_{i=1}^{N} w_{<4>}
17074  //Double_t sumOfWeightsForSix = fIntFlowSumOfEventWeights[0]->GetBinContent(3); // sum_{i=1}^{N} w_{<6>}
17075  //Double_t sumOfWeightsForEight = fIntFlowSumOfEventWeights[0]->GetBinContent(4); // sum_{i=1}^{N} w_{<8>}
17076  
17077  // average reduced correlations:
17078  Double_t twoReduced = 0.; // <<2'>> 
17079  Double_t fourReduced = 0.; // <<4'>>
17080  //Double_t sixReduced = 0.; // <<6'>>
17081  //Double_t eightReduced = 0.; // <<8'>>
17082
17083  // sum of weights for reduced correlation:
17084  Double_t sumOfWeightsForTwoReduced = 0.; // sum_{i=1}^{N} w_{<2'>}
17085  Double_t sumOfWeightsForFourReduced = 0.; // sum_{i=1}^{N} w_{<4'>}
17086  //Double_t sumOfWeightsForSixReduced = 0.; // sum_{i=1}^{N} w_{<6'>}
17087  //Double_t sumOfWeightsForEightReduced = 0.; // sum_{i=1}^{N} w_{<8'>}
17088   
17089  // product of weights for reduced correlation:
17090  Double_t productOfWeightsForTwoTwoReduced = 0.; // sum_{i=1}^{N} w_{<2>}w_{<2'>}
17091  Double_t productOfWeightsForTwoFourReduced = 0.; // sum_{i=1}^{N} w_{<2>}w_{<4'>}
17092  Double_t productOfWeightsForFourTwoReduced = 0.; // sum_{i=1}^{N} w_{<4>}w_{<2'>}
17093  Double_t productOfWeightsForFourFourReduced = 0.; // sum_{i=1}^{N} w_{<4>}w_{<4'>}
17094  Double_t productOfWeightsForTwoReducedFourReduced = 0.; // sum_{i=1}^{N} w_{<2'>}w_{<4'>}
17095  // ...
17096  
17097  // products for differential flow:
17098  Double_t twoTwoReduced = 0; // <<2><2'>> 
17099  Double_t twoFourReduced = 0; // <<2><4'>> 
17100  Double_t fourTwoReduced = 0; // <<4><2'>> 
17101  Double_t fourFourReduced = 0; // <<4><4'>> 
17102  Double_t twoReducedFourReduced = 0; // <<2'><4'>> 
17103
17104  // denominators in the expressions for the unbiased estimators for covariances:
17105  // denominator = 1 - term1/(term2*term3)
17106  // prefactor = term1/(term2*term3)
17107  Double_t denominator = 0.; 
17108  Double_t prefactor = 0.;
17109  Double_t term1 = 0.; 
17110  Double_t term2 = 0.; 
17111  Double_t term3 = 0.; 
17112  
17113  // unbiased estimators for covariances for differential flow:
17114  Double_t covTwoTwoReduced = 0.; // Cov(<2>,<2'>)
17115  Double_t wCovTwoTwoReduced = 0.; // Cov(<2>,<2'>) * prefactor(w_{<2>},w_{<2'>})
17116  Double_t covTwoFourReduced = 0.; // Cov(<2>,<4'>)
17117  Double_t wCovTwoFourReduced = 0.; // Cov(<2>,<4'>) * prefactor(w_{<2>},w_{<4'>})
17118  Double_t covFourTwoReduced = 0.; // Cov(<4>,<2'>)
17119  Double_t wCovFourTwoReduced = 0.; // Cov(<4>,<2'>) * prefactor(w_{<4>},w_{<2'>})
17120  Double_t covFourFourReduced = 0.; // Cov(<4>,<4'>)
17121  Double_t wCovFourFourReduced = 0.; // Cov(<4>,<4'>) * prefactor(w_{<4>},w_{<4'>})
17122  Double_t covTwoReducedFourReduced = 0.; // Cov(<2'>,<4'>)
17123  Double_t wCovTwoReducedFourReduced = 0.; // Cov(<2'>,<4'>) * prefactor(w_{<2'>},w_{<4'>})
17124  
17125  for(Int_t b=1;b<=nBinsPtEta[pe];b++)
17126  {
17127   // average reduced corelations:
17128   twoReduced = fDiffFlowCorrelationsHist[t][pe][0]->GetBinContent(b);
17129   fourReduced = fDiffFlowCorrelationsHist[t][pe][1]->GetBinContent(b);
17130   // average products:
17131   twoTwoReduced = fDiffFlowProductOfCorrelationsPro[t][pe][0][1]->GetBinContent(b);
17132   twoFourReduced = fDiffFlowProductOfCorrelationsPro[t][pe][0][3]->GetBinContent(b);
17133   fourTwoReduced = fDiffFlowProductOfCorrelationsPro[t][pe][1][2]->GetBinContent(b);
17134   fourFourReduced = fDiffFlowProductOfCorrelationsPro[t][pe][2][3]->GetBinContent(b);
17135   twoReducedFourReduced = fDiffFlowProductOfCorrelationsPro[t][pe][1][3]->GetBinContent(b);  
17136   // sum of weights for reduced correlations:
17137   sumOfWeightsForTwoReduced = fDiffFlowSumOfEventWeights[t][pe][0][0]->GetBinContent(b);
17138   sumOfWeightsForFourReduced = fDiffFlowSumOfEventWeights[t][pe][0][1]->GetBinContent(b);
17139   // products of weights for correlations:
17140   productOfWeightsForTwoTwoReduced = fDiffFlowSumOfProductOfEventWeights[t][pe][0][1]->GetBinContent(b); 
17141   productOfWeightsForTwoFourReduced = fDiffFlowSumOfProductOfEventWeights[t][pe][0][3]->GetBinContent(b);
17142   productOfWeightsForFourTwoReduced = fDiffFlowSumOfProductOfEventWeights[t][pe][1][2]->GetBinContent(b);
17143   productOfWeightsForFourFourReduced = fDiffFlowSumOfProductOfEventWeights[t][pe][2][3]->GetBinContent(b);
17144   productOfWeightsForTwoReducedFourReduced = fDiffFlowSumOfProductOfEventWeights[t][pe][1][3]->GetBinContent(b);
17145   // denominator for the unbiased estimator for covariances: 1 - term1/(term2*term3) 
17146   // prefactor (multiplies Cov's) = term1/(term2*term3)       
17147   // <2>,<2'>:
17148   term1 = productOfWeightsForTwoTwoReduced;      
17149   term2 = sumOfWeightsForTwo;
17150   term3 = sumOfWeightsForTwoReduced;        
17151   if(term2*term3>0.)
17152   {
17153    denominator = 1.-term1/(term2*term3);
17154    prefactor = term1/(term2*term3);
17155    if(TMath::Abs(denominator)>1.e-6)
17156    {
17157     covTwoTwoReduced = (twoTwoReduced-two*twoReduced)/denominator;            
17158     wCovTwoTwoReduced = covTwoTwoReduced*prefactor; 
17159     fDiffFlowCovariances[t][pe][0]->SetBinContent(b,wCovTwoTwoReduced);
17160    }
17161   }
17162   // <2>,<4'>:
17163   term1 = productOfWeightsForTwoFourReduced;      
17164   term2 = sumOfWeightsForTwo;
17165   term3 = sumOfWeightsForFourReduced;        
17166   if(term2*term3>0.)
17167   {
17168    denominator = 1.-term1/(term2*term3);
17169    prefactor = term1/(term2*term3);
17170    if(TMath::Abs(denominator)>1.e-6)
17171    {
17172     covTwoFourReduced = (twoFourReduced-two*fourReduced)/denominator;            
17173     wCovTwoFourReduced = covTwoFourReduced*prefactor; 
17174     fDiffFlowCovariances[t][pe][1]->SetBinContent(b,wCovTwoFourReduced);
17175    }
17176   }
17177   // <4>,<2'>:
17178   term1 = productOfWeightsForFourTwoReduced;      
17179   term2 = sumOfWeightsForFour;
17180   term3 = sumOfWeightsForTwoReduced;        
17181   if(term2*term3>0.)
17182   {
17183    denominator = 1.-term1/(term2*term3);
17184    prefactor = term1/(term2*term3);
17185    if(TMath::Abs(denominator)>1.e-6)
17186    {
17187     covFourTwoReduced = (fourTwoReduced-four*twoReduced)/denominator;            
17188     wCovFourTwoReduced = covFourTwoReduced*prefactor; 
17189     fDiffFlowCovariances[t][pe][2]->SetBinContent(b,wCovFourTwoReduced);
17190    }
17191   }
17192   // <4>,<4'>:
17193   term1 = productOfWeightsForFourFourReduced;      
17194   term2 = sumOfWeightsForFour;
17195   term3 = sumOfWeightsForFourReduced;        
17196   if(term2*term3>0.)
17197   {
17198    denominator = 1.-term1/(term2*term3);
17199    prefactor = term1/(term2*term3);
17200    if(TMath::Abs(denominator)>1.e-6)
17201    {
17202     covFourFourReduced = (fourFourReduced-four*fourReduced)/denominator;            
17203     wCovFourFourReduced = covFourFourReduced*prefactor; 
17204     fDiffFlowCovariances[t][pe][3]->SetBinContent(b,wCovFourFourReduced);
17205    }
17206   }
17207   // <2'>,<4'>:
17208   term1 = productOfWeightsForTwoReducedFourReduced;      
17209   term2 = sumOfWeightsForTwoReduced;
17210   term3 = sumOfWeightsForFourReduced;        
17211   if(term2*term3>0.)
17212   {
17213    denominator = 1.-term1/(term2*term3);
17214    prefactor = term1/(term2*term3);
17215    if(TMath::Abs(denominator)>1.e-6)
17216    {
17217     covTwoReducedFourReduced = (twoReducedFourReduced-twoReduced*fourReduced)/denominator;            
17218     wCovTwoReducedFourReduced = covTwoReducedFourReduced*prefactor; 
17219     fDiffFlowCovariances[t][pe][4]->SetBinContent(b,wCovTwoReducedFourReduced);
17220    }
17221   }   
17222  } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
17223   
17224 } // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCovariances(TString type, TString ptOrEta)
17225
17226 //=======================================================================================================================
17227
17228 void AliFlowAnalysisWithQCumulants::CalculateDiffFlow(TString type, TString ptOrEta)
17229 {
17230  // Calculate final results for differential flow.
17231  
17232  // REMARK: Differential flow calculated in this method is NOT corrected for non-uniform acceptance. 
17233  // This correction, if enabled via setter SetApplyCorrectionForNUA(Bool_t), is applied in the method 
17234  // CalculateDiffFlowCorrectedForNUA(TString type, TString ptOrEta)
17235   
17236  Int_t t = 0; // RP or POI
17237  Int_t pe = 0; // pt or eta
17238
17239  if(type == "RP")
17240  {
17241   t = 0;
17242  } else if(type == "POI")
17243    {
17244     t = 1;
17245    } 
17246      
17247  if(ptOrEta == "Pt")
17248  {
17249   pe = 0;
17250  } else if(ptOrEta == "Eta")
17251    {
17252     pe = 1;
17253    } 
17254        
17255  // Common:
17256  Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
17257  // Correlations:
17258  Double_t two = fIntFlowCorrelationsHist->GetBinContent(1); // <<2>>
17259  Double_t four = fIntFlowCorrelationsHist->GetBinContent(2); // <<4>> 
17260  // Statistical errors of correlations:
17261  Double_t twoError = fIntFlowCorrelationsHist->GetBinError(1);
17262  Double_t fourError = fIntFlowCorrelationsHist->GetBinError(2);   
17263  // Reduced correlations:
17264  Double_t twoReduced = 0.; // <<2'>>
17265  Double_t fourReduced = 0.; // <<4'>>
17266  // Statistical errors of reduced correlations:
17267  Double_t twoReducedError = 0.; 
17268  Double_t fourReducedError = 0.; 
17269  // Covariances:
17270  Double_t wCovTwoFour = 0.; // Cov(<2>,<4>) * prefactor(<2>,<4>)
17271  if(!fForgetAboutCovariances)
17272  {
17273   wCovTwoFour = fIntFlowCovariances->GetBinContent(1); // Cov(<2>,<4>) * prefactor(<2>,<4>)
17274  }
17275  Double_t wCovTwoTwoReduced = 0.; // Cov(<2>,<2'>) * prefactor(<2>,<2'>)
17276  Double_t wCovTwoFourReduced = 0.; // Cov(<2>,<4'>) * prefactor(<2>,<4'>)
17277  Double_t wCovFourTwoReduced = 0.; // Cov(<4>,<2'>) * prefactor(<4>,<2'>)
17278  Double_t wCovFourFourReduced = 0.; // Cov(<4>,<4'>) * prefactor(<4>,<4'>)
17279  Double_t wCovTwoReducedFourReduced = 0.; // Cov(<2'>,<4'>) * prefactor(<2'>,<4'>)
17280  // Differential flow:
17281  Double_t v2Prime = 0.; // v'{2}                   
17282  Double_t v4Prime = 0.; // v'{4}
17283  // Statistical error of differential flow:
17284  Double_t v2PrimeError = 0.;                    
17285  Double_t v4PrimeError = 0.; 
17286  // Squared statistical error of differential flow:
17287  Double_t v2PrimeErrorSquared = 0.;                    
17288  Double_t v4PrimeErrorSquared = 0.; 
17289  // Loop over pt or eta bins:
17290  for(Int_t b=1;b<=nBinsPtEta[pe];b++)
17291  {
17292   // Reduced correlations and statistical errors:
17293   twoReduced = fDiffFlowCorrelationsHist[t][pe][0]->GetBinContent(b);
17294   twoReducedError = fDiffFlowCorrelationsHist[t][pe][0]->GetBinError(b);
17295   fourReduced = fDiffFlowCorrelationsHist[t][pe][1]->GetBinContent(b);
17296   fourReducedError = fDiffFlowCorrelationsHist[t][pe][1]->GetBinError(b);
17297   // Covariances:
17298   if(!fForgetAboutCovariances)
17299   {
17300    wCovTwoTwoReduced = fDiffFlowCovariances[t][pe][0]->GetBinContent(b);
17301    wCovTwoFourReduced = fDiffFlowCovariances[t][pe][1]->GetBinContent(b);
17302    wCovFourTwoReduced = fDiffFlowCovariances[t][pe][2]->GetBinContent(b);
17303    wCovFourFourReduced = fDiffFlowCovariances[t][pe][3]->GetBinContent(b);
17304    wCovTwoReducedFourReduced = fDiffFlowCovariances[t][pe][4]->GetBinContent(b);
17305   }
17306   // Differential flow:
17307   // v'{2}:
17308   if(two>0.) 
17309   {
17310    v2Prime = twoReduced/pow(two,0.5);
17311    v2PrimeErrorSquared = (1./4.)*pow(two,-3.)*(pow(twoReduced,2.)*pow(twoError,2.)
17312                        + 4.*pow(two,2.)*pow(twoReducedError,2.)
17313                        - 4.*two*twoReduced*wCovTwoTwoReduced);
17314    if(v2PrimeErrorSquared>0.){v2PrimeError = pow(v2PrimeErrorSquared,0.5);}
17315    if(TMath::Abs(v2Prime)>0.)
17316    {
17317     fDiffFlow[t][pe][0]->SetBinContent(b,v2Prime); 
17318     fDiffFlow[t][pe][0]->SetBinError(b,v2PrimeError);    
17319    }  
17320   } // end of if(two>0.) 
17321   // differential flow:
17322   // v'{4}
17323   if(2.*pow(two,2.)-four > 0.) 
17324   {
17325    v4Prime = (2.*two*twoReduced-fourReduced)/pow(2.*pow(two,2.)-four,3./4.);
17326    v4PrimeErrorSquared = pow(2.*pow(two,2.)-four,-7./2.)
17327                        * (pow(2.*pow(two,2.)*twoReduced-3.*two*fourReduced+2.*four*twoReduced,2.)*pow(twoError,2.)
17328                        + (9./16.)*pow(2.*two*twoReduced-fourReduced,2.)*pow(fourError,2.)
17329                        + 4.*pow(two,2.)*pow(2.*pow(two,2.)-four,2.)*pow(twoReducedError,2.)
17330                        + pow(2.*pow(two,2.)-four,2.)*pow(fourReducedError,2.)                          
17331                        - (3./2.)*(2.*two*twoReduced-fourReduced)
17332                        * (2.*pow(two,2.)*twoReduced-3.*two*fourReduced+2.*four*twoReduced)*wCovTwoFour
17333                        - 4.*two*(2.*pow(two,2.)-four)
17334                        * (2.*pow(two,2.)*twoReduced-3.*two*fourReduced+2.*four*twoReduced)*wCovTwoTwoReduced
17335                        + 2.*(2.*pow(two,2.)-four)
17336                        * (2.*pow(two,2.)*twoReduced-3.*two*fourReduced+2.*four*twoReduced)*wCovTwoFourReduced
17337                        + 3.*two*(2.*pow(two,2.)-four)*(2.*two*twoReduced-fourReduced)*wCovFourTwoReduced
17338                        - (3./2.)*(2.*pow(two,2.)-four)*(2.*two*twoReduced-fourReduced)*wCovFourFourReduced 
17339                        - 4.*two*pow(2.*pow(two,2.)-four,2.)*wCovTwoReducedFourReduced);  
17340    if(v4PrimeErrorSquared>0.){v4PrimeError = pow(v4PrimeErrorSquared,0.5);}        
17341    if(TMath::Abs(v4Prime)>0.)
17342    {
17343     fDiffFlow[t][pe][1]->SetBinContent(b,v4Prime);
17344     fDiffFlow[t][pe][1]->SetBinError(b,v4PrimeError);     
17345    }
17346   } // end of if(2.*pow(two,2.)-four > 0.)  
17347  } // end of for(Int_t b=1;b<=fnBinsPtEta[pe];b++)
17348
17349 } // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlow(TString type, Bool_t useParticleWeights)
17350
17351 //=======================================================================================================================
17352
17353 void AliFlowAnalysisWithQCumulants::Calculate2DDiffFlow(TString type)
17354 {
17355  // Calculate final results for 2D diferential flow.
17356
17357  // to be improved - check pointers used in this method
17358
17359  Int_t t = 0; // RP or POI
17360
17361  if(type == "RP")
17362  {
17363   t = 0;
17364  } else if(type == "POI")
17365    {
17366     t = 1;
17367    } 
17368  
17369  // Differential flow:
17370  Double_t v2Prime = 0.; // v'{2}                   
17371  Double_t v4Prime = 0.; // v'{4}
17372  // Differential cumulants:
17373  Double_t qc2Prime = 0.; // QC{2'}                   
17374  Double_t qc4Prime = 0.; // QC{4'}
17375  // Looping over all (pt,eta) bins and calculating differential flow: 
17376  for(Int_t p=1;p<=fnBinsPt;p++)
17377  {
17378   for(Int_t e=1;e<=fnBinsEta;e++)
17379   {
17380    // QC{2'}:
17381    qc2Prime = f2DDiffFlowCumulants[t][0]->GetBinContent(f2DDiffFlowCumulants[t][0]->GetBin(p,e));
17382    if(qc2Prime>=0.)
17383    {
17384     v2Prime = pow(qc2Prime,0.5);
17385     f2DDiffFlow[t][0]->SetBinContent(f2DDiffFlow[t][0]->GetBin(p,e),v2Prime); 
17386    } 
17387    // QC{4'}:
17388    qc4Prime = f2DDiffFlowCumulants[t][1]->GetBinContent(f2DDiffFlowCumulants[t][1]->GetBin(p,e));
17389    if(qc4Prime<=0.)
17390    {
17391     v4Prime = pow(-1.*qc4Prime,1./4.);
17392     f2DDiffFlow[t][1]->SetBinContent(f2DDiffFlow[t][1]->GetBin(p,e),v4Prime); 
17393    }   
17394   } // end of for(Int_t e=1;e<=fnBinsEta;e++)
17395  } // end of for(Int_t p=1;p<=fnBinsPt;p++)
17396  
17397 } // end of void AliFlowAnalysisWithQCumulants::Calculate2DDiffFlow(TString type)  
17398
17399 //=======================================================================================================================
17400
17401 void AliFlowAnalysisWithQCumulants::StoreIntFlowFlags()
17402 {
17403  // a) Store all flags for integrated flow in profile fIntFlowFlags.
17404  
17405  if(!fIntFlowFlags)
17406  {
17407   cout<<"WARNING: fIntFlowFlags is NULL in AFAWQC::SFFIF() !!!!"<<endl;
17408   exit(0);
17409  } 
17410
17411  // particle weights used or not:
17412  fIntFlowFlags->Fill(0.5,(Int_t)fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights);
17413  // which event weights were used:
17414  if(fMultiplicityWeight->Contains("combinations"))
17415  {
17416   fIntFlowFlags->Fill(1.5,0); // 0 = "combinations" (default)
17417  } else if(fMultiplicityWeight->Contains("unit"))
17418    {
17419     fIntFlowFlags->Fill(1.5,1); // 1 = "unit"   
17420    } else if(fMultiplicityWeight->Contains("multiplicity"))
17421      {
17422       fIntFlowFlags->Fill(1.5,2); // 2 = "multiplicity"        
17423      } 
17424  fIntFlowFlags->Fill(2.5,(Int_t)fApplyCorrectionForNUA);
17425  fIntFlowFlags->Fill(3.5,(Int_t)fPrintFinalResults[0]);
17426  fIntFlowFlags->Fill(4.5,(Int_t)fPrintFinalResults[1]);
17427  fIntFlowFlags->Fill(5.5,(Int_t)fPrintFinalResults[2]);
17428  fIntFlowFlags->Fill(6.5,(Int_t)fPrintFinalResults[3]);
17429  fIntFlowFlags->Fill(7.5,(Int_t)fApplyCorrectionForNUAVsM);
17430  fIntFlowFlags->Fill(8.5,(Int_t)fPropagateErrorAlsoFromNIT);
17431  fIntFlowFlags->Fill(9.5,(Int_t)fCalculateCumulantsVsM);
17432  fIntFlowFlags->Fill(10.5,(Int_t)fMinimumBiasReferenceFlow);
17433  fIntFlowFlags->Fill(11.5,(Int_t)fForgetAboutCovariances);
17434  fIntFlowFlags->Fill(12.5,(Int_t)fStorePhiDistributionForOneEvent); 
17435  fIntFlowFlags->Fill(13.5,(Int_t)fFillMultipleControlHistograms);  
17436  fIntFlowFlags->Fill(14.5,(Int_t)fCalculateAllCorrelationsVsM);  
17437  // which multiplicity was used:
17438  if(fMultiplicityIs==AliFlowCommonConstants::kRP) // # of Reference Particles
17439  {
17440   fIntFlowFlags->Fill(15.5,0); // 0 = # of Reference Particles
17441  } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
17442    {
17443     fIntFlowFlags->Fill(15.5,1); // 1 = ref. mult. from ESD
17444    } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
17445      {
17446       fIntFlowFlags->Fill(15.5,2); // 2 = # of Particles of Interest
17447      } 
17448  fIntFlowFlags->Fill(16.5,(Int_t)fExactNoRPs); 
17449
17450 } // end of void AliFlowAnalysisWithQCumulants::StoreIntFlowFlags()
17451
17452 //=======================================================================================================================
17453
17454 void AliFlowAnalysisWithQCumulants::StoreDiffFlowFlags()
17455 {
17456  // Store all flags for differential flow in the profile fDiffFlowFlags.
17457   
17458  if(!fDiffFlowFlags)
17459  {
17460   printf("\n WARNING (QC): fDiffFlowFlags is NULL in AFAWQC::SDFF() !!!!\n\n");
17461   exit(0);
17462  } 
17463  
17464  fDiffFlowFlags->Fill(0.5,fCalculateDiffFlow); // calculate differential flow
17465  fDiffFlowFlags->Fill(1.5,fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights); // particle weights used or not?
17466  //fDiffFlowFlags->Fill(2.5,""); // which event weight was used? ("combinations", "unit" or "multiplicity") to be improved - finalized
17467  fDiffFlowFlags->Fill(3.5,fApplyCorrectionForNUA); // corrected for non-uniform acceptance or not
17468  fDiffFlowFlags->Fill(4.5,fCalculate2DDiffFlow); // calculate also 2D differential flow vs (pt,eta) 
17469  fDiffFlowFlags->Fill(5.5,fCalculateDiffFlowVsEta); // if you set kFALSE only differential flow vs pt is calculated
17470      
17471 } // end of void AliFlowAnalysisWithQCumulants::StoreDiffFlowFlags()
17472
17473 //=======================================================================================================================
17474
17475 void AliFlowAnalysisWithQCumulants::StoreMixedHarmonicsFlags()
17476 {
17477  // Store all flags for mixed harmonics in profile fMixedHarmonicsFlags.
17478  
17479  if(!fMixedHarmonicsFlags)
17480  {
17481   cout<<"WARNING: fMixedHarmonicsFlags is NULL in AFAWQC::SMHF() !!!!"<<endl;
17482   exit(0);
17483  } 
17484
17485  fMixedHarmonicsFlags->Fill(0.5,(Int_t)fCalculateMixedHarmonics);
17486  fMixedHarmonicsFlags->Fill(1.5,(Int_t)fHarmonic);
17487  fMixedHarmonicsFlags->Fill(2.5,(Int_t)fCalculateMixedHarmonicsVsM);
17488  // Which multiplicity weight was used?:
17489
17490  if(fMultiplicityWeight->Contains("combinations"))
17491  {
17492   fMixedHarmonicsFlags->Fill(3.5,0); // 0 = "combinations" (default)
17493  } else if(fMultiplicityWeight->Contains("unit"))
17494    {
17495     fMixedHarmonicsFlags->Fill(3.5,1); // 1 = "unit"   
17496    } else if(fMultiplicityWeight->Contains("multiplicity"))
17497      {
17498       fMixedHarmonicsFlags->Fill(3.5,2); // 2 = "multiplicity"        
17499      } 
17500
17501 } // end of void AliFlowAnalysisWithQCumulants::StoreMixedHarmonicsFlags()
17502
17503 //=======================================================================================================================
17504
17505 void AliFlowAnalysisWithQCumulants::GetPointersForCommonHistograms() 
17506 {
17507  // Access all pointers to common control and common result histograms and profiles.
17508  
17509  TString sCommonConstantsName = "fCommonConstants";
17510  sCommonConstantsName += fAnalysisLabel->Data();
17511  fCommonConstants = dynamic_cast<TProfile*>(fHistList->FindObject(sCommonConstantsName.Data()));
17512  if(!fCommonConstants)
17513  {
17514   printf("\n WARNING (QC): fCommonConstants is NULL in AFAWQC::GPFCH() !!!!\n\n");
17515   exit(0);
17516  }
17517  
17518  // to be improved - lines bellow can be implemented better.
17519  
17520  TString commonHistsName = "AliFlowCommonHistQC";
17521  commonHistsName += fAnalysisLabel->Data();
17522  AliFlowCommonHist *commonHist = dynamic_cast<AliFlowCommonHist*>(fHistList->FindObject(commonHistsName.Data()));
17523  if(commonHist) 
17524  {
17525   this->SetCommonHists(commonHist); 
17526   if(fCommonHists->GetHarmonic())
17527   {
17528    fHarmonic = (Int_t)(fCommonHists->GetHarmonic())->GetBinContent(1);
17529   } 
17530  } // end of if(commonHist) 
17531  TString commonHists2ndOrderName = "AliFlowCommonHist2ndOrderQC";
17532  commonHists2ndOrderName += fAnalysisLabel->Data();
17533  AliFlowCommonHist *commonHist2nd = dynamic_cast<AliFlowCommonHist*>(fHistList->FindObject(commonHists2ndOrderName.Data()));
17534  if(commonHist2nd) this->SetCommonHists2nd(commonHist2nd);   
17535  TString commonHists4thOrderName = "AliFlowCommonHist4thOrderQC";
17536  commonHists4thOrderName += fAnalysisLabel->Data();
17537  AliFlowCommonHist *commonHist4th = dynamic_cast<AliFlowCommonHist*>(fHistList->FindObject(commonHists4thOrderName.Data()));
17538  if(commonHist4th) this->SetCommonHists4th(commonHist4th);  
17539  TString commonHists6thOrderName = "AliFlowCommonHist6thOrderQC";
17540  commonHists6thOrderName += fAnalysisLabel->Data();
17541  AliFlowCommonHist *commonHist6th = dynamic_cast<AliFlowCommonHist*>(fHistList->FindObject(commonHists6thOrderName.Data()));
17542  if(commonHist6th) this->SetCommonHists6th(commonHist6th);  
17543  TString commonHists8thOrderName = "AliFlowCommonHist8thOrderQC";
17544  commonHists8thOrderName += fAnalysisLabel->Data();
17545  AliFlowCommonHist *commonHist8th = dynamic_cast<AliFlowCommonHist*>(fHistList->FindObject(commonHists8thOrderName.Data()));
17546  if(commonHist8th) this->SetCommonHists8th(commonHist8th); 
17547   
17548  TString commonHistResults2ndOrderName = "AliFlowCommonHistResults2ndOrderQC"; 
17549  commonHistResults2ndOrderName += fAnalysisLabel->Data(); 
17550  AliFlowCommonHistResults *commonHistRes2nd = dynamic_cast<AliFlowCommonHistResults*>
17551                                               (fHistList->FindObject(commonHistResults2ndOrderName.Data()));
17552  if(commonHistRes2nd) this->SetCommonHistsResults2nd(commonHistRes2nd);   
17553  TString commonHistResults4thOrderName = "AliFlowCommonHistResults4thOrderQC";
17554  commonHistResults4thOrderName += fAnalysisLabel->Data();
17555  AliFlowCommonHistResults *commonHistRes4th = dynamic_cast<AliFlowCommonHistResults*>
17556                                               (fHistList->FindObject(commonHistResults4thOrderName.Data()));
17557  if(commonHistRes4th) this->SetCommonHistsResults4th(commonHistRes4th);  
17558  TString commonHistResults6thOrderName = "AliFlowCommonHistResults6thOrderQC";
17559  commonHistResults6thOrderName += fAnalysisLabel->Data();
17560  AliFlowCommonHistResults *commonHistRes6th = dynamic_cast<AliFlowCommonHistResults*>
17561                                               (fHistList->FindObject(commonHistResults6thOrderName.Data()));
17562  if(commonHistRes6th) this->SetCommonHistsResults6th(commonHistRes6th);  
17563  TString commonHistResults8thOrderName = "AliFlowCommonHistResults8thOrderQC";
17564  commonHistResults8thOrderName += fAnalysisLabel->Data();
17565  AliFlowCommonHistResults *commonHistRes8th = dynamic_cast<AliFlowCommonHistResults*>
17566                                               (fHistList->FindObject(commonHistResults8thOrderName.Data()));  
17567  if(commonHistRes8th) this->SetCommonHistsResults8th(commonHistRes8th);
17568        
17569 } // end of void AliFlowAnalysisWithQCumulants::GetPointersForCommonHistograms() 
17570
17571 //=======================================================================================================================
17572
17573 void AliFlowAnalysisWithQCumulants::GetPointersForParticleWeightsHistograms() 
17574 {
17575  // Get pointers for histograms with particle weights.
17576
17577  TList *weightsList = dynamic_cast<TList*>(fHistList->FindObject("Weights"));
17578  if(!weightsList){printf("\n WARNING (QC): weightsList is NULL in AFAWQC::GPFPWH() !!!!\n");exit(0);}
17579  this->SetWeightsList(weightsList);
17580  TString fUseParticleWeightsName = "fUseParticleWeightsQC"; // to be improved (hirdwired label QC)
17581  fUseParticleWeightsName += fAnalysisLabel->Data();
17582  TProfile *useParticleWeights = dynamic_cast<TProfile*>(weightsList->FindObject(fUseParticleWeightsName.Data()));
17583  if(useParticleWeights)
17584  {
17585   this->SetUseParticleWeights(useParticleWeights);  
17586   fUsePhiWeights = (Int_t)fUseParticleWeights->GetBinContent(1); 
17587   fUsePtWeights = (Int_t)fUseParticleWeights->GetBinContent(2); 
17588   fUseEtaWeights = (Int_t)fUseParticleWeights->GetBinContent(3);  
17589   fUseTrackWeights = (Int_t)fUseParticleWeights->GetBinContent(4);  
17590  }
17591 } // end of void AliFlowAnalysisWithQCumulants::GetPointersForParticleWeightsHistograms(); 
17592
17593 //=======================================================================================================================
17594
17595 void AliFlowAnalysisWithQCumulants::GetPointersForIntFlowHistograms() 
17596 {
17597  // Get pointers for histograms and profiles relevant for integrated flow:
17598  //  a) Get pointer to base list for integrated flow holding profile fIntFlowFlags and lists fIntFlowProfiles and fIntFlowResults.
17599  //  b) Get pointer to profile fIntFlowFlags holding all flags for integrated flow.
17600  //  c) Get pointer to list fIntFlowProfiles and pointers to all objects that she holds. 
17601  //  d) Get pointer to list fIntFlowResults and pointers to all objects that she holds. 
17602   
17603  TString sinCosFlag[2] = {"sin","cos"}; // to be improved (should I promote this to data member?)
17604  TString powerFlag[2] = {"linear","quadratic"}; // to be improved (should I promote this to data member?)
17605  TString correlationFlag[4] = {"#LT#LT2#GT#GT","#LT#LT4#GT#GT","#LT#LT6#GT#GT","#LT#LT8#GT#GT"}; // to be improved (should I promote this to data member?)
17606  TString squaredCorrelationFlag[4] = {"#LT#LT2#GT^{2}#GT","#LT#LT4#GT^{2}#GT","#LT#LT6#GT^{2}#GT","#LT#LT8#GT^{2}#GT"}; // to be improved (should I promote this to data member?)
17607  
17608  // a) Get pointer to base list for integrated flow holding profile fIntFlowFlags and lists fIntFlowProfiles and fIntFlowResults:
17609  TList *intFlowList = NULL;
17610  intFlowList = dynamic_cast<TList*>(fHistList->FindObject("Integrated Flow"));
17611  if(!intFlowList) 
17612  {
17613   cout<<"WARNING: intFlowList is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17614   exit(0); 
17615  }  
17616   
17617  // b) Get pointer to profile fIntFlowFlags holding all flags for integrated flow:
17618  TString intFlowFlagsName = "fIntFlowFlags";
17619  intFlowFlagsName += fAnalysisLabel->Data();
17620  TProfile *intFlowFlags = dynamic_cast<TProfile*>(intFlowList->FindObject(intFlowFlagsName.Data()));
17621  if(intFlowFlags)
17622  {
17623   this->SetIntFlowFlags(intFlowFlags);  
17624   fApplyCorrectionForNUA = (Bool_t)intFlowFlags->GetBinContent(3); 
17625   fApplyCorrectionForNUAVsM = (Bool_t)intFlowFlags->GetBinContent(8); 
17626   fCalculateCumulantsVsM = (Bool_t)intFlowFlags->GetBinContent(10);  
17627  } else 
17628    {
17629     cout<<"WARNING: intFlowFlags is NULL in FAWQC::GPFIFH() !!!!"<<endl;
17630    }
17631   
17632   // c) Get pointer to list fIntFlowProfiles and pointers to all objects that she holds:
17633   TList *intFlowProfiles = NULL;
17634   intFlowProfiles = dynamic_cast<TList*>(intFlowList->FindObject("Profiles"));
17635   if(intFlowProfiles)  
17636   {
17637    // average multiplicities:
17638    TString avMultiplicityName = "fAvMultiplicity";
17639    avMultiplicityName += fAnalysisLabel->Data();
17640    TProfile *avMultiplicity = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(avMultiplicityName.Data()));
17641    if(avMultiplicity) 
17642    {
17643     this->SetAvMultiplicity(avMultiplicity);
17644    } else 
17645      {
17646       cout<<"WARNING: avMultiplicity is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17647      }
17648    // average correlations <<2>>, <<4>>, <<6>> and <<8>> (with wrong errors!):
17649    TString intFlowCorrelationsProName = "fIntFlowCorrelationsPro";
17650    intFlowCorrelationsProName += fAnalysisLabel->Data();
17651    TProfile *intFlowCorrelationsPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowCorrelationsProName.Data()));
17652    if(intFlowCorrelationsPro) 
17653    {
17654     this->SetIntFlowCorrelationsPro(intFlowCorrelationsPro);
17655    } else 
17656      {
17657       cout<<"WARNING: intFlowCorrelationsPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17658      }      
17659    // average squared correlations <<2>^2>, <<4>^2>, <<6>^2> and <<8^2>>:
17660    TString intFlowSquaredCorrelationsProName = "fIntFlowSquaredCorrelationsPro";
17661    intFlowSquaredCorrelationsProName += fAnalysisLabel->Data();
17662    TProfile *intFlowSquaredCorrelationsPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowSquaredCorrelationsProName.Data()));
17663    if(intFlowSquaredCorrelationsPro) 
17664    {
17665     this->SetIntFlowSquaredCorrelationsPro(intFlowSquaredCorrelationsPro);
17666    } else 
17667      {
17668       cout<<"WARNING: intFlowSquaredCorrelationsPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17669      }             
17670    if(fCalculateCumulantsVsM)
17671    {
17672     // Average correlations <<2>>, <<4>>, <<6>> and <<8>> versus multiplicity for all events (error is wrong here):   
17673     TString intFlowCorrelationsVsMProName = "fIntFlowCorrelationsVsMPro";
17674     intFlowCorrelationsVsMProName += fAnalysisLabel->Data();
17675     for(Int_t ci=0;ci<4;ci++) // correlation index
17676     {
17677      TProfile *intFlowCorrelationsVsMPro = dynamic_cast<TProfile*>
17678                                         (intFlowProfiles->FindObject(Form("%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data())));
17679      if(intFlowCorrelationsVsMPro)
17680      {
17681       this->SetIntFlowCorrelationsVsMPro(intFlowCorrelationsVsMPro,ci);
17682      } else
17683        {
17684         cout<<"WARNING: "<<Form("intFlowCorrelationsVsMPro[%d]",ci)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17685        }   
17686     } // end of for(Int_t ci=0;ci<4;ci++) // correlation index 
17687     // Average squared correlations <<2>^2>, <<4>^2>, <<6>^2> and <<8>^2> versus multiplicity for all events:   
17688     TString intFlowSquaredCorrelationsVsMProName = "fIntFlowSquaredCorrelationsVsMPro";
17689     intFlowSquaredCorrelationsVsMProName += fAnalysisLabel->Data();
17690     for(Int_t ci=0;ci<4;ci++) // correlation index
17691     {
17692      TProfile *intFlowSquaredCorrelationsVsMPro = dynamic_cast<TProfile*>
17693                       (intFlowProfiles->FindObject(Form("%s, %s",intFlowSquaredCorrelationsVsMProName.Data(),squaredCorrelationFlag[ci].Data())));
17694      if(intFlowSquaredCorrelationsVsMPro)
17695      {
17696       this->SetIntFlowSquaredCorrelationsVsMPro(intFlowSquaredCorrelationsVsMPro,ci);
17697      } else
17698        {
17699         cout<<"WARNING: "<<Form("intFlowSquaredCorrelationsVsMPro[%d]",ci)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17700        }   
17701     } // end of for(Int_t ci=0;ci<4;ci++) // correlation index 
17702    } // end of if(fCalculateCumulantsVsM)
17703    // average all correlations for integrated flow (with wrong errors!):
17704    TString intFlowCorrelationsAllProName = "fIntFlowCorrelationsAllPro";
17705    intFlowCorrelationsAllProName += fAnalysisLabel->Data();
17706    TProfile *intFlowCorrelationsAllPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowCorrelationsAllProName.Data()));
17707    if(intFlowCorrelationsAllPro) 
17708    {
17709     this->SetIntFlowCorrelationsAllPro(intFlowCorrelationsAllPro);
17710    } else 
17711      {
17712       cout<<"WARNING: intFlowCorrelationsAllPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17713      }     
17714    // average extra correlations for integrated flow (which appear only when particle weights are used):
17715    // (to be improved: Weak point in implementation, I am assuming here that method GetPointersForParticleWeightsHistograms() was called)
17716    if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
17717    {
17718     TString intFlowExtraCorrelationsProName = "fIntFlowExtraCorrelationsPro";
17719     intFlowExtraCorrelationsProName += fAnalysisLabel->Data();
17720     TProfile *intFlowExtraCorrelationsPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowExtraCorrelationsProName.Data()));
17721     if(intFlowExtraCorrelationsPro) 
17722     {
17723      this->SetIntFlowExtraCorrelationsPro(intFlowExtraCorrelationsPro);
17724     } else 
17725       {
17726        cout<<"WARNING: intFlowExtraCorrelationsPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17727       }
17728    } // end of if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)        
17729    // average products of correlations <2>, <4>, <6> and <8>:  
17730    TString intFlowProductOfCorrelationsProName = "fIntFlowProductOfCorrelationsPro";
17731    intFlowProductOfCorrelationsProName += fAnalysisLabel->Data();
17732    TProfile *intFlowProductOfCorrelationsPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowProductOfCorrelationsProName.Data()));
17733    if(intFlowProductOfCorrelationsPro) 
17734    {
17735     this->SetIntFlowProductOfCorrelationsPro(intFlowProductOfCorrelationsPro);
17736    } else 
17737      {
17738       cout<<"WARNING: intFlowProductOfCorrelationsPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17739      }               
17740    // average product of correlations <2>, <4>, <6> and <8> versus multiplicity  
17741    // [0=<<2><4>>,1=<<2><6>>,2=<<2><8>>,3=<<4><6>>,4=<<4><8>>,5=<<6><8>>]  
17742    if(fCalculateCumulantsVsM)
17743    {
17744     TString intFlowProductOfCorrelationsVsMProName = "fIntFlowProductOfCorrelationsVsMPro";
17745     intFlowProductOfCorrelationsVsMProName += fAnalysisLabel->Data();
17746     TString productFlag[6] = {"#LT#LT2#GT#LT4#GT#GT","#LT#LT2#GT#LT6#GT#GT","#LT#LT2#GT#LT8#GT#GT",
17747                               "#LT#LT4#GT#LT6#GT#GT","#LT#LT4#GT#LT8#GT#GT","#LT#LT6#GT#LT8#GT#GT"};
17748     for(Int_t pi=0;pi<6;pi++)
17749     { 
17750      TProfile *intFlowProductOfCorrelationsVsMPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(Form("%s, %s",intFlowProductOfCorrelationsVsMProName.Data(),productFlag[pi].Data())));
17751      if(intFlowProductOfCorrelationsVsMPro)
17752      {
17753       this->SetIntFlowProductOfCorrelationsVsMPro(intFlowProductOfCorrelationsVsMPro,pi);
17754      } else
17755        {
17756         cout<<"WARNING: "<<Form("intFlowProductOfCorrelationsVsMPro[%d]",pi)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17757        }
17758     } // end of for(Int_t pi=0;pi<6;pi++)
17759    } // end of if(fCalculateCumulantsVsM)
17760    // average correction terms for non-uniform acceptance (with wrong errors!):
17761    for(Int_t sc=0;sc<2;sc++)
17762    {
17763     TString intFlowCorrectionTermsForNUAProName = "fIntFlowCorrectionTermsForNUAPro";
17764     intFlowCorrectionTermsForNUAProName += fAnalysisLabel->Data();
17765     TProfile *intFlowCorrectionTermsForNUAPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject((Form("%s: %s terms",intFlowCorrectionTermsForNUAProName.Data(),sinCosFlag[sc].Data()))));
17766     if(intFlowCorrectionTermsForNUAPro) 
17767     {
17768      this->SetIntFlowCorrectionTermsForNUAPro(intFlowCorrectionTermsForNUAPro,sc);
17769     } else 
17770       {
17771        cout<<"WARNING: intFlowCorrectionTermsForNUAPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17772        cout<<"sc = "<<sc<<endl;
17773       } 
17774     // versus multiplicity:
17775     if(fCalculateCumulantsVsM)
17776     {
17777      TString correctionTermFlag[4] = {"(n(phi1))","(n(phi1+phi2))","(n(phi1-phi2-phi3))","(n(2phi1-phi2))"}; // to be improved - hardwired 4
17778      TString intFlowCorrectionTermsForNUAVsMProName = "fIntFlowCorrectionTermsForNUAVsMPro";
17779      intFlowCorrectionTermsForNUAVsMProName += fAnalysisLabel->Data();
17780      for(Int_t ci=0;ci<4;ci++) // correction term index (to be improved - hardwired 4)
17781      {
17782       TProfile *intFlowCorrectionTermsForNUAVsMPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(Form("%s: #LT#LT%s%s#GT#GT",intFlowCorrectionTermsForNUAVsMProName.Data(),sinCosFlag[sc].Data(),correctionTermFlag[ci].Data())));
17783       if(intFlowCorrectionTermsForNUAVsMPro) 
17784       {
17785        this->SetIntFlowCorrectionTermsForNUAVsMPro(intFlowCorrectionTermsForNUAVsMPro,sc,ci);
17786       } else 
17787         {
17788          cout<<"WARNING: intFlowCorrectionTermsForNUAVsMPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17789          cout<<"sc = "<<sc<<endl;
17790          cout<<"ci = "<<ci<<endl;
17791         }       
17792      } // end of for(Int_t ci=0;ci<4;ci++) // correction term index (to be improved - hardwired 4)
17793     } // end of if(fCalculateCumulantsVsM)
17794    } // end of for(Int_t sc=0;sc<2;sc++)           
17795    // average products of correction terms for NUA:  
17796    TString intFlowProductOfCorrectionTermsForNUAProName = "fIntFlowProductOfCorrectionTermsForNUAPro";
17797    intFlowProductOfCorrectionTermsForNUAProName += fAnalysisLabel->Data();
17798    TProfile *intFlowProductOfCorrectionTermsForNUAPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowProductOfCorrectionTermsForNUAProName.Data()));
17799    if(intFlowProductOfCorrectionTermsForNUAPro) 
17800    {
17801     this->SetIntFlowProductOfCorrectionTermsForNUAPro(intFlowProductOfCorrectionTermsForNUAPro);
17802    } else 
17803      {
17804       cout<<"WARNING: intFlowProductOfCorrectionTermsForNUAPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17805      }     
17806   } else // to if(intFlowProfiles)  
17807     {
17808      cout<<"WARNING: intFlowProfiles is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17809     }
17810    
17811   //  d) Get pointer to list fIntFlowResults and pointers to all objects that she holds. 
17812   TList *intFlowResults = NULL;
17813   intFlowResults = dynamic_cast<TList*>(intFlowList->FindObject("Results"));
17814   if(intFlowResults)
17815   {
17816    // average correlations <<2>>, <<4>>, <<6>> and <<8>> (with correct errors!):
17817    TString intFlowCorrelationsHistName = "fIntFlowCorrelationsHist";
17818    intFlowCorrelationsHistName += fAnalysisLabel->Data();
17819    TH1D *intFlowCorrelationsHist = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowCorrelationsHistName.Data()));
17820    if(intFlowCorrelationsHist) 
17821    {
17822     this->SetIntFlowCorrelationsHist(intFlowCorrelationsHist);
17823    } else 
17824      {
17825       cout<<"WARNING: intFlowCorrelationsHist is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17826      } 
17827    // average correlations <<2>>, <<4>>, <<6>> and <<8>> (with correct errors!) vs M:    
17828    if(fCalculateCumulantsVsM)
17829    {
17830     TString intFlowCorrelationsVsMHistName = "fIntFlowCorrelationsVsMHist";
17831     intFlowCorrelationsVsMHistName += fAnalysisLabel->Data();
17832     for(Int_t ci=0;ci<4;ci++) // correlation index
17833     {
17834      TH1D *intFlowCorrelationsVsMHist = dynamic_cast<TH1D*>
17835                                         (intFlowResults->FindObject(Form("%s, %s",intFlowCorrelationsVsMHistName.Data(),correlationFlag[ci].Data())));
17836      if(intFlowCorrelationsVsMHist)
17837      {
17838       this->SetIntFlowCorrelationsVsMHist(intFlowCorrelationsVsMHist,ci);
17839      } else
17840        {
17841         cout<<"WARNING: "<<Form("intFlowCorrelationsVsMHist[%d]",ci)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17842        }   
17843     } // end of for(Int_t ci=0;ci<4;ci++) // correlation index   
17844    } // end of if(fCalculateCumulantsVsM)
17845    // average all correlations for integrated flow (with correct errors!):
17846    TString intFlowCorrelationsAllHistName = "fIntFlowCorrelationsAllHist";
17847    intFlowCorrelationsAllHistName += fAnalysisLabel->Data();
17848    TH1D *intFlowCorrelationsAllHist = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowCorrelationsAllHistName.Data()));
17849    if(intFlowCorrelationsAllHist) 
17850    {
17851     this->SetIntFlowCorrelationsAllHist(intFlowCorrelationsAllHist);
17852    } else 
17853      {
17854       cout<<"WARNING: intFlowCorrelationsAllHist is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17855      }  
17856    // average correction terms for non-uniform acceptance (with correct errors!):
17857    TString intFlowCorrectionTermsForNUAHistName = "fIntFlowCorrectionTermsForNUAHist";
17858    intFlowCorrectionTermsForNUAHistName += fAnalysisLabel->Data();
17859    for(Int_t sc=0;sc<2;sc++)
17860    {
17861     TH1D *intFlowCorrectionTermsForNUAHist = dynamic_cast<TH1D*>(intFlowResults->FindObject((Form("%s: %s terms",intFlowCorrectionTermsForNUAHistName.Data(),sinCosFlag[sc].Data()))));
17862     if(intFlowCorrectionTermsForNUAHist) 
17863     {
17864      this->SetIntFlowCorrectionTermsForNUAHist(intFlowCorrectionTermsForNUAHist,sc);
17865     } else 
17866       {
17867        cout<<"WARNING: intFlowCorrectionTermsForNUAHist is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17868        cout<<"sc = "<<sc<<endl;
17869       } 
17870    } // end of for(Int_t sc=0;sc<2;sc++)           
17871    // covariances (multiplied with weight dependent prefactor):
17872    TString intFlowCovariancesName = "fIntFlowCovariances";
17873    intFlowCovariancesName += fAnalysisLabel->Data();
17874    TH1D *intFlowCovariances = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowCovariancesName.Data()));
17875    if(intFlowCovariances) 
17876    {
17877     this->SetIntFlowCovariances(intFlowCovariances); 
17878    } else 
17879      {
17880       cout<<"WARNING: intFlowCovariances is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17881      } 
17882    // sum of linear and quadratic event weights for <2>, <4>, <6> and <8>:
17883    TString intFlowSumOfEventWeightsName = "fIntFlowSumOfEventWeights";
17884    intFlowSumOfEventWeightsName += fAnalysisLabel->Data();
17885    for(Int_t power=0;power<2;power++)
17886    {
17887     TH1D *intFlowSumOfEventWeights = dynamic_cast<TH1D*>(intFlowResults->FindObject(Form("%s: %s",intFlowSumOfEventWeightsName.Data(),powerFlag[power].Data())));
17888     if(intFlowSumOfEventWeights) 
17889     {
17890      this->SetIntFlowSumOfEventWeights(intFlowSumOfEventWeights,power);
17891     } else 
17892       {
17893        cout<<"WARNING: intFlowSumOfEventWeights is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17894        cout<<"power = "<<power<<endl;
17895       }                                   
17896    } // end of for(Int_t power=0;power<2;power++)                                                                  
17897    // sum of products of event weights for correlations <2>, <4>, <6> and <8>:  
17898    TString intFlowSumOfProductOfEventWeightsName = "fIntFlowSumOfProductOfEventWeights";
17899    intFlowSumOfProductOfEventWeightsName += fAnalysisLabel->Data();
17900    TH1D *intFlowSumOfProductOfEventWeights = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowSumOfProductOfEventWeightsName.Data()));
17901    if(intFlowSumOfProductOfEventWeights) 
17902    {
17903     this->SetIntFlowSumOfProductOfEventWeights(intFlowSumOfProductOfEventWeights);
17904    } else 
17905      {
17906       cout<<"WARNING: intFlowSumOfProductOfEventWeights is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17907      } 
17908    // final result for covariances of correlations (multiplied with weight dependent prefactor) versus M
17909    // [0=Cov(2,4),1=Cov(2,6),2=Cov(2,8),3=Cov(4,6),4=Cov(4,8),5=Cov(6,8)]:
17910    if(fCalculateCumulantsVsM)
17911    {
17912     TString intFlowCovariancesVsMName = "fIntFlowCovariancesVsM";
17913     intFlowCovariancesVsMName += fAnalysisLabel->Data();
17914     TString covarianceFlag[6] = {"Cov(<2>,<4>)","Cov(<2>,<6>)","Cov(<2>,<8>)","Cov(<4>,<6>)","Cov(<4>,<8>)","Cov(<6>,<8>)"};
17915     for(Int_t ci=0;ci<6;ci++)
17916     { 
17917      TH1D *intFlowCovariancesVsM = dynamic_cast<TH1D*>(intFlowResults->FindObject(Form("%s, %s",intFlowCovariancesVsMName.Data(),covarianceFlag[ci].Data())));
17918      if(intFlowCovariancesVsM)
17919      {
17920       this->SetIntFlowCovariancesVsM(intFlowCovariancesVsM,ci);
17921      } else
17922        {
17923         cout<<"WARNING: "<<Form("intFlowCovariancesVsM[%d]",ci)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17924        }    
17925     } // end of for(Int_t ci=0;ci<6;ci++)
17926    } // end of if(fCalculateCumulantsVsM)
17927    // sum of linear and quadratic event weights for <2>, <4>, <6> and <8> versus multiplicity
17928    // [0=sum{w_{<2>}},1=sum{w_{<4>}},2=sum{w_{<6>}},3=sum{w_{<8>}}][0=linear 1,1=quadratic]:
17929    if(fCalculateCumulantsVsM)
17930    {
17931     TString intFlowSumOfEventWeightsVsMName = "fIntFlowSumOfEventWeightsVsM";
17932     intFlowSumOfEventWeightsVsMName += fAnalysisLabel->Data();
17933     TString sumFlag[2][4] = {{"#sum_{i=1}^{N} w_{<2>}","#sum_{i=1}^{N} w_{<4>}","#sum_{i=1}^{N} w_{<6>}","#sum_{i=1}^{N} w_{<8>}"},
17934                              {"#sum_{i=1}^{N} w_{<2>}^{2}","#sum_{i=1}^{N} w_{<4>}^{2}","#sum_{i=1}^{N} w_{<6>}^{2}","#sum_{i=1}^{N} w_{<8>}^{2}"}};
17935     for(Int_t si=0;si<4;si++)
17936     {
17937      for(Int_t power=0;power<2;power++)
17938      {
17939       TH1D *intFlowSumOfEventWeightsVsM = dynamic_cast<TH1D*>(intFlowResults->FindObject(Form("%s, %s",intFlowSumOfEventWeightsVsMName.Data(),sumFlag[power][si].Data())));
17940       if(intFlowSumOfEventWeightsVsM)
17941       {
17942        this->SetIntFlowSumOfEventWeightsVsM(intFlowSumOfEventWeightsVsM,si,power);
17943       } else
17944         {
17945          cout<<"WARNING: "<<Form("intFlowSumOfEventWeightsVsM[%d][%d]",si,power)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17946         }    
17947      } // end of for(Int_t power=0;power<2;power++)
17948     } // end of for(Int_t si=0;si<4;si++)   
17949    } // end of if(fCalculateCumulantsVsM)
17950    // sum of products of event weights for correlations <2>, <4>, <6> and <8> vs M
17951    // [0=sum{w_{<2>}w_{<4>}},1=sum{w_{<2>}w_{<6>}},2=sum{w_{<2>}w_{<8>}},
17952    //  3=sum{w_{<4>}w_{<6>}},4=sum{w_{<4>}w_{<8>}},5=sum{w_{<6>}w_{<8>}}]:  
17953    if(fCalculateCumulantsVsM)
17954    {
17955     TString intFlowSumOfProductOfEventWeightsVsMName = "fIntFlowSumOfProductOfEventWeightsVsM";
17956     intFlowSumOfProductOfEventWeightsVsMName += fAnalysisLabel->Data();
17957     TString sopowFlag[6] = {"#sum_{i=1}^{N} w_{<2>} w_{<4>}","#sum_{i=1}^{N} w_{<2>} w_{<6>}","#sum_{i=1}^{N} w_{<2>} w_{<8>}",
17958                             "#sum_{i=1}^{N} w_{<4>} w_{<6>}","#sum_{i=1}^{N} w_{<4>} w_{<8>}","#sum_{i=1}^{N} w_{<6>} w_{<8>}"}; 
17959     for(Int_t pi=0;pi<6;pi++)
17960     {
17961      TH1D *intFlowSumOfProductOfEventWeightsVsM = dynamic_cast<TH1D*>(intFlowResults->FindObject(Form("%s, %s",intFlowSumOfProductOfEventWeightsVsMName.Data(),sopowFlag[pi].Data())));
17962      if(intFlowSumOfProductOfEventWeightsVsM)
17963      {
17964       this->SetIntFlowSumOfProductOfEventWeightsVsM(intFlowSumOfProductOfEventWeightsVsM,pi);
17965      } else
17966        {
17967         cout<<"WARNING: "<<Form("intFlowSumOfProductOfEventWeightsVsM[%d]",pi)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17968        }
17969     } // end of for(Int_t pi=0;pi<6;pi++)        
17970    } // end of if(fCalculateCumulantsVsM)
17971    // covariances for NUA (multiplied with weight dependent prefactor):
17972    TString intFlowCovariancesNUAName = "fIntFlowCovariancesNUA";
17973    intFlowCovariancesNUAName += fAnalysisLabel->Data();
17974    TH1D *intFlowCovariancesNUA = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowCovariancesNUAName.Data()));
17975    if(intFlowCovariancesNUA) 
17976    {
17977     this->SetIntFlowCovariancesNUA(intFlowCovariancesNUA); 
17978    } else 
17979      {
17980       cout<<"WARNING: intFlowCovariancesNUA is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17981      } 
17982    // sum of linear and quadratic event weights NUA terms:
17983    TString intFlowSumOfEventWeightsNUAName = "fIntFlowSumOfEventWeightsNUA";
17984    intFlowSumOfEventWeightsNUAName += fAnalysisLabel->Data();
17985    for(Int_t sc=0;sc<2;sc++)
17986    {
17987     for(Int_t power=0;power<2;power++)
17988     {
17989      TH1D *intFlowSumOfEventWeightsNUA = dynamic_cast<TH1D*>(intFlowResults->FindObject(Form("%s: %s, %s",intFlowSumOfEventWeightsNUAName.Data(),powerFlag[power].Data(),sinCosFlag[sc].Data())));
17990      if(intFlowSumOfEventWeightsNUA) 
17991      {
17992       this->SetIntFlowSumOfEventWeightsNUA(intFlowSumOfEventWeightsNUA,sc,power);
17993      } else 
17994        {
17995         cout<<"WARNING: intFlowSumOfEventWeightsNUA is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17996         cout<<"sc    = "<<sc<<endl;
17997         cout<<"power = "<<power<<endl;
17998        }                                   
17999     } // end of for(Int_t power=0;power<2;power++)                                                                  
18000    } // end of for(Int_t sc=0;sc<2;sc++)     
18001    // sum of products of event weights for NUA terms:  
18002    TString intFlowSumOfProductOfEventWeightsNUAName = "fIntFlowSumOfProductOfEventWeightsNUA";
18003    intFlowSumOfProductOfEventWeightsNUAName += fAnalysisLabel->Data();
18004    TH1D *intFlowSumOfProductOfEventWeightsNUA = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowSumOfProductOfEventWeightsNUAName.Data()));
18005    if(intFlowSumOfProductOfEventWeightsNUA) 
18006    {
18007     this->SetIntFlowSumOfProductOfEventWeightsNUA(intFlowSumOfProductOfEventWeightsNUA);
18008    } else 
18009      {
18010       cout<<"WARNING: intFlowSumOfProductOfEventWeightsNUA is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18011      } 
18012    // Final results for reference Q-cumulants:
18013    TString intFlowQcumulantsName = "fIntFlowQcumulants";
18014    intFlowQcumulantsName += fAnalysisLabel->Data();
18015    TH1D *intFlowQcumulants = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowQcumulantsName.Data()));
18016    if(intFlowQcumulants) 
18017    {
18018     this->SetIntFlowQcumulants(intFlowQcumulants);
18019    } else 
18020      {
18021       cout<<"WARNING: intFlowQcumulants is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18022      }  
18023    // Final results for reference Q-cumulants rebinned in M:
18024    if(fCalculateCumulantsVsM)
18025    {
18026     TString intFlowQcumulantsRebinnedInMName = "fIntFlowQcumulantsRebinnedInM";
18027     intFlowQcumulantsRebinnedInMName += fAnalysisLabel->Data();
18028     TH1D *intFlowQcumulantsRebinnedInM = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowQcumulantsRebinnedInMName.Data()));
18029     if(intFlowQcumulantsRebinnedInM) 
18030     {
18031      this->SetIntFlowQcumulantsRebinnedInM(intFlowQcumulantsRebinnedInM);
18032     } else 
18033       {
18034        cout<<"WARNING: intFlowQcumulantsRebinnedInM is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18035       }  
18036    } // end of if(fCalculateCumulantsVsM)
18037    // Ratio between error squared: with/without non-isotropic terms:
18038    TString intFlowQcumulantsErrorSquaredRatioName = "fIntFlowQcumulantsErrorSquaredRatio";
18039    intFlowQcumulantsErrorSquaredRatioName += fAnalysisLabel->Data();
18040    TH1D *intFlowQcumulantsErrorSquaredRatio = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowQcumulantsErrorSquaredRatioName.Data()));
18041    if(intFlowQcumulantsErrorSquaredRatio) 
18042    {
18043     this->SetIntFlowQcumulantsErrorSquaredRatio(intFlowQcumulantsErrorSquaredRatio);
18044    } else 
18045      {
18046       cout<<" WARNING: intntFlowQcumulantsErrorSquaredRatio is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18047      }  
18048    // final results for integrated Q-cumulants versus multiplicity:
18049    TString cumulantFlag[4] = {"QC{2}","QC{4}","QC{6}","QC{8}"};
18050    if(fCalculateCumulantsVsM)
18051    {
18052     TString intFlowQcumulantsVsMName = "fIntFlowQcumulantsVsM";
18053     intFlowQcumulantsVsMName += fAnalysisLabel->Data();
18054     for(Int_t co=0;co<4;co++) // cumulant order
18055     {
18056      TH1D *intFlowQcumulantsVsM = dynamic_cast<TH1D*>
18057                                   (intFlowResults->FindObject(Form("%s, %s",intFlowQcumulantsVsMName.Data(),cumulantFlag[co].Data())));
18058      if(intFlowQcumulantsVsM)
18059      {
18060       this->SetIntFlowQcumulantsVsM(intFlowQcumulantsVsM,co);
18061      } else
18062        {
18063         cout<<"WARNING: "<<Form("intFlowQcumulantsVsM[%d]",co)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18064        }
18065     } // end of for(Int_t co=0;co<4;co++) // cumulant order
18066    } // end of if(fCalculateCumulantsVsM)
18067    // Final reference flow estimates from Q-cumulants:
18068    TString intFlowName = "fIntFlow";
18069    intFlowName += fAnalysisLabel->Data();
18070    TH1D *intFlow = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowName.Data()));
18071    if(intFlow) 
18072    {
18073     this->SetIntFlow(intFlow);
18074    } else 
18075      {
18076       cout<<"WARNING: intFlow is NULL in AFAWQC::GPFIFH() !!!!"<<endl; 
18077      } 
18078    // Final reference flow estimates from Q-cumulants vs M rebinned in M:
18079    if(fCalculateCumulantsVsM)
18080    {
18081     TString intFlowRebinnedInMName = "fIntFlowRebinnedInM";
18082     intFlowRebinnedInMName += fAnalysisLabel->Data();
18083     TH1D *intFlowRebinnedInM = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowRebinnedInMName.Data()));
18084     if(intFlowRebinnedInM) 
18085     {
18086      this->SetIntFlowRebinnedInM(intFlowRebinnedInM);
18087     } else 
18088       {
18089        cout<<"WARNING: intFlowRebinnedInM is NULL in AFAWQC::GPFIFH() !!!!"<<endl; 
18090       } 
18091    } // end of if(fCalculateCumulantsVsM)
18092    // integrated flow from Q-cumulants versus multiplicity:
18093    if(fCalculateCumulantsVsM)
18094    {
18095     TString intFlowVsMName = "fIntFlowVsM";
18096     intFlowVsMName += fAnalysisLabel->Data();
18097     TString flowFlag[4] = {Form("v_{%d}{2,QC}",fHarmonic),Form("v_{%d}{4,QC}",fHarmonic),Form("v_{%d}{6,QC}",fHarmonic),Form("v_{%d}{8,QC}",fHarmonic)};
18098     for(Int_t co=0;co<4;co++) // cumulant order
18099     {
18100      TH1D *intFlowVsM = dynamic_cast<TH1D*>
18101                         (intFlowResults->FindObject(Form("%s, %s",intFlowVsMName.Data(),flowFlag[co].Data())));            
18102      if(intFlowVsM)
18103      {
18104       this->SetIntFlowVsM(intFlowVsM,co);
18105      } else
18106        {
18107         cout<<"WARNING: "<<Form("intFlowVsM[%d]",co)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;      
18108        }
18109     } // end of for(Int_t co=0;co<4;co++) // cumulant order
18110    } // end of if(fCalculateCumulantsVsM)
18111    // quantifying detector effects effects to correlations:
18112    TString intFlowDetectorBiasName = "fIntFlowDetectorBias";
18113    intFlowDetectorBiasName += fAnalysisLabel->Data();
18114    TH1D *intFlowDetectorBias = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowDetectorBiasName.Data()));
18115    if(intFlowDetectorBias) 
18116    {
18117     this->SetIntFlowDetectorBias(intFlowDetectorBias);
18118    } else 
18119      {
18120       cout<<"WARNING: intFlowDetectorBias is NULL in AFAWQC::GPFIFH() !!!!"<<endl; 
18121      } 
18122    // quantifying detector effects effects to correlations vs multiplicity:
18123    if(fCalculateCumulantsVsM)
18124    {
18125     TString intFlowDetectorBiasVsMName = "fIntFlowDetectorBiasVsM";
18126     intFlowDetectorBiasVsMName += fAnalysisLabel->Data();
18127     for(Int_t ci=0;ci<4;ci++) // correlation index
18128     {
18129      TH1D *intFlowDetectorBiasVsM = dynamic_cast<TH1D*>
18130                                     (intFlowResults->FindObject(Form("%s for %s",intFlowDetectorBiasVsMName.Data(),cumulantFlag[ci].Data())));
18131      if(intFlowDetectorBiasVsM)
18132      {
18133       this->SetIntFlowDetectorBiasVsM(intFlowDetectorBiasVsM,ci);
18134      } else
18135        {
18136         cout<<"WARNING: "<<Form("intFlowDetectorBiasVsM[%d]",ci)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;      
18137        }
18138     } // end of for(Int_t ci=0;ci<4;ci++) // correlation index   
18139    } // end of if(fCalculateCumulantsVsM)
18140   } else // to if(intFlowResults)
18141     {
18142      cout<<"WARNING: intFlowResults is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18143     }
18144     
18145 } // end of void AliFlowAnalysisWithQCumulants::GetPointersForIntFlowHistograms()
18146
18147 //=======================================================================================================================
18148
18149 void AliFlowAnalysisWithQCumulants::GetPointersFor2DDiffFlowHistograms()
18150 {
18151  // Get pointers for 2D differential flow histograms.
18152  //  a) Check pointers used in this method;
18153  //  b) Get pointers to 2D differential flow lists;
18154  //  c) Get pointers to 2D differential flow profiles;
18155  //  d) Get pointers to 2D differential flow histograms. 
18156
18157  // a) Check pointers used in this method:
18158  if(!fDiffFlowList)
18159  { 
18160   printf("\n WARNING (QC): fDiffFlowList is NULL in AFAWQC::GPF2DDFH() !!!!\n");
18161   printf("               Call method GetPointersForDiffFlowHistograms() first.\n\n");
18162   exit(0);
18163  }
18164  if(!fDiffFlowFlags)
18165  { 
18166   printf("\n WARNING (QC): fDiffFlowFlags is NULL in AFAWQC::GPF2DDFH() !!!!\n\n");
18167   printf("               Call method GetPointersForDiffFlowHistograms() first.\n\n");
18168   exit(0);
18169  }
18170  
18171  // b) Get pointers to 2D differential flow lists:
18172  this->SetCalculate2DDiffFlow((Bool_t)fDiffFlowFlags->GetBinContent(5)); // to be improved - hardwired 5
18173  if(!fCalculate2DDiffFlow){return;}
18174  TString typeFlag[2] = {"RP","POI"}; 
18175  TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"};
18176  TString differentialCumulantIndex[4] = {"QC{2'}","QC{4'}","QC{6'}","QC{8'}"};  
18177  TString differentialFlowIndex[4] = {"v'{2}","v'{4}","v'{6}","v'{8}"};  
18178  // Base list: 
18179  TString diffFlow2DListName = "2D"; 
18180  diffFlow2DListName += fAnalysisLabel->Data();
18181  fDiffFlow2D = dynamic_cast<TList*>(fDiffFlowList->FindObject(diffFlow2DListName.Data()));
18182  if(!fDiffFlow2D)
18183  { 
18184   printf("\n WARNING (QC): fDiffFlow2D is NULL in AFAWQC::GPFDFH() !!!!\n\n");
18185   exit(0);
18186  }
18187  // Lists holding profiles with 2D correlations: 
18188  TString s2DDiffFlowCorrelationsProListName = "Profiles with 2D correlations"; 
18189  s2DDiffFlowCorrelationsProListName += fAnalysisLabel->Data(); // to be improved
18190  for(Int_t t=0;t<2;t++)
18191  {
18192   f2DDiffFlowCorrelationsProList[t] = dynamic_cast<TList*>(fDiffFlow2D->FindObject(Form("Profiles with 2D correlations (%s)",typeFlag[t].Data())));
18193   if(!f2DDiffFlowCorrelationsProList[t])
18194   { 
18195    printf("\n WARNING (QC): f2DDiffFlowCorrelationsProList[%i] is NULL in AFAWQC::GPF2DFH() !!!!\n\n",t);
18196    exit(0);
18197   }
18198  } // end of for(Int_t t=0;t<2;t++) 
18199  
18200  // c) Get pointers to 2D differential flow profiles:
18201  TString s2DDiffFlowCorrelationsProName = "f2DDiffFlowCorrelationsPro";
18202  s2DDiffFlowCorrelationsProName += fAnalysisLabel->Data();
18203  for(Int_t t=0;t<2;t++) // type: RP or POI
18204  { 
18205   for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18206   {
18207    f2DDiffFlowCorrelationsPro[t][rci] = dynamic_cast<TProfile2D*>(f2DDiffFlowCorrelationsProList[t]->FindObject(Form("%s, %s, %s",s2DDiffFlowCorrelationsProName.Data(),typeFlag[t].Data(),reducedCorrelationIndex[rci].Data())));
18208    if(!f2DDiffFlowCorrelationsPro[t][rci])
18209    {
18210     printf("\n WARNING (QC): f2DDiffFlowCorrelationsPro[%i][%i] is NULL in AFAWQC::GPF2DFH() !!!!\n\n",t,rci);
18211     exit(0);   
18212    } else
18213      {
18214       this->Set2DDiffFlowCorrelationsPro(f2DDiffFlowCorrelationsPro[t][rci],t,rci);
18215      } 
18216   } // end of for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18217  } // end of for(Int_t t=0;t<2;t++) // type: RP or POI 
18218
18219  // d) Get pointers to 2D differential flow histograms: 
18220  TString s2DDiffFlowCumulantsName = "f2DDiffFlowCumulants";
18221  s2DDiffFlowCumulantsName += fAnalysisLabel->Data();
18222  TString s2DDiffFlowName = "f2DDiffFlow";
18223  s2DDiffFlowName += fAnalysisLabel->Data();
18224  for(Int_t t=0;t<2;t++) // type: RP or POI
18225  { 
18226   for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18227   {
18228    // 2D differential cumulants:
18229    f2DDiffFlowCumulants[t][rci] = dynamic_cast<TH2D*>(f2DDiffFlowCorrelationsProList[t]->FindObject(Form("%s, %s, %s",s2DDiffFlowCumulantsName.Data(),typeFlag[t].Data(),differentialCumulantIndex[rci].Data())));
18230    if(!f2DDiffFlowCumulants[t][rci])
18231    {
18232     printf("\n WARNING (QC): f2DDiffFlowCumulants[%i][%i] is NULL in AFAWQC::GPF2DFH() !!!!\n\n",t,rci);
18233     exit(0);   
18234    } else
18235      {
18236       this->Set2DDiffFlowCumulants(f2DDiffFlowCumulants[t][rci],t,rci);
18237      } 
18238    // 2D differential flow:
18239    f2DDiffFlow[t][rci] = dynamic_cast<TH2D*>(f2DDiffFlowCorrelationsProList[t]->FindObject(Form("%s, %s, %s",s2DDiffFlowName.Data(),typeFlag[t].Data(),differentialFlowIndex[rci].Data())));
18240    if(!f2DDiffFlow[t][rci])
18241    {
18242     printf("\n WARNING (QC): f2DDiffFlow[%i][%i] is NULL in AFAWQC::GPF2DFH() !!!!\n\n",t,rci);
18243     exit(0);   
18244    } else
18245      {
18246       this->Set2DDiffFlow(f2DDiffFlow[t][rci],t,rci);
18247      } 
18248   } // end of for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18249  } // end of for(Int_t t=0;t<2;t++) // type: RP or POI 
18250   
18251 } // end of void AliFlowAnalysisWithQCumulants::GetPointersFor2DDiffFlowHistograms()
18252
18253 //=======================================================================================================================
18254
18255 void AliFlowAnalysisWithQCumulants::GetPointersForOtherDiffCorrelators()
18256 {
18257  // Get pointers for other differential correlators.
18258  //  a) Get pointer to list with other differential correlators;
18259  //  b) Declare local flags;
18260  //  c) Get pointers to other differential profiles.
18261
18262  if(!fCalculateDiffFlow){return;} // TBI: This must eventually be moved somewhere else 
18263
18264  // a) Get pointer to list with other differential correlators:
18265  fOtherDiffCorrelatorsList = dynamic_cast<TList*>(fHistList->FindObject("Other differential correlators"));  
18266  if(!fOtherDiffCorrelatorsList)
18267  { 
18268   printf("\n WARNING (QC): fOtherDiffCorrelatorsList is NULL in AFAWQC::GPFDFH() !!!!\n\n");
18269   exit(0);
18270  }
18271  
18272  // b) Declare local flags: // (to be improved - promoted to data members)
18273  TString typeFlag[2] = {"RP","POI"}; 
18274  TString ptEtaFlag[2] = {"p_{T}","#eta"};
18275  TString sinCosFlag[2] = {"sin","cos"}; 
18276   
18277  // c) Get pointers to other differential profiles:
18278  TString otherDiffCorrelatorsName = "fOtherDiffCorrelators";
18279  otherDiffCorrelatorsName += fAnalysisLabel->Data();
18280  for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
18281  { 
18282   for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
18283   {
18284    for(Int_t sc=0;sc<2;sc++) // sin or cos
18285    {
18286     for(Int_t ci=0;ci<1;ci++) // correlator index
18287     {
18288      fOtherDiffCorrelators[t][pe][sc][ci] = dynamic_cast<TProfile*>(fOtherDiffCorrelatorsList->FindObject(Form("%s, %s, %s, %s, ci = %d",otherDiffCorrelatorsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),ci+1))); 
18289      if(!fOtherDiffCorrelators[t][pe][sc][ci])
18290      {
18291       printf("\n WARNING (QC): fOtherDiffCorrelators[%i][%i][%i][%i] is NULL in AFAWQC::GPFODC() !!!!\n\n",t,pe,sc,ci);
18292       exit(0);       
18293      } else
18294        {
18295         this->SetOtherDiffCorrelators(fOtherDiffCorrelators[t][pe][sc][ci],t,pe,sc,ci);     
18296        } 
18297     } // end of for(Int_t ci=0;ci<1;ci++) // correlator index
18298    } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
18299   } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18300  } // end of for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
18301   
18302 } // end of void AliFlowAnalysisWithQCumulants::GetPointersForOtherDiffCorrelators()
18303
18304 //=======================================================================================================================
18305
18306 void AliFlowAnalysisWithQCumulants::GetPointersForDiffFlowHistograms()
18307 {
18308  // Get pointer to all objects relevant for differential flow.
18309  //  a) Get pointer to base list for differential flow fDiffFlowList;
18310  //  b) Get pointer to profile fDiffFlowFlags holding all flags for differential flow. Access and set some flags;
18311  //  c) Get pointers to nested lists fDiffFlowListProfiles and fDiffFlowListResults;
18312  //  d) Define flags locally (to be improved: should I promote these flags to data members?);
18313  //  e) Get pointers to all nested lists in fDiffFlowListProfiles and to profiles which they hold;
18314  //  f) Get pointers to all nested lists in fDiffFlowListResults and to histograms which they hold.
18315  
18316  // a) Get pointer to base list for differential flow fDiffFlowList:
18317  fDiffFlowList = dynamic_cast<TList*>(fHistList->FindObject("Differential Flow"));  
18318  if(!fDiffFlowList)
18319  { 
18320   printf("\n WARNING (QC): fDiffFlowList is NULL in AFAWQC::GPFDFH() !!!!\n\n");
18321   exit(0);
18322  }
18323  
18324  // b) Get pointer to profile fDiffFlowFlags holding all flags for differential flow. Access and set some flags:
18325  TString diffFlowFlagsName = "fDiffFlowFlags";
18326  diffFlowFlagsName += fAnalysisLabel->Data();
18327  fDiffFlowFlags = dynamic_cast<TProfile*>(fDiffFlowList->FindObject(diffFlowFlagsName.Data()));
18328  if(fDiffFlowFlags)
18329  {
18330   this->SetCalculateDiffFlow((Bool_t)fDiffFlowFlags->GetBinContent(1)); // to be improved - hardwired 1
18331   this->SetCalculateDiffFlowVsEta((Bool_t)fDiffFlowFlags->GetBinContent(6)); // to be improved - hardwired 6
18332  } else
18333    {
18334     printf("\n WARNING (QC): fDiffFlowFlags is NULL in AFAWQC::GPFDFH() !!!!\n\n");
18335     printf("\n             Flags in method Finish() are wrong.\n\n");
18336     exit(0);
18337    } 
18338    
18339  if(!fCalculateDiffFlow){return;} // IMPORTANT: do not move this anywhere above in this method (to be improved)   
18340   
18341  // c) Get pointers to nested lists fDiffFlowListProfiles and fDiffFlowListResults:
18342  //  List holding nested lists holding profiles:
18343  TList *diffFlowListProfiles = NULL;
18344  diffFlowListProfiles = dynamic_cast<TList*>(fDiffFlowList->FindObject("Profiles"));
18345  if(!diffFlowListProfiles)
18346  { 
18347   printf("\n WARNING (QC): diffFlowListProfiles is NULL in AFAWQC::GPFDFH() !!!!\n\n");
18348   exit(0);
18349  }
18350  //  List holding nested lists holding histograms with final results:
18351  TList *diffFlowListResults = NULL;
18352  diffFlowListResults = dynamic_cast<TList*>(fDiffFlowList->FindObject("Results"));
18353  if(!diffFlowListResults)
18354  { 
18355   printf("\n WARNING (QC): diffFlowListResults is NULL in AFAWQC::GPFDFH() !!!!\n\n");
18356   exit(0);
18357  }
18358  
18359  // d) Define flags locally (to be improved: should I promote these flags to data members?):
18360  TString typeFlag[2] = {"RP","POI"}; 
18361  TString ptEtaFlag[2] = {"p_{T}","#eta"};
18362  TString powerFlag[2] = {"linear","quadratic"};
18363  TString sinCosFlag[2] = {"sin","cos"};
18364  TString differentialCumulantIndex[4] = {"QC{2'}","QC{4'}","QC{6'}","QC{8'}"};  
18365  TString differentialFlowIndex[4] = {"v'{2}","v'{4}","v'{6}","v'{8}"};  
18366  TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"};
18367  TString reducedSquaredCorrelationIndex[4] = {"<2'>^{2}","<4'>^{2}","<6'>^{2}","<8'>^{2}"}; 
18368  TString mixedCorrelationIndex[8] = {"<2>","<2'>","<4>","<4'>","<6>","<6'>","<8>","<8'>"};
18369  TString covarianceName[5] = {"Cov(<2>,<2'>)","Cov(<2>,<4'>)","Cov(<4>,<2'>)","Cov(<4>,<4'>)","Cov(<2'>,<4'>)"}; 
18370   
18371  // e) Get pointers to all nested lists in fDiffFlowListProfiles and to profiles which they hold:
18372  // correlations:
18373  TList *diffFlowCorrelationsProList[2][2] = {{NULL}};
18374  TString diffFlowCorrelationsProName = "fDiffFlowCorrelationsPro";
18375  diffFlowCorrelationsProName += fAnalysisLabel->Data();
18376  TProfile *diffFlowCorrelationsPro[2][2][4] = {{{NULL}}}; 
18377  // squared correlations:  
18378  TString diffFlowSquaredCorrelationsProName = "fDiffFlowSquaredCorrelationsPro";
18379  diffFlowSquaredCorrelationsProName += fAnalysisLabel->Data(); 
18380  TProfile *diffFlowSquaredCorrelationsPro[2][2][4] = {{{NULL}}};  
18381  // products of correlations:
18382  TList *diffFlowProductOfCorrelationsProList[2][2] = {{NULL}};
18383  TString diffFlowProductOfCorrelationsProName = "fDiffFlowProductOfCorrelationsPro";
18384  diffFlowProductOfCorrelationsProName += fAnalysisLabel->Data();  
18385  TProfile *diffFlowProductOfCorrelationsPro[2][2][8][8] = {{{{NULL}}}};   
18386  // corrections:
18387  TList *diffFlowCorrectionsProList[2][2] = {{NULL}};
18388  TString diffFlowCorrectionTermsForNUAProName = "fDiffFlowCorrectionTermsForNUAPro";
18389  diffFlowCorrectionTermsForNUAProName += fAnalysisLabel->Data();  
18390  TProfile *diffFlowCorrectionTermsForNUAPro[2][2][2][10] = {{{{NULL}}}};   
18391  for(Int_t t=0;t<2;t++)
18392  {
18393   for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++)
18394   {
18395    diffFlowCorrelationsProList[t][pe] = dynamic_cast<TList*>(diffFlowListProfiles->FindObject(Form("Profiles with correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18396    if(!diffFlowCorrelationsProList[t][pe])
18397    { 
18398     cout<<"WARNING: diffFlowCorrelationsProList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18399     cout<<"t = "<<t<<endl;
18400     cout<<"pe = "<<pe<<endl;
18401     exit(0);
18402    }
18403    for(Int_t ci=0;ci<4;ci++) // correlation index
18404    {
18405     // reduced correlations:
18406     diffFlowCorrelationsPro[t][pe][ci] = dynamic_cast<TProfile*>(diffFlowCorrelationsProList[t][pe]->FindObject(Form("%s, %s, %s, %s",diffFlowCorrelationsProName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedCorrelationIndex[ci].Data())));
18407     if(diffFlowCorrelationsPro[t][pe][ci])
18408     {
18409      this->SetDiffFlowCorrelationsPro(diffFlowCorrelationsPro[t][pe][ci],t,pe,ci);
18410     } else
18411       {
18412        cout<<"WARNING: diffFlowCorrelationsPro[t][pe][ci] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18413        cout<<"t  = "<<t<<endl;
18414        cout<<"pe = "<<pe<<endl;   
18415        cout<<"ci = "<<ci<<endl;
18416       }     
18417     // reduced squared correlations:
18418     diffFlowSquaredCorrelationsPro[t][pe][ci] = dynamic_cast<TProfile*>(diffFlowCorrelationsProList[t][pe]->FindObject(Form("%s, %s, %s, %s",diffFlowSquaredCorrelationsProName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedSquaredCorrelationIndex[ci].Data())));
18419     if(diffFlowSquaredCorrelationsPro[t][pe][ci])
18420     {
18421      this->SetDiffFlowSquaredCorrelationsPro(diffFlowSquaredCorrelationsPro[t][pe][ci],t,pe,ci);
18422     } else
18423       {
18424        cout<<"WARNING: diffFlowSquaredCorrelationsPro[t][pe][ci] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18425        cout<<"t  = "<<t<<endl;
18426        cout<<"pe = "<<pe<<endl;   
18427        cout<<"ci = "<<ci<<endl;
18428       }       
18429    } // end of for(Int_t ci=0;ci<4;ci++) // correlation index  
18430    // products of correlations:    
18431    diffFlowProductOfCorrelationsProList[t][pe] = dynamic_cast<TList*>(diffFlowListProfiles->FindObject(Form("Profiles with products of correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()))); 
18432    if(!diffFlowProductOfCorrelationsProList[t][pe])
18433    { 
18434     cout<<"WARNING: ddiffFlowProductOfCorrelationsProList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18435     cout<<"t = "<<t<<endl;
18436     cout<<"pe = "<<pe<<endl;
18437     exit(0);
18438    }
18439    for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
18440    {
18441     for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
18442     {
18443      diffFlowProductOfCorrelationsPro[t][pe][mci1][mci2] = dynamic_cast<TProfile*>(diffFlowProductOfCorrelationsProList[t][pe]->FindObject(Form("%s, %s, %s, %s, %s",diffFlowProductOfCorrelationsProName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),mixedCorrelationIndex[mci1].Data(),mixedCorrelationIndex[mci2].Data())));
18444      if(diffFlowProductOfCorrelationsPro[t][pe][mci1][mci2])
18445      {
18446       this->SetDiffFlowProductOfCorrelationsPro(diffFlowProductOfCorrelationsPro[t][pe][mci1][mci2],t,pe,mci1,mci2);
18447      } else
18448        {
18449         cout<<"WARNING: diffFlowProductOfCorrelationsPro[t][pe][ci] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18450         cout<<"t    = "<<t<<endl;
18451         cout<<"pe   = "<<pe<<endl;   
18452         cout<<"mci1 = "<<mci1<<endl;
18453         cout<<"mci2 = "<<mci2<<endl;
18454        }
18455      if(mci1%2 == 0) mci2++; // products which DO NOT include reduced correlations are not stored here
18456     } // end of for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
18457    } // end of for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index    
18458    // corrections:
18459    diffFlowCorrectionsProList[t][pe] = dynamic_cast<TList*>(diffFlowListProfiles->FindObject(Form("Profiles with correction terms for NUA (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18460    if(!diffFlowCorrectionsProList[t][pe])
18461    { 
18462     cout<<"WARNING: diffFlowCorrectionsProList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18463     cout<<"t = "<<t<<endl;
18464     cout<<"pe = "<<pe<<endl;
18465     exit(0);
18466    }
18467    // correction terms for NUA:
18468    for(Int_t sc=0;sc<2;sc++) // sin or cos
18469    {
18470     for(Int_t cti=0;cti<9;cti++) // correction term index
18471     {
18472      diffFlowCorrectionTermsForNUAPro[t][pe][sc][cti] = dynamic_cast<TProfile*>(diffFlowCorrectionsProList[t][pe]->FindObject(Form("%s, %s, %s, %s, cti = %d",diffFlowCorrectionTermsForNUAProName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),cti+1)));
18473      if(diffFlowCorrectionTermsForNUAPro[t][pe][sc][cti])
18474      {
18475       this->SetDiffFlowCorrectionTermsForNUAPro(diffFlowCorrectionTermsForNUAPro[t][pe][sc][cti],t,pe,sc,cti);
18476      } else
18477        {
18478         cout<<"WARNING: diffFlowCorrectionTermsForNUAPro[t][pe][sc][cti] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18479         cout<<"t   = "<<t<<endl;
18480         cout<<"pe  = "<<pe<<endl;   
18481         cout<<"sc  = "<<sc<<endl;
18482         cout<<"cti = "<<cti<<endl;
18483        }    
18484     } // end of for(Int_t cti=0;cti<9;cti++) // correction term index
18485    } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
18486    // ...
18487   } // end of for(Int_t pe=0;pe<2;pe++)
18488  } // end of for(Int_t t=0;t<2;t++)
18489   
18490  // f) Get pointers to all nested lists in fDiffFlowListResults and to histograms which they hold:
18491  // reduced correlations:
18492  TList *diffFlowCorrelationsHistList[2][2] = {{NULL}};
18493  TString diffFlowCorrelationsHistName = "fDiffFlowCorrelationsHist";
18494  diffFlowCorrelationsHistName += fAnalysisLabel->Data();  
18495  TH1D *diffFlowCorrelationsHist[2][2][4] = {{{NULL}}};
18496  // corrections for NUA:
18497  TList *diffFlowCorrectionsHistList[2][2] = {{NULL}};
18498  TString diffFlowCorrectionTermsForNUAHistName = "fDiffFlowCorrectionTermsForNUAHist";
18499  diffFlowCorrectionTermsForNUAHistName += fAnalysisLabel->Data();  
18500  TH1D *diffFlowCorrectionTermsForNUAHist[2][2][2][10] = {{{{NULL}}}};
18501  // differential Q-cumulants:
18502  TList *diffFlowCumulantsHistList[2][2] = {{NULL}};
18503  TString diffFlowCumulantsName = "fDiffFlowCumulants";
18504  diffFlowCumulantsName += fAnalysisLabel->Data();  
18505  TH1D *diffFlowCumulants[2][2][4] = {{{NULL}}};
18506  // detector bias to differential Q-cumulants:
18507  TList *diffFlowDetectorBiasHistList[2][2] = {{NULL}};
18508  TString diffFlowDetectorBiasName = "fDiffFlowDetectorBias";
18509  diffFlowDetectorBiasName += fAnalysisLabel->Data();  
18510  TH1D *diffFlowDetectorBias[2][2][4] = {{{NULL}}}; 
18511  // differential flow estimates from Q-cumulants:
18512  TList *diffFlowHistList[2][2] = {{NULL}};
18513  TString diffFlowName = "fDiffFlow";
18514  diffFlowName += fAnalysisLabel->Data();  
18515  TH1D *diffFlow[2][2][4] = {{{NULL}}};
18516  // differential covariances:
18517  TList *diffFlowCovariancesHistList[2][2] = {{NULL}};
18518  TString diffFlowCovariancesName = "fDiffFlowCovariances";
18519  diffFlowCovariancesName += fAnalysisLabel->Data();  
18520  TH1D *diffFlowCovariances[2][2][5] = {{{NULL}}};
18521  for(Int_t t=0;t<2;t++) // type: RP or POI
18522  { 
18523   for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
18524   {
18525    // reduced correlations:
18526    diffFlowCorrelationsHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18527    if(!diffFlowCorrelationsHistList[t][pe])
18528    { 
18529     cout<<"WARNING: diffFlowCorrelationsHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18530     cout<<"t = "<<t<<endl;
18531     cout<<"pe = "<<pe<<endl;
18532     exit(0);
18533    }
18534    for(Int_t index=0;index<4;index++) 
18535    {
18536     diffFlowCorrelationsHist[t][pe][index] = dynamic_cast<TH1D*>(diffFlowCorrelationsHistList[t][pe]->FindObject(Form("%s, %s, %s, %s",diffFlowCorrelationsHistName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedCorrelationIndex[index].Data())));
18537     if(diffFlowCorrelationsHist[t][pe][index])
18538     {
18539      this->SetDiffFlowCorrelationsHist(diffFlowCorrelationsHist[t][pe][index],t,pe,index);
18540     } else 
18541       {
18542        cout<<"WARNING: diffFlowCorrelationsHist[t][pe][index] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18543        cout<<"t     = "<<t<<endl;
18544        cout<<"pe    = "<<pe<<endl;
18545        cout<<"index = "<<index<<endl;
18546        exit(0);       
18547       } 
18548    } // end of for(Int_t index=0;index<4;index++)
18549    // corrections:
18550    diffFlowCorrectionsHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Histograms with correction terms for NUA (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18551    if(!diffFlowCorrectionsHistList[t][pe])
18552    { 
18553     cout<<"WARNING: diffFlowCorrectionsHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18554     cout<<"t = "<<t<<endl;
18555     cout<<"pe = "<<pe<<endl;
18556     exit(0);
18557    }
18558    // correction terms for NUA:
18559    for(Int_t sc=0;sc<2;sc++) // sin or cos
18560    {
18561     for(Int_t cti=0;cti<9;cti++) // correction term index
18562     {
18563      diffFlowCorrectionTermsForNUAHist[t][pe][sc][cti] = dynamic_cast<TH1D*>(diffFlowCorrectionsHistList[t][pe]->FindObject(Form("%s, %s, %s, %s, cti = %d",diffFlowCorrectionTermsForNUAHistName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),cti+1)));
18564      if(diffFlowCorrectionTermsForNUAHist[t][pe][sc][cti])
18565      {
18566       this->SetDiffFlowCorrectionTermsForNUAHist(diffFlowCorrectionTermsForNUAHist[t][pe][sc][cti],t,pe,sc,cti);
18567      } else
18568        {
18569         cout<<"WARNING: diffFlowCorrectionTermsForNUAHist[t][pe][sc][cti] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18570         cout<<"t   = "<<t<<endl;
18571         cout<<"pe  = "<<pe<<endl;   
18572         cout<<"sc  = "<<sc<<endl;
18573         cout<<"cti = "<<cti<<endl;
18574        }    
18575     } // end of for(Int_t cti=0;cti<9;cti++) // correction term index
18576    } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
18577    // ...
18578    // differential Q-cumulants:
18579    diffFlowCumulantsHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Differential Q-cumulants (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18580    if(!diffFlowCumulantsHistList[t][pe])
18581    { 
18582     cout<<"WARNING: diffFlowCumulantsHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18583     cout<<"t  = "<<t<<endl;
18584     cout<<"pe = "<<pe<<endl;
18585     exit(0);
18586    }
18587    for(Int_t index=0;index<4;index++) 
18588    {
18589     diffFlowCumulants[t][pe][index] = dynamic_cast<TH1D*>(diffFlowCumulantsHistList[t][pe]->FindObject(Form("%s, %s, %s, %s",diffFlowCumulantsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),differentialCumulantIndex[index].Data())));
18590     if(diffFlowCumulants[t][pe][index])
18591     {
18592      this->SetDiffFlowCumulants(diffFlowCumulants[t][pe][index],t,pe,index);
18593     } else 
18594       {
18595        cout<<"WARNING: diffFlowCumulants[t][pe][index] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18596        cout<<"t     = "<<t<<endl;
18597        cout<<"pe    = "<<pe<<endl;
18598        cout<<"index = "<<index<<endl;
18599        exit(0);       
18600       } 
18601    } // end of for(Int_t index=0;index<4;index++)
18602    // Detector bias to differential Q-cumulants:
18603    diffFlowDetectorBiasHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Detector bias (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18604    if(!diffFlowDetectorBiasHistList[t][pe])
18605    { 
18606     cout<<"WARNING: diffFlowDetectorBiasHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18607     cout<<"t  = "<<t<<endl;
18608     cout<<"pe = "<<pe<<endl;
18609     exit(0);
18610    }
18611    for(Int_t index=0;index<4;index++) 
18612    {
18613     diffFlowDetectorBias[t][pe][index] = dynamic_cast<TH1D*>(diffFlowDetectorBiasHistList[t][pe]->FindObject(Form("%s, %s, %s, %s",diffFlowDetectorBiasName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),differentialCumulantIndex[index].Data())));
18614     if(diffFlowDetectorBias[t][pe][index])
18615     {
18616      this->SetDiffFlowDetectorBias(diffFlowDetectorBias[t][pe][index],t,pe,index);
18617     } else 
18618       {
18619        cout<<"WARNING: diffFlowDetectorBias[t][pe][index] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18620        cout<<"t     = "<<t<<endl;
18621        cout<<"pe    = "<<pe<<endl;
18622        cout<<"index = "<<index<<endl;
18623        exit(0);       
18624       } 
18625    } // end of for(Int_t index=0;index<4;index++)
18626    // differential flow estimates from Q-cumulants:
18627    diffFlowHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Differential flow (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18628    if(!diffFlowHistList[t][pe])
18629    { 
18630     cout<<"WARNING: diffFlowHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18631     cout<<"t  = "<<t<<endl;
18632     cout<<"pe = "<<pe<<endl;
18633     exit(0);
18634    }
18635    for(Int_t index=0;index<4;index++) 
18636    {
18637     diffFlow[t][pe][index] = dynamic_cast<TH1D*>(diffFlowHistList[t][pe]->FindObject(Form("%s, %s, %s, %s",diffFlowName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),differentialFlowIndex[index].Data())));
18638     if(diffFlow[t][pe][index])
18639     {
18640      this->SetDiffFlow(diffFlow[t][pe][index],t,pe,index);
18641     } else 
18642       {
18643        cout<<"WARNING: diffFlow[t][pe][index] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18644        cout<<"t     = "<<t<<endl;
18645        cout<<"pe    = "<<pe<<endl;
18646        cout<<"index = "<<index<<endl;
18647        exit(0);       
18648       } 
18649    } // end of for(Int_t index=0;index<4;index++)
18650    // differential covariances:
18651    diffFlowCovariancesHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Covariances of correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18652    if(!diffFlowCovariancesHistList[t][pe])
18653    { 
18654     cout<<"WARNING: diffFlowCovariancesHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18655     cout<<"t  = "<<t<<endl;
18656     cout<<"pe = "<<pe<<endl;
18657     exit(0);
18658    }
18659    for(Int_t covIndex=0;covIndex<5;covIndex++) 
18660    {
18661     diffFlowCovariances[t][pe][covIndex] = dynamic_cast<TH1D*>(diffFlowCovariancesHistList[t][pe]->FindObject(Form("%s, %s, %s, %s",diffFlowCovariancesName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),covarianceName[covIndex].Data())));
18662     if(diffFlowCovariances[t][pe][covIndex])
18663     {
18664      this->SetDiffFlowCovariances(diffFlowCovariances[t][pe][covIndex],t,pe,covIndex);
18665     } else 
18666       {
18667        cout<<"WARNING: diffFlowCovariances[t][pe][covIndex] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18668        cout<<"t        = "<<t<<endl;
18669        cout<<"pe       = "<<pe<<endl;
18670        cout<<"covIndex = "<<covIndex<<endl;
18671        exit(0);       
18672       } 
18673    } // end of for(Int_t covIndex=0;covIndex<5;covIndex++) // covariance index    
18674   } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18675  } // end of for(Int_t t=0;t<2;t++) // type: RP or POI 
18676  // sum of event weights for reduced correlations:
18677  TList *diffFlowSumOfEventWeightsHistList[2][2][2] = {{{NULL}}};
18678  TString diffFlowSumOfEventWeightsName = "fDiffFlowSumOfEventWeights";
18679  diffFlowSumOfEventWeightsName += fAnalysisLabel->Data();  
18680  TH1D *diffFlowSumOfEventWeights[2][2][2][4] = {{{{NULL}}}};
18681  for(Int_t t=0;t<2;t++) // type is RP or POI
18682  { 
18683   for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
18684   { 
18685    for(Int_t p=0;p<2;p++) // power of event weights is either 1 or 2
18686    {
18687     diffFlowSumOfEventWeightsHistList[t][pe][p] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Sum of %s event weights (%s, %s)",powerFlag[p].Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18688     if(!diffFlowSumOfEventWeightsHistList[t][pe][p])
18689     { 
18690      cout<<"WARNING: diffFlowSumOfEventWeightsHistList[t][pe][p] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18691      cout<<"t     = "<<t<<endl;
18692      cout<<"pe    = "<<pe<<endl;
18693      cout<<"power = "<<p<<endl;
18694      exit(0);
18695     }
18696     for(Int_t ew=0;ew<4;ew++) // index of reduced correlation
18697     {
18698      diffFlowSumOfEventWeights[t][pe][p][ew] = dynamic_cast<TH1D*>(diffFlowSumOfEventWeightsHistList[t][pe][p]->FindObject(Form("%s, %s, %s, %s, %s",diffFlowSumOfEventWeightsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),powerFlag[p].Data(),reducedCorrelationIndex[ew].Data())));    
18699      if(diffFlowSumOfEventWeights[t][pe][p][ew])
18700      {
18701       this->SetDiffFlowSumOfEventWeights(diffFlowSumOfEventWeights[t][pe][p][ew],t,pe,p,ew);
18702      } else 
18703        {
18704         cout<<"WARNING: diffFlowSumOfEventWeights[t][pe][p][ew] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18705         cout<<"t     = "<<t<<endl;
18706         cout<<"pe    = "<<pe<<endl;
18707         cout<<"power = "<<p<<endl;
18708         cout<<"ew    = "<<ew<<endl;
18709         exit(0);       
18710        } 
18711     }
18712    } // end of for(Int_t p=0;p<2;p++) // power of event weights is either 1 or 2
18713   } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18714  } // end of for(Int_t t=0;t<2;t++) // type is RP or POI
18715  //  
18716  TList *diffFlowSumOfProductOfEventWeightsHistList[2][2] = {{NULL}};
18717  TString diffFlowSumOfProductOfEventWeightsName = "fDiffFlowSumOfProductOfEventWeights";
18718  diffFlowSumOfProductOfEventWeightsName += fAnalysisLabel->Data();  
18719  TH1D *diffFlowSumOfProductOfEventWeights[2][2][8][8] = {{{{NULL}}}};
18720  for(Int_t t=0;t<2;t++) // type is RP or POI
18721  { 
18722   for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
18723   { 
18724    diffFlowSumOfProductOfEventWeightsHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Sum of products of event weights (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18725    if(!diffFlowSumOfProductOfEventWeightsHistList[t][pe])
18726    { 
18727     cout<<"WARNING: diffFlowSumOfProductOfEventWeightsHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18728     cout<<"t     = "<<t<<endl;
18729     cout<<"pe    = "<<pe<<endl;
18730     exit(0);
18731    }
18732    for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
18733    {
18734     for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
18735     {
18736      diffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2] = dynamic_cast<TH1D*>(diffFlowSumOfProductOfEventWeightsHistList[t][pe]->FindObject(Form("%s, %s, %s, %s, %s",diffFlowSumOfProductOfEventWeightsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),mixedCorrelationIndex[mci1].Data(),mixedCorrelationIndex[mci2].Data())));    
18737       if(diffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2])
18738       {
18739        this->SetDiffFlowSumOfProductOfEventWeights(diffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2],t,pe,mci1,mci2);
18740       } else 
18741         {
18742          cout<<"WARNING: diffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18743          cout<<"t    = "<<t<<endl;
18744          cout<<"pe   = "<<pe<<endl;
18745          cout<<"mci1 = "<<mci1<<endl;
18746          cout<<"mci2 = "<<mci2<<endl;
18747          exit(0);       
18748         } 
18749      if(mci1%2 == 0) mci2++; // products which DO NOT include reduced correlations are not stored here
18750     } // end of for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
18751    } // end of for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
18752   } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18753  } // end of for(Int_t t=0;t<2;t++) // type is RP or POI
18754
18755 } // end void AliFlowAnalysisWithQCumulants::GetPointersForDiffFlowHistograms()
18756
18757 //=======================================================================================================================
18758
18759 void AliFlowAnalysisWithQCumulants::BookEverythingFor2DDifferentialFlow()
18760 {
18761  // Book all objects needed for 2D differential flow.
18762  //  a) Define flags locally (to be improved: should I promote flags to data members?);
18763  //  b) Book e-b-e quantities;
18764  //  c) Book 2D profiles;
18765  //  d) Book 2D histograms.
18766  
18767  if(!fCalculate2DDiffFlow){return;}
18768
18769  // a) Define flags locally (to be improved: should I promote flags to data members?):
18770  TString typeFlag[2] = {"RP","POI"}; 
18771  TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"};
18772  TString differentialCumulantIndex[4] = {"QC{2'}","QC{4'}","QC{6'}","QC{8'}"};  
18773  TString differentialFlowIndex[4] = {"v'{2}","v'{4}","v'{6}","v'{8}"};  
18774   
18775  // b) Book e-b-e quantities: 
18776  TProfile2D styleRe("typeMultiplePowerRe","typeMultiplePowerRe",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
18777  TProfile2D styleIm("typeMultiplePowerIm","typeMultiplePowerIm",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
18778  for(Int_t t=0;t<3;t++) // typeFlag (0 = RP, 1 = POI, 2 = RP&&POI )
18779  { 
18780   for(Int_t m=0;m<4;m++)
18781   {
18782    for(Int_t k=0;k<9;k++)
18783    {
18784     fReRPQ2dEBE[t][m][k] = (TProfile2D*)styleRe.Clone(Form("typeFlag%dmultiple%dpower%dRe",t,m,k)); 
18785     fImRPQ2dEBE[t][m][k] = (TProfile2D*)styleIm.Clone(Form("typeFlag%dmultiple%dpower%dIm",t,m,k));
18786    }
18787   } 
18788  } 
18789  TProfile2D styleS("typePower","typePower",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
18790  for(Int_t t=0;t<3;t++) // typeFlag (0 = RP, 1 = POI, 2 = RP&&POI )
18791  { 
18792   for(Int_t k=0;k<9;k++)
18793   {
18794    fs2dEBE[t][k] = (TProfile2D*)styleS.Clone(Form("typeFlag%dpower%d",t,k));
18795   }
18796  }
18797
18798  // c) Book 2D profiles:
18799  TString s2DDiffFlowCorrelationsProName = "f2DDiffFlowCorrelationsPro";
18800  s2DDiffFlowCorrelationsProName += fAnalysisLabel->Data();
18801  for(Int_t t=0;t<2;t++) // type: RP or POI
18802  { 
18803   for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18804   {
18805    f2DDiffFlowCorrelationsPro[t][rci] = new TProfile2D(Form("%s, %s, %s",s2DDiffFlowCorrelationsProName.Data(),typeFlag[t].Data(),reducedCorrelationIndex[rci].Data()),Form("%s, %s, %s",s2DDiffFlowCorrelationsProName.Data(),typeFlag[t].Data(),reducedCorrelationIndex[rci].Data()),fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"");
18806    f2DDiffFlowCorrelationsPro[t][rci]->Sumw2();
18807    f2DDiffFlowCorrelationsPro[t][rci]->SetXTitle("p_{t}");
18808    f2DDiffFlowCorrelationsPro[t][rci]->SetYTitle("#eta");
18809    f2DDiffFlowCorrelationsProList[t]->Add(f2DDiffFlowCorrelationsPro[t][rci]); 
18810   } // end of for(Int_t rci=0;rci<4;rci++) // correlation index
18811  } // end of for(Int_t t=0;t<2;t++) // type: RP or POIs
18812
18813  // d) Book 2D histograms:
18814  TString s2DDiffFlowCumulantsName = "f2DDiffFlowCumulants";
18815  s2DDiffFlowCumulantsName += fAnalysisLabel->Data();
18816  TString s2DDiffFlowName = "f2DDiffFlow";
18817  s2DDiffFlowName += fAnalysisLabel->Data();
18818  for(Int_t t=0;t<2;t++) // type: RP or POI
18819  { 
18820   for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18821   {
18822    // 2D diferential cumulants:
18823    f2DDiffFlowCumulants[t][rci] = new TH2D(Form("%s, %s, %s",s2DDiffFlowCumulantsName.Data(),typeFlag[t].Data(),differentialCumulantIndex[rci].Data()),Form("%s, %s, %s",s2DDiffFlowCumulantsName.Data(),typeFlag[t].Data(),differentialCumulantIndex[rci].Data()),fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
18824    f2DDiffFlowCumulants[t][rci]->SetXTitle("p_{t}");
18825    f2DDiffFlowCumulants[t][rci]->SetYTitle("#eta");
18826    f2DDiffFlowCorrelationsProList[t]->Add(f2DDiffFlowCumulants[t][rci]); //  to be improved - moved to another list 
18827    // 2D differential flow:
18828    f2DDiffFlow[t][rci] = new TH2D(Form("%s, %s, %s",s2DDiffFlowName.Data(),typeFlag[t].Data(),differentialFlowIndex[rci].Data()),Form("%s, %s, %s",s2DDiffFlowName.Data(),typeFlag[t].Data(),differentialFlowIndex[rci].Data()),fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
18829    f2DDiffFlow[t][rci]->SetXTitle("p_{t}");
18830    f2DDiffFlow[t][rci]->SetYTitle("#eta");
18831    f2DDiffFlowCorrelationsProList[t]->Add(f2DDiffFlow[t][rci]); //  to be improved - moved to another list 
18832   } // end of for(Int_t rci=0;rci<4;rci++) // correlation index
18833  } // end of for(Int_t t=0;t<2;t++) // type: RP or POIs
18834
18835 } // void AliFlowAnalysisWithQCumulants::BookEverythingFor2DDifferentialFlow()
18836
18837 //=======================================================================================================================
18838
18839 void AliFlowAnalysisWithQCumulants::BookEverythingForDifferentialFlow()
18840 {
18841  // Book all histograms and profiles needed for differential flow.
18842  //  a) Book profile to hold all flags for differential flow;
18843  //  b) Define flags locally (to be improved: should I promote flags to data members?);
18844  //  c) Book e-b-e quantities;
18845  //  d) Book profiles;
18846  //  e) Book histograms holding final results. 
18847  
18848  // a) Book profile to hold all flags for differential flow:
18849  TString diffFlowFlagsName = "fDiffFlowFlags";
18850  diffFlowFlagsName += fAnalysisLabel->Data();
18851  fDiffFlowFlags = new TProfile(diffFlowFlagsName.Data(),"Flags for differential flow",6,0,6);
18852  fDiffFlowFlags->SetTickLength(-0.01,"Y");
18853  fDiffFlowFlags->SetMarkerStyle(25);
18854  fDiffFlowFlags->SetLabelSize(0.04,"X");
18855  fDiffFlowFlags->SetLabelOffset(0.02,"Y");
18856  fDiffFlowFlags->SetStats(kFALSE);
18857  fDiffFlowFlags->GetXaxis()->SetBinLabel(1,"Calculate diff. flow"); 
18858  fDiffFlowFlags->GetXaxis()->SetBinLabel(2,"Particle weights");
18859  fDiffFlowFlags->GetXaxis()->SetBinLabel(3,"Event weights");
18860  fDiffFlowFlags->GetXaxis()->SetBinLabel(4,"Correct for NUA");
18861  fDiffFlowFlags->GetXaxis()->SetBinLabel(5,"Calculate 2D diff. flow");
18862  fDiffFlowFlags->GetXaxis()->SetBinLabel(6,"Calculate diff. flow vs eta");
18863  fDiffFlowList->Add(fDiffFlowFlags);
18864
18865  if(!fCalculateDiffFlow){return;}
18866   
18867  // b) Define flags locally (to be improved: should I promote flags to data members?): 
18868  TString typeFlag[2] = {"RP","POI"}; 
18869  TString ptEtaFlag[2] = {"p_{T}","#eta"};
18870  TString powerFlag[2] = {"linear","quadratic"};
18871  TString sinCosFlag[2] = {"sin","cos"};
18872  TString differentialCumulantIndex[4] = {"QC{2'}","QC{4'}","QC{6'}","QC{8'}"};  
18873  TString differentialFlowIndex[4] = {"v'{2}","v'{4}","v'{6}","v'{8}"};  
18874  TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"};
18875  TString reducedSquaredCorrelationIndex[4] = {"<2'>^{2}","<4'>^{2}","<6'>^{2}","<8'>^{2}"};
18876  TString mixedCorrelationIndex[8] = {"<2>","<2'>","<4>","<4'>","<6>","<6'>","<8>","<8'>"};
18877  TString covarianceName[5] = {"Cov(<2>,<2'>)","Cov(<2>,<4'>)","Cov(<4>,<2'>)","Cov(<4>,<4'>)","Cov(<2'>,<4'>)"}; 
18878  Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
18879  Double_t minPtEta[2] = {fPtMin,fEtaMin};
18880  Double_t maxPtEta[2] = {fPtMax,fEtaMax};
18881    
18882  // c) Book e-b-e quantities:
18883  // Event-by-event r_{m*n,k}(pt,eta), p_{m*n,k}(pt,eta) and q_{m*n,k}(pt,eta)
18884  // Explanantion of notation:
18885  //  1.) n is harmonic, m is multiple of harmonic;
18886  //  2.) k is power of particle weight;
18887  //  3.) r_{m*n,k}(pt,eta) = Q-vector evaluated in harmonic m*n for RPs in particular (pt,eta) bin (i-th RP is weighted with w_i^k);   
18888  //  4.) p_{m*n,k}(pt,eta) = Q-vector evaluated in harmonic m*n for POIs in particular (pt,eta) bin 
18889  //                          (if i-th POI is also RP, than it is weighted with w_i^k);   
18890  //  5.) q_{m*n,k}(pt,eta) = Q-vector evaluated in harmonic m*n for particles which are both RPs and POIs in particular (pt,eta) bin 
18891  //                          (i-th RP&&POI is weighted with w_i^k)            
18892   
18893  // 1D:
18894  for(Int_t t=0;t<3;t++) // typeFlag (0 = RP, 1 = POI, 2 = RP && POI )
18895  { 
18896   for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
18897   {
18898    for(Int_t m=0;m<4;m++) // multiple of harmonic
18899    {
18900     for(Int_t k=0;k<9;k++) // power of particle weight
18901     {
18902      fReRPQ1dEBE[t][pe][m][k] = new TProfile(Form("TypeFlag%dpteta%dmultiple%dpower%dRe",t,pe,m,k),
18903                                              Form("TypeFlag%dpteta%dmultiple%dpower%dRe",t,pe,m,k),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]); 
18904      fImRPQ1dEBE[t][pe][m][k] = new TProfile(Form("TypeFlag%dpteta%dmultiple%dpower%dIm",t,pe,m,k),
18905                                              Form("TypeFlag%dpteta%dmultiple%dpower%dIm",t,pe,m,k),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]); 
18906     }
18907    }
18908   }
18909  } 
18910  // to be improved (add explanation of fs1dEBE[t][pe][k]):   
18911  for(Int_t t=0;t<3;t++) // typeFlag (0 = RP, 1 = POI, 2 = RP&&POI )
18912  { 
18913   for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
18914   {
18915    for(Int_t k=0;k<9;k++) // power of particle weight
18916    {
18917     fs1dEBE[t][pe][k] = new TProfile(Form("TypeFlag%dpteta%dmultiple%d",t,pe,k),
18918                                      Form("TypeFlag%dpteta%dmultiple%d",t,pe,k),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]); 
18919    }
18920   }
18921  }
18922  // correction terms for nua:
18923  for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
18924  { 
18925   for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
18926   {
18927    for(Int_t sc=0;sc<2;sc++) // sin or cos
18928    {
18929     for(Int_t cti=0;cti<9;cti++) // correction term index
18930     {
18931      fDiffFlowCorrectionTermsForNUAEBE[t][pe][sc][cti] = new TH1D(Form("typeFlag%d pteta%d sincos%d cti%d",t,pe,sc,cti),
18932                                              Form("typeFlag%d pteta%d sincos%d cti%d",t,pe,sc,cti),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]); 
18933     }
18934    }
18935   }
18936  } 
18937  // reduced correlations e-b-e:
18938  TString diffFlowCorrelationsEBEName = "fDiffFlowCorrelationsEBE";
18939  diffFlowCorrelationsEBEName += fAnalysisLabel->Data();
18940  for(Int_t t=0;t<2;t++) // type: RP or POI
18941  { 
18942   for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
18943   {
18944    for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18945    {
18946     fDiffFlowCorrelationsEBE[t][pe][rci] = new TH1D(Form("%s, %s, %s, %s",diffFlowCorrelationsEBEName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedCorrelationIndex[rci].Data()),Form("%s, %s, %s, %s",diffFlowCorrelationsEBEName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedCorrelationIndex[rci].Data()),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
18947    } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
18948   } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta 
18949  } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
18950  // event weights for reduced correlations e-b-e:
18951  TString diffFlowEventWeightsForCorrelationsEBEName = "fDiffFlowEventWeightsForCorrelationsEBE";
18952  diffFlowEventWeightsForCorrelationsEBEName += fAnalysisLabel->Data();
18953  for(Int_t t=0;t<2;t++) // type: RP or POI
18954  { 
18955   for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
18956   {
18957    for(Int_t rci=0;rci<4;rci++) // event weight for reduced correlation index
18958    {
18959     fDiffFlowEventWeightsForCorrelationsEBE[t][pe][rci] = new TH1D(Form("%s, %s, %s, eW for %s",diffFlowEventWeightsForCorrelationsEBEName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedCorrelationIndex[rci].Data()),Form("%s, %s, %s, eW for %s",diffFlowEventWeightsForCorrelationsEBEName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedCorrelationIndex[rci].Data()),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
18960    } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
18961   } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta 
18962  } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
18963       
18964  // d) Book profiles;
18965  // reduced correlations:
18966  TString diffFlowCorrelationsProName = "fDiffFlowCorrelationsPro";
18967  diffFlowCorrelationsProName += fAnalysisLabel->Data();
18968  // reduced squared correlations:
18969  TString diffFlowSquaredCorrelationsProName = "fDiffFlowSquaredCorrelationsPro";
18970  diffFlowSquaredCorrelationsProName += fAnalysisLabel->Data();
18971  // corrections terms:
18972  TString diffFlowCorrectionTermsForNUAProName = "fDiffFlowCorrectionTermsForNUAPro";
18973  diffFlowCorrectionTermsForNUAProName += fAnalysisLabel->Data();
18974  // reduced correlations:
18975  for(Int_t t=0;t<2;t++) // type: RP or POI
18976  { 
18977   for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
18978   {
18979    for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18980    {
18981     fDiffFlowCorrelationsPro[t][pe][rci] = new TProfile(Form("%s, %s, %s, %s",diffFlowCorrelationsProName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedCorrelationIndex[rci].Data()),Form("%s, %s, %s, %s",diffFlowCorrelationsProName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedCorrelationIndex[rci].Data()),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe],"s");
18982     fDiffFlowCorrelationsPro[t][pe][rci]->Sumw2();
18983     fDiffFlowCorrelationsPro[t][pe][rci]->SetXTitle(ptEtaFlag[pe].Data());
18984     fDiffFlowCorrelationsProList[t][pe]->Add(fDiffFlowCorrelationsPro[t][pe][rci]); // to be improved (add dedicated list to hold reduced correlations)
18985    } // end of for(Int_t rci=0;rci<4;rci++) // correlation index
18986   } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta 
18987  } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
18988  // reduced squared correlations:
18989  for(Int_t t=0;t<2;t++) // type: RP or POI
18990  { 
18991   for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
18992   {
18993    for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18994    {
18995     fDiffFlowSquaredCorrelationsPro[t][pe][rci] = new TProfile(Form("%s, %s, %s, %s",diffFlowSquaredCorrelationsProName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedSquaredCorrelationIndex[rci].Data()),Form("%s, %s, %s, %s",diffFlowSquaredCorrelationsProName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedSquaredCorrelationIndex[rci].Data()),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe],"s");
18996     fDiffFlowSquaredCorrelationsPro[t][pe][rci]->Sumw2();
18997     fDiffFlowSquaredCorrelationsPro[t][pe][rci]->SetXTitle(ptEtaFlag[pe].Data());
18998     fDiffFlowCorrelationsProList[t][pe]->Add(fDiffFlowSquaredCorrelationsPro[t][pe][rci]); // to be improved (add dedicated list to hold reduced correlations)
18999    } // end of for(Int_t rci=0;rci<4;rci++) // correlation index
19000   } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta 
19001  } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
19002  // correction terms for nua:
19003  for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
19004  { 
19005   for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
19006   {
19007    for(Int_t sc=0;sc<2;sc++) // sin or cos
19008    {
19009     for(Int_t cti=0;cti<9;cti++) // correction term index
19010     {
19011      fDiffFlowCorrectionTermsForNUAPro[t][pe][sc][cti] = new TProfile(Form("%s, %s, %s, %s, cti = %d",diffFlowCorrectionTermsForNUAProName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),cti+1),Form("%s, %s, %s, %s, cti = %d",diffFlowCorrectionTermsForNUAProName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),cti+1),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]); 
19012      fDiffFlowCorrectionsProList[t][pe]->Add(fDiffFlowCorrectionTermsForNUAPro[t][pe][sc][cti]);
19013     }
19014    }
19015   }
19016  } 
19017  // Other differential correlators:
19018  TString otherDiffCorrelatorsName = "fOtherDiffCorrelators";
19019  otherDiffCorrelatorsName += fAnalysisLabel->Data();
19020  for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
19021  { 
19022   for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
19023   {
19024    for(Int_t sc=0;sc<2;sc++) // sin or cos
19025    {
19026     for(Int_t ci=0;ci<1;ci++) // correlator index
19027     {
19028      fOtherDiffCorrelators[t][pe][sc][ci] = new TProfile(Form("%s, %s, %s, %s, ci = %d",otherDiffCorrelatorsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),ci+1),Form("%s, %s, %s, %s, ci = %d",otherDiffCorrelatorsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),ci+1),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]); 
19029      fOtherDiffCorrelators[t][pe][sc][ci]->Sumw2();
19030      fOtherDiffCorrelatorsList->Add(fOtherDiffCorrelators[t][pe][sc][ci]);
19031     }
19032    }
19033   }
19034  }  
19035  // e) Book histograms holding final results. 
19036  // reduced correlations:
19037  TString diffFlowCorrelationsHistName = "fDiffFlowCorrelationsHist";
19038  diffFlowCorrelationsHistName += fAnalysisLabel->Data();
19039  // corrections terms:
19040  TString diffFlowCorrectionTermsForNUAHistName = "fDiffFlowCorrectionTermsForNUAHist";
19041  diffFlowCorrectionTermsForNUAHistName += fAnalysisLabel->Data();
19042  // differential covariances:
19043  TString diffFlowCovariancesName = "fDiffFlowCovariances";
19044  diffFlowCovariancesName += fAnalysisLabel->Data();
19045  // differential Q-cumulants:
19046  TString diffFlowCumulantsName = "fDiffFlowCumulants";
19047  diffFlowCumulantsName += fAnalysisLabel->Data();
19048  // Detector bias to differential Q-cumulants:
19049  TString diffFlowDetectorBiasName = "fDiffFlowDetectorBias";
19050  diffFlowDetectorBiasName += fAnalysisLabel->Data();
19051  // differential flow:
19052  TString diffFlowName = "fDiffFlow";
19053  diffFlowName += fAnalysisLabel->Data();
19054  for(Int_t t=0;t<2;t++) // type: RP or POI
19055  { 
19056   for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
19057   {
19058    for(Int_t index=0;index<4;index++) 
19059    {
19060     // reduced correlations:
19061     fDiffFlowCorrelationsHist[t][pe][index] = new TH1D(Form("%s, %s, %s, %s",diffFlowCorrelationsHistName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedCorrelationIndex[index].Data()),Form("%s, %s, %s, %s",diffFlowCorrelationsHistName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedCorrelationIndex[index].Data()),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
19062     fDiffFlowCorrelationsHist[t][pe][index]->SetXTitle(ptEtaFlag[pe].Data());
19063     fDiffFlowCorrelationsHistList[t][pe]->Add(fDiffFlowCorrelationsHist[t][pe][index]); 
19064     // differential Q-cumulants:
19065     fDiffFlowCumulants[t][pe][index] = new TH1D(Form("%s, %s, %s, %s",diffFlowCumulantsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),differentialCumulantIndex[index].Data()),Form("%s, %s, %s, %s",diffFlowCumulantsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),differentialCumulantIndex[index].Data()),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
19066     fDiffFlowCumulants[t][pe][index]->SetXTitle(ptEtaFlag[pe].Data());
19067     fDiffFlowCumulantsHistList[t][pe]->Add(fDiffFlowCumulants[t][pe][index]); 
19068     // Detector bias to differential Q-cumulants:
19069     fDiffFlowDetectorBias[t][pe][index] = new TH1D(Form("%s, %s, %s, %s",diffFlowDetectorBiasName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),differentialCumulantIndex[index].Data()),Form("%s, %s, %s, %s",diffFlowDetectorBiasName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),differentialCumulantIndex[index].Data()),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
19070     fDiffFlowDetectorBias[t][pe][index]->SetXTitle(ptEtaFlag[pe].Data());
19071     fDiffFlowDetectorBias[t][pe][index]->SetTitle(Form("#frac{corrected}{measured} %s",differentialCumulantIndex[index].Data()));
19072     fDiffFlowDetectorBiasHistList[t][pe]->Add(fDiffFlowDetectorBias[t][pe][index]); 
19073     // differential flow estimates from Q-cumulants:
19074     fDiffFlow[t][pe][index] = new TH1D(Form("%s, %s, %s, %s",diffFlowName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),differentialFlowIndex[index].Data()),Form("%s, %s, %s, %s",diffFlowName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),differentialFlowIndex[index].Data()),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
19075     fDiffFlow[t][pe][index]->SetXTitle(ptEtaFlag[pe].Data());
19076     fDiffFlowHistList[t][pe]->Add(fDiffFlow[t][pe][index]); 
19077    } // end of for(Int_t index=0;index<4;index++) 
19078    for(Int_t covIndex=0;covIndex<5;covIndex++) // covariance index 
19079    {
19080     // differential covariances:
19081     fDiffFlowCovariances[t][pe][covIndex] = new TH1D(Form("%s, %s, %s, %s",diffFlowCovariancesName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),covarianceName[covIndex].Data()),Form("%s, %s, %s, %s",diffFlowCovariancesName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),covarianceName[covIndex].Data()),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
19082     fDiffFlowCovariances[t][pe][covIndex]->SetXTitle(ptEtaFlag[pe].Data());
19083     fDiffFlowCovariancesHistList[t][pe]->Add(fDiffFlowCovariances[t][pe][covIndex]); 
19084    } // end of for(Int_t covIndex=0;covIndex<5;covIndex++) // covariance index
19085    // products of both types of correlations: 
19086    TString diffFlowProductOfCorrelationsProName = "fDiffFlowProductOfCorrelationsPro";
19087    diffFlowProductOfCorrelationsProName += fAnalysisLabel->Data();  
19088    for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
19089    {
19090     for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
19091     {
19092      fDiffFlowProductOfCorrelationsPro[t][pe][mci1][mci2] = new TProfile(Form("%s, %s, %s, %s, %s",diffFlowProductOfCorrelationsProName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),mixedCorrelationIndex[mci1].Data(),mixedCorrelationIndex[mci2].Data()),Form("%s, %s, %s, %s #times %s",diffFlowProductOfCorrelationsProName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),mixedCorrelationIndex[mci1].Data(),mixedCorrelationIndex[mci2].Data()),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]); 
19093      fDiffFlowProductOfCorrelationsPro[t][pe][mci1][mci2]->SetXTitle(ptEtaFlag[pe].Data());
19094      fDiffFlowProductOfCorrelationsProList[t][pe]->Add(fDiffFlowProductOfCorrelationsPro[t][pe][mci1][mci2]); 
19095      if(mci1%2 == 0) mci2++; // products which DO NOT include reduced correlations are not stored here
19096     } // end of for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
19097    } // end of for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index    
19098   } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta 
19099  } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
19100  // sums of event weights for reduced correlations: 
19101  TString diffFlowSumOfEventWeightsName = "fDiffFlowSumOfEventWeights";
19102  diffFlowSumOfEventWeightsName += fAnalysisLabel->Data();  
19103  for(Int_t t=0;t<2;t++) // type is RP or POI
19104  { 
19105   for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
19106   { 
19107    for(Int_t p=0;p<2;p++) // power of weights is either 1 or 2
19108    {
19109     for(Int_t ew=0;ew<4;ew++) // index of reduced correlation
19110     {
19111      fDiffFlowSumOfEventWeights[t][pe][p][ew] = new TH1D(Form("%s, %s, %s, %s, %s",diffFlowSumOfEventWeightsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),powerFlag[p].Data(),reducedCorrelationIndex[ew].Data()),Form("%s, %s, %s, power = %s, %s",diffFlowSumOfEventWeightsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),powerFlag[p].Data(),reducedCorrelationIndex[ew].Data()),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]); 
19112      fDiffFlowSumOfEventWeights[t][pe][p][ew]->SetXTitle(ptEtaFlag[pe].Data());
19113      fDiffFlowSumOfEventWeightsHistList[t][pe][p]->Add(fDiffFlowSumOfEventWeights[t][pe][p][ew]); // to be improved (add dedicated list to hold all this)
19114     }
19115    }
19116   }
19117  } 
19118  // sum of products of event weights for both types of correlations: 
19119  TString diffFlowSumOfProductOfEventWeightsName = "fDiffFlowSumOfProductOfEventWeights";
19120  diffFlowSumOfProductOfEventWeightsName += fAnalysisLabel->Data();  
19121  for(Int_t t=0;t<2;t++) // type is RP or POI
19122  {
19123   for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
19124   { 
19125    for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
19126    {
19127     for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
19128     {
19129      fDiffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2] = new TH1D(Form("%s, %s, %s, %s, %s",diffFlowSumOfProductOfEventWeightsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),mixedCorrelationIndex[mci1].Data(),mixedCorrelationIndex[mci2].Data()),Form("%s, %s, %s, %s #times %s",diffFlowSumOfProductOfEventWeightsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),mixedCorrelationIndex[mci1].Data(),mixedCorrelationIndex[mci2].Data()),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]); 
19130      fDiffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2]->SetXTitle(ptEtaFlag[pe].Data());
19131      fDiffFlowSumOfProductOfEventWeightsHistList[t][pe]->Add(fDiffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2]); 
19132      if(mci1%2 == 0) mci2++; // products which DO NOT include reduced correlations are not stored here
19133     }
19134    }
19135   }
19136  } 
19137  // correction terms for nua:
19138  for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
19139  { 
19140   for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
19141   {
19142    for(Int_t sc=0;sc<2;sc++) // sin or cos
19143    {
19144     for(Int_t cti=0;cti<9;cti++) // correction term index
19145     {
19146      fDiffFlowCorrectionTermsForNUAHist[t][pe][sc][cti] = new TH1D(Form("%s, %s, %s, %s, cti = %d",diffFlowCorrectionTermsForNUAHistName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),cti+1),Form("%s, %s, %s, %s, cti = %d",diffFlowCorrectionTermsForNUAHistName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),cti+1),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]); 
19147      fDiffFlowCorrectionsHistList[t][pe]->Add(fDiffFlowCorrectionTermsForNUAHist[t][pe][sc][cti]);
19148     }
19149    }
19150   }
19151  } 
19152           
19153 } // end of AliFlowAnalysisWithQCumulants::BookEverythingForDifferentialFlow()
19154
19155 //=======================================================================================================================
19156
19157 void AliFlowAnalysisWithQCumulants::CalculateQcumulantsCorrectedForNUAIntFlow()
19158 {
19159  // Calculate generalized Q-cumulants (cumulants corrected for non-unifom acceptance).
19160  
19161  // Isotropic cumulants:
19162  Double_t QC2 = fIntFlowQcumulants->GetBinContent(1);
19163  Double_t QC2Error = fIntFlowQcumulants->GetBinError(1);
19164  Double_t QC4 = fIntFlowQcumulants->GetBinContent(2);
19165  Double_t QC4Error = fIntFlowQcumulants->GetBinError(2);
19166  //Double_t QC6 = fIntFlowQcumulants->GetBinContent(3);
19167  //Double_t QC6Error = fIntFlowQcumulants->GetBinError(3);
19168  //Double_t QC8 = fIntFlowQcumulants->GetBinContent(4);
19169  //Double_t QC8Error = fIntFlowQcumulants->GetBinError(4);
19170  
19171  // Measured 2-, 4-, 6- and 8-particle correlations:
19172  Double_t two = fIntFlowCorrelationsHist->GetBinContent(1); // <<2>>
19173  Double_t twoError = fIntFlowCorrelationsHist->GetBinError(1); // statistical error of <<2>>
19174  Double_t four = fIntFlowCorrelationsHist->GetBinContent(2); // <<4>>
19175  Double_t fourError = fIntFlowCorrelationsHist->GetBinError(2); // statistical error of <<4>>
19176  //Double_t six = fIntFlowCorrelationsHist->GetBinContent(3); // <<6>>
19177  //Double_t sixError = fIntFlowCorrelationsHist->GetBinError(3); // statistical error of <<6>>
19178  //Double_t eight = fIntFlowCorrelationsHist->GetBinContent(4); // <<8>>
19179  //Double_t eightError = fIntFlowCorrelationsHist->GetBinError(4); // statistical error of <<8>>
19180   
19181  // Non-isotropic terms:
19182  Double_t c1 = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(1); // <<cos(n*phi1)>>
19183  Double_t c1Error = fIntFlowCorrectionTermsForNUAHist[1]->GetBinError(1); // statistical error of <<cos(n*phi1)>>
19184  Double_t c2 = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(2); // <<cos(n*(phi1+phi2))>>
19185  Double_t c2Error = fIntFlowCorrectionTermsForNUAHist[1]->GetBinError(2); // statistical error of <<cos(n*(phi1+phi2))>>
19186  Double_t c3 = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(3); // <<cos(n*(phi1-phi2-phi3))>>
19187  Double_t c3Error = fIntFlowCorrectionTermsForNUAHist[1]->GetBinError(3); // statistical error of <<cos(n*(phi1-phi2-phi3))>>
19188  Double_t s1 = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(1); // <<sin(n*phi1)>>
19189  Double_t s1Error = fIntFlowCorrectionTermsForNUAHist[0]->GetBinError(1); // statistical error of <<sin(n*phi1)>>
19190  Double_t s2 = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(2); // <<sin(n*(phi1+phi2))>>
19191  Double_t s2Error = fIntFlowCorrectionTermsForNUAHist[0]->GetBinError(2); // statistical error of <<sin(n*(phi1+phi2))>>
19192  Double_t s3 = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(3); // <<sin(n*(phi1-phi2-phi3))>>
19193  Double_t s3Error = fIntFlowCorrectionTermsForNUAHist[0]->GetBinError(3); // statistical error of <<sin(n*(phi1-phi2-phi3))>>
19194  
19195  // Shortcuts:
19196  Double_t a1 = 2.*pow(c1,2.)+2.*pow(s1,2.)-two;
19197  Double_t a2 = 6.*pow(c1,3.)-2.*c1*c2+c3+6.*c1*pow(s1,2.)-2.*s1*s2-4.*c1*two;
19198  Double_t a3 = 2.*pow(s1,2.)-2.*pow(c1,2.)+c2;
19199  Double_t a4 = 6.*pow(s1,3.)+6.*pow(c1,2.)*s1+2.*c2*s1-2.*c1*s2-s3-4.*s1*two;
19200  Double_t a5 = 4.*c1*s1-s2;
19201  
19202  // Covariances (including weight dependent prefactor):
19203  Double_t wCov1 = 0.; // w*Cov(<2>,<cos(phi)) 
19204  Double_t wCov2 = 0.; // w*Cov(<2>,<sin(phi))
19205  Double_t wCov3 = 0.; // w*Cov(<cos(phi),<sin(phi))
19206  Double_t wCov4 = 0.; // w*Cov(<2>,<4>) 
19207  Double_t wCov5 = 0.; // w*Cov(<2>,<cos(#phi_{1}+#phi_{2})>)
19208  Double_t wCov6 = 0.; // w*Cov(<2>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19209  Double_t wCov7 = 0.; // w*Cov(<2>,<sin(#phi_{1}+#phi_{2})>)
19210  Double_t wCov8 = 0.; // w*Cov(<2>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19211  Double_t wCov9 = 0.; // w*Cov(<4>,<cos(#phi)>
19212  Double_t wCov10 = 0.; // w*Cov(<4>,<cos(#phi_{1}+#phi_{2})>)
19213  Double_t wCov11 = 0.; // w*Cov(<4>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19214  Double_t wCov12 = 0.; // w*Cov(<4>,<sin(#phi)>
19215  Double_t wCov13 = 0.; // w*Cov(<4>,<sin(#phi_{1}+#phi_{2})>)
19216  Double_t wCov14 = 0.; // w*Cov(<4>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19217  Double_t wCov15 = 0.; // w*Cov(<cos(#phi)>,<cos(#phi_{1}+#phi_{2})>)
19218  Double_t wCov16 = 0.; // w*Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19219  Double_t wCov17 = 0.; // w*Cov(<cos(#phi)>,<sin(#phi_{1}+#phi_{2})>)
19220  Double_t wCov18 = 0.; // w*Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19221  Double_t wCov19 = 0.; // w*Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19222  Double_t wCov20 = 0.; // w*Cov(<sin(#phi)>,<cos(#phi_{1}+#phi_{2})>)
19223  Double_t wCov21 = 0.; // w*Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)
19224  Double_t wCov22 = 0.; // w*Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19225  Double_t wCov23 = 0.; // w*Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19226  Double_t wCov24 = 0.; // w*Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19227  Double_t wCov25 = 0.; // w*Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)
19228  Double_t wCov26 = 0.; // w*Cov(<sin(#phi)>,<sin(#phi_{1}+#phi_{2})>)
19229  Double_t wCov27 = 0.; // w*Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19230  Double_t wCov28 = 0.; // w*Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19231  if(!fForgetAboutCovariances)
19232  {
19233   wCov1 = fIntFlowCovariancesNUA->GetBinContent(1); // w*Cov(<2>,<cos(phi)) 
19234   wCov2 = fIntFlowCovariancesNUA->GetBinContent(2); // w*Cov(<2>,<sin(phi))
19235   wCov3 = fIntFlowCovariancesNUA->GetBinContent(3); // w*Cov(<cos(phi),<sin(phi))
19236   wCov4 = fIntFlowCovariances->GetBinContent(1); // w*Cov(<2>,<4>) 
19237   wCov5 = fIntFlowCovariancesNUA->GetBinContent(4); // w*Cov(<2>,<cos(#phi_{1}+#phi_{2})>)
19238   wCov6 = fIntFlowCovariancesNUA->GetBinContent(6); // w*Cov(<2>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19239   wCov7 = fIntFlowCovariancesNUA->GetBinContent(5); // w*Cov(<2>,<sin(#phi_{1}+#phi_{2})>)
19240   wCov8 = fIntFlowCovariancesNUA->GetBinContent(7); // w*Cov(<2>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19241   wCov9 = fIntFlowCovariancesNUA->GetBinContent(8); // w*Cov(<4>,<cos(#phi)>
19242   wCov10 = fIntFlowCovariancesNUA->GetBinContent(10); // w*Cov(<4>,<cos(#phi_{1}+#phi_{2})>)
19243   wCov11 = fIntFlowCovariancesNUA->GetBinContent(12); // w*Cov(<4>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19244   wCov12 = fIntFlowCovariancesNUA->GetBinContent(9); // w*Cov(<4>,<sin(#phi)>
19245   wCov13 = fIntFlowCovariancesNUA->GetBinContent(11); // w*Cov(<4>,<sin(#phi_{1}+#phi_{2})>)
19246   wCov14 = fIntFlowCovariancesNUA->GetBinContent(13); // w*Cov(<4>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19247   wCov15 = fIntFlowCovariancesNUA->GetBinContent(14); // w*Cov(<cos(#phi)>,<cos(#phi_{1}+#phi_{2})>)
19248   wCov16 = fIntFlowCovariancesNUA->GetBinContent(16); // w*Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19249   wCov17 = fIntFlowCovariancesNUA->GetBinContent(15); // w*Cov(<cos(#phi)>,<sin(#phi_{1}+#phi_{2})>)
19250   wCov18 = fIntFlowCovariancesNUA->GetBinContent(17); // w*Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19251   wCov19 = fIntFlowCovariancesNUA->GetBinContent(23); // w*Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19252   wCov20 = fIntFlowCovariancesNUA->GetBinContent(18); // w*Cov(<sin(#phi)>,<cos(#phi_{1}+#phi_{2})>)
19253   wCov21 = fIntFlowCovariancesNUA->GetBinContent(22); // w*Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)
19254   wCov22 = fIntFlowCovariancesNUA->GetBinContent(24); // w*Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19255   wCov23 = fIntFlowCovariancesNUA->GetBinContent(20); // w*Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19256   wCov24 = fIntFlowCovariancesNUA->GetBinContent(25); // w*Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19257   wCov25 = fIntFlowCovariancesNUA->GetBinContent(27); // w*Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)
19258   wCov26 = fIntFlowCovariancesNUA->GetBinContent(19); // w*Cov(<sin(#phi)>,<sin(#phi_{1}+#phi_{2})>)
19259   wCov27 = fIntFlowCovariancesNUA->GetBinContent(21); // w*Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19260   wCov28 = fIntFlowCovariancesNUA->GetBinContent(26); // w*Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19261  } // end of if(!fForgetAboutCovariances)
19262  
19263  // Calculating generalized QC{2}:
19264  //  Generalized QC{2}:
19265  Double_t gQC2 = two - pow(c1,2.) - pow(s1,2.);
19266  if(fApplyCorrectionForNUA){fIntFlowQcumulants->SetBinContent(1,gQC2);} 
19267  //  Statistical error of generalized QC{2}:
19268  Double_t gQC2ErrorSquared = pow(twoError,2.)+4.*pow(c1,2.)*pow(c1Error,2.)
19269                            + 4.*pow(s1,2.)*pow(s1Error,2.)
19270                            - 4*c1*wCov1-4*s1*wCov2 
19271                            + 8.*c1*s1*wCov3;
19272  //  Store ratio of error squared - with/without NUA terms:
19273  Double_t ratioErrorSquaredQC2 = 0.;
19274  if(fIntFlowQcumulants->GetBinError(1)>0.)
19275  { 
19276   ratioErrorSquaredQC2 = (gQC2ErrorSquared/pow(fIntFlowQcumulants->GetBinError(1),2.));
19277   fIntFlowQcumulantsErrorSquaredRatio->SetBinContent(1,ratioErrorSquaredQC2);
19278  }
19279  //  If enabled, store error by including non-isotropic terms:                         
19280  if(fApplyCorrectionForNUA && fPropagateErrorAlsoFromNIT)
19281  {
19282   if(gQC2ErrorSquared>=0.)
19283   {
19284    fIntFlowQcumulants->SetBinError(1,pow(gQC2ErrorSquared,0.5));
19285   } else
19286     {
19287      fIntFlowQcumulants->SetBinError(1,0.);
19288      cout<<endl;
19289      cout<<" WARNING (QC): Statistical error of generalized QC{2} is imaginary !!!!"<<endl;
19290      cout<<endl;
19291     }   
19292  } // end of if(fApplyCorrectionForNUA && fPropagateErrorAlsoFromNIT)
19293  // Quantify detector bias to QC{2}:
19294  if(TMath::Abs(QC2)>0.)
19295  {
19296   fIntFlowDetectorBias->SetBinContent(1,gQC2/QC2); 
19297   if(QC2Error>0.)
19298   {
19299    Double_t errorSquared = gQC2ErrorSquared/pow(QC2,2.)+pow(gQC2,2.)*pow(QC2Error,2.)/pow(QC2,4.);
19300    if(errorSquared>0.)
19301    {
19302     fIntFlowDetectorBias->SetBinError(1,pow(errorSquared,0.5));  
19303    }
19304   }
19305  } // end of if(TMath::Abs(QC2)>0.)
19306
19307  // Calculating generalized QC{4}:
19308  //  Generalized QC{4}:
19309  Double_t gQC4 = four-2.*pow(two,2.)
19310                - 4.*c1*c3+4.*s1*s3-pow(c2,2.)-pow(s2,2.)
19311                + 4.*c2*(pow(c1,2.)-pow(s1,2.))+8.*s2*s1*c1
19312                + 8.*two*(pow(c1,2.)+pow(s1,2.))-6.*pow((pow(c1,2.)+pow(s1,2.)),2.);
19313  if(fApplyCorrectionForNUA){fIntFlowQcumulants->SetBinContent(2,gQC4);}   
19314  //  Statistical error of generalized QC{4}:
19315  Double_t gQC4ErrorSquared = 16.*pow(a1,2.)*pow(twoError,2.)+pow(fourError,2.)+16.*pow(a2,2.)*pow(c1Error,2.)
19316                            + 4.*pow(a3,2.)*pow(c2Error,2.)+16.*pow(c1,2.)*pow(c3Error,2.)
19317                            + 16.*pow(a4,2.)*pow(s1Error,2.)+4.*pow(a5,2.)*pow(s2Error,2.)
19318                            + 16.*pow(s1,2.)*pow(s3Error,2.)+8.*a1*wCov4-32.*a1*a2*wCov1
19319                            - 16.*a3*a1*wCov5-32.*c1*a1*wCov6-32.*a1*a4*wCov2+16.*a5*a1*wCov7
19320                            + 32.*s1*a1*wCov8-8.*a2*wCov9-4.*a3*wCov10-8.*c1*wCov11-8.*a4*wCov12
19321                            + 4.*a5*wCov13+8.*s1*wCov14+16.*a3*a2*wCov15+32.*c1*a2*wCov16+32.*a2*a4*wCov3
19322                            - 16.*a5*a2*wCov17-32.*s1*a2*wCov18+16.*c1*a3*wCov19+16.*a3*a4*wCov20
19323                            - 8.*a3*a5*wCov21-16.*s1*a3*wCov22+32.*c1*a4*wCov23-16.*c1*a5*wCov24
19324                            - 32.*c1*s1*wCov25-16.*a5*a4*wCov26-32.*s1*a4*wCov27+16.*s1*a5*wCov28;
19325  //  Store ratio of error squared - with/without NUA terms:
19326  Double_t ratioErrorSquaredQC4 = 0.;
19327  if(fIntFlowQcumulants->GetBinError(2)>0.)
19328  { 
19329   ratioErrorSquaredQC4 = (gQC4ErrorSquared/pow(fIntFlowQcumulants->GetBinError(2),2.));
19330   fIntFlowQcumulantsErrorSquaredRatio->SetBinContent(2,ratioErrorSquaredQC4);
19331  }                          
19332  if(fApplyCorrectionForNUA && fPropagateErrorAlsoFromNIT)
19333  {
19334   if(gQC4ErrorSquared>=0.)
19335   {
19336    fIntFlowQcumulants->SetBinError(2,pow(gQC4ErrorSquared,0.5));
19337   } else
19338     {
19339      fIntFlowQcumulants->SetBinError(2,0.);
19340      cout<<endl;
19341      cout<<" WARNING (QC): Statistical error of generalized QC{4} is imaginary !!!!"<<endl;
19342      cout<<endl;
19343     }   
19344  } // end of if(fApplyCorrectionForNUA && fPropagateErrorAlsoFromNIT)
19345  // Quantify detector bias to QC{4}:
19346  if(TMath::Abs(QC4)>0.)
19347  {
19348   fIntFlowDetectorBias->SetBinContent(2,gQC4/QC4); 
19349   if(QC4Error>0.)
19350   {
19351    Double_t errorSquared = gQC4ErrorSquared/pow(QC4,2.)+pow(gQC4,2.)*pow(QC4Error,2.)/pow(QC4,4.);
19352    if(errorSquared>0.)
19353    {
19354     fIntFlowDetectorBias->SetBinError(2,pow(errorSquared,0.5));  
19355    }
19356   }
19357  } // end of if(TMath::Abs(QC4)>0.)
19358
19359
19360  // .... to be improved (continued for 6th and 8th order) ....            
19361  
19362      
19363  // versus multiplicity:
19364  if(fCalculateCumulantsVsM) // to be improved - propagate error for nua terms vs M
19365  { 
19366   Int_t nBins = fIntFlowCorrelationsVsMPro[0]->GetNbinsX(); // to be improved (hardwired 0) 
19367   Double_t value[4] = {0.}; // QCs vs M
19368   Double_t error[4] = {0.}; // error of QCs vs M
19369   Double_t dSum1[4] = {0.}; // sum value_i/(error_i)^2
19370   Double_t dSum2[4] = {0.}; // sum 1/(error_i)^2
19371   for(Int_t b=1;b<=nBins;b++)
19372   {
19373    // Measured correlations:
19374    two = fIntFlowCorrelationsVsMHist[0]->GetBinContent(b); // <<2>> vs M
19375    four = fIntFlowCorrelationsVsMHist[1]->GetBinContent(b); // <<4>> vs M
19376    // Isotropic cumulants:
19377    QC2 = two;
19378    QC4 = four-2.*pow(two,2.);
19379    // Non-isotropic terms:
19380    c1 = fIntFlowCorrectionTermsForNUAVsMPro[1][0]->GetBinContent(b); // <<cos(n*phi1)>>
19381    c2 = fIntFlowCorrectionTermsForNUAVsMPro[1][1]->GetBinContent(b); // <<cos(n*(phi1+phi2))>>
19382    c3 = fIntFlowCorrectionTermsForNUAVsMPro[1][2]->GetBinContent(b); // <<cos(n*(phi1-phi2-phi3))>>
19383    s1 = fIntFlowCorrectionTermsForNUAVsMPro[0][0]->GetBinContent(b); // <<sin(n*phi1)>>
19384    s2 = fIntFlowCorrectionTermsForNUAVsMPro[0][1]->GetBinContent(b); // <<sin(n*(phi1+phi2))>>
19385    s3 = fIntFlowCorrectionTermsForNUAVsMPro[0][2]->GetBinContent(b); // <<sin(n*(phi1-phi2-phi3))>>
19386    // Generalized QC{2} vs M:
19387    gQC2 = two - pow(c1,2.) - pow(s1,2.); 
19388    if(fApplyCorrectionForNUAVsM){fIntFlowQcumulantsVsM[0]->SetBinContent(b,gQC2);}   
19389    // Generalized QC{4} vs M:  
19390    gQC4 = four-2.*pow(two,2.)
19391                  - 4.*c1*c3+4.*s1*s3-pow(c2,2.)-pow(s2,2.)
19392                  + 4.*c2*(pow(c1,2.)-pow(s1,2.))+8.*s2*s1*c1
19393                  + 8.*two*(pow(c1,2.)+pow(s1,2.))-6.*pow((pow(c1,2.)+pow(s1,2.)),2.);
19394    if(fApplyCorrectionForNUAVsM){fIntFlowQcumulantsVsM[1]->SetBinContent(b,gQC4);}   
19395    // Detector bias vs M:
19396    if(TMath::Abs(QC2)>0.)
19397    {
19398     fIntFlowDetectorBiasVsM[0]->SetBinContent(b,gQC2/QC2); 
19399    } // end of if(TMath::Abs(QC2)>0.)
19400    if(TMath::Abs(QC4)>0.)
19401    {
19402     fIntFlowDetectorBiasVsM[1]->SetBinContent(b,gQC4/QC4); 
19403    } // end of if(TMath::Abs(QC4)>0.)  
19404    // Rebin in M:
19405    for(Int_t co=0;co<4;co++)
19406    {
19407     value[co] = fIntFlowQcumulantsVsM[co]->GetBinContent(b);
19408     error[co] = fIntFlowQcumulantsVsM[co]->GetBinError(b);
19409     if(error[co]>0.)
19410     {
19411      dSum1[co]+=value[co]/(error[co]*error[co]);
19412      dSum2[co]+=1./(error[co]*error[co]);
19413     }
19414    } // end of for(Int_t co=0;co<4;co++) 
19415   } // end of for(Int_t b=1;b<=nBins;b++)
19416   // Store rebinned Q-cumulants:
19417   if(fApplyCorrectionForNUAVsM)
19418   {
19419    for(Int_t co=0;co<4;co++)
19420    {
19421     if(dSum2[co]>0.)
19422     {
19423      fIntFlowQcumulantsRebinnedInM->SetBinContent(co+1,dSum1[co]/dSum2[co]);
19424      fIntFlowQcumulantsRebinnedInM->SetBinError(co+1,pow(1./dSum2[co],0.5));
19425     }
19426    } // end of for(Int_t co=0;co<4;co++)
19427   } // end of if(fApplyCorrectionForNUAVsM)
19428  } // end of if(fCalculateCumulantsVsM) 
19429      
19430 } // end of void AliFlowAnalysisWithQCumulants::CalculateQcumulantsCorrectedForNUAIntFlow()
19431  
19432 //=======================================================================================================================
19433
19434 void AliFlowAnalysisWithQCumulants::FinalizeCorrectionTermsForNUAIntFlow() 
19435 {
19436  // From profile fIntFlowCorrectionTermsForNUAPro[sc] access measured correction terms for NUA
19437  // and their spread, correctly calculate the statistical errors and store the final 
19438  // results and statistical errors for correction terms for NUA in histogram fIntFlowCorrectionTermsForNUAHist[sc].
19439  //
19440  // Remark: Statistical error of correction temrs is calculated as:
19441  //
19442  //          statistical error = termA * spread * termB:
19443  //          termA = sqrt{sum_{i=1}^{N} w^2}/(sum_{i=1}^{N} w)
19444  //          termB = 1/sqrt(1-termA^2)   
19445  
19446  TString sinCosFlag[2] = {"sin","cos"}; // to be improved - promore this to data member?
19447  TString nonisotropicTermFlag[4] = {"(n(phi1))","(n(phi1+phi2))","(n(phi1-phi2-phi3))","(n(2phi1-phi2))"}; // to be improved - hardwired 4
19448     
19449  for(Int_t sc=0;sc<2;sc++) // sin or cos correction terms 
19450  {
19451   for(Int_t ci=1;ci<=4;ci++) // correction term index (to be improved - hardwired 4)
19452   {
19453    Double_t correction = fIntFlowCorrectionTermsForNUAPro[sc]->GetBinContent(ci);
19454    Double_t spread = fIntFlowCorrectionTermsForNUAPro[sc]->GetBinError(ci);
19455    Double_t sumOfLinearEventWeights = fIntFlowSumOfEventWeightsNUA[sc][0]->GetBinContent(ci);
19456    Double_t sumOfQuadraticEventWeights = fIntFlowSumOfEventWeightsNUA[sc][1]->GetBinContent(ci);
19457    Double_t termA = 0.;
19458    Double_t termB = 0.;
19459    if(TMath::Abs(sumOfLinearEventWeights)>1.e-44)
19460    {
19461     termA = pow(sumOfQuadraticEventWeights,0.5)/sumOfLinearEventWeights;
19462    } else
19463      {
19464       cout<<" WARNING (QC): sumOfLinearEventWeights == 0 in AFAWQC::FCTFNIF() !!!!"<<endl;
19465       cout<<Form("               (for <<%s[%s]>> non-isotropic term)",sinCosFlag[sc].Data(),nonisotropicTermFlag[ci-1].Data())<<endl;
19466      }
19467    if(1.-pow(termA,2.) > 0.)
19468    {
19469     termB = 1./pow(1-pow(termA,2.),0.5);
19470    } else
19471      {
19472       cout<<" WARNING (QC): 1.-pow(termA,2.) <= 0 in AFAWQC::FCTFNIF() !!!!"<<endl;   
19473       cout<<Form("               (for <<%s[%s]>> non-isotropic term)",sinCosFlag[sc].Data(),nonisotropicTermFlag[ci-1].Data())<<endl;
19474      }     
19475    Double_t statisticalError = termA * spread * termB;
19476    fIntFlowCorrectionTermsForNUAHist[sc]->SetBinContent(ci,correction);
19477    fIntFlowCorrectionTermsForNUAHist[sc]->SetBinError(ci,statisticalError);
19478   } // end of for(Int_t ci=1;ci<=4;ci++) // correction term index
19479  } // end of for(Int sc=0;sc<2;sc++) // sin or cos correction terms 
19480                                                                                                                                                                                                
19481 } // end of void AliFlowAnalysisWithQCumulants::FinalizeCorrectionTermsForNUAIntFlow()
19482
19483 //=======================================================================================================================
19484
19485 void AliFlowAnalysisWithQCumulants::GetPointersForNestedLoopsHistograms()
19486 {
19487  // Get pointers to all objects relevant for calculations with nested loops.
19488    
19489  TList *nestedLoopsList = dynamic_cast<TList*>(fHistList->FindObject("Nested Loops"));
19490  if(nestedLoopsList) 
19491  {
19492   this->SetNestedLoopsList(nestedLoopsList);
19493  } else
19494    {
19495     cout<<"WARNING: nestedLoopsList is NULL in AFAWQC::GPFNLH() !!!!"<<endl;
19496     exit(0);
19497    }
19498     
19499   TString sinCosFlag[2] = {"sin","cos"}; // to be improved (should I promote this to data members?)
19500   TString typeFlag[2] = {"RP","POI"}; // to be improved (should I promote this to data members?)
19501   TString ptEtaFlag[2] = {"p_{T}","#eta"}; // to be improved (should I promote this to data members?)
19502   TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"}; // to be improved (should I promote this to data members?)
19503    
19504   TString evaluateNestedLoopsName = "fEvaluateNestedLoops";
19505   evaluateNestedLoopsName += fAnalysisLabel->Data();  
19506   TProfile *evaluateNestedLoops = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(evaluateNestedLoopsName.Data()));
19507   Bool_t bEvaluateIntFlowNestedLoops = kFALSE;
19508   Bool_t bEvaluateDiffFlowNestedLoops = kFALSE;
19509   if(evaluateNestedLoops)
19510   {
19511    this->SetEvaluateNestedLoops(evaluateNestedLoops);
19512    bEvaluateIntFlowNestedLoops = (Int_t)evaluateNestedLoops->GetBinContent(1);
19513    bEvaluateDiffFlowNestedLoops = (Int_t)evaluateNestedLoops->GetBinContent(2);
19514   }
19515   // nested loops relevant for integrated flow:  
19516   if(bEvaluateIntFlowNestedLoops)
19517   {
19518    // correlations:
19519    TString intFlowDirectCorrelationsName = "fIntFlowDirectCorrelations";
19520    intFlowDirectCorrelationsName += fAnalysisLabel->Data();
19521    TProfile *intFlowDirectCorrelations = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(intFlowDirectCorrelationsName.Data()));
19522    if(intFlowDirectCorrelations) 
19523    { 
19524     this->SetIntFlowDirectCorrelations(intFlowDirectCorrelations);
19525    } else
19526      {
19527       cout<<"WARNING: intFlowDirectCorrelations is NULL in AFAWQC::GPFNLH() !!!!"<<endl;
19528       exit(0);
19529      }
19530    if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)  
19531    {
19532     TString intFlowExtraDirectCorrelationsName = "fIntFlowExtraDirectCorrelations";
19533     intFlowExtraDirectCorrelationsName += fAnalysisLabel->Data();
19534     TProfile *intFlowExtraDirectCorrelations = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(intFlowExtraDirectCorrelationsName.Data()));
19535     if(intFlowExtraDirectCorrelations) 
19536     { 
19537      this->SetIntFlowExtraDirectCorrelations(intFlowExtraDirectCorrelations);
19538     } else
19539       {
19540        cout<<"WARNING: intFlowExtraDirectCorrelations is NULL in AFAWQC::GPFNLH() !!!!"<<endl;
19541        exit(0);
19542       }       
19543    } // end of if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)  
19544    // correction terms for non-uniform acceptance:
19545    TString intFlowDirectCorrectionTermsForNUAName = "fIntFlowDirectCorrectionTermsForNUA";
19546    intFlowDirectCorrectionTermsForNUAName += fAnalysisLabel->Data();
19547    TProfile *intFlowDirectCorrectionTermsForNUA[2] = {NULL};
19548    for(Int_t sc=0;sc<2;sc++) // sin or cos terms
19549    {
19550     intFlowDirectCorrectionTermsForNUA[sc] = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(Form("%s: %s terms",intFlowDirectCorrectionTermsForNUAName.Data(),sinCosFlag[sc].Data())));
19551     if(intFlowDirectCorrectionTermsForNUA[sc]) 
19552     { 
19553      this->SetIntFlowDirectCorrectionTermsForNUA(intFlowDirectCorrectionTermsForNUA[sc],sc);
19554     } else
19555       {
19556        cout<<"WARNING: intFlowDirectCorrectionTermsForNUA[sc] is NULL in AFAWQC::GPFNLH() !!!!"<<endl;
19557        cout<<"sc = "<<sc<<endl;
19558        exit(0);
19559       }
19560    } // end of for(Int_t sc=0;sc<2;sc++) 
19561    // Mixed harmonics:
19562    if(fCalculateMixedHarmonics)
19563    {
19564     TString mixedHarmonicsNestedLoopsName = "fMixedHarmonicsNestedLoops";
19565     mixedHarmonicsNestedLoopsName += fAnalysisLabel->Data();
19566     TProfile *mixedHarmonicsNestedLoops = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(mixedHarmonicsNestedLoopsName.Data()));
19567     if(mixedHarmonicsNestedLoops) 
19568     { 
19569      this->SetMixedHarmonicsNestedLoops(mixedHarmonicsNestedLoops);
19570     } else
19571       {
19572        cout<<"WARNING: mixedHarmonicsNestedLoops is NULL in AFAWQC::GPFNLH() !!!!"<<endl;
19573        exit(0);
19574       }
19575    } // end of if(fCalculateMixedHarmonics)
19576   } // end of if(bEvaluateIntFlowNestedLoops)
19577     
19578   // nested loops relevant for differential flow:  
19579   if(bEvaluateDiffFlowNestedLoops)
19580   {
19581    // correlations:
19582    TString diffFlowDirectCorrelationsName = "fDiffFlowDirectCorrelations";
19583    diffFlowDirectCorrelationsName += fAnalysisLabel->Data();
19584    TProfile *diffFlowDirectCorrelations[2][2][4] = {{{NULL}}};
19585    for(Int_t t=0;t<2;t++)
19586    {
19587     for(Int_t pe=0;pe<2;pe++)
19588     {
19589      for(Int_t ci=0;ci<4;ci++) // correlation index
19590      {
19591       diffFlowDirectCorrelations[t][pe][ci] = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(Form("%s, %s, %s, %s",diffFlowDirectCorrelationsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedCorrelationIndex[ci].Data())));
19592       if(diffFlowDirectCorrelations[t][pe][ci])
19593       {
19594        this->SetDiffFlowDirectCorrelations(diffFlowDirectCorrelations[t][pe][ci],t,pe,ci);
19595       } else
19596         {
19597          cout<<"WARNING: diffFlowDirectCorrelations[t][pe][ci] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
19598          cout<<"t  = "<<t<<endl;
19599          cout<<"pe = "<<pe<<endl;   
19600          cout<<"ci = "<<ci<<endl;
19601         }     
19602      } // end of for(Int_t ci=0;ci<4;ci++) // correlation index  
19603     } // end of for(Int_t pe=0;pe<2;pe++)
19604    } // end of for(Int_t t=0;t<2;t++)   
19605    // correction terms for non-uniform acceptance:
19606    TString diffFlowDirectCorrectionTermsForNUAName = "fDiffFlowDirectCorrectionTermsForNUA";
19607    diffFlowDirectCorrectionTermsForNUAName += fAnalysisLabel->Data();  
19608    TProfile *diffFlowDirectCorrectionTermsForNUA[2][2][2][10] = {{{{NULL}}}};   
19609    for(Int_t t=0;t<2;t++)
19610    {
19611     for(Int_t pe=0;pe<2;pe++)
19612     {
19613      // correction terms for NUA:
19614      for(Int_t sc=0;sc<2;sc++) // sin or cos
19615      {
19616       for(Int_t cti=0;cti<9;cti++) // correction term index
19617       {
19618        diffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti] = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(Form("%s, %s, %s, %s, cti = %d",diffFlowDirectCorrectionTermsForNUAName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),cti+1)));
19619        if(diffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti])
19620        {
19621         this->SetDiffFlowDirectCorrectionTermsForNUA(diffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti],t,pe,sc,cti);
19622        } else
19623          {
19624           cout<<"WARNING: diffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
19625           cout<<"t   = "<<t<<endl;
19626           cout<<"pe  = "<<pe<<endl;   
19627           cout<<"sc  = "<<sc<<endl;
19628           cout<<"cti = "<<cti<<endl;
19629          }    
19630       } // end of for(Int_t cti=0;cti<9;cti++) // correction term index
19631      } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
19632     } // end of for(Int_t pe=0;pe<2;pe++)
19633    } // end of for(Int_t t=0;t<2;t++)
19634    // other differential correlators:
19635    TString otherDirectDiffCorrelatorsName = "fOtherDirectDiffCorrelators";
19636    otherDirectDiffCorrelatorsName += fAnalysisLabel->Data();  
19637    TProfile *otherDirectDiffCorrelators[2][2][2][1] = {{{{NULL}}}};   
19638    for(Int_t t=0;t<2;t++)
19639    {
19640     for(Int_t pe=0;pe<2;pe++)
19641     {
19642      // correction terms for NUA:
19643      for(Int_t sc=0;sc<2;sc++) // sin or cos
19644      {
19645       for(Int_t ci=0;ci<1;ci++) // correlator index
19646       {
19647        otherDirectDiffCorrelators[t][pe][sc][ci] = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(Form("%s, %s, %s, %s, ci = %d",otherDirectDiffCorrelatorsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),ci+1)));
19648        if(otherDirectDiffCorrelators[t][pe][sc][ci])
19649        {
19650         this->SetOtherDirectDiffCorrelators(otherDirectDiffCorrelators[t][pe][sc][ci],t,pe,sc,ci);
19651        } else
19652          {
19653           cout<<"WARNING: otherDirectDiffCorrelators[t][pe][sc][ci] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
19654           cout<<"t   = "<<t<<endl;
19655           cout<<"pe  = "<<pe<<endl;   
19656           cout<<"sc  = "<<sc<<endl;
19657           cout<<"ci = "<<ci<<endl;
19658          }    
19659       } // end of for(Int_t ci=0;ci<9;ci++) // correction term index
19660      } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
19661     } // end of for(Int_t pe=0;pe<2;pe++)
19662    } // end of for(Int_t t=0;t<2;t++)
19663    // number of RPs and POIs in selected pt and eta bins for cross-checkings:
19664    TString noOfParticlesInBinName = "fNoOfParticlesInBin";
19665    TH1D *noOfParticlesInBin = NULL;
19666    noOfParticlesInBin = dynamic_cast<TH1D*>(nestedLoopsList->FindObject(noOfParticlesInBinName.Data()));
19667    if(noOfParticlesInBin)
19668    {
19669     this->SetNoOfParticlesInBin(noOfParticlesInBin);
19670    } else
19671      {
19672       cout<<endl;
19673       cout<<" WARNING (QC): noOfParticlesInBin is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
19674       cout<<endl;
19675      }
19676   } // end of if(bEvaluateDiffFlowNestedLoops)
19677
19678 } // end of void AliFlowAnalysisWithQCumulants::GetPointersForNestedLoopsHistograms()
19679
19680 //=======================================================================================================================
19681
19682 void AliFlowAnalysisWithQCumulants::GetPointersForMixedHarmonicsHistograms()
19683 {
19684  // Get pointers to all objects relevant for mixed harmonics.
19685    
19686  // a) Get pointer to base list for mixed harmonics;
19687  // b) Get pointer to TProfile fMixedHarmonicsFlags holding all flags for mixed harmonics;
19688  // c) Get pointer to list fMixedHarmonicsProfiles and pointers to all objects that she holds; 
19689  // d) Get pointer to list fMixedHarmonicsResults and pointers to all objects that she holds;
19690  // e) Get pointer to list fMixedHarmonicsErrorPropagation and pointers to all objects that she holds.
19691
19692  // a) Get pointer to base list for mixed harmonics:
19693  TList *mixedHarmonicsList = dynamic_cast<TList*>(fHistList->FindObject("Mixed Harmonics"));
19694  if(mixedHarmonicsList) 
19695  {
19696   this->SetMixedHarmonicsList(mixedHarmonicsList);
19697  } else
19698    {
19699     cout<<"WARNING: mixedHarmonicsList is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19700     exit(0);
19701    }
19702
19703  // b) Get pointer to TProfile fMixedHarmonicsFlags holding all flags for mixed harmonics:
19704  TString mixedHarmonicsFlagsName = "fMixedHarmonicsFlags";
19705  mixedHarmonicsFlagsName += fAnalysisLabel->Data();
19706  TProfile *mixedHarmonicsFlags = dynamic_cast<TProfile*>
19707                                  (mixedHarmonicsList->FindObject(mixedHarmonicsFlagsName.Data()));
19708  if(mixedHarmonicsFlags)
19709  {
19710   this->SetMixedHarmonicsFlags(mixedHarmonicsFlags);  
19711   fCalculateMixedHarmonics = (Bool_t)mixedHarmonicsFlags->GetBinContent(1); 
19712   fCalculateMixedHarmonicsVsM = (Bool_t)mixedHarmonicsFlags->GetBinContent(3); 
19713  } else 
19714    {
19715     cout<<"WARNING: mixedHarmonicsFlags is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19716     exit(0);
19717    }
19718   
19719  if(!fCalculateMixedHarmonics){return;}
19720
19721  // c) Get pointer to list fMixedHarmonicsProfiles and pointers to all objects that she holds:
19722  TList *mixedHarmonicsProfiles = NULL;
19723  mixedHarmonicsProfiles = dynamic_cast<TList*>(mixedHarmonicsList->FindObject("Profiles"));
19724  if(mixedHarmonicsProfiles)  
19725  {
19726   // 2p:
19727   TString s2pCorrelationsName = "f2pCorrelations";
19728   s2pCorrelationsName += fAnalysisLabel->Data();
19729   TProfile *p2pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s2pCorrelationsName.Data()));
19730   if(p2pCorrelations) 
19731   {
19732    this->Set2pCorrelations(p2pCorrelations);
19733   } else 
19734     {
19735      cout<<"WARNING: p2pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19736      exit(0);
19737     } 
19738   // 3p:
19739   TString s3pCorrelationsName = "f3pCorrelations";
19740   s3pCorrelationsName += fAnalysisLabel->Data();
19741   TProfile *p3pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s3pCorrelationsName.Data()));
19742   if(p3pCorrelations) 
19743   {
19744    this->Set3pCorrelations(p3pCorrelations);
19745   } else 
19746     {
19747      cout<<"WARNING: p3pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19748      exit(0);
19749     } 
19750   // 4p:
19751   TString s4pCorrelationsName = "f4pCorrelations";
19752   s4pCorrelationsName += fAnalysisLabel->Data();
19753   TProfile *p4pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s4pCorrelationsName.Data()));
19754   if(p4pCorrelations) 
19755   {
19756    this->Set4pCorrelations(p4pCorrelations);
19757   } else 
19758     {
19759      cout<<"WARNING: p4pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19760      exit(0);
19761     } 
19762   // 5p:
19763   TString s5pCorrelationsName = "f5pCorrelations";
19764   s5pCorrelationsName += fAnalysisLabel->Data();
19765   TProfile *p5pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s5pCorrelationsName.Data()));
19766   if(p5pCorrelations) 
19767   {
19768    this->Set5pCorrelations(p5pCorrelations);
19769   } else 
19770     {
19771      cout<<"WARNING: p5pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19772      exit(0);
19773     } 
19774   /* TBI not needed for the time being
19775   // 6p:
19776   TString s6pCorrelationsName = "f6pCorrelations";
19777   s6pCorrelationsName += fAnalysisLabel->Data();
19778   TProfile *p6pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s6pCorrelationsName.Data()));
19779   if(p6pCorrelations) 
19780   {
19781    this->Set6pCorrelations(p6pCorrelations);
19782   } else 
19783     {
19784      cout<<"WARNING: p6pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19785      exit(0);
19786     } 
19787   // 7p:
19788   TString s7pCorrelationsName = "f7pCorrelations";
19789   s7pCorrelationsName += fAnalysisLabel->Data();
19790   TProfile *p7pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s7pCorrelationsName.Data()));
19791   if(p7pCorrelations) 
19792   {
19793    this->Set7pCorrelations(p7pCorrelations);
19794   } else 
19795     {
19796      cout<<"WARNING: p7pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19797      exit(0);
19798     } 
19799   // 8p:
19800   TString s8pCorrelationsName = "f8pCorrelations";
19801   s8pCorrelationsName += fAnalysisLabel->Data();
19802   TProfile *p8pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s8pCorrelationsName.Data()));
19803   if(p8pCorrelations) 
19804   {
19805    this->Set8pCorrelations(p8pCorrelations);
19806   } else 
19807     {
19808      cout<<"WARNING: p8pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19809      exit(0);
19810     }
19811  */
19812  } else // to if(mixedHarmonicsProfiles)
19813    {
19814     cout<<"WARNING: mixedHarmonicsProfiles is NULL in FAWQC::GPFMHH() !!!!"<<endl;
19815     exit(0);
19816    }
19817
19818  // d) Get pointer to list fMixedHarmonicsResults and pointers to all objects that she holds.
19819  TList *mixedHarmonicsResults = NULL;
19820  mixedHarmonicsResults = dynamic_cast<TList*>(mixedHarmonicsList->FindObject("Results"));
19821  if(mixedHarmonicsResults)  
19822  {
19823   // 2p:
19824   TString s2pCumulantsName = "f2pCumulants";
19825   s2pCumulantsName += fAnalysisLabel->Data();
19826   TH1D *p2pCumulants = dynamic_cast<TH1D*>(mixedHarmonicsResults->FindObject(s2pCumulantsName.Data()));
19827   if(p2pCumulants) 
19828   {
19829    this->Set2pCumulants(p2pCumulants);
19830   } else 
19831     {
19832      cout<<"WARNING: p2pCumulants is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19833      exit(0);
19834     } 
19835   // 3p:
19836   TString s3pCumulantsName = "f3pCumulants";
19837   s3pCumulantsName += fAnalysisLabel->Data();
19838   TH1D *p3pCumulants = dynamic_cast<TH1D*>(mixedHarmonicsResults->FindObject(s3pCumulantsName.Data()));
19839   if(p3pCumulants) 
19840   {
19841    this->Set3pCumulants(p3pCumulants);
19842   } else 
19843     {
19844      cout<<"WARNING: p3pCumulants is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19845      exit(0);
19846     } 
19847   // 4p:
19848   TString s4pCumulantsName = "f4pCumulants";
19849   s4pCumulantsName += fAnalysisLabel->Data();
19850   TH1D *p4pCumulants = dynamic_cast<TH1D*>(mixedHarmonicsResults->FindObject(s4pCumulantsName.Data()));
19851   if(p4pCumulants) 
19852   {
19853    this->Set4pCumulants(p4pCumulants);
19854   } else 
19855     {
19856      cout<<"WARNING: p4pCumulants is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19857      exit(0);
19858     } 
19859   // 5p:
19860   TString s5pCumulantsName = "f5pCumulants";
19861   s5pCumulantsName += fAnalysisLabel->Data();
19862   TH1D *p5pCumulants = dynamic_cast<TH1D*>(mixedHarmonicsResults->FindObject(s5pCumulantsName.Data()));
19863   if(p5pCumulants) 
19864   {
19865    this->Set5pCumulants(p5pCumulants);
19866   } else 
19867     {
19868      cout<<"WARNING: p5pCumulants is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19869      exit(0);
19870     } 
19871  } else // to if(mixedHarmonicsResults)
19872    {
19873     cout<<"WARNING: mixedHarmonicsResults is NULL in FAWQC::GPFMHH() !!!!"<<endl;
19874    }
19875
19876  // e) Get pointer to list fMixedHarmonicsErrorPropagation and pointers to all objects that she holds:
19877  TList *mixedHarmonicsErrorPropagation = NULL;
19878  mixedHarmonicsErrorPropagation = dynamic_cast<TList*>(mixedHarmonicsList->FindObject("Error Propagation"));
19879  if(mixedHarmonicsErrorPropagation)  
19880  {   
19881   TString sMixedHarmonicEventWeightsName = "fMixedHarmonicEventWeights";
19882   sMixedHarmonicEventWeightsName += fAnalysisLabel->Data();
19883   TString powerFlag[2] = {"linear","quadratic"};
19884   for(Int_t power=0;power<2;power++)
19885   {
19886    TH1D *hMixedHarmonicEventWeights = dynamic_cast<TH1D*>(mixedHarmonicsErrorPropagation->FindObject(Form("%s: %s",sMixedHarmonicEventWeightsName.Data(),powerFlag[power].Data())));
19887    if(hMixedHarmonicEventWeights) 
19888    {
19889     this->SetMixedHarmonicEventWeights(hMixedHarmonicEventWeights,power);
19890    } else 
19891      {
19892       cout<<"WARNING: hMixedHarmonicEventWeights is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
19893       cout<<"power = "<<power<<endl;
19894       exit(0);
19895      }                                   
19896   } // end of for(Int_t power=0;power<2;power++)
19897   TString sMixedHarmonicProductOfEventWeightsName = "fMixedHarmonicProductOfEventWeights";
19898   sMixedHarmonicProductOfEventWeightsName += fAnalysisLabel->Data();
19899   TH2D *hMixedHarmonicProductOfEventWeights = dynamic_cast<TH2D*>(mixedHarmonicsErrorPropagation->FindObject(sMixedHarmonicProductOfEventWeightsName.Data()));
19900   if(hMixedHarmonicProductOfEventWeights) 
19901   {
19902    this->SetMixedHarmonicProductOfEventWeights(hMixedHarmonicProductOfEventWeights);
19903   } else 
19904     {
19905      cout<<"WARNING: hMixedHarmonicProductOfEventWeights is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19906      exit(0);
19907     } 
19908   TString sMixedHarmonicProductOfCorrelationsName = "fMixedHarmonicProductOfCorrelations";
19909   sMixedHarmonicProductOfCorrelationsName += fAnalysisLabel->Data();
19910   TProfile2D *hMixedHarmonicProductOfCorrelations = dynamic_cast<TProfile2D*>(mixedHarmonicsErrorPropagation->FindObject(sMixedHarmonicProductOfCorrelationsName.Data()));
19911   if(hMixedHarmonicProductOfCorrelations) 
19912   {
19913    this->SetMixedHarmonicProductOfCorrelations(hMixedHarmonicProductOfCorrelations);
19914   } else 
19915     {
19916      cout<<"WARNING: hMixedHarmonicProductOfCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19917      exit(0);
19918     } 
19919  } // end of if(mixedHarmonicsErrorPropagation) 
19920  
19921 } // end of void AliFlowAnalysisWithQCumulants::GetPointersForMixedHarmonicsHistograms()
19922
19923 //=======================================================================================================================
19924
19925 void AliFlowAnalysisWithQCumulants::StoreHarmonic()
19926 {
19927  // Store flow harmonic in common control histograms.
19928
19929  (fCommonHists->GetHarmonic())->Fill(0.5,fHarmonic);
19930  if(fFillMultipleControlHistograms)
19931  {
19932   (fCommonHists2nd->GetHarmonic())->Fill(0.5,fHarmonic);
19933   (fCommonHists4th->GetHarmonic())->Fill(0.5,fHarmonic);
19934   (fCommonHists6th->GetHarmonic())->Fill(0.5,fHarmonic);
19935   (fCommonHists8th->GetHarmonic())->Fill(0.5,fHarmonic);
19936  }
19937  
19938 } // end of void AliFlowAnalysisWithQCumulants::StoreHarmonic()
19939
19940 //=======================================================================================================================
19941
19942 void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrelationsUsingParticleWeights(TString type, TString ptOrEta) // type = RP or POI 
19943 {
19944  // Calculate all correlations needed for differential flow using particle weights.
19945  
19946  Int_t t = 0; // type flag 
19947  Int_t pe = 0; // ptEta flag
19948  
19949  if(type == "RP")
19950  {
19951   t = 0;
19952  } else if(type == "POI")
19953    {
19954     t = 1;
19955    }
19956
19957  if(ptOrEta == "Pt")
19958  {
19959   pe = 0;
19960  } else if(ptOrEta == "Eta")
19961    {
19962     pe = 1;
19963    }
19964     
19965  Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
19966  Double_t minPtEta[2] = {fPtMin,fEtaMin};
19967  //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
19968  Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
19969
19970  // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n: 
19971  Double_t dReQ1n1k = (*fReQ)(0,1);
19972  Double_t dReQ2n2k = (*fReQ)(1,2);
19973  Double_t dReQ1n3k = (*fReQ)(0,3);
19974  //Double_t dReQ4n4k = (*fReQ)(3,4);
19975  Double_t dImQ1n1k = (*fImQ)(0,1);
19976  Double_t dImQ2n2k = (*fImQ)(1,2);
19977  Double_t dImQ1n3k = (*fImQ)(0,3);
19978  //Double_t dImQ4n4k = (*fImQ)(3,4);
19979  
19980  // S^M_{p,k} (see .h file for the definition of fSpk):
19981  Double_t dSM1p1k = (*fSpk)(0,1);
19982  Double_t dSM1p2k = (*fSpk)(0,2);
19983  Double_t dSM1p3k = (*fSpk)(0,3);
19984  Double_t dSM2p1k = (*fSpk)(1,1);
19985  Double_t dSM3p1k = (*fSpk)(2,1);
19986  
19987  // looping over all bins and calculating reduced correlations: 
19988  for(Int_t b=1;b<=nBinsPtEta[pe];b++)
19989  {
19990   // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular (pt,eta) bin):  
19991   Double_t p1n0kRe = 0.;
19992   Double_t p1n0kIm = 0.;
19993
19994   // number of POIs in particular (pt,eta) bin):
19995   Double_t mp = 0.;
19996
19997   // real and imaginary parts of q_{m*n,k}: 
19998   // (weighted Q-vector evaluated for particles which are both RPs and POIs in particular (pt,eta) bin)
19999   Double_t q1n2kRe = 0.;
20000   Double_t q1n2kIm = 0.;
20001   Double_t q2n1kRe = 0.;
20002   Double_t q2n1kIm = 0.;
20003
20004   // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)  
20005   Double_t s1p1k = 0.; 
20006   Double_t s1p2k = 0.; 
20007   Double_t s1p3k = 0.; 
20008    
20009   // M0111 from Eq. (118) in QC2c (to be improved (notation))
20010   Double_t dM0111 = 0.;
20011  
20012   if(type == "POI")
20013   {
20014    p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
20015            * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
20016    p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))  
20017            * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
20018             
20019    mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20020     
20021    t = 1; // typeFlag = RP or POI
20022     
20023    // q_{m*n,k}: (Remark: m=1 is 0, k=0 iz zero (to be improved!)) 
20024    q1n2kRe = fReRPQ1dEBE[2][pe][0][2]->GetBinContent(fReRPQ1dEBE[2][pe][0][2]->GetBin(b))
20025            * fReRPQ1dEBE[2][pe][0][2]->GetBinEntries(fReRPQ1dEBE[2][pe][0][2]->GetBin(b));
20026    q1n2kIm = fImRPQ1dEBE[2][pe][0][2]->GetBinContent(fImRPQ1dEBE[2][pe][0][2]->GetBin(b))
20027            * fImRPQ1dEBE[2][pe][0][2]->GetBinEntries(fImRPQ1dEBE[2][pe][0][2]->GetBin(b));
20028    q2n1kRe = fReRPQ1dEBE[2][pe][1][1]->GetBinContent(fReRPQ1dEBE[2][pe][1][1]->GetBin(b))
20029            * fReRPQ1dEBE[2][pe][1][1]->GetBinEntries(fReRPQ1dEBE[2][pe][1][1]->GetBin(b));
20030    q2n1kIm = fImRPQ1dEBE[2][pe][1][1]->GetBinContent(fImRPQ1dEBE[2][pe][1][1]->GetBin(b))
20031            * fImRPQ1dEBE[2][pe][1][1]->GetBinEntries(fImRPQ1dEBE[2][pe][1][1]->GetBin(b));
20032        
20033    // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)  
20034    s1p1k = pow(fs1dEBE[2][pe][1]->GetBinContent(b)*fs1dEBE[2][pe][1]->GetBinEntries(b),1.); 
20035    s1p2k = pow(fs1dEBE[2][pe][2]->GetBinContent(b)*fs1dEBE[2][pe][2]->GetBinEntries(b),1.); 
20036    s1p3k = pow(fs1dEBE[2][pe][3]->GetBinContent(b)*fs1dEBE[2][pe][3]->GetBinEntries(b),1.); 
20037      
20038    // M0111 from Eq. (118) in QC2c (to be improved (notation)):
20039    dM0111 = mp*(dSM3p1k-3.*dSM1p1k*dSM1p2k+2.*dSM1p3k)
20040           - 3.*(s1p1k*(dSM2p1k-dSM1p2k)
20041           + 2.*(s1p3k-s1p2k*dSM1p1k));
20042   }
20043    else if(type == "RP")
20044    {
20045     // q_{m*n,k}: (Remark: m=1 is 0, k=0 iz zero (to be improved!)) 
20046     q1n2kRe = fReRPQ1dEBE[0][pe][0][2]->GetBinContent(fReRPQ1dEBE[0][pe][0][2]->GetBin(b))
20047             * fReRPQ1dEBE[0][pe][0][2]->GetBinEntries(fReRPQ1dEBE[0][pe][0][2]->GetBin(b));
20048     q1n2kIm = fImRPQ1dEBE[0][pe][0][2]->GetBinContent(fImRPQ1dEBE[0][pe][0][2]->GetBin(b))
20049             * fImRPQ1dEBE[0][pe][0][2]->GetBinEntries(fImRPQ1dEBE[0][pe][0][2]->GetBin(b));
20050     q2n1kRe = fReRPQ1dEBE[0][pe][1][1]->GetBinContent(fReRPQ1dEBE[0][pe][1][1]->GetBin(b))
20051             * fReRPQ1dEBE[0][pe][1][1]->GetBinEntries(fReRPQ1dEBE[0][pe][1][1]->GetBin(b));
20052     q2n1kIm = fImRPQ1dEBE[0][pe][1][1]->GetBinContent(fImRPQ1dEBE[0][pe][1][1]->GetBin(b))
20053             * fImRPQ1dEBE[0][pe][1][1]->GetBinEntries(fImRPQ1dEBE[0][pe][1][1]->GetBin(b));
20054
20055     // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)  
20056     s1p1k = pow(fs1dEBE[0][pe][1]->GetBinContent(b)*fs1dEBE[0][pe][1]->GetBinEntries(b),1.); 
20057     s1p2k = pow(fs1dEBE[0][pe][2]->GetBinContent(b)*fs1dEBE[0][pe][2]->GetBinEntries(b),1.); 
20058     s1p3k = pow(fs1dEBE[0][pe][3]->GetBinContent(b)*fs1dEBE[0][pe][3]->GetBinEntries(b),1.); 
20059     
20060     // to be improved (cross-checked):
20061     p1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
20062             * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
20063     p1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))  
20064             * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
20065             
20066     mp = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20067      
20068     t = 0; // typeFlag = RP or POI
20069     
20070     // M0111 from Eq. (118) in QC2c (to be improved (notation)):
20071     dM0111 = mp*(dSM3p1k-3.*dSM1p1k*dSM1p2k+2.*dSM1p3k)
20072            - 3.*(s1p1k*(dSM2p1k-dSM1p2k)
20073            + 2.*(s1p3k-s1p2k*dSM1p1k));
20074     //...............................................................................................   
20075    }
20076    
20077    // 2'-particle correlation:
20078    Double_t two1n1nW0W1 = 0.;
20079    if(mp*dSM1p1k-s1p1k)
20080    {
20081     two1n1nW0W1 = (p1n0kRe*dReQ1n1k+p1n0kIm*dImQ1n1k-s1p1k)
20082                 / (mp*dSM1p1k-s1p1k);
20083    
20084     // fill profile to get <<2'>>     
20085     fDiffFlowCorrelationsPro[t][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nW0W1,mp*dSM1p1k-s1p1k);    
20086     // fill profile to get <<2'>^2>     
20087     fDiffFlowSquaredCorrelationsPro[t][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nW0W1*two1n1nW0W1,mp*dSM1p1k-s1p1k);        
20088     // histogram to store <2'> e-b-e (needed in some other methods):
20089     fDiffFlowCorrelationsEBE[t][pe][0]->SetBinContent(b,two1n1nW0W1);      
20090     fDiffFlowEventWeightsForCorrelationsEBE[t][pe][0]->SetBinContent(b,mp*dSM1p1k-s1p1k);      
20091    } // end of if(mp*dSM1p1k-s1p1k)
20092    
20093    // 4'-particle correlation:
20094    Double_t four1n1n1n1nW0W1W1W1 = 0.;
20095    if(dM0111)
20096    {
20097     four1n1n1n1nW0W1W1W1 = ((pow(dReQ1n1k,2.)+pow(dImQ1n1k,2.))*(p1n0kRe*dReQ1n1k+p1n0kIm*dImQ1n1k)
20098                          - q2n1kRe*(pow(dReQ1n1k,2.)-pow(dImQ1n1k,2.))
20099                          - 2.*q2n1kIm*dReQ1n1k*dImQ1n1k
20100                          - p1n0kRe*(dReQ1n1k*dReQ2n2k+dImQ1n1k*dImQ2n2k)
20101                          + p1n0kIm*(dImQ1n1k*dReQ2n2k-dReQ1n1k*dImQ2n2k)
20102                          - 2.*dSM1p2k*(p1n0kRe*dReQ1n1k+p1n0kIm*dImQ1n1k)
20103                          - 2.*(pow(dReQ1n1k,2.)+pow(dImQ1n1k,2.))*s1p1k                                            
20104                          + 6.*(q1n2kRe*dReQ1n1k+q1n2kIm*dImQ1n1k)                                           
20105                          + 1.*(q2n1kRe*dReQ2n2k+q2n1kIm*dImQ2n2k)                         
20106                          + 2.*(p1n0kRe*dReQ1n3k+p1n0kIm*dImQ1n3k)                      
20107                          + 2.*s1p1k*dSM1p2k                                      
20108                          - 6.*s1p3k)        
20109                          / dM0111; // to be improved (notation of dM0111)
20110    
20111     // fill profile to get <<4'>>     
20112     fDiffFlowCorrelationsPro[t][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nW0W1W1W1,dM0111);    
20113     // fill profile to get <<4'>^2>     
20114     fDiffFlowSquaredCorrelationsPro[t][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nW0W1W1W1*four1n1n1n1nW0W1W1W1,dM0111);        
20115     // histogram to store <4'> e-b-e (needed in some other methods):
20116     fDiffFlowCorrelationsEBE[t][pe][1]->SetBinContent(b,four1n1n1n1nW0W1W1W1);      
20117     fDiffFlowEventWeightsForCorrelationsEBE[t][pe][1]->SetBinContent(b,dM0111);      
20118    } // end of if(dM0111)
20119  } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20120
20121 } // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrelationsUsingParticleWeights(TString type, TString ptOrEta); // type = RP or POI 
20122
20123 //=======================================================================================================================
20124
20125 void AliFlowAnalysisWithQCumulants::FillCommonControlHistograms(AliFlowEventSimple *anEvent)
20126 {
20127  // Fill common control histograms.
20128  
20129  Int_t nRP = anEvent->GetNumberOfRPs(); // number of Reference Particles 
20130  fCommonHists->FillControlHistograms(anEvent); 
20131  if(fFillMultipleControlHistograms)
20132  {
20133   if(nRP>1)
20134   {
20135    fCommonHists2nd->FillControlHistograms(anEvent);                                        
20136    if(nRP>3)
20137    {
20138     fCommonHists4th->FillControlHistograms(anEvent);                                        
20139     if(nRP>5)
20140     {
20141      fCommonHists6th->FillControlHistograms(anEvent);                                        
20142      if(nRP>7)
20143      {
20144       fCommonHists8th->FillControlHistograms(anEvent);                                        
20145      } // end of if(nRP>7)  
20146     } // end of if(nRP>5) 
20147    } // end of if(nRP>3)                                                                                                                      
20148   } // end of if(nRP>1) 
20149  } // end of if(fFillMultipleControlHistograms)
20150  
20151 } // end of void AliFlowAnalysisWithQCumulants::FillCommonControlHistograms(AliFlowEventSimple *anEvent)
20152
20153 //=======================================================================================================================
20154
20155 void AliFlowAnalysisWithQCumulants::FillControlHistograms(AliFlowEventSimple *anEvent)
20156 {
20157  // Fill common control histograms.
20158  
20159  Int_t nRPs = anEvent->GetNumberOfRPs(); // number of Reference Particles
20160  Int_t nPOIs = anEvent->GetNumberOfPOIs(); // number of Particles Of Interest
20161  Int_t nRefMult = anEvent->GetReferenceMultiplicity(); // reference multiplicity for current event (TBI: This call is not really needed here, use fReferenceMultiplicityEBE instead)
20162
20163  fCorrelationNoRPsVsRefMult->Fill(nRPs,nRefMult);
20164  fCorrelationNoPOIsVsRefMult->Fill(nPOIs,nRefMult);
20165  fCorrelationNoRPsVsNoPOIs->Fill(nRPs,nPOIs);
20166  
20167 } // end of void AliFlowAnalysisWithQCumulants::FillControlHistograms(AliFlowEventSimple *anEvent)
20168
20169 //=======================================================================================================================
20170
20171 void AliFlowAnalysisWithQCumulants::ResetEventByEventQuantities()
20172 {
20173  // Reset all event by event quantities.
20174  
20175  // Reference flow:
20176  fReQ->Zero();
20177  fImQ->Zero();
20178  fSpk->Zero();
20179  fIntFlowCorrelationsEBE->Reset();
20180  fIntFlowEventWeightsForCorrelationsEBE->Reset();
20181  fIntFlowCorrelationsAllEBE->Reset();
20182  
20183  for(Int_t sc=0;sc<2;sc++)
20184  {
20185   fIntFlowCorrectionTermsForNUAEBE[sc]->Reset();
20186   fIntFlowEventWeightForCorrectionTermsForNUAEBE[sc]->Reset(); 
20187  }
20188     
20189  // Differential flow:
20190  if(fCalculateDiffFlow)
20191  {
20192   for(Int_t t=0;t<3;t++) // type (RP, POI, POI&&RP)
20193   {
20194    for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // 1D in pt or eta
20195    {
20196     for(Int_t m=0;m<4;m++) // multiple of harmonic
20197     {
20198      for(Int_t k=0;k<9;k++) // power of weight
20199      {
20200       if(fReRPQ1dEBE[t][pe][m][k]) fReRPQ1dEBE[t][pe][m][k]->Reset();
20201       if(fImRPQ1dEBE[t][pe][m][k]) fImRPQ1dEBE[t][pe][m][k]->Reset();
20202      }   
20203     } 
20204    }
20205   } 
20206   for(Int_t t=0;t<3;t++) // type (0 = RP, 1 = POI, 2 = RP&&POI )
20207   { 
20208    for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // 1D in pt or eta
20209    {
20210     for(Int_t k=0;k<9;k++)
20211     {
20212      if(fs1dEBE[t][pe][k]) fs1dEBE[t][pe][k]->Reset();
20213     }
20214    }
20215   }
20216   // e-b-e reduced correlations:
20217   for(Int_t t=0;t<2;t++) // type (0 = RP, 1 = POI)
20218   {  
20219    for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
20220    {
20221     for(Int_t rci=0;rci<4;rci++) // reduced correlation index
20222     {
20223      if(fDiffFlowCorrelationsEBE[t][pe][rci]) fDiffFlowCorrelationsEBE[t][pe][rci]->Reset();
20224      if(fDiffFlowEventWeightsForCorrelationsEBE[t][pe][rci]) fDiffFlowEventWeightsForCorrelationsEBE[t][pe][rci]->Reset();
20225     }
20226    }
20227   }  
20228   // correction terms for NUA:
20229   for(Int_t t=0;t<2;t++) // type (0 = RP, 1 = POI)
20230   {  
20231    for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
20232    {
20233     for(Int_t sc=0;sc<2;sc++) // sin or cos
20234     {
20235      for(Int_t cti=0;cti<9;cti++) // correction term index
20236      {
20237      fDiffFlowCorrectionTermsForNUAEBE[t][pe][sc][cti]->Reset();  
20238      }
20239     }
20240    }      
20241   }
20242  } // end of if(fCalculateDiffFlow)   
20243
20244  // 2D (pt,eta)
20245  if(fCalculate2DDiffFlow)
20246  {
20247   for(Int_t t=0;t<3;t++) // type (RP, POI, POI&&RP)
20248   {
20249    for(Int_t m=0;m<4;m++) // multiple of harmonic
20250    {
20251     for(Int_t k=0;k<9;k++) // power of weight
20252     {
20253      if(fReRPQ2dEBE[t][m][k]){fReRPQ2dEBE[t][m][k]->Reset();}
20254      if(fImRPQ2dEBE[t][m][k]){fImRPQ2dEBE[t][m][k]->Reset();}
20255     }   
20256    }
20257   }
20258   for(Int_t t=0;t<3;t++) // type (0 = RP, 1 = POI, 2 = RP&&POI )
20259   { 
20260    for(Int_t k=0;k<9;k++)
20261    {
20262     if(fs2dEBE[t][k]){fs2dEBE[t][k]->Reset();}
20263    }
20264   }  
20265  } // end of if(fCalculate2DDiffFlow) 
20266
20267 } // end of void AliFlowAnalysisWithQCumulants::ResetEventByEventQuantities();
20268
20269 //=======================================================================================================================
20270
20271 void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUASinTerms(TString type, TString ptOrEta)
20272 {
20273  // Calculate correction terms for non-uniform acceptance for differential flow (sin terms).
20274  
20275  // Results are stored in fDiffFlowCorrectionTermsForNUAPro[t][pe][0][cti], where cti runs as follows:
20276  //  0: <<sin n(psi1)>>
20277  //  1: <<sin n(psi1+phi2)>>
20278  //  2: <<sin n(psi1+phi2-phi3)>>
20279  //  3: <<sin n(psi1-phi2-phi3)>>:
20280  //  4:
20281  //  5:
20282  //  6:
20283  
20284  // multiplicity:
20285  Double_t dMult = (*fSpk)(0,0);
20286  
20287  // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n: 
20288  Double_t dReQ1n = (*fReQ)(0,0);
20289  Double_t dReQ2n = (*fReQ)(1,0);
20290  //Double_t dReQ3n = (*fReQ)(2,0);
20291  //Double_t dReQ4n = (*fReQ)(3,0);
20292  Double_t dImQ1n = (*fImQ)(0,0);
20293  Double_t dImQ2n = (*fImQ)(1,0);
20294  //Double_t dImQ3n = (*fImQ)(2,0);
20295  //Double_t dImQ4n = (*fImQ)(3,0);
20296
20297  Int_t t = 0; // type flag 
20298  Int_t pe = 0; // ptEta flag
20299  
20300  if(type == "RP")
20301  {
20302   t = 0;
20303  } else if(type == "POI")
20304    {
20305     t = 1;
20306    }
20307
20308  if(ptOrEta == "Pt")
20309  {
20310   pe = 0;
20311  } else if(ptOrEta == "Eta")
20312    {
20313     pe = 1;
20314    }
20315     
20316  Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
20317  Double_t minPtEta[2] = {fPtMin,fEtaMin};
20318  //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
20319  Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
20320
20321  // looping over all bins and calculating correction terms: 
20322  for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20323  {
20324   // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin): 
20325   Double_t p1n0kRe = 0.;
20326   Double_t p1n0kIm = 0.;
20327
20328   // number of POIs in particular pt or eta bin:
20329   Double_t mp = 0.;
20330
20331   // real and imaginary parts of q_{m*n,0} (non-weighted Q-vector evaluated for particles which are both RPs and POIs in particular pt or eta bin):
20332   Double_t q1n0kRe = 0.;
20333   Double_t q1n0kIm = 0.;
20334   Double_t q2n0kRe = 0.;
20335   Double_t q2n0kIm = 0.;
20336
20337   // number of particles which are both RPs and POIs in particular pt or eta bin:
20338   Double_t mq = 0.;
20339    
20340   if(type == "POI")
20341   {
20342    // q_{m*n,0}:
20343    q1n0kRe = fReRPQ1dEBE[2][pe][0][0]->GetBinContent(fReRPQ1dEBE[2][pe][0][0]->GetBin(b))
20344            * fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b));
20345    q1n0kIm = fImRPQ1dEBE[2][pe][0][0]->GetBinContent(fImRPQ1dEBE[2][pe][0][0]->GetBin(b))
20346            * fImRPQ1dEBE[2][pe][0][0]->GetBinEntries(fImRPQ1dEBE[2][pe][0][0]->GetBin(b));
20347    q2n0kRe = fReRPQ1dEBE[2][pe][1][0]->GetBinContent(fReRPQ1dEBE[2][pe][1][0]->GetBin(b))
20348            * fReRPQ1dEBE[2][pe][1][0]->GetBinEntries(fReRPQ1dEBE[2][pe][1][0]->GetBin(b));
20349    q2n0kIm = fImRPQ1dEBE[2][pe][1][0]->GetBinContent(fImRPQ1dEBE[2][pe][1][0]->GetBin(b))
20350            * fImRPQ1dEBE[2][pe][1][0]->GetBinEntries(fImRPQ1dEBE[2][pe][1][0]->GetBin(b));         
20351                  
20352    mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20353   } 
20354   else if(type == "RP")
20355   {
20356    // q_{m*n,0}:
20357    q1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
20358            * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
20359    q1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
20360            * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
20361    q2n0kRe = fReRPQ1dEBE[0][pe][1][0]->GetBinContent(fReRPQ1dEBE[0][pe][1][0]->GetBin(b))
20362            * fReRPQ1dEBE[0][pe][1][0]->GetBinEntries(fReRPQ1dEBE[0][pe][1][0]->GetBin(b));
20363    q2n0kIm = fImRPQ1dEBE[0][pe][1][0]->GetBinContent(fImRPQ1dEBE[0][pe][1][0]->GetBin(b))
20364            * fImRPQ1dEBE[0][pe][1][0]->GetBinEntries(fImRPQ1dEBE[0][pe][1][0]->GetBin(b));         
20365                  
20366    mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)  
20367   }    
20368   if(type == "POI")
20369   {
20370    // p_{m*n,0}:
20371    p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
20372            * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
20373    p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))  
20374            * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
20375             
20376    mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20377     
20378    t = 1; // typeFlag = RP or POI
20379   }
20380   else if(type == "RP")
20381   {
20382    // p_{m*n,0} = q_{m*n,0}:
20383    p1n0kRe = q1n0kRe; 
20384    p1n0kIm = q1n0kIm; 
20385            
20386    mp = mq; 
20387    
20388    t = 0; // typeFlag = RP or POI
20389   }
20390
20391   // <<sin n(psi1)>>:
20392   Double_t sinP1nPsi = 0.;
20393   if(mp)
20394   {
20395    sinP1nPsi = p1n0kIm/mp;
20396    // fill profile for <<sin n(psi1)>>:
20397    fDiffFlowCorrectionTermsForNUAPro[t][pe][0][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi,mp);
20398    // histogram to store <sin n(psi1)> e-b-e (needed in some other methods):
20399    fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][0]->SetBinContent(b,sinP1nPsi);
20400   } // end of if(mp)   
20401   
20402   // <<sin n(psi1+phi2)>>:
20403   Double_t sinP1nPsiP1nPhi = 0.;
20404   if(mp*dMult-mq)
20405   {
20406    sinP1nPsiP1nPhi = (p1n0kRe*dImQ1n+p1n0kIm*dReQ1n-q2n0kIm)/(mp*dMult-mq);
20407    // fill profile for <<sin n(psi1+phi2)>>:
20408    fDiffFlowCorrectionTermsForNUAPro[t][pe][0][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsiP1nPhi,mp*dMult-mq);
20409    // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20410    fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][1]->SetBinContent(b,sinP1nPsiP1nPhi);
20411   } // end of if(mp*dMult-mq)   
20412   
20413   // <<sin n(psi1+phi2-phi3)>>:
20414   Double_t sinP1nPsi1P1nPhi2MPhi3 = 0.;
20415   if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20416   {
20417    sinP1nPsi1P1nPhi2MPhi3 = (p1n0kIm*(pow(dImQ1n,2.)+pow(dReQ1n,2.)-dMult)
20418                           - 1.*(q2n0kIm*dReQ1n-q2n0kRe*dImQ1n)  
20419                           - mq*dImQ1n+2.*q1n0kIm)
20420                           / (mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20421    // fill profile for <<sin n(psi1+phi2)>>:
20422    fDiffFlowCorrectionTermsForNUAPro[t][pe][0][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi1P1nPhi2MPhi3,mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20423    // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20424    fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][2]->SetBinContent(b,sinP1nPsi1P1nPhi2MPhi3);
20425   } // end of if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))   
20426   
20427   // <<sin n(psi1-phi2-phi3)>>:
20428   Double_t sinP1nPsi1M1nPhi2MPhi3 = 0.;
20429   if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20430   {
20431    sinP1nPsi1M1nPhi2MPhi3 = (p1n0kIm*(pow(dReQ1n,2.)-pow(dImQ1n,2.))-2.*p1n0kRe*dReQ1n*dImQ1n
20432                           - 1.*(p1n0kIm*dReQ2n-p1n0kRe*dImQ2n)
20433                           + 2.*mq*dImQ1n-2.*q1n0kIm)
20434                           / (mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20435    // fill profile for <<sin n(psi1+phi2)>>:
20436    fDiffFlowCorrectionTermsForNUAPro[t][pe][0][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi1M1nPhi2MPhi3,mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20437    // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20438    fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][3]->SetBinContent(b,sinP1nPsi1M1nPhi2MPhi3);
20439   } // end of if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))   
20440  } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20441  
20442 } // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUASinTerms(TString type, TString ptOrEta)
20443
20444
20445 //=======================================================================================================================
20446
20447
20448 void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUACosTerms(TString type, TString ptOrEta)
20449 {
20450  // Calculate correction terms for non-uniform acceptance for differential flow (cos terms).
20451  
20452  // Results are stored in fDiffFlowCorrectionTermsForNUAPro[t][pe][1][cti], where cti runs as follows:
20453  //  0: <<cos n(psi)>>
20454  //  1: <<cos n(psi1+phi2)>>
20455  //  2: <<cos n(psi1+phi2-phi3)>>
20456  //  3: <<cos n(psi1-phi2-phi3)>>
20457  //  4:
20458  //  5:
20459  //  6:
20460  
20461  // multiplicity:
20462  Double_t dMult = (*fSpk)(0,0);
20463  
20464  // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n: 
20465  Double_t dReQ1n = (*fReQ)(0,0);
20466  Double_t dReQ2n = (*fReQ)(1,0);
20467  //Double_t dReQ3n = (*fReQ)(2,0);
20468  //Double_t dReQ4n = (*fReQ)(3,0);
20469  Double_t dImQ1n = (*fImQ)(0,0);
20470  Double_t dImQ2n = (*fImQ)(1,0);
20471  //Double_t dImQ3n = (*fImQ)(2,0);
20472  //Double_t dImQ4n = (*fImQ)(3,0);
20473
20474  Int_t t = 0; // type flag 
20475  Int_t pe = 0; // ptEta flag
20476  
20477  if(type == "RP")
20478  {
20479   t = 0;
20480  } else if(type == "POI")
20481    {
20482     t = 1;
20483    }
20484
20485  if(ptOrEta == "Pt")
20486  {
20487   pe = 0;
20488  } else if(ptOrEta == "Eta")
20489    {
20490     pe = 1;
20491    }
20492     
20493  Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
20494  Double_t minPtEta[2] = {fPtMin,fEtaMin};
20495  //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
20496  Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
20497
20498  // looping over all bins and calculating correction terms: 
20499  for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20500  {
20501   // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin): 
20502   Double_t p1n0kRe = 0.;
20503   Double_t p1n0kIm = 0.;
20504
20505   // number of POIs in particular pt or eta bin:
20506   Double_t mp = 0.;
20507
20508   // real and imaginary parts of q_{m*n,0} (non-weighted Q-vector evaluated for particles which are both RPs and POIs in particular pt or eta bin):
20509   Double_t q1n0kRe = 0.;
20510   Double_t q1n0kIm = 0.;
20511   Double_t q2n0kRe = 0.;
20512   Double_t q2n0kIm = 0.;
20513
20514   // number of particles which are both RPs and POIs in particular pt or eta bin:
20515   Double_t mq = 0.;
20516    
20517   if(type == "POI")
20518   {
20519    // q_{m*n,0}:
20520    q1n0kRe = fReRPQ1dEBE[2][pe][0][0]->GetBinContent(fReRPQ1dEBE[2][pe][0][0]->GetBin(b))
20521            * fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b));
20522    q1n0kIm = fImRPQ1dEBE[2][pe][0][0]->GetBinContent(fImRPQ1dEBE[2][pe][0][0]->GetBin(b))
20523            * fImRPQ1dEBE[2][pe][0][0]->GetBinEntries(fImRPQ1dEBE[2][pe][0][0]->GetBin(b));
20524    q2n0kRe = fReRPQ1dEBE[2][pe][1][0]->GetBinContent(fReRPQ1dEBE[2][pe][1][0]->GetBin(b))
20525            * fReRPQ1dEBE[2][pe][1][0]->GetBinEntries(fReRPQ1dEBE[2][pe][1][0]->GetBin(b));
20526    q2n0kIm = fImRPQ1dEBE[2][pe][1][0]->GetBinContent(fImRPQ1dEBE[2][pe][1][0]->GetBin(b))
20527            * fImRPQ1dEBE[2][pe][1][0]->GetBinEntries(fImRPQ1dEBE[2][pe][1][0]->GetBin(b));         
20528                  
20529    mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20530   } 
20531   else if(type == "RP")
20532   {
20533    // q_{m*n,0}:
20534    q1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
20535            * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
20536    q1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
20537            * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
20538    q2n0kRe = fReRPQ1dEBE[0][pe][1][0]->GetBinContent(fReRPQ1dEBE[0][pe][1][0]->GetBin(b))
20539            * fReRPQ1dEBE[0][pe][1][0]->GetBinEntries(fReRPQ1dEBE[0][pe][1][0]->GetBin(b));
20540    q2n0kIm = fImRPQ1dEBE[0][pe][1][0]->GetBinContent(fImRPQ1dEBE[0][pe][1][0]->GetBin(b))
20541            * fImRPQ1dEBE[0][pe][1][0]->GetBinEntries(fImRPQ1dEBE[0][pe][1][0]->GetBin(b));         
20542                  
20543    mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)  
20544   }    
20545   if(type == "POI")
20546   {
20547    // p_{m*n,0}:
20548    p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
20549            * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
20550    p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))  
20551            * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
20552             
20553    mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20554     
20555    t = 1; // typeFlag = RP or POI
20556   }
20557   else if(type == "RP")
20558   {
20559    // p_{m*n,0} = q_{m*n,0}:
20560    p1n0kRe = q1n0kRe; 
20561    p1n0kIm = q1n0kIm; 
20562            
20563    mp = mq; 
20564    
20565    t = 0; // typeFlag = RP or POI
20566   }
20567
20568   // <<cos n(psi1)>>:
20569   Double_t cosP1nPsi = 0.;
20570   if(mp)
20571   {
20572    cosP1nPsi = p1n0kRe/mp;
20573    
20574    // fill profile for <<cos n(psi1)>>:
20575    fDiffFlowCorrectionTermsForNUAPro[t][pe][1][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi,mp);
20576    // histogram to store <cos n(psi1)> e-b-e (needed in some other methods):
20577    fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][0]->SetBinContent(b,cosP1nPsi);
20578   } // end of if(mp)   
20579   
20580   // <<cos n(psi1+phi2)>>:
20581   Double_t cosP1nPsiP1nPhi = 0.;
20582   if(mp*dMult-mq)
20583   {
20584    cosP1nPsiP1nPhi = (p1n0kRe*dReQ1n-p1n0kIm*dImQ1n-q2n0kRe)/(mp*dMult-mq);
20585    // fill profile for <<sin n(psi1+phi2)>>:
20586    fDiffFlowCorrectionTermsForNUAPro[t][pe][1][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsiP1nPhi,mp*dMult-mq);
20587    // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20588    fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][1]->SetBinContent(b,cosP1nPsiP1nPhi);
20589   } // end of if(mp*dMult-mq)   
20590   
20591   // <<cos n(psi1+phi2-phi3)>>:
20592   Double_t cosP1nPsi1P1nPhi2MPhi3 = 0.;
20593   if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20594   {
20595    cosP1nPsi1P1nPhi2MPhi3 = (p1n0kRe*(pow(dImQ1n,2.)+pow(dReQ1n,2.)-dMult)
20596                           - 1.*(q2n0kRe*dReQ1n+q2n0kIm*dImQ1n)  
20597                           - mq*dReQ1n+2.*q1n0kRe)
20598                           / (mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20599    // fill profile for <<sin n(psi1+phi2)>>:
20600    fDiffFlowCorrectionTermsForNUAPro[t][pe][1][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi1P1nPhi2MPhi3,mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20601    // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20602    fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][2]->SetBinContent(b,cosP1nPsi1P1nPhi2MPhi3);
20603   } // end of if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))   
20604   
20605   // <<cos n(psi1-phi2-phi3)>>:
20606   Double_t cosP1nPsi1M1nPhi2MPhi3 = 0.;
20607   if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20608   {
20609    cosP1nPsi1M1nPhi2MPhi3 = (p1n0kRe*(pow(dReQ1n,2.)-pow(dImQ1n,2.))+2.*p1n0kIm*dReQ1n*dImQ1n
20610                           - 1.*(p1n0kRe*dReQ2n+p1n0kIm*dImQ2n)  
20611                           - 2.*mq*dReQ1n+2.*q1n0kRe)
20612                           / (mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20613    // fill profile for <<sin n(psi1+phi2)>>:
20614    fDiffFlowCorrectionTermsForNUAPro[t][pe][1][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi1M1nPhi2MPhi3,mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20615    // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20616    fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][3]->SetBinContent(b,cosP1nPsi1M1nPhi2MPhi3);
20617   } // end of if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))   
20618  } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20619  
20620 } // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUACosTerms(TString type, TString ptOrEta)
20621
20622 //=========================================================================================================================
20623
20624 void AliFlowAnalysisWithQCumulants::FinalizeCorrectionTermsForNUADiffFlow(TString type, TString ptOrEta)
20625 {
20626  // Transfer profiles into histogams and correctly propagate the error.
20627  
20628  Int_t t = 0; // type flag 
20629  Int_t pe = 0; // ptEta flag
20630  
20631  if(type == "RP")
20632  {
20633   t = 0;
20634  } else if(type == "POI")
20635    {
20636     t = 1;
20637    }
20638
20639  if(ptOrEta == "Pt")
20640  {
20641   pe = 0;
20642  } else if(ptOrEta == "Eta")
20643    {
20644     pe = 1;
20645    }
20646     
20647  Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
20648  //Double_t minPtEta[2] = {fPtMin,fEtaMin};
20649  //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
20650  //Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
20651
20652  for(Int_t sc=0;sc<2;sc++) // sin or cos
20653  {
20654   for(Int_t cti=0;cti<9;cti++) // correction term index
20655   {
20656    for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20657    {
20658     Double_t correctionTerm = fDiffFlowCorrectionTermsForNUAPro[t][pe][sc][cti]->GetBinContent(b);
20659     fDiffFlowCorrectionTermsForNUAHist[t][pe][sc][cti]->SetBinContent(b,correctionTerm);
20660     // to be improved (propagate error correctly)
20661     // ...
20662    } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20663   } // correction term index
20664  } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
20665
20666 }// end of void AliFlowAnalysisWithQCumulants::FinalizeCorrectionTermsForNUADiffFlow(TString type, TString ptOrEta)
20667
20668 //=========================================================================================================================
20669
20670 void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCumulantsCorrectedForNUA(TString type, TString ptOrEta)
20671
20672  // Calculate generalized differential flow cumulants (corrected for non-uniform acceptance).
20673  
20674  // to be improved - propagate error also from non-isotropic terms
20675   
20676  Int_t t = 0; // RP = 0, POI = 1
20677  Int_t pe = 0; // pt = 0, eta = 1
20678
20679  if(type == "RP")
20680  {
20681   t = 0;
20682  } else if(type == "POI")
20683    {
20684     t = 1;
20685    } 
20686      
20687  if(ptOrEta == "Pt")
20688  {
20689   pe = 0;
20690  } else if(ptOrEta == "Eta")
20691    {
20692     pe = 1;
20693    } 
20694        
20695  // Common:
20696  Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
20697  // 2-particle correlation:
20698  Double_t two = fIntFlowCorrelationsHist->GetBinContent(1); // <<2>>
20699  // sinus terms coming from reference flow: 
20700  Double_t sinP1nPhi = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(1); // <<sin(n*phi1)>>
20701  Double_t sinP1nPhi1P1nPhi2 = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(2); // <<sin(n*(phi1+phi2))>>
20702  Double_t sinP1nPhi1M1nPhi2M1nPhi3 = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(3); // <<sin(n*(phi1-phi2-phi3))>>
20703  // cosinus terms coming from reference flow: 
20704  Double_t cosP1nPhi = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(1); // <<cos(n*phi1)>>
20705  Double_t cosP1nPhi1P1nPhi2 = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(2); // <<cos(n*(phi1+phi2))>>
20706  Double_t cosP1nPhi1M1nPhi2M1nPhi3 = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(3); // <<cos(n*(phi1-phi2-phi3))>>
20707
20708  for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20709  {
20710   Double_t twoPrime = fDiffFlowCorrelationsHist[t][pe][0]->GetBinContent(b); // <<2'>>
20711   Double_t fourPrime = fDiffFlowCorrelationsHist[t][pe][1]->GetBinContent(b); // <<4'>>
20712   Double_t sinP1nPsi = fDiffFlowCorrectionTermsForNUAHist[t][pe][0][0]->GetBinContent(b); // <<sin n(Psi)>> 
20713   Double_t cosP1nPsi = fDiffFlowCorrectionTermsForNUAHist[t][pe][1][0]->GetBinContent(b); // <<cos n(Psi)>> 
20714   Double_t sinP1nPsi1P1nPhi2 = fDiffFlowCorrectionTermsForNUAHist[t][pe][0][1]->GetBinContent(b); // <<sin n(psi1+phi2)>> 
20715   Double_t cosP1nPsi1P1nPhi2 = fDiffFlowCorrectionTermsForNUAHist[t][pe][1][1]->GetBinContent(b); // <<cos n(psi1+phi2)>> 
20716   Double_t sinP1nPsi1P1nPhi2M1nPhi3 = fDiffFlowCorrectionTermsForNUAHist[t][pe][0][2]->GetBinContent(b); // <<sin n(psi1+phi2-phi3)>> 
20717   Double_t cosP1nPsi1P1nPhi2M1nPhi3 = fDiffFlowCorrectionTermsForNUAHist[t][pe][1][2]->GetBinContent(b); // <<cos n(psi1+phi2-phi3)>> 
20718   Double_t sinP1nPsi1M1nPhi2M1nPhi3 = fDiffFlowCorrectionTermsForNUAHist[t][pe][0][3]->GetBinContent(b); // <<sin n(psi1-phi2-phi3)>> 
20719   Double_t cosP1nPsi1M1nPhi2M1nPhi3 = fDiffFlowCorrectionTermsForNUAHist[t][pe][1][3]->GetBinContent(b); // <<cos n(psi1-phi2-phi3)>> 
20720   // Generalized QC{2'}:
20721   Double_t qc2Prime = twoPrime - sinP1nPsi*sinP1nPhi - cosP1nPsi*cosP1nPhi;
20722   if(fApplyCorrectionForNUA)
20723   {
20724    fDiffFlowCumulants[t][pe][0]->SetBinContent(b,qc2Prime);
20725   }
20726   if(TMath::Abs(twoPrime)>0.)
20727   {
20728    fDiffFlowDetectorBias[t][pe][0]->SetBinContent(b,qc2Prime/twoPrime); // detector bias = generalized/isotropic cumulant.   
20729   }
20730   // Generalized QC{4'}:
20731   Double_t qc4Prime = fourPrime-2.*twoPrime*two
20732                     - cosP1nPsi*cosP1nPhi1M1nPhi2M1nPhi3
20733                     + sinP1nPsi*sinP1nPhi1M1nPhi2M1nPhi3
20734                     - cosP1nPhi*cosP1nPsi1M1nPhi2M1nPhi3
20735                     + sinP1nPhi*sinP1nPsi1M1nPhi2M1nPhi3
20736                     - 2.*cosP1nPhi*cosP1nPsi1P1nPhi2M1nPhi3
20737                     - 2.*sinP1nPhi*sinP1nPsi1P1nPhi2M1nPhi3
20738                     - cosP1nPsi1P1nPhi2*cosP1nPhi1P1nPhi2
20739                     - sinP1nPsi1P1nPhi2*sinP1nPhi1P1nPhi2
20740                     + 2.*cosP1nPhi1P1nPhi2*(cosP1nPsi*cosP1nPhi-sinP1nPsi*sinP1nPhi)
20741                     + 2.*sinP1nPhi1P1nPhi2*(cosP1nPsi*sinP1nPhi+sinP1nPsi*cosP1nPhi)
20742                     + 4.*two*(cosP1nPsi*cosP1nPhi+sinP1nPsi*sinP1nPhi)
20743                     + 2.*cosP1nPsi1P1nPhi2*(pow(cosP1nPhi,2.)-pow(sinP1nPhi,2.))
20744                     + 4.*sinP1nPsi1P1nPhi2*cosP1nPhi*sinP1nPhi
20745                     + 4.*twoPrime*(pow(cosP1nPhi,2.)+pow(sinP1nPhi,2.))
20746                     - 6.*(pow(cosP1nPhi,2.)-pow(sinP1nPhi,2.)) 
20747                     * (cosP1nPsi*cosP1nPhi-sinP1nPsi*sinP1nPhi)
20748                     - 12.*cosP1nPhi*sinP1nPhi
20749                     * (sinP1nPsi*cosP1nPhi+cosP1nPsi*sinP1nPhi);
20750   if(fApplyCorrectionForNUA)
20751   {
20752    fDiffFlowCumulants[t][pe][1]->SetBinContent(b,qc4Prime);   
20753   }
20754   if(TMath::Abs(fourPrime-2.*twoPrime*two)>0.)
20755   {
20756    fDiffFlowDetectorBias[t][pe][1]->SetBinContent(b,qc4Prime/(fourPrime-2.*twoPrime*two)); // detector bias = generalized/isotropic cumulant.   
20757   }
20758  } // end of for(Int_t p=1;p<=fnBinsPt;p++)
20759  
20760 } // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlowCumulantsCorrectedForNUA(TString type, TString ptOrEta)
20761
20762 //==================================================================================================================================    
20763
20764 void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectedForNUA(TString type, TString ptOrEta)
20765 {
20766  // Calculate differential flow corrected for non-uniform acceptance.
20767  
20768  // to be improved: eventually I will have to access here masured correlations and NUA terms
20769  //                 instead of cumulants in order to propagate statistical error correctly also 
20770  //                 to NUA terms (propagating errors directly from cumulants is WRONG for 
20771  //                 differential flow becuase that doesn't account at all cross-covariance terms) 
20772  
20773  // REMARK: When NUA correction is apllied error for differential flow DOES NOT get corrected,
20774  //         i.e. only value is being corrected, error is still the one relevant for isotropic
20775  //         case. This eventually will be resolved. 
20776   
20777  
20778  Int_t t = 0; // RP or POI
20779  Int_t pe = 0; // pt or eta
20780
20781  if(type == "RP")
20782  {
20783   t = 0;
20784  } else if(type == "POI")
20785    {
20786     t = 1;
20787    }     
20788  if(ptOrEta == "Pt")
20789  {
20790   pe = 0;
20791  } else if(ptOrEta == "Eta")
20792    {
20793     pe = 1;
20794    } 
20795   
20796  // Common:
20797  Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
20798  // Reference Q-cumulants
20799  Double_t qc2 = fIntFlowQcumulants->GetBinContent(1); // QC{2} 
20800  Double_t qc4 = fIntFlowQcumulants->GetBinContent(2); // QC{4}
20801  // Loop over pt or eta bins:
20802  for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20803  {
20804   // Differential Q-cumulants:
20805   Double_t qc2Prime = fDiffFlowCumulants[t][pe][0]->GetBinContent(b); // QC{2'}
20806   Double_t qc4Prime = fDiffFlowCumulants[t][pe][1]->GetBinContent(b); // QC{4'}
20807   // v'{2}:
20808   if(qc2>0.)
20809   { 
20810    Double_t v2Prime = qc2Prime/pow(qc2,0.5);
20811    if(TMath::Abs(v2Prime)>0.){fDiffFlow[t][pe][0]->SetBinContent(b,v2Prime);} 
20812   }  
20813   // v'{4}:
20814   if(qc4<0.)
20815   { 
20816    Double_t v4Prime = -qc4Prime/pow(-qc4,3./4.);
20817    if(TMath::Abs(v4Prime)>0.){fDiffFlow[t][pe][1]->SetBinContent(b,v4Prime);} 
20818   }  
20819  } // end of for(Int_t b=1;b<=fnBinsPtEta[pe];b++)
20820   
20821 } // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectedForNUA(TString type, TString ptOrEta); 
20822
20823 //=========================================================================================================================
20824
20825 void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrelationsWithNestedLoops(AliFlowEventSimple * const anEvent)
20826 {
20827  // Evaluate with nested loops multiparticle correlations for integrated flow (without using the particle weights). 
20828
20829  // Remark: Results are stored in profile fIntFlowDirectCorrelations whose binning is organized as follows:
20830  // 
20831  //  1st bin: <2>_{1n|1n} = two1n1n = cos(n*(phi1-phi2))>
20832  //  2nd bin: <2>_{2n|2n} = two2n2n = cos(2n*(phi1-phi2))>
20833  //  3rd bin: <2>_{3n|3n} = two3n3n = cos(3n*(phi1-phi2))> 
20834  //  4th bin: <2>_{4n|4n} = two4n4n = cos(4n*(phi1-phi2))>
20835  //  5th bin:           ----  EMPTY ----
20836  //  6th bin: <3>_{2n|1n,1n} = three2n1n1n = <cos(n*(2.*phi1-phi2-phi3))>
20837  //  7th bin: <3>_{3n|2n,1n} = three3n2n1n = <cos(n*(3.*phi1-2.*phi2-phi3))>
20838  //  8th bin: <3>_{4n|2n,2n} = three4n2n2n = <cos(n*(4.*phi1-2.*phi2-2.*phi3))>
20839  //  9th bin: <3>_{4n|3n,1n} = three4n3n1n = <cos(n*(4.*phi1-3.*phi2-phi3))>
20840  // 10th bin:           ----  EMPTY ----
20841  // 11th bin: <4>_{1n,1n|1n,1n} = four1n1n1n1n = <cos(n*(phi1+phi2-phi3-phi4))>
20842  // 12th bin: <4>_{2n,1n|2n,1n} = four2n1n2n1n = <cos(2.*n*(phi1+phi2-phi3-phi4))>
20843  // 13th bin: <4>_{2n,2n|2n,2n} = four2n2n2n2n = <cos(n*(2.*phi1+phi2-2.*phi3-phi4))>
20844  // 14th bin: <4>_{3n|1n,1n,1n} = four3n1n1n1n = <cos(n*(3.*phi1-phi2-phi3-phi4))> 
20845  // 15th bin: <4>_{3n,1n|3n,1n} = four3n1n3n1n = <cos(n*(4.*phi1-2.*phi2-phi3-phi4))>
20846  // 16th bin: <4>_{3n,1n|2n,2n} = four3n1n2n2n = <cos(n*(3.*phi1+phi2-2.*phi3-2.*phi4))>
20847  // 17th bin: <4>_{4n|2n,1n,1n} = four4n2n1n1n = <cos(n*(3.*phi1+phi2-3.*phi3-phi4))> 
20848  // 18th bin:           ----  EMPTY ----
20849  // 19th bin: <5>_{2n|1n,1n,1n,1n} = five2n1n1n1n1n = <cos(n*(2.*phi1+phi2-phi3-phi4-phi5))>
20850  // 20th bin: <5>_{2n,2n|2n,1n,1n} = five2n2n2n1n1n = <cos(n*(2.*phi1+2.*phi2-2.*phi3-phi4-phi5))>
20851  // 21st bin: <5>_{3n,1n|2n,1n,1n} = five3n1n2n1n1n = <cos(n*(3.*phi1+phi2-2.*phi3-phi4-phi5))>
20852  // 22nd bin: <5>_{4n|1n,1n,1n,1n} = five4n1n1n1n1n = <cos(n*(4.*phi1-phi2-phi3-phi4-phi5))>
20853  // 23rd bin:           ----  EMPTY ----
20854  // 24th bin: <6>_{1n,1n,1n|1n,1n,1n} = six1n1n1n1n1n1n = <cos(n*(phi1+phi2+phi3-phi4-phi5-phi6))>
20855  // 25th bin: <6>_{2n,1n,1n|2n,1n,1n} = six2n1n1n2n1n1n = <cos(n*(2.*phi1+2.*phi2-phi3-phi4-phi5-phi6))>
20856  // 26th bin: <6>_{2n,2n|1n,1n,1n,1n} = six2n2n1n1n1n1n = <cos(n*(3.*phi1+phi2-phi3-phi4-phi5-phi6))>
20857  // 27th bin: <6>_{3n,1n|1n,1n,1n,1n} = six3n1n1n1n1n1n = <cos(n*(2.*phi1+phi2+phi3-2.*phi4-phi5-phi6))>
20858  // 28th bin:           ----  EMPTY ----
20859  // 29th bin: <7>_{2n,1n,1n|1n,1n,1n,1n} = seven2n1n1n1n1n1n1n =  <cos(n*(2.*phi1+phi2+phi3-phi4-phi5-phi6-phi7))>
20860  // 30th bin:           ----  EMPTY ----
20861  // 31st bin: <8>_{1n,1n,1n,1n|1n,1n,1n,1n} = eight1n1n1n1n1n1n1n1n = <cos(n*(phi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8))>
20862  // 32nd bin:           ----  EMPTY ----
20863   //  Extra correlations for 3p TY study: 
20864  // 33rd bin: <4>_{4n,2n|3n,3n}= four4n2n3n3n = <cos(n*(4.*phi1+2.*phi2-3.*phi3-3.*phi4))>
20865  // 34th bin: <5>_{3n,3n|2n,2n,2n} = five3n3n2n2n2n = <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-2*phi5))> 
20866   //  Extra correlations for 6p TY study: 
20867  // 35th bin: <2>_{5n|5n} = two5n5n = <cos(5n*(phi1-phi2)> T
20868  // 36th bin: <2>_{6n|6n} = two6n6n = <cos(6n*(phi1-phi2)> T
20869  // 37th bin: <3>_{5n|3n,2n} = three5n3n2n = <cos(n*(5*phi1-3*phi2-2*phi3)> 
20870  // 38th bin: <3>_{5n|4n,1n} = three5n4n1n = <cos(n*(5*phi1-4*phi2-1*phi3)> 
20871  // 39th bin: <3>_{6n|3n,3n} = three6n3n3n = <cos(n*(6*phi1-3*phi2-3*phi3)> T 
20872  // 40th bin: <3>_{6n|4n,2n} = three6n4n2n = <cos(n*(6*phi1-4*phi2-2*phi3)> T
20873  // 41st bin: <3>_{6n|5n,1n} = three6n5n1n = <cos(n*(6*phi1-5*phi2-1*phi3)>
20874  // 42nd bin: <4>_{6n|3n,2n,1n} = four6n3n2n1n = <cos(n*(6*phi1-3*phi2-2*phi3-1*phi4)>
20875  // 43rd bin: <4>_{3n,2n|3n,2n} = four3n2n3n2n = <cos(n*(3*phi1+2*phi2-3*phi3-2*phi4)>
20876  // 44th bin: <4>_{4n,1n|3n,2n} = four4n1n3n2n = <cos(n*(4*phi1+1*phi2-3*phi3-2*phi4)>
20877  // 45th bin: <4>_{3n,3n|3n,3n} = four3n3n3n3n = <cos(3.*n*(phi1+phi2-phi3-phi4))> T
20878  // 46th bin: <4>_{4n,2n|3n,3n} = four4n2n3n3n = <cos(n*(4*phi1+2*phi2-3*phi3-3*phi4)>
20879  // 47th bin: <4>_{5n,1n|3n,3n} = four5n1n3n3n = <cos(n*(5*phi1+1*phi2-3*phi3-3*phi4)>
20880  // 48th bin: <4>_{4n,2n|4n,2n} = four4n2n4n2n = <cos(n*(4*phi1+2*phi2-4*phi3-2*phi4)> T
20881  // 49th bin: <4>_{5n,1n|4n,2n} = four5n1n4n2n = <cos(n*(5*phi1+1*phi2-4*phi3-2*phi4)>
20882  // 50th bin: <4>_{5n|3n,1n,1n} = four5n3n1n1n = <cos(n*(5*phi1-3*phi2-1*phi3-1*phi4)>
20883  // 51st bin: <4>_{5n|2n,2n,1n} = four5n2n2n1n = <cos(n*(5*phi1-2*phi2-2*phi3-1*phi4)>
20884  // 52nd bin: <4>_{5n,1n|5n,1n} = four5n1n5n1n = <cos(n*(5*phi1+1*phi2-5*phi3-1*phi4)>
20885  // 53rd bin: <5>_{3n,3n|3n,2n,1n} = four3n3n3n2n1n = <cos(n*(3*phi1+3*phi2-3*phi3-2*phi4-1*phi5)>
20886  // 54th bin: <5>_{4n,2n|3n,2n,1n} = four4n2n3n2n1n = <cos(n*(4*phi1+2*phi2-3*phi3-2*phi4-1*phi5)>
20887  // 55th bin: <5>_{3n,2n|3n,1n,1n} = four3n2n3n1n1n = <cos(n*(3*phi1+2*phi2-3*phi3-1*phi4-1*phi5)>
20888  // 56th bin: <5>_{3n,2n|2n,2n,1n} = four3n2n2n2n1n = <cos(n*(3*phi1+2*phi2-2*phi3-2*phi4-1*phi5)>
20889  // 57th bin: <5>_{5n,1n|3n,2n,1n} = four5n1n3n2n1n = <cos(n*(5*phi1+1*phi2-3*phi3-2*phi4-1*phi5)>
20890  // 58th bin: <6>_{3n,2n,1n|3n,2n,1n} = six3n2n1n3n2n1n = <cos(n*(3*phi1+2*phi2+1*phi3-3*phi4-2*phi5-1*phi6)>
20891   
20892  Int_t nPrim = anEvent->NumberOfTracks(); 
20893  AliFlowTrackSimple *aftsTrack = NULL; 
20894  Double_t phi1=0., phi2=0., phi3=0., phi4=0., phi5=0., phi6=0., phi7=0., phi8=0.; 
20895  Int_t n = fHarmonic; 
20896  Int_t eventNo = (Int_t)fAvMultiplicity->GetBinEntries(1); // to be improved (is this casting safe in general?)
20897  Double_t dMult = (*fSpk)(0,0);
20898  cout<<endl;
20899  cout<<"Multiparticle correlations: Event number: "<<eventNo<<", multiplicity is "<<dMult<<endl;
20900  if(dMult<2)
20901  {
20902   cout<<"... skipping this event (multiplicity too low) ..."<<endl;
20903  } else if (dMult>fMaxAllowedMultiplicity)
20904    {
20905     cout<<"... skipping this event (multiplicity too high) ..."<<endl;
20906    } else 
20907      { 
20908       cout<<"... evaluating nested loops (without using particle weights)..."<<endl;
20909      } 
20910  
20911  // 2-particle correlations:       
20912  if(nPrim>=2 && nPrim<=fMaxAllowedMultiplicity)
20913  {
20914   for(Int_t i1=0;i1<nPrim;i1++)
20915   {
20916    aftsTrack=anEvent->GetTrack(i1);
20917    if(!(aftsTrack->InRPSelection())) continue;
20918    phi1=aftsTrack->Phi(); 
20919    for(Int_t i2=0;i2<nPrim;i2++)
20920    {
20921     if(i2==i1)continue;
20922     aftsTrack=anEvent->GetTrack(i2);
20923     if(!(aftsTrack->InRPSelection())) continue;
20924     phi2=aftsTrack->Phi();
20925     if(nPrim==2) cout<<i1<<" "<<i2<<"\r"<<flush;
20926     // fill the profile with 2-p correlations: 
20927     fIntFlowDirectCorrelations->Fill(0.5,cos(n*(phi1-phi2)),1.);     // <cos(n*(phi1-phi2))>
20928     fIntFlowDirectCorrelations->Fill(1.5,cos(2.*n*(phi1-phi2)),1.);  // <cos(2n*(phi1-phi2))>
20929     fIntFlowDirectCorrelations->Fill(2.5,cos(3.*n*(phi1-phi2)),1.);  // <cos(3n*(phi1-phi2))>
20930     fIntFlowDirectCorrelations->Fill(3.5,cos(4.*n*(phi1-phi2)),1.);  // <cos(4n*(phi1-phi2))>   
20931     fIntFlowDirectCorrelations->Fill(34.5,cos(5.*n*(phi1-phi2)),1.); // <cos(5n*(phi1-phi2))>
20932     fIntFlowDirectCorrelations->Fill(35.5,cos(6.*n*(phi1-phi2)),1.); // <cos(6n*(phi1-phi2))>   
20933    } // end of for(Int_t i2=0;i2<nPrim;i2++)
20934   } // end of for(Int_t i1=0;i1<nPrim;i1++)
20935  } // end of if(nPrim>=2)
20936  
20937  // 3-particle correlations:         
20938  if(nPrim>=3 && nPrim<=fMaxAllowedMultiplicity)
20939  {
20940   for(Int_t i1=0;i1<nPrim;i1++)
20941   {
20942    aftsTrack=anEvent->GetTrack(i1);
20943    if(!(aftsTrack->InRPSelection())) continue;
20944    phi1=aftsTrack->Phi();
20945    for(Int_t i2=0;i2<nPrim;i2++)
20946    {
20947     if(i2==i1)continue;
20948     aftsTrack=anEvent->GetTrack(i2);
20949     if(!(aftsTrack->InRPSelection())) continue;
20950     phi2=aftsTrack->Phi();
20951     for(Int_t i3=0;i3<nPrim;i3++)
20952     {
20953      if(i3==i1||i3==i2)continue;
20954      aftsTrack=anEvent->GetTrack(i3);
20955      if(!(aftsTrack->InRPSelection())) continue;
20956      phi3=aftsTrack->Phi();
20957      if(nPrim==3) cout<<i1<<" "<<i2<<" "<<i3<<"\r"<<flush;
20958      // fill the profile with 3-p correlations:   
20959      fIntFlowDirectCorrelations->Fill(5.,cos(2.*n*phi1-n*(phi2+phi3)),1.);         //<3>_{2n|nn,n}
20960      fIntFlowDirectCorrelations->Fill(6.,cos(3.*n*phi1-2.*n*phi2-n*phi3),1.);      //<3>_{3n|2n,n}
20961      fIntFlowDirectCorrelations->Fill(7.,cos(4.*n*phi1-2.*n*phi2-2.*n*phi3),1.);   //<3>_{4n|2n,2n}
20962      fIntFlowDirectCorrelations->Fill(8.,cos(4.*n*phi1-3.*n*phi2-n*phi3),1.);      //<3>_{4n|3n,n}
20963      fIntFlowDirectCorrelations->Fill(36.5,cos(5.*n*phi1-3.*n*phi2-2.*n*phi3),1.); //<3>_{5n|3n,2n}
20964      fIntFlowDirectCorrelations->Fill(37.5,cos(5.*n*phi1-4.*n*phi2-1.*n*phi3),1.); //<3>_{5n|4n,1n}
20965      fIntFlowDirectCorrelations->Fill(38.5,cos(6.*n*phi1-3.*n*phi2-3.*n*phi3),1.); //<3>_{6n|3n,3n}
20966      fIntFlowDirectCorrelations->Fill(39.5,cos(6.*n*phi1-4.*n*phi2-2.*n*phi3),1.); //<3>_{6n|4n,2n}     
20967      fIntFlowDirectCorrelations->Fill(40.5,cos(6.*n*phi1-5.*n*phi2-1.*n*phi3),1.); //<3>_{6n|5n,1n}
20968     } // end of for(Int_t i3=0;i3<nPrim;i3++)
20969    } // end of for(Int_t i2=0;i2<nPrim;i2++)
20970   } // end of for(Int_t i1=0;i1<nPrim;i1++)
20971  } // end of if(nPrim>=3)
20972
20973  // 4-particle correlations:
20974  if(nPrim>=4 && nPrim<=fMaxAllowedMultiplicity)
20975  {       
20976   for(Int_t i1=0;i1<nPrim;i1++)
20977   { 
20978    aftsTrack=anEvent->GetTrack(i1);
20979    if(!(aftsTrack->InRPSelection())) continue;
20980    phi1=aftsTrack->Phi();
20981    for(Int_t i2=0;i2<nPrim;i2++)
20982    {
20983     if(i2==i1)continue;
20984     aftsTrack=anEvent->GetTrack(i2);
20985     if(!(aftsTrack->InRPSelection())) continue;
20986     phi2=aftsTrack->Phi();
20987     for(Int_t i3=0;i3<nPrim;i3++)
20988     {
20989      if(i3==i1||i3==i2)continue;
20990      aftsTrack=anEvent->GetTrack(i3);
20991      if(!(aftsTrack->InRPSelection())) continue;
20992      phi3=aftsTrack->Phi();
20993      for(Int_t i4=0;i4<nPrim;i4++)
20994      {
20995       if(i4==i1||i4==i2||i4==i3)continue;
20996       aftsTrack=anEvent->GetTrack(i4);
20997       if(!(aftsTrack->InRPSelection())) continue;
20998       phi4=aftsTrack->Phi();
20999       if(nPrim==4) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<"\r"<<flush;
21000       // fill the profile with 4-p correlations:   
21001       fIntFlowDirectCorrelations->Fill(10.,cos(n*phi1+n*phi2-n*phi3-n*phi4),1.);            // <4>_{n,n|n,n} 
21002       fIntFlowDirectCorrelations->Fill(11.,cos(2.*n*phi1+n*phi2-2.*n*phi3-n*phi4),1.);      // <4>_{2n,n|2n,n}
21003       fIntFlowDirectCorrelations->Fill(12.,cos(2.*n*phi1+2*n*phi2-2.*n*phi3-2.*n*phi4),1.); // <4>_{2n,2n|2n,2n}
21004       fIntFlowDirectCorrelations->Fill(13.,cos(3.*n*phi1-n*phi2-n*phi3-n*phi4),1.);         // <4>_{3n|n,n,n}
21005       fIntFlowDirectCorrelations->Fill(14.,cos(3.*n*phi1+n*phi2-3.*n*phi3-n*phi4),1.);      // <4>_{3n,n|3n,n}   
21006       fIntFlowDirectCorrelations->Fill(15.,cos(3.*n*phi1+n*phi2-2.*n*phi3-2.*n*phi4),1.);   // <4>_{3n,n|2n,2n}
21007       fIntFlowDirectCorrelations->Fill(16.,cos(4.*n*phi1-2.*n*phi2-n*phi3-n*phi4),1.);      // <4>_{4n|2n,n,n}     
21008       fIntFlowDirectCorrelations->Fill(32.,cos(n*(4.*phi1+2.*phi2-3.*phi3-3.*phi4)),1.);    // <4>_{4n,2n|3n,3n}        
21009       fIntFlowDirectCorrelations->Fill(41.5,cos(n*(6.*phi1-3.*phi2-2.*phi3-1.*phi4)),1.);    // <4>_{6n|3n,2n,1n}  
21010       fIntFlowDirectCorrelations->Fill(42.5,cos(n*(3.*phi1+2.*phi2-3.*phi3-2.*phi4)),1.);    // <4>_{3n,2n|3n,2n}  
21011       fIntFlowDirectCorrelations->Fill(43.5,cos(n*(4.*phi1+1.*phi2-3.*phi3-2.*phi4)),1.);    // <4>_{4n,1n|3n,2n}  
21012       fIntFlowDirectCorrelations->Fill(44.5,cos(n*(3.*phi1+3.*phi2-3.*phi3-3.*phi4)),1.);    // <4>_{3n,3n|3n,3n}  
21013       fIntFlowDirectCorrelations->Fill(45.5,cos(n*(4.*phi1+2.*phi2-3.*phi3-3.*phi4)),1.);    // <4>_{4n,2n|3n,3n}  
21014       fIntFlowDirectCorrelations->Fill(46.5,cos(n*(5.*phi1+1.*phi2-3.*phi3-3.*phi4)),1.);    // <4>_{5n,1n|3n,3n}  
21015       fIntFlowDirectCorrelations->Fill(47.5,cos(n*(4.*phi1+2.*phi2-4.*phi3-2.*phi4)),1.);    // <4>_{4n,2n|4n,2n}     
21016       fIntFlowDirectCorrelations->Fill(48.5,cos(n*(5.*phi1+1.*phi2-4.*phi3-2.*phi4)),1.);    // <4>_{5n,1n|4n,2n}  
21017       fIntFlowDirectCorrelations->Fill(49.5,cos(n*(5.*phi1-3.*phi2-1.*phi3-1.*phi4)),1.);    // <4>_{5n|3n,1n,1n}  
21018       fIntFlowDirectCorrelations->Fill(50.5,cos(n*(5.*phi1-2.*phi2-2.*phi3-1.*phi4)),1.);    // <4>_{5n|2n,2n,1n}  
21019       fIntFlowDirectCorrelations->Fill(51.5,cos(n*(5.*phi1+1.*phi2-5.*phi3-1.*phi4)),1.);    // <4>_{5n,1n|5n,1n}        
21020       fIntFlowDirectCorrelations->Fill(58.5,cos(n*(6.*phi1-4.*phi2-1.*phi3-1.*phi4)),1.);    // <4>_{6n|4n,1n,1n}  
21021       fIntFlowDirectCorrelations->Fill(59.5,cos(n*(6.*phi1-2.*phi2-2.*phi3-2.*phi4)),1.);    // <4>_{6n|2n,2n,2n}  
21022      } // end of for(Int_t i4=0;i4<nPrim;i4++) 
21023     } // end of for(Int_t i3=0;i3<nPrim;i3++)
21024    } // end of for(Int_t i2=0;i2<nPrim;i2++)
21025   } // end of for(Int_t i1=0;i1<nPrim;i1++)
21026  } // end of if(nPrim>=)
21027
21028  // 5-particle correlations:      
21029  if(nPrim>=5 && nPrim<=fMaxAllowedMultiplicity)
21030  {
21031   for(Int_t i1=0;i1<nPrim;i1++)
21032   {
21033    aftsTrack=anEvent->GetTrack(i1);
21034    if(!(aftsTrack->InRPSelection())) continue;  
21035    phi1=aftsTrack->Phi();
21036    for(Int_t i2=0;i2<nPrim;i2++)
21037    {
21038     if(i2==i1)continue;
21039     aftsTrack=anEvent->GetTrack(i2);
21040     if(!(aftsTrack->InRPSelection())) continue;
21041     phi2=aftsTrack->Phi();
21042     for(Int_t i3=0;i3<nPrim;i3++)
21043     {
21044      if(i3==i1||i3==i2)continue;
21045      aftsTrack=anEvent->GetTrack(i3);
21046      if(!(aftsTrack->InRPSelection())) continue;
21047      phi3=aftsTrack->Phi();
21048      for(Int_t i4=0;i4<nPrim;i4++)
21049      {
21050       if(i4==i1||i4==i2||i4==i3)continue;
21051       aftsTrack=anEvent->GetTrack(i4);
21052       if(!(aftsTrack->InRPSelection())) continue;
21053       phi4=aftsTrack->Phi();
21054       for(Int_t i5=0;i5<nPrim;i5++)
21055       {
21056        if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
21057        aftsTrack=anEvent->GetTrack(i5);
21058        if(!(aftsTrack->InRPSelection())) continue;
21059        phi5=aftsTrack->Phi();
21060        if(nPrim==5) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<" "<<i5<<"\r"<<flush;
21061        // fill the profile with 5-p correlations:   
21062        fIntFlowDirectCorrelations->Fill(18.,cos(2.*n*phi1+n*phi2-n*phi3-n*phi4-n*phi5),1.);              // <5>_{2n,n|n,n,n}
21063        fIntFlowDirectCorrelations->Fill(19.,cos(2.*n*phi1+2.*n*phi2-2.*n*phi3-n*phi4-n*phi5),1.);        // <5>_{2n,2n|2n,n,n}
21064        fIntFlowDirectCorrelations->Fill(20.,cos(3.*n*phi1+n*phi2-2.*n*phi3-n*phi4-n*phi5),1.);           // <5>_{3n,n|2n,n,n}
21065        fIntFlowDirectCorrelations->Fill(21.,cos(4.*n*phi1-n*phi2-n*phi3-n*phi4-n*phi5),1.);              // <5>_{4n|n,n,n,n}
21066        fIntFlowDirectCorrelations->Fill(33.,cos(3.*n*phi1+3.*n*phi2-2.*n*phi3-2.*n*phi4-2.*n*phi5),1.);  // <5>_{3n,3n|2n,2n,2n}       
21067        fIntFlowDirectCorrelations->Fill(52.5,cos(3.*n*phi1+3.*n*phi2-3.*n*phi3-2.*n*phi4-1.*n*phi5),1.); // <5>_{3n,3n|3n,2n,1n}      
21068        fIntFlowDirectCorrelations->Fill(53.5,cos(4.*n*phi1+2.*n*phi2-3.*n*phi3-2.*n*phi4-1.*n*phi5),1.); // <5>_{4n,2n|3n,2n,1n}       
21069        fIntFlowDirectCorrelations->Fill(54.5,cos(3.*n*phi1+2.*n*phi2-3.*n*phi3-1.*n*phi4-1.*n*phi5),1.); // <5>_{3n,2n|3n,1n,1n}
21070        fIntFlowDirectCorrelations->Fill(55.5,cos(3.*n*phi1+2.*n*phi2-2.*n*phi3-2.*n*phi4-1.*n*phi5),1.); // <5>_{3n,2n|2n,2n,1n}
21071        fIntFlowDirectCorrelations->Fill(56.5,cos(5.*n*phi1+1.*n*phi2-3.*n*phi3-2.*n*phi4-1.*n*phi5),1.); // <5>_{5n,1n|3n,2n,1n}              
21072        fIntFlowDirectCorrelations->Fill(60.5,cos(6.*n*phi1-2.*n*phi2-2.*n*phi3-1.*n*phi4-1.*n*phi5),1.); // <5>_{6n|2n,2n,1n,1n}
21073        fIntFlowDirectCorrelations->Fill(61.5,cos(4.*n*phi1+1.*n*phi2+1.*n*phi3-3.*n*phi4-3.*n*phi5),1.); // <5>_{4n,1n,1n|3n,3n}              
21074       } // end of for(Int_t i5=0;i5<nPrim;i5++)
21075      } // end of for(Int_t i4=0;i4<nPrim;i4++)  
21076     } // end of for(Int_t i3=0;i3<nPrim;i3++)
21077    } // end of for(Int_t i2=0;i2<nPrim;i2++)
21078   } // end of for(Int_t i1=0;i1<nPrim;i1++)
21079  } // end of if(nPrim>=5)
21080   
21081  // 6-particle correlations:
21082  if(nPrim>=6 && nPrim<=fMaxAllowedMultiplicity)
21083  {
21084   for(Int_t i1=0;i1<nPrim;i1++)
21085   {
21086    aftsTrack=anEvent->GetTrack(i1);
21087    if(!(aftsTrack->InRPSelection())) continue;
21088    phi1=aftsTrack->Phi();
21089    for(Int_t i2=0;i2<nPrim;i2++)
21090    {
21091     if(i2==i1)continue;
21092     aftsTrack=anEvent->GetTrack(i2);
21093     if(!(aftsTrack->InRPSelection())) continue;
21094     phi2=aftsTrack->Phi();
21095     for(Int_t i3=0;i3<nPrim;i3++)
21096     {
21097      if(i3==i1||i3==i2)continue;
21098      aftsTrack=anEvent->GetTrack(i3);
21099      if(!(aftsTrack->InRPSelection())) continue;
21100      phi3=aftsTrack->Phi();
21101      for(Int_t i4=0;i4<nPrim;i4++)
21102      {
21103       if(i4==i1||i4==i2||i4==i3)continue;
21104       aftsTrack=anEvent->GetTrack(i4);
21105       if(!(aftsTrack->InRPSelection())) continue;
21106       phi4=aftsTrack->Phi();
21107       for(Int_t i5=0;i5<nPrim;i5++)
21108       {
21109        if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
21110        aftsTrack=anEvent->GetTrack(i5);
21111        if(!(aftsTrack->InRPSelection())) continue;
21112        phi5=aftsTrack->Phi();
21113        for(Int_t i6=0;i6<nPrim;i6++)
21114        {
21115         if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
21116         aftsTrack=anEvent->GetTrack(i6);
21117         if(!(aftsTrack->InRPSelection())) continue;
21118         phi6=aftsTrack->Phi(); 
21119         if(nPrim==6) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<" "<<i5<<" "<<i6<<"\r"<<flush;
21120         // fill the profile with 6-p correlations:   
21121         fIntFlowDirectCorrelations->Fill(23.,cos(n*phi1+n*phi2+n*phi3-n*phi4-n*phi5-n*phi6),1.);                    // <6>_{1n,1n,1n|1n,1n,1n}
21122         fIntFlowDirectCorrelations->Fill(24.,cos(2.*n*phi1+n*phi2+n*phi3-2.*n*phi4-n*phi5-n*phi6),1.);              // <6>_{2n,1n,1n|2n,1n,1n}
21123         fIntFlowDirectCorrelations->Fill(25.,cos(2.*n*phi1+2.*n*phi2-n*phi3-n*phi4-n*phi5-n*phi6),1.);              // <6>_{2n,2n|1n,1n,1n,1n}
21124         fIntFlowDirectCorrelations->Fill(26.,cos(3.*n*phi1+n*phi2-n*phi3-n*phi4-n*phi5-n*phi6),1.);                 // <6>_{3n,1n|1n,1n,1n,1n}  
21125         fIntFlowDirectCorrelations->Fill(57.5,cos(3.*n*phi1+2.*n*phi2+1.*n*phi3-3.*n*phi4-2.*n*phi5-1.*n*phi6),1.); // <6>_{3n,2n,1n|3n,2n,1n}  
21126         fIntFlowDirectCorrelations->Fill(62.5,cos(3.*n*phi1+3.*n*phi2-2.*n*phi3-2.*n*phi4-1.*n*phi5-1.*n*phi6),1.); // <6>_{3n,3n|2n,2n,1n,1n}  
21127        } // end of for(Int_t i6=0;i6<nPrim;i6++)
21128       } // end of for(Int_t i5=0;i5<nPrim;i5++)
21129      } // end of for(Int_t i4=0;i4<nPrim;i4++)
21130     } // end of for(Int_t i3=0;i3<nPrim;i3++)
21131    } // end of for(Int_t i2=0;i2<nPrim;i2++)
21132   } // end of for(Int_t i1=0;i1<nPrim;i1++)
21133  } // end of if(nPrim>=6)
21134   
21135  // 7-particle correlations:
21136  if(nPrim>=7 && nPrim<=fMaxAllowedMultiplicity)
21137  {
21138   for(Int_t i1=0;i1<nPrim;i1++)
21139   { 
21140    aftsTrack=anEvent->GetTrack(i1);
21141    if(!(aftsTrack->InRPSelection())) continue;
21142    phi1=aftsTrack->Phi();
21143    for(Int_t i2=0;i2<nPrim;i2++)
21144    {
21145     if(i2==i1)continue;
21146     aftsTrack=anEvent->GetTrack(i2);
21147     if(!(aftsTrack->InRPSelection())) continue;
21148     phi2=aftsTrack->Phi();
21149     for(Int_t i3=0;i3<nPrim;i3++)
21150     {
21151      if(i3==i1||i3==i2)continue;
21152      aftsTrack=anEvent->GetTrack(i3);
21153      if(!(aftsTrack->InRPSelection())) continue;
21154      phi3=aftsTrack->Phi();
21155      for(Int_t i4=0;i4<nPrim;i4++)
21156      {
21157       if(i4==i1||i4==i2||i4==i3)continue;
21158       aftsTrack=anEvent->GetTrack(i4);
21159       if(!(aftsTrack->InRPSelection())) continue;
21160       phi4=aftsTrack->Phi();
21161       for(Int_t i5=0;i5<nPrim;i5++)
21162       {
21163        if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
21164        aftsTrack=anEvent->GetTrack(i5);
21165        if(!(aftsTrack->InRPSelection())) continue;
21166        phi5=aftsTrack->Phi();
21167        for(Int_t i6=0;i6<nPrim;i6++)
21168        {
21169         if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
21170         aftsTrack=anEvent->GetTrack(i6);
21171         if(!(aftsTrack->InRPSelection())) continue;
21172         phi6=aftsTrack->Phi(); 
21173         for(Int_t i7=0;i7<nPrim;i7++)
21174         {
21175          if(i7==i1||i7==i2||i7==i3||i7==i4||i7==i5||i7==i6)continue;
21176          aftsTrack=anEvent->GetTrack(i7);
21177          if(!(aftsTrack->InRPSelection())) continue;
21178          phi7=aftsTrack->Phi(); 
21179          if(nPrim==7) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<" "<<i5<<" "<<i6<<" "<<i7<<"\r"<<flush;
21180          // fill the profile with 7-p correlation:   
21181          fIntFlowDirectCorrelations->Fill(28.,cos(2.*n*phi1+n*phi2+n*phi3-n*phi4-n*phi5-n*phi6-n*phi7),1.); // <7>_{2n,n,n|n,n,n,n}
21182         } // end of for(Int_t i7=0;i7<nPrim;i7++)
21183        } // end of for(Int_t i6=0;i6<nPrim;i6++) 
21184       } // end of for(Int_t i5=0;i5<nPrim;i5++)
21185      } // end of for(Int_t i4=0;i4<nPrim;i4++)  
21186     } // end of for(Int_t i3=0;i3<nPrim;i3++)
21187    } // end of for(Int_t i2=0;i2<nPrim;i2++)
21188   } // end of for(Int_t i1=0;i1<nPrim;i1++)
21189  } // end of if(nPrim>=7)
21190  
21191  // 8-particle correlations:
21192  if(nPrim>=8 && nPrim<=fMaxAllowedMultiplicity)
21193  {
21194   for(Int_t i1=0;i1<nPrim;i1++)
21195   {
21196    aftsTrack=anEvent->GetTrack(i1);
21197    if(!(aftsTrack->InRPSelection())) continue;
21198    phi1=aftsTrack->Phi();
21199    for(Int_t i2=0;i2<nPrim;i2++)
21200    {
21201     if(i2==i1)continue;
21202     aftsTrack=anEvent->GetTrack(i2);
21203     if(!(aftsTrack->InRPSelection())) continue;
21204     phi2=aftsTrack->Phi();
21205     for(Int_t i3=0;i3<nPrim;i3++)
21206     {
21207      if(i3==i1||i3==i2)continue;
21208      aftsTrack=anEvent->GetTrack(i3);
21209      if(!(aftsTrack->InRPSelection())) continue;
21210      phi3=aftsTrack->Phi();
21211      for(Int_t i4=0;i4<nPrim;i4++)
21212      {
21213       if(i4==i1||i4==i2||i4==i3)continue;
21214       aftsTrack=anEvent->GetTrack(i4);
21215       if(!(aftsTrack->InRPSelection())) continue;
21216       phi4=aftsTrack->Phi();
21217       for(Int_t i5=0;i5<nPrim;i5++)
21218       {
21219        if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
21220        aftsTrack=anEvent->GetTrack(i5);
21221        if(!(aftsTrack->InRPSelection())) continue;
21222        phi5=aftsTrack->Phi();
21223        for(Int_t i6=0;i6<nPrim;i6++)
21224        {
21225         if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
21226         aftsTrack=anEvent->GetTrack(i6);
21227         if(!(aftsTrack->InRPSelection())) continue;
21228         phi6=aftsTrack->Phi();
21229         for(Int_t i7=0;i7<nPrim;i7++)
21230         {
21231          if(i7==i1||i7==i2||i7==i3||i7==i4||i7==i5||i7==i6)continue;
21232          aftsTrack=anEvent->GetTrack(i7);
21233          if(!(aftsTrack->InRPSelection())) continue;
21234          phi7=aftsTrack->Phi();
21235          for(Int_t i8=0;i8<nPrim;i8++)
21236          {
21237           if(i8==i1||i8==i2||i8==i3||i8==i4||i8==i5||i8==i6||i8==i7)continue;
21238           aftsTrack=anEvent->GetTrack(i8);
21239           if(!(aftsTrack->InRPSelection())) continue;
21240           phi8=aftsTrack->Phi();
21241           cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<" "<<i5<<" "<<i6<<" "<<i7<<" "<<i8<<"\r"<<flush;
21242           // fill the profile with 8-p correlation:   
21243           fIntFlowDirectCorrelations->Fill(30.,cos(n*phi1+n*phi2+n*phi3+n*phi4-n*phi5-n*phi6-n*phi7-n*phi8),1.); // <8>_{n,n,n,n|n,n,n,n}
21244          } // end of for(Int_t i8=0;i8<nPrim;i8++)
21245         } // end of for(Int_t i7=0;i7<nPrim;i7++) 
21246        } // end of for(Int_t i6=0;i6<nPrim;i6++) 
21247       } // end of for(Int_t i5=0;i5<nPrim;i5++)
21248      } // end of for(Int_t i4=0;i4<nPrim;i4++)  
21249     } // end of for(Int_t i3=0;i3<nPrim;i3++)
21250    } // end of for(Int_t i2=0;i2<nPrim;i2++)
21251   } // end of for(Int_t i1=0;i1<nPrim;i1++)
21252  } // end of if(nPrim>=8)
21253  
21254  cout<<endl;
21255
21256 } // end of AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrelationsWithNestedLoops(AliFlowEventSimple* anEvent)
21257
21258 //================================================================================================================
21259
21260 void AliFlowAnalysisWithQCumulants::EvaluateMixedHarmonicsWithNestedLoops(AliFlowEventSimple * const anEvent)
21261 {
21262  // Evaluate with nested loops multi-particle correlations for mixed harmonics. 
21263   
21264  Int_t nPrim = anEvent->NumberOfTracks(); 
21265  AliFlowTrackSimple *aftsTrack = NULL; 
21266  Double_t phi1=0.;
21267  Double_t phi2=0.; 
21268  Double_t phi3=0.;
21269  Double_t phi4=0.;
21270  Double_t phi5=0.;
21271  /*Double_t phi6=0.;
21272  Double_t phi7=0.;
21273  Double_t phi8=0.;*/ 
21274  Int_t n = fHarmonic; 
21275  Int_t eventNo = (Int_t)fAvMultiplicity->GetBinEntries(1); // TBI: is such casting safe in general?
21276  Double_t dMult = (*fSpk)(0,0);
21277  cout<<endl;
21278  cout<<"Multiparticle correlations: Event number: "<<eventNo<<", multiplicity is "<<dMult<<endl;
21279  if(dMult<2)
21280  {
21281   cout<<"... skipping this event (multiplicity too low) ..."<<endl;
21282  } else if (dMult>fMaxAllowedMultiplicity)
21283    {
21284     cout<<"... skipping this event (multiplicity too high) ..."<<endl;
21285    } else 
21286      { 
21287       cout<<"... evaluating nested loops (without using particle weights)..."<<endl;
21288      } 
21289  
21290  // 2-particle correlations:       
21291  if(nPrim>=2 && nPrim<=fMaxAllowedMultiplicity)
21292  {
21293   for(Int_t i1=0;i1<nPrim;i1++)
21294   {
21295    aftsTrack=anEvent->GetTrack(i1);
21296    if(!(aftsTrack->InRPSelection())) continue;
21297    phi1=aftsTrack->Phi(); 
21298    for(Int_t i2=0;i2<nPrim;i2++)
21299    {
21300     if(i2==i1)continue;
21301     aftsTrack=anEvent->GetTrack(i2);
21302     if(!(aftsTrack->InRPSelection())) continue;
21303     phi2=aftsTrack->Phi();
21304     if(nPrim==2) cout<<i1<<" "<<i2<<"\r"<<flush;
21305     // Fill the profile fMixedHarmonicsNestedLoops with 2-p correlations: 
21306     fMixedHarmonicsNestedLoops->Fill(0.5,cos(1.*n*(phi1-phi2)),1.); // <cos(1n*(phi1-phi2))>
21307     fMixedHarmonicsNestedLoops->Fill(1.5,cos(2.*n*(phi1-phi2)),1.); // <cos(2n*(phi1-phi2))>
21308     fMixedHarmonicsNestedLoops->Fill(2.5,cos(3.*n*(phi1-phi2)),1.); // <cos(3n*(phi1-phi2))>
21309     fMixedHarmonicsNestedLoops->Fill(3.5,cos(4.*n*(phi1-phi2)),1.); // <cos(4n*(phi1-phi2))>   
21310     fMixedHarmonicsNestedLoops->Fill(4.5,cos(5.*n*(phi1-phi2)),1.); // <cos(5n*(phi1-phi2))>
21311     fMixedHarmonicsNestedLoops->Fill(5.5,cos(6.*n*(phi1-phi2)),1.); // <cos(6n*(phi1-phi2))>   
21312    } // end of for(Int_t i2=0;i2<nPrim;i2++)
21313   } // end of for(Int_t i1=0;i1<nPrim;i1++)
21314  } // end of if(nPrim>=2)
21315  
21316  // 3-particle correlations:         
21317  if(nPrim>=3 && nPrim<=fMaxAllowedMultiplicity)
21318  {
21319   for(Int_t i1=0;i1<nPrim;i1++)
21320   {
21321    aftsTrack=anEvent->GetTrack(i1);
21322    if(!(aftsTrack->InRPSelection())) continue;
21323    phi1=aftsTrack->Phi();
21324    for(Int_t i2=0;i2<nPrim;i2++)
21325    {
21326     if(i2==i1)continue;
21327     aftsTrack=anEvent->GetTrack(i2);
21328     if(!(aftsTrack->InRPSelection())) continue;
21329     phi2=aftsTrack->Phi();
21330     for(Int_t i3=0;i3<nPrim;i3++)
21331     {
21332      if(i3==i1||i3==i2)continue;
21333      aftsTrack=anEvent->GetTrack(i3);
21334      if(!(aftsTrack->InRPSelection())) continue;
21335      phi3=aftsTrack->Phi();
21336      if(nPrim==3) cout<<i1<<" "<<i2<<" "<<i3<<"\r"<<flush;
21337      // Fill the profile fMixedHarmonicsNestedLoops with 3-p correlations:  
21338      fMixedHarmonicsNestedLoops->Fill( 6.5,cos(2.*n*phi1-n*(phi2+phi3)),1.);       // <3>_{2n|1n,1n}
21339      fMixedHarmonicsNestedLoops->Fill( 7.5,cos(4.*n*phi1-2.*n*phi2-2.*n*phi3),1.); // <3>_{4n|2n,2n}
21340      fMixedHarmonicsNestedLoops->Fill( 8.5,cos(6.*n*phi1-3.*n*phi2-3.*n*phi3),1.); // <3>_{6n|3n,3n}
21341      fMixedHarmonicsNestedLoops->Fill(10.5,cos(3.*n*phi1-2.*n*phi2-n*phi3),1.);    // <3>_{3n|2n,1n}   
21342      fMixedHarmonicsNestedLoops->Fill(11.5,cos(4.*n*phi1-3.*n*phi2-1.*n*phi3),1.); // <3>_{4n|3n,1n}
21343      fMixedHarmonicsNestedLoops->Fill(12.5,cos(5.*n*phi1-3.*n*phi2-2.*n*phi3),1.); // <3>_{5n|3n,2n}
21344      fMixedHarmonicsNestedLoops->Fill(13.5,cos(5.*n*phi1-4.*n*phi2-1.*n*phi3),1.); // <3>_{5n|4n,1n}
21345      fMixedHarmonicsNestedLoops->Fill(14.5,cos(6.*n*phi1-4.*n*phi2-2.*n*phi3),1.); // <3>_{6n|4n,2n}     
21346      fMixedHarmonicsNestedLoops->Fill(15.5,cos(6.*n*phi1-5.*n*phi2-1.*n*phi3),1.); // <3>_{6n|5n,1n}
21347     } // end of for(Int_t i3=0;i3<nPrim;i3++)
21348    } // end of for(Int_t i2=0;i2<nPrim;i2++)
21349   } // end of for(Int_t i1=0;i1<nPrim;i1++)
21350  } // end of if(nPrim>=3)
21351
21352  // 4-particle correlations:
21353  if(nPrim>=4 && nPrim<=fMaxAllowedMultiplicity)
21354  {       
21355   for(Int_t i1=0;i1<nPrim;i1++)
21356   { 
21357    aftsTrack=anEvent->GetTrack(i1);
21358    if(!(aftsTrack->InRPSelection())) continue;
21359    phi1=aftsTrack->Phi();
21360    for(Int_t i2=0;i2<nPrim;i2++)
21361    {
21362     if(i2==i1)continue;
21363     aftsTrack=anEvent->GetTrack(i2);
21364     if(!(aftsTrack->InRPSelection())) continue;
21365     phi2=aftsTrack->Phi();
21366     for(Int_t i3=0;i3<nPrim;i3++)
21367     {
21368      if(i3==i1||i3==i2)continue;
21369      aftsTrack=anEvent->GetTrack(i3);
21370      if(!(aftsTrack->InRPSelection())) continue;
21371      phi3=aftsTrack->Phi();
21372      for(Int_t i4=0;i4<nPrim;i4++)
21373      {
21374       if(i4==i1||i4==i2||i4==i3)continue;
21375       aftsTrack=anEvent->GetTrack(i4);
21376       if(!(aftsTrack->InRPSelection())) continue;
21377       phi4=aftsTrack->Phi();
21378       if(nPrim==4) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<"\r"<<flush;
21379       // fill the profile with 4-p correlations:   
21380       fMixedHarmonicsNestedLoops->Fill(16.5,cos(1.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{1n,1n|1n,1n} 
21381       fMixedHarmonicsNestedLoops->Fill(17.5,cos(2.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{2n,2n|2n,2n} 
21382       fMixedHarmonicsNestedLoops->Fill(18.5,cos(3.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{3n,3n|3n,3n} 
21383       fMixedHarmonicsNestedLoops->Fill(19.5,cos(4.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{4n,4n|4n,4n} 
21384       fMixedHarmonicsNestedLoops->Fill(20.5,cos(5.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{5n,5n|5n,5n} 
21385       fMixedHarmonicsNestedLoops->Fill(21.5,cos(6.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{6n,6n|6n,6n} 
21386       fMixedHarmonicsNestedLoops->Fill(23.5,cos(n*(2.*phi1+1.*phi2-2.*phi3-1.*phi4)),1.); // <4>_{2n,1n|2n,1n} 
21387       fMixedHarmonicsNestedLoops->Fill(24.5,cos(n*(3.*phi1+1.*phi2-3.*phi3-1.*phi4)),1.); // <4>_{3n,1n|3n,1n} 
21388       fMixedHarmonicsNestedLoops->Fill(25.5,cos(n*(3.*phi1+2.*phi2-3.*phi3-2.*phi4)),1.); // <4>_{3n,2n|3n,2n} 
21389       fMixedHarmonicsNestedLoops->Fill(26.5,cos(n*(4.*phi1+1.*phi2-4.*phi3-1.*phi4)),1.); // <4>_{4n,1n|4n,1n} 
21390       fMixedHarmonicsNestedLoops->Fill(27.5,cos(n*(4.*phi1+2.*phi2-4.*phi3-2.*phi4)),1.); // <4>_{4n,2n|4n,2n} 
21391       fMixedHarmonicsNestedLoops->Fill(28.5,cos(n*(4.*phi1+3.*phi2-4.*phi3-3.*phi4)),1.); // <4>_{4n,3n|4n,3n} 
21392       fMixedHarmonicsNestedLoops->Fill(29.5,cos(n*(5.*phi1+1.*phi2-5.*phi3-1.*phi4)),1.); // <4>_{5n,1n|5n,1n} 
21393       fMixedHarmonicsNestedLoops->Fill(30.5,cos(n*(5.*phi1+2.*phi2-5.*phi3-2.*phi4)),1.); // <4>_{5n,2n|5n,2n} 
21394       fMixedHarmonicsNestedLoops->Fill(31.5,cos(n*(5.*phi1+3.*phi2-5.*phi3-3.*phi4)),1.); // <4>_{5n,3n|5n,3n} 
21395       fMixedHarmonicsNestedLoops->Fill(32.5,cos(n*(5.*phi1+4.*phi2-5.*phi3-4.*phi4)),1.); // <4>_{5n,4n|5n,4n} 
21396       fMixedHarmonicsNestedLoops->Fill(33.5,cos(n*(6.*phi1+1.*phi2-6.*phi3-1.*phi4)),1.); // <4>_{6n,1n|6n,1n} 
21397       fMixedHarmonicsNestedLoops->Fill(34.5,cos(n*(6.*phi1+2.*phi2-6.*phi3-2.*phi4)),1.); // <4>_{6n,2n|6n,2n} 
21398       fMixedHarmonicsNestedLoops->Fill(35.5,cos(n*(6.*phi1+3.*phi2-6.*phi3-3.*phi4)),1.); // <4>_{6n,3n|6n,3n} 
21399       fMixedHarmonicsNestedLoops->Fill(36.5,cos(n*(6.*phi1+4.*phi2-6.*phi3-4.*phi4)),1.); // <4>_{6n,4n|6n,4n} 
21400       fMixedHarmonicsNestedLoops->Fill(37.5,cos(n*(6.*phi1+5.*phi2-6.*phi3-5.*phi4)),1.); // <4>_{6n,5n|6n,5n} 
21401       fMixedHarmonicsNestedLoops->Fill(39.5,cos(n*(3.*phi1-1.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{3n|1n,1n,1n} 
21402       fMixedHarmonicsNestedLoops->Fill(40.5,cos(n*(6.*phi1-2.*phi2-2.*phi3-2.*phi4)),1.); // <4>_{6n|2n,2n,2n} 
21403       fMixedHarmonicsNestedLoops->Fill(42.5,cos(n*(3.*phi1+1.*phi2-2.*phi3-2.*phi4)),1.); // <4>_{3n,1n|2n,2n} 
21404       fMixedHarmonicsNestedLoops->Fill(43.5,cos(n*(4.*phi1-2.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{4n|2n,1n,1n} 
21405       fMixedHarmonicsNestedLoops->Fill(44.5,cos(n*(4.*phi1+2.*phi2-3.*phi3-3.*phi4)),1.); // <4>_{4n,2n|3n,3n} 
21406       fMixedHarmonicsNestedLoops->Fill(45.5,cos(n*(5.*phi1-2.*phi2-2.*phi3-1.*phi4)),1.); // <4>_{5n|2n,2n,1n} 
21407       fMixedHarmonicsNestedLoops->Fill(46.5,cos(n*(5.*phi1-3.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{5n|3n,1n,1n} 
21408       fMixedHarmonicsNestedLoops->Fill(47.5,cos(n*(5.*phi1+1.*phi2-3.*phi3-3.*phi4)),1.); // <4>_{5n,1n|3n,3n} 
21409       fMixedHarmonicsNestedLoops->Fill(48.5,cos(n*(5.*phi1+3.*phi2-4.*phi3-4.*phi4)),1.); // <4>_{5n,3n|4n,4n} 
21410       fMixedHarmonicsNestedLoops->Fill(49.5,cos(n*(6.*phi1-4.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{6n|4n,1n,1n} 
21411       fMixedHarmonicsNestedLoops->Fill(50.5,cos(n*(6.*phi1+2.*phi2-4.*phi3-4.*phi4)),1.); // <4>_{6n,2n|4n,4n} 
21412       fMixedHarmonicsNestedLoops->Fill(51.5,cos(n*(6.*phi1+4.*phi2-5.*phi3-5.*phi4)),1.); // <4>_{6n,4n|5n,5n} 
21413       fMixedHarmonicsNestedLoops->Fill(53.5,cos(n*(4.*phi1+1.*phi2-3.*phi3-2.*phi4)),1.); // <4>_{4n,1n|3n,2n} 
21414       fMixedHarmonicsNestedLoops->Fill(54.5,cos(n*(5.*phi1+1.*phi2-4.*phi3-2.*phi4)),1.); // <4>_{5n,1n|4n,2n} 
21415       fMixedHarmonicsNestedLoops->Fill(55.5,cos(n*(5.*phi1+2.*phi2-4.*phi3-3.*phi4)),1.); // <4>_{5n,2n|4n,3n} 
21416       fMixedHarmonicsNestedLoops->Fill(56.5,cos(n*(6.*phi1+1.*phi2-4.*phi3-3.*phi4)),1.); // <4>_{6n,1n|4n,3n} 
21417       fMixedHarmonicsNestedLoops->Fill(57.5,cos(n*(6.*phi1+1.*phi2-5.*phi3-2.*phi4)),1.); // <4>_{6n,1n|5n,2n} 
21418       fMixedHarmonicsNestedLoops->Fill(58.5,cos(n*(6.*phi1-3.*phi2-2.*phi3-1.*phi4)),1.); // <4>_{6n|3n,2n,1n} 
21419       fMixedHarmonicsNestedLoops->Fill(59.5,cos(n*(6.*phi1+2.*phi2-5.*phi3-3.*phi4)),1.); // <4>_{6n,2n|5n,3n} 
21420       fMixedHarmonicsNestedLoops->Fill(60.5,cos(n*(6.*phi1+3.*phi2-5.*phi3-4.*phi4)),1.); // <4>_{6n,3n|5n,4n} 
21421      } // end of for(Int_t i4=0;i4<nPrim;i4++) 
21422     } // end of for(Int_t i3=0;i3<nPrim;i3++)
21423    } // end of for(Int_t i2=0;i2<nPrim;i2++)
21424   } // end of for(Int_t i1=0;i1<nPrim;i1++)
21425  } // end of if(nPrim>=)
21426
21427  // 5-particle correlations:      
21428  if(nPrim>=5 && nPrim<=fMaxAllowedMultiplicity)
21429  {
21430   for(Int_t i1=0;i1<nPrim;i1++)
21431   {
21432    aftsTrack=anEvent->GetTrack(i1);
21433    if(!(aftsTrack->InRPSelection())) continue;  
21434    phi1=aftsTrack->Phi();
21435    for(Int_t i2=0;i2<nPrim;i2++)
21436    {
21437     if(i2==i1)continue;
21438     aftsTrack=anEvent->GetTrack(i2);
21439     if(!(aftsTrack->InRPSelection())) continue;
21440     phi2=aftsTrack->Phi();
21441     for(Int_t i3=0;i3<nPrim;i3++)
21442     {
21443      if(i3==i1||i3==i2)continue;
21444      aftsTrack=anEvent->GetTrack(i3);
21445      if(!(aftsTrack->InRPSelection())) continue;
21446      phi3=aftsTrack->Phi();
21447      for(Int_t i4=0;i4<nPrim;i4++)
21448      {
21449       if(i4==i1||i4==i2||i4==i3)continue;
21450       aftsTrack=anEvent->GetTrack(i4);
21451       if(!(aftsTrack->InRPSelection())) continue;
21452       phi4=aftsTrack->Phi();
21453       for(Int_t i5=0;i5<nPrim;i5++)
21454       {
21455        if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
21456        aftsTrack=anEvent->GetTrack(i5);
21457        if(!(aftsTrack->InRPSelection())) continue;
21458        phi5=aftsTrack->Phi();
21459        if(nPrim==5) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<" "<<i5<<"\r"<<flush;
21460        // fill the profile with 5-p correlations:   
21461        fMixedHarmonicsNestedLoops->Fill(61.5,cos(n*(3.*phi1+2.*phi2-3.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(3*phi1+2*phi2-3*phi3-1*phi4-1*phi5))>
21462        fMixedHarmonicsNestedLoops->Fill(62.5,cos(n*(4.*phi1+1.*phi2-2.*phi3-2.*phi4-1.*phi5)),1.); // <cos(n(4*phi1+1*phi2-2*phi3-2*phi4-1*phi5))>
21463        fMixedHarmonicsNestedLoops->Fill(63.5,cos(n*(4.*phi1+2.*phi2-3.*phi3-2.*phi4-1.*phi5)),1.); // <cos(n(4*phi1+2*phi2-3*phi3-2*phi4-1*phi5))>
21464        fMixedHarmonicsNestedLoops->Fill(64.5,cos(n*(4.*phi1+3.*phi2-3.*phi3-2.*phi4-2.*phi5)),1.); // <cos(n(4*phi1+3*phi2-3*phi3-2*phi4-2*phi5))>
21465        fMixedHarmonicsNestedLoops->Fill(65.5,cos(n*(4.*phi1+2.*phi2-4.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(4*phi1+2*phi2-4*phi3-1*phi4-1*phi5))>
21466        fMixedHarmonicsNestedLoops->Fill(66.5,cos(n*(4.*phi1+3.*phi2-4.*phi3-2.*phi4-1.*phi5)),1.); // <cos(n(4*phi1+3*phi2-4*phi3-2*phi4-1*phi5))>
21467        fMixedHarmonicsNestedLoops->Fill(67.5,cos(n*(5.*phi1+1.*phi2-3.*phi3-2.*phi4-1.*phi5)),1.); // <cos(n(5*phi1+1*phi2-3*phi3-2*phi4-1*phi5))>
21468        fMixedHarmonicsNestedLoops->Fill(68.5,cos(n*(5.*phi1+2.*phi2-5.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(5*phi1+2*phi2-5*phi3-1*phi4-1*phi5))>
21469        fMixedHarmonicsNestedLoops->Fill(69.5,cos(n*(5.*phi1+2.*phi2-4.*phi3-2.*phi4-1.*phi5)),1.); // <cos(n(5*phi1+2*phi2-4*phi3-2*phi4-1*phi5))>
21470        fMixedHarmonicsNestedLoops->Fill(70.5,cos(n*(5.*phi1+3.*phi2-4.*phi3-3.*phi4-1.*phi5)),1.); // <cos(n(5*phi1+3*phi2-4*phi3-3*phi4-1*phi5))>
21471        fMixedHarmonicsNestedLoops->Fill(71.5,cos(n*(5.*phi1+4.*phi2-4.*phi3-3.*phi4-2.*phi5)),1.); // <cos(n(5*phi1+4*phi2-4*phi3-3*phi4-2*phi5))>
21472        fMixedHarmonicsNestedLoops->Fill(72.5,cos(n*(5.*phi1+3.*phi2-5.*phi3-2.*phi4-1.*phi5)),1.); // <cos(n(5*phi1+3*phi2-5*phi3-2*phi4-1*phi5))>
21473        fMixedHarmonicsNestedLoops->Fill(73.5,cos(n*(5.*phi1+4.*phi2-5.*phi3-2.*phi4-2.*phi5)),1.); // <cos(n(5*phi1+4*phi2-5*phi3-2*phi4-2*phi5))>
21474        fMixedHarmonicsNestedLoops->Fill(74.5,cos(n*(5.*phi1+4.*phi2-5.*phi3-3.*phi4-1.*phi5)),1.); // <cos(n(5*phi1+4*phi2-5*phi3-3*phi4-1*phi5))>
21475        fMixedHarmonicsNestedLoops->Fill(75.5,cos(n*(6.*phi1+1.*phi2-3.*phi3-3.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+1*phi2-3*phi3-3*phi4-1*phi5))>
21476        fMixedHarmonicsNestedLoops->Fill(76.5,cos(n*(6.*phi1+2.*phi2-3.*phi3-3.*phi4-2.*phi5)),1.); // <cos(n(6*phi1+2*phi2-3*phi3-3*phi4-2*phi5))>
21477        fMixedHarmonicsNestedLoops->Fill(77.5,cos(n*(6.*phi1+1.*phi2-4.*phi3-2.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+1*phi2-4*phi3-2*phi4-1*phi5))>
21478        fMixedHarmonicsNestedLoops->Fill(78.5,cos(n*(6.*phi1+3.*phi2-4.*phi3-3.*phi4-2.*phi5)),1.); // <cos(n(6*phi1+3*phi2-4*phi3-3*phi4-2*phi5))>
21479        fMixedHarmonicsNestedLoops->Fill(79.5,cos(n*(6.*phi1+4.*phi2-4.*phi3-3.*phi4-3.*phi5)),1.); // <cos(n(6*phi1+4*phi2-4*phi3-3*phi4-3*phi5))>
21480        fMixedHarmonicsNestedLoops->Fill(80.5,cos(n*(6.*phi1+2.*phi2-5.*phi3-2.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+2*phi2-5*phi3-2*phi4-1*phi5))>
21481        fMixedHarmonicsNestedLoops->Fill(81.5,cos(n*(6.*phi1+3.*phi2-5.*phi3-3.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+3*phi2-5*phi3-3*phi4-1*phi5))>
21482        fMixedHarmonicsNestedLoops->Fill(82.5,cos(n*(6.*phi1+4.*phi2-5.*phi3-4.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+4*phi2-5*phi3-4*phi4-1*phi5))>
21483        fMixedHarmonicsNestedLoops->Fill(83.5,cos(n*(6.*phi1+5.*phi2-5.*phi3-3.*phi4-3.*phi5)),1.); // <cos(n(6*phi1+5*phi2-5*phi3-3*phi4-3*phi5))>
21484        fMixedHarmonicsNestedLoops->Fill(84.5,cos(n*(6.*phi1+2.*phi2-6.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+2*phi2-6*phi3-1*phi4-1*phi5))>
21485        fMixedHarmonicsNestedLoops->Fill(85.5,cos(n*(6.*phi1+3.*phi2-6.*phi3-2.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+3*phi2-6*phi3-2*phi4-1*phi5))>
21486        fMixedHarmonicsNestedLoops->Fill(86.5,cos(n*(6.*phi1+4.*phi2-6.*phi3-2.*phi4-2.*phi5)),1.); // <cos(n(6*phi1+4*phi2-6*phi3-2*phi4-2*phi5))>
21487        fMixedHarmonicsNestedLoops->Fill(87.5,cos(n*(6.*phi1+4.*phi2-6.*phi3-3.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+4*phi2-6*phi3-3*phi4-1*phi5))>
21488        fMixedHarmonicsNestedLoops->Fill(88.5,cos(n*(6.*phi1+5.*phi2-5.*phi3-4.*phi4-2.*phi5)),1.); // <cos(n(6*phi1+5*phi2-5*phi3-4*phi4-2*phi5))>
21489        fMixedHarmonicsNestedLoops->Fill(89.5,cos(n*(6.*phi1+5.*phi2-6.*phi3-3.*phi4-2.*phi5)),1.); // <cos(n(6*phi1+5*phi2-6*phi3-3*phi4-2*phi5))>
21490        fMixedHarmonicsNestedLoops->Fill(90.5,cos(n*(6.*phi1+5.*phi2-6.*phi3-4.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+5*phi2-6*phi3-4*phi4-1*phi5))>
21491        //fMixedHarmonicsNestedLoops->Fill(91.5,-44.,1.); // empty
21492        fMixedHarmonicsNestedLoops->Fill(92.5,cos(n*(2.*phi1+1.*phi2-1.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(2*phi1+1*phi2-1*phi3-1*phi4-1*phi5))>
21493        fMixedHarmonicsNestedLoops->Fill(93.5,cos(n*(2.*phi1+2.*phi2-2.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(2*phi1+2*phi2-2*phi3-1*phi4-1*phi5))>
21494        fMixedHarmonicsNestedLoops->Fill(94.5,cos(n*(3.*phi1+3.*phi2-2.*phi3-2.*phi4-2.*phi5)),1.); // <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-2*phi5))>
21495        fMixedHarmonicsNestedLoops->Fill(95.5,cos(n*(4.*phi1-1.*phi2-1.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(4*phi1-1*phi2-1*phi3-1*phi4-1*phi5))>
21496        fMixedHarmonicsNestedLoops->Fill(96.5,cos(n*(4.*phi1+2.*phi2-2.*phi3-2.*phi4-2.*phi5)),1.); // <cos(n(4*phi1+2*phi2-2*phi3-2*phi4-2*phi5))>
21497        fMixedHarmonicsNestedLoops->Fill(97.5,cos(n*(4.*phi1+4.*phi2-4.*phi3-2.*phi4-2.*phi5)),1.); // <cos(n(4*phi1+4*phi2-4*phi3-2*phi4-2*phi5))>
21498        fMixedHarmonicsNestedLoops->Fill(98.5,cos(n*(6.*phi1+3.*phi2-3.*phi3-3.*phi4-3.*phi5)),1.); // <cos(n(6*phi1+3*phi2-3*phi3-3*phi4-3*phi5))>
21499        fMixedHarmonicsNestedLoops->Fill(99.5,cos(n*(6.*phi1+6.*phi2-4.*phi3-4.*phi4-4.*phi5)),1.); // <cos(n(6*phi1+6*phi2-4*phi3-4*phi4-4*phi5))>
21500        fMixedHarmonicsNestedLoops->Fill(100.5,cos(n*(6.*phi1+6.*phi2-6.*phi3-3.*phi4-3.*phi5)),1.); // <cos(n(6*phi1+6*phi2-6*phi3-3*phi4-3*phi5))>
21501        //fMixedHarmonicsNestedLoops->Fill(101.5,-44.,1.); // empty
21502        fMixedHarmonicsNestedLoops->Fill(102.5,cos(n*(3.*phi1+1.*phi2-2.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(3*phi1+1*phi2-2*phi3-1*phi4-1*phi5))>
21503        fMixedHarmonicsNestedLoops->Fill(103.5,cos(n*(3.*phi1+2.*phi2-2.*phi3-2.*phi4-1.*phi5)),1.); // <cos(n(3*phi1+2*phi2-2*phi3-2*phi4-1*phi5))>
21504        fMixedHarmonicsNestedLoops->Fill(104.5,cos(n*(3.*phi1+3.*phi2-3.*phi3-2.*phi4-1.*phi5)),1.); // <cos(n(3*phi1+3*phi2-3*phi3-2*phi4-1*phi5))>
21505        fMixedHarmonicsNestedLoops->Fill(105.5,cos(n*(4.*phi1+1.*phi2-3.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(4*phi1+1*phi2-3*phi3-1*phi4-1*phi5))>
21506        fMixedHarmonicsNestedLoops->Fill(106.5,cos(n*(4.*phi1+1.*phi2+1.*phi3-3.*phi4-3.*phi5)),1.); // <cos(n(4*phi1+1*phi2+1*phi3-3*phi4-3*phi5))>
21507        fMixedHarmonicsNestedLoops->Fill(107.5,cos(n*(4.*phi1+3.*phi2-3.*phi3-3.*phi4-1.*phi5)),1.); // <cos(n(4*phi1+3*phi2-3*phi3-3*phi4-1*phi5))>
21508        fMixedHarmonicsNestedLoops->Fill(108.5,cos(n*(4.*phi1+4.*phi2-3.*phi3-3.*phi4-2.*phi5)),1.); // <cos(n(4*phi1+4*phi2-3*phi3-3*phi4-2*phi5))>
21509        fMixedHarmonicsNestedLoops->Fill(109.5,cos(n*(4.*phi1+4.*phi2-4.*phi3-3.*phi4-1.*phi5)),1.); // <cos(n(4*phi1+4*phi2-4*phi3-3*phi4-1*phi5))>
21510        fMixedHarmonicsNestedLoops->Fill(110.5,cos(n*(5.*phi1-2.*phi2-1.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(5*phi1-2*phi2-1*phi3-1*phi4-1*phi5))>
21511        fMixedHarmonicsNestedLoops->Fill(111.5,cos(n*(5.*phi1+1.*phi2-2.*phi3-2.*phi4-2.*phi5)),1.); // <cos(n(5*phi1+1*phi2-2*phi3-2*phi4-2*phi5))>
21512        fMixedHarmonicsNestedLoops->Fill(112.5,cos(n*(5.*phi1+2.*phi2-3.*phi3-2.*phi4-2.*phi5)),1.); // <cos(n(5*phi1+2*phi2-3*phi3-2*phi4-2*phi5))>
21513        fMixedHarmonicsNestedLoops->Fill(113.5,cos(n*(5.*phi1+3.*phi2-3.*phi3-3.*phi4-2.*phi5)),1.); // <cos(n(5*phi1+3*phi2-3*phi3-3*phi4-2*phi5))>
21514        fMixedHarmonicsNestedLoops->Fill(114.5,cos(n*(5.*phi1+1.*phi2-4.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(5*phi1+1*phi2-4*phi3-1*phi4-1*phi5))>
21515        fMixedHarmonicsNestedLoops->Fill(115.5,cos(n*(5.*phi1+4.*phi2-3.*phi3-3.*phi4-3.*phi5)),1.); // <cos(n(5*phi1+4*phi2-3*phi3-3*phi4-3*phi5))>
21516        fMixedHarmonicsNestedLoops->Fill(116.5,cos(n*(5.*phi1+4.*phi2-4.*phi3-4.*phi4-1.*phi5)),1.); // <cos(n(5*phi1+4*phi2-4*phi3-4*phi4-1*phi5))>
21517        fMixedHarmonicsNestedLoops->Fill(117.5,cos(n*(5.*phi1+5.*phi2-4.*phi3-3.*phi4-3.*phi5)),1.); // <cos(n(5*phi1+5*phi2-4*phi3-3*phi4-3*phi5))>
21518        fMixedHarmonicsNestedLoops->Fill(118.5,cos(n*(5.*phi1+5.*phi2-4.*phi3-4.*phi4-2.*phi5)),1.); // <cos(n(5*phi1+5*phi2-4*phi3-4*phi4-2*phi5))>
21519        fMixedHarmonicsNestedLoops->Fill(119.5,cos(n*(5.*phi1+5.*phi2-5.*phi3-3.*phi4-2.*phi5)),1.); // <cos(n(5*phi1+5*phi2-5*phi3-3*phi4-2*phi5))>
21520        fMixedHarmonicsNestedLoops->Fill(120.5,cos(n*(5.*phi1+5.*phi2-5.*phi3-4.*phi4-1.*phi5)),1.); // <cos(n(5*phi1+5*phi2-5*phi3-4*phi4-1*phi5))>
21521        fMixedHarmonicsNestedLoops->Fill(121.5,cos(n*(6.*phi1-2.*phi2-2.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(6*phi1-2*phi2-2*phi3-1*phi4-1*phi5))>
21522        fMixedHarmonicsNestedLoops->Fill(122.5,cos(n*(6.*phi1-3.*phi2-1.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(6*phi1-3*phi2-1*phi3-1*phi4-1*phi5))>
21523        fMixedHarmonicsNestedLoops->Fill(123.5,cos(n*(6.*phi1+1.*phi2+1.*phi3-4.*phi4-4.*phi5)),1.); // <cos(n(6*phi1+1*phi2+1*phi3-4*phi4-4*phi5))>
21524        fMixedHarmonicsNestedLoops->Fill(124.5,cos(n*(6.*phi1+1.*phi2-5.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+1*phi2-5*phi3-1*phi4-1*phi5))>
21525        fMixedHarmonicsNestedLoops->Fill(125.5,cos(n*(6.*phi1+2.*phi2-4.*phi3-2.*phi4-2.*phi5)),1.); // <cos(n(6*phi1+2*phi2-4*phi3-2*phi4-2*phi5))>
21526        fMixedHarmonicsNestedLoops->Fill(126.5,cos(n*(6.*phi1+4.*phi2-4.*phi3-4.*phi4-2.*phi5)),1.); // <cos(n(6*phi1+4*phi2-4*phi3-4*phi4-2*phi5))>
21527        fMixedHarmonicsNestedLoops->Fill(127.5,cos(n*(6.*phi1+2.*phi2+2.*phi3-5.*phi4-5.*phi5)),1.); // <cos(n(6*phi1+2*phi2+2*phi3-5*phi4-5*phi5))>
21528        fMixedHarmonicsNestedLoops->Fill(128.5,cos(n*(6.*phi1+5.*phi2-5.*phi3-5.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+5*phi2-5*phi3-5*phi4-1*phi5))>
21529        fMixedHarmonicsNestedLoops->Fill(129.5,cos(n*(6.*phi1+6.*phi2-5.*phi3-5.*phi4-2.*phi5)),1.); // <cos(n(6*phi1+6*phi2-5*phi3-5*phi4-2*phi5))>
21530        fMixedHarmonicsNestedLoops->Fill(130.5,cos(n*(6.*phi1+6.*phi2-6.*phi3-4.*phi4-2.*phi5)),1.); // <cos(n(6*phi1+6*phi2-6*phi3-4*phi4-2*phi5))>
21531        fMixedHarmonicsNestedLoops->Fill(131.5,cos(n*(6.*phi1+6.*phi2-6.*phi3-5.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+6*phi2-6*phi3-5*phi4-1*phi5))> // TBI swap with the one above
21532        //fMixedHarmonicsNestedLoops->Fill(132.5,-44.,1.); // empty
21533        fMixedHarmonicsNestedLoops->Fill(133.5,cos(n*(5.*phi1+2.*phi2-3.*phi3-3.*phi4-1.*phi5)),1.); // <cos(n(5*phi1+2*phi2-3*phi3-3*phi4-1*phi5))>
21534        fMixedHarmonicsNestedLoops->Fill(134.5,cos(n*(5.*phi1+1.*phi2+1.*phi3-4.*phi4-3.*phi5)),1.); // <cos(n(5*phi1+1*phi2+1*phi3-4*phi4-3*phi5))>
21535        fMixedHarmonicsNestedLoops->Fill(135.5,cos(n*(5.*phi1+3.*phi2-4.*phi3-2.*phi4-2.*phi5)),1.); // <cos(n(5*phi1+3*phi2-4*phi3-2*phi4-2*phi5))>
21536        fMixedHarmonicsNestedLoops->Fill(136.5,cos(n*(5.*phi1+2.*phi2+1.*phi3-4.*phi4-4.*phi5)),1.); // <cos(n(5*phi1+2*phi2+1*phi3-4*phi4-4*phi5))>
21537        fMixedHarmonicsNestedLoops->Fill(137.5,cos(n*(6.*phi1+1.*phi2-3.*phi3-2.*phi4-2.*phi5)),1.); // <cos(n(6*phi1+1*phi2-3*phi3-2*phi4-2*phi5))>
21538        fMixedHarmonicsNestedLoops->Fill(138.5,cos(n*(6.*phi1+3.*phi2-4.*phi3-4.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+3*phi2-4*phi3-4*phi4-1*phi5))>
21539        fMixedHarmonicsNestedLoops->Fill(139.5,cos(n*(6.*phi1+1.*phi2+1.*phi3-5.*phi4-3.*phi5)),1.); // <cos(n(6*phi1+1*phi2+1*phi3-5*phi4-3*phi5))>
21540        fMixedHarmonicsNestedLoops->Fill(140.5,cos(n*(6.*phi1+3.*phi2-5.*phi3-2.*phi4-2.*phi5)),1.); // <cos(n(6*phi1+3*phi2-5*phi3-2*phi4-2*phi5))>
21541        fMixedHarmonicsNestedLoops->Fill(141.5,cos(n*(6.*phi1+5.*phi2-4.*phi3-4.*phi4-3.*phi5)),1.); // <cos(n(6*phi1+5*phi2-4*phi3-4*phi4-3*phi5))>
21542        fMixedHarmonicsNestedLoops->Fill(142.5,cos(n*(6.*phi1+3.*phi2+1.*phi3-5.*phi4-5.*phi5)),1.); // <cos(n(6*phi1+3*phi2+1*phi3-5*phi4-5*phi5))>
21543        fMixedHarmonicsNestedLoops->Fill(143.5,cos(n*(6.*phi1+6.*phi2-5.*phi3-4.*phi4-3.*phi5)),1.); // <cos(n(6*phi1+6*phi2-5*phi3-4*phi4-3*phi5))>
21544        //fMixedHarmonicsNestedLoops->Fill(144.5,-44.,1.); // empty
21545        fMixedHarmonicsNestedLoops->Fill(145.5,cos(n*(6.*phi1+2.*phi2-4.*phi3-3.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+2*phi2-4*phi3-3*phi4-1*phi5))>
21546        fMixedHarmonicsNestedLoops->Fill(146.5,cos(n*(6.*phi1+2.*phi2+1.*phi3-5.*phi4-4.*phi5)),1.); // <cos(n(6*phi1+2*phi2+1*phi3-5*phi4-4*phi5))>
21547        fMixedHarmonicsNestedLoops->Fill(147.5,cos(n*(6.*phi1+4.*phi2-5.*phi3-3.*phi4-2.*phi5)),1.); // <cos(n(6*phi1+4*phi2-5*phi3-3*phi4-2*phi5))>
21548       } // end of for(Int_t i5=0;i5<nPrim;i5++)
21549      } // end of for(Int_t i4=0;i4<nPrim;i4++)  
21550     } // end of for(Int_t i3=0;i3<nPrim;i3++)
21551    } // end of for(Int_t i2=0;i2<nPrim;i2++)
21552   } // end of for(Int_t i1=0;i1<nPrim;i1++)
21553  } // end of if(nPrim>=5)
21554
21555  // QW44
21556
21557 } // end of void AliFlowAnalysisWithQCumulants::EvaluateMixedHarmonicsWithNestedLoops(AliFlowEventSimple * const anEvent)
21558
21559 //================================================================================================================
21560
21561 void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowCorrelations()
21562 {
21563  // Cross-check results for multiparticle correlations needed for int. flow: results from Q-vectors vs results from nested loops.
21564
21565  cout<<endl;
21566  cout<<endl;
21567  cout<<"   *****************************************"<<endl;
21568  cout<<"   **** cross-checking the correlations ****"<<endl;
21569  cout<<"   ****       for integrated flow       ****"<<endl;
21570  if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
21571  {
21572   cout<<"   ****   (particle weights not used)   ****"<<endl;
21573  } else
21574    {
21575     cout<<"   ****     (particle weights used)     ****"<<endl;
21576    } 
21577  cout<<"   *****************************************"<<endl;
21578  cout<<endl;
21579  cout<<endl;
21580
21581  Int_t ciMax = 64; // to be improved (removed eventually when I calculate 6th and 8th order with particle weights)
21582  
21583  if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
21584  {
21585   ciMax = 11;
21586  }
21587
21588  for(Int_t ci=1;ci<=ciMax;ci++)
21589  {
21590   if(strcmp((fIntFlowCorrelationsAllPro->GetXaxis())->GetBinLabel(ci), "") == 0) continue; // to be improved (access finalized histogram here)
21591   cout<<(fIntFlowCorrelationsAllPro->GetXaxis())->GetBinLabel(ci)<<":"<<endl; // to be improved (access finalized histogram here)
21592   cout<<"from Q-vectors    = "<<fIntFlowCorrelationsAllPro->GetBinContent(ci)<<endl; // to be improved (access finalized histogram here)
21593   cout<<"from nested loops = "<<fIntFlowDirectCorrelations->GetBinContent(ci)<<endl;
21594   cout<<endl;
21595  }
21596
21597  if(!fCalculateMixedHarmonics){return;}
21598
21599  cout<<endl;
21600  cout<<endl;
21601  cout<<"   *****************************************"<<endl;
21602  cout<<"   **** cross-checking the correlations ****"<<endl;
21603  cout<<"   ****       for mixed harmonics       ****"<<endl;
21604  cout<<"   *****************************************"<<endl;
21605  cout<<endl;
21606  cout<<endl;
21607
21608  // 2-p:
21609  for(Int_t ci=1;ci<=6;ci++)
21610  {
21611   cout<<(f2pCorrelations->GetXaxis())->GetBinLabel(ci)<<":"<<endl;
21612   cout<<"from Q-vectors    = "<<f2pCorrelations->GetBinContent(ci)<<endl; 
21613   cout<<"from nested loops = "<<fMixedHarmonicsNestedLoops->GetBinContent(ci)<<endl;
21614   cout<<endl;
21615  } // end of for(Int_t ci=1;ci<=6;ci++)
21616
21617  // 3-p:
21618  for(Int_t ci=1;ci<=10;ci++)
21619  {
21620   if(4==ci){continue;} // skipping the empty bins
21621   cout<<(f3pCorrelations->GetXaxis())->GetBinLabel(ci)<<":"<<endl;
21622   cout<<"from Q-vectors    = "<<f3pCorrelations->GetBinContent(ci)<<endl; 
21623   cout<<"from nested loops = "<<fMixedHarmonicsNestedLoops->GetBinContent(ci+6)<<endl;
21624   cout<<endl;
21625  } // end of for(Int_t ci=1;ci<=10;ci++)
21626
21627  // 4-p:
21628  for(Int_t ci=1;ci<=45;ci++)
21629  {
21630   if(7==ci||23==ci||26==ci||37==ci){continue;} // skipping the empty bins
21631   cout<<(f4pCorrelations->GetXaxis())->GetBinLabel(ci)<<":"<<endl;
21632   cout<<"from Q-vectors    = "<<f4pCorrelations->GetBinContent(ci)<<endl; 
21633   cout<<"from nested loops = "<<fMixedHarmonicsNestedLoops->GetBinContent(ci+6+10)<<endl;
21634   //if(TMath::Abs(f4pCorrelations->GetBinContent(ci)-fMixedHarmonicsNestedLoops->GetBinContent(ci+6+10))
21635   //   > 1.e-10){exit(0);}
21636   cout<<endl;
21637  } // end of for(Int_t ci=1;ci<=45;ci++)
21638
21639  for(Int_t ci=1;ci<=87;ci++)
21640  {
21641   if(31==ci||41==ci||72==ci||84==ci){continue;} // skipping the empty bins
21642   cout<<(f5pCorrelations->GetXaxis())->GetBinLabel(ci)<<":"<<endl;
21643   cout<<"from Q-vectors    = "<<f5pCorrelations->GetBinContent(ci)<<endl; 
21644   cout<<"from nested loops = "<<fMixedHarmonicsNestedLoops->GetBinContent(ci+6+10+45)<<endl;
21645   if(TMath::Abs(f5pCorrelations->GetBinContent(ci)-fMixedHarmonicsNestedLoops->GetBinContent(ci+6+10+45))
21646      > 1.e-10){exit(0);}
21647   cout<<endl;
21648  } // end of for(Int_t ci=1;ci<=87;ci++)
21649
21650  return;
21651
21652 } // end of void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowCorrelations()
21653
21654 //=======================================================================================================================
21655
21656 void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowCorrectionTermsForNUA()
21657 {
21658  // Cross-check results for corrections terms for non-uniform acceptance needed for int. flow: results from Q-vectors vs results from nested loops.
21659
21660  cout<<endl;
21661  cout<<endl;
21662  cout<<"   *********************************************"<<endl;
21663  cout<<"   **** cross-checking the correction terms ****"<<endl;
21664  cout<<"   **** for non-uniform acceptance relevant ****"<<endl;
21665  cout<<"   ****         for integrated flow         ****"<<endl;
21666  if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
21667  {
21668   cout<<"   ****     (particle weights not used)     ****"<<endl;
21669  } else
21670    {
21671     cout<<"   ****       (particle weights used)       ****"<<endl;
21672    } 
21673  cout<<"   *********************************************"<<endl;
21674  cout<<endl;
21675  cout<<endl;
21676
21677  for(Int_t ci=1;ci<=4;ci++) // correction term index (to be improved - hardwired 4)
21678  {
21679   for(Int_t sc=0;sc<2;sc++) // sin or cos term
21680   {
21681    if(strcmp((fIntFlowCorrectionTermsForNUAPro[sc]->GetXaxis())->GetBinLabel(ci), "") == 0) continue; // to be improved (access finalized histogram here)
21682    cout<<(fIntFlowCorrectionTermsForNUAPro[sc]->GetXaxis())->GetBinLabel(ci)<<":"<<endl; // to be improved (access finalized histogram here)
21683    cout<<"from Q-vectors    = "<<fIntFlowCorrectionTermsForNUAPro[sc]->GetBinContent(ci)<<endl; // to be improved (access finalized histogram here)
21684    cout<<"from nested loops = "<<fIntFlowDirectCorrectionTermsForNUA[sc]->GetBinContent(ci)<<endl;
21685    cout<<endl;
21686   } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos term
21687  } // end of for(Int_t ci=1;ci<=10;ci++) // correction term index
21688   
21689 } // end of void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowCorrectionTermsForNUA() 
21690
21691 //=======================================================================================================================
21692
21693 void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrelationsWithNestedLoopsUsingParticleWeights(AliFlowEventSimple * const anEvent)
21694 {
21695  // Evaluate with nested loops multiparticle correlations for integrated flow (using the particle weights). 
21696
21697  // Results are stored in profile fIntFlowDirectCorrelations. 
21698  // Remark 1: When particle weights are used the binning of fIntFlowDirectCorrelations is organized as follows:
21699  //
21700  //  1st bin: <2>_{1n|1n} = two1n1nW1W1 = <w1 w2 cos(n*(phi1-phi2))>
21701  //  2nd bin: <2>_{2n|2n} = two2n2nW2W2 = <w1^2 w2^2 cos(2n*(phi1-phi2))>
21702  //  3rd bin: <2>_{3n|3n} = two3n3nW3W3 = <w1^3 w2^3 cos(3n*(phi1-phi2))> 
21703  //  4th bin: <2>_{4n|4n} = two4n4nW4W4 = <w1^4 w2^4 cos(4n*(phi1-phi2))>
21704  //  5th bin:           ----  EMPTY ----
21705  //  6th bin: <3>_{2n|1n,1n} = three2n1n1nW2W1W1 = <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
21706  //  7th bin: <3>_{3n|2n,1n} = ...
21707  //  8th bin: <3>_{4n|2n,2n} = ...
21708  //  9th bin: <3>_{4n|3n,1n} = ...
21709  // 10th bin:           ----  EMPTY ----
21710  // 11th bin: <4>_{1n,1n|1n,1n} = four1n1n1n1nW1W1W1W1 = <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))>
21711  // 12th bin: <4>_{2n,1n|2n,1n} = ...
21712  // 13th bin: <4>_{2n,2n|2n,2n} = ...
21713  // 14th bin: <4>_{3n|1n,1n,1n} = ... 
21714  // 15th bin: <4>_{3n,1n|3n,1n} = ...
21715  // 16th bin: <4>_{3n,1n|2n,2n} = ...
21716  // 17th bin: <4>_{4n|2n,1n,1n} = ... 
21717  // 18th bin:           ----  EMPTY ----
21718  // 19th bin: <5>_{2n|1n,1n,1n,1n} = ...
21719  // 20th bin: <5>_{2n,2n|2n,1n,1n} = ...
21720  // 21st bin: <5>_{3n,1n|2n,1n,1n} = ...
21721  // 22nd bin: <5>_{4n|1n,1n,1n,1n} = ...
21722  // 23rd bin:           ----  EMPTY ----
21723  // 24th bin: <6>_{1n,1n,1n|1n,1n,1n} = ...
21724  // 25th bin: <6>_{2n,1n,1n|2n,1n,1n} = ...
21725  // 26th bin: <6>_{2n,2n|1n,1n,1n,1n} = ...
21726  // 27th bin: <6>_{3n,1n|1n,1n,1n,1n} = ...
21727  // 28th bin:           ----  EMPTY ----
21728  // 29th bin: <7>_{2n,1n,1n|1n,1n,1n,1n} = ...
21729  // 30th bin:           ----  EMPTY ----
21730  // 31st bin: <8>_{1n,1n,1n,1n|1n,1n,1n,1n} = ...
21731  
21732  // Remark 2: When particle weights are used there are some extra correlations. They are stored in 
21733  // fIntFlowExtraDirectCorrelations binning of which is organized as follows:
21734  
21735  // 1st bin: two1n1nW3W1 = <w1^3 w2 cos(n*(phi1-phi2))>
21736  // 2nd bin: two1n1nW1W1W2 = <w1 w2 w3^2 cos(n*(phi1-phi2))>  
21737  // ...
21738  
21739  Int_t nPrim = anEvent->NumberOfTracks(); 
21740  AliFlowTrackSimple *aftsTrack = NULL;
21741  //Double_t phi1=0., phi2=0., phi3=0., phi4=0., phi5=0., phi6=0., phi7=0., phi8=0.;
21742  //Double_t wPhi1=1., wPhi2=1., wPhi3=1., wPhi4=1., wPhi5=1., wPhi6=1., wPhi7=1., wPhi8=1.;
21743  Double_t phi1=0., phi2=0., phi3=0., phi4=0.;
21744  Double_t wPhi1=1., wPhi2=1., wPhi3=1., wPhi4=1.;
21745  Int_t n = fHarmonic; 
21746  Int_t eventNo = (Int_t)fAvMultiplicity->GetBinEntries(1); // to be improved (is this casting safe in general?)
21747  Double_t dMult = (*fSpk)(0,0);
21748  cout<<endl;
21749  cout<<"Multiparticle correlations: Event number: "<<eventNo<<", multiplicity is "<<dMult<<endl;
21750  if(dMult<2)
21751  {
21752   cout<<"... skipping this event (multiplicity too low) ..."<<endl;
21753  } else if (dMult>fMaxAllowedMultiplicity)
21754    {
21755     cout<<"... skipping this event (multiplicity too high) ..."<<endl;
21756    } else 
21757      { 
21758       cout<<"... evaluating nested loops (using particle weights) ..."<<endl;
21759      } 
21760       
21761  // 2-particle correlations:       
21762  if(nPrim>=2 && nPrim<=fMaxAllowedMultiplicity)
21763  {
21764   // 2 nested loops multiparticle correlations using particle weights:       
21765   for(Int_t i1=0;i1<nPrim;i1++)
21766   {
21767    aftsTrack=anEvent->GetTrack(i1);
21768    if(!(aftsTrack->InRPSelection())) continue;
21769    phi1=aftsTrack->Phi();
21770    if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
21771    for(Int_t i2=0;i2<nPrim;i2++)
21772    {
21773     if(i2==i1)continue;
21774     aftsTrack=anEvent->GetTrack(i2);
21775     if(!(aftsTrack->InRPSelection())) continue;
21776     phi2=aftsTrack->Phi();
21777     if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));   
21778     if(nPrim==2) cout<<i1<<" "<<i2<<"\r"<<flush;
21779     // 2-p correlations using particle weights:
21780     if(fUsePhiWeights) fIntFlowDirectCorrelations->Fill(0.5,cos(n*(phi1-phi2)),wPhi1*wPhi2);                  // <w1   w2   cos( n*(phi1-phi2))>
21781     if(fUsePhiWeights) fIntFlowDirectCorrelations->Fill(1.5,cos(2.*n*(phi1-phi2)),pow(wPhi1,2)*pow(wPhi2,2)); // <w1^2 w2^2 cos(2n*(phi1-phi2))>
21782     if(fUsePhiWeights) fIntFlowDirectCorrelations->Fill(2.5,cos(3.*n*(phi1-phi2)),pow(wPhi1,3)*pow(wPhi2,3)); // <w1^3 w2^3 cos(3n*(phi1-phi2))>
21783     if(fUsePhiWeights) fIntFlowDirectCorrelations->Fill(3.5,cos(4.*n*(phi1-phi2)),pow(wPhi1,4)*pow(wPhi2,4)); // <w1^4 w2^4 cos(4n*(phi1-phi2))> 
21784     // extra correlations: 
21785     // 2-p extra correlations (do not appear if particle weights are not used):
21786     if(fUsePhiWeights) fIntFlowExtraDirectCorrelations->Fill(0.5,cos(n*(phi1-phi2)),pow(wPhi1,3)*wPhi2); // <w1^3 w2 cos(n*(phi1-phi2))>
21787     // ...
21788    } // end of for(Int_t i2=0;i2<nPrim;i2++)
21789   } // end of for(Int_t i1=0;i1<nPrim;i1++)
21790  } // end of if(nPrim>=2)
21791
21792  if(nPrim>=3 && nPrim<=fMaxAllowedMultiplicity)
21793  { 
21794   // 3 nested loops multiparticle correlations using particle weights:       
21795   for(Int_t i1=0;i1<nPrim;i1++)
21796   {
21797    aftsTrack=anEvent->GetTrack(i1);
21798    if(!(aftsTrack->InRPSelection())) continue;
21799    phi1=aftsTrack->Phi();
21800    if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
21801    for(Int_t i2=0;i2<nPrim;i2++)
21802    {
21803     if(i2==i1)continue;
21804     aftsTrack=anEvent->GetTrack(i2);
21805     if(!(aftsTrack->InRPSelection())) continue;
21806     phi2=aftsTrack->Phi();
21807     if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
21808     for(Int_t i3=0;i3<nPrim;i3++)
21809     {
21810      if(i3==i1||i3==i2)continue;
21811      aftsTrack=anEvent->GetTrack(i3);
21812      if(!(aftsTrack->InRPSelection())) continue;
21813      phi3=aftsTrack->Phi();
21814      if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
21815      if(nPrim==3) cout<<i1<<" "<<i2<<" "<<i3<<"\r"<<flush;
21816      // 3-p correlations using particle weights:
21817      if(fUsePhiWeights) fIntFlowDirectCorrelations->Fill(5.5,cos(2.*n*phi1-n*(phi2+phi3)),pow(wPhi1,2)*wPhi2*wPhi3); // <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
21818      // ...
21819      // extra correlations: 
21820      // 2-p extra correlations (do not appear if particle weights are not used):
21821       if(fUsePhiWeights) fIntFlowExtraDirectCorrelations->Fill(1.5,cos(n*(phi1-phi2)),wPhi1*wPhi2*pow(wPhi3,2)); // <w1 w2 w3^2 cos(n*(phi1-phi2))>
21822      // ...
21823      // 3-p extra correlations (do not appear if particle weights are not used):
21824      // ...
21825     } // end of for(Int_t i3=0;i3<nPrim;i3++)
21826    } // end of for(Int_t i2=0;i2<nPrim;i2++)
21827   } // end of for(Int_t i1=0;i1<nPrim;i1++)
21828  } // end of if(nPrim>=3)
21829  
21830  if(nPrim>=4 && nPrim<=fMaxAllowedMultiplicity)
21831  {
21832   // 4 nested loops multiparticle correlations using particle weights:       
21833   for(Int_t i1=0;i1<nPrim;i1++)
21834   {
21835    aftsTrack=anEvent->GetTrack(i1);
21836    if(!(aftsTrack->InRPSelection())) continue;
21837    phi1=aftsTrack->Phi();
21838    if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
21839    for(Int_t i2=0;i2<nPrim;i2++)
21840    {
21841     if(i2==i1)continue;
21842     aftsTrack=anEvent->GetTrack(i2);
21843     if(!(aftsTrack->InRPSelection())) continue;
21844     phi2=aftsTrack->Phi();
21845     if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
21846     for(Int_t i3=0;i3<nPrim;i3++)
21847     {
21848      if(i3==i1||i3==i2)continue;
21849      aftsTrack=anEvent->GetTrack(i3);
21850      if(!(aftsTrack->InRPSelection())) continue;
21851      phi3=aftsTrack->Phi();
21852      if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
21853      for(Int_t i4=0;i4<nPrim;i4++)
21854      {
21855       if(i4==i1||i4==i2||i4==i3)continue;
21856       aftsTrack=anEvent->GetTrack(i4);
21857       if(!(aftsTrack->InRPSelection())) continue;
21858       phi4=aftsTrack->Phi();
21859       if(fUsePhiWeights && fPhiWeights) wPhi4 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*fnBinsPhi/TMath::TwoPi())));
21860       if(nPrim>=4) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<"\r"<<flush; // to be improved (replace eventually this if statement with if(nPrim==4))
21861       // 4-p correlations using particle weights:
21862       if(fUsePhiWeights) fIntFlowDirectCorrelations->Fill(10.5,cos(n*phi1+n*phi2-n*phi3-n*phi4),wPhi1*wPhi2*wPhi3*wPhi4); 
21863       // extra correlations: 
21864       // 2-p extra correlations (do not appear if particle weights are not used):
21865       // ...
21866       // 3-p extra correlations (do not appear if particle weights are not used):
21867       // ...
21868       // 4-p extra correlations (do not appear if particle weights are not used):
21869       // ...
21870      } // end of for(Int_t i4=0;i4<nPrim;i4++) 
21871     } // end of for(Int_t i3=0;i3<nPrim;i3++)
21872    } // end of for(Int_t i2=0;i2<nPrim;i2++)
21873   } // end of for(Int_t i1=0;i1<nPrim;i1++)
21874  } // end of if(nPrim>=4)
21875
21876  cout<<endl; 
21877
21878 } // end of void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrelationsWithNestedLoopsUsingParticleWeights(AliFlowEventSimple* anEvent)
21879
21880 //=======================================================================================================================
21881
21882 void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowExtraCorrelations()
21883 {
21884  // Cross-check results for extra multiparticle correlations needed for int. flow 
21885  // which appear only when particle weights are used: results from Q-vectors vs results from nested loops.
21886
21887  cout<<endl;
21888  cout<<endl;
21889  cout<<"   ***********************************************"<<endl;
21890  cout<<"   **** cross-checking the extra correlations ****"<<endl;
21891  cout<<"   ****          for integrated flow          ****"<<endl;
21892  cout<<"   ***********************************************"<<endl;
21893  cout<<endl;
21894  cout<<endl;
21895  
21896  for(Int_t eci=1;eci<=2;eci++) // to be improved (increased eciMax eventually when I calculate 6th and 8th)
21897  {
21898   if(strcmp((fIntFlowExtraCorrelationsPro->GetXaxis())->GetBinLabel(eci), "") == 0) continue;
21899   cout<<(fIntFlowExtraCorrelationsPro->GetXaxis())->GetBinLabel(eci)<<":"<<endl;
21900   cout<<"from Q-vectors    = "<<fIntFlowExtraCorrelationsPro->GetBinContent(eci)<<endl;
21901   cout<<"from nested loops = "<<fIntFlowExtraDirectCorrelations->GetBinContent(eci)<<endl;
21902   cout<<endl;
21903  }
21904
21905 } // end of void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowExtraCorrelations()
21906
21907 //=======================================================================================================================
21908
21909 void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrectionsForNUAWithNestedLoops(AliFlowEventSimple * const anEvent)
21910 {
21911  // Evaluate with nested loops correction terms for non-uniform acceptance relevant for NONAME integrated flow (to be improved (name)).
21912  //
21913  // Remark: Both sin and cos correction terms are calculated in this method. Sin terms are stored in fIntFlowDirectCorrectionTermsForNUA[0],
21914  // and cos terms in fIntFlowDirectCorrectionTermsForNUA[1]. Binning of fIntFlowDirectCorrectionTermsForNUA[sc] is organized as follows 
21915  // (sc stands for either sin or cos):
21916  
21917  //  1st bin: <<sc(n*(phi1))>> 
21918  //  2nd bin: <<sc(n*(phi1+phi2))>> 
21919  //  3rd bin: <<sc(n*(phi1-phi2-phi3))>>
21920  //  4th bin: <<sc(n*(2phi1-phi2))>>
21921  
21922  Int_t nPrim = anEvent->NumberOfTracks(); 
21923  AliFlowTrackSimple *aftsTrack = NULL;
21924  Double_t phi1=0., phi2=0., phi3=0.;
21925  Int_t n = fHarmonic; 
21926  Int_t eventNo = (Int_t)fAvMultiplicity->GetBinEntries(1); // to be improved (is this casting safe in general?)
21927  Double_t dMult = (*fSpk)(0,0);
21928  cout<<endl;
21929  cout<<"Correction terms for non-uniform acceptance: Event number: "<<eventNo<<", multiplicity is "<<dMult<<endl;
21930  if(dMult<1)
21931  {
21932   cout<<"... skipping this event (multiplicity too low) ..."<<endl;
21933  } else if (dMult>fMaxAllowedMultiplicity)
21934    {
21935     cout<<"... skipping this event (multiplicity too high) ..."<<endl;
21936    } else 
21937      { 
21938       cout<<"... evaluating nested loops (without using particle weights)..."<<endl;
21939      }
21940  
21941  if(nPrim>=1 && nPrim<=fMaxAllowedMultiplicity)
21942  {
21943   // 1-particle correction terms for non-uniform acceptance:       
21944   for(Int_t i1=0;i1<nPrim;i1++)
21945   {
21946    aftsTrack=anEvent->GetTrack(i1);
21947    if(!(aftsTrack->InRPSelection())) continue;
21948    phi1=aftsTrack->Phi();
21949    if(nPrim==1) cout<<i1<<"\r"<<flush;
21950    // sin terms:
21951    fIntFlowDirectCorrectionTermsForNUA[0]->Fill(0.5,sin(n*phi1),1.); // <sin(n*phi1)>  
21952    // cos terms:
21953    fIntFlowDirectCorrectionTermsForNUA[1]->Fill(0.5,cos(n*phi1),1.); // <cos(n*phi1)>
21954   } // end of for(Int_t i1=0;i1<nPrim;i1++)
21955  } // end of if(nPrim>=1) 
21956   
21957  if(nPrim>=2 && nPrim<=fMaxAllowedMultiplicity)
21958  {
21959   // 2-particle correction terms for non-uniform acceptance:       
21960   for(Int_t i1=0;i1<nPrim;i1++)
21961   {
21962    aftsTrack=anEvent->GetTrack(i1);
21963    if(!(aftsTrack->InRPSelection())) continue;
21964    phi1=aftsTrack->Phi();  
21965    for(Int_t i2=0;i2<nPrim;i2++)
21966    {
21967     if(i2==i1)continue;
21968     aftsTrack=anEvent->GetTrack(i2);
21969     if(!(aftsTrack->InRPSelection())) continue;
21970     phi2=aftsTrack->Phi();
21971     if(nPrim==2) cout<<i1<<" "<<i2<<"\r"<<flush;
21972     // sin terms:
21973     fIntFlowDirectCorrectionTermsForNUA[0]->Fill(1.5,sin(n*(phi1+phi2)),1.); // <<sin(n*(phi1+phi2))>>
21974     fIntFlowDirectCorrectionTermsForNUA[0]->Fill(3.5,sin(n*(2*phi1-phi2)),1.); // <<sin(n*(2*phi1-phi2))>>
21975     // cos terms:
21976     fIntFlowDirectCorrectionTermsForNUA[1]->Fill(1.5,cos(n*(phi1+phi2)),1.); // <<cos(n*(phi1+phi2))>>
21977     fIntFlowDirectCorrectionTermsForNUA[1]->Fill(3.5,cos(n*(2*phi1-phi2)),1.); // <<cos(n*(2*phi1-phi2))>>
21978    } // end of for(Int_t i2=0;i2<nPrim;i2++)
21979   } // end of for(Int_t i1=0;i1<nPrim;i1++)
21980  } // end of if(nPrim>=2)
21981
21982  if(nPrim>=3 && nPrim<=fMaxAllowedMultiplicity)
21983  {
21984   // 3-particle correction terms for non-uniform acceptance:       
21985   for(Int_t i1=0;i1<nPrim;i1++)
21986   {
21987    aftsTrack=anEvent->GetTrack(i1);
21988    if(!(aftsTrack->InRPSelection())) continue;
21989    phi1=aftsTrack->Phi();
21990    for(Int_t i2=0;i2<nPrim;i2++)
21991    {
21992     if(i2==i1)continue;
21993     aftsTrack=anEvent->GetTrack(i2);
21994     if(!(aftsTrack->InRPSelection())) continue;
21995     phi2=aftsTrack->Phi();
21996     for(Int_t i3=0;i3<nPrim;i3++)
21997     {
21998      if(i3==i1||i3==i2)continue;
21999      aftsTrack=anEvent->GetTrack(i3);
22000      if(!(aftsTrack->InRPSelection())) continue;
22001      phi3=aftsTrack->Phi();
22002      if(nPrim>=3) cout<<i1<<" "<<i2<<" "<<i3<<"\r"<<flush; // to be improved (eventually I will change this if statement)
22003      // sin terms:
22004      fIntFlowDirectCorrectionTermsForNUA[0]->Fill(2.5,sin(n*(phi1-phi2-phi3)),1.); // <<sin(n*(phi1-phi2-phi3))>>
22005      // cos terms:
22006      fIntFlowDirectCorrectionTermsForNUA[1]->Fill(2.5,cos(n*(phi1-phi2-phi3)),1.); // <<cos(n*(phi1-phi2-phi3))>>
22007     } // end of for(Int_t i3=0;i3<nPrim;i3++)
22008    } // end of for(Int_t i2=0;i2<nPrim;i2++)
22009   } // end of for(Int_t i1=0;i1<nPrim;i1++)
22010  } // end of if(nPrim>=3)
22011
22012  cout<<endl;
22013 }
22014
22015 //=======================================================================================================================
22016
22017 void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrelationsWithNestedLoops(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
22018 {
22019  // Evaluate reduced correlations with nested loops without using the particle weights.
22020  
22021  // Remark 1: Reduced correlations are evaluated in pt bin number fCrossCheckInPtBinNo and eta bin number fCrossCheckInEtaBinNo both for RPs and POIs.
22022  // Remark 2: Results are stored in 1 bin profiles fDiffFlowDirectCorrelations[t][pe][ci], where indices runs as follows:
22023  //           [0=RP,1=POI][0=Pt,1=Eta][0=<2'>,1=<4'>,2=<6'>,3=<8'>] 
22024  // Remark 3: <2'> = <cos(n*(psi1-phi2))>
22025  //           <4'> = <cos(n*(psi1+phi2-phi3-phi4))>
22026  // ...
22027  
22028  Int_t typeFlag = 0;
22029  Int_t ptEtaFlag = 0;
22030  if(type == "RP")
22031  {
22032   typeFlag = 0;
22033  } else if(type == "POI")
22034    {
22035     typeFlag = 1;
22036    }      
22037  if(ptOrEta == "Pt")
22038  {
22039   ptEtaFlag = 0;
22040  } else if(ptOrEta == "Eta")
22041    {
22042     ptEtaFlag = 1;
22043    } 
22044  // shortcuts:
22045  Int_t t = typeFlag;
22046  Int_t pe = ptEtaFlag;
22047       
22048  Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22049  Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22050  Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
22051  
22052  Int_t nPrim = anEvent->NumberOfTracks(); 
22053  AliFlowTrackSimple *aftsTrack = NULL;
22054  
22055  Double_t psi1=0., phi2=0., phi3=0., phi4=0.;// phi5=0., phi6=0., phi7=0., phi8=0.;
22056  
22057  Int_t n = fHarmonic; 
22058   
22059  // 2'-particle correlations:
22060  for(Int_t i1=0;i1<nPrim;i1++)
22061  {
22062   aftsTrack=anEvent->GetTrack(i1);
22063   // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22064   if(typeFlag==1) // this is diff flow of POIs 
22065   {
22066    if(ptOrEta == "Pt")
22067    { 
22068     if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22069    } else if (ptOrEta == "Eta")
22070      {
22071       if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;    
22072      }
22073   } else // this is diff flow of RPs 
22074     {
22075      if(ptOrEta == "Pt")
22076      { 
22077       if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22078      } else if (ptOrEta == "Eta")
22079        {
22080         if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;    
22081        }
22082     }
22083        
22084   psi1=aftsTrack->Phi(); 
22085   for(Int_t i2=0;i2<nPrim;i2++)
22086   {
22087    if(i2==i1)continue;
22088    aftsTrack=anEvent->GetTrack(i2);
22089    // RP condition (!(first) particle in the correlator must be RP):
22090    if(!(aftsTrack->InRPSelection()))continue;
22091    phi2=aftsTrack->Phi();   
22092    // 2'-particle correlations: 
22093    fDiffFlowDirectCorrelations[t][pe][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(1.*n*(psi1-phi2)),1.); // <cos(n*(psi1-phi2))  
22094   }//end of for(Int_t i2=0;i2<nPrim;i2++)
22095  }//end of for(Int_t i1=0;i1<nPrim;i1++)
22096  
22097  /*
22098  
22099  // 3'-particle correlations:
22100  for(Int_t i1=0;i1<nPrim;i1++)
22101  {
22102   aftsTrack=anEvent->GetTrack(i1);
22103   // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22104   if(ptOrEta == "Pt")
22105   { 
22106    if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22107   } else if (ptOrEta == "Eta")
22108     {
22109      if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;    
22110     }
22111   psi1=aftsTrack->Phi();
22112   for(Int_t i2=0;i2<nPrim;i2++)
22113   {
22114    if(i2==i1)continue;
22115    aftsTrack=anEvent->GetTrack(i2);
22116    // RP condition (!(first) particle in the correlator must be RP):
22117    if(!(aftsTrack->InRPSelection())) continue;
22118    phi2=aftsTrack->Phi();
22119    for(Int_t i3=0;i3<nPrim;i3++)
22120    {
22121     if(i3==i1||i3==i2)continue;
22122     aftsTrack=anEvent->GetTrack(i3);
22123     // RP condition (!(first) particle in the correlator must be RP):
22124     if(!(aftsTrack->InRPSelection())) continue;
22125     phi3=aftsTrack->Phi();
22126     // to be improved : where to store it? ->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(2.*phi1-phi2-phi3)),1.); // <w1 w2 w3 cos(n(2psi1-phi2-phi3))> 
22127    }//end of for(Int_t i3=0;i3<nPrim;i3++)  
22128   }//end of for(Int_t i2=0;i2<nPrim;i2++)  
22129  }//end of for(Int_t i1=0;i1<nPrim;i1++)
22130  
22131  */
22132  
22133  // 4'-particle correlations:
22134  for(Int_t i1=0;i1<nPrim;i1++)
22135  {
22136   aftsTrack=anEvent->GetTrack(i1);
22137   // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22138   if(typeFlag==1) // this is diff flow of POIs 
22139   {
22140    if(ptOrEta == "Pt")
22141    { 
22142     if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22143    } else if (ptOrEta == "Eta")
22144      {
22145       if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;    
22146      }
22147   } else // this is diff flow of RPs 
22148     {
22149      if(ptOrEta == "Pt")
22150      { 
22151       if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22152      } else if (ptOrEta == "Eta")
22153        {
22154         if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;    
22155        }
22156     }
22157     
22158   psi1=aftsTrack->Phi();
22159   for(Int_t i2=0;i2<nPrim;i2++)
22160   {
22161    if(i2==i1) continue;
22162    aftsTrack=anEvent->GetTrack(i2);
22163    // RP condition (!(first) particle in the correlator must be RP): 
22164    if(!(aftsTrack->InRPSelection())) continue;
22165    phi2=aftsTrack->Phi();
22166    for(Int_t i3=0;i3<nPrim;i3++)
22167    { 
22168     if(i3==i1||i3==i2) continue;
22169     aftsTrack=anEvent->GetTrack(i3);
22170     // RP condition (!(first) particle in the correlator must be RP):
22171     if(!(aftsTrack->InRPSelection())) continue;
22172     phi3=aftsTrack->Phi();
22173     for(Int_t i4=0;i4<nPrim;i4++)
22174     {
22175      if(i4==i1||i4==i2||i4==i3) continue;
22176      aftsTrack=anEvent->GetTrack(i4);
22177      // RP condition (!(first) particle in the correlator must be RP):
22178      if(!(aftsTrack->InRPSelection())) continue;  
22179      phi4=aftsTrack->Phi();
22180      // 4'-particle correlations:
22181      fDiffFlowDirectCorrelations[t][pe][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2-phi3-phi4)),1.); // <cos(n(psi1+phi2-phi3-phi4))>     
22182     }//end of for(Int_t i4=0;i4<nPrim;i4++)
22183    }//end of for(Int_t i3=0;i3<nPrim;i3++)
22184   }//end of for(Int_t i2=0;i2<nPrim;i2++) 
22185  }//end of for(Int_t i1=0;i1<nPrim;i1++)
22186       
22187  // count # of RPs and POIs in selected pt and eta bins for cross-checkings:
22188  for(Int_t i=0;i<nPrim;i++)
22189  {
22190   aftsTrack=anEvent->GetTrack(i); 
22191   // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22192   if(typeFlag==1) // this is diff flow of POIs 
22193   {
22194    if(ptOrEta == "Pt")
22195    { 
22196     if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22197    } else if (ptOrEta == "Eta")
22198      {
22199       if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;    
22200      }
22201   } else // this is diff flow of RPs 
22202     {
22203      if(ptOrEta == "Pt")
22204      { 
22205       if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22206      } else if (ptOrEta == "Eta")
22207        {
22208         if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;    
22209        }
22210     }
22211   if(t==1)t++; 
22212   fNoOfParticlesInBin->Fill(t+pe+0.5);  
22213  }
22214
22215 } // end of void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrelationsWithNestedLoops(AliFlowEventSimple* anEvent, TString type, TString ptOrEta)
22216
22217 //=======================================================================================================================
22218
22219 void AliFlowAnalysisWithQCumulants::EvaluateOtherDiffCorrelatorsWithNestedLoops(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
22220 {
22221  // Evaluate other differential correlators with nested loops without using the particle weights.
22222
22223  // Remark 1: Other differential correlators are evaluated in pt bin number fCrossCheckInPtBinNo 
22224  //           and eta bin number fCrossCheckInEtaBinNo both for RPs and POIs.
22225  // Remark 2: Results are stored in 1 bin profiles fOtherDirectDiffCorrelators[t][pe][sc][ci], where indices runs as follows:
22226  //           [0=RP,1=POI][0=Pt,1=Eta][0=sin terms,1=cos terms][ci = correlator index] 
22227  // Remark 3: Correlator index 'ci' runs as follows:
22228  //            0: <exp(n*(psi1-3phi2+2phi3))> (Teaney-Yan correlator)
22229   
22230  Int_t typeFlag = 0;
22231  Int_t ptEtaFlag = 0;
22232  if(type == "RP")
22233  {
22234   typeFlag = 0;
22235  } else if(type == "POI")
22236    {
22237     typeFlag = 1;
22238    }      
22239  if(ptOrEta == "Pt")
22240  {
22241   ptEtaFlag = 0;
22242  } else if(ptOrEta == "Eta")
22243    {
22244     ptEtaFlag = 1;
22245    } 
22246  // shortcuts:
22247  Int_t t = typeFlag;
22248  Int_t pe = ptEtaFlag;
22249       
22250  Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22251  Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22252  Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
22253  
22254  Int_t nPrim = anEvent->NumberOfTracks(); 
22255  AliFlowTrackSimple *aftsTrack = NULL;
22256  
22257  Double_t psi1=0., phi2=0., phi3=0.;
22258  
22259  Int_t n = fHarmonic; 
22260
22261  // 3-p correlators:
22262  for(Int_t i1=0;i1<nPrim;i1++)
22263  {
22264   aftsTrack=anEvent->GetTrack(i1);
22265   // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22266   if(typeFlag==1) // this is diff flow of POIs 
22267   {
22268    if(ptOrEta == "Pt")
22269    { 
22270     if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22271    } else if (ptOrEta == "Eta")
22272      {
22273       if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;    
22274      }
22275   } else // this is diff flow of RPs 
22276     {
22277      if(ptOrEta == "Pt")
22278      { 
22279       if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22280      } else if (ptOrEta == "Eta")
22281        {
22282         if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;    
22283        }
22284     }
22285   psi1=aftsTrack->Phi();
22286   for(Int_t i2=0;i2<nPrim;i2++)
22287   {
22288    if(i2==i1) continue;
22289    aftsTrack=anEvent->GetTrack(i2);
22290    // RP condition (!(first) particle in the correlator must be RP): 
22291    if(!(aftsTrack->InRPSelection())) continue;
22292    phi2=aftsTrack->Phi();
22293    for(Int_t i3=0;i3<nPrim;i3++)
22294    { 
22295     if(i3==i1||i3==i2) continue;
22296     aftsTrack=anEvent->GetTrack(i3);
22297     // RP condition (!(first) particle in the correlator must be RP):
22298     if(!(aftsTrack->InRPSelection())) continue;
22299     phi3=aftsTrack->Phi();
22300     // Fill 3-p correlators:
22301     fOtherDirectDiffCorrelators[t][pe][1][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1-3.*phi2+2.*phi3)),1.); // <cos(n(psi1-3.*phi2+2.*phi3))>     
22302    }//end of for(Int_t i3=0;i3<nPrim;i3++)
22303   }//end of for(Int_t i2=0;i2<nPrim;i2++) 
22304  }//end of for(Int_t i1=0;i1<nPrim;i1++)   
22305 } // end of void AliFlowAnalysisWithQCumulants::EvaluateOtherDiffCorrelatorsWithNestedLoops(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
22306
22307 //=======================================================================================================================
22308
22309 void AliFlowAnalysisWithQCumulants::CrossCheckDiffFlowCorrelations(TString type, TString ptOrEta)
22310 {
22311  // Compare correlations needed for diff. flow calculated with nested loops and those calculated from Q-vectors
22312  
22313  Int_t typeFlag = 0;
22314  Int_t ptEtaFlag = 0;
22315  if(type == "RP")
22316  {
22317   typeFlag = 0;
22318  } else if(type == "POI")
22319    {
22320     typeFlag = 1;
22321    }      
22322  if(ptOrEta == "Pt")
22323  {
22324   ptEtaFlag = 0;
22325  } else if(ptOrEta == "Eta")
22326    {
22327     ptEtaFlag = 1;
22328    } 
22329  // shortcuts:
22330  Int_t t = typeFlag;
22331  Int_t pe = ptEtaFlag;
22332       
22333  TString rpORpoiString[2] = {"RP ","POI"}; // to be improved (name in the same way as in the other methods, eventually promote to data member) 
22334  TString ptORetaString[2] = {"pt","eta"}; // to be improved (name in the same way as in the other methods, eventually promote to data member) 
22335  TString reducedCorrelations[4] = {"<<cos(n(psi1-phi2))>>","<<cos(n(psi1+phi2-phi3-phi4))>>","",""}; // to be improved (access this from pro or hist)
22336  Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22337  Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22338  
22339  Int_t crossCheckInPtEtaBinNo[2] = {fCrossCheckInPtBinNo,fCrossCheckInEtaBinNo};
22340  
22341
22342  cout<<endl;
22343  cout<<"   *****************************************"<<endl;
22344  cout<<"   **** cross-checking the correlations ****"<<endl;
22345  cout<<"   ****   for differential flow ("<<rpORpoiString[t]<<")   ****"<<endl;
22346  if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
22347  {
22348   cout<<"   ****   (particle weights not used)   ****"<<endl;
22349  } else
22350    {
22351     cout<<"   ****    (particle weights used)      ****"<<endl;
22352    } 
22353  cout<<"   *****************************************"<<endl; 
22354  cout<<endl;
22355  cout<<"           "<<ptORetaString[pe]<<" bin: "<<lowerPtEtaEdge[pe]<<" <= "<<ptORetaString[pe]<<" < "<<upperPtEtaEdge[pe]<<endl;
22356  cout<<endl;
22357  
22358  for(Int_t rci=0;rci<2;rci++) // to be improved (calculate 6th and 8th order)
22359  {
22360   cout<<"      "<<reducedCorrelations[rci].Data()<<":"<<endl;
22361   cout<<"      from Q-vectors    = "<<fDiffFlowCorrelationsPro[t][pe][rci]->GetBinContent(crossCheckInPtEtaBinNo[pe])<<endl;
22362   cout<<"      from nested loops = "<<fDiffFlowDirectCorrelations[t][pe][rci]->GetBinContent(1)<<endl;
22363   cout<<endl;  
22364  } // end of for(Int_t rci=0;rci<4;rci++)
22365         
22366 } // end of void AliFlowAnalysisWithQCumulants::CrossCheckDiffFlowCorrelations(TString type, TString ptOrEta)
22367
22368 //=======================================================================================================================
22369
22370 void AliFlowAnalysisWithQCumulants::CrossCheckOtherDiffCorrelators(TString type, TString ptOrEta)
22371 {
22372  // Compare correlations needed for diff. flow calculated with nested loops and those calculated from Q-vectors
22373  
22374  Int_t typeFlag = 0;
22375  Int_t ptEtaFlag = 0;
22376  if(type == "RP")
22377  {
22378   typeFlag = 0;
22379  } else if(type == "POI")
22380    {
22381     typeFlag = 1;
22382    }      
22383  if(ptOrEta == "Pt")
22384  {
22385   ptEtaFlag = 0;
22386  } else if(ptOrEta == "Eta")
22387    {
22388     ptEtaFlag = 1;
22389    } 
22390  // shortcuts:
22391  Int_t t = typeFlag;
22392  Int_t pe = ptEtaFlag;
22393       
22394  TString rpORpoiString[2] = {"RP ","POI"}; // to be improved (name in the same way as in the other methods, eventually promote to data member) 
22395  TString ptORetaString[2] = {"pt","eta"}; // to be improved (name in the same way as in the other methods, eventually promote to data member) 
22396  TString otherCorrelators[1] = {"<<cos(n(psi1-3phi2+2phi3))>>"}; // to be improved (access this from pro or hist)
22397  Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22398  Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22399  
22400  Int_t crossCheckInPtEtaBinNo[2] = {fCrossCheckInPtBinNo,fCrossCheckInEtaBinNo};
22401
22402  cout<<endl;
22403  cout<<"   *****************************************"<<endl;
22404  cout<<"   ****   cross-checking the other      ****"<<endl;
22405  cout<<"   ****   diff. correlators ("<<rpORpoiString[t]<<")       ****"<<endl;
22406  if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
22407  {
22408   cout<<"   ****   (particle weights not used)   ****"<<endl;
22409  } else
22410    {
22411     cout<<"   ****    (particle weights used)      ****"<<endl;
22412    } 
22413  cout<<"   *****************************************"<<endl; 
22414  cout<<endl;
22415  cout<<"           "<<ptORetaString[pe]<<" bin: "<<lowerPtEtaEdge[pe]<<" <= "<<ptORetaString[pe]<<" < "<<upperPtEtaEdge[pe]<<endl;
22416  cout<<endl;
22417  
22418  for(Int_t ci=0;ci<1;ci++) 
22419  {
22420   cout<<"      "<<otherCorrelators[ci].Data()<<":"<<endl;
22421   cout<<"      from Q-vectors    = "<<fOtherDiffCorrelators[t][pe][1][ci]->GetBinContent(crossCheckInPtEtaBinNo[pe])<<endl;
22422   cout<<"      from nested loops = "<<fOtherDirectDiffCorrelators[t][pe][1][ci]->GetBinContent(1)<<endl;
22423   cout<<endl;  
22424  } // end of for(Int_t ci=0;ci<1;ci++)
22425         
22426 } // end of void AliFlowAnalysisWithQCumulants::CrossCheckOtherDiffCorrelators(TString type, TString ptOrEta)
22427
22428 //=======================================================================================================================
22429
22430 void AliFlowAnalysisWithQCumulants::PrintNumberOfParticlesInSelectedBin()
22431 {
22432  // Print on the screen number of RPs and POIs in selected pt and eta bin for cross checkings.
22433  
22434  cout<<endl;
22435  cout<<"Number of RPs in selected pt bin   = "<<fNoOfParticlesInBin->GetBinContent(1)<<endl;
22436  cout<<"Number of RPs in selected eta bin  = "<<fNoOfParticlesInBin->GetBinContent(2)<<endl;
22437  cout<<"Number of POIs in selected pt bin  = "<<fNoOfParticlesInBin->GetBinContent(3)<<endl;
22438  cout<<"Number of POIs in selected eta bin = "<<fNoOfParticlesInBin->GetBinContent(4)<<endl;
22439  
22440 } // end of void AliFlowAnalysisWithQCumulants::PrintNumberOfParticlesInSelectedBin()
22441
22442 //=======================================================================================================================
22443
22444 void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrelationsWithNestedLoopsUsingParticleWeights(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
22445 {
22446  // Evaluate reduced correlations with nested loops without using the particle weights.
22447  
22448  // Remark 1: Reduced correlations are evaluated in pt bin number fCrossCheckInPtBinNo and eta bin number fCrossCheckInEtaBinNo both for RPs and POIs.
22449  // Remark 2: Results are stored in 1 bin profiles fDiffFlowDirectCorrelations[t][pe][ci], where indices runs as follows:
22450  //           [0=RP,1=POI][0=Pt,1=Eta][0=<2'>,1=<4'>,2=<6'>,3=<8'>] 
22451  // Remark 3: <2'> = <w2 cos(n*(psi1-phi2))>
22452  //           <4'> = <w2 w3 w4 cos(n*(psi1+phi2-phi3-phi4))>
22453  // ...
22454   
22455  Int_t typeFlag = 0;
22456  Int_t ptEtaFlag = 0;
22457  if(type == "RP")
22458  {
22459   typeFlag = 0;
22460  } else if(type == "POI")
22461    {
22462     typeFlag = 1;
22463    }      
22464  if(ptOrEta == "Pt")
22465  {
22466   ptEtaFlag = 0;
22467  } else if(ptOrEta == "Eta")
22468    {
22469     ptEtaFlag = 1;
22470    } 
22471  // shortcuts:
22472  Int_t t = typeFlag;
22473  Int_t pe = ptEtaFlag;
22474       
22475  Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22476  Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22477  Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
22478  
22479  Int_t nPrim = anEvent->NumberOfTracks(); 
22480  AliFlowTrackSimple *aftsTrack = NULL;
22481  
22482  Double_t psi1=0., phi2=0., phi3=0., phi4=0.;// phi5=0., phi6=0., phi7=0., phi8=0.;
22483  Double_t wPhi2=1., wPhi3=1., wPhi4=1.;// wPhi5=1., wPhi6=1., wPhi7=1., wPhi8=1.;
22484  
22485  Int_t n = fHarmonic; 
22486  
22487  // 2'-particle correlations:
22488  for(Int_t i1=0;i1<nPrim;i1++)
22489  {
22490   aftsTrack=anEvent->GetTrack(i1);
22491   // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22492   if(typeFlag==1) // this is diff flow of POIs 
22493   {
22494    if(ptOrEta == "Pt")
22495    { 
22496     if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22497    } else if (ptOrEta == "Eta")
22498      {
22499       if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;    
22500      }
22501   } else // this is diff flow of RPs 
22502     {
22503      if(ptOrEta == "Pt")
22504      { 
22505       if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22506      } else if (ptOrEta == "Eta")
22507        {
22508         if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;    
22509        }
22510     }
22511   psi1=aftsTrack->Phi(); 
22512   for(Int_t i2=0;i2<nPrim;i2++)
22513   {
22514    if(i2==i1) continue;
22515    aftsTrack=anEvent->GetTrack(i2);
22516    // RP condition (!(first) particle in the correlator must be RP):
22517    if(!(aftsTrack->InRPSelection())) continue;
22518    phi2=aftsTrack->Phi();   
22519    if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
22520    // 2'-particle correlations: 
22521    fDiffFlowDirectCorrelations[t][pe][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(1.*n*(psi1-phi2)),wPhi2); // <w2 cos(n*(psi1-phi2))  
22522   }//end of for(Int_t i2=0;i2<nPrim;i2++)
22523  }//end of for(Int_t i1=0;i1<nPrim;i1++)
22524  
22525  // 4'-particle correlations:
22526  for(Int_t i1=0;i1<nPrim;i1++)
22527  {
22528   aftsTrack=anEvent->GetTrack(i1);
22529   // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22530   if(typeFlag==1) // this is diff flow of POIs 
22531   {
22532    if(ptOrEta == "Pt")
22533    { 
22534     if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22535    } else if (ptOrEta == "Eta")
22536      {
22537       if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;    
22538      }
22539   } else // this is diff flow of RPs 
22540     {
22541      if(ptOrEta == "Pt")
22542      { 
22543       if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22544      } else if (ptOrEta == "Eta")
22545        {
22546         if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;    
22547        }
22548     }
22549   psi1=aftsTrack->Phi();
22550   for(Int_t i2=0;i2<nPrim;i2++)
22551   {
22552    if(i2==i1) continue;
22553    aftsTrack=anEvent->GetTrack(i2);
22554    // RP condition (!(first) particle in the correlator must be RP): 
22555    if(!(aftsTrack->InRPSelection())) continue;
22556    phi2=aftsTrack->Phi();
22557    if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
22558    for(Int_t i3=0;i3<nPrim;i3++)
22559    { 
22560     if(i3==i1||i3==i2) continue;
22561     aftsTrack=anEvent->GetTrack(i3);
22562     // RP condition (!(first) particle in the correlator must be RP):
22563     if(!(aftsTrack->InRPSelection())) continue;
22564     phi3=aftsTrack->Phi();
22565     if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
22566     for(Int_t i4=0;i4<nPrim;i4++)
22567     {
22568      if(i4==i1||i4==i2||i4==i3) continue;
22569      aftsTrack=anEvent->GetTrack(i4);
22570      // RP condition (!(first) particle in the correlator must be RP):
22571      if(!(aftsTrack->InRPSelection())) continue;  
22572      phi4=aftsTrack->Phi();
22573      if(fUsePhiWeights && fPhiWeights) wPhi4 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*fnBinsPhi/TMath::TwoPi())));
22574      // 4'-particle correlations <w2 w3 w4 cos(n(psi1+phi2-phi3-phi4))>:
22575      fDiffFlowDirectCorrelations[t][pe][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2-phi3-phi4)),wPhi2*wPhi3*wPhi4); 
22576     }//end of for(Int_t i4=0;i4<nPrim;i4++)
22577    }//end of for(Int_t i3=0;i3<nPrim;i3++)
22578   }//end of for(Int_t i2=0;i2<nPrim;i2++) 
22579  }//end of for(Int_t i1=0;i1<nPrim;i1++)      
22580  
22581  // count # of RPs and POIs in selected pt and eta bins for cross-checkings: (to be improved - moved to dedicated method)
22582  for(Int_t i=0;i<nPrim;i++)
22583  {
22584   aftsTrack=anEvent->GetTrack(i); 
22585   // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22586   if(typeFlag==1) // this is diff flow of POIs 
22587   {
22588    if(ptOrEta == "Pt")
22589    { 
22590     if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22591    } else if (ptOrEta == "Eta")
22592      {
22593       if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;    
22594      }
22595   } else // this is diff flow of RPs 
22596     {
22597      if(ptOrEta == "Pt")
22598      { 
22599       if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22600      } else if (ptOrEta == "Eta")
22601        {
22602         if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;    
22603        }
22604     }
22605   if(t==1)t++; 
22606   fNoOfParticlesInBin->Fill(t+pe+0.5);  
22607  }
22608  
22609 } // end of void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrelationsWithNestedLoopsUsingParticleWeights(AliFlowEventSimple* anEvent, TString type, TString ptOrEta)
22610
22611 //=======================================================================================================================
22612
22613 void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoops(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
22614 {
22615  // Evaluate with nested loops correction terms for non-uniform acceptance (both sin and cos terms) relevant for differential flow.
22616  
22617  // Remark 1: Reduced correction terms for non-uniform acceptance are evaluated in pt bin number fCrossCheckInPtBinNo 
22618  //           and eta bin number fCrossCheckInEtaBinNo both for RPs and POIs.
22619  // Remark 2: Results are stored in 1 bin profiles fDiffFlowDirectCorrections[t][pe][sc][cti], where first three indices runs as: 
22620  //           [0=RP,1=POI][0=Pt,1=Eta][0=sin terms,1=cos terms], whilst the cti (correction term index) runs as follows: 
22621  //  cti: 
22622  //    0: <<sc n(psi1)>>
22623  //    1: <<sc n(psi1+phi2)>> 
22624  //    2: <<sc n(psi1+phi2-phi3)>>
22625  //    3: <<sc n(psi1-phi2-phi3)>>
22626  //    4:
22627  //    5:
22628  //    6:
22629   
22630  Int_t typeFlag = 0;
22631  Int_t ptEtaFlag = 0;
22632  if(type == "RP")
22633  {
22634   typeFlag = 0;
22635  } else if(type == "POI")
22636    {
22637     typeFlag = 1;
22638    }      
22639  if(ptOrEta == "Pt")
22640  {
22641   ptEtaFlag = 0;
22642  } else if(ptOrEta == "Eta")
22643    {
22644     ptEtaFlag = 1;
22645    } 
22646  // shortcuts:
22647  Int_t t = typeFlag;
22648  Int_t pe = ptEtaFlag;
22649       
22650  Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22651  Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22652  Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
22653  
22654  Int_t nPrim = anEvent->NumberOfTracks(); 
22655  AliFlowTrackSimple *aftsTrack = NULL;
22656  
22657  Double_t psi1=0., phi2=0., phi3=0.;// phi4=0.;// phi5=0., phi6=0., phi7=0., phi8=0.;
22658  
22659  Int_t n = fHarmonic; 
22660  
22661  // 1-particle correction terms:
22662  for(Int_t i1=0;i1<nPrim;i1++)
22663  {
22664   aftsTrack=anEvent->GetTrack(i1);
22665   // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22666   if(typeFlag==1) // this is diff flow of POIs 
22667   {
22668    if(ptOrEta == "Pt")
22669    { 
22670     if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22671    } else if (ptOrEta == "Eta")
22672      {
22673       if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;    
22674      }
22675   } else // this is diff flow of RPs 
22676     {
22677      if(ptOrEta == "Pt")
22678      { 
22679       if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22680      } else if (ptOrEta == "Eta")
22681        {
22682         if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;    
22683        }
22684     }
22685   psi1=aftsTrack->Phi(); 
22686   // sin terms: 
22687   fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*psi1),1.); // <<sin(n*(psi1))>>  
22688   // cos terms: 
22689   fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*psi1),1.); // <<cos(n*(psi1))>>  
22690  }//end of for(Int_t i1=0;i1<nPrim;i1++)
22691    
22692  // 2-particle correction terms:
22693  for(Int_t i1=0;i1<nPrim;i1++)
22694  {
22695   aftsTrack=anEvent->GetTrack(i1);
22696    // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22697   if(typeFlag==1) // this is diff flow of POIs 
22698   {
22699    if(ptOrEta == "Pt")
22700    { 
22701     if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22702    } else if (ptOrEta == "Eta")
22703      {
22704       if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;    
22705      }
22706   } else // this is diff flow of RPs 
22707     {
22708      if(ptOrEta == "Pt")
22709      { 
22710       if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22711      } else if (ptOrEta == "Eta")
22712        {
22713         if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;    
22714        }
22715     }
22716   psi1=aftsTrack->Phi(); 
22717   for(Int_t i2=0;i2<nPrim;i2++)
22718   {
22719    if(i2==i1) continue;
22720    aftsTrack=anEvent->GetTrack(i2);
22721    // RP condition (!(first) particle in the correlator must be RP):
22722    if(!(aftsTrack->InRPSelection())) continue;
22723    phi2=aftsTrack->Phi();   
22724    // sin terms: 
22725    fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*(psi1+phi2)),1.); // <<sin(n*(psi1+phi2))>>  
22726    // cos terms: 
22727    fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2)),1.); // <<cos(n*(psi1+phi2))>>  
22728   }//end of for(Int_t i2=0;i2<nPrim;i2++)
22729  }//end of for(Int_t i1=0;i1<nPrim;i1++)   
22730  
22731  // 3-particle correction terms:
22732  for(Int_t i1=0;i1<nPrim;i1++)
22733  {
22734   aftsTrack=anEvent->GetTrack(i1);
22735    // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22736   if(typeFlag==1) // this is diff flow of POIs 
22737   {
22738    if(ptOrEta == "Pt")
22739    { 
22740     if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22741    } else if (ptOrEta == "Eta")
22742      {
22743       if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;    
22744      }
22745   } else // this is diff flow of RPs 
22746     {
22747      if(ptOrEta == "Pt")
22748      { 
22749       if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22750      } else if (ptOrEta == "Eta")
22751        {
22752         if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;    
22753        }
22754     }
22755   psi1=aftsTrack->Phi();
22756   for(Int_t i2=0;i2<nPrim;i2++)
22757   {
22758    if(i2==i1) continue;
22759    aftsTrack=anEvent->GetTrack(i2);
22760    // RP condition (!(first) particle in the correlator must be RP):
22761    if(!(aftsTrack->InRPSelection())) continue;
22762    phi2=aftsTrack->Phi();
22763    for(Int_t i3=0;i3<nPrim;i3++)
22764    {
22765     if(i3==i1||i3==i2) continue;
22766     aftsTrack=anEvent->GetTrack(i3);
22767     // RP condition (!(first) particle in the correlator must be RP):
22768     if(!(aftsTrack->InRPSelection())) continue;
22769     phi3=aftsTrack->Phi();
22770     // sin terms: 
22771     fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][2]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*(psi1+phi2-phi3)),1.); // <<sin(n*(psi1+phi2-phi3))>>  
22772     fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][3]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*(psi1-phi2-phi3)),1.); // <<sin(n*(psi1-phi2-phi3))>>  
22773     // cos terms: 
22774     fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][2]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2-phi3)),1.); // <<cos(n*(psi1+phi2-phi3))>>  
22775     fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][3]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1-phi2-phi3)),1.); // <<cos(n*(psi1-phi2-phi3))>>  
22776    }//end of for(Int_t i3=0;i3<nPrim;i3++)  
22777   }//end of for(Int_t i2=0;i2<nPrim;i2++)  
22778  }//end of for(Int_t i1=0;i1<nPrim;i1++)
22779    
22780 } // end of void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoops(AliFlowEventSimple* anEvent, TString type, TString ptOrEta)
22781
22782
22783 //=======================================================================================================================
22784
22785
22786 void AliFlowAnalysisWithQCumulants::CrossCheckDiffFlowCorrectionTermsForNUA(TString type, TString ptOrEta)
22787 {
22788  // Compare corrections temrs for non-uniform acceptance needed for diff. flow calculated with nested loops and those calculated from Q-vectors
22789  
22790  Int_t typeFlag = 0;
22791  Int_t ptEtaFlag = 0;
22792  if(type == "RP")
22793  {
22794   typeFlag = 0;
22795  } else if(type == "POI")
22796    {
22797     typeFlag = 1;
22798    }      
22799  if(ptOrEta == "Pt")
22800  {
22801   ptEtaFlag = 0;
22802  } else if(ptOrEta == "Eta")
22803    {
22804     ptEtaFlag = 1;
22805    } 
22806  // shortcuts:
22807  Int_t t = typeFlag;
22808  Int_t pe = ptEtaFlag;
22809       
22810  TString rpORpoiString[2] = {"RP ","POI"}; // to be improved (name in the same way as in the other methods, eventually promote to data member) 
22811  TString ptORetaString[2] = {"pt","eta"}; // to be improved (name in the same way as in the other methods, eventually promote to data member) 
22812  //TString sinCosFlag[2] = {"sin","cos"}; // to be improved (eventually promote to data member)
22813  TString reducedCorrectionSinTerms[4] = {"<<sin(n(psi1))>>","<<sin(n(psi1+phi2))>>","<<sin(n*(psi1+phi2-phi3))>>","<<sin(n*(psi1-phi2-phi3))>>"}; // to be improved (access this from pro or hist)
22814  TString reducedCorrectionCosTerms[4] = {"<<cos(n(psi1))>>","<<cos(n(psi1+phi2))>>","<<cos(n*(psi1+phi2-phi3))>>","<<cos(n*(psi1-phi2-phi3))>>"}; // to be improved (access this from pro or hist)
22815  Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22816  Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22817  
22818  Int_t crossCheckInPtEtaBinNo[2] = {fCrossCheckInPtBinNo,fCrossCheckInEtaBinNo};
22819  
22820  cout<<endl;
22821  cout<<"   ******************************************"<<endl;
22822  cout<<"   ****  cross-checking the correction   ****"<<endl;
22823  cout<<"   **** terms for non-uniform acceptance ****"<<endl; 
22824  cout<<"   ****    for differential flow ("<<rpORpoiString[t]<<")   ****"<<endl;
22825  if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
22826  {
22827   cout<<"   ****    (particle weights not used)   ****"<<endl;
22828  } else
22829    {
22830     cout<<"   ****     (particle weights used)      ****"<<endl;
22831    } 
22832  cout<<"   ******************************************"<<endl; 
22833  cout<<endl;
22834  cout<<"           "<<ptORetaString[pe]<<" bin: "<<lowerPtEtaEdge[pe]<<" <= "<<ptORetaString[pe]<<" < "<<upperPtEtaEdge[pe]<<endl;
22835  cout<<endl;
22836  
22837  for(Int_t cti=0;cti<4;cti++) // correction term index
22838  {
22839   for(Int_t sc=0;sc<2;sc++) // sin or cos terms
22840   {
22841    if(sc==0) // to be improved (this can be implemented better)
22842    { 
22843     cout<<"      "<<reducedCorrectionSinTerms[cti].Data()<<":"<<endl;
22844    } else
22845      {
22846       cout<<"      "<<reducedCorrectionCosTerms[cti].Data()<<":"<<endl;     
22847      }
22848    cout<<"      from Q-vectors    = "<<fDiffFlowCorrectionTermsForNUAPro[t][pe][sc][cti]->GetBinContent(crossCheckInPtEtaBinNo[pe])<<endl;
22849    cout<<"      from nested loops = "<<fDiffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti]->GetBinContent(1)<<endl;
22850    cout<<endl;  
22851   } 
22852  } // end of for(Int_t rci=0;rci<4;rci++)
22853
22854 } // end of void AliFlowAnalysisWithQCumulants::CrossCheckDiffFlowCorrectionTermsForNUA(TString type, TString ptOrEta)
22855
22856 //=======================================================================================================================
22857
22858 void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUACosTermsUsingParticleWeights()
22859 {
22860  // Calculate corrections using particle weights for non-uniform acceptance of the detector for no-name integrated flow (cos terms).
22861  
22862  //                                  **********************************************************************
22863  //                                  **** weighted corrections for non-uniform acceptance (cos terms): ****
22864  //                                  **********************************************************************
22865  
22866  // Remark 1: When particle weights are used the binning of fIntFlowCorrectionTermsForNUAPro[1] is organized as follows:
22867  //
22868  // 1st bin: <<w1 cos(n*(phi1))>> = cosP1nW1
22869  // 2nd bin: <<w1 w2 cos(n*(phi1+phi2))>> = cosP1nP1nW1W1
22870  // 3rd bin: <<w1 w2 w3 cos(n*(phi1-phi2-phi3))>> = cosP1nM1nM1nW1W1W1 
22871  // ...
22872
22873  // multiplicity (number of particles used to determine the reaction plane)
22874  Double_t dMult = (*fSpk)(0,0);
22875  
22876  // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n: 
22877  Double_t dReQ1n1k = (*fReQ)(0,1);
22878  Double_t dReQ2n2k = (*fReQ)(1,2);
22879  //Double_t dReQ3n3k = (*fReQ)(2,3);
22880  //Double_t dReQ4n4k = (*fReQ)(3,4);
22881  Double_t dReQ1n3k = (*fReQ)(0,3);
22882  Double_t dImQ1n1k = (*fImQ)(0,1);
22883  Double_t dImQ2n2k = (*fImQ)(1,2);
22884  //Double_t dImQ3n3k = (*fImQ)(2,3);
22885  //Double_t dImQ4n4k = (*fImQ)(3,4);
22886  //Double_t dImQ1n3k = (*fImQ)(0,3);
22887
22888  // dMs are variables introduced in order to simplify some Eqs. bellow:
22889  //..............................................................................................
22890  Double_t dM11 = (*fSpk)(1,1)-(*fSpk)(0,2); // dM11 = sum_{i,j=1,i!=j}^M w_i w_j
22891  Double_t dM111 = (*fSpk)(2,1)-3.*(*fSpk)(0,2)*(*fSpk)(0,1)
22892                 + 2.*(*fSpk)(0,3); // dM111 = sum_{i,j,k=1,i!=j!=k}^M w_i w_j w_k
22893  //..............................................................................................
22894          // 1-particle:
22895  Double_t cosP1nW1 = 0.; // <<w1 cos(n*(phi1))>>
22896    
22897  if(dMult>0 && TMath::Abs((*fSpk)(0,1))>1.e-6)
22898  {
22899   cosP1nW1 = dReQ1n1k/(*fSpk)(0,1); 
22900   
22901   // average weighted 1-particle correction (cos terms) for non-uniform acceptance for single event:
22902   fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(1,cosP1nW1);
22903   
22904   // final average weighted 1-particle correction (cos terms) for non-uniform acceptance for all events:
22905   fIntFlowCorrectionTermsForNUAPro[1]->Fill(0.5,cosP1nW1,(*fSpk)(0,1));  
22906  } 
22907  
22908  // 2-particle:
22909  Double_t cosP1nP1nW1W1 = 0.; // <<w1 w2 cos(n*(phi1+phi2))>>
22910  
22911  if(dMult>1 && TMath::Abs(dM11)>1.e-6)
22912  {
22913   cosP1nP1nW1W1 = (pow(dReQ1n1k,2)-pow(dImQ1n1k,2)-dReQ2n2k)/dM11; 
22914   
22915   // average weighted 2-particle correction (cos terms) for non-uniform acceptance for single event:
22916   fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(2,cosP1nP1nW1W1);
22917   
22918   // final average weighted 2-particle correction (cos terms) for non-uniform acceptance for all events:
22919   fIntFlowCorrectionTermsForNUAPro[1]->Fill(1.5,cosP1nP1nW1W1,dM11);  
22920  } 
22921  
22922  // 3-particle:
22923  Double_t cosP1nM1nM1nW1W1W1 = 0.; // <<w1 w2 w3 cos(n*(phi1-phi2-phi3))>>
22924  
22925  if(dMult>2 && TMath::Abs(dM111)>1.e-6)
22926  {
22927   cosP1nM1nM1nW1W1W1 = (dReQ1n1k*(pow(dReQ1n1k,2)+pow(dImQ1n1k,2))
22928                      - dReQ1n1k*dReQ2n2k-dImQ1n1k*dImQ2n2k
22929                      - 2.*((*fSpk)(0,2))*dReQ1n1k
22930                      + 2.*dReQ1n3k) 
22931                      / dM111; 
22932   
22933   // average non-weighted 3-particle correction (cos terms) for non-uniform acceptance for single event:
22934   fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(3,cosP1nM1nM1nW1W1W1);
22935   
22936   // final average non-weighted 3-particle correction (cos terms) for non-uniform acceptance for all events:
22937   fIntFlowCorrectionTermsForNUAPro[1]->Fill(2.5,cosP1nM1nM1nW1W1W1,dM111);  
22938  } 
22939  
22940 } // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUACosTermsUsingParticleWeights()
22941
22942
22943 //=======================================================================================================================
22944
22945
22946 void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUASinTermsUsingParticleWeights()
22947 {
22948  // calculate corrections using particle weights for non-uniform acceptance of the detector for no-name integrated flow (sin terms)
22949  
22950  //                                  **********************************************************************
22951  //                                  **** weighted corrections for non-uniform acceptance (sin terms): ****
22952  //                                  **********************************************************************
22953  
22954  // Remark 1: When particle weights are used the binning of fIntFlowCorrectionTermsForNUAPro[0] is organized as follows:
22955  //
22956  // 1st bin: <<w1 sin(n*(phi1))>> = sinP1nW1
22957  // 2nd bin: <<w1 w2 sin(n*(phi1+phi2))>> = sinP1nP1nW1W1
22958  // 3rd bin: <<w1 w2 w3 sin(n*(phi1-phi2-phi3))>> = sinP1nM1nM1nW1W1W1 
22959  // ...
22960
22961  // multiplicity (number of particles used to determine the reaction plane)
22962  Double_t dMult = (*fSpk)(0,0);
22963  
22964  // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n: 
22965  Double_t dReQ1n1k = (*fReQ)(0,1);
22966  Double_t dReQ2n2k = (*fReQ)(1,2);
22967  //Double_t dReQ3n3k = (*fReQ)(2,3);
22968  //Double_t dReQ4n4k = (*fReQ)(3,4);
22969  //Double_t dReQ1n3k = (*fReQ)(0,3);
22970  Double_t dImQ1n1k = (*fImQ)(0,1);
22971  Double_t dImQ2n2k = (*fImQ)(1,2);
22972  //Double_t dImQ3n3k = (*fImQ)(2,3);
22973  //Double_t dImQ4n4k = (*fImQ)(3,4);
22974  Double_t dImQ1n3k = (*fImQ)(0,3);
22975
22976  // dMs are variables introduced in order to simplify some Eqs. bellow:
22977  //..............................................................................................
22978  Double_t dM11 = (*fSpk)(1,1)-(*fSpk)(0,2); // dM11 = sum_{i,j=1,i!=j}^M w_i w_j
22979  Double_t dM111 = (*fSpk)(2,1)-3.*(*fSpk)(0,2)*(*fSpk)(0,1)
22980                 + 2.*(*fSpk)(0,3); // dM111 = sum_{i,j,k=1,i!=j!=k}^M w_i w_j w_k
22981  //..............................................................................................
22982  
22983  // 1-particle:
22984  Double_t sinP1nW1 = 0.; // <<w1 sin(n*(phi1))>>
22985  
22986  if(dMult>0 && TMath::Abs((*fSpk)(0,1))>1.e-6)
22987  {
22988   sinP1nW1 = dImQ1n1k/((*fSpk)(0,1)); 
22989      
22990   // average weighted 1-particle correction (sin terms) for non-uniform acceptance for single event:
22991   fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(1,sinP1nW1);
22992   
22993   // final average weighted 1-particle correction (sin terms) for non-uniform acceptance for all events:   
22994   fIntFlowCorrectionTermsForNUAPro[0]->Fill(0.5,sinP1nW1,(*fSpk)(0,1));  
22995  } 
22996  
22997  // 2-particle:
22998  Double_t sinP1nP1nW1W1 = 0.; // <<w1 w2 sin(n*(phi1+phi2))>>
22999  
23000  if(dMult>1 && TMath::Abs(dM11)>1.e-6)
23001  {
23002   sinP1nP1nW1W1 = (2.*dReQ1n1k*dImQ1n1k-dImQ2n2k)/dM11; 
23003      
23004   // average weighted 2-particle correction (sin terms) for non-uniform acceptance for single event:
23005   fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(2,sinP1nP1nW1W1);
23006   
23007   // final average weighted 1-particle correction (sin terms) for non-uniform acceptance for all events:      
23008   fIntFlowCorrectionTermsForNUAPro[0]->Fill(1.5,sinP1nP1nW1W1,dM11);  
23009  } 
23010  
23011  // 3-particle:
23012  Double_t sinP1nM1nM1nW1W1W1 = 0.; // <<w1 w2 w3 sin(n*(phi1-phi2-phi3))>>
23013  
23014  if(dMult>2 && TMath::Abs(dM111)>1.e-6)
23015  {
23016   sinP1nM1nM1nW1W1W1 = (-dImQ1n1k*(pow(dReQ1n1k,2)+pow(dImQ1n1k,2))
23017                      + dReQ1n1k*dImQ2n2k-dImQ1n1k*dReQ2n2k
23018                      + 2.*((*fSpk)(0,2))*dImQ1n1k
23019                      - 2.*dImQ1n3k)
23020                      / dM111; 
23021   
23022   // average weighted 3-particle correction (sin terms) for non-uniform acceptance for single event:
23023   fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(3,sinP1nM1nM1nW1W1W1);
23024   
23025   // final average weighted 3-particle correction (sin terms) for non-uniform acceptance for all events:  
23026   fIntFlowCorrectionTermsForNUAPro[0]->Fill(2.5,sinP1nM1nM1nW1W1W1,dM111);  
23027  } 
23028  
23029 } // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUASinTermsUsingParticleWeights()
23030
23031 //=======================================================================================================================
23032
23033 void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrectionsForNUAWithNestedLoopsUsingParticleWeights(AliFlowEventSimple * const anEvent)
23034 {
23035  // Evaluate with nested loops correction terms for non-uniform acceptance for integrated flow (using the particle weights). 
23036
23037  // Results are stored in profiles fIntFlowDirectCorrectionTermsForNUA[0] (sin terms) and
23038  // fIntFlowDirectCorrectionTermsForNUA[1] (cos terms). 
23039  
23040  // Remark 1: When particle weights are used the binning of fIntFlowDirectCorrectionTermsForNUA[sc] is 
23041  // organized as follows (sc stands for either sin or cos):
23042  //
23043  // 1st bin: <<w1 sc(n*(phi1))>> = scP1nW1
23044  // 2nd bin: <<w1 w2 sc(n*(phi1+phi2))>> = scP1nP1nW1W1
23045  // 3rd bin: <<w1 w2 w3 sc(n*(phi1-phi2-phi3))>> = scP1nM1nM1nW1W1W1 
23046  // ...
23047   
23048  Int_t nPrim = anEvent->NumberOfTracks(); 
23049  AliFlowTrackSimple *aftsTrack = NULL;
23050  //Double_t phi1=0., phi2=0., phi3=0., phi4=0., phi5=0., phi6=0., phi7=0., phi8=0.;
23051  //Double_t wPhi1=1., wPhi2=1., wPhi3=1., wPhi4=1., wPhi5=1., wPhi6=1., wPhi7=1., wPhi8=1.;
23052  Double_t phi1=0., phi2=0., phi3=0.;
23053  Double_t wPhi1=1., wPhi2=1., wPhi3=1.;
23054  Int_t n = fHarmonic; 
23055  Int_t eventNo = (Int_t)fAvMultiplicity->GetBinEntries(1); // to be improved (is this casting safe in general?)
23056  Double_t dMult = (*fSpk)(0,0);
23057  cout<<endl;
23058  cout<<"Correction terms for non-uniform acceptance: Event number: "<<eventNo<<", multiplicity is "<<dMult<<endl;
23059  if(dMult<1)
23060  {
23061   cout<<"... skipping this event (multiplicity too low) ..."<<endl;
23062  } else if (dMult>fMaxAllowedMultiplicity)
23063    {
23064     cout<<"... skipping this event (multiplicity too high) ..."<<endl;
23065    } else 
23066      { 
23067       cout<<"... evaluating nested loops (using particle weights) ..."<<endl;
23068      } 
23069       
23070  // 1-particle correction terms using particle weights:       
23071  if(nPrim>=1 && nPrim<=fMaxAllowedMultiplicity)
23072  {
23073   for(Int_t i1=0;i1<nPrim;i1++)
23074   {
23075    aftsTrack=anEvent->GetTrack(i1);
23076    if(!(aftsTrack->InRPSelection())) continue;
23077    phi1=aftsTrack->Phi();
23078    if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
23079    // 1-particle correction terms using particle weights:
23080    if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[0]->Fill(0.5,sin(n*phi1),wPhi1); // <w1 sin(n*phi1)>
23081    if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[1]->Fill(0.5,cos(n*phi1),wPhi1); // <w1 cos(n*phi1)>
23082   } // end of for(Int_t i1=0;i1<nPrim;i1++)
23083  } // end of if(nPrim>=1 && nPrim<=fMaxAllowedMultiplicity) 
23084  
23085  // 2-particle correction terms using particle weights:       
23086  if(nPrim>=2 && nPrim<=fMaxAllowedMultiplicity)
23087  {
23088   for(Int_t i1=0;i1<nPrim;i1++)
23089   {
23090    aftsTrack=anEvent->GetTrack(i1);
23091    if(!(aftsTrack->InRPSelection())) continue;
23092    phi1=aftsTrack->Phi();
23093    if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
23094    for(Int_t i2=0;i2<nPrim;i2++)
23095    {
23096     if(i2==i1)continue;
23097     aftsTrack=anEvent->GetTrack(i2);
23098     if(!(aftsTrack->InRPSelection())) continue;
23099     phi2=aftsTrack->Phi();
23100     if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));   
23101     if(nPrim==2) cout<<i1<<" "<<i2<<"\r"<<flush;
23102     // 2-p correction terms using particle weights:    
23103     if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[0]->Fill(1.5,sin(n*(phi1+phi2)),wPhi1*wPhi2); // <w1 w2 sin(n*(phi1+phi2))>
23104     if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[1]->Fill(1.5,cos(n*(phi1+phi2)),wPhi1*wPhi2); // <w1 w2 cos(n*(phi1+phi2))>
23105    } // end of for(Int_t i2=0;i2<nPrim;i2++)
23106   } // end of for(Int_t i1=0;i1<nPrim;i1++)
23107  } // end of if(nPrim>=2)
23108
23109  // 3-particle correction terms using particle weights:       
23110  if(nPrim>=3 && nPrim<=fMaxAllowedMultiplicity)
23111  { 
23112   for(Int_t i1=0;i1<nPrim;i1++)
23113   {
23114    aftsTrack=anEvent->GetTrack(i1);
23115    if(!(aftsTrack->InRPSelection())) continue;
23116    phi1=aftsTrack->Phi();
23117    if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
23118    for(Int_t i2=0;i2<nPrim;i2++)
23119    {
23120     if(i2==i1)continue;
23121     aftsTrack=anEvent->GetTrack(i2);
23122     if(!(aftsTrack->InRPSelection())) continue;
23123     phi2=aftsTrack->Phi();
23124     if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
23125     for(Int_t i3=0;i3<nPrim;i3++)
23126     {
23127      if(i3==i1||i3==i2)continue;
23128      aftsTrack=anEvent->GetTrack(i3);
23129      if(!(aftsTrack->InRPSelection())) continue;
23130      phi3=aftsTrack->Phi();
23131      if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
23132      if(nPrim==3) cout<<i1<<" "<<i2<<" "<<i3<<"\r"<<flush;
23133      // 3-p correction terms using particle weights:    
23134      if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[0]->Fill(2.5,sin(n*(phi1-phi2-phi3)),wPhi1*wPhi2*wPhi3); // <w1 w2 w3 sin(n*(phi1-phi2-phi3))>
23135      if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[1]->Fill(2.5,cos(n*(phi1-phi2-phi3)),wPhi1*wPhi2*wPhi3); // <w1 w2 w3 cos(n*(phi1-phi2-phi3))>
23136     } // end of for(Int_t i3=0;i3<nPrim;i3++)
23137    } // end of for(Int_t i2=0;i2<nPrim;i2++)
23138   } // end of for(Int_t i1=0;i1<nPrim;i1++)
23139  } // end of if(nPrim>=3)
23140  
23141  /*
23142  
23143  if(nPrim>=4 && nPrim<=fMaxAllowedMultiplicity)
23144  {
23145   // 4 nested loops multiparticle correlations using particle weights:       
23146   for(Int_t i1=0;i1<nPrim;i1++)
23147   {
23148    aftsTrack=anEvent->GetTrack(i1);
23149    if(!(aftsTrack->InRPSelection())) continue;
23150    phi1=aftsTrack->Phi();
23151    if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
23152    for(Int_t i2=0;i2<nPrim;i2++)
23153    {
23154     if(i2==i1)continue;
23155     aftsTrack=anEvent->GetTrack(i2);
23156     if(!(aftsTrack->InRPSelection())) continue;
23157     phi2=aftsTrack->Phi();
23158     if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
23159     for(Int_t i3=0;i3<nPrim;i3++)
23160     {
23161      if(i3==i1||i3==i2)continue;
23162      aftsTrack=anEvent->GetTrack(i3);
23163      if(!(aftsTrack->InRPSelection())) continue;
23164      phi3=aftsTrack->Phi();
23165      if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
23166      for(Int_t i4=0;i4<nPrim;i4++)
23167      {
23168       if(i4==i1||i4==i2||i4==i3)continue;
23169       aftsTrack=anEvent->GetTrack(i4);
23170       if(!(aftsTrack->InRPSelection())) continue;
23171       phi4=aftsTrack->Phi();
23172       if(fUsePhiWeights && fPhiWeights) wPhi4 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*fnBinsPhi/TMath::TwoPi())));
23173       if(nPrim>=4) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<"\r"<<flush; // to be improved (replace eventually this if statement with if(nPrim==4))
23174       // 4-p correlations using particle weights:
23175       if(fUsePhiWeights) fIntFlowDirectCorrelations->Fill(10.5,cos(n*phi1+n*phi2-n*phi3-n*phi4),wPhi1*wPhi2*wPhi3*wPhi4); 
23176       // extra correlations: 
23177       // 2-p extra correlations (do not appear if particle weights are not used):
23178       // ...
23179       // 3-p extra correlations (do not appear if particle weights are not used):
23180       // ...
23181       // 4-p extra correlations (do not appear if particle weights are not used):
23182       // ...
23183      } // end of for(Int_t i4=0;i4<nPrim;i4++) 
23184     } // end of for(Int_t i3=0;i3<nPrim;i3++)
23185    } // end of for(Int_t i2=0;i2<nPrim;i2++)
23186   } // end of for(Int_t i1=0;i1<nPrim;i1++)
23187  } // end of if(nPrim>=4)
23188
23189  */
23190
23191  cout<<endl; 
23192
23193 } // end of void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrectionsForNUAWithNestedLoopsUsingParticleWeights(AliFlowEventSimple* anEvent)
23194
23195 //=======================================================================================================================
23196
23197 void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights(TString type, TString ptOrEta)
23198 {
23199  // Calculate correction terms for non-uniform acceptance for differential flow (cos terms) using particle weights.
23200  
23201  // Results are stored in fDiffFlowCorrectionTermsForNUAPro[t][pe][1][cti], where cti runs as follows:
23202  //
23203  //  0: <<cos n(psi)>>
23204  //  1: <<w2 cos n(psi1+phi2)>>
23205  //  2: <<w2 w3 cos n(psi1+phi2-phi3)>>
23206  //  3: <<w2 w3 cos n(psi1-phi2-phi3)>>
23207  //  4:
23208  //  5:
23209  //  6:
23210  
23211  // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n: 
23212  Double_t dReQ1n1k = (*fReQ)(0,1);
23213  Double_t dReQ2n2k = (*fReQ)(1,2);
23214  //Double_t dReQ1n3k = (*fReQ)(0,3);
23215  //Double_t dReQ4n4k = (*fReQ)(3,4);
23216  Double_t dImQ1n1k = (*fImQ)(0,1);
23217  Double_t dImQ2n2k = (*fImQ)(1,2);
23218  //Double_t dImQ1n3k = (*fImQ)(0,3);
23219  //Double_t dImQ4n4k = (*fImQ)(3,4);
23220  
23221  // S^M_{p,k} (see .h file for the definition of fSpk):
23222  Double_t dSM1p1k = (*fSpk)(0,1);
23223  Double_t dSM1p2k = (*fSpk)(0,2);
23224  Double_t dSM2p1k = (*fSpk)(1,1);
23225
23226  Int_t t = 0; // type flag 
23227  Int_t pe = 0; // ptEta flag
23228  
23229  if(type == "RP")
23230  {
23231   t = 0;
23232  } else if(type == "POI")
23233    {
23234     t = 1;
23235    }
23236
23237  if(ptOrEta == "Pt")
23238  {
23239   pe = 0;
23240  } else if(ptOrEta == "Eta")
23241    {
23242     pe = 1;
23243    }
23244     
23245  Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
23246  Double_t minPtEta[2] = {fPtMin,fEtaMin};
23247  //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
23248  Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
23249  
23250  // looping over all bins and calculating correction terms: 
23251  for(Int_t b=1;b<=nBinsPtEta[pe];b++)
23252  {
23253   // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin): 
23254   Double_t p1n0kRe = 0.;
23255   Double_t p1n0kIm = 0.;
23256
23257   // number of POIs in particular pt or eta bin:
23258   Double_t mp = 0.;
23259
23260   // real and imaginary parts of q_{m*n,0} (weighted Q-vector evaluated for particles which are both RPs and POIs in particular pt or eta bin):
23261   Double_t q1n2kRe = 0.;
23262   //Double_t q1n2kIm = 0.;
23263   Double_t q2n1kRe = 0.;
23264   Double_t q2n1kIm = 0.;
23265     
23266   // s_{1,1}, s_{1,2} // to be improved (add explanation)  
23267   Double_t s1p1k = 0.; 
23268   Double_t s1p2k = 0.; 
23269   
23270   // number of particles which are both RPs and POIs in particular pt or eta bin:
23271   //Double_t mq = 0.;
23272   
23273   // M0111 from Eq. (118) in QC2c (to be improved (notation))
23274   Double_t dM01 = 0.;
23275   Double_t dM011 = 0.;
23276   
23277   if(type == "POI")
23278   {           
23279    // q_{m*n,k}:
23280    q1n2kRe = fReRPQ1dEBE[2][pe][0][2]->GetBinContent(fReRPQ1dEBE[2][pe][0][2]->GetBin(b))
23281            * fReRPQ1dEBE[2][pe][0][2]->GetBinEntries(fReRPQ1dEBE[2][pe][0][2]->GetBin(b));
23282    //q1n2kIm = fImRPQ1dEBE[2][pe][0][2]->GetBinContent(fImRPQ1dEBE[2][pe][0][2]->GetBin(b))
23283    //        * fImRPQ1dEBE[2][pe][0][2]->GetBinEntries(fImRPQ1dEBE[2][pe][0][2]->GetBin(b));         
23284    q2n1kRe = fReRPQ1dEBE[2][pe][1][1]->GetBinContent(fReRPQ1dEBE[2][pe][1][1]->GetBin(b))
23285            * fReRPQ1dEBE[2][pe][1][1]->GetBinEntries(fReRPQ1dEBE[2][pe][1][1]->GetBin(b));
23286    q2n1kIm = fImRPQ1dEBE[2][pe][1][1]->GetBinContent(fImRPQ1dEBE[2][pe][1][1]->GetBin(b))
23287            * fImRPQ1dEBE[2][pe][1][1]->GetBinEntries(fImRPQ1dEBE[2][pe][1][1]->GetBin(b));         
23288    //mq = fReRPQ1dEBE[2][pe][1][1]->GetBinEntries(fReRPQ1dEBE[2][pe][1][1]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
23289    
23290    s1p1k = pow(fs1dEBE[2][pe][1]->GetBinContent(b)*fs1dEBE[2][pe][1]->GetBinEntries(b),1.); 
23291    s1p2k = pow(fs1dEBE[2][pe][2]->GetBinContent(b)*fs1dEBE[2][pe][2]->GetBinEntries(b),1.); 
23292   }else if(type == "RP")
23293    {
23294     // q_{m*n,k}: (Remark: m=1 is 0, k=0 iz zero (to be improved!)) 
23295     q1n2kRe = fReRPQ1dEBE[0][pe][0][2]->GetBinContent(fReRPQ1dEBE[0][pe][0][2]->GetBin(b))
23296             * fReRPQ1dEBE[0][pe][0][2]->GetBinEntries(fReRPQ1dEBE[0][pe][0][2]->GetBin(b));
23297     //q1n2kIm = fImRPQ1dEBE[0][pe][0][2]->GetBinContent(fImRPQ1dEBE[0][pe][0][2]->GetBin(b))
23298     //        * fImRPQ1dEBE[0][pe][0][2]->GetBinEntries(fImRPQ1dEBE[0][pe][0][2]->GetBin(b));
23299     q2n1kRe = fReRPQ1dEBE[0][pe][1][1]->GetBinContent(fReRPQ1dEBE[0][pe][1][1]->GetBin(b))
23300             * fReRPQ1dEBE[0][pe][1][1]->GetBinEntries(fReRPQ1dEBE[0][pe][1][1]->GetBin(b));
23301     q2n1kIm = fImRPQ1dEBE[0][pe][1][1]->GetBinContent(fImRPQ1dEBE[0][pe][1][1]->GetBin(b))
23302             * fImRPQ1dEBE[0][pe][1][1]->GetBinEntries(fImRPQ1dEBE[0][pe][1][1]->GetBin(b));
23303     // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)  
23304     s1p1k = pow(fs1dEBE[0][pe][1]->GetBinContent(b)*fs1dEBE[0][pe][1]->GetBinEntries(b),1.); 
23305     s1p2k = pow(fs1dEBE[0][pe][2]->GetBinContent(b)*fs1dEBE[0][pe][2]->GetBinEntries(b),1.); 
23306     //s1p3k = pow(fs1dEBE[0][pe][3]->GetBinContent(b)*fs1dEBE[0][pe][3]->GetBinEntries(b),1.);  
23307     
23308     //mq = fReRPQ1dEBE[0][pe][1][1]->GetBinEntries(fReRPQ1dEBE[0][pe][1][1]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here) 
23309   }    
23310   
23311   if(type == "POI")
23312   {
23313    // p_{m*n,k}:   
23314    p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
23315            * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
23316    p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))  
23317            * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
23318    mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here) 
23319    // M01 from Eq. (118) in QC2c (to be improved (notation)):
23320    dM01 = mp*dSM1p1k-s1p1k;
23321    dM011 = mp*(dSM2p1k-dSM1p2k)
23322          - 2.*(s1p1k*dSM1p1k-s1p2k);
23323        
23324    // typeFlag = RP (0) or POI (1):   
23325    t = 1; 
23326   } else if(type == "RP")
23327     {  
23328      // to be improved (cross-checked):
23329      p1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
23330              * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
23331      p1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))  
23332              * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
23333      mp = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
23334      // M01 from Eq. (118) in QC2c (to be improved (notation)):
23335      dM01 = mp*dSM1p1k-s1p1k;
23336      dM011 = mp*(dSM2p1k-dSM1p2k)
23337            - 2.*(s1p1k*dSM1p1k-s1p2k); 
23338      // typeFlag = RP (0) or POI (1): 
23339      t = 0;
23340     }
23341   
23342   // <<cos n(psi1)>>:
23343   Double_t cosP1nPsi = 0.;
23344   if(mp)
23345   {
23346    cosP1nPsi = p1n0kRe/mp;
23347    
23348    // fill profile for <<cos n(psi1)>>:
23349    fDiffFlowCorrectionTermsForNUAPro[t][pe][1][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi,mp);
23350    // histogram to store <cos n(psi1)> e-b-e (needed in some other methods):
23351    fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][0]->SetBinContent(b,cosP1nPsi);
23352   } // end of if(mp)   
23353   
23354   // <<w2 cos n(psi1+phi2)>>:
23355   Double_t cosP1nPsiP1nPhiW2 = 0.;
23356   if(dM01)
23357   {
23358    cosP1nPsiP1nPhiW2 = (p1n0kRe*dReQ1n1k-p1n0kIm*dImQ1n1k-q2n1kRe)/(dM01);
23359    // fill profile for <<w2 cos n(psi1+phi2)>>:
23360    fDiffFlowCorrectionTermsForNUAPro[t][pe][1][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsiP1nPhiW2,dM01);
23361    // histogram to store <w2 cos n(psi1+phi2)> e-b-e (needed in some other methods):
23362    fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][1]->SetBinContent(b,cosP1nPsiP1nPhiW2);
23363   } // end of if(dM01)   
23364   
23365   // <<w2 w3 cos n(psi1+phi2-phi3)>>:
23366   Double_t cosP1nPsi1P1nPhi2MPhi3W2W3 = 0.;
23367   if(dM011)
23368   {
23369    cosP1nPsi1P1nPhi2MPhi3W2W3 = (p1n0kRe*(pow(dImQ1n1k,2.)+pow(dReQ1n1k,2.))
23370                               - p1n0kRe*dSM1p2k
23371                               - q2n1kRe*dReQ1n1k-q2n1kIm*dImQ1n1k
23372                               - s1p1k*dReQ1n1k
23373                               + 2.*q1n2kRe)
23374                               / dM011;  
23375    // fill profile for <<w1 w2 w3 cos n(psi1+phi2)>>:
23376    fDiffFlowCorrectionTermsForNUAPro[t][pe][1][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi1P1nPhi2MPhi3W2W3,dM011);
23377    // histogram to store <w1 w2 w3 cos n(psi1+phi2)> e-b-e (needed in some other methods):
23378    fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][2]->SetBinContent(b,cosP1nPsi1P1nPhi2MPhi3W2W3);
23379   } // end of if(dM011)   
23380   
23381   // <<w2 w3 cos n(psi1-phi2-phi3)>>:
23382   Double_t cosP1nPsi1M1nPhi2MPhi3W2W3 = 0.;
23383   if(dM011)
23384   {
23385    cosP1nPsi1M1nPhi2MPhi3W2W3 = (p1n0kRe*(pow(dReQ1n1k,2.)-pow(dImQ1n1k,2.))+2.*p1n0kIm*dReQ1n1k*dImQ1n1k
23386                               - 1.*(p1n0kRe*dReQ2n2k+p1n0kIm*dImQ2n2k)  
23387                               - 2.*s1p1k*dReQ1n1k
23388                               + 2.*q1n2kRe)
23389                               / dM011;
23390    // fill profile for <<w1 w2 w3 cos n(psi1+phi2)>>:
23391    fDiffFlowCorrectionTermsForNUAPro[t][pe][1][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi1M1nPhi2MPhi3W2W3,dM011);
23392    // histogram to store <w1 w2 w3 cos n(psi1+phi2)> e-b-e (needed in some other methods):
23393    fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][3]->SetBinContent(b,cosP1nPsi1M1nPhi2MPhi3W2W3);
23394   } // end of if(dM011)   
23395  
23396  } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
23397    
23398 } // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights(TString type, TString ptOrEta)
23399
23400
23401 //=======================================================================================================================
23402
23403
23404 void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights(TString type, TString ptOrEta)
23405 {
23406  // Calculate correction terms for non-uniform acceptance for differential flow (sin terms).
23407   
23408  // Results are stored in fDiffFlowCorrectionTermsForNUAPro[t][pe][0][cti], where cti runs as follows:
23409  //  0: <<sin n(psi1)>>
23410  //  1: <<w2 sin n(psi1+phi2)>>
23411  //  2: <<w2 w3 sin n(psi1+phi2-phi3)>>
23412  //  3: <<w2 w3 sin n(psi1-phi2-phi3)>>:
23413  //  4:
23414  //  5:
23415  //  6:
23416  
23417  // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n: 
23418  Double_t dReQ1n1k = (*fReQ)(0,1);
23419  Double_t dReQ2n2k = (*fReQ)(1,2);
23420  //Double_t dReQ1n3k = (*fReQ)(0,3);
23421  //Double_t dReQ4n4k = (*fReQ)(3,4);
23422  Double_t dImQ1n1k = (*fImQ)(0,1);
23423  Double_t dImQ2n2k = (*fImQ)(1,2);
23424  //Double_t dImQ1n3k = (*fImQ)(0,3);
23425  //Double_t dImQ4n4k = (*fImQ)(3,4);
23426  
23427  // S^M_{p,k} (see .h file for the definition of fSpk):
23428  Double_t dSM1p1k = (*fSpk)(0,1);
23429  Double_t dSM1p2k = (*fSpk)(0,2);
23430  Double_t dSM2p1k = (*fSpk)(1,1);
23431
23432  Int_t t = 0; // type flag 
23433  Int_t pe = 0; // ptEta flag
23434  
23435  if(type == "RP")
23436  {
23437   t = 0;
23438  } else if(type == "POI")
23439    {
23440     t = 1;
23441    }
23442
23443  if(ptOrEta == "Pt")
23444  {
23445   pe = 0;
23446  } else if(ptOrEta == "Eta")
23447    {
23448     pe = 1;
23449    }
23450     
23451  Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
23452  Double_t minPtEta[2] = {fPtMin,fEtaMin};
23453  //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
23454  Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
23455
23456  // looping over all bins and calculating correction terms: 
23457  for(Int_t b=1;b<=nBinsPtEta[pe];b++)
23458  {
23459   // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin): 
23460   Double_t p1n0kRe = 0.;
23461   Double_t p1n0kIm = 0.;
23462
23463   // number of POIs in particular pt or eta bin:
23464   Double_t mp = 0.;
23465
23466   // real and imaginary parts of q_{m*n,0} (weighted Q-vector evaluated for particles which are both RPs and POIs in particular pt or eta bin):
23467   //Double_t q1n2kRe = 0.;
23468   Double_t q1n2kIm = 0.;
23469   Double_t q2n1kRe = 0.;
23470   Double_t q2n1kIm = 0.;
23471     
23472   // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)  
23473   Double_t s1p1k = 0.; 
23474   Double_t s1p2k = 0.; 
23475   
23476   // number of particles which are both RPs and POIs in particular pt or eta bin:
23477   //Double_t mq = 0.;
23478   
23479   // M0111 from Eq. (118) in QC2c (to be improved (notation))
23480   Double_t dM01 = 0.;
23481   Double_t dM011 = 0.;
23482
23483   if(type == "POI")
23484   {    
23485    // q_{m*n,k}:
23486    //q1n2kRe = fReRPQ1dEBE[2][pe][0][2]->GetBinContent(fReRPQ1dEBE[2][pe][0][2]->GetBin(b))
23487    //        * fReRPQ1dEBE[2][pe][0][2]->GetBinEntries(fReRPQ1dEBE[2][pe][0][2]->GetBin(b));
23488    q1n2kIm = fImRPQ1dEBE[2][pe][0][2]->GetBinContent(fImRPQ1dEBE[2][pe][0][2]->GetBin(b))
23489            * fImRPQ1dEBE[2][pe][0][2]->GetBinEntries(fImRPQ1dEBE[2][pe][0][2]->GetBin(b));         
23490    q2n1kRe = fReRPQ1dEBE[2][pe][1][1]->GetBinContent(fReRPQ1dEBE[2][pe][1][1]->GetBin(b))
23491            * fReRPQ1dEBE[2][pe][1][1]->GetBinEntries(fReRPQ1dEBE[2][pe][1][1]->GetBin(b));
23492    q2n1kIm = fImRPQ1dEBE[2][pe][1][1]->GetBinContent(fImRPQ1dEBE[2][pe][1][1]->GetBin(b))
23493            * fImRPQ1dEBE[2][pe][1][1]->GetBinEntries(fImRPQ1dEBE[2][pe][1][1]->GetBin(b));         
23494    //mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
23495    
23496    s1p1k = pow(fs1dEBE[2][pe][1]->GetBinContent(b)*fs1dEBE[2][pe][1]->GetBinEntries(b),1.); 
23497    s1p2k = pow(fs1dEBE[2][pe][2]->GetBinContent(b)*fs1dEBE[2][pe][2]->GetBinEntries(b),1.); 
23498   }else if(type == "RP")
23499    {
23500     // q_{m*n,k}: (Remark: m=1 is 0, k=0 iz zero (to be improved!)) 
23501     //q1n2kRe = fReRPQ1dEBE[0][pe][0][2]->GetBinContent(fReRPQ1dEBE[0][pe][0][2]->GetBin(b))
23502     //        * fReRPQ1dEBE[0][pe][0][2]->GetBinEntries(fReRPQ1dEBE[0][pe][0][2]->GetBin(b));
23503     q1n2kIm = fImRPQ1dEBE[0][pe][0][2]->GetBinContent(fImRPQ1dEBE[0][pe][0][2]->GetBin(b))
23504             * fImRPQ1dEBE[0][pe][0][2]->GetBinEntries(fImRPQ1dEBE[0][pe][0][2]->GetBin(b));
23505     q2n1kRe = fReRPQ1dEBE[0][pe][1][1]->GetBinContent(fReRPQ1dEBE[0][pe][1][1]->GetBin(b))
23506             * fReRPQ1dEBE[0][pe][1][1]->GetBinEntries(fReRPQ1dEBE[0][pe][1][1]->GetBin(b));
23507     q2n1kIm = fImRPQ1dEBE[0][pe][1][1]->GetBinContent(fImRPQ1dEBE[0][pe][1][1]->GetBin(b))
23508             * fImRPQ1dEBE[0][pe][1][1]->GetBinEntries(fImRPQ1dEBE[0][pe][1][1]->GetBin(b));
23509     // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)  
23510     s1p1k = pow(fs1dEBE[0][pe][1]->GetBinContent(b)*fs1dEBE[0][pe][1]->GetBinEntries(b),1.); 
23511     s1p2k = pow(fs1dEBE[0][pe][2]->GetBinContent(b)*fs1dEBE[0][pe][2]->GetBinEntries(b),1.); 
23512     //s1p3k = pow(fs1dEBE[0][pe][3]->GetBinContent(b)*fs1dEBE[0][pe][3]->GetBinEntries(b),1.); 
23513   }    
23514   
23515   if(type == "POI")
23516   {
23517    // p_{m*n,k}:   
23518    p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
23519            * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
23520    p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))  
23521            * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
23522    mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here) 
23523    // M01 from Eq. (118) in QC2c (to be improved (notation)):
23524    dM01 = mp*dSM1p1k-s1p1k;
23525    dM011 = mp*(dSM2p1k-dSM1p2k)
23526          - 2.*(s1p1k*dSM1p1k-s1p2k);  
23527    // typeFlag = RP (0) or POI (1):   
23528    t = 1;           
23529   } else if(type == "RP")
23530     { 
23531      // to be improved (cross-checked):
23532      p1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
23533              * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
23534      p1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))  
23535              * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
23536      mp = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)    
23537      // M01 from Eq. (118) in QC2c (to be improved (notation)):
23538      dM01 = mp*dSM1p1k-s1p1k;
23539      dM011 = mp*(dSM2p1k-dSM1p2k)
23540            - 2.*(s1p1k*dSM1p1k-s1p2k); 
23541      // typeFlag = RP (0) or POI (1): 
23542      t = 0;
23543     }
23544   
23545   // <<sin n(psi1)>>:
23546   Double_t sinP1nPsi = 0.;
23547   if(mp)
23548   {
23549    sinP1nPsi = p1n0kIm/mp;
23550    
23551    // fill profile for <<sin n(psi1)>>:
23552    fDiffFlowCorrectionTermsForNUAPro[t][pe][0][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi,mp);
23553    // histogram to store <sin n(psi1)> e-b-e (needed in some other methods):
23554    fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][0]->SetBinContent(b,sinP1nPsi);
23555   } // end of if(mp)   
23556   
23557   // <<w2 sin n(psi1+phi2)>>:
23558   Double_t sinP1nPsiP1nPhiW2 = 0.;
23559   if(dM01)
23560   {
23561    sinP1nPsiP1nPhiW2 = (p1n0kRe*dImQ1n1k+p1n0kIm*dReQ1n1k-q2n1kIm)/(dM01);
23562    // fill profile for <<w2 sin n(psi1+phi2)>>:
23563    fDiffFlowCorrectionTermsForNUAPro[t][pe][0][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsiP1nPhiW2,dM01);
23564    // histogram to store <w2 sin n(psi1+phi2)> e-b-e (needed in some other methods):
23565    fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][1]->SetBinContent(b,sinP1nPsiP1nPhiW2);
23566   } // end of if(mp*dMult-mq)   
23567   
23568   // <<w2 w3 sin n(psi1+phi2-phi3)>>:
23569   Double_t sinP1nPsi1P1nPhi2MPhi3W2W3 = 0.;
23570   if(dM011)
23571   {
23572    sinP1nPsi1P1nPhi2MPhi3W2W3 = (p1n0kIm*(pow(dImQ1n1k,2.)+pow(dReQ1n1k,2.))
23573                               - p1n0kIm*dSM1p2k
23574                               + q2n1kRe*dImQ1n1k-q2n1kIm*dReQ1n1k
23575                               - s1p1k*dImQ1n1k
23576                               + 2.*q1n2kIm)
23577                               / dM011;  
23578    // fill profile for <<w2 w3 sin n(psi1+phi2-phi3)>>:
23579    fDiffFlowCorrectionTermsForNUAPro[t][pe][0][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi1P1nPhi2MPhi3W2W3,dM011);
23580    // histogram to store <w2 w3 sin n(psi1+phi2-phi3)> e-b-e (needed in some other methods):
23581    fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][2]->SetBinContent(b,sinP1nPsi1P1nPhi2MPhi3W2W3);
23582   } // end of if(dM011)   
23583   
23584   // <<w2 w3 sin n(psi1-phi2-phi3)>>:
23585   Double_t sinP1nPsi1M1nPhi2MPhi3W2W3 = 0.;
23586   if(dM011)
23587   {
23588    sinP1nPsi1M1nPhi2MPhi3W2W3 = (p1n0kIm*(pow(dReQ1n1k,2.)-pow(dImQ1n1k,2.))-2.*p1n0kRe*dReQ1n1k*dImQ1n1k
23589                               + 1.*(p1n0kRe*dImQ2n2k-p1n0kIm*dReQ2n2k)  
23590                               + 2.*s1p1k*dImQ1n1k
23591                               - 2.*q1n2kIm)
23592                               / dM011;
23593    // fill profile for <<w2 w3 sin n(psi1-phi2-phi3)>>:
23594    fDiffFlowCorrectionTermsForNUAPro[t][pe][0][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi1M1nPhi2MPhi3W2W3,dM011);
23595    // histogram to store <w2 w3 sin n(psi1-phi2-phi3)> e-b-e (needed in some other methods):
23596    fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][3]->SetBinContent(b,sinP1nPsi1M1nPhi2MPhi3W2W3);
23597   } // end of if(dM011)   
23598   
23599  } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
23600
23601 } // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights(TString type, TString ptOrEta)
23602
23603 //=======================================================================================================================
23604    
23605 void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoopsUsingParticleWeights(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
23606 {
23607  // Evaluate with nested loops correction terms for non-uniform acceptance 
23608  // with using particle weights (both sin and cos terms) relevant for differential flow.
23609  
23610  // Remark 1: "w1" in expressions bellow is a particle weight used only for particles which were 
23611  //           flagged both as POI and RP.
23612  // Remark 2: Reduced correction terms for non-uniform acceptance are evaluated in pt bin number fCrossCheckInPtBinNo 
23613  //           and eta bin number fCrossCheckInEtaBinNo both for RPs and POIs.
23614  // Remark 3: Results are stored in 1 bin profiles fDiffFlowDirectCorrections[t][pe][sc][cti], where first three indices runs as: 
23615  //           [0=RP,1=POI][0=Pt,1=Eta][0=sin terms,1=cos terms], whilst the cti (correction term index) runs as follows: 
23616  //  cti: 
23617  //    0: <<sc n(psi1)>>
23618  //    1: <<w2 sc n(psi1+phi2)>> 
23619  //    2: <<w2 w3 sc n(psi1+phi2-phi3)>>
23620  //    3: <<w2 w3 sc n(psi1-phi2-phi3)>>
23621  //    4:
23622  //    5:
23623  //    6:
23624      
23625  Int_t typeFlag = 0;
23626  Int_t ptEtaFlag = 0;
23627  if(type == "RP")
23628  {
23629   typeFlag = 0;
23630  } else if(type == "POI")
23631    {
23632     typeFlag = 1;
23633    }      
23634  if(ptOrEta == "Pt")
23635  {
23636   ptEtaFlag = 0;
23637  } else if(ptOrEta == "Eta")
23638    {
23639     ptEtaFlag = 1;
23640    } 
23641  // shortcuts:
23642  Int_t t = typeFlag;
23643  Int_t pe = ptEtaFlag;
23644       
23645  Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
23646  Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
23647  Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
23648  
23649  Int_t nPrim = anEvent->NumberOfTracks(); 
23650  AliFlowTrackSimple *aftsTrack = NULL;
23651  
23652  Double_t psi1=0., phi2=0., phi3=0.;// phi4=0.;// phi5=0., phi6=0., phi7=0., phi8=0.;
23653  Double_t wPhi2=1., wPhi3=1.;
23654  
23655  Int_t n = fHarmonic; 
23656  
23657  // 1'-particle correction terms:
23658  for(Int_t i1=0;i1<nPrim;i1++)
23659  {
23660   aftsTrack=anEvent->GetTrack(i1);
23661   // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
23662   if(typeFlag==1) // this is diff flow of POIs 
23663   {
23664    if(ptOrEta == "Pt")
23665    { 
23666     if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
23667    } else if (ptOrEta == "Eta")
23668      {
23669       if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;    
23670      }
23671   } else // this is diff flow of RPs 
23672     {
23673      if(ptOrEta == "Pt")
23674      { 
23675       if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
23676      } else if (ptOrEta == "Eta")
23677        {
23678         if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;    
23679        }
23680     }
23681   psi1=aftsTrack->Phi(); 
23682   // sin terms: 
23683   fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*psi1),1.); // <<sin(n*(psi1))>>  
23684   // cos terms: 
23685   fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*psi1),1.); // <<cos(n*(psi1))>>  
23686  }//end of for(Int_t i1=0;i1<nPrim;i1++)
23687    
23688  // 2'-particle correction terms:
23689  for(Int_t i1=0;i1<nPrim;i1++)
23690  {
23691   aftsTrack=anEvent->GetTrack(i1);
23692   // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
23693   if(typeFlag==1) // this is diff flow of POIs 
23694   {
23695    if(ptOrEta == "Pt")
23696    { 
23697     if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
23698    } else if (ptOrEta == "Eta")
23699      {
23700       if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;    
23701      }
23702   } else // this is diff flow of RPs 
23703     {
23704      if(ptOrEta == "Pt")
23705      { 
23706       if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
23707      } else if (ptOrEta == "Eta")
23708        {
23709         if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;    
23710        }
23711     }
23712   psi1=aftsTrack->Phi(); 
23713   for(Int_t i2=0;i2<nPrim;i2++)
23714   {
23715    if(i2==i1) continue;
23716    aftsTrack=anEvent->GetTrack(i2);
23717    // RP condition (!(first) particle in the correlator must be RP):
23718    if(!(aftsTrack->InRPSelection())) continue;
23719    phi2=aftsTrack->Phi();
23720    if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));   
23721    // sin terms: 
23722    fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*(psi1+phi2)),wPhi2); // <<w2 sin(n*(psi1+phi2))>>  
23723    // cos terms: 
23724    fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2)),wPhi2); // <<w2 cos(n*(psi1+phi2))>>  
23725   }//end of for(Int_t i2=0;i2<nPrim;i2++)
23726  }//end of for(Int_t i1=0;i1<nPrim;i1++)   
23727  
23728  // 3'-particle correction terms:
23729  for(Int_t i1=0;i1<nPrim;i1++)
23730  {
23731   aftsTrack=anEvent->GetTrack(i1);
23732   // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
23733   if(typeFlag==1) // this is diff flow of POIs 
23734   {
23735    if(ptOrEta == "Pt")
23736    { 
23737     if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
23738    } else if (ptOrEta == "Eta")
23739      {
23740       if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;    
23741      }
23742   } else // this is diff flow of RPs 
23743     {
23744      if(ptOrEta == "Pt")
23745      { 
23746       if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
23747      } else if (ptOrEta == "Eta")
23748        {
23749         if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;    
23750        }
23751     }
23752   psi1=aftsTrack->Phi();
23753   for(Int_t i2=0;i2<nPrim;i2++)
23754   {
23755    if(i2==i1) continue;
23756    aftsTrack=anEvent->GetTrack(i2);
23757    // RP condition (!(first) particle in the correlator must be RP):
23758    if(!(aftsTrack->InRPSelection())) continue;
23759    phi2=aftsTrack->Phi();
23760    if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));   
23761    for(Int_t i3=0;i3<nPrim;i3++)
23762    {
23763     if(i3==i1||i3==i2) continue;
23764     aftsTrack=anEvent->GetTrack(i3);
23765     // RP condition (!(first) particle in the correlator must be RP):
23766     if(!(aftsTrack->InRPSelection())) continue;
23767     phi3=aftsTrack->Phi();
23768     if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));   
23769     // sin terms: 
23770     fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][2]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*(psi1+phi2-phi3)),wPhi2*wPhi3); // <<wPhi2*wPhi3 sin(n*(psi1+phi2-phi3))>>  
23771     fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][3]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*(psi1-phi2-phi3)),wPhi2*wPhi3); // <<wPhi2*wPhi3 sin(n*(psi1-phi2-phi3))>>  
23772     // cos terms: 
23773     fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][2]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2-phi3)),wPhi2*wPhi3); // <<wPhi2*wPhi3 cos(n*(psi1+phi2-phi3))>>  
23774     fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][3]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1-phi2-phi3)),wPhi2*wPhi3); // <<wPhi2*wPhi3 cos(n*(psi1-phi2-phi3))>>  
23775    }//end of for(Int_t i3=0;i3<nPrim;i3++)  
23776   }//end of for(Int_t i2=0;i2<nPrim;i2++)  
23777  }//end of for(Int_t i1=0;i1<nPrim;i1++)
23778                
23779 } // end of void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoopsUsingParticleWeights(AliFlowEventSimple* anEvent, TString type, TString ptOrEta)
23780
23781 //=======================================================================================================================
23782
23783 void AliFlowAnalysisWithQCumulants::CheckPointersUsedInFinish()
23784 {
23785  // Check all pointers used in method Finish().
23786  
23787  if(!fAvMultiplicity)
23788  {
23789   cout<<endl;
23790   cout<<" WARNING (QC): fAvMultiplicity is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23791   cout<<endl;
23792   exit(0);
23793  }
23794  if(!fIntFlowCorrelationsPro)
23795  {
23796   cout<<endl;
23797   cout<<" WARNING (QC): fIntFlowCorrelationsPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23798   cout<<endl;
23799   exit(0); 
23800  }
23801  if(!fIntFlowSquaredCorrelationsPro)
23802  {
23803   cout<<endl;
23804   cout<<" WARNING (QC): fIntFlowSquaredCorrelationsPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23805   cout<<endl;
23806   exit(0); 
23807  } 
23808  if(!fIntFlowCorrelationsHist)
23809  {
23810   cout<<endl;
23811   cout<<" WARNING (QC): fIntFlowCorrelationsHist is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23812   cout<<endl;
23813   exit(0); 
23814  }
23815  if((fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights) && !fIntFlowExtraCorrelationsPro) 
23816  {
23817   cout<<endl;
23818   cout<<" WARNING (QC): fIntFlowExtraCorrelationsPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23819   cout<<endl;
23820   exit(0); 
23821  } 
23822  for(Int_t power=0;power<2;power++)
23823  { 
23824   if(!fIntFlowSumOfEventWeights[power]) 
23825   {
23826    cout<<endl;
23827    cout<<Form(" WARNING (QC): fIntFlowSumOfEventWeights[%d] is NULL in CheckPointersUsedInFinish() !!!!",power)<<endl;
23828    cout<<endl;
23829    exit(0);
23830   }
23831  } // end of for(Int_t power=0;power<2;power++)
23832  if(!fIntFlowProductOfCorrelationsPro)
23833  {
23834   cout<<endl;
23835   cout<<" WARNING (QC): fIntFlowProductOfCorrelationsPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23836   cout<<endl;
23837   exit(0); 
23838  } 
23839  if(!fIntFlowSumOfProductOfEventWeights)
23840  {
23841   cout<<endl;
23842   cout<<" WARNING (QC): fIntFlowSumOfProductOfEventWeights is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23843   cout<<endl;
23844   exit(0); 
23845  }
23846  if(!fIntFlowCovariances)
23847  {
23848   cout<<endl;
23849   cout<<" WARNING (QC): fIntFlowCovariances is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23850   cout<<endl;
23851   exit(0); 
23852  }  
23853  if(!fIntFlowQcumulants)
23854  {
23855   cout<<endl;
23856   cout<<" WARNING (QC): fIntFlowQcumulants is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23857   cout<<endl;
23858   exit(0); 
23859  }  
23860  if(!fIntFlow)
23861  {
23862   cout<<endl;
23863   cout<<" WARNING (QC): fIntFlow is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23864   cout<<endl;
23865   exit(0); 
23866  }
23867  if(!fCommonHists)
23868  {
23869   cout<<endl;
23870   cout<<" WARNING (QC): fCommonHists is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23871   cout<<endl;
23872   exit(0); 
23873  }
23874  if(!(fCommonHistsResults2nd && fCommonHistsResults4th && fCommonHistsResults6th && fCommonHistsResults8th))
23875  {
23876   cout<<endl;
23877   cout<<" WARNING (QC): fCommonHistsResults2nd && fCommonHistsResults4th && fCommonHistsResults6th"<<endl; 
23878   cout<<"               && fCommonHistsResults8th is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23879   cout<<endl;
23880   exit(0);
23881  } 
23882
23883  // NUA stuff:
23884  for(Int_t sc=0;sc<2;sc++) // sin/cos
23885  { 
23886   if(!fIntFlowCorrectionTermsForNUAPro[sc]) 
23887   {
23888    cout<<endl;
23889    cout<<Form(" WARNING (QC): fIntFlowCorrectionTermsForNUAPro[%d] is NULL in CheckPointersUsedInFinish() !!!!",sc)<<endl;
23890    cout<<endl;
23891    exit(0);
23892   }
23893   if(!fIntFlowCorrectionTermsForNUAHist[sc]) 
23894   {
23895    cout<<endl;
23896    cout<<Form(" WARNING (QC): fIntFlowCorrectionTermsForNUAHist[%d] is NULL in CheckPointersUsedInFinish() !!!!",sc)<<endl;
23897    cout<<endl;
23898    exit(0);
23899   }
23900   for(Int_t lq=0;lq<2;lq++) // linear/quadratic
23901   {
23902    if(!fIntFlowSumOfEventWeightsNUA[sc][lq]) 
23903    {
23904     cout<<endl;
23905     cout<<Form(" WARNING (QC): fIntFlowSumOfEventWeightsNUA[%d][%d] is NULL in CheckPointersUsedInFinish() !!!!",sc,lq)<<endl;
23906     cout<<endl;
23907     exit(0);
23908    }
23909   } // end of for(Int_t lq=0;lq<2;lq++) // linear/quadratic
23910  } // end of for(Int_t power=0;power<2;power++) 
23911  if(!fIntFlowProductOfCorrectionTermsForNUAPro)
23912  {
23913   cout<<endl;
23914   cout<<" WARNING (QC): fIntFlowProductOfCorrectionTermsForNUAPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23915   cout<<endl;
23916   exit(0); 
23917  } 
23918  if(!fIntFlowSumOfProductOfEventWeightsNUA)
23919  {
23920   cout<<endl;
23921   cout<<" WARNING (QC): fIntFlowSumOfProductOfEventWeightsNUA is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23922   cout<<endl;
23923   exit(0); 
23924  } 
23925  if(!fIntFlowCovariancesNUA)
23926  {
23927   cout<<endl;
23928   cout<<" WARNING (QC): fIntFlowCovariancesNUA is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23929   cout<<endl;
23930   exit(0); 
23931  } 
23932  if(!fIntFlowQcumulantsErrorSquaredRatio)
23933  {
23934   cout<<endl;
23935   cout<<" WARNING (QC): fIntFlowQcumulantsErrorSquaredRatio is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23936   cout<<endl;
23937   exit(0); 
23938  } 
23939  if(!fIntFlowDetectorBias)
23940  {
23941   cout<<endl;
23942   cout<<" WARNING (QC): fIntFlowDetectorBias is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23943   cout<<endl;
23944   exit(0); 
23945  }
23946  
23947  if(fCalculateMixedHarmonics)
23948  {
23949   if(!(fMixedHarmonicsFlags))
23950   {
23951    cout<<endl;
23952    cout<<" WARNING (QC): fMixedHarmonicsFlags is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23953    cout<<endl;
23954    exit(0); 
23955   }
23956   if(!(f2pCorrelations && f3pCorrelations && f4pCorrelations && f5pCorrelations))
23957   {
23958    cout<<endl;
23959    cout<<" WARNING (QC): f2pCorrelations && f3pCorrelations && f4pCorrelations && f5pCorrelations is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23960    cout<<endl;
23961    exit(0); 
23962   }
23963   if(!(f2pCumulants && f3pCumulants && f4pCumulants && f5pCumulants))
23964   {
23965    cout<<endl;
23966    cout<<" WARNING (QC): f2pCumulants && f3pCumulants && f4pCumulants && f5pCumulants is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23967    cout<<endl;
23968    exit(0); 
23969   }
23970   for(Int_t power=0;power<2;power++)
23971   { 
23972    if(!fMixedHarmonicEventWeights[power]) 
23973    {
23974     cout<<endl;
23975     cout<<Form(" WARNING (QC): fMixedHarmonicEventWeights[%d] is NULL in CheckPointersUsedInFinish() !!!!",power)<<endl;
23976     cout<<endl;
23977     exit(0);
23978    }
23979   } // end of for(Int_t power=0;power<2;power++)
23980   if(!(fMixedHarmonicProductOfEventWeights))
23981   {
23982    cout<<endl;
23983    cout<<" WARNING (QC): fMixedHarmonicProductOfEventWeights is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23984    cout<<endl;
23985    exit(0); 
23986   }
23987   if(!(fMixedHarmonicProductOfCorrelations))
23988   {
23989    cout<<endl;
23990    cout<<" WARNING (QC): fMixedHarmonicProductOfCorrelations is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23991    cout<<endl;
23992    exit(0); 
23993   }
23994  } // end of if(fCalculateMixedHarmonics)
23995
23996  // Versus multiplicity:
23997  if(!fCalculateCumulantsVsM){return;}
23998  for(Int_t co=0;co<=3;co++) // cumulant order
23999  {
24000   if(!fIntFlowQcumulantsVsM[co])
24001   {
24002    cout<<endl;
24003    cout<<Form(" WARNING (QC): fIntFlowQcumulantsVsM[%d] is NULL in CheckPointersUsedInFinish() !!!!",co)<<endl;
24004    cout<<endl;
24005    exit(0); 
24006   }
24007   if(!fIntFlowVsM[co])
24008   {
24009    cout<<endl;
24010    cout<<Form(" WARNING (QC): fIntFlowVsM[%d] is NULL in CheckPointersUsedInFinish() !!!!",co)<<endl;
24011    cout<<endl;
24012    exit(0); 
24013   }
24014   if(!fIntFlowDetectorBiasVsM[co])
24015   {
24016    cout<<endl;
24017    cout<<Form(" WARNING (QC): fIntFlowDetectorBiasVsM[%d] is NULL in CheckPointersUsedInFinish() !!!!",co)<<endl;
24018    cout<<endl;
24019    exit(0); 
24020   }
24021  } // end of for(Int_t c0=0;c0<=3;c0++) // cumulant order
24022  for(Int_t ci=0;ci<=3;ci++) // correlation index
24023  {
24024   if(!fIntFlowCorrelationsVsMPro[ci])
24025   {
24026    cout<<endl;
24027    cout<<Form(" WARNING (QC): fIntFlowCorrelationsVsMPro[%d] is NULL in CheckPointersUsedInFinish() !!!!",ci)<<endl;
24028    cout<<endl;
24029    exit(0); 
24030   }
24031   if(!fIntFlowSquaredCorrelationsVsMPro[ci])
24032   {
24033    cout<<endl;
24034    cout<<Form(" WARNING (QC): fIntFlowSquaredCorrelationsVsMPro[%d] is NULL in CheckPointersUsedInFinish() !!!!",ci)<<endl;
24035    cout<<endl;
24036    exit(0); 
24037   }  
24038   if(!fIntFlowCorrelationsVsMHist[ci])
24039   {
24040    cout<<endl;
24041    cout<<Form(" WARNING (QC): fIntFlowCorrelationsVsMHist[%d] is NULL in CheckPointersUsedInFinish() !!!!",ci)<<endl;
24042    cout<<endl;
24043    exit(0); 
24044   }
24045   for(Int_t power=0;power<2;power++) 
24046   {
24047    if(!fIntFlowSumOfEventWeightsVsM[ci][power])
24048    {
24049     cout<<endl;
24050     cout<<Form(" WARNING (QC): fIntFlowSumOfEventWeightsVsM[%d][%d] is NULL in CheckPointersUsedInFinish() !!!!",ci,power)<<endl;
24051     cout<<endl;
24052     exit(0);   
24053    }
24054   } // end of for(Int_t power=0;power<2;power++) 
24055  } // end of for(Int_t ci=0;ci<=3;ci++) // correlation index
24056  for(Int_t i=0;i<6;i++)
24057  {
24058   if(!fIntFlowProductOfCorrelationsVsMPro[i])
24059   {
24060    cout<<endl;
24061    cout<<Form(" WARNING (QC): fIntFlowProductOfCorrelationsVsMPro[%d] is NULL in CheckPointersUsedInFinish() !!!!",i)<<endl;
24062    cout<<endl;
24063    exit(0); 
24064   }
24065   if(!fIntFlowSumOfProductOfEventWeightsVsM[i])
24066   {
24067    cout<<endl;
24068    cout<<Form(" WARNING (QC): fIntFlowSumOfProductOfEventWeightsVsM[%d] is NULL in CheckPointersUsedInFinish() !!!!",i)<<endl;
24069    cout<<endl;
24070    exit(0); 
24071   }
24072   if(!fIntFlowCovariancesVsM[i])
24073   {
24074    cout<<endl;
24075    cout<<Form(" WARNING (QC): fIntFlowCovariancesVsM[%d] is NULL in CheckPointersUsedInFinish() !!!!",i)<<endl;
24076    cout<<endl;
24077    exit(0); 
24078   }
24079  } // end of for(Int_t i=0;i<6;i++) 
24080  if(!fIntFlowRebinnedInM)
24081  {
24082   cout<<endl;
24083   cout<<" WARNING (QC): fIntFlowRebinnedInM is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24084   cout<<endl;
24085   exit(0); 
24086  }
24087  if(!fIntFlowQcumulantsRebinnedInM)
24088  {
24089   cout<<endl;
24090   cout<<" WARNING (QC): fIntFlowQcumulantsRebinnedInM is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24091   cout<<endl;
24092   exit(0); 
24093  }  
24094  
24095 } // end of void AliFlowAnalysisWithQCumulants::CheckPointersUsedInFinish()
24096
24097 //=======================================================================================================================
24098
24099 void AliFlowAnalysisWithQCumulants::CheckPointersUsedInMake()
24100 {
24101  // Check all pointers used in method Make(). // to be improved - check other pointers as well
24102  
24103  if(!fAvMultiplicity)
24104  {
24105   printf("\n WARNING (QC): fAvMultiplicity is NULL in CheckPointersUsedInMake() !!!!\n\n");
24106   exit(0);
24107  }
24108  if((fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights) && !fIntFlowExtraCorrelationsPro) 
24109  {
24110   printf("\n WARNING (QC): fIntFlowExtraCorrelationsPro is NULL in CheckPointersUsedInMake() !!!!\n\n");
24111   exit(0); 
24112  } 
24113  // 2D:
24114  if(fCalculate2DDiffFlow)
24115  {
24116   for(Int_t t=0;t<2;t++) // type = RP or POI
24117   { 
24118    for(Int_t rci=0;rci<4;rci++) // reduced correlation index
24119    {
24120     if(!f2DDiffFlowCorrelationsPro[t][rci])
24121     {
24122      printf("\n WARNING (QC): f2DDiffFlowCorrelationsPro[%i][%i] is NULL in CheckPointersUsedInMake() !!!!\n\n",t,rci);
24123      exit(0);     
24124     } // end of if(!f2DDiffFlowCorrelationsPro[t][rci])  
24125    } // end of for(Int_t rci=0;rci<4;rci++) // reduced correlation index
24126   } // end of for(Int_t t=0;t<2;t++)
24127  } // end of if(fCalculate2DDiffFlow)  
24128
24129 } // end of void AliFlowAnalysisWithQCumulants::CheckPointersUsedInMake()
24130  
24131